资源描述:
《编译原理复习资料整理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第一章1编译原理的工作过程(结合p6图1.3)编译程序的主要功能是将源程序翻译成等价的目标程序,这个翻译过程(也称编译过程)十分复杂,所以它一般首先分析源程序,然后综合成目标程序。编译程序在分析阶段检查源程序的正确性后,再将其分解为若干基本成分。这其中的工作也包括建立一些表格,改造源程序为中间语言程序。2编译方式和解释方式的比较(结合p2图1.1和p3图1.2)编译方式中源程序的编译和目标程序的运行时分成两个阶段完成的。经编译所得的目标程序,计算机暂时还不能直接执行,必须由连接装配程序将目标程序
2、和编译程序以及运行子程序连接成一个可执行程序,这个可执行程序才可直接被计算机执行。解释方式并不先产生目标程序然后再执行之,而是对源程序边翻译边执行。解释程序的主要优点是便于对源程序进行调试和修改,但其加工处理过程速度较慢。3编译的特性.模块性静态解释和动态解释机器无关性语言标准化程序语言特征第二章1文法的形式定义G=(VN,VT,S,P)VN:非空有限的非终结符号集(变量表)VT:非空有限终结符号集(符号表)S:开始识别符号P:产生式的集合觉得抽象的话,请看21页例题2.12文法的分类(看产生式
3、P)0型文法(PSG:PhraseStructureGrammar---无限制的文法)α->β,α∈(VN∪VT)+,β∈(VN∪VT)*,即产生式α至少有一个非终结符即可。1型文法(CSG:ContextSensitiveGrammar---上下文有关文法)α->β,α=γ1Aγ2,β=γ1Bγ2,γ1,γ2∈(VN∪VT)*,A∈VN,B∈(VN∪VT)+,1≤
4、α
5、≤
6、β
7、意思就是说当B的两边是γ1,γ2串,时才将B规约为γ1Aγ2。2型文法(CFG:ContextFreeGrammar-
8、--上下文无关文法)A->ð,A∈VN,ð∈(VN∪VT)+,意思就是说把ð规约成A不需要管ð的两边是什么。3型文法(RG:RegularGrammar---右线性文法和正规文法)右线性文法:A→α或者A→αB,其中A,B∈VN,α∈VT*,正规文法:A→α或者A→αB,其中A,B∈VN,α∈VT,即正规文法只能出现单个的终结符号,而右线性文法则可能出现若干个终结符号组成的串拓展左线性文法:A→α或者A→Bα,其中A,B∈VN,α∈VT*,他们的关系如下:典型题型:构造文法生成下列语言(默认是C
9、FG){anb2m-1
10、n,m≥1}由于符号串中a,b中的个数没有直接关系,所以将句子分成两步分:an和b2m-1,分别构造,所以得文法:(答题时只写出下面的文法即可,下同)G[S]:S→ABA→a
11、aAB→b
12、bbB{anbn
13、n≥1}G[S]:S→aSb
14、ab能被5整除的整数的集合除符号位外可以分为首位不能为0,末尾只能是0或者5,中间是0到9的数三个部分文法为:G[S]:S→A
15、-A
16、0A→1B
17、2B
18、3B
19、4B
20、5B
21、6B
22、7B
23、8B
24、9BB→0B
25、1B
26、2B
27、3B
28、4B
29、5B
30、6B
31、7
32、B
33、8B
34、9B
35、CC→0
36、5解此类题目答案不唯一,只要能正确表达就行,不要想用一个文法就可以表示语言了,多举几个具体的例子找规律,做出题目后最好还要用具体的例子带进去检查。3句型,句子和语言短语和句柄的概念(短语和句柄为第6章的内容)句型:任何能由开始符号推出的符号串。句子:只含有终结符的句型。语言:文法所有句子的集合。短语:设αβδ是文法G[S]中的一个句型,如果有S=*>αAδ且A=+>β,则称β是句型αβδ相对于非终结符A的短语。直接短语:特别的如有A=>β,则称β是句型αβδ相对于规则A
37、→β的直接短语(简单短语)。句柄:一个句型的最左直接短语称为该句型的句柄。句柄就是“可归约串”。4构造句型的语法树,书上P29页写得比较详细,还有具体的例子,再此不在赘述5最左、最右推导和规范推导最左推导:在直接推导xUy=>xuy直接推导中,x∈VT*,U∈VN,即U是符号串xUy中最左非终结符,则此直接推导为最左直接推导。若一个推导的每一步直接推导都最左直接推导,那么此推导为最左推导。最右推导=规范推导:在直接推导xUy=>xuy直接推导中,y∈VT*,U∈VN,即U是符号串xUy中最右非终
38、结符,则此直接推导为最右直接推导。若一个推导的每一步直接推导都最右直接推导,那么此推导为最右推导。典型考题设文法G=({N,D},{0,1,2,3,4,5,6,7},P,N)其中P={N→ND
39、D,D→0
40、1
41、2
42、3
43、4
44、5
45、6
46、7},写出3274的最左推导和最右推导最左推导如下:N=>ND=>NDD=>NDDD=>3DDD=>32DD=>327D=>3274最右推导如下:N=>ND=>N4=>ND4=>N74=>ND74=>N274=>D274=>32746二义性句子的二义性:一个文法,如果它