Changeset 135b431 for src/Parser/StatementNode.cc
- Timestamp:
- Aug 25, 2017, 11:09:02 AM (7 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- 6b224a52
- Parents:
- 3eab0ef6
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/StatementNode.cc
r3eab0ef6 r135b431 93 93 elseb = branches.front(); 94 94 } // if 95 95 96 96 std::list< Statement * > init; 97 97 if ( ctl->init != 0 ) { … … 207 207 } 208 208 209 WaitForStmt * build_waitfor( ExpressionNode * targetExpr, StatementNode * stmt, ExpressionNode * when ) { 210 auto node = new WaitForStmt(); 211 212 WaitForStmt::Target target; 213 target.function = maybeBuild<Expression>( targetExpr ); 214 buildMoveList< Expression >( targetExpr, target.arguments ); 215 delete targetExpr; 216 217 node->clauses.push_back( WaitForStmt::Clause{ 218 target, 219 maybeMoveBuild<Statement >( stmt ), 220 maybeMoveBuild<Expression>( when ) 221 }); 222 223 return node; 224 } 225 226 WaitForStmt * build_waitfor( ExpressionNode * targetExpr, StatementNode * stmt, ExpressionNode * when, WaitForStmt * node ) { 227 WaitForStmt::Target target; 228 229 target.function = maybeBuild<Expression>( targetExpr ); 230 buildMoveList< Expression >( targetExpr, target.arguments ); 231 delete targetExpr; 232 233 node->clauses.push_back( WaitForStmt::Clause{ 234 std::move( target ), 235 maybeMoveBuild<Statement >( stmt ), 236 maybeMoveBuild<Expression>( when ) 237 }); 238 239 return node; 240 } 241 242 WaitForStmt * build_waitfor_timeout( ExpressionNode * timeout, StatementNode * stmt, ExpressionNode * when ) { 243 auto node = new WaitForStmt(); 244 245 if( timeout ) { 246 node->timeout.time = maybeMoveBuild<Expression>( timeout ); 247 node->timeout.statement = maybeMoveBuild<Statement >( stmt ); 248 node->timeout.condition = maybeMoveBuild<Expression>( when ); 249 } 250 else { 251 node->orelse.statement = maybeMoveBuild<Statement >( stmt ); 252 node->orelse.condition = maybeMoveBuild<Expression>( when ); 253 } 254 255 return node; 256 } 257 258 WaitForStmt * build_waitfor_timeout( ExpressionNode * timeout, StatementNode * stmt, ExpressionNode * when, StatementNode * else_stmt, ExpressionNode * else_when ) { 259 auto node = new WaitForStmt(); 260 261 node->timeout.time = maybeMoveBuild<Expression>( timeout ); 262 node->timeout.statement = maybeMoveBuild<Statement >( stmt ); 263 node->timeout.condition = maybeMoveBuild<Expression>( when ); 264 265 node->orelse.statement = maybeMoveBuild<Statement >( else_stmt ); 266 node->orelse.condition = maybeMoveBuild<Expression>( else_when ); 267 268 return node; 269 } 270 271 // WaitForStmt::Target build_waitfor( const std::string * name, ExpressionNode * arguments ) { 272 // return WaitForStmt::Clause{ 273 274 // }; 275 // } 276 209 277 Statement *build_compound( StatementNode *first ) { 210 278 CompoundStmt *cs = new CompoundStmt( noLabels );
Note: See TracChangeset
for help on using the changeset viewer.