gpt4 book ai didi

java - context.getText() 排除 ANTLR4 中的空格

转载 作者:行者123 更新时间:2023-12-01 17:50:44 26 4
gpt4 key购买 nike

getText() 返回完整的语句,不包括单词之间的空格。考虑空格的一种方法是将它们包含在语法中。但是,有没有其他方法可以获取完整的字符串并考虑空格。

最佳答案

是的,有(假设这里您使用的是ParserRuleContext.getText()。这个想法是向输入字符流询问一系列字符。位置值存储在 start 和上下文的停止标记。

下面是一些代码(从 C++ 转换而来,因此可能不是 100% 正确):

string sourceTextForContext(ParseTree context) {
Token startToken = (context.start instanceof TerminalNode) ? (TerminalNode)(start).getSymbol() : (ParserRuleContext)(start).start;
Token stopToken = (context.stop instanceof TerminalNode) ? (TerminalNode)(stop).getSymbol() : (ParserRuleContext)(stop).start;

CharStream cs = start.getTokenSource().getInputStream();
int stopIndex = stop != null ? stop.getStopIndex() : -1;
return cs.getText(new Interval(start.getStartIndex(), stopIndex));
}

由于此检索函数使用绝对字符索引,因此它不计入任何可能的空白规则。

关于java - context.getText() 排除 ANTLR4 中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50443728/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com