Здравствуйте, Grigory, Вы писали:
G>Имеются в виду ошибки во входных данных.
G>info.stop.get_position() после вызова parse с невалидным буфером на ходится на начале самой верхней из вложенных рул. Хотелось бы получить позицию конкретного слова, вызвавшего неприятие.
Можно попробовать сделать что-то вроде
(TYPE >> (
IDENTIFIER |
BRACE |
eps_p[error("жду скобку или идентификатор")])) |
CLASS_SPECIFIER |
EOF |
eps_p[error("жду функцию, переменную, класс или конец файла")]))
внутри функтора error — бросать исключение с описанием ошибки при вызове.
имхо, самое простое и понятное. Ну и eps_p[error("...")] можно для удобства сделать макросом.
к сожалению, используются исключения.