编译原理复习————xd

后面图片上传不全,可以去下载区下载word版

期末考试基本情况:满分100分,卷面成绩低于50分自动判为最终成绩不及格

选择题(每小题 2 分,共 20 分)

填空题(每空 1 分,共 20 分)

简答题(每小题 4 分,共 20 分)

计算题(3 小题,共 40 分)

复习指南:

  • 绪论

掌握教材中图1.1的概念

高级语言之间的翻译: 一般被称为转换(预处理)

高级语言可以直接翻译成机器语言,也可以翻译成汇编语言,这两个翻译过程被称为编译。 从汇编语言到机器语言的翻译被称为汇编。高级语言是与具体计算机无关的,而汇编语言 和机器语言均是与计算机有关的。将一个汇编语言程序汇编为可在另一机器上运行的机器指令,称为交叉汇编,而建立在交叉汇编基础之上的编译模式,如首先将L2 编译成A2,再将 A2 汇编为MI有时也被称为交叉编译。 上述这些翻译模式一般被认为是正向工程。在一些特定情况下需要逆向工程,如把机器语言翻译成汇编语言,或者把汇编语言翻译成 高级语言,分别称它们为反汇编和反编译。

掌握解释与编译的相同与不同之处

    • 编译器:工作效率高,即时间快、空间省;交互性与动态特性差、可移植性差。如C/C++等;
    • 解释器:工作效率低,即时间慢、空间费;交互性与动态特性好、可移植性好。如Java、Python等;

掌握教材中图1.3的概念,清楚编译器各阶段的工作任务以及输入输出

  1. 文本框: 前端

    词法分析:识别单词,至少分以下几大类:关键字(保留字)、标识符、字面量、特殊符号;
  2. 语法分析:得到语言结构并以树的形式表示;
  3. 语义分析:考察结构正确的句子是否语义合法,修改树结构;
  4. 文本框: 后端

    中间代码生成(可选):生成一种既接近目标语言,又与具体机器无关的表示,便于优化与代码生成;

(到目前为止,编译器与解释器可以一致) 

  1. 中间代码优化(可选):局部优化、循环优化、全局优化等;优化实际上是一个等价变换,变换前后的指令序列完成同样的功能,但在占用的空间上和程序执行的时间上都更省、更有效。
  2. 目标代码生成:不同形式的目标代码-汇编、可重定位、内存形式(Load-and-Go);
  3. 符号表管理:合理组织符号,便于各阶段查找、填写等;
  4. 出错处理:错误的种类-词法错、语法错、静态语义错、动态语义错。

第二章:词法分析

模式、记号、单词的概念

一个单词究竟是标识符、关键字、字面量,还是特殊符号,需要根据 一定的构词规则来产生和识别。

模式(patten):产生和识别元素的规则

记号(token): 按照某个模式(或规则)识别出的元素(一组) 

单词(lexeme):被识别出的元素自身的值(一个),也称为词值

语言、符号、符号串之间的关系

从词法分析的角度看程序设计语言,它是由记号组成的集合。

每个记号都是由若干字符按照一定规则组成的字符串

正规式的定义,字符串集合的操作,正规式的简写

定义2.2 令Σ是一个有限字母表,则Σ上的正规式及其表示的集合递归定义如下:

    1. ε是正规式,它表示集合L(ε)={ε}

    2. 若a是Σ上的字符,则a是正规式,它表示集合L(a)={a}

    3. 若正规式r和s分别表示集合L(r)和L(s),则

       (a) r|s是正规式,表示集合L(r)∪L(s),

       (b) rs是正规式,表示集合L(r)L(s),

       (c) r*是正规式,表示集合(L(r))*,

       (d)(r)是正规式,表示的集合仍然是L(r)。(加括弧改变优先级、结合性)

可用正规式描述的语言称为正规语言或正规集。   

自动机的定义与不同表示方式

模式的描述―正规式

记号的识别―有限自动机(不确定、确定)

NFA是一个五元组(5-tuple):M =(S,∑,move,s0,F)

DFA是NFA的一个特例,其中: 

  (1)没有状态具有ε状态转移(ε-transition),即状态转换图中没有标记ε的边;

  (2)对每个状态s和每个字符a,最多有一个下一状态

给出文法,构造其对应的DFA的方法,请参考第2章课后习题的解题方法

第三章:语法分析

推导与规约的概念

CFG(产生式)通过推导的方法产生语言。

将产生式左部的非终结符替换为右部的文法符号序列(展开产生式,用标记=>表示),直到得到一个终结符序列。 

正规式与文法之间的转换与等价判断方法

消除文法左递归的方法

语言、文法、产生式、句子、句型的概念以及他们之间的关系

句子就是特殊的句型,由非终结符组合而成。句子的集合就是语言。

语法错误处理方法

  1. 紧急方式恢复:抛弃若干输入,直到遇到同步记号。
  2. 短语级恢复:采用串替换的方式对剩余输入进行局部纠正(抛弃+插入)。(用分号代替逗号,删除多余分号)
  3. 出错产生式:用出错产生式捕捉错误(预测错误)。预置型的短语级恢复方式。
  4. 全局纠正:对错误输入序列x,找相近序列y,使得x变换成y所需的修改、插入、删除次数最少。 

0型、1型、2型与3型文法的定义与区别

给出文法,会求一个句子的短语、直接短语以及句柄

在这里插入图片描述

在这里插入图片描述

给出文法,会计算FIRST集与FOLLOW集

定义3.10 文法符号序列α的FIRST集合为:

FIRST(α)={a|α=*>a...aT},若α=*>ε,则ε∈FIRST(α)

定义3.11 非终结符AFOLLOW集合如下:

FOLLOW(A)= { a |S=*>...Aa...aT},若A是某句型的最右符号,则#FOLLOW(A)

α的FIRST集合就是从α开始可以导出的文法符号序列中的开头终结符。

AFOLLOW集合,就是从开始符号可以导出的所有含A的文法符号序列中紧跟A之后的终结符。

掌握构造识别文法活前缀的DFA的过程

自上而下语法分析方法,包括驱动器算法、分析表构造方法等。

自下而上语法分析方法,包括驱动器算法、分析表构造方法等。

第四章:静态语义分析

符号表的作用与结构

符号表的作用:连接声明与引用的桥梁,记住每个符号的相关信息,如作用域和绑定等,帮助编译的各个阶段正确有效地工作。

逻辑上讲:每个声明的名字在符号表中占据一行,称为一个条目,用于存放名字的相关信息。

符号表中的内容:保留字、标识符、特殊符号(包括算符、分隔符等)等等。

多个子表:不同类别的符号可以存放在不同的子表中,如变量名表、过程名表、保留字表等。

存放方式:名字+属性。

组合关键字:唯一区分一个条目的若干域。

三元式

三地址码: 一种简单而直观的中间代码表示形式,每个指令最多包含三个地址。例如,x = y + z 可以表示为 ADD x, y, z。

三元式:    (i) (op,  arg1,  arg2)

    三地址码:(i) := arg1 op arg2

四元式

(op,arg1,arg2,result)   

四元式是对三元式的改进,主要区别在于四元式引入了显式的临时变量来表示运算结果。这一改变的确使得四元式具有了更好的性质,尤其是在代码优化方面。

总的来说,四元式在代码的可读性、灵活性和优化方面都具有优势,因此在许多编译器中被广泛使用。

中缀式、后缀式

后缀式: 一种表达式的表示方法,操作符位于操作数之后,例如逆波兰表达式

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值