Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Semantic Actions with Parsers

Boost , Spirit 2.5.2 , Reference

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext
Description

Семантические действия могут быть прикреплены к любой точке грамматической спецификации. Они позволяют вызывать функцию или функциональный объект, чтобы обеспечить значение, которое должно быть выведено парсером, присоединенным к семантическому действию. Семантические действия связаны с парсером с использованием синтаксисаp[], гдеp— произвольное парсерное выражение.

Header
// forwards to <boost/spirit/home/qi/action.hpp>
#include <boost/spirit/include/qi_action.hpp>

См. такжеВключить структуру.

Model of

Notation

a, p

Случаи парсераP

A

Атрибутный тип, выделенный парсером,

fa

Функция (семантического действия) с подписьюvoidAttrib&,Context,bool&]. Третий параметр — булев флаг, который может быть установлен на ложный, чтобы заставить парсер выйти из строя.Контексти булев флаг необязательны. Более подробную информацию см. ниже.

Attrib

Атрибут, полученный из парса.

Context

Тип контекста выполнения парсера. Больше информации см. ниже.

Expression Semantics

Семантика выражения определяется только там, где она отличается отUnaryParser.

выражение

Семантика

pfa

Еслирокажется успешным, назовите семантические действияфа. Функция или объект функцииfaобеспечивается значением атрибута, парсеромp, плюс некоторая дополнительная контекстная информация и мутабельный бул-флаг, который может использоваться для неудачного парсинга.

Возможными сигнатурами для функций, используемых в качестве семантических действий, являются:

template <typename Attrib>
void fa(Attrib& attr);
template <typename Attrib, typename Context>
void fa(Attrib& attr, Context& context);
template <typename Attrib, typename Context>
void fa(Attrib& attr, Context& context, bool& pass);

Предполагается, что функция или объект функции возвращают значение для генерации вывода путем присвоения ему первого параметраattr.ЗдесьАттрибявляется типом атрибута парсера, прикрепленного к семантическому действию.

ТипКонтекст— это тип контекста выполнения парсера. Этот тип не определен и зависит от контекста, в котором используется парсер. Значениеконтекста, используемое семантическими действиями, написанными с использованиемФениксадля доступа к различным зависящим от контекста атрибутам и значениям. Для получения дополнительной информации оФениксевыражениях, пригодных для использования в семантических действиях см.Nonterminal.

Третий параметр,проход, может быть использован семантическим действием, чтобы заставить связанный парсер выйти из строя. Если пас установлен наложный, парсер действия немедленно вернетложный, при этом не ссылаясьpи не генерируя никакого вывода.

Attributes

выражение

атрибут

afa

a:A-->afa]:A

Complexity

Сложность парсера действия определяется сложностью парсера, к которому прикреплено семантическое действие, и сложностью функции или объекта функции, используемого в качестве семантического действия.

Example

Примеры семантических действий можно найти здесь:Примеры семантических действий.


PrevUpHomeNext

Статья Semantic Actions with Parsers раздела Spirit 2.5.2 Reference может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Reference ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 02:29:01/0.0062720775604248/1