From 1a8d830e0516aefc9c38660822dda11c2c830b70 Mon Sep 17 00:00:00 2001 From: Jussi Pakkanen Date: Fri, 19 Sep 2014 18:08:28 +0300 Subject: Can chain multiple logical operations in a row. --- mparser.py | 8 ++++---- test cases/common/40 logic ops/meson.build | 12 ++++++++++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/mparser.py b/mparser.py index 91e30213f..d0058ac80 100644 --- a/mparser.py +++ b/mparser.py @@ -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 1f6ed8f90..e975c7eee 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 -- cgit v1.2.3