假设对‘a + 3 * b‘进行解释,其中a=2,b=5

代码很简单,就不再进行详细的解释了。

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 抽象语法树_用python演示一个简单的AST(抽象语法树)相关推荐

  1. python新手练习项目_适合Python 新手的5大练手项目,你练了么?

    已经学习了一段时间的Python,如果你看过之前W3Cschool的文章,就知道是时候该进去[项目]阶段了. 但是在练手项目的选择上,还存在疑问?不知道要从哪种项目先下手? W3Cschool首先有两 ...

  2. python ftp服务器限速_用 Python 快速实现 HTTP 和 FTP 服务器

    用 Python 快速实现 HTTP 服务器 有时你需临时搭建一个简单的 Web Server,但你又不想去安装 Apache.Nginx 等这类功能较复杂的 HTTP 服务程序时.这时可以使用 Py ...

  3. python七彩同心圆_用pygame做一个简单的python小游戏---七彩同心圆

    用pygame做一个简单的python小游戏---七彩同心圆 用pygame做一个简单的python小游戏-七彩同心圆 这个小游戏原是我同学python课的课后作业,并不是很难,就简单实现了一下,顺便 ...

  4. python照片转卡通_用Python做一个网站,照片生成漫画头像,有这个网站就够了。...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:Python进阶者 ( 想要学习Python?Pyth ...

  5. 用Tkinter打造自己的Python IDE开发工具(1)建立一个简单的代码编辑器

    用Tkinter打造自己的Python IDE开发工具(1)建立一个简单的代码编辑器 很多Python初学者,安装完Python后,已经包含了IDLE代码开发和调试系统.都会再安装各种Python开发 ...

  6. python虚拟机 基于寄存器_虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩...

    转载:http://rednaxelafx.iteye.com/blog/492667 大前天收到一条PM: 引用 你好,很冒昧的向你发短消 息,我现在在看JS引擎,能过看博客发现你对js engin ...

  7. python大牛 关东升_《Python从小白到大牛》第4章 Python语法基础

    本章主要为大家介绍Python的一些语法,其中包括标识符.关键字.常量.变量.表达式.语句.注释.模块和包等内容. 标识符和关键字 任何一种计算机语言都离不开标识符和关键字,因此下面将详细介绍Pyth ...

  8. 用python制作3d动画_-用 Python 做科学计算--Visual-制作3D演示动画

    # Visual-制作3D演示动画 [Visual](http://vpython.org) 是Python的一个简单易用的3D图形库,使用它可以快速创建3D场景.动画.和TVTK相比它更加适合于创建 ...

  9. python代码颜色搭配_修改Python IDLE代码配色及语法高亮主题

    文章1 原出处:http://wangye.org/blog/archives/634/ 文章2 原出处:http://huacnlee.com/blog/share-someting-python- ...

最新文章

  1. 别在 Java 代码里乱打日志了,这才是正确的日志打印姿势!
  2. 爱尔兰 APC 微生物组研究所—菌群研究的全球领航者之一
  3. windows一个目录下最大文件数目
  4. SpringBoot学习(二)探究Springboot启动机制
  5. P1742 最小圆覆盖
  6. Python Pytest装饰器@pytest.mark.parametrize用例数据驱动(三)
  7. designer pyqt5 界面切换_PyQt5快速上手基础篇3-设置窗口标题和图标
  8. 整理各个平台的访问入口及快速推文的方法
  9. 关于Maven本地仓库中存在依赖时,重新下载was cached in the local repository错误
  10. 学python需要什么基础-学Python需要什么基础知识?零基础可以学Python吗?
  11. RHEL/Centos下VSFTPD服务器搭建
  12. java对接微信公众号
  13. 计算机二级显示用户不存在,计算机二级考试最常见的错误集合
  14. [转载]美国夫妻生活如何在钱上更亲密
  15. Ubuntu虚拟机全屏问题
  16. 商城系统选择技巧归纳
  17. 晚上改吃水果+牛奶(防止营养不够)
  18. 【机器学习百科全书目录】PRML ESL MLAPP 西瓜书 花书 RLAI 统计学习方法 蒲公英书
  19. 如何写新产品开发报告书
  20. 拖延症患者的自我反省

热门文章

  1. 注意!这些行为均涉嫌科研不端!
  2. 中国可燃冰储量世界第一,2030年能实现商业性开发吗?多难开采?
  3. 2021软科世界大学学术排名发布!
  4. 什么人都可以媚俗,但大学校长不能
  5. 美国已批准马斯克的SpaceX发射1.2万颗卫星 以打造一个天基互联网
  6. 他们也曾在数学“苦海”里痛不欲生
  7. 从北大到耶鲁博士,一个山城走出女孩的留学故事
  8. 栈、队列 java代码实现
  9. 【转载保存】lucene3.0可以对docId、docField、queryParser设置Boost值来影响排序结果
  10. 【转载】Jsoup设置代理ip访问