JavaCCを初めて使用していますが、デッドコードが多く発生していることに気付いています。JavaCCでデッドコードが生成される
{if ("" != null) return result;}
throw new Error("Missing return statement in function");
}
このデッドコードの生成を避けることはできますか?それはうまく避けることができますコンパイラの警告が発生します。
ありがとうございます!
Statement UseStatement():
{
String dbName;
}
{
<USE> dbName=DbObjectName()
{
return new UseStatement(dbName);
}
}
生成します:ここで
は.jjファイルからの完全な最小限の例ですfinal public Statement UseStatement() throws ParseException {String dbName;
jj_consume_token(USE);
dbName = DbObjectName();
{if ("" != null) return new UseStatement(dbName);}
throw new Error("Missing return statement in function");
}
さらにJavaCCのはTokenMgrErrorをスローParserTokenManagerファイルを生成している - しかし、コードがしませんコンパイル。それはchar
と宣言する必要があるprotected int curChar
を宣言します。このフレーズを検索すると、正確にchar
と宣言されている多くの例が表示されます。これは多くの人々が結果を手動で編集することですか?
JavaCCのどのバージョンを使用していますか? 'LEGACY_EXCEPTION_HANDLING = false'オプションを試しましたか? –
'curChar'のタイプについてのあなたの質問に答えるために、それは多くの手編集ではありません。バージョン5は型を 'char'として生成します。 –
LEGACY_EXCEPTION_HANDLINGは実際には「ユーザー設定可能」ではありませんが、変更することは可能です。下記の編集をご覧ください。使用していたMavenプラグインで使用されていたバージョンは6.1.3でしたが、元のcodehausプラグインに戻ってJavaCCのバージョンを7.xに強制する方法を考え出しました。ありがとう! –