编译原理期末考试习题及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
、填空题| (每题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
/|\
7K
(3) (4分)
短语:(T*F+i ) ,T*F+i ,T*F,i
直接短语:T*F,i
句柄:T*F
三•证明文法G(S) : S SaS | £是二义的。答:句子aaa
对应的两颗语法树为:
因此,文法是二义文法
(6分)
E
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}
六.已知文法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
(5 分)
四.给定正规文法G( S):
(1) S Sa | Ab |b
⑵A Sa
请构造与之等价的DFA ( 6分)
⑶ T ' ,ST ' | &
(4 分)
(2) (6分)
first
follow
S a A ( # ,)
T a A ( ) T' , £ )
七.已知文法 G (S ):
⑴ S SiA | A
⑵ A
A+B|B
(3) B A* | (
试构造非终止符的firstVT 和lastVT 集合。(10分) 答:(10分)
firstVT lastVT
S i , + , * ,
( i , + , * ,(
A + , * ,( + , * ,(
B * ,(
* ,(
八.已知文法 G (S ): (1) S B B
Follow
⑵B
a B S # ⑶B
b B a,b,# 的follow 集合如表:
试:(1)给出该文法的LR ( 0)项目集规范族划分;
2)填写相应的SLR ( 1)的分析表。(15分)
答:(1) LR (0)项目集规范族划分(8分)
(2) SLR (1)分析表(7分)
状态 Actio n
Goto
a b #
S B 0 S3
S4
1
2 1
Acc
2 S
3 S4
5 3 S3 S4
6
4 R3
R3
R3
5
R1
6
R2 R2
R2
11 S '
S.
I 2
B ,
I 3
S B.B --- I 5 b I 3
B a.B ---
B .aB -- B .aB -- B
.b --
B
.b --
丨4
B
b.
I 5
S BB.
I 6
B aB.
S
I B I a I b I
1 2
B
a I
b I
I 6 3
4
九.设某语言的not-then-else 语句的语法形式为:S not E then S 其语义解释为:
not E then { Backpatch ( $2.FC ,
nxq );
$$.cha in = $2.Tc }
{ Backpatch
( $2.chain ,
、填空题| (每题4分,共20分)
1. 乔母斯基定义的2型文法(上下文无关文法)产生式形式
A B ,A € Vn,
V+。
2. 词法分析程序的输入是 字符串,其输出是 单词符号o
3算符有限分析方法每次都是对 最左素短语 进行规约。型为B aB.的LR ( 0)项
目被称为规约 项目。 4、 写出 x:=b*(d-e )/(c-d )+e 的逆波兰式 xbde-*cd-/e+:= 。
5、 常用的两种动态存贮分配办法是 栈式存储分配和堆式存储— 分配。 二.已知文法 G(S):
(1) S A | a | (T)
⑵ T T,S | S
试:(1)写出句型(a,(a,a))的最左推到并画出语法树。(4分)
(2) 写出上述句子的短语,直接短语和句柄。 (4分)
答:(1)最左推到(2分)
S ==> (T) ==> (T,S) ==> (S,S) ==> (a,S) ==> (a,(T)) ==> (a,(T,S))==>
(a, (
S,S)) ==>
(a, (a,S))
==>
(a, (a,a))
(2) 语法树(2分
/l\
(I )
/l\ T , S I /l\
> (T )
nxq ) }
(2)写出每个产生式对应的语义动作。(7分) 答:(1)分段产生式(3分)及语义动作(7分)
(1) R