编译原理试题及答案(期末复习版).pdf资料

编译原理试题及答案(期末复习版).pdf资料
编译原理试题及答案(期末复习版).pdf资料

<编译原理>历年试题及答案

一.(每项选择2分,共20分)选择题

1.将编译程序分成若干个“遍”是为了_b__。 a.

提高程序的执行效率 b.使程序的结构更加清晰 c.

利用有限的机器内存并提高机器的执行效率 d.

利用有限的机器内存但降低了机器的执行效率

2.构造编译程序应掌握__d__。

a.源程序

b.目标语言

c.编译方

法 d.以上三项都是 3.变量应

当 c_。

a.持有左值

b.持有右值

c.既持有左值又持有右值

d.既不

持有左值也不持有右值 4.编译程序绝大多数时间花在

_d___上。

a.出错处理

b.词法分析

c.目标代码

生成 d.管理表格 5.词法分析器的输

出结果是_c___。

a.单词的种别编码

b.单词在符号表中的位置

c.单词

的种别编码和自身值 d.单词自身值

6.正规式 MI 和 M2 等价是指__c__。

a. MI 和 M2 的状态数相等

b.Ml 和 M2 的有向弧条数相等。

C.M1 和 M2 所识别的语言集相等 d. Ml 和 M2 状态数和有向弧条数相等7.中间代码生成时所依据的是—c。

a.语法规则 b.词法规则c.语义规则 d.等价变换规则

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.程序所需的

数据空间在程序运行前就可确定,称为____c__管理技术。

a.动态存储

b.栈式存储

c.静态存储

d.堆式存储 10.堆式

动态分配申请和释放存储空间遵守___d_____原则。

a.先请先放

b.先请后放

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|M

M→d|aHb 7.已

构造出文法 G(S)

(1)S BB

(2)B aB(3)B

b1)。给出 DFA

图 2).给出 LR 分

析表

3).假定输入串为 abaab,请给出 LR 分析过程(即状态,符号,输入串的变化过

程)。 8.将下面的语句翻译成四元式序列:

while A

if A=1 then C:=C+l

else while A≤ D

do A:=A+2;

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.【解答】

该句型对应的语法树如下:该句型相对于E的短语有FF^^*;相对于T的短语有

FF^^*,F;相对于F的短语有F^;F^^;简单短语有F;F^;句柄为 F.

3.【解答】

最简DFA如图 2.66所示。

4.【解答】

(1)

S→(L)|aS’

S’→S|ε

L→S L’

L’→S L’|ε

评分细则:消除左递归2分,提公共因子2分。

(2) FIRST 和 FOLLOW

