diff options
| author | Daniel <kingdread@gmx.de> | 2020-04-21 14:06:15 +0200 | 
|---|---|---|
| committer | Daniel <kingdread@gmx.de> | 2020-04-21 14:06:15 +0200 | 
| commit | 0ad7a333dc2b45f0ba658ea455284d086294a088 (patch) | |
| tree | 0aef7a0a3cac0fe5467f9397d41dc6910cb44311 | |
| parent | d1f277892ec127b1fb83ad56de59b29c32695661 (diff) | |
| download | raidgrep-0ad7a333dc2b45f0ba658ea455284d086294a088.tar.gz raidgrep-0ad7a333dc2b45f0ba658ea455284d086294a088.tar.bz2 raidgrep-0ad7a333dc2b45f0ba658ea455284d086294a088.zip  | |
grammar: fix precendence rules
If we don't allow the higher-tier on the left side, we cannot chain
multiple or/and on the same level. Since or is associative, we shouldn't
expect the user to write (... or (... or ...)) and instead provide the
flattened version as well.
| -rw-r--r-- | src/fexpr/grammar.lalrpop | 8 | 
1 files changed, 4 insertions, 4 deletions
diff --git a/src/fexpr/grammar.lalrpop b/src/fexpr/grammar.lalrpop index f559ff1..caaaf7f 100644 --- a/src/fexpr/grammar.lalrpop +++ b/src/fexpr/grammar.lalrpop @@ -28,18 +28,18 @@ PlayerFilter: Box<dyn filters::player::PlayerFilter> = {  }  Disjunction<T>: T = { -    <a:Conjunction<T>> "or" <b:Conjunction<T>> => a | b, +    <a:Disjunction<T>> "or" <b:Conjunction<T>> => a | b,      Conjunction<T>,  }  Conjunction<T>: T = { -    <a:Negation<T>> "and"? <b:Negation<T>> => a & b, +    <a:Conjunction<T>> "and"? <b:Negation<T>> => a & b,      Negation<T>,  }  Negation<T>: T = { -    "not" <T> => ! <>, -    "!" <T> => ! <>, +    "not" <Negation<T>> => ! <>, +    "!" <Negation<T>> => ! <>,      T,  }  | 
