Как изменить поведение ошибки лексера 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-метод и, следовательно, приложение не завершится.

Другие вопросы по тегам