boost-spirit

    3热度

    1回答

    在一个简单的解析器测试Live On Coliru, std::string str("x123x"); boost::iterator_range<boost::range_iterator<decltype(str)>::type> attr; if(x3::parse(boost::begin(str), boost::end(str), x3::lit('x') >> x3::raw[

    2热度

    2回答

    我试图创建一个简单的解析器,需要使用boost::spirit::x3两种可能的角色之一。问题是x3::char_('#') | x3::char_('.')似乎有一个boost::variant<char, ?>类型的属性。这意味着我必须在_attr上使用boost::get<char>,而应该直接转换为char。 http://ciere.com/cppnow15/x3_docs/spirit

    1热度

    1回答

    我试图实现一个非常具体的语法,它需要我在某个点解析逗号分隔整数列表。齐规则如下所示: qi::rule<Iterator, ascii::space_type> ident; qi::rule<Iterator, ascii::space_type> nlist; ... ident = char_ >> nlist; nlist = ("(" >> int_ % "," >> ")"

    2热度

    1回答

    我有一个有点简单的问题,我无法找到任何答案。在解析更大的语法时,我发现解析任何大于15个字符的字符串会导致解析器返回失败。解析器是这样的: namespace parser { template <typename Iterator> struct p_grammar : qi::grammar<Iterator, standard::space_type> { p

    2热度

    1回答

    性能改进,我期待取代: template<class T> std::string ToStringFixed(const T x, const unsigned int width = 8) { std::stringstream ss; ss << std::setprecision(width) << std::fixed << x; return ss.st

    3热度

    1回答

    (免责声明,我的学习提升精神) 我试图解析像这样的表达式: F(1) 和想要得到1作为一个字符串(“1”而不是一个数字(它与qi :: int_一起使用))。 我想这样的事情(这是不对的,但也许我是在正确的方向),但由此产生的字符串是“\ X1”,而不仅仅是“” 任何洞察力需要什么来解析一个数字到一个字符串? template <typename Iterator> struct range_p

    1热度

    1回答

    使用boost ::精神::补气,让我们说你要分析是这样的: object.member() 你可以使用如下规则: member_access_rule = symbol_rule >> '.' >> symbol_rule >> '(' >> ')' ; 但是,如果你想解析: object.member().member() 或 object.member().member().

    2热度

    1回答

    我在用boost :: spirit解析复杂日志时遇到问题。我无法按需要获取数据,主要是因为空白队长将所有内容弄糟。 我有一个名为log.txt的下一个文本文件: 1:[2017-Feb-18 01:57:55.341100] <INFO, SIMULATING> => CPU | Name: CAR (ID: 0) - ID: 1 2:[2017-Feb-18 01:57:55.344100]

    2热度

    1回答

    齐::规则与继承属性假设我们有一个规则1 qi::rule<std::string::iterator, int()> rule1 = qi::int_[qi::_val=qi::_1]; 而且我们决定让一个int属性是不够的,我们也希望得到的原始数据(升压:: iterator_range的)。我们可能会有许多与rule1相同类型的规则。所以最好有一个通用的解决方案。因此我们可以定义另一个规

    1热度

    1回答

    我在编译boost关键字解析器的示例代码时遇到了一些麻烦。我使用boost 1.63.0和gcc 6.3.0并指定C++ 11.我跑: g++ -std=c++11 -I boost-1.63-0/include keywords-1.cpp ,被编译器错误的一个巨大的墙击中。 第一个错误是: no type named 'type' in struct boost::mpl::apply...