06-第二章一个微小编译器分析.ppt

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
06-第二章一个微小编译器分析

第二章 一个微小编译器 任课教师 王养廷 复习 ToyL解释程序的语法分析 ToyL解释程序 主要内容 ToyL编译器 解释程序 编译程序 1 ToyL编译器 编译器 编译程序 输入:ToyL源程序 输出:ToyL目标码 与解释程序的区别 目标代码 计算机可以识别的机器码 类似的中间码 1 ToyL编译器(续) ToyL目标代码 中间代码格式:三地址 中间代码举例: PLUS d1, d2,d3 MULT d1,d2,d3 STOR d1,d2 OUT d1 INP d1 (d1)与d1的区别? 1 ToyL编译器(续) 代码生成原理 解释程序解释过程,表达式计算 计算部分修改为代码生成 主要思想 使用栈完成计算过程 每一步计算生成中间码 中间变量保存计算结果 1 ToyL编译器(续) 临时变量 作用保存表达式的中间结果 举例: 表达式:x:=a*b+c*d*e 中间代码 MULT a, b, T1 MULT c, d, T2 MULT T2, e, T3 PLUS T1, T3, T4 STOR T4, x 1 ToyL编译器(续) 代码生成算法 自己阅读该算法 注意问题 程序的总体框架 何时进行词法分析 何时进行代码生成 语法分析过程 分析的结束判断 1 ToyL编译器(续) 代码生成算法 算法名称:compiler() 程序分析 程序的总体框架 主要的数据结构 何时进行词法分析 何时进行代码生成 语法分析过程 分析的结束判断 1 ToyL编译器(续) 代码生成算法 一条代码生成算法:make_code() 功能:生成一条代码 代码生成过程分析 代码生成举例 a+b PLUS a, b, T1 算法分析 实现过程 1 ToyL编译器(续) 表达式代码生成算法 算法名称:code_expr() 功能:生成表达式代码 实现过程分析 表达式举例 a+b*c 程序分析 操作数处理 操作符处理 优先级处理 1 ToyL编译器(续) 代码生成示例 赋值语句 x:=1+2*3+a*2+1 算法执行过程P28 算法执行过程 2 ToyL编译程序 ToyL编译程序 解释器的实现 目的:解释中间代码 设计方法与ToyL解释器相似 课后练习 自己实现ToyL语言的编译器或解释器 总结 内容 ToyL语言的编译程序实现过程 课后练习 列出ToyL编译程序与解释程序的主要异同 * * *

您可能关注的文档

文档评论(0)

441113422 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档