ch1–编译程序概论.pptVIP

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ch1–编译程序概论

张素琴,吕映芝,蒋维杜,戴桂兰编著 清华大学出版社;编译原理,何炎祥,华中理工大学,2000.10 编译原理,陈火旺等,国防工业出版社,2000.1 编译原理,蒋立源,西北工业大学,1999.9 ;第一章 编译程序概论;§1.1 什么是编译程序;源程序;编译程序(编译器);汇编程序;源程序的加工过程;源程序;与编译程序相关的程序;编译程序的发展历史;编译程序的发展历史;§1.2 编译过程和编译程序的结构;§1.2.1 编译过程概述;1、词法分析(扫描器);举例:设有下面的PASCAL程序段 begin var sum,first,count:real; sum:=first+count*10 end. 通过词法分析,识别出如下的单词符号序列: 基本字: begin,var,real,end 标识符:sum,first,count 整数:10 界符:. 逗号:, 冒号::分号:; 赋值号::= 加号:+ 乘号:* 机内码为:id1:=id2+id3*10;2、语法分析;对应的语法树为:; 程序结构通常采用递归规则表示,也就是用来描述程序结构的规则。例如,定义表达式的规则、定义语句的规则。 表达式规则: 任何标识符是表达式。 任何常数(整常数、实常数)是表达式。 若表达式1和表达式2都是表达式,那么 表达式1+表达式2 表达式1*表达式2 (表达式1) 都是表达式。; 定义语句的规则: 标识符:=表达式 是语句。 while (表达式) do 语句 和 if (表达式) then 语句 else 语句 都是语句。;3、语义分析;4、中间代码产生;4、中间代码产生;5、代码优化;6、目标代码生成;( * id3 10.0 t1 ) ( + id2 t1 id1 );§1.2.2 编译程序的结构;2、表格与表格管理程序 用途:登记源程序的各种信息和编译程序各阶段的进 展情况,如符号表。 管理:构造、查找、或更新。 3、出错处理程序 任务:发现并指出源程序中错误的性质和位置; 自动校正错误。;4、遍(pass): 对源程序或源程序的中间结果从头至尾扫描一次,并作有关的加工处理,生成新的中间结果或目标程序的处理过程。 一个阶段可以分为若干遍或 多个阶段合为一遍。 通常有一遍和多遍编译程序。; 词法分析→语法分析→语义分析与中间代码生成→优化→目标代码生成 ;§1.3 编译程序的生成;表示:如果 A 机器有用 A 机器代码实现的 L1 语言到 A 机器代码的编译程序 P1,则可用 L1 语言实现 L2 语言到 A 语言的编译程序 P2,将 P2 经过 P1 编译后可得到用 A 机器代码实现的 L2 语言到 A 机器代码的编译程序 P3;§1.4 编译技术和软件工具;§1.4 编译技术和软件工具;动态测试器 -在源程序的适当位置插入某些信息,并用测试用例记录(显示语句或函数)程序运行时的实际路径.将运行结果与期望结果进行比较分析,帮助编程人员查找问题. 高级语言之间的转换工具 程序格式化工具 程序理解工具 对程序进行分析,确定模块间的调用关系,记录程序数据的静态属性和结构属性,并画出控制流程图,帮助用户理解程序。;1.5 程序设计语言范型;1.5 程序设计语言范型;函数式语言 注重程序所表示的功能,而不是一个语句接一个语句地执行。程序的开发过程是从前面已有的函数出发构造出更复杂的函数,对初始数据集进行操作,直至最后形成的函数可以用于从初始数据计算出最终结果。 语法形式: functionn(…function2(function1(data))…) 例如: LISP; 基于规则(逻辑)的语言 检查条件,满足时则执行适当的动作。 语法形式: 条件 1-动作 1 条件 2-动作 2 …… 条件 n-动作 n 例如:PROLOG

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档