aboutsummaryrefslogtreecommitdiff
path: root/demos/sample-files/calc-defs.c
diff options
context:
space:
mode:
authorkartofen <kartofen.mail.0@protonmail.com>2025-07-20 13:02:56 +0300
committerkartofen <kartofen.mail.0@protonmail.com>2025-07-20 13:02:56 +0300
commit1d6f6e7c6a07832b3524871fdec86f5329736598 (patch)
tree60981bf69a19fa84e06e36c10df6c35e0eed733a /demos/sample-files/calc-defs.c
parent34357640c0676f33ad13aac1fe28effc6f6e47c7 (diff)
fix precedence
Diffstat (limited to 'demos/sample-files/calc-defs.c')
-rw-r--r--demos/sample-files/calc-defs.c13
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;