Changes in src/Parser/StatementNode.cc [6d49ea3:2065609]
- File:
-
- 1 edited
-
src/Parser/StatementNode.cc (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/StatementNode.cc
r6d49ea3 r2065609 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 215 ExpressionNode * next = dynamic_cast<ExpressionNode *>( targetExpr->get_next() ); 216 targetExpr->set_next( nullptr ); 217 buildMoveList< Expression >( next, target.arguments ); 218 219 delete targetExpr; 220 221 node->clauses.push_back( WaitForStmt::Clause{ 222 target, 223 maybeMoveBuild<Statement >( stmt ), 224 maybeMoveBuild<Expression>( when ) 225 }); 226 227 return node; 228 } 229 230 WaitForStmt * build_waitfor( ExpressionNode * targetExpr, StatementNode * stmt, ExpressionNode * when, WaitForStmt * node ) { 231 WaitForStmt::Target target; 232 target.function = maybeBuild<Expression>( targetExpr ); 233 234 ExpressionNode * next = dynamic_cast<ExpressionNode *>( targetExpr->get_next() ); 235 targetExpr->set_next( nullptr ); 236 buildMoveList< Expression >( next, target.arguments ); 237 238 delete targetExpr; 239 240 node->clauses.push_back( WaitForStmt::Clause{ 241 std::move( target ), 242 maybeMoveBuild<Statement >( stmt ), 243 maybeMoveBuild<Expression>( when ) 244 }); 245 246 return node; 247 } 248 249 WaitForStmt * build_waitfor_timeout( ExpressionNode * timeout, StatementNode * stmt, ExpressionNode * when ) { 250 auto node = new WaitForStmt(); 251 252 if( timeout ) { 253 node->timeout.time = maybeMoveBuild<Expression>( timeout ); 254 node->timeout.statement = maybeMoveBuild<Statement >( stmt ); 255 node->timeout.condition = maybeMoveBuild<Expression>( when ); 256 } 257 else { 258 node->orelse.statement = maybeMoveBuild<Statement >( stmt ); 259 node->orelse.condition = maybeMoveBuild<Expression>( when ); 260 } 261 262 return node; 263 } 264 265 WaitForStmt * build_waitfor_timeout( ExpressionNode * timeout, StatementNode * stmt, ExpressionNode * when, StatementNode * else_stmt, ExpressionNode * else_when ) { 266 auto node = new WaitForStmt(); 267 268 node->timeout.time = maybeMoveBuild<Expression>( timeout ); 269 node->timeout.statement = maybeMoveBuild<Statement >( stmt ); 270 node->timeout.condition = maybeMoveBuild<Expression>( when ); 271 272 node->orelse.statement = maybeMoveBuild<Statement >( else_stmt ); 273 node->orelse.condition = maybeMoveBuild<Expression>( else_when ); 274 275 return node; 276 } 277 278 // WaitForStmt::Target build_waitfor( const std::string * name, ExpressionNode * arguments ) { 279 // return WaitForStmt::Clause{ 280 281 // }; 282 // } 283 209 284 Statement *build_compound( StatementNode *first ) { 210 285 CompoundStmt *cs = new CompoundStmt( noLabels );
Note:
See TracChangeset
for help on using the changeset viewer.