编译原理2010a
编译原理试题及答案

编译原理试题及答案一、选择题1. 编译器的主要功能是什么?A. 程序设计B. 程序翻译C. 程序调试D. 数据处理答案:B2. 下列哪一项不是编译器的前端处理过程?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D3. 在编译原理中,词法分析器的主要作用是什么?A. 识别程序中的关键字和标识符B. 将源代码转换为中间代码C. 检查程序的语法结构D. 确定程序的运行环境答案:A4. 语法分析通常采用哪种方法?A. 自顶向下分析B. 自底向上分析C. 正则表达式匹配D. 直接解释执行答案:B5. 语义分析的主要任务是什么?A. 检查程序的语法结构B. 检查程序的类型安全C. 识别程序中的变量和常量D. 将源代码转换为机器代码答案:B二、简答题1. 简述编译器的工作原理。
答案:编译器的工作原理主要包括以下几个步骤:词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成。
词法分析器将源代码分解成一系列的词素;语法分析器根据语法规则检查词素序列是否合法;语义分析器检查程序的语义正确性;中间代码生成器将源代码转换为中间代码;代码优化器对中间代码进行优化;最后,目标代码生成器将优化后的中间代码转换为目标机器代码。
2. 什么是词法分析器,它在编译过程中的作用是什么?答案:词法分析器是编译器前端的一个组成部分,负责将源代码分解成一个个的词素(tokens),如关键字、标识符、常量、运算符等。
它在编译过程中的作用是为语法分析器提供输入,是编译过程的基础。
三、论述题1. 论述编译器中的代码优化技术及其重要性。
答案:代码优化是编译过程中的一个重要环节,它旨在提高程序的执行效率,减少资源消耗。
常见的代码优化技术包括:常量折叠、死代码消除、公共子表达式消除、循环不变代码外提、数组边界检查消除等。
代码优化的重要性在于,它可以显著提高程序的运行速度和性能,同时降低程序对内存和处理器资源的需求。
四、计算题1. 给定一个简单的四则运算表达式,请写出其对应的逆波兰表达式。
2009-2010编译原理A卷及答案汇总

南昌航空大学2009 —2010 学年第二学期期末考试课程名称:编译原理 闭卷 A 卷 120 分钟一、 填空题(每空2分,共24分)1、一个上下文无关文法G 包括四个组成部分:一组终结符号,一组非终结符号,一个______________,以及一组产生式。
(2分)2、 自下而上分析方法的基本思想是:从输入符号串开始,利用文法规则逐步进行归约,直至归约到文法的______________。
(2分)3、自顶向下的语法分析方法的基本思想是:从文法的_____ _开始,根据给定的输入串并按照文法的产生式一步一步的向下进行_____ _,试图推导出文法的___ ___,使之与给定的输入串______。
(8分)4、S -属性文法中的每个文法符号,只含有______________ 属性。
(2分)5、对于文法的每个产生式都配备了一组属性的计算规则,称为 _____ 。
(2分)6、通过一便扫描来产生布尔表达式的代码主要问题在于,当生成某些转移语句时可能不知道该语句将要转移到的标号究竟是什么。
为了解决这个问题可以采用______________技术。
(2分)7、a*(b-c)的后缀式为______________。
(2分)8、假定G 是一个文法,S 是它的开始符号。
如果S α*⇒,则称α是一个______________。
仅含______________的句型是一个句子。
(2分)二、选择题(每题2分,共20分)1、_____是两类程序语言处理程序。
A.高级语言程序和低级语言程序B.解释程序和编译程序C.编译程序和操作系统D.系统程序和应用程序2、一个句型中的最左_____称为该句型的句柄。
A.短语B.简单短语C.素短语D.终结符号3.若一个文法是递归的,则它所产生的语言的句子_____。
A.是无穷多个B.是有穷多个 C.是可枚举的D.个数是常量4、在自底向上的语法分析方法中,分析的关键是_____。
A.寻找句柄B.寻找句型C.消除递归D.选择候选式5、若a为终结符,则A->α·aβ为_____项目。
大学课程《编译原理》考试试卷A卷及答案

