boost-spirit相关内容
我已经定义了boost :: spirit :: qi规则: boost::spirit::qi::rule id; 其中标识符由以下位置定义: BOOST_STRONG_TYPEDEF(std::string, Identifier) 但是当我使用 BOOST_SPIRIT_DEBUG_NODE(id); 它无法编译并
..
我有这个示例代码,可以正确解析字符串str. 如果字符串前后有多余的字符,我该如何工作?例如,如果我did str = std::string("AAA") + str + std::string("AAA") frame.h #define BOOST_SPIRIT_USE_PHOENIX_V3 //#define BOOST_SPIRIT_DEBUG #include
..
Coliru 上的简单解析器.解析器-(+x3::alpha)应该能够像Qi那样传播类型为boost::optional的属性.但是它不能编译. std::string const input = "abc"; boost::optional attr; if(x3::parse(boost::begin(input),boost::end
..
我想基于Boost Spirit Qi创建一个解析器,该解析器将能够解析整数值列表.这显然非常容易,并且有很多示例.该列表比逗号分隔的列表要聪明一些,它看起来像: 17、5,斐波那契(2、4),71、99,范围(5、7) 解析器的结果应为具有以下值的std :: vector: 17、5、1、2、3、71、99、5、6、7 其中fibonacci(2,4)得出1,2,3而r
..
我想用特定文字的默认值解析数字. 例如,如果程序接收到"nan"或"n/a",则整数默认值为-1. // Example program #include #include #include #include #include
..
我试图用boost :: spirit解析时用语义规则创建AST. AST必须仅为输入的一部分构建,输入的另一部分应在不使用正弦树的情况下进行解析. 例如,对于这样的输入字符串:"self.usedFoo(Bar).filter( self.baz> baz )"或"self.Foo.filter( true >)"AST应该仅用于粗体部分. 还有一个问题:解析器运行多次解析语法并多次
..
我想输入一个很大的csv文件,以使用Spirit qi进行解析(使用Boost 1.59.0).有一些例子,看起来很简单,但是明显的设置导致编译错误,其中qi :: phrase_parse(...)的第一个参数不被接受.这里有什么用? (一个示例位于: 如何从本质上将迭代器传递给函数气 ) 代码: #define BOOST_SPIRIT_DEBUG //#define BOOST_SPI
..
使用Boost.Spirit解析语言时,如何确保跳过 // line comments /* block comments */ and /* /* nested block */ comments */ 何时阅读代码?此刻,我只是将phrase_parse转换为预定义的qi::grammar.我想我需要的是某种跳过词法分析器,对吧? 解决方案 无需词法分析器
..
我是错误"LNK1179:文件无效或损坏:COMDAT重复"的受害者 和这些 (这是对我之前的问题的跟踪.) 我想用其他东西代替boost::phoenix.也许boost::bind,但我不知道如何授予它对karma::_val的访问权限. 以下代码无法在 的VC9上编译 错误C2825:"F":后跟"::"必须是类或名称空间 #include
..
请考虑以下程序: using FooVariant = boost::variant; using FooOptional = boost::optional; template struct FooGenerator
..
我开始学习Boost.Spirit并完成阅读这是代码(包括来自Spirit lib内部示例之一)的所有代码: #include #include #include #include
..
我想要一个名称-值对的列表.每个列表以“."结尾.和停产.每个名称/值对之间用“:"分隔.每对之间用“;"分隔在列表中.例如 NAME1: VALUE1; NAME2: VALUE2; NAME3: VALUE3. 我的问题是值包含“."并且最后一个值始终使用“."在EOL.我可以使用某种形式的前瞻性来确保最后一个'.'.在对EOL进行不同对待之前? 解决方案 我已经创
..
假设我们有一条规则1 qi::rule rule1 = qi::int_[qi::_val=qi::_1]; 我们认为获取一个int作为属性是不够的,我们还想获取原始数据(boost :: iterator_range).我们可能有很多与Rule1类型相同的规则.因此,最好有一个通用的解决方案.因此,我们可以定义另一个规则2.
..
我准备了一个小型基准程序,用于测量不同的解析方式.问题在于使用流和将日期存储为time_t + double的自定义函数时,性能会大大降低. std :: string怪异的增强精神特质是因为寻求回溯将不匹配行的所有公共部分填充到可变字符串中,直到找到匹配的行为止. 很抱歉,源代码质量(复制/粘贴,变量名称错误,缩进弱...).我知道此基准代码将不会包含在“干净代码"书中,因此请忽略这
..
假设我有 struct cat { int tail; int head; }; struct bird { int wing; int bursa; }; 如果我这样做... struct wat : public cat, public bird { }; BOOST_FUSION_ADAPT_STRUCT(cat,tail,head) B
..
我正在解析一个文本文件,大小可能为几GB,由以下几行组成: 11 0.1 14 0.78 532 -3.5 基本上,每行一个int和一个float.整数应该有序且非负.我想验证数据是否如所述,并已将范围内的min和max int返回给我.这是我想出的: #include #include #include
..
我在boost::spirit中具有以下规则: typedef boost::tuple Entry; qi::rule entry; entry = qi::int_ >> qi::int_; 但是第二个int没有写入元组.有没有一种方法可以使它工作而不必使用boost::fusion::tuple? 如
..
鉴于以下正确解析的x3语法,我想添加参数,限定词和属性的验证.这似乎表明了一种在各种规则中动态切换正在使用哪个符号表的方法.实现此目的的最佳方法是什么?这似乎是语义动作和属性的某种混合,但我不清楚如何实现. #include #include #include #include #include #i
..
我想提出一个主题,该主题将我送进了一个兔子洞,并提出了一个有关 qi ::符号. 当我查看新的野兽库并阅读 它以从HTTP路径猜测MIME类型的函数开始 扩展名.我开始更加仔细地观察,并看到了: auto const ext = [&path] { auto const pos = path.rfind("."); if(pos == b
..
我正在使用Boost Spirit在某些软件中实现功能,该功能允许用户输入数学方程式,该方程式将反复应用于输入流.输入流值使用boost::spirit::qi::symbols表示为符号,用户可以在公式中引用. (例如out1 = 3 * in1 + in2) 解析和编译用户方程对性能不敏感,但计算它的输出值是因为它构成了时间紧迫的管道的一部分. Spirit在文档中使用的标准方式是
..