标签:
杂谈 |
分类: 编译原理 |
一、对于文法G(S):
S → bMb
M
L
1. 写出句型b(Ma)b的最右推导并画出语法树。
2. 写出上述句型的短语,直接短语和句柄。
二、设有文法 G[S] 为:
S → a|b|(A)
A → SdA|S
(1)完成算符优先关系表. 并判断 G[S] 是否为算符优先文法。
(2 )给出句型( SdSdS) 的短语、直接短语、句柄、素短语和最左素短语。
( 3) 给出输入串 (adb)# 的分析过程。
三、文法 G[P] : P → aPb|Q
Q → bQc|bSc
S → Sa|a
请构造它的 SLR (1)分析表,并说明它是不是 SLR (1)文法。
一.解答:
1. (4分)
2. (4分)
短语:
直接短语:
句柄:
二【解答】
I)先求文法G[S]的FIRSTVT集和LASTVT集:
LASTVT(A)={d,a,b,)}。
最后得到算符优先关系表,见表3.7。
由表3.7可以看出,任何两个终结符之间至多只满足=、<、>三种优先关系之一,故G[S]为算符优先文法。
(2)为求出句型(SdSdS)的短语、直接短语、句柄,我们先画出该句型对应的语法树,
如图3.11所示。
由图3.11得到:
而最左素短语就是该句型中所找到的最左边的那个素短语,即最左素短语必须具备3个
条件。
因此,由图3.12得到的SdS为句型(SdSdS)的素短语,它同时也是该句型的最左素短语。
(3)输入串(adb)#的分析过程见表3.8
为便于分析,同时给出了(adb)#的语法树,如图3.13所示。
三【解答】
将文法G[P]拓广为G[P`]:
G[P`]的DFA如图4.23所示
G[P`]的FOLLOW集如下图所示
最后得到SLR(1)分析表,见表4.20
由于SLR(1)分析表中不存在冲突,故文法G[P`]是SLR(1)文法。