大家好,最近我写了一个canonical LR(1) parser
也可以叫做CLR parser。CLR parser属于自底向上从左到右分析 LR(1)说明超读一个记号。
下载地址在这个地方:

项目使用GPLv2协议发布,可以免费下载使用。
项目中有个例子,这个例子读入如下语法:
A : S;
S : C C;
C : 1 C;
C : 2;
然后得到一张分析表:
(-3) (-2) (1) (2) (2147483647)
3 2 4 5 0
0 0 0 0 2147483647
6 0 7 8 0
9 0 4 5 0
0 0 r3 r3 0
0 0 0 0 r1
10 0 7 8 0
0 0 0 0 r3
0 0 r2 r2 0
0 0 0 0 r2
REDUCE! 3
在分析表中2147483647代表ACC状态。在语法中,ABC是非终结符,1,2是来自词法分析器的终结符。
希望大家喜欢。谢谢。
也可以叫做CLR parser。CLR parser属于自底向上从左到右分析 LR(1)说明超读一个记号。
下载地址在这个地方:

项目使用GPLv2协议发布,可以免费下载使用。
项目中有个例子,这个例子读入如下语法:
A : S;
S : C C;
C : 1 C;
C : 2;
然后得到一张分析表:
(-3) (-2) (1) (2) (2147483647)
3 2 4 5 0
0 0 0 0 2147483647
6 0 7 8 0
9 0 4 5 0
0 0 r3 r3 0
0 0 0 0 r1
10 0 7 8 0
0 0 0 0 r3
0 0 r2 r2 0
0 0 0 0 r2
REDUCE! 3
在分析表中2147483647代表ACC状态。在语法中,ABC是非终结符,1,2是来自词法分析器的终结符。
希望大家喜欢。谢谢。