首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法让parsec报告"shift-reduce“冲突?

有没有办法让parsec报告"shift-reduce“冲突?
EN

Stack Overflow用户
提问于 2012-08-29 12:13:33
回答 1查看 406关注 0票数 8

我正在尝试使用parsec,并意识到我有一个模棱两可的语法。显然,这是我的一个错误,但我有点习惯于yacc风格的解析器生成器,让我知道我很愚蠢。Parsec只是按照您给它的解析器的顺序来吃字符(是的,我知道try)。

有没有办法让parsec告诉我,当我的语法不是左因式的时候?为我工作的程序都很棒。

谢谢!

(我知道shift-reduce与一种不同的解析器技术有关。我的意思只是描述模棱两可的语法。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-29 15:10:02

我不是Parsec专家,所以我可能会被纠正,但我认为这是不可能的,原因很简单,Parsec对你的语法一无所知。

或者换一种方式,虽然你的语法可能是模棱两可的,但你的Parsec解析器不是,并且程序无法确定一些其他排列的parsec组合子,它为等价的输入产生不同的输出,也是未指定语法的有效表示。

因为您有语法,所以您可能更喜欢使用happyalex,这会给您一个更类似于lexx/yacc的体验。

一个有趣的项目可能是调整BNFC以生成一个由parsec组合符组成的AST来表示语法,但我怀疑这不是一项简单的任务。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12170780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档