当前位置:文档之家› 编译原理复习要点

编译原理复习要点

翻译程序
把某一种语言程序(称为源语言程序)等价地转换成另一种语言程序(称为目标语言程序)的程序
•编译程序(Complier)
将某种高级语言(如FORTRAN、Pascal、C等)程序翻译为对应的低级语言(如汇编语言或机器语言)程序。

要在某一台机器上为某种语言构造一个编译程序,必须掌握下述三方面的内容:
1、源语言,对被编译的源语言,要深刻理解其结构(语法)和含义(语义);
2、目标语言,假定目标语言是机器语言,那么,就必须搞清楚硬件的系统结构和操作系统
的功能;
3、编译方法,把一种语言程序翻译为另一种语言程序方法很多,但必须准确地掌握一二。

0型文法(短语文法,图灵机) :对文法G,如果它的每个产生式α→β是这样的一种结构:α∈(V N∪V T)* 且至少含有一个非终结符
β∈(V N ∪V T)*
0型文法相应的语言为0型语言,或称递归可枚举集,它的识别系统是图灵(Turing)机。

如文法G,其中V N={A,B,S} V T={0,1}
P={ S→0AB 1B→0
B→SA|01 A1→SB1 A0→S0B }
1型文法(上下文有关):它是0型文法的特例,对P中的任一产生式α→β,都|β|≥|α|,仅仅S→ε除外,但S不得出现在任何产生式的右部。

1型文法相应的语言称为1型语言或上下文有关语言,它的识别系统是线性有界自动机。

例文法G[S]:
S→aSBE S→aBE EB→BE
aB→ab bB→bb bE→be eE→ee
❑2型文法(上下文无关文法):它是1型文法的特例,对任一产生式α→β,都有α∈V N,β∈(V N∪V T)*
❑2型文法相应的语言称为2型语言或上下文无关语言。

它的识别系统是下推自动机。

❑例文法G[S]:S→AB A→BS|0 B→SA|1➢2型文法产生式的一般形式是: A→β,它表示不管A的上下文如何都可把A替换成β,因此被称为上下文无关文法。

➢3型文法(正规文法):它是2型文法的特例,任一产生式α→β的形式都为A→aB 或A→a,其中A ,B∈V N ,a∈V T
➢这种形式的3型文法也叫右线性文法。

3型文法还有一种形式,限定P中的每一个产生式形如A→Bα或A→α,称为左线性文法。

➢3型文法描述的语言称为3型语言或正规语言(也称正规集),由有穷自动机识别。

例如文法G[S]:S→0A|1B|0
A→0A|1B|0S
B→1B|1|0
词法分析的任务:从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。

因此,词法分析是编译的基础。

执行词法分析的程序称词法分析器,简称扫描器。

功能:输入源程序,输出单词符号。

单词符号是一个程序语言的基本语法符号。

程序语言的单词符号一般可分为下列五种:
关键字、标识符、常数、运算符、界符
⏹预处理子程序:剔除无用的空白、跳格、回车和换行等编辑性字符;区分标号区、连
接续行和给出句末符等
⏹正规集是字母表Σ上的符合一定规则的符号串构成的集合
正规表达式是一种适合描述符号的表示法,可由它定义正规集。

将正规表达式转换成有线自动机
DFA化简
⏹一般地,对某个a和I(i),若I a(i)落入现行∏中N个不同
子集,则应把I(i)划分成N个不相交的组,使得每个组J 的J a都落入的∏同一子集。

这样构成新的划分。

⏹重复上述过程,直到∏所含子集数不再增长。

⏹对于上述最后划分∏中的每个子集,我们选取每个子集
I中的一个状态代表其他状态,则可得到化简后的DFA M’。

⏹若I含有原来的初态,则其代表为新的初态,若I含有
原来的终态,则其代表为新的终态。

•语法分析的任务是分析一个文法的句子结构。

•语法分析器的功能:按照文法的产生式(语言的语法规则),识别输入符号串是否为一个句子(合式程序)。


•仅仅使用综合属性的属性文法称S-属性文法
窥孔优化方法是通过考察一小段目标指令(称为窥孔)并把这些指令替换为更短和更快的一级指令,从而提高目标代码的质量。

窥孔是目标程序中的一个可移动的小窗口,窥孔中的代码不一定是相邻的,窥孔优化的一个特点是:优化后新产生的结
果可能会给后面的优化提供进一步的机会。

相关主题