diff options
| author | onelin <oscar@nelin.dk> | 2026-09-22 21:31:45 +0000 |
|---|---|---|
| committer | onelin <oscar@nelin.dk> | 2026-09-22 21:31:45 +0000 |
| commit | 9908a38ec32dea9d6808164073b652216bf74e4b (patch) | |
| tree | 84527e5f8f1aa3d57141212993755313b9c9041d /main.c | |
| parent | 5bcc3382fc3b3299186d941dde16a35c9bb4281b (diff) | |
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 11 |
1 files changed, 9 insertions, 2 deletions
@@ -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) { |
