让 menhir 找到所有替代品?

make menhir find all alternatives?

我想通过以下方式更改 menhir 输出的行为: 我希望它查找 all 语法替代项(如果找到的话),然后将它们放入列表中,然后让我回复这种模棱两可的解释。它不会减少冲突,只是存储它们。

在menhir 的源代码中,在我看来,我必须查看"Engine.ml"。由此产生的语法确定的标记出现在变体类型项 "Accepted v" 中,作为语法自动机检查点的状态。此内容由之前的函数 "accept env prod" 找到,该函数是一组递归函数的一部分,可更改状态。

您有什么建议吗?我如何更改这些函数以将所有可能的结果放在此处的列表中并继续进行,就好像什么都没发生一样?还是您认为这无论如何都行不通?

谢谢。

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

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