编译原理超强复习纲领.docx
《编译原理超强复习纲领.docx》由会员分享,可在线阅读,更多相关《编译原理超强复习纲领.docx(34页珍藏版)》请在冰豆网上搜索。
![编译原理超强复习纲领.docx](https://file1.bdocx.com/fileroot1/2023-4/16/03099177-73b1-4b41-ae90-a55a7761b342/03099177-73b1-4b41-ae90-a55a7761b3421.gif)
编译原理超强复习纲领
编译原理超强复习纲领
部门:
xxx
时间:
xxx
整理范文,仅供参考,可下载自行编辑
编译原理课程英文词汇
alphabet字母表symbol符号string串length长度catenation连接
power方幂gather集合product乘积emptyset空集closure闭包b5E2RGbCAP
program程序logicstructure逻辑结构generating产生executing执行p1EanqFDPw
machinelanguage机器语言instruction指令function函数assembler汇编程序DXDiTa9E3d
interpreter解释程序translator翻译程序sourcelanguage源语言finite有穷的RTCrpUDGiT
sourceprogram源程序targetlanguage目标语言attribute属性possess占有5PCzVD7HxA
preprocess预处理compiler编译程序break中断Intermediatelanguage中间语言jLBHrnAILg
definition定义reconstructed重构normal正规charactersequences符号序列xHAQX74J0X
programminglanguage程序设计语言operand操作数instead替换memory内存LDAYtRyKfE
element元素high-levellanguage高级语言objectprogram目标程序Zzz6ZB2Ltk
address地址input输入output输出terminal终结符compilation编辑dvzfvkwMI1
equivalence等价nonterminal非终结符recursion递归deterministic确定的rqyn14ZNXI
nondeterministic非确定的Backus-NormalForm巴科斯范式syntax语法EmxvxOtOco
tree树expression表达式grammar文法automata自动机prefix前缀SixE2yXPq5
suffix后缀infix中缀identify识别identifier标识符analyses分析6ewMyirQFL
predigest化简symbolset符号集performed执行forecast预测state状态kavU42VRUs
formula产生式conversion变换precedence优先simple简单handle句柄y6v3ALoS89
operator算符terminalstate终态firststate初态optimizer优化程序M2ub6vSTnP
concatenation连接word单词alphabet字母表lexical词法scanner扫描器0YujCfmUCw
analyzer分析器syntaxtree语法树symboltable符号表pass趟,遍eUts8ZQVRd
regularexpression正规表达式codegenerator代码生成器backdate回溯sQsAEJkW5T
derivation推导educe推导derivationtree推导树path路径ambiguous二义性GMsIasNXkA
simplephrase简单短语context-sensitive上下文有关context-free上下文无关TIrRGchYzg
right-linear右线形phrase-structured短语结构regulargrammar文法7EqZcWLZNX
directderivation直接推导sentence句子sententialform句型rootnode根结点lzq7IGf02E
subtree子树semantic语义的terminalnode端末结点attributegrammar属性文法canonicalderivation规范推导top-down自上而下bottom-up自下而上zvpgeqJ1hk
viableprefix活前缀nondeterminatefiniteautomata非确定的有穷自动机NrpoJac3v1
编译复习:
一.专业术语英汉对译:
复习老师给出的编译原理课程英文词汇
二、概念题(单项选择题、填空题、判断正误题、名词解释题、简答题>
1.翻译程序的种类有哪些?
把汇编语言程序翻译成机器可执行的目标程序的工作是由什么来完成的?
2.编译程序生成的结果是什么?
目标程序;不一定是机器语言的程序。
3.高级语言的翻译处理只有编译一种方式?
4.在LR分析法中,分析栈中存放的状态是识别规范句型的什么状态?
5.词法分析器用于识别什么?
语法分析器接收以什么为单位的输入?
6.在语法分析处理中,FIRST集合、FOLLOW集合、SELECT集合均是什么集合?
7.若一个文法是递归的,则它所产生的语言的句子有多少?
8.按逻辑上划分,一个编译程序的组成部分有哪些?
它的工作过程由哪几部分来完成的?
各部分的任务是什么?
9.属性有哪些分类?
它们如何传递信息?
10.乔姆斯基各是什么名称?
11.无符号常数的识别和拼数工作通常是在什么阶段完成?
12.在语法分析方法中,自底向上的分析的关键是什么?
自顶向下的分析的关键是什么?
13.一个上下文无关文法G的定义是什么?
语义规则的定义是什么?
语法分析的定义是什么?
四元式的定义是什么?
语言的定义是什么?
可归前缀的定义是什么?
句型的定义是什么?
句子的定义是什么?
后缀式的定义是什么?
扫描遍的定义是什么?
活前缀的定义是什么?
句柄定义1nowfTG4KI
14.源程序经翻译后能直接运行的目标程序是什么程序?
15.正则文法产生的语言是否都可以用上下文无关文法来描述?
16.编译程序在优化阶段是否要用到源程序中的注释?
17.用高级语言书写的源程序是否都必须通过编译产生目标代码后才能投入运行?
18.解释与编译方式的区别是否是解释方式对源程序没有真正进行翻译?
19.对任何NFAM,是否都存在一个正则表达式e或正则文法与之等价?
对任何正则表达式e,是否都存在一个NFAM,满足L?
对任何正则文法G,都存在一个NFAM,满足L?
fjnFLDa5Zo
20.任何句型是否都存在一个规范推导,任何句子是否也都存在一个规范推导?
21.定义一个语言的文法是否是唯一的?
22.对任一编译程序来说,产生中间代码是不是必要的?
23.具有优化功能的编译程序的效率是否较高?
24.符号表由词法分析程序建立,是否只能由语法分析程序使用?
25.一个句型的句柄与文法某产生式的右部是什么关系?
26.数组元素的地址计算与数组的存储方式是否有关?
27.每个文法是否都能改写为LL(1>文法?
28.在中间代码优化中循环的优化包含哪些优化工作?
29.语义分析过程中的主要问题是否是候选式的选择?
30.在程序中出现的标识符仅为使用性出现的?
31.在编译中进行语法检查的目的仅是为了发现程序中各种错误?
32.递归下降法是否允许任一非终极符是直接左递归的?
33.自顶向下语法分析的思想是什么?
自底向上语法分析的思想是什么?
34.代码生成是否与具体的机器硬件无关?
35.基本块的定义是什么?
36.何谓语法制导翻译?
目标代码有哪几种形式?
37.什么是文法的二义性?
证明给定文法G[N]的二义性。
38.DFA与NFA有何区别?
39.在规范归约中,用什么来刻画可归约串?
40.四元式之间的联系是通过什么实现的?
41.过程的DISPLAY表中记录了过程的什么?
三.自动机转换题
给定一个NFAM:
<此处自动机略)
1.把此自动机转换为等价的确定自动机DFA。
2.给出与此DFA等价的正则表达式。
四.给定中缀式,写出它们等价的后缀式和四元式。
五.给出一个三地址代码序列,请用DAG进行局部优化:
<此处三地址代码序列略)
1.画出DAG图;2.假设基本块出口时只有某些变量还被引用,写出优化后的三地址代码序列。
六.给定文法G[S]:
<此处文法略)
1.文法G属于chomsky哪一型文法?
2.给定符号串,判定该符号串是不是该文法的一个句子,请证实。
3.若是句子,写出该句型的所有短语、简单短语,以及句柄。
4.构造识别该文法的活前缀的DFA。
5.判断该文法是LR<0)还是SLR<1),并构造其分析表?
6.对于给定的属性文法和输入符号串α,该翻译方案的输出是什么?
<需要给出解题过程)
一.名词解释:
1>前缀
答:
前缀——是指符号串任意首部。
2>可归前缀
答:
可归前缀——是指规范句型的一个前缀,这种前缀包含句柄且不含句柄之后的任何符号。
3>活前缀
答:
活前缀——规范句型的一个前缀,这种前缀不含句柄之后的任何符号。
或给定文法规范句型的可归前缀的任意首部。
4>简单短语
答:
简单短语——设G[Z]是给定文法,w=xuy∈V+,为该文法的句型,如果满足下面两个条件:
①Z
xUy;②U⇒u;
则称句型xuy中的子串u是句型xuy的简单短语。
5>扫描遍
答:
扫描遍——指编译程序对源程序或中间代码程序从头到尾扫描一次。
6>句柄
答:
句柄——给定句型中的最左简单短语就是句柄。
7>句型
答:
句型——设G是一个给定的文法,S是文法的开始符号,如果S
x(其中x∈V*>,则称x是文法的一个句型。
tfnNhnE6e5
*
⇒
8>句子
答:
句子——设G是一个给定的文法,S是文法的开始符号,如果Sx<其中x∈VT*),则称x是文法的一个句子。
HbmVN777sL
9>非终结符
答:
非终结符—出现在文法产生式的左部且能派生出符号或符号串的那些符号称为非终结符号。
10>终结符
答:
终结符——出现在文法产生式的右部且不能派生出符号或符号串的那些符号称为终结符号。
11)属性文法
答:
一个属性文法形式的定义为一个三元组AG,AG=其中G为一个上下文无关文法;V为属性的有穷集;E为一组语义规则。
12)语法制导翻译
答:
语法制导翻译——语法制导翻译就是在语法分析的过程中,当进行推导或归约时同步完成附加在所使用的产生式上的语义规则描述的动作,从而实现语义处理。
V7l4jRB8Hs
13)后缀式
答:
后缀式——一种把运算量<操作数)写在前面,把算符写在后面<后缀)的表示法。
14)短语
答:
短语——设G[Z]是给定文法,w=xuy∈V+,为该文法的句型,如果满足下面两个条件:
①Z
xUy;②U
u;
则称句型xuy中的子串u是句型xuy的短语。
或:
句型语法树的全部子树的叶从左到右排列起来构成的符号串均是句型的短语。
15)基本块
答:
基本块——源程序或者中间代码程序中只有一个入口和一个出口的顺序执行的代码段。
16)语义规则
答:
对于文法的每个产生式都配备了一组属性的计算规则,称为语义规则。
17)语法分析
答:
语法分析——按文法的产生式识别输入的符号串是否为一个句子的分析过程。
18)四元式
答:
四元式——是一个带有四个域的记录结构,这四个域分别称为操作符域、左运算对象域、右运算对象域及运算结果域。
83lcPA59W9
二.简答题:
1)什么是句子?
什么是语言?
*
⇒
解答:
句子——设G是一个给定的文法,S是文法的开始符号,如果Sx<其中x∈VT*),则称x是文法的一个句子。
mZkklkzaaP
语言——语言是句子的集合。
或——设G[S]是给定文法,则由文法G所定义的语言L(G>可描述为:
L(G>={x│S
x,x∈VT*}。
AVktR43bpw
2)DFA与NFA有何区别?
解答:
DFA与NFA的区别表现为两个方面:
一是NFA可以有若干个开始状态,而DFA仅只有一个开始状态。
另一方面,DFA的映象M是从K×∑到K,而NFA的映象M是从K×∑到K的子集,即映象M将产生一个状态集合<可能为空集),而不是单个状态。
ORjBnOwcEd
3)自顶向下的语法分析方法的基本思想是什么?
解答:
从文法的开始符号开始,根据给定的输入串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的句子,使之与给定的输入串匹配。
2MiJTy0dTT
4)自底向上的语法分析方法的基本思想是什么?
解答:
从给定的输入串<终结符串)开始,根据文法的规则一步一步的向上进行直接归约,试图归约到文法的开始符号。
gIiSpiue7A
5)一个上下文无关文法G包括哪四个组成部分?
解答:
一组非终结符号,一组终结符号,一个开始符号,以及一组产生式。
6)在自底向上的语法分析方法中,分析的关键是什么?
解答:
关键是寻找句柄。
7)在自顶向下的语法分析方法中,分析的关键是什么?
解答:
关键是选择候选式。
8)编译程序中语法分析器接收以什么为单位的输入?
解答:
接收以单词为单位的输入。
9)若一个文法是递归的,则它所产生的语言的句子是可枚举的吗?
解答:
它所产生的语言的句子不是可枚举的,而是无穷多个。
10)编译程序生成的目标程序是不是一定是机器语言的程序?
解答:
不一定是机器语言的程序。
11)词法分析器是用于做什么的?
解答:
词法分析器是用于识别单词的。
12)
程序代码区
静态数据区
栈区
堆区
“用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行”这种说法正确吗?
uEh0U1Yfmh
解答:
不正确。
13)把汇编语言程序翻译成机器可执行的目标程序的工作是由什么完成的?
解答:
由汇编器<汇编程序)完成的。
14>图示运行时存储空间的划分<分为哪几个区)。
解答:
一般分为静态区和动态区:
程序代码区、静态数据区、栈区和堆区
15>词法分析的主要任务是什么?
解答:
词法分析器的任务是对构成源程序的字符串从左到右逐个字符逐个字符地进行扫描,依次把它们识别为一个一个具有独立意义的单词,并确定其属性,再转换为长度统一的属性字并输出。
IAg9qLsgBX
16>常用的中间语言种类有哪几种?
解答:
常用的中间语言种类有逆波兰表示、三元式、四元式和树形表示。
17)文法G所描述的语言是什么的集合?
解答:
是由文法的开始符号推出的所有终结符串的集合。
或说是句子的集合。
18)乔姆斯基把文法分为四种类型,即0型、1型、2型、3型。
其中2型文法叫什么?
解答:
2型文法叫上下文无关文法。
19)编译程序是一种解释程序吗?
还是什么程序?
解答:
编译程序是一种翻译程序。
20)按逻辑上划分,编译程序第二步工作是什么?
解答:
编译程序第二步工作是语法分析。
21)源程序是用高级语言编写的,目标程序是机器语言程序或汇编语言程序,则其翻译程序称为什么?
解答:
其翻译程序称为编译程序。
22)编译方式与解释方式的根本区别为什么?
解答:
编译方式与解释方式的根本区别在于是否生成目标代码。
23)常见的动态存贮分配策略有哪两种?
解答:
常见的两种动态存贮分配策略是栈式动态分配策略和堆式动态分配策略。
24)常用的参数传递方式有哪三种?
解答:
常见的参数传递方式有传地址、传值和传名三种方式。
25)语法分析的任务是什么?
解答:
语法分析的任务是识别给定的终结符串是否为给定文法的句子。
26)局部优化是局限于一个什么范围内的一种优化?
解答:
是局限于一个基本块范围内的一种优化。
27)文法等价的定义是什么?
解答:
设G1和G2是给定的文法,如果有L28)在语法分析处理中,FIRST集合、FOLLOW集合、SELECT集合均是什么集合?
解答:
均是终结符集。
29)通常一个编译程序中应包括哪七个部分?
解答:
通常一个编译程序中应包含词法分析,语法分析,语义分析与中间代码生成,代码优化,目标代码生成以及表格处理和出错处理等七个部分。
WwghWvVhPE
32)如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分为哪三个阶段?
解答:
源程序的执行分为三个阶段:
编译阶段,汇编阶段和运行阶段。
33)翻译程序是这样一种程序,它能够将用什么转换成与其等价的用乙语言书写的程序?
解答:
能够将用甲语言书写的程序转换成与其等价的用乙语言书写的程序。
34)说明下面文法G[S]是二义性文法:
S→SaS|SbS|cSd|eS|f
解答:
fafbf是文法G[S]的一个句子,并且有两个不同的最右推导。
<1)S=>SaS=>SaSbS=>SaSbf=>Safbf=>fafbf
<2)S=>SbS=>Sbf=>SaSbf=>Safbf=>fafbf
因此说明此文法有二义性。
35)在属性文法中,综合属性与继承属性是如何传递信息的?
解答:
综合属性用于自下而上传递信息,继承属性用于自上而下传递信息。
36)代码优化的主要目标是什么?
解答:
代码优化的主要目标是如何提高目标程序的运行速度和如何减少目标程序运行时所需的空间。
37)写一个文法,使其语言是无符号二进制实数<不含指数)。
解答:
文法G(N>:
N→L.L|L
L→LB|B
B→0|1
三.应用题
1)消除下列文法G[A]的左递归。
E→E-T∣T
T→T/F∣F
F→(E>∣i
解答:
消除文法G[E]的左递归后得到:
E→TE′
E’→-TE′∣ε
T→FT′
T’→/FT′∣ε
F→(E>∣i
2)消除下列文法G[A]的左递归。
A→AaB∣B
B→BbC∣C
C→eD∣D
D→(A>∣d
解答:
消除文法G[A]的左递归后得到:
A→BAˊ
Aˊ→aBAˊ∣ε
B→CBˊ
Bˊ→bcBˊ∣ε
C→eD∣D
D→(A>∣d
3)给定下列自动机:
其中:
开始状态:
0
终止状态:
2
a
a
⇒
a
0
b
b
b
1
2
把此自动机转换为确定自动机DFA。
ab
⇒0012
01012
-212
12
ab
⇒00,12
12
-212
⇒
解答:
有状态矩阵如图:
asfpsfpi4k
-
⇒
0
2
a
a
b
a
1
01
b
b
b
⇒
0
2
b
a
b
b
1
极小化后:
a
从而可得DFA如图:
4)正规式构造一个等价的有限自动机。
解答:
a,b
a
a
b
⇒
0
1
2
四.设计题
<1)给定文法G[S′]及相应翻译方案为:
1.S'→S{print:
“a”}
2.S→rD{print:
“b”}
3.D→D,i{print:
“c”}
4.D→i{print:
“d”}
ooeyYZTjj1
a.按chomsky分类法,文法G属于哪一型文法?
b.符号串ri,i,i是不是该文法的一个句型,请证实。
c.若是句型,写出该句型的所有短语、简单短语,以及句柄。
d.构造识别该文法的活前缀的DFA。
e.判断该文法是LR<0)还是SLR<1),并构造其相应的语法分析表。
f.对于ri,i,i这个输入符号串,经该翻译方案翻译后的输出是什么?
解答:
a.文法G属于2型(上下文无关>文法。
b.符号串ri,i,i是该文法的一个句型。
证:
S'⇒S⇒rD⇒rD,i⇒rD,i,i⇒ri,i,i,得证。
或证:
构造语法树见图4,可知符号串ri,i,i是该文法的一个句型。
c.句型ri,i,i的短语有:
①ri,i,i;②i,i,i;③i,i;④第一个i
简单短语有:
第一个i
句柄有:
第一个i
d.求得文法G的识别全部活前缀的DFA见图3:
I1:
S'→S.
I0:
S′→.S
S→.rD
I2:
S→r.D
D→.D,i
D→.i
r
I4:
S→rD.
D→D.,i
D
,
S
I5:
D→D,.i
I3:
D→i.
i
i
I6:
D→D,i.
图3识别全部活前缀的DFA
BkeGuInkxI
e.∵在工程集I4中存在冲突工程,∴文法G不是LR<0)文法。
FOLLOW(S'>={#}
FOLLOW(S>={#}
FOLLOW(D>={,,#}
而由于{,}∩FOLLOW(S>={,}∩{#}=Φ,所以文法G是SLR<1)文法。
S'
r
S
D
D
i
,
i
D
i
,
图4句子的语法树
求得文法G的SLR<1)分析表见表1:
ACTION
GOTO
r
,
i
#
S
D
0
S2
1
1
acc
2
S3
4
3
R4
R4
4
S5
R2
5
S6
6
R3
R3
表1SLR<1)分析表
PgdO0sRlMo
f.可以先求得该句子的语法树<见图4),然后通过剪枝的方式进行归约,
最后归约到文法的开始符号,在归约的过程中同步产生输出符号串dccba。
即对于ri,i,i这个输入符号串,该翻译方案的输出是:
dccba
<2)给定文法:
<1)S→bTc
<2)S→a
<3)T→R
<4)R→R/S
<5)R→S
a>符号串ba/ac是不是该文法的一个句子,请证实。
b>若是句子,写出该句子的所有短语、简单短语和句柄。
c>为该文法设计翻译方案,使句型bR/bTc/bSc/ac经该翻译方案翻译后,输出下列串:
S
b
c
R
R
S
/
a
S
T
a
0342031320
解答:
a>符号串ba/ac是该文法的一个句子。
∵S⇒bTc⇒bRc⇒bR/Sc⇒bS/Sc⇒ba/Sc⇒ba/ac,
∴得证。
或:
给出符号串ba/ac的语法树如右图,则判定
符号串ba/ac是该文法的一个句子。
b>给出句型ba/ac的语法树如右图:
则可求得句型adbb的短语有:
ba/ac,a/a,第1个a,第2个a
简单短语有:
第1个a,第2个a
句柄有:
第1个a
c>给出句型bR/bTc/bSc/ac的语法树如右图:
S
b
c
R
R
S
/
S
a
R
R
S
R
S
b
c
T
/
/
T
b
c
T
按照归约过程,则给定文法的相应翻译方案为:
<1)S→bTc{print(“0”>}
<2)S→a{print(“1”>}
<3)T→R{print(“2”>}
<4)R→R/S{print(“3”>}
<5)R→S{print(“4”>}
<3)设有基本块:
t1:
=3*A
t2:
=2*C
t3:
=t1+t2
t4:
=t3+5
t5:
=2*C
t6:
=3*A
t7:
=t6+t5
E:
=t7-1
F:
=t4-E
a>画出D