Pythonからの単純なインタプリタを構築します.02基本算術
8819 ワード
賢い人々によって書かれたインターネット上でこの主題について多くの素晴らしいチュートリアルがあります.多分、私のポストはそれらのような彼らまたはアカデミックなスタイルと同じくらい大きくありません、しかし、私は常にそれをできるだけ単純にしておきます.KISS
このポストでは、我々は通訳に基本的な算術演算を加えています.
このポストでは、我々は通訳に基本的な算術演算を加えています.
class Interpreter:
def __init__(self):
pass
def run(self,code):
for xs in code:
self.eval(xs)
def eval(self,xs):
if isinstance(xs,list):
return self.__getattribute__(xs[0])(xs)
return xs
def Print(self,xs):
if len(xs)==1:
print()
return
l=len(xs)-1
for i,x in enumerate(xs[1:]):
e=self.eval(x)
if i<l-1:
print(e,end="")
else:
if e!=",":
print(e)
else:
print(e,end="")
# Basic arithmetic operations,
# Notice how we call self.eval function recursively:
def Add(self,xs):
return self.eval(xs[1])+self.eval(xs[2])
def Sub(self,xs):
return self.eval(xs[1])-self.eval(xs[2])
def Mul(self,xs):
return self.eval(xs[1])*self.eval(xs[2])
def Div(self,xs):
return self.eval(xs[1])/self.eval(xs[2])
code=[
["Print","3 + 5 = ", ["Add", 3, 5] ],
["Print","1 - 2 * 3 = ", ["Sub", 1, ["Mul", 2, 3] ] ],
["Print",["Add", "Hello ", "again "],"W",["Mul","o",10],"rld!"],
]
interpreter=Interpreter()
interpreter.run(code)
出力:3 + 5 = 8
1 - 2 * 3 = -5
Hello again Woooooooooorld!
リンク242479152Reference
この問題について(Pythonからの単純なインタプリタを構築します.02基本算術), 我々は、より多くの情報をここで見つけました https://dev.to/smadev/lets-build-a-simple-interpreter-from-scratch-in-python-pt-02-basic-arithmetic-5ch4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol