1

すべての ANTLR エラー メッセージを SLF4J で処理して、他のメッセージの中で適切な順序で表示されるようにしようとしていますが、うまくいきません。

エラー報告と回復の例に従って、emitErrorMessagedisplayRecognitionError、およびをオーバーライドしようとしましたrecoverFromMismatchedToken

@members {
    private Logger logger = LoggerFactory.getLogger(getClass().getName());

    @Override
    public void displayRecognitionError(String[] token_names, RecognitionException e) {
        logger.error("error at " + TextUtil.join(" ", token_names), e);
    }

    @Override
    public void emitErrorMessage(String msg) {
        logger.error(msg);
    }

    @Override
    protected Object recoverFromMismatchedToken(IntStream input, int ttype, BitSet follow) throws RecognitionException {
        throw new MismatchedTokenException(ttype, input);
    }
}

ただし、STDERR でまだメッセージが表示されます。

行 1:10 文字 'y' で実行可能な代替手段がありません
行 1:12 文字 'y' で実行可能な代替手段がありません
4

1 に答える 1