gpt4 book ai didi

java - 如何获取跳过的空白(未跳过的原始标记)?

转载 作者:行者123 更新时间:2023-11-30 07:10:19 25 4
gpt4 key购买 nike

g4:

grammar KBDP;
WS: [\r\n \t] -> skip;

VARNAME:[_a-zA-Z0-9]+;
OP:[='*,.];
REALVAR:'@' VARNAME;

prog:sqlsentece+;
sqlsentece:'"' (VARNAME|OP|REALVAR)+'"';

原始sql:

"select * from myTables"

public void enterSqlsentece(KBDPParser.SqlsenteceContext ctx) 
{
ctx.getText();
}

ctx.getText() 返回跳过空白的标记

"select*frommyTables"

.

如何获取原始sql“select * from myTables”(带空格)?

最佳答案

每个解析上下文都有一个开始和一个结束标记,它们指向组成该上下文的标记。除其他属性外, token 还具有 start + end 索引,它们指示原始源流中的字符偏移量。使用关联的 CharStream 及其 getText(Interval(from, to));获取上下文原始文本的方法。

示例:

public void enterSqlsentece(KBDPParser.SqlsenteceContext ctx) 
{
CharStream cs = ctx.start.getTokenSource().getInputStream();
String originalText = cs.getText(Interval.of(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
}

关于java - 如何获取跳过的空白(未跳过的原始标记)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39323388/

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