parse.c
static void ParseDoUntil(ParseContext *c)
{
    ParseTreeNode *node = NewParseTreeNode(c, NodeTypeDoUntilStatement);
    node->u.loopStatement.test = ParseExpr(c);
    AddNodeToList(c, &c->bptr->pNextStatement, node);
    PushBlock(c, BLOCK_DO, node);
    c->bptr->pNextStatement = &node->u.loopStatement.bodyStatements;
    FRequire(c, T_EOL);
}
/* ParseDoUntil - parse the 'DO UNTIL' statement */
parse the 'DO UNTIL' statement
parse the ' DO UNTIL ' statement
static void ParseDoUntil(ParseContext *c)
{
    ParseTreeNode *node = NewParseTreeNode(c, NodeTypeDoUntilStatement);
    node->u.loopStatement.test = ParseExpr(c);
    AddNodeToList(c, &c->bptr->pNextStatement, node);
    PushBlock(c, BLOCK_DO, node);
    c->bptr->pNextStatement = &node->u.loopStatement.bodyStatements;
    FRequire(c, T_EOL);
}
static void ParseDoUntil ( ParseContext * c ) { ParseTreeNode * node = NewParseTreeNode ( c , NodeTypeDoUntilStatement ) ; node -> u . loopStatement . test = ParseExpr ( c ) ; AddNodeToList ( c , & c -> bptr -> pNextStatement , node ) ; PushBlock ( c , BLOCK_DO , node ) ; c -> bptr -> pNextStatement = & node -> u . loopStatement . bodyStatements ; FRequire ( c , T_EOL ) ; }
ParseDoUntil - parse the 'DO UNTIL' statement
ParseDoUntil - parse the ' DO UNTIL ' statement