![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Position IteratorBoost , ,
Часто при написании парсера, который способен обнаруживать ошибки в формате входного потока, мы хотим, чтобы он сообщал пользователю, где ошибка произошла в этом входе. Классическим примером является написание компилятора или интерпретатора, который обнаруживает синтаксические ошибки в парсируемой программе, указывая номер строки и, возможно, даже положение в строке, где была обнаружена ошибка. Класс position_iterator - это инструмент, предоставляемый в Spirit, который позволяет авторам парсеров легко реализовать эту функциональность. Концепция довольно проста: этот класс представляет собой обертку итератора, которая отслеживает текущее положение в файле, включая текущий файл, строку и столбец. Для этого требуется один параметр шаблона, который должен быть типом итератора, который должен быть обернут. Чтобы использовать его, вам нужно добавить следующее:
Или включить все итераторы в Духе:
Для построения обертки необходимы как начальный, так и конечный итераторы входной последовательности, а также имя файла входной последовательности. Необязательно также можно указать начальную строку и номера столбцов, которые по умолчанию равны 1. Конструкция по умолчанию без параметров создает общий итератор окончания последовательности, аналогично тому, как это делается в потоковых операторах стандартной библиотеки C++. Завернутый итератор должен принадлежать к категории входного или переднего итератора, и позиционный итератор просто наследует эту категорию. Например, для создания начальных и конечных позиционных итераторов из входной C-струны можно использовать:
Operations
Назовите эту функцию, когда вам нужно изменить текущее положение, сохраненное в итераторе. Например, при разборе директив C-style #include, входящий файл должен быть отмечен перезагрузкой файла и столбца на 1 и 1 и имя на имя нового файла.
Позвоните этой функции, чтобы восстановить текущую позицию.
Назовите это, чтобы установить количество вкладок на персонажа. Это значение необходимо для правильного отслеживания номера столбца. file_positionFile_position - это структура, которая удерживает позицию в файле. Его полями являются:
Copyright © 2002 Juan Carlos Arevalo-Baeza
Статья Position Iterator раздела может быть полезна для разработчиков на c++ и boost. Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: ::
|
|||||||||||||||||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |