Bite sized posts are continuing. In this post we are implementing If keyword:
class Interpreter:
# ... previous code ...
def If(self,xs):
_, cond, trueblock, falseblock = xs
if self.eval(cond):
if isinstance(trueblock[0],list):
for x in trueblock:
self.eval(x)
else:
self.eval(trueblock)
else:
if falseblock:
if isinstance(falseblock[0],list):
for x in falseblock:
self.eval(x)
else:
self.eval(falseblock)
code=[
["If",True,
# True block, 3 statements
[["Print","answer is 42"],
["Print","that is 21*2"],
["Print","that is just an ordinary number"]],
# False block
["Print","answer is something else"]
],
["Print",["Mul","-",42]],
["If",False,
["Print","answer is 42"],
["Print","answer is something else"]
]
]
interpreter=Interpreter()
interpreter.run(code)
Output:
answer is 42
that is 21*2
that is just an ordinary number
------------------------------------------
answer is something else
Top comments (0)