Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Number List Attribute - one more, with style

Boost , Spirit 2.5.2 , Tutorials

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Вы видели, что<double_>парсер имеет атрибут<double>. Все парсеры имеют атрибут, даже сложные парсеры. Те, которые составлены из примитивов, использующих операторы, такие как парсер списка, также имеют атрибут. Бывает так, что атрибут списка парсер:

p % d

<std::vector>является одним из атрибутов<p>. Итак, для нашего парсера:

double_ % ','

У нас будет атрибут:

std::vector<double>

So, what does this give us? Well, we can simply pass in a std::vector<double> to our number list parser and it will happily churn out our result in our vector. For that to happen, we'll use a variation of the phrase_parse with an additional argument: the parser's attribute. With the following arguments passed to phrase_parse

  1. Итератор, указывающий на начало ввода
  2. Итератор, указывающий на один прошедший конец входа
  3. Объект парсера
  4. Еще один парсер называется скип парсер
  5. Атрибут парсера

Теперь наш парсер упрощен до:

template <typename Iterator>
bool parse_numbers(Iterator first, Iterator last, std::vector<double>& v)
{
    using qi::double_;
    using qi::phrase_parse;
    using qi::_1;
    using ascii::space;
    bool r = phrase_parse(first, last,
        //  Begin grammar
        (
            double_ % ','
        )
        ,
        //  End grammar
        space, v);
    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/num_list4.cpp

Эй, больше никаких действий!!!Теперь мы входим в область грамматики атрибутов. Круто, да?


PrevUpHomeNext

Статья Number List Attribute - one more, with style раздела Spirit 2.5.2 Tutorials может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Tutorials ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 01:47:33/0.0053908824920654/1