当前位置: 首页 > 知识库问答 >
问题:

使用antlr4和java解析器解析objective-c代码时出错,但可以使用grun

高吉星
2023-03-14

我在这里使用的是一步语法,当我运行grun时,它非常有效:

grun ObjectiveC translationUnit~/desktop/test.h-gui

但是,当使用具有以下代码的生成的java解析器运行时:

        try {
            ANTLRInputStream inputStream = new ANTLRInputStream(
                    "@interface TestInterface \r @property(nonatomic, assign) BOOL testProp; \r @end");

            ObjectiveCLexer lexer = new ObjectiveCLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            ObjectiveCParser parser = new ObjectiveCParser(commonTokenStream);
            parser.setBuildParseTree(true);
            ParseTree tree = parser.expression();

            ObjectiveCParserBaseVisitor visitor = new ObjectiveCParserBaseVisitor();
            visitor.visit(tree);
        }
        catch(Exception ex){
            System.out.print(ex);
        }

我得到这个错误:

第1行:0外部输入'@interface',应为{'sizeof'、'true'、'false'、'bool'、'class'、'bycopy'、'byref'、'id'、'imp'、'in'、'inout'、'nil'、'no'、'null'、'oneway'、'out'、'protocol'、'sel'、'super'、'yes'、'@encode'、'@protocol'、'@selector'、'automatic'、'nonatomic__deprecated“,”__kindof“,”__unused“,NULL_UNSPECIFIED,NULLABLE,NONNULL,”null_resettable“,”ns_inline“,”ns_enum“,”ns_options“,”assign“,”copy“,”getter“,”setter“,”strong“,”readonly“,”readwrite“,”weak“,”unsafe_unrequend“,”iboutlet“,”iboutletcollection“,”ibinspectable“,”ibinspectable“,”literal、STRING_START、HEX_LITERAL、OCTAL_LITERAL、BINARY_LITERAL、DECIMAL_LITERAL、FLOATING_POINT_LITERAL}

共有1个答案

伏建修
2023-03-14

您使用解析器规则TranslationUnit运行grun,但在您的代码中使用Expression。请执行以下操作:

ParseTree tree = parser.translationUnit();
 类似资料:
  • 我得到的回应是: {“response”:{“id”:“R1”,“cmd”:[{“batchSize”:50,“startRow”:0,“name”:“doLogin”,“result”:“OK”,“attributes”:[{“name”:“businessName”,“type”:“String”},{“name”:“objId”,“type”:“Long”},{“name”;“type”;“

  • GradleSpring引导代码分析使用SonarQube通过Jenkins抛出错误。 我在Gradle spring boot项目的根目录下有我的sonar-project.properties文件,其中有以下详细信息 在Jenkins中的“全局工具配置”下,SonarQube扫描器配置为 在Jenkinsfile中,阶段定义为 运行作业时,会出现以下错误 显然sonar.java.binari

  • 我有一个评估csv文件的语法,它根据TestRig正常工作。将生成以下解析树: 但是,如果我在应用程序中使用以下java代码,解析将失败,并出现错误: 更新:我现在直接从文件中使用Char流,但错误仍然存在。 我的理解是,TestRig也会这样做,那么这怎么可能成功,而这怎么可能失败呢? 下面是测试。我用来测试的csv: 至于我如何调用TestRig,我使用命令行: 更新:使用时 我也有同样的错误

  • 我试图解析具有如下格式的文件。我想要做的是创建几个var和一个结构数组来包含关于文件的信息。例如,(pseudocode),然后是&。我需要一个解析器/脚本,允许我从文件中获得这些信息。我试图用ANTLR/自定义解析器而不是Regex来实现这一点,因为其中一些文件变得很大;我是在Unity中这样做的,Regex的速度很慢,因为它影响了Unity的垃圾收集。然而,我是使用ANTLR的新手,所以我很难

  • 当xjc解析followinf xsd时,我得到了“Prolog中的错误” 我已经检查了xsd的有效性,没有发现任何错误。开始前没有字符也。。。

  • 我已经使用Django和Django rest框架设置了一个APIendpoint,以使用POST请求提交表单。当使用PostMan发送请求时,后端工作正常,并将数据添加到数据库中。但是,当我使用fetch时,后端返回。前端是一个react网页包设置。 这是我用来发出请求的代码: 下面是的打印: 我还使用wireshark捕获PostMan和获取请求。这是邮递员的请求,成功的响应: 然而,这是带有