Отказ печатать другие строки, когда бизон находит ошибку - PullRequest
0 голосов
/ 21 апреля 2019

Я анализирую текстовый файл из компилятора, который я создал с помощью bison-flex.Когда он находит ошибку, он прекращает печатать следующие строки текста.

Для обработки ошибок я использовал

extern int yylineno;
void yyerror(char *s) {
errors++;


printf("\n Error at line #%d.\n\n",yylineno);
}

1 Ответ

2 голосов
/ 21 апреля 2019

Если вы хотите, чтобы анализатор продолжал работу после синтаксической ошибки, вы должны предоставить хотя бы одну error продукцию.В противном случае алгоритм восстановления после ошибки bison / yacc не применяется.

См. Главу Руководство по восстановлению ошибок для получения дополнительной информации и нескольких простых примеров.

...