![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
The Select ParserBoost , ,
Выбранные парсеры могут использоваться для идентификации одного парсера из заданного списка парсеров, который успешно распознает текущую входную последовательность. Пример: rule<> rule_select = select_p ( parser_a , parser_b /* ... */ , parser_n ); Парсеры (parser_a, parser_b и т.д.) проверяются последовательно слева направо, пока парсер не совпадет с текущей входной последовательностью. Если найден соответствующий парсер, парсер select_p возвращает позицию парсера (нулевой индекс). Например, в приведенном выше примере 1 возвращается при совпадении parser_b. Существуют два предопределенных парсера семейства выбранных парсеров: select_p и select_fail_p. Эти парсеры отличаются тем, как обрабатывается случай отсутствия совпадений (когда ни один из парсеров не соответствует текущей последовательности ввода). При этом select_p Парсер вернется -1, если не будет найден соответствующий парсер, парсер select_fail_p вообще не будет совпадать. Следующий образец показывает, как выбранный парсер может быть использован очень удобно в сочетании с парсером переключателя : int choice = -1; rule<> rule_select = select_fail_p('a', 'b', 'c', 'd')[assign_a(choice)] >> switch_p(var(choice)) [ Этот пример показывает правило, которое соответствует:
Для других входных последовательностей правило дачи вообще не соответствует.
Copyright © 2003-2004 Hartmut Kaiser
Статья The Select Parser раздела может быть полезна для разработчиков на c++ и boost. Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: ::
|
||||||||||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |