diff options
-rw-r--r-- | mparser.py | 8 | ||||
-rw-r--r-- | test cases/common/40 logic ops/meson.build | 12 |
2 files changed, 16 insertions, 4 deletions
@@ -318,14 +318,14 @@ class Parser: def e2(self): left = self.e3() - if self.accept('or'): - return OrNode(left.lineno, left.colno, left, self.e3()) + while self.accept('or'): + left = OrNode(left.lineno, left.colno, left, self.e3()) return left def e3(self): left = self.e4() - if self.accept('and'): - return AndNode(left.lineno, left.colno, left, self.e4()) + while self.accept('and'): + left = AndNode(left.lineno, left.colno, left, self.e4()) return left def e4(self): diff --git a/test cases/common/40 logic ops/meson.build b/test cases/common/40 logic ops/meson.build index 1f6ed8f..e975c7e 100644 --- a/test cases/common/40 logic ops/meson.build +++ b/test cases/common/40 logic ops/meson.build @@ -75,3 +75,15 @@ else error('Negation failed.') endif + +if f or f or f or f or f or f or f or f or t + message('Ok.') +else + error('Chain of ors failed.') +endif + +if t and t and t and t and t and t and t and t and f + error('Chain of ands failed.') +else + message('Ok.') +endif |