javaファイルのメソッド宣言のパラメータを取得する必要があります。 私はJavaBaseListenerインタフェースとそれらのメソッドを使用しています:Java.g4文法ファイルを変更する
@Override
public Object visitMethodDeclaration(JavaParser.MethodDeclarationContext ctx) {
TokenStream tokens = parser.getTokenStream();
String type = "void";
if(ctx.type() != null) {
type = tokens.getText(ctx.type().getSourceInterval());
}
String args = tokens.getText(ctx.formalParameters());
System.out.println("\t" + type + " " + ctx.Identifier() + args + ";");
return super.visitMethodDeclaration(ctx);
}
問題は、メソッド名とメソッドクラス名の間には空白がないこと、です。 入力:private void addLoan(貸出ローン)
出力:void addLoan(Loanloan);
私はjava.g4文法ファイルを変更しようとしました、そしてformalParameter そこ
を空白を追加しました:variableModifier *タイプ "" variableDeclaratorId 。
しかし、今、私は、次のようなエラーがたくさんあります。
行1:6入力の無い実行可能な代替案は「国民 ライン1時12分余分な入力「」期待識別子 ライン1時20分余分な入力を " 「{期待」道具 『『{』、「<」} ライン2:入力で5ノー実行可能な代替『、』拡張一覧』 ...
何が私の問題のための最適なソリューションとどのように私はそれを処理することはできますか?java8
文法で前方
p.s.誰かが良いjavabasevisitorの使用例/チュートリアルを持っていて、何も見つかりませんでした –
[The ANTLR mega tutorial](https://tomassetti.me/antlr-mega-tutorial)の第25-26章の訪問者の例があります/)。 – BernardK