Javaプログラミング言語のパーサを書く必要があります。私はいくつかの実装(JavaCC、SableCC)を見てきました。私はそれを処理できると思います。Javaパーサーリネーム変数
私は変数の名前を変更する必要があります。パーサーを使ってこれを行うことができますか?
はいの場合はどうですか?
Javaプログラミング言語のパーサを書く必要があります。私はいくつかの実装(JavaCC、SableCC)を見てきました。私はそれを処理できると思います。Javaパーサーリネーム変数
私は変数の名前を変更する必要があります。パーサーを使ってこれを行うことができますか?
はいの場合はどうですか?
変数の名前をグローバルに変更するだけの場合は、パーサーは必要ありません。あなたが必要とするのは、識別子を取り除くことができる(島の)レクサーだけなので、それらを置き換えることができます。そのようなレクサーは、パーサ部分を無視するだけで、Java文法を持つ任意のパーサジェネレータから取得できます。それはあなたに多くの問題を救うはずです。
これにパーサーを使用しようとすると、ASTが作成されます(IDENTIFIERツリーノードが存在する可能性があります)、おそらくツリーノードを破損して置き換えることも簡単になります。あなたの問題は合法的なソーステキストを再生成することになります。ほとんどのパーサジェネレータは、テキストからツリーへのテキスト機能を提供しません。
スコープに従って変数の名前を変更する場合は、パーサーと完全な名前と型の解決が必要です。それは単なるパーサよりも難しいことです。 Java 7の名前検索に関するルールはかなり複雑です。もう一度、そこにはJava文法のあるパーサジェネレータがあります。この場合、その名前と型解決を実装しない限り、あなたを助けません。あなたは期待以上に多くの作業を見つけるでしょう。
多くのIDEには、そのようなリファクタリング機能があります。これはおそらくオプションですか? –
このようなことは、私自身、リファクタリングをする必要があります。 – user1019710
しかし、なぜIDEを使用しないのですか?まともな文法を見つけてパーサを生成したり、パーサーを自分で作成したりするのは、Eclipse、IntelliJ、Netbeansで簡単に行うことができる面倒な作業です。 –