1

我已经使用队列实现了Earley 解析器来处理状态。队列以顶级规则为种子。对于队列中的每个状态,通过向队列中添加新状态来执行其中一个操作(预测、扫描、完成)。不添加重复状态。

我遇到的问题最好用以下语法描述:

A->BB; B -> ε

解析A时,会发生以下情况:

在此处输入图像描述

如您所知,A不会完全解决。这是因为具有 epsilon 状态的完成只会发生一次,因为它没有添加到队列中。

如何调整我的算法以支持这些 epsilon 状态?

编辑:请注意,使用终端时这不是问题,因为将创建新图表集以插入扫描状态。由于该状态在那里尚不存在,因此将对其进行处理。

4

1 回答 1

3
于 2016-06-20T18:34:02.823 回答