《编译原理》考试试卷A适用专业:考试日期:闭卷所需时间:120分钟总分:100分一、填空题:(每空1分,共10分)1.解释系统与编译系统的区别在于和。
2.在编译过程中始终伴随着管理和出错处理过程。
3.语法分析的方法为和两大类。
4.LL(1)文法中不能有和。
5.词法分析器中单词的描述工具是 ,单词的识别工具。
6.算符优先语法分析,在符号栈栈顶出现时,进行规约处理。
二、单选题(每小题2分,共10分)1.词法分析器的加工对象是()A.中间代码B.单词C.源程序D.元程序2.同正则表达式a*b*等价的文法是()A. G1:S→aS|bS|εB. G2: S→aSb|εC. G3:S→aS|Sb|εD. G4: S→abS|ε3.文法G[A]:A→bH H→BA B→Ab H→a 不是()A. 2型文法B. 3型文法C. 0型文法D.1型文法4.算符优先分析每次都是对()进行规约。
A.短语B.最左素短语C.素短语D.句柄5.( )不是DFA的成分。
A.有穷字母表B. 初始状态集合C.终止状态集合D.有限状态集合三、问答题(第1,5小题每题15分,其余每小题10分,共80分)1. (15分)解释下列术语:(1)编译程序(2)句柄(3)上下文无关文法2.编译程序主要有哪些构成成分?(10分)3.给出描述语言L={a n b2n c m|n,m≥0}的cfg。
(10分)4.(10分)将下图中的DFA M最小化。
5. (15分)判断文法G[S]:S→aHH→aMd|dM→Ab|εA→aM|e是否为LL(1)文法?给出判断过程。
6. (10分)改写文法G[E]:E → E+T|TT →T*F|FF →(E)| a为无左递归文法。
7. (10分)已知文法G[S]为:S→VV→T|ViTT→F|T+FF→)V*|(请指出句型(+(i( 规范推到,并指出句型F+Fi( 中的短语、句柄和素短语。
《编译原理》考试试卷A参考答案适用专业:考试日期:闭卷所需时间:120分钟总分:100分一、填空题:(每空1分,共10分)1. 边翻译边执行和不生成目标代码。
中山大学软件学院10级编译原理期末试卷A

(2)
【参考答案】
将图 4-2 的 DFA 进行最小化优化,优化后的 DFA 如图 4-3 所示,转换状态如表 4-2 所示。
Page 2 of 9
DFA 1,2,4
3
图 4-3 表 4-2
优化后 DFA 状态 A B
【评分标准】 本小题 8 分。 如图 4-3 所示:优化后的 DFA 正确,但状态数多于 2 或转换关系不完全正确,得 5 分;
【评分标准】 答对此部分可得 2 分。
G’的 LR(0)项目集族及识别活前缀的 DFA 如下图 7-1 所示:
图 8-1 在 I0 中:A→.aAd 和 A→.aAb 为移进项目,A→.为归约项目,存在移进-归约冲突,因 此所给文法不是 LR(0)文法。 在 I0 与 I2 中:Follow(A)∩{a}= {d, b, $}∩{a}=φ,所以在 I0、I2 中的移进-归约冲突可 以由 Follow 集解决,所以 G 是 SLR(1)文法。
【评分标准】 答对此部分可得 6 分。如果答案不正确,但能正确地给出分析过程,可酌情给分。
(2)
【参考答案】
构造的 SLR(1)分析表如下表 8-1 所示: 表 8-1
State
Action
a
d
b
0
S2
r3
r3
12Biblioteka S2r3r3
3
S4
S5
4
r1
r1
5
r2
r2
Goto
$
A
r3
1
Acc
r3
3
r1 r2
对输入串 ab#的分析过程如下表 7-2 所示:
FIRST(F’)={ ,ε}
【评分标准】 答对此部分可得 5 分。
编译原理试卷A(含答案)

(6) 如要依据文法G构造一个不带回溯的自上而下的语法分析器,文法G不能含有左递归,但允许文法G的部分产生式的右部候选式有公共左因子。(F)
(7) a*(b+c)的后缀表达式为abc+*。(T)
1
1
2
a
aa
bb
未简化的DFA
最小化:
分为:终态集{0,1} 非终态集{2}
{0,1}a={1}{0,1}b= {2}
所以:{0,1}= {0} {2} = {1}
a
b
a
(11分)
(3)考虑以下表结构文法G[S]:
S→a|∧|(T)
T→T,S|S
(1)改写G[S],消去G[S]的左递归。
(2)改写后的文法是否LL(1)文法?给出它的预测分析表。(12分)
a
∧
(
)
,
#
S
S→a
S→∧
S→(T)
T
T→ST’
T→ST’
T→ST’
T’
T’பைடு நூலகம்e
T’→,ST’
(4)考虑以下表结构文法G[S]:
S→a|∧|(T)
T→T,S|S
(1)给出句子(a,(a,a))的最右推导和句柄。
解:S→(T)→(T,(T))→(T,(T,S))→(T,(T,a))→(T,(S,a))
S → ·(T) ( S → a·aS → (·T)
T → ·ST’
S → ·a
S → ·∧
S → ·(T)
T
I5: ) I6:
S → (T·) S → (T)·(
编译原理(2010)

严禁用于商业用途
十.1. 消减强度 a := ( x + y ) * i 可改为:a := 0; a := a + x + y b := ( x – y ) * i 可改为:b := 0; b := b + x – y S := S + a + 2 * b 可改为:S := S + a + b + b 2. 消除归纳变量 i ≤ 100 可改为:a ≤ ( x + y ) * 100 3. 循环体内代码外提 重复计算了 x + y, x – y 所以设 t1 = x + y; t2 = x – y 并外提出循环体
else if(sym == ‘e’) {GetSymbol(); M1();} else Error(); } void M1() { if(sym == ‘a’) {GetSymbol(); M2();} else return; } void M2() { if(sym == ‘b’) {GetSymbol(); M1();} else if(sym == ‘c’) {GetSymbol(); M();} else Error(); } void main() { GetSymbol(); M(); }
a b b 1 c a d
c
E 3
c
b D 6
九.1. 消除左递归 M ::= Ma(b|c) | dM | e 改为: M ::= (dM|e)M’ M’ ::= a(b|c)M’|ε 即: M ::= dMM’ | eM’ M’ ::= aM’’ |ε M’’ ::= bM’ | cM
2. 写出递归下降子程序 void GetSymbol(){…} void Error(){…} void M() { if(sym == ‘d’) { GetSymbol(); M(); M1();}
编译原理课后习题解答

〈句子〉=>〈主语〉〈谓语〉
=>〈主语〉〈动词〉〈直接宾语〉
=>〈主语〉〈动词〉〈冠词〉〈名词〉
=>〈主语〉〈动词〉〈冠词〉peanut
=>〈主语〉〈动词〉the peanut
=>〈主语〉ate the peanut
=>〈冠词〉〈形容词〉〈名词〉ate the peanut
=>〈冠词〉〈形容词〉 elephant ate the peanut
=>〈冠词〉big elephant ate the peanut
=> the big elephant ate the peanut
(B) 〈句子〉=>〈主语〉〈谓语〉
=>〈主语〉〈动词〉〈直接宾语〉
=>〈冠词〉〈形容词〉〈名词〉〈动词〉〈直接宾语〉
=>〈冠词〉〈形容词〉〈名词〉〈动词〉〈冠词〉〈名词〉
〈偶数字〉::=0 | 2 | 4 | 6 | 8
3. 写一文法,使其语言是偶整数的集合,但不允许有以 0 开头的偶整数。
解:G[〈偶整数〉]:
〈偶整数〉::= 〈符号〉〈单偶数〉|〈符号〉〈首数字〉〈数字串〉〈尾偶数〉
〈符号〉::= + | — |ε
〈单偶数〉::=2 | 4 | 6 | 8
〈尾偶数〉::= 0 |〈单偶数〉
S::= a(B)a B::= bB |b|ε ( 2 ) 文法[G〈S〉]: S ::= (A)(B) A::= aA|a B::= bB|b 6. 文法 G3[〈表达式〉]: 〈表达式〉::=〈项〉|〈表达式〉+〈项〉|〈表达式〉—〈项〉 〈项〉::=〈因子〉|〈项〉*〈因子〉|〈项〉/〈因子〉 〈因子〉::=(〈表达式〉)| i 试给出下列符号串的推导: i, (i), i*i, i*i+i, i*(i+i) 解:(1)〈表达式〉=>〈项〉 =>〈因子〉
西北农林科技大学本科课程考试试题(卷) 2010—2011学年第二学期《编译原理》课程 A 卷答案

西北农林科技大学本科课程考试 参考答案与评分标准考试课程:编译原理 学年学期:2010-2011-2 试卷类型:A 卷 考试时间:2011-06-12 专业年级:计算机08级一、 填空题(每空2分,共20分) 1 ab+@(或-)cd+*ab+c-+ (1)(+ a b) (2)(- (1)_) (3)(+ c d) (4)(*(2)(3)) (5)(- (1) c)(6)(+(4)(5)),不写标号或错一个式子均扣0.5分,扣完为止 t1=a+b t1=-t1 t2=c+d t3=t1*t2 t2=t1-c t1=t1+t2t1,t2,t3为临时变量,其他临时变量也可,错一个式子均扣0.5分,扣完为止 2 33 线性查找(或 线性表) 杂凑技术4 静态5 语义分析与中间代码产生(只给出一个方面的答案则扣1分) 出错处理6 最左推导二、 单选题(每小题1分,共10分) ADBBC (DC 每个答案0.5分)DACD 三、 判断题(每题1分,共10分) √××√×√√×√√四、 简答题(共22分)1 错一个扣0.5分,扣完为止,共8分S=>aS=>aaSbS=>aaSb=>aab S=>aSbS=>aSb=>aaSb=>aab 2错一步扣0.5分,扣完为止,共8分 3错一个扣0.5分,扣完为止,共6分S a S a S a S ε ε a S a S S ε εS五、 解答题(共38分)1 (1)错一个集合扣1分,共4分FIRST(S)={a,b,(} FOLLOW(S)={a,b, )}FIRST(A)={d,a,b,(} FOLLOW(A)={d,a,b, )}(2)错一个扣0.5分,多写一个也扣0.5分,扣完为止,共6分对于该文法中任何一对终结符最多只存在一种关系,故该文法为算符优先文法。
没有说明理由但判断正确扣1分,共2分 (3)短语:S ,SdS, SdSdS, (SdSdS)句柄:S 最左素短语:SdS 错一个扣1分,共6分3(1)错一个扣1分,共4分A →aA ’ A ’→ABc|εB →dB ’ B ’→bB’|ε(2)错一个集合扣0.5分,共4分first(A)={a}follow(A)={#,d}first(A ’)={a,ε} follow(A ’)={#,d} first(B)={d} follow(B)={c} first(B ’)={b,ε} follow(B ’)={c}(3)错一个集合扣0.5分,多写一个也扣0.5分,扣完为止,共4分。
10级编译原理A卷参考答案.doc

参考答案一、填空题(每空1分,共10分)1编译程序(编译器);解释程序(解释器)2 e, h, he, hel, hell3回退4正规文法(3型文法)5自顶向下;自底向上6左递归7归约.归约,移进.归约二、选择题(每小题2分,共20分)1 A 2D 3B 4B 5B6D 7C 8B 9A 10 C三、应用题(共46分)l(l)E=>E + TnT + TnF + Tni + Tni + T*Fni + F*Fni + i*Fni + i*(E) n i + i * (E — T) n i + i * (T — T) n i + i * (F — T) n i + i * (i — T) n i + i * (i — F) n i + i * (i — i)(2)i + i * (i — i) u F + i * (i — i) u T + i * (i — i) u E + i * (i — i) u E + F * (i — i)uE + T*(i - i)uE + T*(F - i)uE + T*(T - i)uE + T*(E - i)uE + T*(E - F) <=E + T*(E —T)uE + T*(E)<=E + T*F<=E + T<=E(3)(4)短语:il + i2 * (13 - 14), ib 12 * (13 - 14), 12, (13 - iQ, 13 - U, k, U直接短语:ii, ^2,13, U句柄:ii素短语:ii, i2,13,142对句子auab有两个不同的最左推导R n RuR n auR n auRR n auaR n auabR n RR n RuRR n aoRR n auaR n aoab所以该文法是二义性文法3 (ID, “int"), (ID, “main"), (LR_BRAC, _), (RR_BRAC, _)(LC.BRAC, _),(ID, “int”),(ID, “a”),(SEMIC, _),(ID, “a”),(ASSIGN, _), (INT, 1), (SEMIC, _),(IF, _), (LR_BRAC, _), (ID, “a”), (EQ, _), (INT, 1), (RR_BRAC, _),(ID, “printf'), (LR_BRAC, _), (STRING, “Hello world!\n”),(RR_BRAC, _), (SEMIC, _), (RETURN, _), (INT, 0), (SEMIC, _),(RC_BRAC, _)45(1)A T Aab I db I Aa I c ArdbA'IcA'A* T abA' I aA' I £⑵A — dbA'IcA'A't aB I £B r bA' I A'6(1)(2) 3 2 + 5 -7 100 (+, a, b,tl)101(uminus, tl, t2)102(+, c, d, t3)103(*, t2, t3, t4)四、综合题(共24分)1.(1) FISRT(S) = {(, a} FIRST(L) = FISRT(S) = {(, a} FIRST(M) = {b,e) FOLLOW(L) = ()} FOLLOW(M) = FOLLOW(L) = ()}(0) S' T S(1)S->aS(2)S->bA(3)A-> aA⑷A T £。
《编译原理》习题及答案

第一章1、将编译程序分成若干个“遍”是为了。
b.使程序的结构更加清晰2、构造编译程序应掌握。
a.源程序b.目标语言c.编译方法3、变量应当。
c.既持有左值又持有右值4、编译程序绝大多数时间花在上。
d.管理表格5、不可能是目标代码。
d.中间代码6、使用可以定义一个程序的意义。
a.语义规则7、词法分析器的输入是。
b.源程序8、中间代码生成时所遵循的是- 。
c.语义规则9、编译程序是对。
d.高级语言的翻译10、语法分析应遵循。
c.构词规则二、多项选择题1、编译程序各阶段的工作都涉及到。
b.表格管理c.出错处理2、编译程序工作时,通常有阶段。
a.词法分析b.语法分析c.中间代码生成e.目标代码生成三、填空题1、解释程序和编译程序的区别在于是否生成目标程序。
2、编译过程通常可分为5个阶段,分别是词法分析、语法分析中间代码生成、代码优化和目标代码生成。
3、编译程序工作过程中,第一段输入是源程序,最后阶段的输出为标代码生成程序。
4、编译程序是指将源程序程序翻译成目标语言程序的程序。
一、单项选择题1、文法G:S→xSx|y所识别的语言是。
a. xyxb. (xyx)*c. x n yx n(n≥0)d. x*yx*2、文法G描述的语言L(G)是指。
a. L(G)={α|S+⇒α , α∈V T*}b. L(G)={α|S*⇒α, α∈V T*}c. L(G)={α|S*⇒α,α∈(V T∪V N*)}d. L(G)={α|S+⇒α, α∈(V T∪V N*)}3、有限状态自动机能识别。
a. 上下文无关文法b. 上下文有关文法c.正规文法d. 短语文法4、设G为算符优先文法,G的任意终结符对a、b有以下关系成立。
a. 若f(a)>g(b),则a>bb.若f(a)<g(b),则a<bc. a~b都不一定成立d. a~b一定成立5、如果文法G是无二义的,则它的任何句子α。
a. 最左推导和最右推导对应的语法树必定相同b. 最左推导和最右推导对应的语法树可能不同c. 最左推导和最右推导必定相同d. 可能存在两个不同的最左推导,但它们对应的语法树相同6、由文法的开始符经0步或多步推导产生的文法符号序列是。
编译原理部分课后答案,仅供参考

第一章编译程序概述1.1什么是编译程序编译程序是现代计算机系统的基本组成部分之一,而且多 数计算机系统都含有不止一个高级语言的编译程序。
对有些高 级语言甚至配置了几个不同性能的编译程序。
1.2编译过程概述和编译程序的结构编译程序完成从源程序到目标程序的翻译工作,是一个复 杂的整体的过程。
从概念上来讲,一个编译程序的整个工作过 程是划分成阶段进行的,每个阶段将源程序的一种表示形式转 换成另一种表示形式,各个阶段进行的操作在逻辑上是紧密连 接在一起的。
一般一个编译过程划分成词法分析、语法分析、 语义分析、中间代码生成,代码优化和目标代码生成六个阶段,这是一种典型的划分方法。
事实上,某些阶段可能组合在一起, 这些阶段间的源程序的中间表示形式就没必要构造岀来了。
我 们将分别介绍各阶段的任务。
另外两个重要的工作:表格管理 和岀错处理与上述六个阶段都有联系。
编译过程中源程序的各 种信息被保留在种种不同的表格里,编译各阶段的工作都涉及 到构造、查找或更新有关的表格,因此需要有表格管理的工作; 如果编译过程中发现源程序有错误,编译程序应报告错误的性 质和错误发生的地点,并且将错误所造成的影响限制在尽可能 小的范围内,使得源程序的其余部分能继续被编译下去,有些 编译程序还能自动校正错误, 这些工作称之为岀错处理。
图1.3表示了编译的各个阶段。
图1.3编译的各个阶段它不生成目标代码,它每遇到一个语句,就要对这个语句进行 分析以决定语句的含义,执行相应的动作。
右面的图示意了它 的工作机理第二章:PL/O 编译程序问答第1题 PL/0语言允许过程嵌套定义和递归调用,试问 它的编译程序如何解决运行时的存储管理。
答:PL/0语言允许过程嵌套定义和递归调用,它的编译程序在运行时采用了栈式动态存储管理。
(数组CODE 存放的只读目 标程序,它在运行时不改变。
)运行时的数据区S 是由解释程序 定义的一维整型数组,解释执行时对数据空间S 的管理遵循后进先岀规则,当每个过程(包括主程序)被调用时,才分配数据 空间,退出过程时,则所分配的数据空间被释放。
编译原理2010-2011试卷---A(答案)

华东交通大学2010—2011学年第二学期考试卷试卷编号: ( A )卷编译原理(E ) 课程 课程类别:必修课考生注意事项:1、本试卷共 7 页,总分 100 分,考试时间 120 分钟。
2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。
一、简答题 (每题 5 分,共 20 分)1. 简述编译程序与解释程序的主要差异?【答】编译程序产生中间代码,且效率高;解释程序不产生中间代码,且效率低。
2. 文法的二义性与语言的二义性是两个相同的概念吗?请说明理由。
【答】这两个概念是不相同的。
文法的二义性指的是文法所描述的语言中至少存在一个句子,而该句子对应两棵不同的语法树(或最左(右)推导);而语言的二义性是指描述该语言的全部文法都是二义性的。
由于描述同一个语言的文法可以有多个,一个二义性文法也可能找到一个等价的无二义性文法,所以一个文法是二义性的,其描述的语言不一定就是二义性的。
3. 简述在句型分析中的自上而下与自下而上两类分析方法的主要差异?【答】自上而下的分析方法是从文法的开始符号出发,反复使用推导技术,试图把要分析的句型推导出来;自下而上的分析方法是从要分析的句型出发,反复使用归约技术,试图最终归约出文法的开始符号。
4.为什么说“素短语是包含有终结符的直接短语”的论断是错误的?并针对文法G[E]:(1) E→E+T | T (2) T→T*F | F (3) F→i 中的句型T+T+F,举一个反例加以进一步说明。
【答】在一个文法的句型中,其素短语是一个短语,它至少包含一个终结符,且除自身外不再包含其他素短语。
而不是说是一个直接短语。
例如:文法G[E]中的句型T+T+F,其一个素短语为:T+T,而T+T 是素短语,但不是直接短语。
二、形式文法与自动机题(共20 分)L={ a i b j a j b i| i>0,j≥1 }【答】描述该语言的文法G[S]为:S→aAb |εA→bAa | ba2.对文法 G[E] : E→A│E+A │E–A A→B│A*B B→(E)│a写出句型B-(E)*a 的短语、直接短语和句柄。
编译原理(很全哦)

37
扫描程序的设计
编译原理
38
编译原理
39
编译原理
词法分析程序可以通过状态转换图构造
40
编译原理
状态转换图的实现:使每个状态对应一小段子程序, 通过case语句将各段程序连成一个完整的程序 一些工作变量和子程序的定义
41
编译原理
42
编译原理
43
编译原理
44
标识符的处理
标识符的处理主要包括
7
例3.10由正规文法构造自动机
编译原理
字母表={+, -, d},状态Q={S, N, F}
8
编译原理
正规文法:规则形式
V VN, VT.
AV或A 其中A,
由有穷自动机A可以直接构造一个正规文法
G A,使L(G)=L(A).
9
由FSA到正规文法的构造步骤
(1)
编译原理
例3.16 构造(+|-| )dd*的对应的自动机
编译原理
22
NDFSA M到正规表达式的转换
(1)
编译原理
(2)
对NDFSA M进行拓广,新设置一个 唯一的开始状态S和一个唯一的终止 状态Z,并允许状态转换图弧上可以 为正规表达式; 从S到原来所有的开始状态连接弧, 从原来所有的终止状态连接弧到Z; 利用图3.23的替换规则,逐步消去状 态转换图中的节点和有关连线,直到 只剩下状态S和Z.
14
等价正规集
定义3.10
编译原理
设e1和e2是上的两个正规表 达式,若L(e1)=L(e2),则称e1与e2等价, 记为e1 = e2 . 例如: e1= (a|b), e2 = b|a 又如: e1= b|(ab)* ,e2 =(ab)*| b 再如: e1= (a|b)* ,e2 =(a* |b* )*
陕西师范大学 2010级编译原理 复习(归类)

2010级编译原理复习提纲第一章引论1、何谓宿主机?何为目标机?2、何谓编译程序?输入/输出是?编译程序逻辑结构、各组成部分功能?3、编译程序的“前端”“后端”由那些部分组成?与源程序、目标机关系?4、要在某一台机器上为某种语言构造一个编译程序,必须掌握那几方面的内容?第二章高级语言及语法描述1、语言?句子?句型?它们的描述方法(描述一个语言的文法不唯一)2、上下文无关文法(2型文法)的用途?正规文法(3型文法)用途?3、何谓二义文法?如何判定?4、推导、语法分析树概念,如何应用文法定义语言?第三章词法分析1、何谓词法分析器?描述其任务与功能。
2、Σ上的正规式表示的正规集是如何定义的?正规式的用途?3、设计词法分析程序时,通常借助何基本手段(图)实现?4、词法分析器中,设计预处理程序的理由?它的基本功能是?5、在词法分析器设计中,为能正确识别单词而采用的一个技术叫做什么技术?6、PL/0词法分析器中以什么方法来识别保留字? PL/0词法分析器中的扫描缓冲区如何构成?存放什么内容?第四-五章语法分析1、何谓语法分析器?描述其任务与功能。
2、上下文无关文法定义?其各部分的含义?3、语法分析分为几大类方法?各有哪些分析方法?PL/0编译程序采用什么语法分析方法?4、自上而下分析方法的实质是什么?逻辑输出?5、递归下降分析器及其优缺点?LL(1)文法?6、预测分析器的逻辑结构?构造预测分析器的关键在于?其主要优点?7、移进归约分析器工作过程的动作?其关键在于识别可归约串(句柄)。
8、用于算符优先文法的分析方法,其关键在于识别可归约串(素短语)。
9、各种LR分析器构造的不同点是什么?构造LR分析器的关键在于?10、自下而上分析方法的实质是什么?逻辑输出?11、(移进-规约分析器)LR分析器的逻辑结构?12、PL/0采用什么语法分析方法?13、LR分析方法的核心问题是解决?把识别句柄转换为识别?14、各种语法分析方法的局限性15、二义文法应用思想方法:由二义根源入手解决冲突第六章属性文法语法制导翻译1、何谓属性文法?(两种描述方式)2、何谓语法制导翻译法?3、概念:属性文法中为产生式配备的一组属性计算规则称为(语义规则或属性计算规则)?语法制导翻译模式中,属性计算规则又称为(语义动作)?第七章语义分析与中间代码生成1、何谓中间代码生成器?描述其任务与功能。
吉林大学2010级编译原理期末考试题A卷

2012-2013学年第1学期2010级《编译原理》期末考试试题(A卷)考试时间:2013年1月7日班级学号姓名✧请将答案写在答题纸上,写明题号,不必抄题,字迹工整、清晰;✧请在答题纸和试题纸上都写上你的班级,学号和姓名,交卷时请将试题纸、答题纸和草纸一并交上来。
一、填空题(4小题,共20分,每题5分)1.判断布尔表达式文法G[B]符号间的优先关系( 、 、 或表示无关系的○×)。
G[B]:B->BoT|TT->TaF|FF->nF|(B)|t|f则下列符号之间的优先关系为B___#, o___B, n___n, t___a, (___(.2.设有一个文法G[S]:S->VV->T|ViTT->F|T+FF->V*|[句型F+Fi[的短语,简单短语和句柄分别为____________,____________,____________。
3.设语0义分析中当前层数为L,偏移量为off,试写出以下程序点的层数和偏移变化情况。
注意:约定基本类型bool,char,int,float,指针型分别分配1,2,4,8,2个存储单元。
const int N = 10;①typedef struct student{char* name;int[N][2] mark;}②student a,b;bool ave(student* s, ③int n, float x){bool successful;int sum;④…}⑤void main(){…}4.设一个文法G[S’]:S’->SS->BBB->aBB->b其LR(1)活前缀状态机如下,请填写I3和I6状态。
依据此状态机构造的LR(1)分析表当中,相应位置的内容为ACTION[I1,#]=______,ACTION[I3,b]=______,GOTO[I6,B]=______。
二、计算题(4小题,每小题5分,共20分)1.求与Σ={a,b}的正则表达式(a|b)* (aa*|b*b)(ab)*a等价的最简DFA。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机科学与技术 专业 闭卷 120分钟
- - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - (装订线)
一、填空题(每空1分,总计20分)
1.对编译程序而言,输入数据是 ,输出是 。
2.确定有限自动机是个 ,通常表示为 。
3.二义性文法中,有的文法的二义性是不能消除的,这类文法被称为 。
4.算符优先分析方法和LR 分析方法都是自下而上的分析方法,算符优先分析方法是通 过 刻画可规约串的,而LR 分析方法是通过 刻画可规约串的。
5. 文法符号的属性有两种,一种称为 ,另一种称为 。
6.语法制导翻译的方法就是为每个产生式配上一个 ,并在语法分析的同时执行之。
7. 程序语言中参数传递的方式主要有 , , 三种。
8.编译程序生成的目标代码通常分为三类,包括 , 和 。
8. 循环优化包括 、 和删除归纳变量。
9.错误处理中,跳过有错误的那个语法成分,以便把错误限制在一个尽可能小的局部范围内,从而减少因为某一个错误而引起的一连串假错。
这种错误的处理方法叫做 。
10.编译过程中大部分时间用在 。
二.选择题(每题1分,总计10分)
1.编译程序是对( )。
A.汇编程序的翻译
B.高级语言程序的解释执行
-- - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - (装订线)
2.正规表达式M1和M2等价是指()。
A.M1和M2的状态数相等
B.M1和M2的有向边条数相等
C.M1和M2所识别的语言集相等
D.M1和M2的状态数和有向边条数都相等
3.已知语言L={a n bb n|n≥1},则下述文法中,()可以产生语言L。
A. Z→aZb|aAb|b
B. A→aAb|b
C. Z→aAB
D. Z→aAb
A→aAb|b A→aA|a A→aAb|b
B→bB|b
4.homaky把文法分为四种类型,即0型,1型,2型,3型其中3型文法又叫做()。
A.上下无关文法
B.上下有关文法
C.正规文法
D.短语文法
5.在通常的语法分析中,预测分析方法又叫做()。
A.算符优先分析法
B.LR分析法
C.递归下降分析法
D.LL(1)分析法
6.间接三元式的执行顺序通过()反映出来的。
A.指示器
B.间接码表
C.符号表
D.程序变量
7.有一语法制导翻译程序如下所示:
G[S]:S bAb {print”x”}
A (
B {print”y”}
A a {print”u”}
B Aa) {print”v”}
若输入序列为b(((aa)a)a)b,且采用自下而上的分析方法,则输出序列为()。
A.uyyyvvvx
B.uvyvyvx
C.xyvyvyvu
D.uvvvyyxy
8. 优化可生成的目标代码。
(A)运行时间较短且占用存储空间较小(B)占用存储空间较小
(C)运行时间较短且占用存储空间较大(D)运行时间较短
计算机科学与技术 专业 闭卷 120分钟
- - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - (装订线)
9. 下列优化方法中不是针对基本块优化进行的是( )。
A.强度削弱
B.删除无用赋值
C.复写传播
D.删除公共子表达式 10. C 语言中,函数定义的局部变量地址分配在( )。
A.调用者的数据区中
B.被调用者的数据区中
C.主程序的数据区中
D.公共数据区中
三.简答题(每题4分,总计
20分)
1. DFA 与NFA 的主要区别
2. 什么是文法
3.静态语义检查涉及哪几方面,并举例说明
4.画出c 语言的活动记录
-- - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - (装订线)
5. 在程序流图中循环的定义
1.填写编译程序结构示意图,包括编译程序的每个功能模
块,及其输出信息写在箭头右侧(10分)
2.设字母表∑={a,b},给出∑上的正规表达式(a|ab)*。
(1)构造最简DFA(7分)
(2)写出等价的右线性文法(3分)
-- - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - (装订线)
3.给出文法G[S]:S BB
B aB|b
构造该文法的LR(0)分析表(15分)
-- - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - (装订线)
4.对于文法G[S]:S→(L)|As|a
L→L,S|S
(1)画出句型(S,(a))的语法树(5分)
(2)写出上述句型的所有短语、直接短语、句柄、素短语和最左素短语。
(5分)
5.给出表达式a=b*(c+d)的抽象语法树、逆波兰式、四元式、三元式和间接三元式的中间代码。
(5分)
-- - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - (装订线)
一、填空题(每空1分,计20分)
1、翻译目标代码
2、五元组M=(S,∑,f,s0,Z)
3、先天二义性文法
4、最左素短语句柄
5、继承属性综合属性
6、语义子程序或语义动作
7、传值传名传地址
8、可直接运行的机器语言代码待装配的机器语言模块汇编语言
9、代码外提强度削弱
10、表格管理
二、选择题(每题1分,计10分)
1.D 2.C 3.D 4.C 5.D 6.B 7.B 8.A 9.A 10.B
三、简答题(每题4分,计20分)
1、(1)NFA中的f为多值映射,初始状态不唯一。
(2)DFA中的f为单值映射,初始转台唯一。
2、文法通常表示为四元组G[S]=(V T,V N,S,ξ)
V T为终结符的非空有限集,每个元素称为终结符
V N为非终结符的非空有限集,每个元素称为非终结符
S为一文法开始符,是一个特殊的非终结符号,即S∈V N
ξ是产生式的非空有限集,其中每个产生式是一对序偶(α,β),通常写作α→β
3、(1)类型检查,如参与运算的操作数其类型应相容
计算机科学与技术 专业 闭卷 120分钟
- - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - (装订线)
case 语句流
(3)一致性检查,如在相同作用域中标识符只能说明一次 4、
5、具有下述性质的结点序列为一个循环
(1)它们是强连通的。
其中任意两个结点之间必有一条通路,而且通路上个各结点都属于该结点序列;如果序列只包括一个结点,则必有一条有向边从该结点引到其自身。
(2)它们中间有一个而且只有一个是入口结点。
四.综合题
计算机科学与技术 专业 闭卷 120分钟
- - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - (装订线)
目标程序
2.最简DFA :(10分)
右现性文法: Z →aZ|bB|ε B →aZ 3.(15分)
4.(10分)
短语:(S,(a)) S,(a) S (a) a 直接短语:S a 句柄:S
计算机科学与技术 专业 闭卷 120分钟
- - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - (装订线)
最左素短语:a 5.(5分) 抽象语法树:
逆波兰式:abcd+*= 三元式:①(+,c,d) 间接三元式:①(+,c,d) 四元:(+,c,d,t1) ②(*,b,①) ②(*,b,①)
(*,b,t1,t2) ③(=,②,a) ③(=,②,a) (=,t2, ,a)
间接码表:①②③。