2

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

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

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

谢谢。

4

1 回答 1

4

您正在寻找的是GLR 解析器生成器(G 代表通用)。Menhir 不是这样的工具,我怀疑你可以轻松地修改它来做你想做的事。

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

于 2016-06-09T11:09:50.423 回答