我想解析Objective-C头文件。 我使用Clang创建AST,然后解析ast。要获取Ast,我需要构建代码,而我不想这样做。
今天,我找到了Anltr4。它不需要构建代码。 而且,我遵循ANTLR v4入门。我运行Hello.g4示例,并且很好。 但是,当我在语法v4中使用objc g4时,会出现一些错误。
我所做的是这些: 1. Git克隆语法-v4 2. CD语法-v4 / objc 3.将./ObjectiveCParser.g4移至两步处理(因为我不知道为什么这么多 .g4) 4. cd两步处理 5. antlr4 ObjectiveCPreprocessorLexer.g4 \ antlr4 ObjectiveCPreprocessorParser.g4 \ antlr4 ObjectiveCLexer.g4 \ antlr4 ObjectiveCParser.g4 6. javac目标 .java 7.我发现一些错误:错误信息是错误:找不到符号\错误:包ObjectiveCPreprocessorParser不存在
ObjectiveCPreprocessor.java:12: 错误: 找不到符号
public class ObjectiveCPreprocessor extends ObjectiveCPreprocessorParserBaseVisitor<String> {
^
符号: 类 ObjectiveCPreprocessorParserBaseVisitor
ObjectiveCPreprocessor.java:26: 错误: 程序包ObjectiveCPreprocessorParser不存在
public String visitObjectiveCDocument(ObjectiveCPreprocessorParser.ObjectiveCDocumentContext ctx) {
^
ObjectiveCPreprocessor.java:35: 错误: 程序包ObjectiveCPreprocessorParser不存在
public String visitText(ObjectiveCPreprocessorParser.TextContext context)
^
ObjectiveCPreprocessor.java:57: 错误: 程序包ObjectiveCPreprocessorParser不存在
public String visitPreprocessorImport(ObjectiveCPreprocessorParser.PreprocessorImportContext context)
^
ObjectiveCPreprocessor.java:63: 错误: 程序包ObjectiveCPreprocessorParser不存在
public String visitPreprocessorConditional(ObjectiveCPreprocessorParser.PreprocessorConditionalContext context)
似乎classpath是错误的。但是我不知道为什么。
而且,我尝试在Swift3上执行此操作。发生相同的错误。
我克隆了Antlr4存储库,但是找不到ObjectiveCPreprocessorParser。