码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-10-06 15:02:30      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:ar   div   art   c   on   代码   r   ad   python   

如果对‘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

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

标签:ar   div   art   c   on   代码   r   ad   python   

原文地址:http://www.cnblogs.com/zfyouxi/p/4008107.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!