parse.c
static void ParseLoopWhile(ParseContext *c)
{
    switch (c->bptr->type) {
    case BLOCK_DO:
        if (c->bptr->node->nodeType != NodeTypeLoopStatement)
            ParseError(c, "can't have a test at both the top and bottom of a loop");
        c->bptr->node->nodeType = NodeTypeLoopWhileStatement;
        c->bptr->node->u.loopStatement.test = ParseExpr(c);
        PopBlock(c);
        break;
    default:
        ParseError(c, "LOOP without a matching DO");
        break;
    }
    FRequire(c, T_EOL);
}
/* ParseLoopWhile - parse the 'LOOP WHILE' statement */
parse the 'LOOP WHILE' statement
parse the ' LOOP WHILE ' statement
static void ParseLoopWhile(ParseContext *c)
{
    switch (c->bptr->type) {
    case BLOCK_DO:
        if (c->bptr->node->nodeType != NodeTypeLoopStatement)
            ParseError(c, "can't have a test at both the top and bottom of a loop");
        c->bptr->node->nodeType = NodeTypeLoopWhileStatement;
        c->bptr->node->u.loopStatement.test = ParseExpr(c);
        PopBlock(c);
        break;
    default:
        ParseError(c, "LOOP without a matching DO");
        break;
    }
    FRequire(c, T_EOL);
}
static void ParseLoopWhile ( ParseContext * c ) { switch ( c -> bptr -> type ) { case BLOCK_DO : if ( c -> bptr -> node -> nodeType != NodeTypeLoopStatement ) ParseError ( c , " " ) ; c -> bptr -> node -> nodeType = NodeTypeLoopWhileStatement ; c -> bptr -> node -> u . loopStatement . test = ParseExpr ( c ) ; PopBlock ( c ) ; break ; default : ParseError ( c , " " ) ; break ; } FRequire ( c , T_EOL ) ; }
ParseLoopWhile - parse the 'LOOP WHILE' statement
ParseLoopWhile - parse the ' LOOP WHILE ' statement