《编译原理》第1章.ppt
文本预览下载声明
* * * * * * * * * * * * * * * * * * * * * * * * * * * t1 :=id3 * 10.0 id1 := id2+t1 生成目标代码 movf id3 , r2 ; mulf #10.0 , r2 ; movf id2 , r1 ; addf r2 , r1 ; movf r1 , id1 ; * 7、表格与表格管理 编译程序在工作过程中需要保持系列的表格,用以登记源程序的各类信息和编译各阶段的进展状况。 合理的设计和使用表格是编译程序构造的一个重要问题。 与编译的头三个阶段有关的表格有: 符号表、常数表、标号表、分程序入口表、中间代码表、过程引用表、循环特征表、等价名表、公用链表、格式表 表格的结构大体如下: NAME(名字) INFORMATION(信息) * 8、出错处理 错误可发生在编译的各个阶段,错误处理也是贯穿编译全过程。 词法:拼写…… 语法:语句结构、表达式结构…… 语义:类型不匹配…… 在编译时查出的,叫Compile-time error,在运行时表现才表现出来的错误叫Run-time error。 * 分析,综合(synthesis) 源程序的分析 线性分析 层次分析 语义分析 目标程序的综合 前端,后端。 前端的工作依赖于源语言而与目标机无关, 后端工作依赖于目标机而一般不依赖源语言。 将编译系统划分为前后端,有利于移植编译系统和利用后端为同一目标机配置不同语言的编译系统。 1.3 编译阶段的组合 * 前端包括编译逻辑结构中的分析部分,即词法分析、语法分析、语义分析和中间代码生成,除此还包括符号表建造及相应分析中的错误处理以及与机器无关的优化部分。 后端包括与目标机有关的部分,即综合部分,它包括目标代码生成及生成期间对符号表的相应检索操作和错误处理操作,以及与机器相关的代码优化部分。 前端(分析)和后端(综合) 源程序 中间代码 目标代码 仅依赖源程序 仅依赖目标计算机 前端 后端 * 遍(Pass) 对源程序(或其中间形式)从头至尾扫描一次并进行有关加工处理,生成新的中间形式或最终目标程序,称为一遍。 分遍原则∶ ①目标质量高低(高则多遍) ②机器内存大小(小则多遍) ③源语言简繁(繁则多遍) ④设计人员多少(多则多遍) 遍 输入文件 输出文件 * 词法 分析 语法 分析 语义分析和 中间代码生成 符 号 表 管 理 错 误 的 诊 查 处 理 把前端组织成一遍扫描 取单词 送单词 源程序 语法构造 返回 中间代码 * 源程序 词法分析 等价程序1 语法分析 等价程序2 语义分析 等价程序3 …… 把前端组织成多遍扫描 多遍:上一遍的输出是下一遍的输入。 * 设计编译程序应首先研究的问题 要在某机器上为某种语言构造一个编译程序,必须掌 握下面的内容: 1、源语言:语法、语义。 2、目标语言:对于机器指令,搞清硬件的系统结构 和OS的功能。 3、编译方法:必须掌握一二种。 4、语言选择:编制程序。 编译程序 源程序 目标程序 * 需预处理的源程序 编译程序 汇编程序 编译程序的伙伴 * 1.4 构造编译程序的工具 1.扫描器的生成器:自动生成词法分析器,通常是基于正规式说明,生成的词法分析器的基本组织形式实际上是有限自动机。如:LEX 2.分析器的生成器 :生成语法分析器,通常是基于上下文无关文法。如:YACC 3.语法制导的翻译工具:产生一些子程序,这些子程序遍历分析树,产生中间代码。 4.自动的代码生成器: 需要一个规则集合,这些规则定义中间语言的每个操作到目标语言的翻译。这些规则必须足够详细。 5.数据流工具:它收集值是怎样从程序的一点传到其它部分。 * 编译技术在软件工程中的应用 语法制导的结构化编辑器 程序格式化工具 程序理解工具 语言程序的调试工具 语言程序测试工具 高级语言之间的转换工具 * * 第一章 小结 内容 1 什么是编译程序:从功能上说编译程序是一个翻译程序,将高级语言的程序翻译成低级语言的程序。 2 编译过程和编译程序的结构:以源程序在编译过程中的不同表示形式初步理解编译各阶段的工作。 3 不会有很多人会从事设计和编写编译程序的工作的,但编译技术会应用在很多领域。 4 有关术语:源语言,源程
显示全部