有没有可靠的方法使用antlr4 API来获取相对于文件开头而不是行的令牌开始字符位置?在做了一些研究后,我发现的唯一方法是使用IntStream的一些自定义实现,它不会将'\ n'视为行终止符,但也许我错过了一些更简单的方法?如果重要的话,我正在使用访问者API。
我正在处理的应用程序解析源文件,并为另一个使用提供的坐标插入其他代码的应用程序提供插入坐标。如果另一个应用程序在文件中有符号位置,而不是line:positionInLine对,则会更方便。
答案 0 :(得分:4)
您可以使用以下任何一项,具体取决于您是Token
还是TerminalNode
。
Token.getStartIndex()
TerminalNode.getSourceInterval()
.a
TerminalNode.getSymbol()
.getStartIndex()