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.tar.gz | |
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
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 |
