boost-spirit

    6热度

    1回答

    就像其他很多问题一样,我试图用Boost.Spirit.Qi将简单的语法解析为结构树。 我会尝试提炼出我想要做的最简单的情况。我有: struct Integer { int value; }; BOOST_FUSION_ADAPT_STRUCT(Integer, (int, value)) 后来,里面的语法结构的,我有以下成员变量: qi::rule<Iterator, Int

    4热度

    1回答

    我一直在使用Qi和Karma对几种小语言进行一些处理。大部分语法都很小(20-40条规则)。我几乎只能使用autorules,所以我的分析树完全由变体,结构体和std :: vectors组成。 这种设置对于一般情况下的伟大工程: 1)分析的东西(齐), 2)让未成年人操作的解析树(访问者),并 3)输出的东西(噶玛)。 但是,我担心如果我想对语法树进行复杂的结构更改(如移动大的子树),会发生什么

    2热度

    1回答

    我刚开始深入研究Boost :: Spirit,现在是最新版本 - V2.4。 我的问题的本质如下: 我想解析字符串像“1a2”或“3b4”。 所以我用的规则是: (double_ >> lit('b') >> double_) | (double_ >> lit('a') >> double_); 规则的属性必须是“矢量<双>”。我正在将它读入容器中。 的完整代码: #include <b

    1热度

    1回答

    我有以下精神语法。我正在尝试使用标准push_back(at_c<0>(qi::_val), qi::_1)在struct myresult中创建AST节点的向量,但是出现编译错误(请参阅下文)。 typedef vector<ZLS::ASTNode*> vector_astnode_t; struct myresult { vector_astnode_t turtle_commands

    2热度

    2回答

    我听说灵魂在将字符串转换为int时真的很快。 但是,我无法创建一个简单的功能,可以这样做。像 INT string_to_int(字符串& S){ /* * ?????/ } 任何人都可以使用升压精神的东西来填补这个功能。 顺便说一句,我正在努力提高1.34而不是最新版本。

    6热度

    1回答

    我正在写一个lexigraphical分析器。它需要一个英文字符串,并将其转换为一组纬度/经度坐标。这有点像谷歌地球。 不管怎么说,我写我的符号表和语法,它高兴地解析格式的数据。 struct LatLongDegrees { std::string dirLat_; double degLat_; std::string dirLong_; double degLong_; }

    3热度

    1回答

    使用boost.spirit我尝试解析形式command:param1 param2... 做的简单的命令行所以我建立这个解析器: (+(char_ - ':'))[ref(cmd) = _1] >> ':' >> (*char_)[ref(params) = _1] 属性类型这两种化合物的解析器是矢量,因此,如果CMD和params是这种工作的矢量类型。但是,如果它们是std :: st

    6热度

    1回答

    我只使用Boost.Spirit(来自Boost 1.44)三天,试图通过RFC2822中的确切语法解析原始电子邮件。我想我开始了解它,得到的地方,但后来我遇到了一个问题: #include <iostream> #include <boost/spirit/include/qi.hpp> namespace qi = boost::spirit::qi; using qi::omit;

    4热度

    1回答

    我正在使用Spirit 2.4,我想解析这样的结构: Text {text_field}; 问题是,text_field是一个带符号'{','}'和'\'的转义字符串。 我想创建一个使用qi的解析器。我一直在试试这个: using boost::spirit::standard::char_; using boost::spirit::standard::string; using qi::l

    3热度

    3回答

    #include <QtCore/QCoreApplication> #include <boost/spirit/include/qi.hpp> #include <boost/spirit/include/phoenix.hpp> #include <iostream> #include <string> #include <list> #include <map> #def