例题:试构造该文法的LR(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)


G'[S]:

S'→S

S → A

A→BA

A →ε

B →aB

B →b


【回到原例题】‘


Step 3 LR(1)分析表

  • ACTION:终结符 【rx,以x产生式结束的(点在后面,找相同的拓广文法)&仅写向前搜索符中有的项;sx,到x项目集/状态】
  • GOTO:非终结符
  • 状态:项目集
状态 ACTION【终结符】
GOTO
a b # S B
0 S3 S4 1 2
1
acc
2 S6 S7 5
3 S3 S4 8
4 r3 r3
5

r1
6 S6 S7 9
7
r3

8 r2 r2


9

r2