Написание правила для парсера - PullRequest
1 голос
/ 10 апреля 2011

Hii,

У меня есть парсер, у которого много правил, и нет проблем с ним, он все работает .. Я использую lex и yacc ...

Проблема в том, что я хочуправило такое, что если входная строка не соответствует ни одному из правил, определенных в синтаксическом анализаторе, то я хочу написать правило, которое будет принимать такую ​​входную строку.

Так что в основном я хочу сделать то, что я нехочу, чтобы синтаксический анализатор прекратил выдавать сообщение об ошибке, если вход не соответствует ни одному другому правилу, я хочу отобразить это сообщение об ошибке, а затем заставить синтаксический анализатор продолжить свой анализ вместо выхода ..

Я знаюЯ должен внести изменения в функцию yyerror (), но как именно .. или есть ли другие, я могу написать такое правило ...

Спасибо .. :)

1 Ответ

3 голосов
/ 10 апреля 2011

Вы можете разместить "." (точка) в конце других правил синтаксического анализа. Соответствует любой строке, которая не соответствует другим правилам. Подробнее см. ссылку .

Надеюсь, ты это имел в виду.

Редактировать: Кажется, я неправильно понял. Чтобы определить действие по умолчанию, вы можете просто поместить действие { } в файл парсера. Смотри здесь .

...