diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2013-07-27 17:21:59 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2013-07-27 17:21:59 +0300 |
commit | 59c1dd44ed9feb4430edbb48f30842ea4b16e18c (patch) | |
tree | 5d04cb7d3b4ca3b2bd6efd491cb20eaccd04f7f7 /interpreter.py | |
parent | 782021d65ee0f928f0d0b08b51068a32171e9801 (diff) | |
download | meson-59c1dd44ed9feb4430edbb48f30842ea4b16e18c.zip meson-59c1dd44ed9feb4430edbb48f30842ea4b16e18c.tar.gz meson-59c1dd44ed9feb4430edbb48f30842ea4b16e18c.tar.bz2 |
Can do logical negation.
Diffstat (limited to 'interpreter.py')
-rw-r--r-- | interpreter.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/interpreter.py b/interpreter.py index aa7a0f9..f84298d 100644 --- a/interpreter.py +++ b/interpreter.py @@ -845,6 +845,8 @@ class Interpreter(): return self.evaluate_andstatement(cur) elif isinstance(cur, nodes.OrStatement): return self.evaluate_orstatement(cur) + elif isinstance(cur, nodes.NotStatement): + return self.evaluate_notstatement(cur) else: raise InvalidCode("Unknown statement.") @@ -1263,6 +1265,14 @@ class Interpreter(): if not isinstance(r, bool): raise InterpreterException('Second argument to "or" is not a boolean.') return r + + def evaluate_notstatement(self, cur): + v = self.evaluate_statement(cur.val) + if isinstance(v, nodes.BoolStatement): + v = v.get_value() + if not isinstance(v, bool): + raise InterpreterException('First argument to "or" is not a boolean.') + return not v def evaluate_arraystatement(self, cur): (arguments, kwargs) = self.reduce_arguments(cur.get_args()) |