繁体   English   中英

C的递归下降解析器

[英]Recursive Descent Parser for C

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

  1. 用C语言编写( 不是 C ++)。
  2. 手写(未生成)。
  3. BSD或类似的许可证。
  4. 能够非常地解析自身(可以是C的子集)。

它可以是项目的一部分,只要它解耦,以便我可以拔出解析器。

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

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

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

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

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

稀疏怎么样?

你可以试试TCC 它是根据Lesser GPL许可的。

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

这个位置有好的c编译器。 简单易用。 https://github.com/rui314/8cc

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

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

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

检查其页面上的“Elsa可以解析多少C?”一节 它说它可以解析大多数C程序,包括Linux内核。

它是在BSD许可下发布的。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM