编译原理复习汇总

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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点一同理解)

相关文档
最新文档