Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取跳过的空格(不跳过的原始标记)?_Java_Antlr4_Dsl - Fatal编程技术网

Java 如何获取跳过的空格(不跳过的原始标记)?

Java 如何获取跳过的空格(不跳过的原始标记)?,java,antlr4,dsl,Java,Antlr4,Dsl,g4: 原始sql: “从myTables中选择*” ctx.getText()返回跳过空白的令牌 “从MyTables中选择*frommyTables” 如何获取原始sql“select*from myTables”(带空格)?每个解析上下文都有一个起始标记和一个结束标记,指向构成此上下文的标记。除其他属性外,令牌还具有开始+结束索引,这些索引指示原始源流中的字符偏移量。使用关联的CharStream及其getText(Interval(from,to));方法获取上下文的原始文本 例如:

g4:

原始sql:

“从myTables中选择*”

ctx.getText()
返回跳过空白的令牌

“从MyTables中选择*frommyTables”


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

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

例如:

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

我可以麻烦你发布具体的代码吗?对于这个过度的需求,我很抱歉,因为我在Java和Antlr4方面都是初级的,非常感谢你的帮助:)@MarkMa,如果我的回答对你有帮助,请接受它(左边的复选标记)。如果你觉得值得,你也可以向上投票(左边的向上箭头),这会给我额外的分数。我真的很抱歉,stackoverflow给我的分数不到15,我会接受你的答案。我会在我的分数超过15时接受,我保证。再次感谢你的帮助。嗯……似乎投票被记录下来了,但没有显示(accpet的数量没有改变)。
public void enterSqlsentece(KBDPParser.SqlsenteceContext ctx) 
    { 
        ctx.getText();
    }
public void enterSqlsentece(KBDPParser.SqlsenteceContext ctx) 
{
  CharStream cs = ctx.start.getTokenSource().getInputStream();
  String originalText = cs.getText(Interval.of(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
}