Ignore:
Timestamp:
Jul 24, 2023, 1:47:09 PM (11 months ago)
Author:
Andrew Beach <ajbeach@…>
Branches:
master
Children:
7882c58
Parents:
378096a
Message:

Clean-up some white spaces, spaces to tabs.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/StatementNode.cc

    r378096a r6a4dae6  
    361361
    362362ast::WaitUntilStmt::ClauseNode * build_waituntil_clause( const CodeLocation & loc, ExpressionNode * when, ExpressionNode * targetExpr, StatementNode * stmt ) {
    363     ast::WhenClause * clause = new ast::WhenClause( loc );
    364     clause->when_cond = notZeroExpr( maybeMoveBuild( when ) );
    365     clause->stmt = maybeMoveBuild( stmt );
    366     clause->target = maybeMoveBuild( targetExpr );
    367     return new ast::WaitUntilStmt::ClauseNode( clause );
     363        ast::WhenClause * clause = new ast::WhenClause( loc );
     364        clause->when_cond = notZeroExpr( maybeMoveBuild( when ) );
     365        clause->stmt = maybeMoveBuild( stmt );
     366        clause->target = maybeMoveBuild( targetExpr );
     367        return new ast::WaitUntilStmt::ClauseNode( clause );
    368368}
    369369ast::WaitUntilStmt::ClauseNode * build_waituntil_else( const CodeLocation & loc, ExpressionNode * when, StatementNode * stmt ) {
    370     ast::WhenClause * clause = new ast::WhenClause( loc );
    371     clause->when_cond = notZeroExpr( maybeMoveBuild( when ) );
    372     clause->stmt = maybeMoveBuild( stmt );
    373     return new ast::WaitUntilStmt::ClauseNode( ast::WaitUntilStmt::ClauseNode::Op::ELSE, clause );
    374 }
     370        ast::WhenClause * clause = new ast::WhenClause( loc );
     371        clause->when_cond = notZeroExpr( maybeMoveBuild( when ) );
     372        clause->stmt = maybeMoveBuild( stmt );
     373        return new ast::WaitUntilStmt::ClauseNode( ast::WaitUntilStmt::ClauseNode::Op::ELSE, clause );
     374}
     375
    375376ast::WaitUntilStmt::ClauseNode * build_waituntil_timeout( const CodeLocation & loc, ExpressionNode * when, ExpressionNode * timeout, StatementNode * stmt ) {
    376     ast::WhenClause * clause = new ast::WhenClause( loc );
    377     clause->when_cond = notZeroExpr( maybeMoveBuild( when ) );
    378     clause->stmt = maybeMoveBuild( stmt );
    379     clause->target = maybeMoveBuild( timeout );
    380     return new ast::WaitUntilStmt::ClauseNode( ast::WaitUntilStmt::ClauseNode::Op::TIMEOUT, clause );
     377        ast::WhenClause * clause = new ast::WhenClause( loc );
     378        clause->when_cond = notZeroExpr( maybeMoveBuild( when ) );
     379        clause->stmt = maybeMoveBuild( stmt );
     380        clause->target = maybeMoveBuild( timeout );
     381        return new ast::WaitUntilStmt::ClauseNode( ast::WaitUntilStmt::ClauseNode::Op::TIMEOUT, clause );
    381382}
    382383
    383384ast::WaitUntilStmt * build_waituntil_stmt( const CodeLocation & loc, ast::WaitUntilStmt::ClauseNode * root ) {
    384     ast::WaitUntilStmt * retStmt = new ast::WaitUntilStmt( loc );
    385     retStmt->predicateTree = root;
    386    
    387     // iterative tree traversal
    388     std::vector<ast::WaitUntilStmt::ClauseNode *> nodeStack; // stack needed for iterative traversal
    389     ast::WaitUntilStmt::ClauseNode * currNode = nullptr;
    390     ast::WaitUntilStmt::ClauseNode * lastInternalNode = nullptr;
    391     ast::WaitUntilStmt::ClauseNode * cleanup = nullptr; // used to cleanup removed else/timeout
    392     nodeStack.push_back(root);
    393 
    394     do {
    395         currNode = nodeStack.back();
    396         nodeStack.pop_back(); // remove node since it will be processed
    397 
    398         switch (currNode->op) {
    399             case ast::WaitUntilStmt::ClauseNode::LEAF:
    400                 retStmt->clauses.push_back(currNode->leaf);
    401                 break;
    402             case ast::WaitUntilStmt::ClauseNode::ELSE:
    403                 retStmt->else_stmt = currNode->leaf->stmt
    404                     ? ast::deepCopy( currNode->leaf->stmt )
    405                     : nullptr;
    406                
    407                 retStmt->else_cond = currNode->leaf->when_cond
    408                     ? ast::deepCopy( currNode->leaf->when_cond )
    409                     : nullptr;
    410 
    411                 delete currNode->leaf;
    412                 break;
    413             case ast::WaitUntilStmt::ClauseNode::TIMEOUT:
    414                 retStmt->timeout_time = currNode->leaf->target
    415                     ? ast::deepCopy( currNode->leaf->target )
    416                     : nullptr;
    417                 retStmt->timeout_stmt = currNode->leaf->stmt
    418                     ? ast::deepCopy( currNode->leaf->stmt )
    419                     : nullptr;
    420                 retStmt->timeout_cond = currNode->leaf->when_cond
    421                     ? ast::deepCopy( currNode->leaf->when_cond )
    422                     : nullptr;
    423 
    424                 delete currNode->leaf;
    425                 break;
    426             default:
    427                 nodeStack.push_back( currNode->right ); // process right after left
    428                 nodeStack.push_back( currNode->left );
    429 
    430                 // Cut else/timeout out of the tree
    431                 if ( currNode->op == ast::WaitUntilStmt::ClauseNode::LEFT_OR ) {
    432                     if ( lastInternalNode )
    433                         lastInternalNode->right = currNode->left;
    434                     else    // if not set then root is LEFT_OR
    435                         retStmt->predicateTree = currNode->left;
    436    
    437                     currNode->left = nullptr;
    438                     cleanup = currNode;
    439                 }
    440                
    441                 lastInternalNode = currNode;
    442                 break;
    443         }
    444     } while ( !nodeStack.empty() );
    445 
    446     if ( cleanup ) delete cleanup;
    447 
    448     return retStmt;
     385        ast::WaitUntilStmt * retStmt = new ast::WaitUntilStmt( loc );
     386        retStmt->predicateTree = root;
     387
     388        // iterative tree traversal
     389        std::vector<ast::WaitUntilStmt::ClauseNode *> nodeStack; // stack needed for iterative traversal
     390        ast::WaitUntilStmt::ClauseNode * currNode = nullptr;
     391        ast::WaitUntilStmt::ClauseNode * lastInternalNode = nullptr;
     392        ast::WaitUntilStmt::ClauseNode * cleanup = nullptr; // used to cleanup removed else/timeout
     393        nodeStack.push_back(root);
     394
     395        do {
     396                currNode = nodeStack.back();
     397                nodeStack.pop_back(); // remove node since it will be processed
     398
     399                switch (currNode->op) {
     400                case ast::WaitUntilStmt::ClauseNode::LEAF:
     401                        retStmt->clauses.push_back(currNode->leaf);
     402                        break;
     403                case ast::WaitUntilStmt::ClauseNode::ELSE:
     404                        retStmt->else_stmt = currNode->leaf->stmt
     405                                ? ast::deepCopy( currNode->leaf->stmt )
     406                                : nullptr;
     407                        retStmt->else_cond = currNode->leaf->when_cond
     408                                ? ast::deepCopy( currNode->leaf->when_cond )
     409                                : nullptr;
     410
     411                        delete currNode->leaf;
     412                        break;
     413                case ast::WaitUntilStmt::ClauseNode::TIMEOUT:
     414                        retStmt->timeout_time = currNode->leaf->target
     415                                ? ast::deepCopy( currNode->leaf->target )
     416                                : nullptr;
     417                        retStmt->timeout_stmt = currNode->leaf->stmt
     418                                ? ast::deepCopy( currNode->leaf->stmt )
     419                                : nullptr;
     420                        retStmt->timeout_cond = currNode->leaf->when_cond
     421                                ? ast::deepCopy( currNode->leaf->when_cond )
     422                                : nullptr;
     423
     424                        delete currNode->leaf;
     425                        break;
     426                default:
     427                        nodeStack.push_back( currNode->right ); // process right after left
     428                        nodeStack.push_back( currNode->left );
     429
     430                        // Cut else/timeout out of the tree
     431                        if ( currNode->op == ast::WaitUntilStmt::ClauseNode::LEFT_OR ) {
     432                                if ( lastInternalNode )
     433                                        lastInternalNode->right = currNode->left;
     434                                else // if not set then root is LEFT_OR
     435                                        retStmt->predicateTree = currNode->left;
     436
     437                                currNode->left = nullptr;
     438                                cleanup = currNode;
     439                        }
     440
     441                        lastInternalNode = currNode;
     442                        break;
     443                }
     444        } while ( !nodeStack.empty() );
     445
     446        if ( cleanup ) delete cleanup;
     447
     448        return retStmt;
    449449}
    450450
Note: See TracChangeset for help on using the changeset viewer.