added parsing and testing for grouped expressions
This commit is contained in:
@@ -46,6 +46,11 @@ namespace parser {
|
||||
std::bind(&parser::parse_boolean, this)
|
||||
);
|
||||
|
||||
register_prefix(
|
||||
token::type::LPAREN,
|
||||
std::bind(&parser::parse_grouped_expr, this)
|
||||
);
|
||||
|
||||
using namespace std::placeholders;
|
||||
register_infix(
|
||||
{token::type::PLUS,
|
||||
@@ -238,6 +243,19 @@ namespace parser {
|
||||
return ret;
|
||||
};
|
||||
|
||||
ast::expression* parser::parse_grouped_expr() {
|
||||
// TRACE_FUNCTION;
|
||||
next_token();
|
||||
ast::expression* ret = parse_expression(precedence::LOWEST);
|
||||
|
||||
if (!expect_next(token::type::RPAREN)) {
|
||||
delete ret;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return ret;
|
||||
};
|
||||
|
||||
ast::expression* parser::parse_infix_expr(ast::expression* left) {
|
||||
// TRACE_FUNCTION;
|
||||
ast::infix_expr* ret =
|
||||
|
@@ -53,6 +53,7 @@ namespace parser {
|
||||
ast::expression* parse_integer();
|
||||
ast::expression* parse_boolean();
|
||||
ast::expression* parse_prefix_expr();
|
||||
ast::expression* parse_grouped_expr();
|
||||
|
||||
ast::expression* parse_infix_expr(ast::expression*);
|
||||
};
|
||||
|
Reference in New Issue
Block a user