编译原理ppt.ppt_第1页
编译原理ppt.ppt_第2页
编译原理ppt.ppt_第3页
编译原理ppt.ppt_第4页
编译原理ppt.ppt_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2008年9月,湖北大学多个大学规划系,编译原理,校长:孙斌,Compiler,2008年9月,湖北大学多个规划系,总时间3360 64小时,理论基础3360 48小时练习部分3360 16小时目标具备一定的实践能力。2008年9月,湖北大学多所大学规划系,成绩:总评分=期末考试60%普通成绩40%参考资料: 1。金佛王,柳春林等编译原理(第3版)国防工业出版社2。吕英芝,张小珍,张乳头编译原理清华大学出版社3。禹春香编译原理习题与解析清华大学出版社4。刘春林,王太典型题解析与实战模拟:编译原理国防科技大学出版社,2008年9月,湖北大学多所大学规划系,第一章介绍,(主要介绍编译程序的功能、架

2、构、工作过程、组织方式等),2008年9月,湖北大学多所大学规划系,1.1翻译程序1.2,高级语言-fortran、Pascal、c语言等-特性:不依赖特定机器,可移植性,低用户要求,易于使用,易于维护等。低级语言-机器语言、符号语言、汇编语言-特性:与特定机器相关的高效果,但使用复杂、麻烦、耗时且容易出错,2008年9月,湖北大学的多个学院计算,源程序是以汇编语言或高级语言编写的程序称为源程序,目标程序是以目标语言表达的程序,翻译器将源程序转换为目标程序的程序称为翻译器。汇编程序、编译程序和各种转换程序的统称,指向各种语言的翻译程序,包括汇编程序和编译器。2008年9月,湖北大学计算,源程序

3、,翻译程序,与目标程序的关系,即源程序是翻译程序的输入,目标程序是翻译程序的输出,源程序,翻译程序,目标程序,2008年9月,湖北大学计算,汇编程序如果源程序是用高级语言编写的,则在处理后给出目标程序,上述翻译过程称为编译汇编程序和编译器,主要区别在于处理目标不同。汇编语言格式简单,往往与机器语言有一对一的对应关系。汇编程序的翻译工作比编译程序容易得多。2008年9月,湖北大学规划部、解释器运行源程序解释的程序解释方式,不是先创建然后运行目标程序,而是运行源程序端翻译。注释:功能,与编译程序的比较,2008年9月湖北大学计算,1.2编译程序的工作流程,编译程序的主要功能是将可分为词汇分析、语法

4、分析、语义分析、中间代码生成、代码优化和目标代码生成阶段的源程序转换为等效目标程序。2008年9月湖北大学计算,1 .词汇分析词汇分析是编译过程的基础,其任务是扫描源程序,根据语言的词汇规则分解和识别每个单词,并将单词翻译成相应的机器内表达。这个词是语言的基本语法单位。一般语言有5个关键字:识别码、常数、运算子和分隔符号。对于以下字符串,词法分析器为x1:=(2.0.8) * C1 1 2 3 5 6 7 8 9,2008年9月,湖北大学修理费,2。语法分析语法分析的任务是根据语言的语法规则,将单词符号字符串分解为各种语法单元(如表达式、语句等),并执行语法正确性检查。例如,在前面提到的示例x

5、 1:=(2 . 0 . 0 . 8)* C1中,可以根据语言分配语句的语法分析和标识语句(单词字符串)。首先给出语法: :=.语法分析要根据语法,识别,然后识别赋值语句,在识别过程中进行语法检查,如果有错误,则输出错误信息。2008年9月,湖北大学计算,3。语义分析语义分析的任务是对源程序的语义检查,其目的是确保标识符和常量的正常使用,将所需信息的收集存储在符号表或中间代码程序中,并妥善处理。例如,对于赋值语句x:=e,必须确保表达式e与变量x的类型匹配。如果不匹配,编译器将报告错误。2008年9月,湖北大学计算,4。中间代码生成中间代码生成阶段的任务是根据语法、语义分析、语法成分的含义来翻

