首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

C源语言
EN

Stack Overflow用户
提问于 2019-01-21 10:22:09
回答 1查看 409关注 0票数 1

我可以使用python作为词法分析器和解析器用于C源语言吗?实际上,有人说yacc使用LALR解析,而PLY使用LR解析,这是相当有效的,并且非常适合较大的语法,但对可以成功解析的语法的类型略有限制。现在,我正在做编译器课程,仍然要做解析部分。所以对LALR解析不太了解。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-21 10:34:22

GCC编译器是使用Bison实现的,Bison是一个LALR解析器生成器,使用时间长达多年。LR比LALR强大,所以你可以在技术上做到这一点。

现在,你是否想做这件事是另一个问题。LALR对C的某些恶劣特性(哇,像“bigly”这样的特朗普主义)并没有什么帮助,而且使用了各种lexer黑客来使它工作。(请参阅我关于为什么C/C++不能用纯LR解析器解析的原因的答案:https://stackoverflow.com/a/1004737/120163)。尽管如此,它在很长一段时间里还是有用的。

现在,听起来您正在执行一个编译器类。在这种情况下,您可能没有实现“所有C",而是一个有趣的子集/变体。在这种情况下,您应该能够设计您的“C类”语法,使它远离C的麻烦点,并继续您的课堂。在学习如何黑入LALR/LR解析器以处理奇怪的语法问题方面,您的课堂没有什么意义。您需要在类中学习的是解析器所做的事情,以及它们如何适应编译器的总体结构;添加怪异并不能改善基础知识的学习。如果您完成了这个课程,并开始为真实语言构建解析器,那么您很快就会遇到这些问题,然后就可以处理它们了。

如果您能够决定langauge语法,那么LALR解析就很好了。

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

https://stackoverflow.com/questions/54287836

复制
相关文章

相似问题

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