Код: Выделить всё
template
struct test : qi::grammar {
test() : test::base_type(start) {
number =
parse_number [ _val = _1 ]
parse_number =
qi::int_parser() [ _val = boost::phoenix::static_cast_(_1) ];
start = qi::skip(qi::space)[number];
}
private:
qi::rule start;
qi::rule number;
qi::rule parse_number;
}
Позже я хочу расширить это для поддержки префиксов имен типов, чтобы parse_number< /code> может их анализировать:
Код: Выделить всё
255 : 255
(u8)255 : 255
(s8)255 : -1
Код: Выделить всё
../src/StringTest.cpp:129:106: error: expected ‘{’ before ‘;’ token
129 | parse_prefix = (qi::int_parser()) [ _val = boost::phoenix::static_cast_(_1) ];
| ^
../src/StringTest.cpp:129:28: error: invalid cast to function type ‘boost::spirit::qi::int_parser()’
129 | parse_prefix = (qi::int_parser()) [ _val = boost::phoenix::static_cast_(_1) ];
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Подробнее здесь: https://stackoverflow.com/questions/793 ... igned-int8
Мобильная версия