Как связать анализируемые объекты Boost Spirit с их расположением во входном потоке? - PullRequest
1 голос
/ 09 июня 2011

Библиотека Boost Spirit позволяет отслеживать позицию ввода при разборе .Этот механизм позволяет информировать о местонахождении ошибки синтаксического анализатора во время синтаксического анализа.

Я хотел бы сохранить исходное местоположение для всех проанализированных сущностей вместе с ними для будущего использования.(Например, семантическая проверка AST.) Каков рекомендуемый способ сделать это?

Спасибо!

1 Ответ

2 голосов
/ 10 июня 2011

Если вам нужна позиция всех сущностей, вам может быть лучше использовать лексер, который производит токены, по выбору несущие информацию о местоположении о согласованном входе (см. здесь ). Если лексер не является опцией, вы можете использовать новую конструкцию on_success() (доступную в SVN или начиная с Boost V1.47), которая работает аналогично on_error(), за исключением того, что ваш предоставленный обработчик будет вызываться при успешном разборе правило, с которым оно связано. Пример заклинания, чтобы увидеть, как это работает.

...