判断文法 E → aE | bE | a 是否是 SLR(1)文法,并为其构造 SLR 分析表
时间: 2024-06-10 13:05:08 浏览: 157
这是一个不是 SLR(1) 文法。
对于 SLR(1) 文法,要求在任何一个状态中,对于同一输入符号,只有一个对应的操作。
但是对于文法 E → aE | bE | a ,在输入符号 a 时,无论是移进还是规约操作都是合法的。因此,无法构造 SLR(1) 分析表。
注:下面是构造 SLR(1) 分析表的步骤,但是并不适用于该题目。
1. 计算 FIRST 和 FOLLOW 集合
首先计算 FIRST 和 FOLLOW 集合:
FIRST(E) = {a, b}
FOLLOW(E) = {$}
2. 构造状态
根据 FIRST 和 FOLLOW 集合,构造状态:
I0:
E → .aE | .bE | .a ($)
I1:
E → a.E | b.E | a. ($)
3. 构造项目集规范族
根据状态,构造项目集规范族:
I0:
E → .aE | .bE | .a ($)
I1:
E → a.E | b.E | a. ($)
I2:
E → aE. [$]
E → bE. [$]
4. 构造 ACTION 和 GOTO 表
根据项目集规范族,构造 ACTION 和 GOTO 表:
状态 a b $ E
------------------------------------
0 S1 S2 3
1 R3 R3 R3
2 S1 S2 4
3 R1 R1 R1
4 R2 R2 R2
------------------------------------
S:移进
R:规约
空:错误
阅读全文