2、设有文法G[S]:S 一(S)|c。试判断该文法是否SLR(1)文法,若不是,请说明理由;若是,请构造SLR(1)分析表。(15
时间: 2024-03-31 15:34:38 浏览: 74
LL(1)型文法的判断、求first集、FOLLOW集、select集、LL(1)文法判别、构造预测分析表、非LL(1)文法转换
该文法是一个非SLR(1)文法,因为它存在移进-归约冲突。
首先,我们需要构造该文法的LR(0)项集族。初始状态为:
```
I0: S' -> .S
S -> .(S)
S -> .c
```
通过对每个项集求闭包和转移,我们得到以下项集族:
```
I0:
S' -> .S
S -> .(S)
S -> .c
(S -> .S), (
(S -> .S), )
(S -> (S.), )
(S -> (S.), )
(S -> (S.), c)
(S -> (S.), (S)
(S -> (S.), (S)
(S -> (S.), )
(S -> (S.), )
I1:
S' -> S.
```
接下来,我们需要构造该文法的SLR(1)分析表。由于存在移进-归约冲突,因此该文法不是SLR(1)文法。
具体来说,当读入符号为左括号时,我们需要进行移进操作,但是在状态I0中,该符号同时可以进行规约操作。在状态I0中,由于存在项 (S -> .(S), ) 和 (S -> .(S), (S) ,它们的LOOKAHEAD集合都是左括号,因此在读入左括号时无法确定应该进行移进操作还是规约操作。因此,该文法不是SLR(1)文法。
阅读全文