在要解析的文本中获取表达式的位置和长度

问题描述 投票:0回答:1

当我的ANTLR生成的解析器执行时,我想引发一个事件,其中包含要求值的表达式的位置和长度,以便可以在文本编辑器中突出显示该区域。

ANTLR是否提供任何获取信息的方法(表达式在被解析文档中的位置和长度)?

antlr antlr4 antlr3
1个回答
0
投票

您可以使用expression.getStart()获取表达式的第一个标记,然后使用.getLine()getCharPositionInLine()分别获取行号和列号。

要获得长度,您可以从最后一个标记的终止索引中减去第一个标记的起始索引,然后加1(因为两个索引都包含在内,所以长度为1的表达式将具有相同的起始和终止索引指向组成表达式的单个字符)。

注意,expression.getText().length()的更明显的解决方案是在长度上不包括跳过的标记。

© www.soinside.com 2019 - 2024. All rights reserved.