C的递归下降解析器

时间:2009-11-27 14:03:28

标签: c parsing

我正在为C寻找解析器。这就是我需要的:

  1. 用C语言编写( C ++)。
  2. 手写(未生成)。
  3. BSD或类似许可证。
  4. 能够非常地解析自身(可以是C的子集)。
  5. 它可以是项目的一部分,只要它解耦,以便我可以拔出解析器。

    是否存在满足这些要求的现有解析器?

8 个答案:

答案 0 :(得分:7)

如果你不需要C99,那么lcc就是扣篮:

  • 这是一本非常清晰,写得很好的书。
  • Dave Hanson在文章和技术报告中详细记录了用于递归下降解析具有优先级的运算符的技术。
  • 清晰,手写的ANSI C代码。

一个潜在的缺点是lcc解析器不构建抽象语法树 - 它直接从解析到中间代码。

如果你必须拥有C99,那么我认为tinycc(tcc)是你最好的选择。

答案 1 :(得分:2)

Sparse怎么样?

答案 2 :(得分:1)

您可以尝试TCC。它是根据较小的GPL许可的。

答案 3 :(得分:0)

似乎nwcc足以满足您的要求。

答案 4 :(得分:0)

此位置存在良好的c编译器。简单易用。 https://github.com/rui314/8cc

答案 5 :(得分:-1)

GCC在gcc / c-parser.c中有一个。

答案 6 :(得分:-1)

检查elsa,它使用广义LR算法。

它主要用于C ++,但它也解析C代码。

检查page,在“Elsa解析多少C?”一节中。它说它可以解析大多数C程序,包括Linux内核。

它是在BSD许可下发布的。

答案 7 :(得分:-1)

这是一个移植到C的递归下降解析器: http://www.gabotronics.com/resources/recursive-descent-parser.htm