Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/ParseNode.h

    r7305915 rca35c51  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun 27 23:28:10 2016
    13 // Update Count     : 242
     12// Last Modified On : Thu Jun 30 11:48:28 2016
     13// Update Count     : 252
    1414//
    1515
     
    2828//#include "SynTree/Declaration.h"
    2929#include "Common/UniqueName.h"
     30#include "SynTree/Label.h"
    3031
    3132class ExpressionNode;
     
    125126        enum Type { Integer, Float, Character, String };
    126127
    127         ConstantNode( Type, std::string * );
    128         ConstantNode( const ConstantNode &other ) : type( other.type ), btype( other.btype), value( *new std::string( other.value ) ) {};
    129         ~ConstantNode() { delete &value; }
     128        ConstantNode( ConstantExpr * );
     129        ConstantNode( const ConstantNode &other ) : expr( other.expr->clone() ) {};
     130        ~ConstantNode() { delete expr; }
    130131
    131132        virtual ConstantNode *clone() const { return new ConstantNode( *this ); }
    132         Type get_type( void ) const { return type; }
    133133        virtual void print( std::ostream &, int indent = 0) const;
    134134        virtual void printOneLine( std::ostream &, int indent = 0) const;
    135135
    136         const std::string &get_value() const { return value; }
    137136        ConstantNode *appendstr( const std::string *newValue );
    138137
    139138        Expression *build() const;
    140139  private:
    141         Type type;
    142         BasicType::Kind btype;
    143         std::string &value;
    144 };
     140        ConstantExpr *expr;
     141};
     142
     143ConstantNode *makeConstant( ConstantNode::Type, std::string * );
     144ConstantNode *makeConstantStr( ConstantNode::Type type, std::string *str );
    145145
    146146class VarRefNode : public ExpressionNode {
     
    284284        virtual void printOneLine( std::ostream &, int indent = 0) const;
    285285
    286         const std::list< std::string > &get_labels() const { return labels; };
     286        const std::list< Label > &get_labels() const { return labels; };
    287287        void append_label( std::string *label ) { labels.push_back( *label ); delete label; }
    288288  private:
    289         std::list< std::string > labels;
     289        std::list< Label > labels;
    290290};
    291291
     
    532532        ExpressionNode *output, *input;
    533533        ConstantNode *clobber;
    534         std::list<std::string> gotolabels;
     534        std::list< Label > gotolabels;
    535535};
    536536
Note: See TracChangeset for help on using the changeset viewer.