获取子词法器规则的文本表示形式



考虑ANTLR4中的以下词法分析器规则:

ID: [a-z]+;
INT: [0-9]+;
ARRAY: ID '[' INT ']';

在我可以访问ctx.ARRAY()的树行走场景中(其中ctx是由解析器规则生成的ParserRuleContext的子类)是否有可能获得词法分析器规则IDINT的文本表示?我目前使用ctx.ARRAY().getText()获取整个文本表示,并使用正则表达式解析IDINT的内容,只是想知道是否有一个"更干净"的解决方案ANTLR提供。

注意:由于外部依赖,不能将ARRAY作为解析器规则

提前感谢您有意义的回答。

ANTLR 4中的词法分析器规则不能分解成几个部分。这是一个设计决策,作为ANTLR 4词法器相对于ANTLR 3词法器的巨大速度和内存改进的一部分。ANTLR 3词法分析器是递归下降识别器,具有许多与解析器相同的特性。在ANTLR 4中,词法分析器只不过是一个支持语义谓词的DFA识别器,因此根本不跟踪令牌各个组件之间的边界。

您必须使ARRAY成为一个解析器规则,或者在需要分解标记的文本时单独解析getText()的结果。

相关内容

  • 没有找到相关文章

最新更新