Changes in src/SynTree/Statement.h [843054c2:de62360d]
- File:
-
- 1 edited
-
src/SynTree/Statement.h (modified) (21 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/SynTree/Statement.h
r843054c2 rde62360d 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon May 18 10:57:40201513 // Update Count : 2 12 // Last Modified On : Tue Jun 23 11:44:27 2015 13 // Update Count : 20 14 14 // 15 15 … … 28 28 29 29 std::list<Label> & get_labels() { return labels; } 30 const std::list<Label> & get_labels() const { return labels; } 30 31 31 32 virtual Statement *clone() const = 0; 32 33 virtual void accept( Visitor &v ) = 0; 33 34 virtual Statement *acceptMutator( Mutator &m ) = 0; 34 virtual void print( std::ostream &os, int indent = 0 ) ;35 virtual void print( std::ostream &os, int indent = 0 ) const; 35 36 protected: 36 37 std::list<Label> labels; … … 48 49 virtual void accept( Visitor &v ) { v.visit( this ); } 49 50 virtual CompoundStmt *acceptMutator( Mutator &m ) { return m.mutate( this ); } 50 virtual void print( std::ostream &os, int indent = 0 ) ;51 virtual void print( std::ostream &os, int indent = 0 ) const; 51 52 private: 52 53 std::list<Statement*> kids; … … 64 65 virtual void accept( Visitor &v ) { v.visit( this ); } 65 66 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 66 virtual void print( std::ostream &os, int indent = 0 ) ;67 virtual void print( std::ostream &os, int indent = 0 ) const; 67 68 private: 68 69 Expression *expr; … … 84 85 virtual void accept( Visitor &v ) { v.visit( this ); } 85 86 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 86 virtual void print( std::ostream &os, int indent = 0 ) ;87 virtual void print( std::ostream &os, int indent = 0 ) const; 87 88 private: 88 89 Expression *condition; … … 106 107 107 108 virtual SwitchStmt *clone() const { return new SwitchStmt( *this ); } 108 virtual void print( std::ostream &os, int indent = 0 ) ;109 virtual void print( std::ostream &os, int indent = 0 ) const; 109 110 private: 110 111 Expression * condition; … … 127 128 128 129 virtual ChooseStmt *clone() const { return new ChooseStmt( *this ); } 129 virtual void print( std::ostream &os, int indent = 0 ) ;130 virtual void print( std::ostream &os, int indent = 0 ) const; 130 131 private: 131 132 Expression *condition; … … 141 142 142 143 virtual FallthruStmt *clone() const { return new FallthruStmt( *this ); } 143 virtual void print( std::ostream &os, int indent = 0 ) ;144 virtual void print( std::ostream &os, int indent = 0 ) const; 144 145 }; 145 146 … … 150 151 virtual ~CaseStmt(); 151 152 152 bool isDefault() { return _isDefault; } 153 static CaseStmt * makeDefault( std::list<Label> labels = std::list<Label>(), 154 std::list<Statement *> stmts = std::list<Statement *>() ); 155 156 bool isDefault() const { return _isDefault; } 153 157 void set_default(bool b) { _isDefault = b; } 154 158 … … 163 167 164 168 virtual CaseStmt *clone() const { return new CaseStmt( *this ); } 165 virtual void print( std::ostream &os, int indent = 0 ) ;169 virtual void print( std::ostream &os, int indent = 0 ) const; 166 170 private: 167 171 Expression * condition; … … 186 190 virtual void accept( Visitor &v ) { v.visit( this ); } 187 191 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 188 virtual void print( std::ostream &os, int indent = 0 ) ;192 virtual void print( std::ostream &os, int indent = 0 ) const; 189 193 private: 190 194 Expression *condition; … … 211 215 virtual void accept( Visitor &v ) { v.visit( this ); } 212 216 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 213 virtual void print( std::ostream &os, int indent = 0 ) ;217 virtual void print( std::ostream &os, int indent = 0 ) const; 214 218 private: 215 219 Statement *initialization; … … 221 225 class BranchStmt : public Statement { 222 226 public: 223 enum Type { Goto = 0 , Break, Continue };227 enum Type { Goto = 0, Break, Continue }; 224 228 225 229 BranchStmt( std::list<Label> labels, Label target, Type ) throw (SemanticError); … … 227 231 virtual ~BranchStmt() {} 228 232 233 Label get_originalTarget() { return originalTarget; } 229 234 Label get_target() { return target; } 230 235 void set_target( Label newValue ) { target = newValue; } … … 239 244 virtual void accept( Visitor &v ) { v.visit( this ); } 240 245 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 241 virtual void print( std::ostream &os, int indent = 0 ) ;246 virtual void print( std::ostream &os, int indent = 0 ) const; 242 247 private: 243 248 static const char *brType[]; 249 Label originalTarget; // can give better error messages if we remember the label name that the user entered 244 250 Label target; 245 251 Expression *computedTarget; … … 258 264 virtual void accept( Visitor &v ) { v.visit( this ); } 259 265 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 260 virtual void print( std::ostream &os, int indent = 0 ) ;266 virtual void print( std::ostream &os, int indent = 0 ) const; 261 267 private: 262 268 Expression *expr; … … 274 280 virtual void accept( Visitor &v ) { v.visit( this ); } 275 281 virtual NullStmt *acceptMutator( Mutator &m ) { return m.mutate( this ); } 276 virtual void print( std::ostream &os, int indent = 0 ) ;282 virtual void print( std::ostream &os, int indent = 0 ) const; 277 283 278 284 private: … … 295 301 virtual void accept( Visitor &v ) { v.visit( this ); } 296 302 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 297 virtual void print( std::ostream &os, int indent = 0 ) ;303 virtual void print( std::ostream &os, int indent = 0 ) const; 298 304 299 305 private: … … 317 323 virtual void accept( Visitor &v ) { v.visit( this ); } 318 324 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 319 virtual void print( std::ostream &os, int indent = 0 ) ;325 virtual void print( std::ostream &os, int indent = 0 ) const; 320 326 321 327 private: … … 336 342 virtual void accept( Visitor &v ) { v.visit( this ); } 337 343 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 338 virtual void print( std::ostream &os, int indent = 0 ) ;344 virtual void print( std::ostream &os, int indent = 0 ) const; 339 345 private: 340 346 CompoundStmt *block; … … 355 361 virtual void accept( Visitor &v ) { v.visit( this ); } 356 362 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 357 virtual void print( std::ostream &os, int indent = 0 ) ;363 virtual void print( std::ostream &os, int indent = 0 ) const; 358 364 private: 359 365 Declaration *decl;
Note:
See TracChangeset
for help on using the changeset viewer.