【发布时间】: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 时,您需要一堆输入流和切换机制。