1

我在http://hackingoff.com/compilers/ll-1-parser-generator使用以下语法:

E ->  T E'
E' ->  + T E' 
E' -> EPSILON
T ->  F T'
T' -> * F T'
T' -> EPSILON 
F -> ( E ) 
F ->  id

输出解析表是

[
        [0, "+", "*", "(", ")", "id", "$"],
        [0, 0, 0, 0, 0, 0, 0],
        [0, 10, 10, 1, 9, 1, 9],
        [0, 2, 10, 10, 3, 10, 3],
        [0, 9, 10, 4, 9, 4, 9],
        [0, 6, 5, 10, 6, 10, 6],
        [0, 9, 9, 7, 9, 8, 9]
]

有人可以解释解析表吗?特别是生产规则中只有8行是什么9意思10

4

1 回答 1

1

它在页面本身中进行了解释,就在表格上方:

如果非终端的预测集中不存在终端,则会在表中放置一个错误代码。如果该终端在后面(该非终端),则该错误是 POP 错误。否则,这是一个扫描错误。

POP 错误代码 = 预测表生成数 + 1

扫描错误代码 = 预测表生成数 + 2

因此,对于具有八个产生式规则的文法,值 9 和 10 分别是POP errorSCAN error

于 2015-02-04T16:23:07.870 回答