diff options
| author | kartofen <kartofen.mail.0@protonmail.com> | 2025-07-20 13:02:56 +0300 |
|---|---|---|
| committer | kartofen <kartofen.mail.0@protonmail.com> | 2025-07-20 13:02:56 +0300 |
| commit | 1d6f6e7c6a07832b3524871fdec86f5329736598 (patch) | |
| tree | 60981bf69a19fa84e06e36c10df6c35e0eed733a /demos/sample-files/calc-defs.c | |
| parent | 34357640c0676f33ad13aac1fe28effc6f6e47c7 (diff) | |
fix precedence
Diffstat (limited to 'demos/sample-files/calc-defs.c')
| -rw-r--r-- | demos/sample-files/calc-defs.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/demos/sample-files/calc-defs.c b/demos/sample-files/calc-defs.c index 103b69e..b9d1788 100644 --- a/demos/sample-files/calc-defs.c +++ b/demos/sample-files/calc-defs.c @@ -1,6 +1,6 @@ #include "util/util.h" #define SYMBOLS(X) \ - X(PLUS) X(MINUS) X(TIMES) X(MORE) X(LESS) X(EQUA) \ + X(PLUS) X(MINUS) X(TIMES) X(MORE) X(LESS) X(EQUA) \ X(LPAREN) X(RPAREN) \ X(QMARK) X(COLON) \ X(NUM) X(END_INPUT) \ @@ -61,14 +61,13 @@ struct precedence_def { size_t nlist; }; #define PREC(f, ...) {f, (int[]){__VA_ARGS__}, sizeof((int[]){__VA_ARGS__})/sizeof(int)} -#define USE_PROD(n) (~(n)) struct precedence_def _precedence_defs[] = { - PREC(0, QMARK), - PREC(0, USE_PROD(7)), - PREC(PRECEDENCE_LEFT_ASSOC, MORE, LESS, EQUA), + PREC(PRECEDENCE_LEFT_ASSOC, LPAREN), + PREC(PRECEDENCE_LEFT_ASSOC, TIMES), PREC(PRECEDENCE_LEFT_ASSOC, MINUS, PLUS), - PREC(PRECEDENCE_LEFT_ASSOC, TIMES, USE_PROD(5)), - PREC(PRECEDENCE_LEFT_ASSOC, LPAREN, RPAREN), + PREC(PRECEDENCE_LEFT_ASSOC, MORE, LESS, EQUA), + PREC(0, COLON, ~7), + PREC(0, QMARK), }; struct precedence_def *precedence_defs = _precedence_defs; |
