浅析AST抽象语法树及Python代码实现
|
在计算机科学中,抽象语法树(abstract syntax tree或者缩写为AST),或者语法树(syntax tree),是源代码的抽象语法结构的树状表现形式,这里特指编程语言的源代码。树上的每个节点都表示源代码中的一种结构。之所以说语法是“抽象”的,是因为这里的语法并不会表示出真实语法中出现的每个细节。比如,嵌套括号被隐含在树的结构中,并没有以节点的形式呈现;而类似于if-condition-then这样的条件跳转语句,可以使用带有两个分支的节点来表示。 Python实现
Num = lambda env,n: n
Var = lambda env,x: env[x]
Add = lambda env,a,b:_eval(env,a) + _eval(env,b)
Mul = lambda env,a) * _eval(env,b)
_eval = lambda env,expr:expr[0](env,*expr[1:])
env = {'a':2,'b':5}
tree = (Add,(Var,'a'),(Mul,(Num,3),'b')))
print _eval(env,tree)
输出结果为17 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
