4
ANTLR4でのエラーの処理
パーサーが何をすべきかわからない場合のデフォルトの動作は、次のように端末にメッセージを出力することです。 1:23行目 '}'にDECIMALがありません これは良いメッセージですが、間違った場所にあります。例外としてこれを受け取りたいです。 を使用してみましBailErrorStrategyたParseCancellationExceptionが、メッセージなしでがスローされます(、によって引き起こされInputMismatchException、メッセージもありません)。 メッセージに有用な情報を保持しながら、例外を介してエラーを報告させる方法はありますか? 私が本当に求めているのは次のとおりです。通常、ルールでアクションを使用してオブジェクトを構築します。 dataspec returns [DataExtractor extractor] @init { DataExtractorBuilder builder = new DataExtractorBuilder(layout); } @after { $extractor = builder.create(); } : first=expr { builder.addAll($first.values); } (COMMA next=expr { builder.addAll($next.values); })* EOF ; expr returns [List<ValueExtractor> values] : a=atom { $values = Arrays.asList($a.val); } | fields=fieldrange …