![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
NonterminalBoost , Spirit 2.5.2 , Parser Concepts
|
![]() |
Note |
---|---|
Начиная сSpiritV2.5 (распределяется с Boost V1.47) заполнитель< |
_r1
... r10
<boost::spirit::_r1
>...<boost::spirit::r10
>заполнители могут быть использованы вФеникссемантические действия в любом месте в определении Nonterminal. Этизаполнители Фениксаотносятся к наследственным атрибутам Нетерминала.
Нетерминалы могут иметь локальные переменные, которые будут создаваться на стеке в разрезе времени. Местный дескриптор, добавленный к Нетерминальной декларации, дает Нетерминальные локальные переменные:
template <typename T0, typename T1, typename T2, ..., typename TN> struct locals;
где<T0
>...<TN
>— типы локальных переменных, доступных в вашихсемантических действиях Фениксас использованием заполнителей:
boost::spirit::_a
>boost::spirit::_b
>boost::spirit::_c
>boost::spirit::_d
>boost::spirit::_e
>boost::spirit::_f
>boost::spirit::_g
>boost::spirit::_h
>boost::spirit::_i
>boost::spirit::_j
>которые соответствуют локальным переменным Нетерминала<T0
>...<T9
>.
Notation
x
Нетерминальный
X
Нетерминальный тип
arg1
, arg2
, ..., argN
Ленивые аргументы, которые оценивают каждый из наследственных атрибутов Нетерминала.
В дополнение к требованиям, определенным в<Parser
>, для любого Нетерминала необходимо выполнить следующее:
выражение |
Семантика |
Тип возврата |
---|---|---|
< |
В парсерном выражении призывайте Нетерминал< |
< |
< |
В парсерном выражении взывайте к нетерминальному< |
< |
< |
Наименование термина. |
< |
< |
Получение имени нетерминала. |
< |
отладка(x) |
Debug Nonterminal< |
< |
выражение |
Описание |
---|---|
< |
Подпись< |
< |
Местные переменные< |
Статья Nonterminal раздела Spirit 2.5.2 Parser Concepts может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Parser Concepts ::
реклама |