2014-10-19 3 views
0

Согласно JavaCC documentation, если я хочу, чтобы настроить сообщения, данные ошибками в лексере:JavaCC: Настройка сообщений об ошибках лексера

Чтобы настроить отчеты об ошибках лексера, класс лексических должны быть подклассами и это метод [LexicalError() в TokenMgrError] переопределен в подклассе. Для того, чтобы помочь с созданием вашей схемы отчетности ошибки, то доступны следующие переменные:

Однако, я не вижу ничего о том, как получить сгенерированный код, чтобы использовать этот подкласс, в отличие от варианта TOKEN_FACTORY.

С другой стороны, если посмотреть в источнике TokenMgrError, некоторые комментарии указывают, что исходный файл должен быть непосредственно отредактирован, а не подклассом. Однако, если я сделаю это в следующий раз изменить файл .jj и Ant регенерировать анализатор и код лексического анализатора, я получаю это предупреждение:

Предупреждения: TokenMgrError.java: Файл является устаревшим. Пожалуйста, переименуйте или удалите этот файл, чтобы новый был создан для вас.

Итак, как я должен это делать?

ответ

1

Вы можете изменить TokenMgrError, если хотите. Это не так много недостатка.

Если вы подклассифицируете менеджер токенов, то вы можете также подклассы TokenMgrError. Вам просто нужно обязательно переопределить все подпрограммы, которые создают TokenMgrError. Чтобы заставить синтаксический анализатор использовать ваш подкласс, вы просто создаете синтаксический анализатор следующим образом:

MyParser parser = new MyParser(new MySubclassTokenManagr(...)) ; 
+0

Значит, «файл устарел»? Предупреждение ложно? Есть ли способ подавить это предупреждение? –

+0

Да, это подделка. Я не знаю способа подавить предупреждение. –

 Смежные вопросы

  • Нет связанных вопросов^_^