我需要解析不同文件的源代码,每个文件都是用一种不同的语言编写的,我想使用C来完成这项工作。
为此,我考虑使用yacc / lex,但我发现它们很难理解,可能是因为完全缺乏像样的文档(要么是这样,要么它们真的很神秘)。
所以我的问题是:我在哪里可以找到一些好的yacc / lex文档,最好是教程风格的介绍?或者,在C中有没有更好的方法来做到这一点?也许我可以使用其他东西来代替yacc / lex,也许甚至可以用不同的语言编写?
发布于 2011-05-28 16:00:07
yacc和lex是非常强大的工具,都是围绕编译器构造的理论而构建的。为了能够完全理解它们,你可能需要一些形式语言,自动机理论和编译器构造的基础知识。
dragon book是这方面的经典著作。
发布于 2012-08-16 04:44:57
如果你喜欢数学(这个答案中最重要的子句),那么编写你自己的编译器-编译器,然后用它编写你的编译器。我这样做过一次,是因为我厌倦了为我作为递归下降编译器开始的编译器的所有结果编写所有函数,因为2004年的可用选择并不让我满意,也因为我在找工作时有空闲时间。我只在一个项目上使用了编译器,而且它没有经过彻底的测试,所以它不在github上。我对我设计的语法文件语法非常满意。
如果我今天有这样的需要,我可能会做出不同的决定。较新的尖端CC似乎在过去的8年中发生了很大的变化。
https://stackoverflow.com/questions/6160419
复制相似问题