【问题标题】:How to collect 'returns' from ANTLR grammar如何从 ANTLR 语法中收集“返回”
【发布时间】:2019-09-18 17:38:20
【问题描述】:

如果我有一个 ANTLR 语法,其中我有这样的规则并带有“returns”语句:

string_decl returns [Pair s] : STR id EQUAL ex=str_literal ';'{$s = new Pair($id.text, $ex.text);} ;

然后在我的主要代码中,我有这样的代码:

 Lexer lexer = new Lexer(CharStreams.fromFileName(inputFileName));
 CommonTokenStream tokens = new CommonTokenStream(lexer);
 Parser parser = new Parser(tokens);

 System.out.println(parser.program()); //prints out empty array ?

如何打印出所有“退货”的清单?

【问题讨论】:

  • parser.program() 返回的 ProgramContext 包含所有树结构。使用访问者或听众在树上行走并获取您需要的任何信息。

标签: java compiler-construction antlr


【解决方案1】:

returns 值被建模为规则上下文的成员。看看你是否有String_declContext.s 成员。另请参阅 ANTLR4 文档中的 Rule Attribute Definitions

【讨论】:

    猜你喜欢
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多