已知文法 G[S]: S→aSSb| aSSS|c,(30 分)。 (1) 写出增广文法; (2) 构造识别该文法产生的LR(0)活前缀DFA;(3)构造其LR(0)分析表并判断是否为LR(0)文法.
时间: 2023-12-11 17:02:37 浏览: 84
LR(0)文法分析演示程序
4星 · 用户满意度95%
(1) 增广文法为:G[S']: S'→S, S→aSSb|aSSS|c.
(2) LR(0)活前缀DFA如下:
状态 | ACTION | GOTO
--------|-------------|-------------
0 | s4 | 1
1 | | 2
2 | s3 |
3 | r3 |
4 | s4 | 5
5 | r3 |
其中,ACTION 表示移进、归约或接受操作,GOTO 表示根据状态和下一个符号跳转到哪个状态。
(3) LR(0)分析表如下:
状态 | a | b | c | $ |
--------|-------------|-------------|-------------|-------------|
0 | s4 | | s6 | |
1 | s4 | | s7 | acc |
2 | | s5 | | |
3 | | r3 | | r3 |
4 | s4 | | s6 | |
5 | | r1 | | r1 |
6 | s4 | | s7 | |
7 | | r2 | | r2 |
其中,s 表示移进,r 表示归约,acc 表示接受。根据表格可以发现,该文法是 LR(0) 文法。
阅读全文