作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究秒差距,并意识到我的语法不明确。显然这是我的一个错误,但我有点习惯 yacc 风格的解析器生成器让我知道我很愚蠢。 Parsec 只是按照您给解析器的顺序吃掉字符(是的,我知道 try
)。
当我的语法不是左因子分解时,有什么方法可以让秒差距告诉我吗?对我有用的程序非常棒。
谢谢!
(我知道移位归约与一种不同类型的解析器技术有关。我只是想描述不明确的语法。)
最佳答案
我不是秒差距专家,所以我很可能会被纠正,但我认为这是不可能的,原因很简单,秒差距对你的语法一无所知。
或者换句话说,虽然你的语法可能是不明确的,但你的秒差距解析器却不是,并且程序无法确定秒差距组合器的某些其他排列(它为等效输入产生不同的输出)也是有效的未指定语法的表示。由于您确实有语法,因此您可能更喜欢使用 happy和 alex ,这将为您提供更像 lexx/yacc 的体验。
一个有趣的项目可能是改编 BNFC生成秒差距组合子的 AST 来表示语法,但我怀疑这将是一项不平凡的任务。
关于haskell - 有没有办法让parsec报告 "shift-reduce"冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12170780/
我是一名优秀的程序员,十分优秀!