generate.c
static void code_do_while_statement(GenerateContext *c, ParseTreeNode *node)
{
    VMUVALUE nxt, test, inst;
    putcbyte(c, OP_BR);
    test = putcword(c, 0);
    nxt = codeaddr(c);
    code_statement_list(c, node->u.loopStatement.bodyStatements);
    fixupbranch(c, test, codeaddr(c));
    code_rvalue(c, node->u.loopStatement.test);
    inst = putcbyte(c, OP_BRT);
    putcword(c, nxt - inst - 1 - sizeof(VMVALUE));
}
/* code_do_while_statement - generate code for a DO WHILE statement */
generate code for a DO WHILE statement
generate code for a DO WHILE statement
static void code_do_while_statement(GenerateContext *c, ParseTreeNode *node)
{
    VMUVALUE nxt, test, inst;
    putcbyte(c, OP_BR);
    test = putcword(c, 0);
    nxt = codeaddr(c);
    code_statement_list(c, node->u.loopStatement.bodyStatements);
    fixupbranch(c, test, codeaddr(c));
    code_rvalue(c, node->u.loopStatement.test);
    inst = putcbyte(c, OP_BRT);
    putcword(c, nxt - inst - 1 - sizeof(VMVALUE));
}
static void code_do_while_statement ( GenerateContext * c , ParseTreeNode * node ) { VMUVALUE nxt , test , inst ; putcbyte ( c , OP_BR ) ; test = putcword ( c , 0 ) ; nxt = codeaddr ( c ) ; code_statement_list ( c , node -> u . loopStatement . bodyStatements ) ; fixupbranch ( c , test , codeaddr ( c ) ) ; code_rvalue ( c , node -> u . loopStatement . test ) ; inst = putcbyte ( c , OP_BRT ) ; putcword ( c , nxt - inst - 1 - sizeof ( VMVALUE ) ) ; }
code_do_while_statement - generate code for a DO WHILE statement
code_do_while_statement - generate code for a DO WHILE statement