typedef: The reference type of the scanner's iterator
bool at_end()
const
Returns true if the input is exhausted
value_t operator*()
const
Dereference/get a value_t
from the input
scanner
const& operator++()
move the scanner forward
IteratorT& first
The iterator pointing to the current input position.
Held by reference
IteratorT constlast
The iterator pointing to the end of the input. Held
by value
Основное поведение сканера регулируется политикой. Фактическое выполнение функций публичных членов сканера, перечисленных в таблице выше, осуществляется политиками сканера.
Три набора политик регулируют поведение сканера. Эта политика позволяет ненавязчиво распространять Дух. Политика сканирования позволяет расширить ядро, не требуя каких-либо потенциально дестабилизирующих изменений в коде. Писательница библиотеки может предложить свою собственную политику, которая отменяет те, которые уже существуют, чтобы точно настроить процесс анализа в соответствии с ее собственными потребностями. Слои выше ядра, возможно, также захотят воспользоваться этим механизмом, основанным на политике. На ум приходят абстрактные синтаксические генерации деревьев, отладчики и лексеры.
Существует три набора политик, которые регулируют:
Итерация и фильтрация
Признание и сопоставление
Обработка семантических действий
iteration_policy
Вот политики по умолчанию, которые регулируют итерацию и фильтрацию:
Сканер может быть сделан, чтобы перестроиться на другой набор политик в любое время. Он имеет членскую функциюchange_policies(new_policies). Учитывая новый набор политик, эта функция создает новый сканер с новым набором политик. Тип результатаотскокасканера можно получить, назвав метафункцию:
Сканер также может быть выполнен для перебиндинга на другой тип итератора в любое время. Имеет функцию участникаchange_iterator (первый, последний). Учитывая, что новая пара итераторов типа отличается от тех, которые удерживаются сканером, эта функция создает новый сканер с новой парой итераторов. Тип результатаотскокасканера можно получить, назвав метафункцию:
Use, modification and distribution is subject to the Boost Software
License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
Статья In-depth The Scanner раздела может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.