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

如果对'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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值