您的位置:首页 > 编程语言 > Python开发

用python演示一个简单的AST(抽象语法树)

2014-10-06 12:25 218 查看
如果对'a + 3 * b'进行解释,当中a=2,b=5

代码非常easy,就不再进行具体的解释了。

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, b:_eval(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),
(Var, 'b')))

print _eval(env, tree)


输出结果为17
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: