Changes in src/Parser/ParseNode.h [ac71a86:8b7ee09]
- File:
-
- 1 edited
-
src/Parser/ParseNode.h (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/ParseNode.h
rac71a86 r8b7ee09 103 103 //############################################################################## 104 104 105 class ExpressionNode final: public ParseNode {105 class ExpressionNode : public ParseNode { 106 106 public: 107 107 ExpressionNode( Expression * expr = nullptr ) : expr( expr ) {} … … 114 114 ExpressionNode *set_extension( bool exten ) { extension = exten; return this; } 115 115 116 void print( std::ostream &os, int indent = 0 ) const {} 117 void printOneLine( std::ostream &os, int indent = 0 ) const {} 118 119 template<typename T> 120 bool isExpressionType() const { 121 return nullptr != dynamic_cast<T>(expr.get()); 122 } 123 124 Expression *build() const { return const_cast<ExpressionNode*>(this)->expr.release(); } 116 virtual void print( std::ostream &os, int indent = 0 ) const {} 117 virtual void printOneLine( std::ostream &os, int indent = 0 ) const {} 118 119 virtual Expression *build() const { return expr; } 125 120 private: 126 121 bool extension = false; 127 std::unique_ptr<Expression>expr;122 Expression *expr; 128 123 }; 129 124 … … 156 151 }; 157 152 158 Expression *build_constantInteger( conststd::string &str );159 Expression *build_constantFloat( conststd::string &str );160 Expression *build_constantChar( conststd::string &str );161 ConstantExpr *build_constantStr( conststd::string &str );153 Expression *build_constantInteger( std::string &str ); 154 Expression *build_constantFloat( std::string &str ); 155 Expression *build_constantChar( std::string &str ); 156 ConstantExpr *build_constantStr( std::string &str ); 162 157 163 158 NameExpr *build_varref( const std::string *name, bool labelp = false ); … … 309 304 //############################################################################## 310 305 311 class StatementNode final: public ParseNode {306 class StatementNode : public ParseNode { 312 307 public: 313 308 StatementNode() { stmt = nullptr; } … … 316 311 virtual ~StatementNode() {} 317 312 318 virtual StatementNode *clone() const final{ assert( false ); return nullptr; }319 Statement *build() const { return const_cast<StatementNode*>(this)->stmt.release(); }313 virtual StatementNode *clone() const { assert( false ); return nullptr; } 314 virtual Statement *build() const { return stmt; } 320 315 321 316 virtual StatementNode *add_label( const std::string * name ) { 322 317 stmt->get_labels().emplace_back( *name ); 323 delete name;324 318 return this; 325 319 } … … 330 324 virtual void printList( std::ostream &os, int indent = 0 ) {} 331 325 private: 332 std::unique_ptr<Statement>stmt;326 Statement *stmt; 333 327 }; // StatementNode 334 328
Note:
See TracChangeset
for help on using the changeset viewer.