一.(每项选择提高程序的执行效率
2分,共
20分)选择题
c. d.
1.将编译程序分成若干个
“遍”是为了_b__。 a. b.使程序的结构更加清晰
利用有限的机器内存并提高机器的执行效率利用有限的机器内存但降低了机器的执行效率2.构造编译程序应掌握
__d__。
a.源程序 b.目标语言 c.编译方法 d.以上三项都是 3.变量应当 c_。
a.持有左值 b.持有右值 c.既持有左值又持有右值持有左值也不持有右值_d___上。
a.出错处理 b.词法分析 c.目标代码生成 d.管理表格 5.词法分析器的输出结果是_c___。
a.单词的种别编码 b.单词在符号表中的位置的种别编码和自身值
d.单词自身值
c.单词
d.既不
4.编译程序绝大多数时间花在
6.正规式 MI 和 M2 等价是指__c__。a. MI 和 M2 的状态数相等C.M1 和 M2 所识别的语言集相等7.中间代码生成时所依据的是
a.语法规则 b.词法规则
—c。
c.语义规则 d.等价变换规则b.Ml 和 M2 的有向弧条数相等。
d. Ml 和 M2 状态数和有向弧条数相等
8.后缀式 ab+cd+/可用表达式__b_来表示。
a. a+b/c+d b. (a+b)/(c+d) c. a+b/(c+d) d. a+b+c/d 9.程序所需的数据空间在程序运行前就可确定,称为动态分配申请和释放存储空间遵守
a.先请先放二(每小题
b.先请后放
____c__管理技术。
a.动态存储 b.栈式存储 c.静态存储 d.堆式存储 10.堆式
___d_____原则。c.后请先放
d.任意
10分,共80分)简答题1.画出编译程序
的总体结构图,简述各部分的主要功能。2. 已知文法 G[E]: E→ET+|T T→TF* | F F
→F^ | a
.
试证:FF^^*是文法的句型,指出该句型的短语、简单短语和句柄3.为正规式(a|b) *a(a|b)构造一个确定的有限自动机。4.设文法 G(S):
S→(L)|a S|a
L→L,S|S
(1) 消除左递归和回溯;
(2)计算每个非终结符的FIRST和FOLLOW;
(3)构造预测分析表。
5.
已知文法
A->aAd| aAb|ε
判断该文法是否
SLR(1)文法,若是构造相应分析表,并对输入串
ab#给出分析过
程。6.构造算符文法 G[H]的算符优先关系(含#)。
G[H]:H→H;M|MM→d|aHb 7.已
构造出文法 G(S)(1)S
BB
(2)B aB(3)B b1)。给出 DFA 图 2).给出 LR 分析表
3).假定输入串为
abaab,请给出 LR 分析过程(即状态,符号,输入串的变化过
程)。 8.将下面的语句翻译成四元式序列:
while A 9.对下面的流图,(1)求出流图中各结点 N 的必经结点集 D(n), (2)求出流图中的回边,(3)求出流图中的循环。 参一.单项选择题1.将编译程序分成若干个“遍”是为了使编译程序的结构更加清晰,故选 b。 2..构造编译程序应掌握源程序、目标语言及编译方法等三方面的知识,故选 d。 3.对编译而言,变量既持有左值又持有右值,故选c。4.编译程序打交道最多的就是各种表格,因此选 d。 5.词法分析器输出的结果是单词的种别编码和自身值,选C。 6.正规式M1和M2所识别的语言集相等,故选C。 7.选c。8.选b。9. 选C 10. 堆式动态分配申请和释放存储空间不一定遵守先请后放和后请先放的原则,故选d 二.简答题1.【解答】 编译程序的总体结构图如图 1.2所示。 词法分析器:输入源程序,进行词法分析,输出单词符号。的基础上,根据语言的语法规则(文法规则)把单词符号串分解成各类语法单位,并判断输入串是否构成语法上正确的 语法分析器:在词法分析 “程序”。中间代码生成器:按照 语义规则把语法分析器归约(或推导)出的语法单位翻译成一定形式的中间代码,比如说四元式。 进行优化处理。成目标语言程序。 表格管理模块保存一系列的表格,登记源程序的各类信息和编译各阶段的进展情况。编程序各阶段所产生的中间结果都记录在表格中,所需信息多数都需从表格中获取,整个编 译 优化:对中间代码 目标代码生成器:把中间代码翻译 译过程都在不断地和表格打交道。出错处理程序对出现在源程序中的错误进行处理。此 外,编译的各阶段都可能出现错误, 出错处理程序对发现的错误都及时进行处理。2.【解答】 该句型对应的语法树如下:该句型相对于FF^^*,F;相对于F的短语有3. 【解答】 E的短语有FF^^*;相对于T的短语有 F^;F^^;简单短语有F;F^;句柄为F. 最简DFA如图2.66所示。4.(1) S→(L)|aS’S’→S|εL→S L’L’→S L’|ε 评分细则:消除左递归 2分,提公共因子 2分。 【解答】 (2) FIRST 和 FOLLOW FIRST)S)={(,a} FIRST(L)={(,a} 5. 【解答】 >ε FOLLOW(S)={#,,,)} FOLLOW(L)={ )} FIRST(S’)={,a,ε}FOLLOW(S’)={#,,,)} FIRST(L’)={,,ε}FOLLOW(L’〕={ )} (1)拓广文法 (0)S->A (1) A->aAd (2)A-> aAb (3)A-(2)构造识别活前缀的FOLLOW(A)={d,b,#} 对于状态对于状态 I0:FOLLOW(A)∩{a}=ФI1:FOLLOW(A)∩{a}=Ф DFA 因为,在DFA中无冲突的现象,所以该文法是SLR(1)文法。 (3)SLR(1)分析表 状态 a ACTION B d GOTO # A 0 1 2 3 4 5 S2 S2 r1 r2 r3 r3 S5 r3 acc r3 S4 r1 r2 r3 r3 r1 r2 1 3 (4)串 ab#的分析过程步骤状态栈1 2 3 4 5 6. 0 02 023 0235 01 【解答】 符号栈a b b # # b# # # 当前字符 移进 剩余字符串动作 # #a #aA #aAb #A 归约A->ε 移进 归约A-> aAb 接受 由M→d 和M→a…得:FIRSTVT(M)={d,a};由H-H;…得:FIRSTVT(H)={;}由H→M 得:FIRSTVT(M) cFIRSTVT(H)由M→d 和M→…b 得:LASTVT(M)={d,b}由H---,;m 得:LASTVT(H)={;}; 由H→M 得:LASTVT(M)cLASTVT(H),即 LASTVT(H)={;,d,b}对文法开始符对形如 H,有#H#存在,即有#=#,# <;,# P→…ab…,或P→…aQb…,有a=b,由M→a|b得:a=b; 对形如P→…aR…,而b∈FIRSTVT(R),有a,即 FIRSTVT(H)={;,d,a}; 有a>b。 由H→…;M 得:; 3.5。 7.【解答】(1)LR分析表如下:析表状态 a 0 1 2 S3 S4 s3 ACTION b s4 acc 5 # GOTO S 1 B 2 (2)分 3 s3 s4 6 4 r3 r3 5 R1 R1 r1 6 R2 R2 R2 (3) 句子 abaab 的分析过程表:句子abaab的分析过程步骤状态 符号栈输入串所得产生式 0 #0 # abaad# 1 #03 #a baad# 2 #034 #ab aab# B→b3 #036 #aB aab# B→aB 4 #02 #B aab# 5 #023 #Ba ab# 6 #0233 #Baa b# 7 #02334 #Baab # 8 #02336 #BaaB # 9 #0236 #BaB ad# 10 #025 #BB ad# 11 #01 #S d# 12 # # d# 13 识别成功 8. 【解答】 该语句的四元式序列如下(其中E1、E2和E3分别对应:A 107 (j,_,_,112) /*跳过 else 后的语句*/ 108 (j≤,A,D,110)/*E3 为 T*/ 109 (j,_,_,112) /*E3 为 F*/ 110 (+,A,2,A) /*A:=A+2*/ 111 (j,_,_,108) /*转回内层 while 语句开始处*/ 112(j,_,_,100) /*转回外层 while 语句开始处*/ 113 9. 【解答】 (1)流图中各结点 N 的必经结点集 D(n), D(l)={1},D(2)={1,2},D(3)={1,2,3},D(4)={1,2,3,4},D(5)={1,2,5}, D(6)={1,2,5,6} (2)求出流图中的回边, 和A≤D并 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- jqkq.cn 版权所有 赣ICP备2024042794号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务