Esempio n. 1
0
stmt_t parse_stmt_if(tokenizer_t t) {
    char * filename = cur_tok(t).filename;
    int line = cur_tok(t).line_num;
    eat_it(t, TOK_IF);
    eat_it(t, TOK_LPAREN);
    expr_t e = parse_expr(t);
    eat_it(t, TOK_RPAREN);
    stmt_t th = parse_stmt(t);
    stmt_t el = NULL;
    if(cur_tok(t).kind == TOK_ELSE) {
        eat_it(t, TOK_ELSE);
        el = parse_stmt(t);
    }
    return mk_stmt_if(filename, line, e, th, el);
}
Esempio n. 2
0
stmt_t parse_stmt_if(tokenizer_t t)
{
    eat_it(t, TOK_IF);
    eat_it(t, TOK_LPAREN);
    expr_t e = parse_expr(t);
    eat_it(t, TOK_RPAREN);
    stmt_t body = parse_stmt(t);

    stmt_t else_body = NULL;
    if(cur_tok(t).kind == TOK_ELSE){
        eat_it(t, TOK_ELSE);
        else_body = parse_stmt(t);
    }else{
        // else はまだ空文
        else_body = NULL;
    }

    return mk_stmt_if(t->filename, t->line, e, body, else_body);
}