tutorial descargar java antlr antlr4

descargar - antlr4 tutorial java



¿Cómo obtengo el texto original que coincide con una regla antlr4? (2)

La clase CharStream de ANTLR tiene un método getText(Interval interval) que devolverá la fuente original en el rango dado. El objeto de Context tiene métodos para obtener el principio y el final. Suponiendo que tenga un campo en su oyente llamado input que tiene el CharStream analizado, puede hacer esto:

int a = ctx.start.getStartIndex(); int b = ctx.stop.getStopIndex(); Interval interval = new Interval(a,b); input.getText(interval);

Utilizando la gramática de Java 7 https://github.com/antlr/grammars-v4/blob/master/java7/Java7.g4 Quiero encontrar métodos con un nombre específico y luego simplemente imprimir ese método. Veo que puedo usar la regla methodDeclaration cuando methodDeclaration . Java7BaseListener y Java7BaseListener este método de escucha:

@Override public void enterMethodDeclaration(Java7Parser.MethodDeclarationContext ctx) { }

¿Cómo obtengo el texto original? ctx.getText() me da una cadena con todo el espacio en blanco eliminado. Quiero los comentarios y el formato original.


manifestación:

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);