Gulp / Grunt захватывает все цветовые переменные на листе стилуса и записывает их в файл как определения переменных

Посмотрите на qi::repository::distinct или выполните некоторые меры самостоятельно:

start %= *(
           keyword  [cout << val("Keyword as a number: ") << _1 << endl]
         | invalid  [cout << val("Invalid keyword: ")     << _1 << endl]
         );

keyword = mySymbols >> !(char_("a-zA-Z0-9_"));

invalid = +ascii::graph;

Правила, объявленные как

qi::rule start;

// lexemes do not ignore embedded skippables
qi::rule keyword;
qi::rule invalid;

См. Live On Coliru

Отпечатки:

Keyword as a number: 1
Keyword as a number: 2
Invalid keyword: ONEMORE
Keyword as a number: 2

Полный источник:

#include 
#include 
#include 
#include 

using namespace std;
namespace qi    = boost::spirit::qi;
namespace phx   = boost::phoenix;
namespace ascii = boost::spirit::ascii;

template 
struct keyword_parser : qi::grammar
{
    struct mySymbols_ : qi::symbols
    {
        mySymbols_()
        {
            add
            ("ONE"   , 1)
            ("TWO"   , 2)
            ("THREE" , 2)
            ;
        }

    } mySymbols;

    keyword_parser() : keyword_parser::base_type(start)
    {
        using qi::_1;
        using ascii::char_;
        using phx::val;

        start %= *(
                   keyword  [cout << val("Keyword as a number: ") << _1 << endl]
                 | invalid  [cout << val("Invalid keyword: ")     << _1 << endl]
                 );

        keyword = mySymbols >> !(char_("a-zA-Z0-9_"));

        invalid = +ascii::graph;

    }

    qi::rule start;
    // lexemes do not ignore embedded skippables
    qi::rule keyword;
    qi::rule invalid;
};

int main()
{
    using boost::spirit::ascii::space;
    typedef std::string::const_iterator iterator_type;
    typedef keyword_parser keyword_parser;

    std::string s = "ONE TWO ONEMORE THREE";
    iterator_type b = s.begin();
    iterator_type e = s.end();
    phrase_parse(b, e, keyword_parser(), space);

    return 0;
}

-11
задан Alain Jacomet Forte 2 December 2014 в 16:03
поделиться