![]() |
![]() ![]() ![]() ![]() |
![]() |
NonterminalBoost , Spirit 2.5.2 , Generator 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Ленивые аргументы, которые оценивают каждый из наследственных атрибутов Нетерминала.
В дополнение к требованиям, определенным в<Generator>, для любого Нетерминала необходимо выполнить следующее:
|
выражение |
Семантика |
Тип возврата |
|---|---|---|
< |
В выражении генератора вызовите Nonterminal< |
< |
< |
В экспрессии генератора вызовите нетерминальный< |
< |
< |
Установите имя нетерминала |
< |
< |
Получить имя нетерминала |
< |
|
выражение |
Описание |
|---|---|
< |
Подпись< |
< |
Местные переменные< |
Статья Nonterminal раздела Spirit 2.5.2 Generator Concepts может быть полезна для разработчиков на c++ и boost.
:: Главная :: Generator Concepts ::
реклама |