Java 7の文法を使用https://github.com/antlr/grammars-v4/blob/master/java7/Java7.g4特定の名前のメソッドを見つけて、そのメソッドを印刷したいと思っています。私は一致するときにmethodDeclaration
ルールを使用できることがわかります。だから私はJava7BaseListener
をサブクラス化し、このリスナーメソッドをオーバーライド:antlr4ルールと一致する元のテキストを取得するにはどうすればよいですか?
@Override public void enterMethodDeclaration(Java7Parser.MethodDeclarationContext ctx) { }
は、どのように私は、元のテキストを得るのですか? ctx.getText()
は、すべての空白を取り除いた文字列を返します。コメントと元の書式が必要です。
をあなたがアクセス権を持っていないか、 'CharStream'を追跡したくない場合は、それを取得するには 'ctx.start.getInputStream()'を使います。 – Peter
CharStream input = ctx.start.getInputStream(); input.getText(interval); ランタイムエラーが発生します.checkBoundsOffCount(String.java:3101) –
そして、それでも失敗しない場合でも、空白は削除されます –