我将使用ANTLR 4.5.3将一种符号转换为另一种符号。我已经用IntelliJ IDEA中的插件设计了语法描述。
在我的语法中,一个规则有几个选项。
当我在"Parse Tree“中查看结果时,每个节点都包含”规则名称“:”行号“。
如何使用API接收此信息?如果我理解清楚的话,可以从getAltNumber()中检索行号,但是这个字段是空的。
http://www.antlr.org/api/Java/org/antlr/v4/runtime/RuleContext.html#getAltNumber()
在文档中,默认实现既不计算也不存储此alt num。
如何获取这些信息?
发布于 2016-11-15 10:42:21
我也有同样的问题。文档应该更精确一点,但它确实给出了一个线索。另外,直接查看插件可能会导致解决方案:https://github.com/antlr/intellij-plugin-v4/blob/master/src/java/org/antlr/intellij/plugin/preview/AltLabelTextProvider.java
您可以简单地添加一个实现setAltNumber和getAltNumber的上下文超类,如下所示:https://github.com/antlr/antlr4/blob/master/tool/src/org/antlr/v4/tool/GrammarInterpreterRuleContext.java
然后将类作为生成器参数提供,例如:
-DcontextSuperClass=GrammarInterpreterRuleContext antlr4 -o output/path -listener -visitor -Dlanguage=Java -lib lib/path grammar.g4
https://stackoverflow.com/questions/39538191
复制相似问题