Allow function calls without arguments in the parser.
This commit is contained in:
parent
e95e8c3f79
commit
9c164bd3dc
1 changed files with 3 additions and 14 deletions
|
|
@ -55,13 +55,12 @@ expr_t::parser_t::parse_value_term(std::istream& in,
|
||||||
case token_t::IDENT: {
|
case token_t::IDENT: {
|
||||||
string ident = tok.value.as_string();
|
string ident = tok.value.as_string();
|
||||||
|
|
||||||
|
node = new op_t(op_t::IDENT);
|
||||||
|
node->set_ident(ident);
|
||||||
|
|
||||||
// An identifier followed by ( represents a function call
|
// An identifier followed by ( represents a function call
|
||||||
tok = next_token(in, tflags);
|
tok = next_token(in, tflags);
|
||||||
|
|
||||||
if (tok.kind == token_t::LPAREN) {
|
if (tok.kind == token_t::LPAREN) {
|
||||||
node = new op_t(op_t::IDENT);
|
|
||||||
node->set_ident(ident);
|
|
||||||
|
|
||||||
ptr_op_t call_node(new op_t(op_t::O_CALL));
|
ptr_op_t call_node(new op_t(op_t::O_CALL));
|
||||||
call_node->set_left(node);
|
call_node->set_left(node);
|
||||||
node = call_node;
|
node = call_node;
|
||||||
|
|
@ -69,13 +68,6 @@ expr_t::parser_t::parse_value_term(std::istream& in,
|
||||||
push_token(tok); // let the parser see it again
|
push_token(tok); // let the parser see it again
|
||||||
node->set_right(parse_value_expr(in, tflags | EXPR_PARSE_SINGLE));
|
node->set_right(parse_value_expr(in, tflags | EXPR_PARSE_SINGLE));
|
||||||
} else {
|
} else {
|
||||||
if (std::isdigit(ident[0])) {
|
|
||||||
node = new op_t(op_t::INDEX);
|
|
||||||
node->set_index(lexical_cast<unsigned int>(ident.c_str()));
|
|
||||||
} else {
|
|
||||||
node = new op_t(op_t::IDENT);
|
|
||||||
node->set_ident(ident);
|
|
||||||
}
|
|
||||||
push_token(tok);
|
push_token(tok);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -84,9 +76,6 @@ expr_t::parser_t::parse_value_term(std::istream& in,
|
||||||
case token_t::LPAREN:
|
case token_t::LPAREN:
|
||||||
node = parse_value_expr(in, (tflags | EXPR_PARSE_PARTIAL) &
|
node = parse_value_expr(in, (tflags | EXPR_PARSE_PARTIAL) &
|
||||||
~EXPR_PARSE_SINGLE);
|
~EXPR_PARSE_SINGLE);
|
||||||
if (! node)
|
|
||||||
throw_(parse_error, "Left parenthesis not followed by an expression");
|
|
||||||
|
|
||||||
tok = next_token(in, tflags);
|
tok = next_token(in, tflags);
|
||||||
if (tok.kind != token_t::RPAREN)
|
if (tok.kind != token_t::RPAREN)
|
||||||
tok.expected(')');
|
tok.expected(')');
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue