解析源代码

时间:2011-05-28 07:56:31

标签: c parsing yacc lex

我需要解析不同文件的源代码,每个文件用不同的语言编写,我想用C来做。

为此,我考虑使用yacc / lex,但我发现它们很难理解,可能是由于完全缺乏体面的文档(或者它们真的是隐蔽)。

所以我的问题是:我在哪里可以找到yacc / lex的一些好文档,最好是教程样式介绍?或者,有没有更好的方法在C中这样做?也许还有其他我可以使用的东西,而不是yacc / lex,甚至可能用不同的语言写的?

3 个答案:

答案 0 :(得分:5)

yacclex是非常强大的工具,围绕编译器构造理论构建。为了能够完全理解它们,您可能需要一些形式语言,自动机理论和编译器构造的基础知识。

dragon book是这个主题的经典之作。

答案 1 :(得分:1)

Kernighan的后半部分和Pike的 Unix编程环境是对使用lex和yacc编写解释器的扩展介绍。 lex覆盖范围有点轻,因为它们大多使用自定义扫描仪。

答案 2 :(得分:0)

如果您喜欢数学(这个答案中最重要的条款),那么编写自己的编译器编译器,然后用它编写编译器。我曾经这样做过一次,因为我厌倦了为编译器的所有产品编写所有函数,这些编译器起初是一个递归下降的编译器,因为2004年的可用选择并没有让我高兴,因为我有空闲时间找工作的同时。我只在一个项目上使用了编译器编译器,它不一定经过全面测试,所以它不在github上。我对我设计的语法文件语法非常满意。

如果我今天有这样的需要,我可能会做出不同的决定。在过去的8年中,新的尖端CC似乎发生了很大的变化。