antlr4 API 有没有可靠的方法来获取相对于文件开头而不是行开头的令牌起始字符位置?经过一些研究后,我发现唯一的方法是使用 IntStream 的一些自定义实现,它不会将 '\n' 视为行终止符,但也许我缺少一些更简单的方法?如果重要的话我会使用 Visitor API。
我正在开发的应用程序解析源文件并为另一个使用提供的坐标插入附加代码的应用程序提供插入坐标。如果另一个应用程序获取文件中的符号位置,而不是 line:positionInLine 对,则会方便得多。
您可以使用以下任何一项,具体取决于您是否有Token http://antlr.org/api/Java/org/antlr/v4/runtime/Token.html or a TerminalNode http://antlr.org/api/Java/org/antlr/v4/runtime/tree/TerminalNode.html.
- Token.getStartIndex() http://antlr.org/api/Java/org/antlr/v4/runtime/Token.html#getStartIndex%28%29
TerminalNode.getSourceInterval() http://antlr.org/api/Java/org/antlr/v4/runtime/tree/SyntaxTree.html#getSourceInterval%28%29.a
罢工>Edit:这将返回令牌索引,not角色位置。
-
TerminalNode.getSymbol() http://antlr.org/api/Java/org/antlr/v4/runtime/tree/TerminalNode.html#getSymbol%28%29
.getStartIndex()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)