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

相关文章:

  • 2022-12-23
  • 2021-05-01
  • 2022-12-23
  • 2022-12-23
  • 2021-11-19
  • 2023-01-10
  • 2023-04-06
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-09-29
  • 2021-08-31
  • 2021-05-26
  • 2022-12-23
  • 2021-06-25
  • 2021-11-26
相关资源
相似解决方案