aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2014-09-19 18:08:28 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2014-09-19 18:08:28 +0300
commit1a8d830e0516aefc9c38660822dda11c2c830b70 (patch)
tree23c8e1be90f3639f239ec0c9874dd942c9690e94
parentf662ef8483d83479fb2451c11b5b8119c154b563 (diff)
downloadmeson-1a8d830e0516aefc9c38660822dda11c2c830b70.zip
meson-1a8d830e0516aefc9c38660822dda11c2c830b70.tar.gz
meson-1a8d830e0516aefc9c38660822dda11c2c830b70.tar.bz2
Can chain multiple logical operations in a row.
-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