2013-07-25 1 views
0

Я использую JAVACC для синтаксического анализа некоторой строки, определяемой грамматикой bnf с начальным нетерминальным G. Я хотел бы поймать ошибки, создаваемые TokenMgrError. В частности, я хочу, чтобы обрабатывать следующие два случая:Игнорировать MSGTokenError в JAVACC

  1. Если некоторый префикс входа удовлетворяет G, но не все символы, которые считываются из входных, рассматривать этот случай как нормальные и вернуть AST для найдено префикс вызовом G().
  2. Если вход не имеет префикса, удовлетворяющего условию G, возвращаем null из G().

В настоящее время я получаю файлы TokenMgrError в каждом из этих случаев. Я начал изменять сгенерированные файлы (т. Е. Изменить «Ошибка на исключение» и добавить соответствующие инструкции try/catch/throws), но я нашел, что это утомительно. Кроме того, автоматическая генерация модифицированных файлов, созданных JAVACC, не работает. Есть ли более разумный способ сделать это?

+2

Можете ли вы добавить образец кода? И в отношении Исключений вместо TokenMgrErrors см. Http://www.engr.mun.ca/~theo/JavaCC-FAQ/javacc-faq-moz.htm#tth_sEc3.19 – bcause

ответ

1

Вы всегда можете устранить все TokenMgrErrors путем включения

<*> TOKEN : { <UNEXPECTED: ~[] > } 

как окончательное правило. Это подталкивает все, что вы делаете, к уровню грамматики, где вы можете легче справляться с ними.

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

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