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); }
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); }