B→B(B)| e 构造该拓广文法的LR(0)项目集规范族C;判断该文法是否为SLR(1)文法,说明理由。
时间: 2023-06-18 15:03:40 浏览: 215
LR(0)项目集规范族构造
4星 · 用户满意度95%
首先将该拓广文法表示为如下形式:
```
S' -> B
B -> B(B) | ε
```
对该文法构造LR(0)项目集规范族C:
```
I0:
S' -> .B
I1:
S' -> B.
B -> .B(B)
B -> .
I2:
B -> B(.B)
B -> .B(B)
B -> .
I3:
B -> B(B.)
```
接下来,我们需要判断该文法是否为SLR(1)文法。SLR(1)文法必须满足以下两个条件:
1. 对于每个文法符号,在任何一个项目集中,其follow集中的符号与该文法符号的lookahead集中的符号没有交集;
2. 对于任何一个规约项 A -> α,如果存在两个不同的终结符号 a 和 b,使得a ∈ follow(A) 且 b ∈ follow(A),则必须满足 FIRST(αa) ∩ FIRST(αb) = ∅。
对于条件1,我们观察上面的LR(0)项目集规范族C,发现对于B这个文法符号,它在I2的lookahead集合中有"(",而在I3的lookahead集合中有")",两个集合有交集,因此该文法不是SLR(1)文法。
因此,该文法不是SLR(1)文法。
阅读全文