Как заставить Бизона остановиться на ошибке? - PullRequest
1 голос
/ 15 марта 2012

Как заставить Bison останавливаться при ошибке во входном файле?
Я пытался использовать действие 'error', но, похоже, это не помогло.
Анализатор обрабатывает весь входной файл даже после него.попадает в ошибку.

rules:
    rules rule
    | rules error { declaration_context = false; YYABORT; } 
    | rule
    ;

1 Ответ

1 голос
/ 15 марта 2012

Анализатор без действий error в грамматике выйдет из функции yyparse после возникновения первой синтаксической ошибки.Продолжение анализа после синтаксической ошибки возможно только при наличии правил создания ошибок.Если они не смогут восстановить анализ, последуют другие ошибки, и это рано или поздно приведет к прекращению.

Ссылка: http://www.gnu.org/software/bison/manual/bison.html (2.1.5)

...