Механизм сообщения об ошибках зубров может быть перезаписан? - PullRequest
1 голос
/ 16 января 2012

Я заметил, что Bison использует конкретное сообщение об ошибке, которое передается функции yyerror() через yyreportSyntaxError().Это функция, сгенерированная с помощью glr.c.

Можно ли как-то изменить поведение этой функции?

Одним из решений является изменение сообщения об ошибке в yyerror().Но если я хочу этого избежать, могу ли я поручить Бизону использовать мою собственную функцию вместо yyreportSyntaxError()?

1 Ответ

0 голосов
/ 15 февраля 2015

( Комментарий преобразуется в ответ )

@ Борт писал:

Я не эксперт по Bison / Flex.Но что касается руководства, а также книги o'illy Bison / Flex, использование yyerror() - это путь.Тем не менее, вы можете отлавливать ошибки непосредственно во время синтаксического анализа и предоставлять свою собственную процедуру обработки ошибок, не используя yyerror(), если вы все равно используете лексер, такой как flex.Вы в основном определяете токен, который определяет ошибку в вашей грамматике, и перехватываете ее с помощью подпрограммы ошибки.

...