diff options
author | Christian Neukirchen <chneukirchen@gmail.com> | 2015-10-22 22:09:54 +0200 |
---|---|---|
committer | Christian Neukirchen <chneukirchen@gmail.com> | 2015-10-22 22:09:54 +0200 |
commit | c61f7ad5fba9d1c8a62008b8bd3fd87f1310bf4e (patch) | |
tree | 4eaf106a68d8aa01d4b83b7f5e0cf21fcaec6c5c /lr.c | |
parent | 7f14eac96430bd323f8099b43f6ca9f98b763e37 (diff) | |
download | lr-c61f7ad5fba9d1c8a62008b8bd3fd87f1310bf4e.tar.gz lr-c61f7ad5fba9d1c8a62008b8bd3fd87f1310bf4e.tar.xz lr-c61f7ad5fba9d1c8a62008b8bd3fd87f1310bf4e.zip |
add negation
Diffstat (limited to 'lr.c')
-rw-r--r-- | lr.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lr.c b/lr.c index b7c8d1b..8db5916 100644 --- a/lr.c +++ b/lr.c @@ -164,6 +164,8 @@ parse_op() return 0; } +struct expr *parse_cmp(); + struct expr * parse_inner() { @@ -171,6 +173,12 @@ parse_inner() struct expr *e = malloc (sizeof (struct expr)); e->op = EXPR_PRUNE; return e; + } else if (token("!")) { + struct expr *e = parse_cmp(); + struct expr *not = malloc (sizeof (struct expr)); + not->op = EXPR_NOT; + not->a.expr = e; + return not; } else return 0; // TODO negation |