Pythonからの単純なインタプリタを構築します.03 :そうであれば
5144 ワード
バイトサイズのポストが続いている.この投稿では、キーワードを指定します.
フォローして共有する
前もって感謝します.次のポストでお会いしましょう.
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)
出力:answer is 42
that is 21*2
that is just an ordinary number
------------------------------------------
answer is something else
Patreonで私を支持してくださいフォローして共有する
前もって感謝します.次のポストでお会いしましょう.
Reference
この問題について(Pythonからの単純なインタプリタを構築します.03 :そうであれば), 我々は、より多くの情報をここで見つけました https://dev.to/smadev/lets-build-a-simple-interpreter-from-scratch-in-python-pt-03-if-else-511hテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol