已知文法G[S]: S→bAS | bA A→aSc构造该文法的SLR(1)分析表。
时间: 2024-05-29 11:13:27 浏览: 138
好的,我可以为您解答这个问题。
首先,我们需要构造该文法的项目集规范族。
对于该文法,我们可以列出初始状态的项目集:
I0:
S → ·bAS
S → ·bA
A → ·aSc
然后我们根据LR(1)的移入规约规则,构造出该文法的项目集规范族:
I0:
S → ·bAS
S → ·bA
A → ·aSc
--------------------
A → ·aS closure({S → ·bAS}, a)
--------------------
S → b·AS closure({A → ·aS}, S)
S → b·A closure({A → ·aS}, A)
I1:
A → a·Sc
--------------------
C → ·aSc closure({A → a·Sc}, S)
I2:
S → bA·S closure({S → b·AS}, S)
S → bA· closure({S → b·A}, S)
--------------------
S → ·bAS closure({A → ·aSc}, a)
S → ·bA closure({A → ·aSc}, b)
I3:
A → aS·c closure({C → ·aSc}, c)
然后我们可以推出该文法的SLR(1)分析表如下:
| a | b | c | $ | S | A |
--- | --- | --- | --- | --- | --- | --- |
0 | | s2 | | | 1 | 3 |
1 | | | | acc | | |
2 | s4 | | | | 5 | |
3 | | s6 | | | | |
4 | | | | r2 | | |
5 | | s2 | | | | 7 |
6 | | | r3 | | | |
7 | | | r1 | | | |
其中,s表示移入状态,r表示规约状态,acc表示接受状态,数字表示转移所到达的状态编号。
阅读全文