13.设有如下文法:G: V→N|N[E] E→V V+E G: S→aABe A→b Abc S→SbA aA A→Bc (1)将上述文法改写为等价的LL(1)文法(2)求上述文法各个语法变量的FIRST集(3)构造上述文法的预测分析表。
时间: 2024-04-30 22:20:34 浏览: 162
(1) 改写后的 LL(1) 文法如下:
```
V → N | N[E]
E → V E'
E' → ε | [E]
N → S | A | B | c
S → a A B e
A → b A' | ε
A' → c
B → ε
```
(2) 各个语法变量的 FIRST 集如下:
```
FIRST(V) = {a, b, c}
FIRST(E) = {a, b, c}
FIRST(E') = {ε, [}
FIRST(N) = {a, b, c}
FIRST(S) = {a}
FIRST(A) = {b, ε}
FIRST(A') = {c}
FIRST(B) = {ε}
```
(3) 构造预测分析表如下:
```
| a | b | c | [ | ] | e |
-------+-----+-----+-----+-----+-----+-----+
V | N | N | N | N | | |
E | a | b | c | | | |
E' | ε | | | [ | ε | |
N | S | A | B | c | | |
S | a | | | | | e |
A | | b | ε | | | |
A' | | | c | | | |
B | ε | | | | | |
```
其中,某个非终结符 X 在分析输入符号 a 时所对应的产生式为 X → β 时,预测分析表中 X 的行和 a 的列交叉处填写 β。如果预测分析表中某个交叉处为空,则说明该文法不是 LL(1) 文法。
阅读全文