例题:试构造该文法的LALR(1)分析表
G[S]:
S→BB
B→aB|b
Step 1 拓广文法
避免冲突,构建E'指向开始符E
推出两个的拆开写
(0)S'→S
(1)S →BB
(2)B →aB
(3)B →b
Step 2 列项目【(带向前搜索符)项目集规范族(DFA图)】
点后面有东西的话- 如果是终结符【小写字母+符号:不能推出其他的】可以不管
- 如果非终结符,列出所有非终结符项目
示例:
G[S]:
S→S;B|B
B→BaA|A
A→b(S)
Step 3 LALR(1)分析表- ACTION:终结符 【rx,以x产生式结束的(点在后面,找相同的拓广文法)&仅写向前搜索符中有的项;sx,到x项目集/状态】
- GOTO:非终结符
- 状态:项目集
状态 |
ACTION【终结符】 |
GOTO |
|||
a | b | # | S | B | |
0 | S36 | S47 | 1 | 2 | |
1 |
|
acc |
|
||
2 | S36 | S47 | 5 | ||
36 | S36 | S47 | 89 | ||
47 | r3 | r3 | r3 | ||
5 |
|
|
r1 | ||
89 |
r2 | r2 | r2 |
|
|