FIRST)S)={(,a} FOLLOW(S)={#,,,)}

={#,,,)}

FOLLOW(S’)

FIRST(S’)

={,a,ε}

FIRST(L)={(,a} FOLLOW(L)={ )}

={,,ε}FOLLOW(L’〕={ )}

FIRST(L’)

5.【解答】

(1)拓广文法

(0)S->A (1) A->aAd (2)A-> aAb (3)A->ε

(2)构造识别活前缀的 DFA

FOLLOW(A)={d,b,#}

对于状态I0:FOLLOW(A)∩{a}=Ф

对于状态I1:FOLLOW(A)∩{a}=Ф

因为,在DFA中无冲突的现象,所以该文法是SLR(1)文法。

(3)SLR(1)分析表

状态ACTION GOTO

a B d # A

0 S2 r3 r3 r3 1

1 acc

2 S2 r

3 r3 r3 3

3 S5 S4

4 r1 r1 r1

5 r2 r2 r2

(4)串 ab#的分析过程

步骤状态栈符号栈当前字符剩余字符串动作

1 0 # a b# 移进

2 02 #a b # 归约A->ε

3 023 #aA b # 移进

4 023

5 #aAb # 归约A-> aAb

5 01 #A # 接受

6.【解答】

由M→d 和M→a…得:FIRSTVT(M)={d,a};

由H-H;…得:FIRSTVT(H)={;}

由H→M 得:FIRSTVT(M) cFIRSTVT(H),即 FIRSTVT(H)={;,d,a}

由M→d 和M→…b 得:LASTVT(M)={d,b};

由H---,;m 得:LASTVT(H)={;};

由H→M 得:LASTVT(M)cLASTVT(H),即 LASTVT(H)={;,d,b}

对文法开始符H,有#H#存在,即有#=#,##,也即#<;,##, b>#。

对形如P→…ab…,或P→…aQb…,有a=b,由M→a|b得:a=b;

对形如P→…aR…,而b∈FIRSTVT(R),有a

有a>b。

由H→…;M 得:;

由M→aH…得:a

得:LASTVT(H)>;,即:;>;,d>;,b>;

由H→H;’’?

由M→…Hb 得:LASTVT(H)>b,即:;>b,d>b,b>b

由此得到算符优先关系表,见表 3.5。

7.【解答】(1)LR

分析表如下:(2)分

析表

状态ACTION GOTO

a b # S B

0 s3 s4 1 2

1 acc

2 S

3 S

4 5

3 s3 s

4 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→b

3 #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

100 (j<,A,C,102)

101(j,_,_,113)/*E1 为 F*/

102 (j<,B,D,104) /*El 为 T*/

103 (j,_,_,113) /*El 为 F*/

104 (j=,A,1,106) /*Ez 为 T*/

105 (j,_,_,108)/*EZ 为 F*/

106 (+,C,1,C) /*C:=C+1*/

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)求出流图中的回边,

编译原理期末考试习题及答案

一、填空题|(每题4分,共20分) 1. 乔母斯基定义的3型文法(线性文法)产生式形式 A→Ba|a,或A→aB|a,A,B∈Vn, a,b∈Vt 。 2.语法分析程序的输入是单词符号,其输出是语法单位。 3 型为 B → .aB 的LR(0)项目被称为移进项目,型为 B → a.B 的LR(0) 项目被称为待约项目, 4.在属性文法中文法符号的两种属性分别为继承属性和综合属性。 5、运行时存贮管理方案有静态存储分配、动态存储分配和堆式存储分配和方案。 二.已知文法 G(S) (1) E → T | E+T (2) T → F | F*F (3) F →(E)| i (1)写出句型(T*F+i)的最右推到并画出语法树。(4分) (2)写出上述句型的短语,直接短语和句柄。(4分) 答:(1)最右推到(2分) E ==> T ==> F ==> (E) ==> (E+T) ==> (E+F) ==> (E+i) ==> (T+i) ==> (T*F+i) (2) 语法树(2分) (3)(4分) 短语:(T*F+i),T*F+i ,T*F , i 直接短语:T*F , i 句柄:T*F 三. 证明文法G(S) :S → SaS |ε是二义的。(6分) 答:句子aaa对应的两颗语法树为:

因此,文法是二义文法 四.给定正规文法G(S): (1) S → Sa | Ab |b (2) A → Sa 请构造与之等价的DFA。(6分) 答:对应的NFA为:(6分) 状态转换表: a b {F} Φ{S} {S} {S,A} Φ {S,A} {S,A} {S} 五. 构造识别正规语言b*a(bb*a)*b* 最小的DFA(要求写出求解过程)。(15分)答:(1)对应的NFA(5分) a b {0} {1,3} {0} {1,3} Φ{2,3} {2,3} {1,3} {2,3} (5分) 六. 已知文法G(S) : (1) S → ^ | a | (T) (2) T → T,S | S 试:(1)消除文法的左递归;(4分) (2)构造相应的first 和 follow 集合。(6分) 答:(1)消除文法的左递归后文法 G’(S)为: (1) S → ^ | a | (T)

编译原理期末考试题目及答案

一、填空题(每空2分,共20分) 1.编译程序首先要识别出源程序中每个单词,然后再分析每个句子并翻译其意义。 2.编译器常用的语法分析方法有自底向上和自顶向下两种。 3.通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序的分析,中间代码生成、代码优化与目标代码的生成则是对源程序的综合。 4.程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即静态存储分配方案和动态存储分配方案。 5.对编译程序而言,输入数据是源程序,输出结果是目标程序。 1.计算机执行用高级语言编写的程序主要有两种途径:解释和编译。 2.扫描器是词法分析器,它接受输入的源程序,对源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。 3.自下而上分析法采用移进、归约、错误处理、接受等四种操作。 4.一个LL(1)分析程序需要用到一张分析表和符号栈。 5.后缀式abc-/所代表的表达式是a/(b-c)。 二、单项选择题(每小题2分,共20分) 1.词法分析器的输出结果是__C。 A.单词的种别编码B.单词在符号表中的位置 C.单词的种别编码和自身值D.单词自身值 2.正规式M 1 和M 2 等价是指__C_。 A.M1和M2的状态数相等 B.M1和M2的有向边条数相等 C.M1和M2所识别的语言集相等D.M1和M2状态数和有向边条数相等 3.文法G:S→xSx|y所识别的语言是_C____。 A.xyx B.(xyx)* C.xnyxn(n≥0) D.x*yx* 4.如果文法G是无二义的,则它的任何句子α_A____。 A.最左推导和最右推导对应的语法树必定相同B.最左推导和最右推导对应的语法树可能不同 C.最左推导和最右推导必定相同D.可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握____D__。 A.源程序B.目标语言C.编译方法D.以上三项都是 6.四元式之间的联系是通过__B___实现的。 A.指示器B.临时变量C.符号表D.程序变量 7.表达式(┐A∨B)∧(C∨D)的逆波兰表示为__B___。 A.┐AB∨∧CD∨B.A┐B∨CD∨∧ C.AB∨┐CD∨∧D.A┐B∨∧CD∨ 8. 优化可生成__D___的目标代码。 A.运行时间较短 B.占用存储空间较小 C.运行时间短但占用内存空间大D.运行时间短且占用存储空间小 9.下列___C___优化方法不是针对循环优化进行的。 A. 强度削弱B.删除归纳变量C.删除多余运算D.代码外提 10.编译程序使用_B_区别标识符的作用域。 A. 说明标识符的过程或函数名B.说明标识符的过程或函数的静态层次 C.说明标识符的过程或函数的动态层次 D. 标识符的行号 三、判断题(对的打√,错的打×,每小题1分,共10分) 2.一个有限状态自动机中,有且仅有一个唯一的终态。x

编译原理试题及答案3

编译原理复习题 一、填空题: 1、编译方式与解释方式的根本区别在于(是否生成目标代码)。 2、对编译程序而言,输入数据是(源程序),输出结果是(目标程序)。 3、如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段:(编译阶段)和(运行阶段)。 4、如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分成三个阶段:(编译阶段)、(汇编阶段)和(运行阶段)。 5、自顶向下语法分析方法会遇到的主要问题有(回溯)和((左递归带来的)无限循环)。 6、LL(k)分析法中,第一个L的含义是(从左到右进行分析),第二个L的含义是(每次进行最左推导),“k”的含义是(向输入串中查看K个输入符号)。 7、LL(1)分析法中,第一个L的含义是(从左到右进行分析),第二个L的含义是(每次进行最左推导),“1”的含义是(向输入串中查看1个输入符号)。 8、自顶向下语法分析方法的基本思想是:从(识别符号)出发,不断建立(直接推导),试图构造一个推导序列,最终由它推导出与输入符号相同的(符号串)。 9、自底向上语法分析方法的基本思想是:从待输入的符号串开始,利用文法的规则步步向上进行(直接归约),试图(归约)到文法的(识别符号|开始符号)。 10、LR(0)分析法的名字中,“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“0”的含义是(向貌似句柄的符号串后查看0个输入符号)。 11、LR(1)分析法的名字中,“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)。 12、SLR(1)分析法的名字中,“S”的含义是(简单的),“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)。 13、在编译过程中,常见的中间语言形式有(逆波兰表示)、(三元式)、(四元式)和(树形表示)。 14、在编译程序中安排中间代码生成的目的是(便于代码优化)和(便于目标程序的移植)。 15、表达式-a+b*(-c+d)的逆波兰表示为(a-bc-d+*+ )。 16、表达式a+b*(c+d/e)的逆波兰表示为(abcde/+*+ )。 17、表达式a:=a+b*c↑(d/e)/f的逆波兰表示为(aabcde/↑*f/+:= )。 18、文法符号的属性有(继承属性)和(综合属性)两种。 19、一个文法符号的继承属性是通过语法树中它的(兄弟结点与父)结点的相应文法符号的属性来计算的。 20、一个文法符号的综合属性是通过语法树中它的(子)结点的属性来计算的。

编译原理试题及答案

参考答案 一、单项选择题(共10小题,每小题2分,共20分) 1.语言是 A .句子的集合 B .产生式的集合 C .符号串的集合 D .句型的集合 2.编译程序前三个阶段完成的工作是 A .词法分析、语法分析和代码优化 B .代码生成、代码优化和词法分析 C .词法分析、语法分析、语义分析和中间代码生成 D .词法分析、语法分析和代码优化 3.一个句型中称为句柄的是该句型的最左 A .非终结符号 B .短语 C .句子 D .直接短语 4.下推自动机识别的语言是 A .0型语言 B .1型语言 C .2型语言 D .3型语言 5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即 A . 字符 B .单词 C .句子 D .句型 6.对应Chomsky 四种文法的四种语言之间的关系是 A .L 0?L 1?L 2?L 3 B .L 3?L 2?L 1?L 0 C .L 3=L 2?L 1?L 0 D .L 0?L 1?L 2=L 3 7.词法分析的任务是 A .识别单词 B .分析句子的含义 C .识别句子 D .生成目标代码 8.常用的中间代码形式不含 A .三元式 B .四元式 C .逆波兰式 D .语法树 9. 代码优化的目的是 A .节省时间 B .节省空间 C .节省时间和空间 D .把编译程序进行等价交换 10.代码生成阶段的主要任务是 A .把高级语言翻译成汇编语言 B .把高级语言翻译成机器语言 C .把中间代码变换成依赖具体机器的目标代码 装 订 线

D.把汇编语言翻译成机器语言 二、填空题(本大题共5小题,每小题2分,共10分) 1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。2.编译器常用的语法分析方法有(自底向上)和(自顶向下)两种。 3.通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序的(分析),中间代码生成、代码优化与目标代码的生成则是对源程序的(综合)。 4.程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即(静态存储分配)方案和(动态存储分配)方案。 5.对编译程序而言,输入数据是(源程序),输出结果是(目标程序)。 三、名词解释题(共5小题,每小题4分,共20分) 1.词法分析 词法分析的主要任务是从左向右扫描每行源程序的符号,按照词法规则 从构成源程序的字符串中识别出一个个具有独立意义的最小语法单位, 并转换成统一的内部表示(token),送给语法分析程序。 2.LL(1)文法 若文法的任何两个产生式A →α | β都满足下面两个条件: (1)FIRST(α) ? FIRST(β ) = φ; (2)若β?* ε,那么FIRST(α) ? FOLLOW( A ) = φ。 我们把满足这两个条件的文法叫做LL(1)文法,其中的第一个L代表从左 向右扫描输入,第二个L表示产生最左推导,1代表在决定分析器的每步 动作时向前看一个输入符号。除了没有公共左因子外,LL(1)文法还有一 些明显的性质,它不是二义的,也不含左递归。 3.语法树 句子的树结构表示法称为语法树(语法分析树或语法推导树)。 给定文法G=(V N,V T,P,S),对于G的任何句型都能构造与之关联的 语法树。这棵树具有下列特征: (1)根节点的标记是开始符号S。 (2)每个节点的标记都是V中的一个符号。 (3)若一棵子树的根节点为A,且其所有直接子孙的标记从左向右的排列 次序为A1A2…A R,那么A→A1A2…A R一定是P中的一条产生式。

编译原理考试试题与答案(汇总)

《编译原理》考试试题及答案(汇总) 一、是非题(请在括号,正确的划√,错误的划×)(每个2分,共20分) 1.编译程序是对高级语言程序的解释执行。(× ) 2.一个有限状态自动机中,有且仅有一个唯一的终态。(×) 3.一个算符优先文法可能不存在算符优先函数与之对应。(√ ) 4.语法分析时必须先消除文法中的左递归。(×) 5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。(√) 6.逆波兰表示法表示表达式时无须使用括号。(√ ) 7.静态数组的存储空间可以在编译时确定。(×) 8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。(×) 9.两个正规集相等的必要条件是他们对应的正规式等价。(× ) 10.一个语义子程序描述了一个文法所对应的翻译工作。(×) 二、选择题(请在前括号选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分) 1.词法分析器的输出结果是_____。 A.( ) 单词的种别编码B.( ) 单词在符号表中的位置 C.( ) 单词的种别编码和自身值D.( ) 单词自身值 2.正规式 M 1 和 M 2 等价是指_____。 A.( ) M1和M2的状态数相等 B.( ) M1和M2的有向边条数相等C.( ) M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等

3.文法G:S→xSx|y所识别的语言是_____。 A.( ) xyx B.( ) (xyx)* C.( ) xnyxn(n≥0) D.( ) x*yx* 4.如果文法G是无二义的,则它的任何句子α_____。 A.( )最左推导和最右推导对应的语法树必定相同 B.( ) 最左推导和最右推导对应的语法树可能不同 C.( ) 最左推导和最右推导必定相同 D.( )可能存在两个不同的最左推导,但它们对应的语法树相同 5.构造编译程序应掌握______。 A.( )源程序B.( ) 目标语言 C.( ) 编译方法 D.( ) 以上三项都是 6.四元式之间的联系是通过_____实现的。 A.( ) 指示器B.( ) 临时变量 C.( ) 符号表 D.( ) 程序变量 7.表达式(┐A∨B)∧(C∨D)的逆波兰表示为_____。 A. ( ) ┐AB∨∧CD∨B.( ) A┐B∨CD∨∧ C.( ) AB∨┐CD∨∧ D.( ) A┐B∨∧CD∨ 8. 优化可生成_____的目标代码。 A.( ) 运行时间较短B.( ) 占用存储空间较小C.( ) 运行时间短但占用存空间大D.( ) 运行时间短且占用存储空间小 9.下列______优化方法不是针对循环优化进行的。 A. ( ) 强度削弱 B.( ) 删除归纳变量 C.( ) 删除多余运算 D.( ) 代码外提

编译原理试题及答案——加强版

编译原理试题及答案 <高级版> 一、对于文法 G[S] : S → 1A | 0B | ε A → 0S | 1AA B → 1S | 0BB ⑴ (3 分 ) 请写出三个关于 G[S] 的句子; ⑵ (4 分 ) 符号串 11A0S 是否为 G [S] 的句型?试证明你的结论。 ⑶ (3 分 ) 试画出 001B 关于 G [S] 的语法树。 二、请构造一个文法,使其产生这样的表达式 E :表达式中只含有双目运算符 + 、 * ,且 + 的优先级高于 * , + 采用右结合, * 采用左结合,运算对象只有标识符 i ,可以用括号改变运算符优先级。要求给出该文法的形式化描述。 三、设有语言 L={ α | α∈ {0,1} + ,且α不以 0 开头,但以 00 结尾 } 。 ⑴试写出描述 L 的正规表达式; ⑵构造识别 L 的 DFA (要求给出详细过程,并画出构造过程中的 NDFA 、 DFA 的状态转换图,以及 DFA 的形式化描述 ) 。 四、给定文法 G[S] : S → AB A → a B | bS | c B → AS | d ⑴ (6 分 ) 请给出每一个产生式右部的 First 集;

⑵ (3 分 ) 请给出每一个非终结符号的 Follow 集; ⑶ (8 分 ) 请构造该文法的 LL(1) 分析表; ⑷ (8 分 ) 什么是 LL(1) 文法?该文法是 LL(1) 文法吗?为什么? 五、给定文法 G[S] : S → SaA|a A → AbS|b ⑴请构造该文法的以 LR(0) 项目集为状态的识别规范句型活前缀的 DFA 。 ⑵请构造该文法的 LR(0) 分析表。 ⑶什么是 LR(0) 文法?该文法是 LR(0) 文法吗?为什么? ⑷什么是 SLR(1) 文法?该文法是 SLR(1) 文法吗?为什么? 六、给定下列语句: if a+b>c then x := a*(b-c) + (b*c-d)/e ⑴写出其等价的逆波兰表示; ⑵写出其等价的四元式序列。 七、已知下列 C 语言程序: int * f() { int a = 100; return &a; } main()

郑州大学编译原理试卷及答案(往年试题整合)

二填空题 1. 不同的编译程序关于数据空间的存储分配策略可能不同,但大部分编译中采用的方案有两种:静态存储分配方案和动态存储分配方案,而后者又分为(栈式动态存储分配)和(堆式动态存储分配)。 2. 规范规约是最(左)规约。 3. 编译程序的工作过程一般划分为5个阶段:词法分析、(语法分析)、语义分析与中间代码生成,代码优化及(目标代码生成)。另外还有(表格管理)和出错处理。 4.表达式x+y*z/(a+b)的后缀式为(xyz*ab+/+ )。 5.文法符号的属性有综合属性和(继承属性)。 6.假设二位数组按行存放,而且每个元素占用一个存储单元,则数组a[1..15,1..20]某个元素a[i,j]的地址计算公式为(a+(i-1)*20+j-1 )。7.局部优化是局限于一个(基本块)范围内的一种优化。 8词法规则通常可以用____正规式________,正规文法、____自动机________描述;语法规则通常用___2型文法___来描述;语义规则通常用__属性文法_____来描述。 9编译原理的工作过程一般划分为:词法分析、语法分析、语义分析、优化和目标代码生成五个阶段。 1.( 最右推导 )称为规范推导。 2.编译过程可分为(词法分析),(语法分析),(中间代码生成),(代码优化)和(目标代码生成)五个阶段。

3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是(二义性的)。 4.从功能上说,程序语言的语句大体可分为(执行性)语句和(说明性)语句两大类。 5.语法分析器的输入是(单词符号),其输出是(语法单位)。 6.扫描器的任务是从(源程序)中识别出一个个(单词符号)。 7.符号表中的信息栏中登记了每个名字的有关的性质,如(类型、种属、所占单元大小、地址)等等。 8.一个过程相应的DISPLAY表的内容为(现行活动记录地址和所有外层最新活动记录的地址)。 9.一个句型的最左直接短语称为句型的(句柄)。 10.常用的两种动态存贮分配办法是(栈式)动态分配和(堆式)动态分配。 11.一个名字的属性包括( 类型)和( 作用域 )。 12.常用的参数传递方式有(传地址),(传值)和(传名)。 13.根据优化所涉及的程序范围,可将优化分成为(局部优化),(循环优化)和(全局优化)三个级别。 14.语法分析的方法大致可分为两类,一类是(自上而下)分析法,另一类是(自下而上)分析法。 15.预测分析程序是使用一张(分析表)和一个(符号栈)进行联合控制的。 16.常用的参数传递方式有(传地址),(传值)和(传名)。

编译原理试题A及答案 2

编译原理试题A 一、单项选择题(每题1分,共20分) 1、哪个不是编译系统的组成部分(C ) A.词法分析器 B. 代码生成器 C.设备管理程序 D. 语法分析器 2. 设有表达式a*b-c,将其中a*b识别为表达式的编译阶段是什么 ( B ) A.词法分析 B. 语法分析 C.语义分析 D. 代码生成 3. 下面不能用于对文法进行描述的是(A ) A.源语言 B. EBNF C.BNF D. 语法图 4. 设有文法G[S]: S→S1|S0|Sa|Sc|a|b|c,下列符号串中不是该文法的句子的是 (A ) A.ab0 B. a0c01 C.aaa D. bc10 5. 文法G[S]: S→aA A→bB B→a|aS ,则L(G)为(C )A.{(ab)n a|n≥1} B. {a (ba)n|n≥1} C.{(aba)n|n≥1} D. {(aba)n|n≥0} 6. 哪个不是DFA的构成成分(B ) A.有穷字母表 B. 初始状态集合 C.终止状态集合 D. 有限状态集合 7.词法分析器的输入是(B ) A.单词符号串 B.源程序C.语法单位 D.目标程序 8.在词法分析阶段不能识别的是(C )A.标识符 B. 运算符C.四元式 D. 常数 9.设有一段C语言程序 while(i&&++j) { c=2.19; j+=k;

i++; } ,经过词法分析后可以识别的单词个数是(B )A.19 B.20 C.21 D.23 10.自上而下语法分析的主要动作是(B )A.移进 B. 推导C.规约 D. 匹配 11.下面不属于LL(1)分析器的组成部分是(D )A.LL(1)总控程序 B. LL(1)分析表 C.分析栈 D.源程序串 12.设有文法G[S]为 S→AB|bC,A→ε|b,B→ε|aD,C→AD|b,D→aS|c 则FOLLOW(A)为(A )A.{a,c,#} B.{c,#} C.{a,#} D.{#} 13.设有文法G[S]: S→Ap|Bq,A→a|cA,B→b|dB,则FIRST(Ap)为( C )A.{p,q} B. {b,d} C.{a,c} D. 其他 14.自下而上语法分析的主要分析动作是(D )A.推导 B. 规约C.匹配 D. 移进-规约 15.算法优先分析中,可规约串是(C )A.句柄B.活前缀C.最左素短语D.素短语16. 设有文法G={{S},{a},{S→SaS|ε},S},该文法是(B ) A.LL(1)文法B C.SLR(1)文法D.算法优先文法 17、中间代码生成时所以据的是(C )A.语法规则B.词法规则C.语义规则 D.等价变换规则 18、给定文法G: E→E+T|T,T→T*F|F,F→i|(E) 则L(G)中的一个句子i+i+(i*i)*i的逆波兰表示为(C)A.iii*i++B.ii+iii**+ C.ii+ii*i*+ D.其他 19.在编译程序中与生成中间代码的目的无关的是(B)A.便于目标代码优化B.便于存储空间的组织 C.便于目标代码的移植D.便于编译程序的移植

编译原理期末复习题(含答案)

模拟习题1 一、单项选择题 1、将编译程序分成若干个“遍”是为了。 a.提高程序的执行效率 b.使程序的结构更加清晰 c.利用有限的机器内存并提高机器的执行效率 d.利用有限的机器内存但降低了机器的执行效率 2、构造编译程序应掌握。 a.源程序b.目标语言 c.编译方法d.以上三项都是 3、变量应当。 a.持有左值b.持有右值 c.既持有左值又持有右值d.既不持有左值也不持有右值 4、编译程序绝大多数时间花在上。 a.出错处理b.词法分析 c.目标代码生成d.管理表格 5、不可能是目标代码。 a.汇编指令代码b.可重定位指令代码 c.绝对指令代码d.中间代码 6、使用可以定义一个程序的意义。 a.语义规则b.词法规则 c.产生规则d.词法规则 7、词法分析器的输入是。 a.单词符号串b.源程序 c.语法单位d.目标程序 8、中间代码生成时所遵循的是- 。 a.语法规则b.词法规则 c.语义规则d.等价变换规则 9、编译程序是对。 a.汇编程序的翻译b.高级语言程序的解释执行 c.机器语言的执行d.高级语言的翻译 10、语法分析应遵循。 a.语义规则b.语法规则 c.构词规则d.等价变换规则 解答 1、将编译程序分成若干个“遍”是为了使编译程序的结构更加清晰,故选b。 2、构造编译程序应掌握源程序、目标语言及编译方法等三方面的知识,故选d。 3、对编译而言,变量既持有左值又持有右值,故选c。 4、编译程序打交道最多的就是各种表格,因此选d。 5、目标代码包括汇编指令代码、可重定位指令代码和绝对指令代码3种,因此不是目标代码的只能选d。 6、词法分析遵循的是构词规则,语法分析遵循的是语法规则,中间代码生成遵循的是语义规则,并且语义规则可以定义一个程序的意义。因此选a。 7、b 8、c 9、d 10、c

编译原理试题及答案

华中科技大学武昌分校 《编译原理》试卷A 专业班级:_________学号:_________姓名:__________总分 一、单项选择题(共10小题,每小题2分) (题分 20分) 1.语言是 A .句子的集合 B .产生式的集合 C .符号串的集合 D .句型的集合 2.编译程序前三个阶段完成的工作是 A .词法分析、语法分析和代码优化 B .代码生成、代码优化和词法分析 C .词法分析、语法分析、语义分析和中间代码生成 D .词法分析、语法分析和代码优化 3.一个句型中称为句柄的是该句型的最左 A .非终结符号 B .短语 C .句子 D .直接短语 4.下推自动机识别的语言是 A .0型语言 B .1型语言 C .2型语言 D .3型语言 5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即 A . 字符 B .单词 C .句子 D .句型 6.对应Chomsky 四种文法的四种语言之间的关系是 A .L 0?L 1?L 2?L 3 B .L 3?L 2?L 1?L 0 C .L 3=L 2?L 1?L 0 D .L 0?L 1?L 2=L 3 7.词法分析的任务是 A .识别单词 B .分析句子的含义 C .识别句子 D .生成目标代码 8.常用的中间代码形式不含 A .三元式 B .四元式 C .逆波兰式 D .语法树 9. 代码优化的目的是 A .节省时间 B .节省空间 装 订 线 得分

C .节省时间和空间 D .把编译程序进行等价交换 10.代码生成阶段的主要任务是 A .把高级语言翻译成汇编语言 B .把高级语言翻译成机器语言 C .把中间代码变换成依赖具体机器的目标代码 D .把汇编语言翻译成机器语言 二、填空题(本大题共5小题,每小题2分)(题分 10分) 1.编译程序首先要识别出源程序中每个( ),然后再分析每个( )并翻译其意义。 2.编译器常用的语法分析方法有( )和( )两种。 3.通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序的( ),中间代码生成、代码优化与目标代码的生成则是对源程序的( )。 4.程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即:( )方案和( )方案。 5.对编译程序而言,输入数据是( ),输出结果是( )。 三、名词解释题(共5小题,每小题4分) (题分 20分) 1.词法分析 2.LL(1)文法 3.语法树 4.LR(0)分析器 5.语言和文法 四、简答题(共4小题,每小题5分) (题分 20分) 1.编译程序和高级语言有什么区别? 2.编译程序的工作分为那几个阶段? 3.简述自下而上的分析方法。 4.简述代码优化的目的和意义。 五、综合应用题(共3小题,每小题10分) (题分 30分) 得分 得分 得分

(完整版)编译原理习题及答案(整理后)

第一章 1、将编译程序分成若干个“遍”是为了。 a.提高程序的执行效率 b.使程序的结构更加清晰 c.利用有限的机器内存并提高机器的执行效率 d.利用有限的机器内存但降低了机器的执行效率 2、构造编译程序应掌握。 a.源程序b.目标语言 c.编译方法d.以上三项都是 3、变量应当。 a.持有左值b.持有右值 c.既持有左值又持有右值d.既不持有左值也不持有右值 4、编译程序绝大多数时间花在上。 a.出错处理b.词法分析 c.目标代码生成d.管理表格 5、不可能是目标代码。 a.汇编指令代码b.可重定位指令代码 c.绝对指令代码d.中间代码 6、使用可以定义一个程序的意义。 a.语义规则b.语法规则 c.产生规则d.词法规则 7、词法分析器的输入是。 a.单词符号串b.源程序 c.语法单位d.目标程序 8、中间代码生成时所遵循的是- 。 a.语法规则b.词法规则 c.语义规则d.等价变换规则 9、编译程序是对。 a.汇编程序的翻译b.高级语言程序的解释执行 c.机器语言的执行d.高级语言的翻译 10、语法分析应遵循。 a.语义规则b.语法规则 c.构词规则d.等价变换规则 二、多项选择题 1、编译程序各阶段的工作都涉及到。 a.语法分析b.表格管理c.出错处理 d.语义分析e.词法分析 2、编译程序工作时,通常有阶段。 a.词法分析b.语法分析c.中间代码生成 d.语义检查e.目标代码生成 三、填空题 1、解释程序和编译程序的区别在于。 2、编译过程通常可分为5个阶段,分别是、语法分析、代码优化和目标代码生成。 3、编译程序工作过程中,第一段输入是,最后阶段的输出为程序。

《编译原理》考试试题及答案

《编译原理》考试试题及答案(附录) 一、判断题: 1.一个上下文无关文法的开始符,可以是终结符或非终结符。 ( X ) 2.一个句型的直接短语是唯一的。 ( X ) 3.已经证明文法的二义性是可判定的。( X ) 4.每个基本块可用一个DAG表示。(√) 5.每个过程的活动记录的体积在编译时可静态确定。(√) 6.2型文法一定是3型文法。( x ) 7.一个句型一定句子。 ( X ) 8.算符优先分析法每次都是对句柄进行归约。 (应是最左素短语) ( X ) 9.采用三元式实现三地址代码时,不利于对中间代码进行优化。(√) 10.编译过程中,语法分析器的任务是分析单词是怎样构成的。 ( x ) 11.一个优先表一定存在相应的优先函数。 ( x ) 12.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。 ( ) 13.递归下降分析法是一种自下而上分析法。 ( ) 14.并不是每个文法都能改写成LL(1)文法。 ( ) 15.每个基本块只有一个入口和一个出口。 ( ) 16.一个LL(1)文法一定是无二义的。 ( ) 17.逆波兰法表示的表达试亦称前缀式。 ( ) 18.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。 ( ) 19.正规文法产生的语言都可以用上下文无关文法来描述。 ( ) 20.一个优先表一定存在相应的优先函数。 ( ) 21.3型文法一定是2型文法。 ( ) 22.如果一个文法存在某个句子对应两棵不同的语法树,则文法是二义性的。 ( ) 二、填空题: 1.( 最右推导 )称为规范推导。 2.编译过程可分为(词法分析),(语法分析),(语义分析和中间代码生成),(代码优化)和(目 标代码生成)五个阶段。 3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是()。 4.从功能上说,程序语言的语句大体可分为()语句和()语句两大类。 5.语法分析器的输入是(),其输出是()。 6.扫描器的任务是从()中识别出一个个()。 7.符号表中的信息栏中登记了每个名字的有关的性质,如()等等。 8.一个过程相应的DISPLAY表的内容为()。 9.一个句型的最左直接短语称为句型的()。 10.常用的两种动态存贮分配办法是()动态分配和()动态分配。 11.一个名字的属性包括( )和( )。 12.常用的参数传递方式有(),()和()。 13.根据优化所涉及的程序范围,可将优化分成为(),()和()三个级别。 14.语法分析的方法大致可分为两类,一类是()分析法,另一类是()分析法。 15.预测分析程序是使用一张()和一个()进行联合控制的。 16.常用的参数传递方式有(),()和()。 17.一张转换图只包含有限个状态,其中有一个被认为是()态;而且实际上至少要有一个()态。

编译原理期末考试试卷及答案

. 得分 20分)填空题(每空2分,共一.但大部分编译中采用的方案有两1. 不同的编译程序关于数据空间的存储分配策略可能不同,。(2)种:静态存储分配方案和动态存储分配方案,而后者又分为(1)和 3)规约。2. 规范规约是最(、语义分析与中间代码生成,代码优化及)个阶段:词法分析、(453. 编译程序的工作过程一般划分为 6)和出错处理。)。另外还有((5。(7)4.表达式x+y*z/(a+b)的后缀式为 。(8) 5.文法符号的属性有综合属性和j],a[1..15,1..20]某个元素a[i6.假设二位数组按行存放,而且每个元素占用一个存储单元,则数组。的地址计算公式为(9)) 范围内的一种优化。7.局部优化是局限于一个(10得分分)分,共201-6为单选题,7-8为多选题,每问2(二.选择题 ,以)包括四个组成部分:一组终结符,一组非终结符,一个( 1. 一个上下文无关文法G 。)及一组(文法.开始符号 D.A.字符串 B.产生式 C )。 2.程序的基本块是指( 一个仅有一个入口和一个出口的语句一个子程序 B.A.一组顺序执行的程序段,仅有一个入口和一个出口一个没有嵌套的程序段 D.C. )分析方法。高级语言编译程序常用的语法分析方法中,递归下降分析法属于(3. 自右向左. D自顶向下 C.自底向上 BA.自左向右. )特别适用于表达式的分析。( 4.在通常的语法分析方法中, LR分析法..算符优先分析法 BA 1)分析法. LL( DC.递归下降分析法。.经过编译所得到的目标程序是(5 )间接三元式序列.四元式序列A. B 机器语言程序或汇编语言程序.二元式序列 D.C 。)).6 一个文法所描述的语言是(;描述一个语言的文法是( C B A.唯一的.不唯一的.可能唯一,也可能不唯一. . 7.如果在文法G中存在一个句子,当其满足下列条件()之一时,则称该文法是二义文法。A.其最左推导和最右推导相同 B.该句子有两个不同的最左推导 C.该句子有两个不同的最右推导 D.该句子有两棵不同的语法树 E.该句子对应的语法树唯一 8.下面()语法制导翻译中,采用拉链—回填技术。 A. 赋值语句 B. 布尔表达式的计算 C. 条件语句 D. 循环语句

编译原理试题及答案

<编译原理>历年试题及答案 一.(每项选择2分,共20分)选择题 1.将编译程序分成若干个“遍”是为了_b__。 a.提高程序的执行效率 b.使程序的结构更加清晰 c.利用有限的机器内存并提高机器的执行效率 d.利用有限的机器内存但降低了机器的执行效率 2.构造编译程序应掌握__d__。 a.源程序 b.目标语言 c.编译方法 d.以上三项都是 3.变量应当c_。 a.持有左值 b.持有右值 c.既持有左值又持有右值 d.既不持有左值也不持有右值 4.编译程序绝大多数时间花在_d___上。 a.出错处理 b.词法分析 c.目标代码生成 d.管理表格 5.词法分析器的输出结果是_c___。 a.单词的种别编码 b.单词在符号表中的位置 c.单词的种别编码和自身值 d.单词自身值 6.正规式MI和M2等价是指__c__。 a.MI和M2的状态数相等 b.Ml和M2的有向弧条数相等。 C.M1和M2所识别的语言集相等 d.Ml和M2状态数和有向弧条数相等7.中间代码生成时所依据的是—c。 a.语法规则b.词法规则c.语义规则d.等价变换规则 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.程序所需的数据空间在程序运行前就可确定,称为____c__管理技术。 a.动态存储 b.栈式存储 c.静态存储 d.堆式存储 10.堆式动态分配申请和释放存储空间遵守___d_____原则。 a.先请先放 b.先请后放 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)消除左递归和回溯;

编译原理试卷及答案

东 北 大 学 秦 皇 岛 分 校 课程名称: 编译原理 试卷: (B )答案 考试形式: 闭卷 授课专业: 计算机科学与技术 考试日期: 年 月 日 试卷:共 2 页 题号 一 二 三 四 总分 得分 阅卷人 一、填空题(每空2分,共30分) 1、编译程序的整个过程可以从逻辑上划分为词法分析、 语法分析 、语义分析、中间代码生成、 代码优化 和目标代码生成等几个阶段,另外还有两个重要的工 作是 理 和出错处理。表格管 2、规范规约中的可归约串是 句柄 ,算符优先分析中的可归约串是 最左素短语 。 3、语法分析方法主要可分为 自顶向下 和 自底向上 两大类。 4、LR (0)文法的项目集中不会出现 移进-归约 冲突和 归约-归约 冲突。 5、数据空间的动态存储分配方式可分为 栈式 和 堆式 两种。 6、编译程序是指能将 源语言 程序翻译成 目标语言 程序的程序。 7、确定有穷自动机DFA 是 NFA 的一个特例。 8、表达式 (a+b)*c 的逆波兰表示为 ab+c* 。 二、选择题(每题2分,共20分) 1、LR 语法分析栈中存放的状态是识别 B 的DFA 状态。 A 、前缀 B 、可归前缀 C 、项目 D 、句柄 2、 D 不可能是目标代码。 A 、汇编指令代码 B 、可重定位指令代码 C 、绝对机器指令代码 D 、中间代码 3、一个控制流程图就是具有 C 的有向图 A 、唯一入口结点 B 、唯一出口结点 C 、唯一首结点 D 、唯一尾结点 4、设有文法G[S]:S →b|bB B →bS ,则该文法所描述的语言是 C 。 A 、L (G )={b i |i ≥0} B 、L (G )={b 2i |i ≥0} C 、L (G )={b 2i+1|i ≥0} D 、L (G )={b 2i+1|i ≥1} 5、把汇编语言程序翻译成机器可执行的目标程序的工作是由 B 完成的。 A 、编译器 B 、汇编器 C 、解释器 D 、预处理器 6、在目标代码生成阶段,符号表用于 D 。 A 、目标代码生成 B 、语义检查 C 、语法检查 D 、预处理器地址分配0 7、规范归约是指 B 。 A 、最左推导的逆过程 B 、最右推导的逆过程 C 、规范推导 D 、最左归约逆过程 8、使用 A 可以定义一个程序的意义。 A 、语义规则 B 、词法规则 C 、语法规则 D 、左结合规则 9、经过编译所得到的目标程序是 D 。 A 、三元式序列 B 、四元式序列 C 、间接三元式 D 、机器语言程序或汇编语言程序 10、在一个基本块内进行的代码优化是 B 。 A 、全局优化 B 、局部优化 C 、循环优化 D 、代码外提 三、简答题(3小题,共30分) 1、已知文法G[S]:S →Ac|aB A →ab B →bc 证明该文法具有二义性(本题6分) 证明:因为该文法的句型abc 存在如下两棵语法树: 装 订 线 装 订 线 内 不 要 答 题 学 号 姓 名 班 级

编译原理试题汇总+编译原理期末试题(8套含答案+大题集)

编译原理考试题及答案汇总 一、选择 1将编译程序分成若干个“遍”是为了 _B_。 A .提高程序的执行效率 B. 使程序的结构更加清晰 C. 利用有限的机器内存并提高机器的执行效率 D. 利用有限的机器内存但降低了机器的执行效率 2.正规式 Ml 和M2等价是指 _C__。 A . Ml 和M2的状态数相等 B.MI 和M2的有向弧条数相等。 C .M1和M2所识别的语言集相等 D. Ml 和M2状态数和有向弧条数相等 14 .文法分为四种类型,即 0型、1型、2型、3型。其中3型文法是—B_。 A. () 短语文法B .()正则文法C .()上下文有关文法 D .() 上下文无关文法 15 . 一个上下文无关文法 G 包括四个组成部分,它们是:一组非终结符号,一 组终结符 号,一个开始符号,以及一组 __D_。 A. ()句子B .() 句型C .()单词D .() 产生式 16 .通常一个编译程序中, 不仅包含词法分析,语法分析,中间代码生成,代码优化,目 标 代码生成等五个部分,还应包括 _C ______ 。 3 .中间代码生成时所依据的是 _C_。 A.语法规则 B .词法规则 C .语义规则 D . 4.后缀式ab+cd+/可用表达式__B_来表示。 A. a+b/c+d B . (a+b)/(c+d) C . 6. 一个编译程序中,不仅包含词法分析, 生成等五个部分。 A.()语法分析B .()文法分析 词法分析器用于识别__C ―。 A.() 字符串B .()语句C .() 语法分析器则可以发现源程序中的 . 等价变换规则 7. 9. 10. 11. 12. 13. a+b/(c+d) D _A —, a+b+c/d 中间代码生成, 代码优化, 目标代码 C .()语言分析 D .() 单词D .()标识符 D 。 A.()语义错误 B .() 语法和语义错误 C. ()错误并校正 D .()语法错 误 下面关于解释程序的描述正确的是 (1) (2) (3) A. B___。 解释程序的特点是处理程序时不产生目标代码 解释程序适用于 COBOL 和FORTRAN 语言 解释程序 是为打开编译程序技术的僵局而开发的 ()(1)(2) B . ( ) (1) C . ( ) (1)(2)(3) D B 方法。 解释程序处理语言时,大多数采用的是 () () () () A. B. C. D. 源程序命令被逐个直接解释执行 先将源程序转化为中间代码 , 先将源程序解释转化为目标程序 以上方法都可以 再解释执行 ,再执行 解释分析 编译过程中,语法分析器的任务就是 (1)分析单词是怎样构成的 (2) (3)分析语句和说明是如何构成程序的 A.()⑵(3) B .()⑵(3)(4)C 编译程序旦 A.() 文法 A. () B. () C () __B___。 分析单词串是如何构成语句和说明的 (4) 分析程序的结构 ()(1)(2)(3) D . ( ) (1)(2)(3)(4) 是'种 ____ C _ 。 汇编程序B .() G 所描述的语言是 文法G 的字母表 文法G 的字母表 由文法的开始符号推出的所有终极符串 由文法的开始符号推出的所有符号串 C .()解释程序 D .()目标程序 的集合。 翻译程序 C V 中所有符号组成的符号串 V 的闭包VG 中的所有符号串

编译原理期末考试习题及答案

一、 填空题| (每题4分,共20分) 1. 乔母斯基定义的3型文法(线性文法)产生式形式 A Ba|a,或A aB|a , A, B € Vn, a,b € Vt 。 2. 语法分析程序的输入是 单词符号,其输出是 语法单位。 3型为B .aB 的LR(0)项目被称为 移进 项目,型为B a.B 的LR (0) 项目被称为待约 项目, 4. 在属性文法中文法符号的两种属性分别为 继承属性和综合属性。 5、 运行时存贮管理方案有 静态存储分配、动态存储分配 和堆式存储分配 和方案。 二. 已知文法G(S) ⑴ E T | E+T ⑵ T F | F*F ⑶ F (E ) | i (1) 写出句型(T*F+i )的最右推到并画出语法树。(4分) (2) 写出上述句型的短语,直接短语和句柄。 (4分) 答:(1)最右推到(2分) E ==> T ==> F ==> (E) ==> (E+T) ==> (E+F) ==> (E+i) ==> (T+i) ==> (T*F+i) (2)语法树(2分) E ■ /K (E ) /1\ H + T /|\ 1 下* F I (3) (4 分) 短语: (T*F+i ) ,T*F+i ,T*F ,i 直接短语:T*F , i 句柄:T*F S a s E 三?证明文法 G(S) : S SaS | £是二义的。(6分) 答:句子 aaa 对应的两颗语法树为: s a s S a s S MS S a S S a S

因此,文法是二义文法

a b {F} ①{S} {S} {S,A} ① {S,A} {S,A} {S} 五?构造识别正规语言b*a(bb*a)*b* 最小的DFA(要求写出求解过程)。(15分) 答:(1)对应的NFA(5分) (21NFA5 a b {0} {1 , 3} {0} {1,3} ①{2 , 3} {2,3} {1,3} {2,3} 六.已知文法G(S): (1)S A | a | (T) ⑵ T T,S | S 试:(1)消除文法的左递归;(4分) (2)构造相应的first 和follow 集合。(6分) 答:(1)消除文法的左递归后文法G'( S)为: (1)S A | a | (T) ⑵ T ST' |S (3)T ' ,ST ' | & (4 分) b b (5 分) 四.给定正规文法G( S): (1) S Sa | Ab |b ⑵A Sa 请构造与之等价的DFA ( 6分)

相关文档
最新文档