在Happy

时间:2015-11-03 19:14:51

标签: parsing haskell happy

我正在阅读语言规范,并尝试为其编写解析器。在某些地方,规范对同一事物使用多个名称。我尝试将其复制到Happy语法中,如下所示:

foo : ...whatever...
bar : foo { $1 }
baz : foo { $1 }

不幸的是,这导致Happy开始抱怨并且开始抱怨“减少/减少冲突”。基本上,问题似乎是当它看到foo时,它不知道是否将其缩减为barbaz。事实上,我不在乎,因为它们都是相同的。但是它仍然让Happy感到沮丧 - 如果没别的话,这在语言上是具有讽刺意味的。

(我也有点害怕,如果我有一个提及bar的规则和另一个提到baz的规则,如果选择“错误”减少,则正确的规则可能无法触发。换句话说,解析器将遇到一个100%无法调试的问题。)

有什么方法可以说“快乐”,不管我说bar,只是假装我说foo继续你的生活“?

显然我可以只使用一些外部工具来进行文本查找和替换,但我真的更喜欢不必添加另一个构建步骤...

0 个答案:

没有答案