例题:试构造下述文法的LR(0)分析表
G[E]→E+T|T
T→(E)|a
Step 1 拓广文法
避免冲突,构建E'指向开始符E
推出两个的拆开写
(0)E'→E
(1)E→E+T
(2)E→T
(3)T→(E)
(4)T→a
Step 2 列项目【项目集规范族(DFA图)】
点后面有东西的话- 如果是终结符【小写字母+符号:不能推出其他的】可以不管
- 如果非终结符,列出所有非终结符项目
Step 3 分析表
- ACTION:终结符 【rx,以x产生式结束的(点在后面,找相同的拓广文法);sx,到x项目集/状态】
- GOTO:非终结符
- 状态:项目集
状态 |
ACTION【终结符】 |
GOTO |
|||||
a | + | ( | ) | # | E | T | |
0 | S4 |
|
S3 |
|
|
1 | 2 |
1 |
|
S5 |
|
|
acc |
|
|
2 | r2 | r2 | r2 | r2 | r2 |
|
|
3 | S4 |
|
S3 |
|
|
6 | 2 |
4 | r4 | r4 | r4 | r4 | r4 |
|
|
5 | S4 |
|
S3 |
|
|
|
7 |
6 |
|
S5 |
|
S8 |
|
|
|
7 | r1 | r1 | r1 | r1 | r1 |
|
|
8 | r3 | r3 | r3 | r3 | r3 |
|
|