Как изменить поведение ошибки лексера Flex?
Я построил лексер с Flex. Однако есть одна серьезная проблема: Flex по умолчанию генерирует этот метод ошибки:
void yyFlexLexer::LexerError( yyconst char msg[] )
{
std::cerr << msg << std::endl;
exit( YY_EXIT_FAILURE );
}
Это означает, что при каждой синтаксической ошибке мое приложение просто закрывается. Конечно, это не то, что я хочу, так как мне нужно снова и снова вызывать лексер даже с ошибочными входами.
Есть ли способ изменить поведение Flex на этом?
1 ответ
Решил это! Я просто добавил "#define YY_FATAL_ERROR" в начало моего.l файла. Это гарантирует, что Flex не будет вызывать LexerError-метод и, следовательно, приложение не завершится.