aboutsummaryrefslogtreecommitdiff
path: root/interpreter.py
diff options
context:
space:
mode:
Diffstat (limited to 'interpreter.py')
-rw-r--r--interpreter.py10
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())