![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Semantic Actions with ParsersBoost , Spirit 2.5.2 , Reference
|
выражение |
Семантика |
---|---|
|
Если |
Возможными сигнатурами для функций, используемых в качестве семантических действий, являются:
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
и не генерируя никакого вывода.
выражение |
атрибут |
---|---|
|
|
Сложность парсера действия определяется сложностью парсера, к которому прикреплено семантическое действие, и сложностью функции или объекта функции, используемого в качестве семантического действия.
Примеры семантических действий можно найти здесь:Примеры семантических действий.
Статья Semantic Actions with Parsers раздела Spirit 2.5.2 Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |