Earley 解析器是否存在与简单循环有关的预期问题?
我已经做了自己的实现,但它与这个非常相似,它非常易读,总共大约 150 行(当然,我没有写它):
http://www.nightmare.com/rushing/python/earley.py
那个对我来说看起来不错,并且在提供的测试用例中完美运行,但是语法非常简单
E : [[E,E],[ident]]
似乎不起作用。它应该生成任意数量的“ident”标记,假设 E 是起始非终端并且 ident 是终端。但是这个语法,以及任何类似风格的语法,都被解析器完全忽略了。
这是 Earley 算法中的问题(我认为不是),还是此实现中的问题;如果它是基于实现的,是否有(相对)简单的解决方案或者是否需要重建算法?