relax parse_close_paren to allow values in parenthesis with no operators... duh

This commit is contained in:
Wolfgang (Blub) Bumiller 2012-08-19 19:35:45 +02:00
parent a93ed6ae80
commit 481baeeedc
2 changed files with 10 additions and 2 deletions

View file

@ -68,3 +68,9 @@ void() main = {
print3("memb = ", ftos(pawn.memb), "\n");
print3("Frame stand3 is ", ftos($stand3), " wooh\n");
};
float() exprtest = {
local float x;
x = 3;
return (x); /* parens */
}

View file

@ -977,10 +977,12 @@ static bool parser_close_paren(parser_t *parser, shunt *sy, bool functions_only)
parseerror(parser, "unmatched closing paren");
return false;
}
/* this would for bit a + (x) because there are no operators inside (x)
if (sy->ops[sy->ops_count-1].paren == 1) {
parseerror(parser, "empty parenthesis expression");
return false;
}
*/
while (sy->ops_count) {
if (sy->ops[sy->ops_count-1].paren == 'f') {
if (!parser_close_call(parser, sy))
@ -1240,7 +1242,7 @@ static ast_expression* parser_expression_leave(parser_t *parser, bool stopatcomm
if (op->id == opid1('(')) {
if (wantop) {
DEBUGSHUNTDO(printf("push (\n"));
DEBUGSHUNTDO(printf("push [op] (\n"));
++parens;
/* we expected an operator, this is the function-call operator */
if (!shunt_ops_add(&sy, syparen(parser_ctx(parser), 'f', sy.out_count-1))) {
@ -1253,7 +1255,7 @@ static ast_expression* parser_expression_leave(parser_t *parser, bool stopatcomm
parseerror(parser, "out of memory");
goto onerr;
}
DEBUGSHUNTDO(printf("push (\n"));
DEBUGSHUNTDO(printf("push [nop] (\n"));
}
wantop = false;
} else {