![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Functor ParserBoost , ,
Самый простой способ написать закодированный парсер рукой, который хорошо работает с остальной частью библиотеки Духа, - просто написать парсер функтора. Ожидается, что у парсера функтора будет интерфейс:
где typedef T result_t - тип атрибута парсера, который будет передан обратно результату матча (см. Глубоко: Парсер). Если парсеру не нужно возвращать атрибут, это может быть просто nil_t. Результат std::ptrdiff_t - количество совпадающих символов, совпадающих с вашим парсером. Отрицательное значение означает неудачное совпадение. Соответствующий парсер функтора может быть преобразован в хорошо сформированный парсер Духа, завернув его в шаблон functor_parser:
ExampleСледующий пример приводит в действие functor_parser:
Для дальнейшего понимания реализации см. Глубоко: Сканер для деталей API сканера. Теперь у нас есть парсер number_parser_p, который мы можем использовать так же, как любой другой парсер Spirit. Пример:
Copyright © 1998-2003 Joel de Guzman
Статья Functor Parser раздела может быть полезна для разработчиков на c++ и boost. Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: ::
|
|||||||||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |