Allow last expression in code to not be terminated by a semicolon.

This commit is contained in:
Danila Fedorin 2018-02-18 19:02:06 -08:00
parent c7aa521b19
commit 12660b1e4a

View File

@ -361,7 +361,17 @@ libab_result _parse_statement(struct parser_state* state, libab_tree** store_int
_parser_is_char(state, '(') || _parser_is_char(state, '(') ||
_parser_is_type(state, TOKEN_OP_PREFIX)) { _parser_is_type(state, TOKEN_OP_PREFIX)) {
result = _parse_expression(state, store_into); result = _parse_expression(state, store_into);
if(result == LIBAB_SUCCESS) result = _parser_consume_char(state, ';'); if(result == LIBAB_SUCCESS) {
if(_parser_is_char(state, ';') || _parser_eof(state)) {
_parser_state_step(state);
} else {
result = LIBAB_UNEXPECTED;
libab_tree_free_recursive(*store_into);
free(*store_into);
*store_into = NULL;
}
}
} }
return result; return result;