![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Sum - adding numbersBoost , Spirit 2.5.2 , Tutorials
|
Пространство имен |
Описание |
---|---|
повышение::phoenix | |
Усиление::Дух | |
Усиление::Дух::ascii | |
Специальные финики для духов |
![]() | Note |
---|---|
Если вам неудобно использовать целые пространства имен, не стесняйтесь квалифицировать свой код, использовать псевдонимы пространства и т. Д. Для целей этого учебника мы представим неквалифицированные имена как для Духа, так и для Феникса.. Не волнуйтесь, мы всегда представим полный рабочий код, чтобы вы не заблудились. Фактически, все примеры в этом руководстве имеют соответствующий файл cpp, который QuickBook (инструмент документации, который мы используем) импортирует здесь в виде фрагментов кода. |
Теперь настоящий парсер:
template <typename Iterator> bool adder(Iterator first, Iterator last, double& n) { bool r = qi::phrase_parse(first, last, // Begin grammar ( double_[ref(n) = _1] >> *(',' >> double_[ref(n) += _1]) ) , // End grammar space); if (first != last) // fail if we did not get a full match return false; return r; }
The full cpp file for this example can be found here: ../../example/qi/sum.cpp
Это почти как в нашем оригинальном списке чисел. Мы постепенно строим на наших примерах. На этот раз, как и в примере со сложными числами, мы добавим умные. Есть аккумулятор (<double&n
>), который добавляет числа, разобранные. При успешном разборе это число является суммой всех разобранных чисел.
Первый<double_
>парсер прилагает это действие:
ref(n) = _1
Это приводит к тому, что<double_
><n
>[<n
>].<ref(n)
>говоритФениксу, что<n
>является изменчивой ссылкой.<_1
>Фениксзаполнитель для парсированного атрибута результата.
Второй<double_
>парсер прилагает это действие:
ref(n) += _1
Последующие числа складываются в<n
>.
Это было не так уж и плохо, не так ли?
Статья Sum - adding numbers раздела Spirit 2.5.2 Tutorials может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |