繁体   English   中英

解析多个C源文件

[英]Parsing multiple C source files

我有多个C源文件和相应的头文件。 我正在尝试使用编译器(例如ANTLR)来解析这些文件。 在ANTLR解析器语法中,您可以使用

@parser::includes
{#include"a.h"}

您可以开始解析第一个文件,例如

CommonTree tree = Parser.start("a.c"); 

解析器将解析头文件

a.h 

但是如果您有多个源文件egbc,cc等及其各自的头文件,则如何解析文件。

C是要解析的小猪---令牌的语义类型取决于它被声明为什么。 考虑:

T(*b)[4]

如果T是类型名称,则这是一个变量声明。 如果是标识符,则为函数调用。 为了解决这个问题,任何希望实际工作的C解析器都必须保留完整的类型环境,这意味着它必须是C编译器中令人讨厌的一大块。

有用于C的ANTLR解析器可以正确处理所有这些问题,但是它们使用起来并不容易,我对它们没有任何经验,因此不能在此处发表评论。

相反,您可能想看看使用外部工具将C解析为更易于处理的内容。 gcc-xml就是这样一种; 它使用gcc本身来解析源文件,然后吐出更易于处理的XML。

暂无
暂无

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

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