6、译它,这些翻译的结果是一种中间代码形式。中间代码生成的目的:优化容易。可以轻松编译程序迁移(中间代码不依赖于目标计算机)。中间代码的格式:三元,员工,逆波兰等。2008年9月,湖北大学计算,如:x 1:=(2.0.8) * C1通过语法分析确定为赋值语句,语义分析首先要分析语义正确性,例如确保表达式和赋值编号两者的类型一致。根据赋值语句的含义生成中间代码。四元操作符左侧操作数右侧操作数的结果(1)2 . 0 . 8 T1(2)* T1 C1 t 2(3):=x1 T2其中T1和T2是为编译而引入的工作单元,2008中间代码优化操作:在中间代码中调整和更改特定操作的顺序,以生成更有效的目标代码。

7、例如,上述四元菜单中的第一个象限是计算常数表达式值,可以在编译时计算并存储在工作单元中。此值为编译时间:2.0.8 t1 * t1 C1 t2:=x1t2,2008年9月,湖北大学计算台,6。目标代码生成操作:将中间代码或优化的中间代码转换为转换为机器命令或汇编语言的相同目标代码。在中间代码中,可以轻松生成目标程序(地址命令序列)。这部分工作与机器有密切关系,必须按机器进行。在处理这部分的时候(要注意充分利用累加器),也可以进行优化。2008年9月湖北大学计算,1.3编译器结构,一般编译过程包括词汇分析、语法分析、语义分析、中间代码生成、中间代码优化和目标代码生成六个阶段。编译器相应地还包括六

8、个程序模块:词法分析器、解析器、语义分析器、中间代码生成器、中间代码优化器和目标代码生成器。2008年9月,湖北大学计算,在上述步骤6中完成了两项工作:(1)填写表和核对表;(2)错误处理;因此,编译过程必须根据形式管理和错误处理,2008年9月,湖北大学修学系,1.4编译程序的组织方式,编译程序的各个功能将编译程序分为前端和后端。前端:通常与源程序相关的编译部分称为前端。词汇分析、语法分析、语义分析、中间代码生成、代码优化-分析部分特征:与源语言相关的后端:与目标系统相关的部分称为后端。目标程序生成(与目标机器相关的优化)-集成功能:与目标机器相关,2008年9月,湖北大学计算,通过(PAS

9、S)过程:将源程序(包括源程序中间形式)从头到尾扫描一次,然后进行相关处理,生成新的源程序中间形式或目标程序,通常一次,2008年9月,湖北大学的多个大学规划,一次扫描完成了全部编译工作的一次扫描编译过程,2008年9月,湖北大学的多个学院计算,1.5编译程序的自我展示、移植和自动化,高级语言的自我编译,意味着可以用这种语言编写自己的编译过程。对于具有自编译的高级语言,可以使用自己的扩展技术配置编译。首先,为语言的核心部分创建一个小型编译程序(可以用低级语言实现),然后将其用作工具,创建可以编译更多语言组件的较大编译程序,这样扩展,然后创建完整的编译程序。2008年9月,湖北大学计算,L0,L1,ln=l,分解源程序后,以汇编语言或机器语言编写l0的编译程序,然后使用L0编写L1的编译程序,使用Li编写Li 1的编译程序(I=1,2,n-1),最后得到源语言l的编译程序。在此自行展示过程中,除了L0的编译程序是用低级语言编写的以外,L1、L2、ln=l的编译程序是用高级语言编写的。2008年9月,湖北大学计算,编译程序可以在一台机器(主机)上移植到另一台机器(目标机器)上自行编译的高级语言编译程序。CLA:在主机a上使用高级语言l编写的源语言为l的编译器。COA:在主机a上以机器语言编写的源语言为l的编译器。c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论