aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mparser.py8
-rw-r--r--test cases/common/40 logic ops/meson.build12
2 files changed, 16 insertions, 4 deletions
diff --git a/mparser.py b/mparser.py
index 91e3021..d0058ac 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 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