编译原理复习汇总
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
复习汇总
一、第一章概述
1.文法与自动机的等价
1)0型文法—图灵机
2)1型文法—线性有界非确定图灵机
3)2型文法—非确定下推自动机
4)3型文法—有限状态自动机
2.编译技术的应用
1)语法制导的结构化编辑器
2)程序格式化工具
3)软件测试工具
4)程序理解工具
5)高级语言的翻译工具
6)等等
3.从面向机器的语言到面向人类的语言(结合第二章第9小点理解)
1)面向机器的语言:机器指令,汇编语言
2)面向人类的语言:通用程序设计语言,数据查询语言,形式化描述
语言(正规式,产生式)等等。
4.各语言的分类(结合第二章第9小点理解)
1)过程式语言,面向对象语言:通用程序设计语言。
2)函数语言:面向特点领域的,递归特性。例如LISP语言
3)说明性,非算法式语言:LEX/YACC,SQL。
4)脚本式语言:Shell语言
5.语言之间的转换(李静PPT41)
1)高级语言之间的转换一般称为预处理或转换。
2)高级语言翻译成汇编语言或机器语言称之为编译。
3)把汇编语言翻译成机器语言称之为汇编。
4)将一个汇编语言程序汇编为可在另一台机器上运行的机器指令称之
为交叉汇编。
5)把机器语言翻译成汇编语言称之为反汇编。
6)把汇编语言翻译成高级语言称之为反编译。
6.编译器和解释器
1)编译器
●源程序的翻译和翻译后的程序的运行是两个不同的阶段。
◆编译阶段:用户输入源程序,经过编译器的处理,生成目
标程序。
◆目标程序的运行阶段:根据要求输入数据,得出结果。
2)解释器(凡是可以采用编译器的地方均可以采用解释器)
●解释器把翻译和运行结合到一起,编译一段源程序,紧接着就
执行它。这种方式称为解释。
7.解释器的优点(对比与编译器)
1)具有较好的动态特性。
2)具有较好的移植特性。
8.解释器的缺点(对比于编译器)
1)相比于编译器需花费大量的时间。
2)占用更多的内存空间。
9.编译器的工作阶段(结合第二章6小点红色部分理解)
1)源程序->词法分析器->语法分析器->语义分析器->中间代码生成器->
代码优化器->目标代码生成器->目标代码
2)工作过程中的每个阶段均采用了符号表管理器,出错处理器。10.编译器各阶段的工作过程(结合第二章6小点红色部分理解)
1)源程序通过词法分析器翻译成记号流,记号流通过语法分析产生语
法树,然后根据语法树来进行适当的语义处理,语义分析产生符号
表和中间代码。
2)符号表的格式:标识符,类型,分配的地址。
3)中间代码的格式:操作符,左操作数,右操作数,结果。
4)中间代码的优化:传值的代码可以省略。
5)目标代码生成:生成汇编指令,格式为:操作数源码目标。
●二元运算:OP source target target := source OP target
●一元运算:MOVE source target tatget = source。
11.各阶段工作归纳
1)词法分析:根据词法规则识别出源程序的各个记号(token),每个
记号代表一类单词(lexeme),记号的分类如下:(第二章第4小
点)
●关键字:如var、begin、end 等,不做他用,称为保留字。
●标识符:如x、y、z、sort等,在源程序中被用作变量名,过程
名,类型名和标号等所有对象的名称。(用记号代替)
●字面量:如60、Xidian、University等,一般用于表示常数或字
符串常量。(保留原样)
●特殊符号:=、*、+、-、;等运算符,分隔符(保留原样)。
●例:var x,y,z:real ; x:= y+z*60; var
id1,id2,id3:real;id1:=id2+id3*60;
2)语法分析:得到语言结构并以树来表示。
3)语义分析:考察结构正确的句子是否语义合法。
4)中间代码生成。
5)中间代码优化。
6)目标代码生成。
7)符号表管理:合理组织符号,便于各阶段查找,填写等。
8)出错处理:错误的种类—词法错,语法错,静态语义错,动态语义
错。
12.编译器的分析/综合模式。(PPT53)
1)前端(分析):语言结构的分析。(语法和语义分析)
2)后端(综合):语言意义的分析与处理。(代码的生成、优化)
3)中间代码:前段与后端的分解。
二、第二章词法分析
1.词法分析:词法分析是编译过程中将字符流转换成为符号流的一个工
作阶段,是编译的第一步操作,其后续工作是语法分析(配合第一章第11小点理解)。
1)词法分析输入源代码。
2)词法分析输出记号流。
3)词法分析需要识别此发错无,即非法的符号、单词。但不识别语法
错误。
2.词法分析器的作用
1)源程序由单词组成,单词是最小的语义单位。
2)词法分析器的功能:
●扫描源程序字符流。
●按照源程序的语法规则识别出各类单词符号。
●产生用于语法分析的记号序列。
●填写符号表。
3)辅助功能
●跳过源程序的注释和空白。
●把错误信息和源程序联系起来(错误定位)。
●宏预处理。
3.模式(规则)(patten):将产生和识别单词的规则称为模式(规则)。
4.记号(token):按照某个模式识别出来的元素称为记号。(第一章和本
章第11小点一同理解)
1)记号= 记号的类别+ 记号的属性。(用于识别)
2)记号的类别:记号的类别可以用整形编码来表示。
3)记号的属性:根据记号的类别不同,记号的属性可以用不同的表示
方法,如relation(81)的属性值为一个有限的可枚举的集合,可以用
每个属性值在集合中的位置来表示它。(课本P16)。
5.单词(lexeme):被识别出元素自身的价值。(结合本章第9点理解)
6.词法分析器的作用和工作方式:
1)特征:编译器中唯一与源程序打交道的部分。
2)任务:(与第二章第2点一同理解)