// Parse a call expression. This is a subroutine of the postfix // expression parser. // // postfix-expression: // postfix-expression '(' [expression-list] ')' Expr& Parser::call_expression(Expr& e) { Expr_list es; require(tk::lparen_tok); if (lookahead() != tk::rparen_tok) es = expression_list(); match(tk::rparen_tok); return on_call_expression(e, es); }
Expr& Parser::tuple_expression() { Expr_list es; require(tk::lbrace_tok); if (lookahead() != tk::rbrace_tok) es = expression_list(); match(tk::rbrace_tok); return on_tuple_expression(es); }
bool solve(Exprs... exprs) { Generator gen; for (auto e : expression_list(exprs...)) gen(e); return gen.next(); }