Changes in src/Parser/ParseNode.h [8e9cbb2:7305915]
- File:
-
- 1 edited
-
src/Parser/ParseNode.h (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/ParseNode.h
r8e9cbb2 r7305915 10 10 // Created On : Sat May 16 13:28:16 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Ju l 4 15:35:09201613 // Update Count : 2 6012 // Last Modified On : Mon Jun 27 23:28:10 2016 13 // Update Count : 242 14 14 // 15 15 … … 28 28 //#include "SynTree/Declaration.h" 29 29 #include "Common/UniqueName.h" 30 #include "SynTree/Label.h"31 30 32 31 class ExpressionNode; … … 43 42 ParseNode(); 44 43 ParseNode( const std::string * ); 45 ParseNode( const std::string & ); // for copy constructing subclasses44 ParseNode( const std::string & ); // for copy constructing subclasses 46 45 virtual ~ParseNode(); 47 46 48 ParseNode *get_link() const { return next; }47 ParseNode *get_link() const; 49 48 ParseNode *get_last(); 50 49 ParseNode *set_link( ParseNode * ); … … 62 61 protected: 63 62 std::string name; 63 ParseNode *next; 64 64 static int indent_by; 65 ParseNode *next;66 65 }; 67 66 … … 126 125 enum Type { Integer, Float, Character, String }; 127 126 128 ConstantNode( ConstantExpr* );129 ConstantNode( const ConstantNode &other ) : expr( other.expr->clone() ) {};130 ~ConstantNode() { delete expr; }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; } 131 130 132 131 virtual ConstantNode *clone() const { return new ConstantNode( *this ); } 132 Type get_type( void ) const { return type; } 133 133 virtual void print( std::ostream &, int indent = 0) const; 134 134 virtual void printOneLine( std::ostream &, int indent = 0) const; 135 135 136 const std::string &get_value() const { return value; } 136 137 ConstantNode *appendstr( const std::string *newValue ); 137 138 138 139 Expression *build() const; 139 140 private: 140 ConstantExpr *expr; 141 }; 142 143 ConstantNode *makeConstant( ConstantNode::Type, std::string * ); 144 ConstantNode *makeConstantStr( ConstantNode::Type type, std::string *str ); 141 Type type; 142 BasicType::Kind btype; 143 std::string &value; 144 }; 145 145 146 146 class VarRefNode : public ExpressionNode { … … 284 284 virtual void printOneLine( std::ostream &, int indent = 0) const; 285 285 286 const std::list< Label> &get_labels() const { return labels; };286 const std::list< std::string > &get_labels() const { return labels; }; 287 287 void append_label( std::string *label ) { labels.push_back( *label ); delete label; } 288 288 private: 289 std::list< Label> labels;289 std::list< std::string > labels; 290 290 }; 291 291 … … 481 481 void setCatchRest( bool newVal ) { isCatchRest = newVal; } 482 482 483 bool get_extension() const { return extension; } 484 StatementNode *set_extension( bool exten ) { extension = exten; return this; } 485 483 486 std::string get_target() const; 484 487 … … 499 502 DeclarationNode *decl; 500 503 bool isCatchRest; 504 bool extension = false; 501 505 }; // StatementNode 502 506 … … 528 532 ExpressionNode *output, *input; 529 533 ConstantNode *clobber; 530 std::list< Label> gotolabels;534 std::list<std::string> gotolabels; 531 535 }; 532 536
Note:
See TracChangeset
for help on using the changeset viewer.