![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
OrganizationBoost , ,
Рамка очень модульная и организована по слоям:
Дух имеет четыре слоя, плюс независимый верхний слой. Независимый слой, состоящий из актера и итератора, не зависит от других слоев. Архитектура фреймворка полностью ортогональная. Отношения между слоями являются ациклическими. Нижние слои не зависят и не знают о существовании верхних слоев. Модули в слое не зависят от других модулей в том же слое. Клиент может использовать только те модули, которые он хочет, без какого-либо времени компиляции или штрафа за время выполнения. Минималистический подход заключается в использовании только ядра. Высоко обтекаемое ядро используется само по себе. Ядро достаточно подходит для таких задач, как микропарсинг. Модульитераторане зависит от Духа и может использоваться в других приложениях, не связанных с Духом. Этот модуль представляет собой компиляцию автономных итераторов и итераторов, совместимых с Spirit. Со временем эти итераторы были признаны наиболее полезными для разбора с Духом. Модуль 115, также независимый от Spirit, представляет собой компиляцию предопределенных семантических действий, которая охватывает наиболее распространенные задачи обработки семантики. Модульотладкиобеспечивает библиотечную отладку парсера. Этот модуль прозрачно подключается к ядру ненавязчиво и только при необходимости. Модульатрибутавводит передовые механизмы семантического действия с акцентом на извлечение и передачу данных вверх и вниз по иерархии парсера через наследственные и синтезированные атрибуты. Атрибуты также могут использоваться для фактического контроля разбора. Параметрические парсеры - это форма динамических парсеров, которые изменяют свое поведение во время выполнения на основе некоторых атрибутов или данных. МодульDynamicфокусируется на анализаторах с поведением, которое может быть изменено во время выполнения. error_handling. Структура не была бы полной без обработки ошибок. Механизм обработки исключений C++ идеально подходит для Spirit из-за его рекурсивной функциональной природы. C++ Исключения широко используются этим модулем для обработки ошибок. Модульсимволовфокусируется на управлении таблицей символов. Сейчас этот модуль довольно прост. Цель состоит в том, чтобы построить подфреймворк, который сможет вместить в C++ несколько механизмов масштабирования. C++ является отличной моделью для сложности масштабирования, которая, возможно, не имеет параллелей ни в одном другом языке. Существуют классы и наследование, частные, защищенные и общедоступные ограничения доступа, друзья, пространства имен, использование деклараций, использование директив, поиск Koenig (Argument Dependent Lookup) и многое другое. Функциональность таблицы символов, которую мы имеем сейчас, станет основой для создания полной модели.
Поколение Parse Tree и Abstract Syntax Tree (AST) обрабатывается. Деревомодуль. Существуют преимущества парсовых и абстрактных синтаксических деревьев перед семантическими действиями. Вы можете сделать несколько проходов по данным без необходимости повторного анализа ввода. На дереве можно проводить преобразования. Вы можете оценивать вещи в любом порядке, в то время как с помощью схем атрибутов вы должны обрабатывать их с начала до конца. Вам не нужно беспокоиться о побочных эффектах, которые могут возникнуть при неоднозначной грамматике. Модульутилитапредставляет собой набор обычно полезных парсеров и классов поддержки, которые были признаны полезными для обработки общих задач, таких как обработка списков, комментарии, выражения приставок и т. Д. meta, предоставляет средства метапрограммирования для продвинутых разработчиков Spirit. Этот модуль облегчает компиляцию времени и время выполнения парсеров Spirit.
Copyright © 1998-2003 Joel de Guzman
Статья Organization раздела может быть полезна для разработчиков на c++ и boost. Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: ::
|
||||||||||||||||||||||||||||||||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |