![]() |
![]() ![]() ![]() ![]() |
![]() |
Epsilon Parser (eps)Boost , Spirit 2.5.2 , Auxiliary Parsers
|
|||||||||||||||||||||
|
Имя |
|---|
|
Notation
fЛенивый аргумент, который оцениваетбол.
Семантика выражения определяется только там, где она отличается отПримитивного Парсера.
|
выражение |
Семантика |
|---|---|
| Сравните пустую нить (всегда матчи). |
| Если |
|
выражение |
атрибут |
|---|---|
|
|
Для простых
эпссложность О(1). Для семантических предикатовepsf] сложность определяется функциейf.
![]() | Note |
|---|---|
Испытательный ремень для примера (примеров) ниже представлен в разделеОсновные примеры. |
Некоторые используют декларации:
using boost::spirit::qi::eps; using boost::spirit::qi::int_; using boost::spirit::qi::_1; namespace phx = boost::phoenix;
Основныеэпс:
test_parser("", eps); // always matches
Этот пример имитирует «классический»парсер if_p. Здесьint_будет опробован только в том случае, если условиеcистинно.
bool c = true; // a flag test_parser("1234", eps(phx::ref(c) == true) >> int_);
Этот пример имитирует «классический», а_pпарсер. Здесь петля клена выйдет, как только условиеcстанет истинным. Заметьте, что условиеc, превращается вложное, когда мы подходим к разбору4.
test_phrase_parser("1 2 3 4", *(eps(phx::ref(c) == true) >> int_[phx::ref(c) = (_1 == 4)]));
Статья Epsilon Parser (eps) раздела Spirit 2.5.2 Auxiliary Parsers может быть полезна для разработчиков на c++ и boost.
:: Главная :: Auxiliary Parsers ::
реклама |