【问题标题】:Is Parsing C header file using ANTLR possible?是否可以使用 ANTLR 解析 C 头文件?
【发布时间】:2011-02-22 12:28:04
【问题描述】:

我是编译器业务的新手,使用 ANTLR 语法(开源)来解析具有许多外部头文件的 C 源文件,即包含文件和库文件等。

这些头文件的define语法是怎样的?有没有办法将这些包含文件解析为简单的源文件?

是否可以将所有这些源 +include 文件集成到一个包中并使用 ANTLR 或其他 C 解析器 (JavaCC) 对其进行解析。

等待您的好意建议。

【问题讨论】:

  • 标准方法是预处理#include 语句,然后对生成的文件使用您的c 语法。
  • 您想构建自己的解析器,还是有兴趣获取 C 标头中的信息?
  • 如何预处理#include 文件。我的域是 Java 和 windows,我不想使用 gcc 预处理器。
  • @Ira:我想用 ANTLR/JavaCC C 语法构建 C 解析器,但发现它不足以解析包含文件。
  • 你在讨论什么“它”?为什么“它”还不够好?大概头文件包含有效的 C 语法。如果将头文件作为输入,为什么 Antlr 不能解析头文件? [你可能有一个问题,Antlr 已经有一个流打开到主文件,你必须在包含文件上打开另一个(子)解析器;这是解析器中的组织问题,而不是语法问题;当您遇到新的#include 或 EOF 时,您需要一堆输入流和切换机制。

标签: c parsing antlr


【解决方案1】:

为 C 实现完整的预处理器和解析器链并不容易。但是您可以重用现有的预处理器(例如,gcc -E)和现有的解析器(clang -Xclang -ast-print-xml 或 gcc-xml两个不错的选择)然后解析一个简单的 XML 输出。

【讨论】:

猜你喜欢
  • 2012-09-13
  • 2011-01-17
  • 2011-09-11
  • 2012-12-07
  • 1970-01-01
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
  • 2013-06-16
相关资源
最近更新 更多