使用Java解析/读取C-Header文件
我有一个C-Header文件,定义了几个构造,包含多个char数组。
我想使用Java解析这些文件。是否存在用于将C-Header文件读入结构的库,或者是否存在可以理解C-Header文件的流解析器?
只是为了获得更多背景信息(我只是在寻找C-Header解析器,而不是针对此特定问题的解决方案):我有一个包含数据的文本文件和一个解释结构的C-
Header文件。两者都有点动态,所以我不想生成Java类文件。
例:
#define TYPE1typedef 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.jar
,org.eclipse.core.resources.jar
,org.eclipse.equinox.common.jar
,和org.eclipse.osgi.jar
。
:我发现了一篇包含以下代码片段的论文:“使用Eclipse C / C 开发工具作为健壮的,功能齐全,活动维护的开源C
解析器”,但是它不再在线可用(仅适用于简化版)。
以上是 使用Java解析/读取C-Header文件 的全部内容, 来源链接: utcz.com/qa/413222.html