diff options
author | Christian Neukirchen <chneukirchen@gmail.com> | 2015-10-22 22:14:13 +0200 |
---|---|---|
committer | Christian Neukirchen <chneukirchen@gmail.com> | 2015-10-22 22:14:13 +0200 |
commit | 2325b0bdda161b12cee079089171d13ec8723bff (patch) | |
tree | ef43c8d661f7cd23d7a3ef6eac72da3ebe769c5f /lr.c | |
parent | c61f7ad5fba9d1c8a62008b8bd3fd87f1310bf4e (diff) | |
download | lr-2325b0bdda161b12cee079089171d13ec8723bff.tar.gz lr-2325b0bdda161b12cee079089171d13ec8723bff.tar.xz lr-2325b0bdda161b12cee079089171d13ec8723bff.zip |
add ( )
Diffstat (limited to 'lr.c')
-rw-r--r-- | lr.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/lr.c b/lr.c index 8db5916..6e7159b 100644 --- a/lr.c +++ b/lr.c @@ -10,6 +10,7 @@ TODO: - dynamic columns? i'd rather not (easy to compute for all but names...) - error handling? keep going - avoid stat in recurse +- multiple -t */ #define _XOPEN_SOURCE 700 @@ -165,6 +166,7 @@ parse_op() } struct expr *parse_cmp(); +struct expr *parse_or(); struct expr * parse_inner() @@ -179,10 +181,13 @@ parse_inner() not->op = EXPR_NOT; not->a.expr = e; return not; + } else if (token("(")) { + struct expr *e = parse_or(); + if (token(")")) + return e; + return 0; // TODO ERROR; } else return 0; - // TODO negation - // TODO ( expr ) } struct expr * @@ -354,7 +359,7 @@ readlin(const char *p, const char *alt) if (r < 0) return alt; b[r] = 0; - return readlin(b, b); + return b; } #define CMP(a, b) if ((a) == (b)) break; else if ((a) < (b)) return -1; else return 1 |