私はこのMySQL grammarのAntlr3生成Javaレクサー/パーサーを持っています。Java:Oracleのjavacでコードが大きすぎてEclipse用にあまりありません
Eclipse Neonは上記のlexer/parserをうまくコンパイルできます。結果として得られるプログラムも正常に動作します。したJavaコードがコンパイルされている場合は
:
[javac] .../MySQLParser.java:27: error: code too large [javac] public static final String[] tokenNames = new String[] { [javac] ^ [javac] 1 error
質問:
しかし、オラクルのJava 8コンパイラは、同じJavaコードのための 'コードは大きすぎる' というエラーを与えます本当に大きすぎる(> 64K)、両方のコンパイラで同じエラーが発生してはいけませんか?
大きすぎるバイトコードの場合、OracleコンパイラにEclipseのようなスペース効率のよいコードを生成させる方法はありますか?
コードのメンテナンス上の理由から、私はAntlrサイトから入手したオリジナルのMySQL文法を編集することも、生成されたJavaパーサー/レクサーコードを編集してOracle用に十分小さくすることも望まないでしょう。したがって、コンパイラレベルの回避策をいくつか "メタ"したいと考えています。
上記のエラーメッセージは、問題がちょうど
tokenNames
が大きすぎるということを意味しますか?それとも、それが全体のクラスで、それが大きすぎるのですか?一人で
ネオン??ああ、私はまだHeliosにいる –
Eclipseコンパイラは 'javac'とは全く異なるコードベースであることに注意してください。生成された出力が正しい限り、これは通常問題ではありません。 Eclipseコンパイラはjavacのスタンドアロンの置き換えとして使用できます。したがって、このファイルをコンパイルするために明示的に使用することを検討することができます。 –
これがコードサイズの問題に役立つかどうかわかりませんが、良い文法を使用することを強くお勧めします。文法リポジトリからのものは不完全であり、多くの言語部分を欠いています。代わりに、[MySQL Workbench](https://github.com/mysql/mysql-workbench/tree/master/library/parsers/grammars)の100%完全文法を使用してください。 –