使用Java 7语法https://github.com/antlr/grammars-v4/blob/master/java7/Java7.g4我想找到一个特定的名称的方法,然后只需打印出该方法。 我看到,我可以使用methodDeclaration
规则时,我相匹配。 于是我继承Java7BaseListener
和覆盖此监听方法:
@Override public void enterMethodDeclaration(Java7Parser.MethodDeclarationContext ctx) { }
如何获取原文了? ctx.getText()
给了我一个字符串的所有空格剥离出来。 我要评论和原来的格式。
ANTLR的CharStream
类有一个方法getText(Interval interval)
,其将在给定范围内返回原始源。 该Context
对象有方法来获取的开始和结束。 假设你有你的听众称为一个字段input
已在CharStream被解析,你可以这样做:
int a = ctx.start.getStartIndex();
int b = ctx.stop.getStopIndex();
Interval interval = new Interval(a,b);
input.getText(interval);
演示:
SqlBaseParser.QueryContext queryContext = context.query();
int a = queryContext.start.getStartIndex();
int b = queryContext.stop.getStopIndex();
Interval interval = new Interval(a,b);
String viewSql = context.start.getInputStream().getText(interval);