2020-2021-2编译原理测试
一(10分)证明以下两个文法等价:
文法1的产生式如下,S为文法开始符号
(1) S -> AB
(2) A -> aAb
(3) A -> &
(4) B -> Bb
(5) B -> b
文法2的产生式如下,S为文法开始符号
(1) S -> aSb
(2) S -> B
(3) B-> Bb
(4) B -> b
二(10分)文法 G[S]:
S -> XY | b
X -> XaS | bY
Y -> a | Sb
(1)画出句型baabbb 的语法树;(5分)
(2)写出该句型的所有短语、直接短语和句柄。(5分)
三 (5分)对于如下文法,构造识别该文法描述语言的有穷自动机的状态转换图。
G[S]: S -> 0A
A -> 0A | 0B
B -> 1A | 1
四(20分)给定文法 G[S]:其终结符集合为{a,b,c},开始符号为S,产生式集合如下:
S -> b C S A | &
A -> a S | &
C -> c
1、(10分)下表给出各产生式右部文法符号串的 First 集合,各产生式左部非终结符的 Follow 集合。试填充其中空白表项的内容:
2、(5分) 以下是文法 G[S] 的预测分析表,试补充完整:
3、(5分) G[S] 不是 LL(1) 文法,试解释为什么?
五(10分)设G[S]为上下文无关文法,其终结符集合为{a,b,c},开始符号为S,产生式集合如下:
S -> Ac S | c
A -> S b | a
试:消除文法的左递归。
六(25分)给定如下文法 G[S]:
(1)S -> S [ S ]
(2)S -> ( S )
(3)S -> &
为文法 G[S] 增加产生式S’ -> S ,得到增广文法 G’[S’]
- (10分)求文法 G’[S’]相应的LR(0)自动机,并指出LR(0)自动机中全部冲突状态及冲突类型。
- (5分)文法 G[S] 是 SLR(1) 文法? 试解释为什么?
- (10分)若是 SLR(1) 文法,请为其构造SLR(1)分析表。
七(20)、给定如下文法 G[S]:
(1) S -> A
(2) S -> &
(3) A -> ( S ) S
(4) A -> a
为文法 G(S) 增加产生式 P -> S,得到增广文法G’[P],
试:1.(10分)给出该文法的LR(1)项目集规范族划分;
2.(10分)构造相应的LR(1)的分析表。