Implemented interpreter, almost fully documented

This commit is contained in:
hellerve
2015-07-08 16:38:49 +02:00
parent a96a5fe1f7
commit 9d4406907a
6 changed files with 137 additions and 22 deletions

View File

@@ -142,7 +142,7 @@ class BinArithmeticExp(ArithmeticExp):
left_value = self.left.eval(env)
right_value = self.right.eval(env)
try:
return operators[self.op](left_value, right_value)
return self.operators[self.op](left_value, right_value)
except KeyError:
raise RuntimeError('unknown operator: ' + self.op)
@@ -150,10 +150,10 @@ class RelationExp(BooleanExp):
"""The AST node for relational boolean expressions."""
operators = {
'<': operator.gt,
'<=': operator.ge,
'>': operator.lt,
'>=': operator.le,
'<': operator.lt,
'<=': operator.le,
'>': operator.gt,
'>=': operator.ge,
'=': operator.eq,
'!=': operator.ne,
}
@@ -191,7 +191,7 @@ class RelationExp(BooleanExp):
left_value = self.left.eval(env)
right_value = self.right.eval(env)
try:
return operators[self.op](left_value, right_value)
return self.operators[self.op](left_value, right_value)
except KeyError:
raise RuntimeError('unknown operator: ' + self.op)