diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2014-09-19 18:08:28 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2014-09-19 18:08:28 +0300 |
commit | 1a8d830e0516aefc9c38660822dda11c2c830b70 (patch) | |
tree | 23c8e1be90f3639f239ec0c9874dd942c9690e94 | |
parent | f662ef8483d83479fb2451c11b5b8119c154b563 (diff) | |
download | meson-1a8d830e0516aefc9c38660822dda11c2c830b70.zip meson-1a8d830e0516aefc9c38660822dda11c2c830b70.tar.gz meson-1a8d830e0516aefc9c38660822dda11c2c830b70.tar.bz2 |
Can chain multiple logical operations in a row.
-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 |