boost-spirit

    1热度

    2回答

    我已经尝试了各种方法来解决这个问题,使用映射和强制转换,将解析分为不同的子部分,使用std ::直接向量和尝试_r1等,但我似乎没有掌握有关使用属性的基本知识。 我想分析的线路,如: DEFMACRO macroname param1 param2 param3 ... paramN ,并以其则params的列表一起添加宏名成气::符号解析器。 匹配上 lit("DEFMACRO") >> (

    1热度

    1回答

    在this example中,员工结构以“employee {int,string,string,double}”的形式进行解析。 我想知道是否有可能修改这个例子来解析不同类型的结构,比如“intern {int,string,string}”。 具体来说,我想将结构传递给结构类型重载的函数。如果我可以避免为此使用多态双重分派,并且保留被解析的具体类型以静态匹配正确的重载函数,那将是非常好的。

    1热度

    1回答

    我从精神手册扩展了Mini XML示例。 语法描述了一个xml标签,它可以用'/>'关闭,并且没有子节点,或者像例子中的关闭标签''那样关闭,并且可以有孩子。 #include <boost/spirit/include/qi.hpp> #include <boost/spirit/include/phoenix_core.hpp> #include <boost/spirit/include

    10热度

    1回答

    我想在Boost.Spirit中编写一个shell语言分析器。但是,我不清楚关于rule的语义的一些基本问题。 查看文档,有和r.copy()的rule的成员。 IIUC,这些成员应该分别返回提及规则和规则内容的副本。但是,我没有明确说明当我在另一个规则的定义中使用规则时会发生什么。从我的实验,我发现相互递归规则可以定义为: rule<Iter> r1, r2; r1 = ... >> r2 >

    1热度

    2回答

    我使用属性传播为玩具语言构建语法树。我在我的if语句的定义中遇到了一个问题,很难从错误消息中分辨出来,但我认为rhs属性没有折叠到预期的属性中。它应该崩溃到我认为的tuple <double,Statement,optional<Statement>>。 错误:C:\Program Files (x86)\CodeBlocks\MinGW\boost_1_43_0\boost\variant\va

    8热度

    1回答

    我用精神mini_c样本做了一些测试。遗憾的是它并没有如预期的运算符优先级保持: int main() { return 3 > 10 || 3 > 1; } 计算结果为0。 return (3 > 10) || (3 > 1); 返回1 我试图移动的定义“||”和“& &”来的最上方的 template <typename Iterator> expression<Ite

    0热度

    1回答

    我试图修改boost :: spirit的mini_c示例以匹配我现有的词汇表。 因此,我增加了一个运营商“不就是应该表现等于为‘’: unary_expr = primary_expr | ("NOT" > primary_expr [op(op_not)]) // This does not work | ('!' > primary_expr [op

    0热度

    1回答

    我想解析一个双精度序列的字符串到具有Boost Spirit的std :: map 中。 我改编自 http://svn.boost.org/svn/boost/trunk/libs/spirit/example/qi/key_value_sequence.cpp 的例子,但我有difining适当补气::规则键和值的一个问题: template <typename Iterator> stru

    0热度

    1回答

    我如何设置assign_a中的值的编码?我需要设置cyrrilic,但我还没有任何想法如何做到这一点 #include "filter_data.h" #include <boost/bind.hpp> #include <boost/spirit.hpp> #include <boost/spirit/actor.hpp> #include <boost/

    0热度

    1回答

    昨天我开始使用spirit。我必须为小语言编写解析器并形成中间数据结构。我遵循Pascal Parser示例Boost Repository。这个例子很好,因为它支持简单的调试。这个例子使用了Classic Spirit。 我是否应该翻译使用气(至今我还没有遇到任何关于气的问题)? 这样的转换有一个简单的例子吗?我现在主要使用经典::语法类,就像在这个例子中一样。