让menhir找到所有替代品?

时间:2016-06-09 10:30:21

标签: nlp ocaml ambiguous-grammar menhir

我想以下面的方式改变menhir输出的行为: 我想让它查找所有语法替代品,如果它找到任何,并将它们放在一个列表中,让我回到这个ambigouus解释。它不应该减少冲突,只是存储它们。

在menhir的源代码中,在我看来,我必须查看“Engine.ml”。得到的语法确定的令牌以变体类型项“Accepted v”作为语法自动机的检查点的状态。此内容由函数“accept env prod”找到,它是一组递归函数的一部分,用于更改状态。

您是否有提示,我如何更改这些功能以将所有可能的结果放在此处的列表中并继续进行,就好像什么也没发生一样?或者你认为,这无论如何都不会起作用?

感谢。

1 个答案:

答案 0 :(得分:4)

您要找的是GLR parser generator(G代表广义)。 Menhir不是这样的工具,我怀疑你可以很容易地修改它来做你想做的事。

但是,还有另一种工具可以完全满足您的需求:dypgen