java - 如何从ANTLR语法中收集 'returns'

标签 java compiler-construction antlr

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

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

然后在我的 main 中我有这样的代码:

 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 ?

如何打印我所有“返回”的列表?

最佳答案

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

关于java - 如何从ANTLR语法中收集 'returns',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57998140/

相关文章:

java - 使用HttpURLConnection读取elasticsearch的输出时出现FileNotFoundException

compiler-construction - LR(1) 文法和运算符优先文法有什么区别?

c++ - 未定义行为是否依赖于 C++ 中的编译器?

visual-studio-2005 - Visual Studio,如何输出构建所花费的时间?

c# - 如何为单独的 ANTLR 词法分析器和解析器添加虚构标记?

java - 递归表达式规则返回 null

java - 来自 Calendar.getDisplayName() 的错误工作日

java - 网络服务器 : use Service instead of Thread

java - 自定义类导入 API 是否包含在 .class 文件中?

java - 类在类路径中时出现 ClassDefNotFoundError