使用Java解析/读取C-Header文件

我有一个C-Header文件,定义了几个构造,包含多个char数组。

我想使用Java解析这些文件。是否存在用于将C-Header文件读入结构的库,或者是否存在可以理解C-Header文件的流解析器?

只是为了获得更多背景信息(我只是在寻找C-Header解析器,而不是针对此特定问题的解决方案):我有一个包含数据的文本文件和一个解释结构的C-

Header文件。两者都有点动态,所以我不想生成Java类文件。

例:

#define TYPE1

typedef struct type1

{

char name1[10];

char name2[5];

}

#endif

Type2,Type3等类似。

数据结构:

type1ffffffffffaaaaa

回答:

您可以将现有的C解析器用于Java。当然,它比解析头文件做得多,但这不应该伤害您。

我们使用来自Eclipse

CDT项目的解析器。这是一个Eclipse插件,但是我们在Eclipse之外成功使用了它,我们只需要将3个Eclipse的JAR文件与解析器JAR捆绑在一起即可。

要使用CDT解析器,请从实现org.eclipse.cdt.core.model.ILanguage,例如开始org.eclipse.cdt.core.dom.ast.gnu.c.GCCLanguage。您可以调用getTranslationUnit它,传递代码和一些帮助程序。一个org.eclipse.cdt.core.parser.FileContent实例代表一个代码文件(至少在CDT7中,这似乎改变了很多)。创建此类对象的最简单方法是FileContent.createForExternalFileLocation(filename)FileContent.create(filename,

content)。这样,您就不必关心Eclipse的IFile东西了,它似乎只在项目和工作区中起作用。

IASTTranslationUnit你回来表示文件的整个AST。其中的所有节点都是IASTSomething类型的实例,例如,IASTDeclaration等等。您可以实现自己的子类,org.eclipse.cdt.core.dom.ast.ASTVisitor以使用访问者模式遍历AST。如果您需要进一步的帮助,请询问。

我们使用的JAR文件org.eclipse.cdt.core.jarorg.eclipse.core.resources.jarorg.eclipse.equinox.common.jar,和org.eclipse.osgi.jar

:我发现了一篇包含以下代码片段的论文:“使用Eclipse C / C 开发工具作为健壮的,功能齐全,活动维护的开源C

解析器”,但是它不再在线可用(仅适用于简化版)。

以上是 使用Java解析/读取C-Header文件 的全部内容, 来源链接: utcz.com/qa/413222.html

回到顶部