Исключения в LEX & YACC - PullRequest
       25

Исключения в LEX & YACC

1 голос
/ 04 ноября 2011

Я разрабатываю компилятор lex / yacc c.

Чтобы обрабатывать сбои и анализировать ошибки, я хочу развернуть системный обработчик исключений.

На самом деле это только ошибка синтаксического анализа."сообщение обрабатывается независимо от проблемы. Например:

typedef struct , <i>struct_name</i>{...} этот ввод приведет к ошибке синтаксического анализа из-за лишней запятой.

Моя цель - вызвать контекстное исключение, даваяМы можем сосредоточиться именно там, где проблема. Как и в этом примере: "Недопустимое объявление структуры"

Мне действительно нужна помощь для решения этой проблемы.

1 Ответ

1 голос
/ 04 ноября 2011

Это войдет в ваш парсер. Когда он работает, он получает токены от лексера. Если следующий токен не «соответствует» текущему правилу, у вас есть проблема. К счастью, уже существует раздел, посвященный этим ситуациям! См. восстановление после ошибки для версии yacc для gnu и как с этим бороться. Он будет проходить через концепции и переменные, чтобы справиться только с ситуацией, которая у вас здесь есть.

...