aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/main.c b/main.c
index 4130099..c071959 100644
--- a/main.c
+++ b/main.c
@@ -387,8 +387,8 @@ p_arith(char const* restrict text, TokenList_t* restrict tokens) {
} else if (token->type == t_number && root != NULL &&
root->type != e_number) {
- // Consequtive nullary expressions are invalid
- if (exp_idx > 0 && expression[exp_idx - 1].type == e_number) {
+ // Consequtive nullary expressions are invalid (>1 because start from 1)
+ if (exp_idx > 1 && expression[exp_idx - 1].type == e_number) {
fprintf(stderr, "Unexpected number at %d:%d\n", token->pos.line,
token->pos.column);
return top;
@@ -406,6 +406,13 @@ p_arith(char const* restrict text, TokenList_t* restrict tokens) {
} else if (token->type != t_number && root != NULL) {
+ // Consequtive n-ary expressions are invalid (>1 because start from 1)
+ if (exp_idx > 1 && expression[exp_idx - 1].type != e_number) {
+ fprintf(stderr, "Unexpected n-ary operator at %d:%d\n", token->pos.line,
+ token->pos.column);
+ return top;
+ }
+
if (token->type == t_multiply) {
*expr = (AExp_t){.type = e_mul};
} else if (token->type == t_divide) {