boost-spirit相关内容

忽略所有字符直到给定的单词

我有这个示例代码,可以正确解析字符串str. 如果字符串前后有多余的字符,我该如何工作?例如,如果我did str = std::string("AAA") + str + std::string("AAA") frame.h #define BOOST_SPIRIT_USE_PHOENIX_V3 //#define BOOST_SPIRIT_DEBUG #include ..
发布时间:2020-09-22 06:10:31 C/C++开发

增强精神气与多种元素的搭配

我想基于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 ..
发布时间:2020-09-22 06:09:06 C/C++开发

语义动作在boost :: spirit解析中运行多次

我试图用boost :: spirit解析时用语义规则创建AST. AST必须仅为输入的一部分构建,输入的另一部分应在不使用正弦树的情况下进行解析. 例如,对于这样的输入字符串:"self.usedFoo(Bar).filter( self.baz> baz )"或"self.Foo.filter( true >)"AST应该仅用于粗体部分. 还有一个问题:解析器运行多次解析语法并多次 ..
发布时间:2020-09-22 06:03:26 C/C++开发

本着推动精神,将multi_pass与流式文件输入配合使用,这是迭代器所需的

我想输入一个很大的csv文件,以使用Spirit qi进行解析(使用Boost 1.59.0).有一些例子,看起来很简单,但是明显的设置导致编译错误,其中qi :: phrase_parse(...)的第一个参数不被接受.这里有什么用? (一个示例位于: 如何从本质上将迭代器传递给函数气 ) 代码: #define BOOST_SPIRIT_DEBUG //#define BOOST_SPI ..
发布时间:2020-09-22 05:59:41 C/C++开发

如何在使用boost :: spirit :: karma生成时避免boost :: phoenix

我是错误"LNK1179:文件无效或损坏:COMDAT重复"的受害者 和这些 (这是对我之前的问题的跟踪.) 我想用其他东西代替boost::phoenix.也许boost::bind,但我不知道如何授予它对karma::_val的访问权限. 以下代码无法在 的VC9上编译 错误C2825:"F":后跟"::"必须是类或名称空间 #include ..
发布时间:2020-09-22 05:44:01 C/C++开发

提前解决歧义的boost :: spirit :: qi语法

我想要一个名称-值对的列表.每个列表以“."结尾.和停产.每个名称/值对之间用“:"分隔.每对之间用“;"分隔在列表中.例如 NAME1: VALUE1; NAME2: VALUE2; NAME3: VALUE3. 我的问题是值包含“."并且最后一个值始终使用“."在EOL.我可以使用某种形式的前瞻性来确保最后一个'.'.在对EOL进行不同对待之前? 解决方案 我已经创 ..
发布时间:2020-09-22 05:38:18 C/C++开发

为什么在增强精神中使用流会大大降低性能?

我准备了一个小型基准程序,用于测量不同的解析方式.问题在于使用流和将日期存储为time_t + double的自定义函数时,性能会大大降低. std :: string怪异的增强精神特质是因为寻求回溯将不匹配行的所有公共部分填充到可变字符串中,直到找到匹配的行为止. 很抱歉,源代码质量(复制/粘贴,变量名称错误,缩进弱...).我知道此基准代码将不会包含在“干净代码"书中,因此请忽略这 ..
发布时间:2020-09-22 05:36:55 其他开发

在x3中动态切换符号表

鉴于以下正确解析的x3语法,我想添加参数,限定词和属性的验证.这似乎表明了一种在各种规则中动态切换正在使用哪个符号表的方法.实现此目的的最佳方法是什么?这似乎是语义动作和属性的某种混合,但我不清楚如何实现. #include #include #include #include #include #i ..
发布时间:2020-09-22 05:20:45 C/C++开发

Qi Symbols性能降低?

我想提出一个主题,该主题将我送进了一个兔子洞,并提出了一个有关 qi ::符号. 当我查看新的野兽库并阅读 它以从HTTP路径猜测MIME类型的函数开始 扩展名.我开始更加仔细地观察,并看到了: auto const ext = [&path] { auto const pos = path.rfind("."); if(pos == b ..
发布时间:2020-09-22 05:11:19 C/C++开发

用其他符号表重新计算Boost Spirit解析的属性的最有效方法是什么?

我正在使用Boost Spirit在某些软件中实现功能,该功能允许用户输入数学方程式,该方程式将反复应用于输入流.输入流值使用boost::spirit::qi::symbols表示为符号,用户可以在公式中引用. (例如out1 = 3 * in1 + in2) 解析和编译用户方程对性能不敏感,但计算它的输出值是因为它构成了时间紧迫的管道的一部分. Spirit在文档中使用的标准方式是 ..
发布时间:2020-09-22 05:09:11 C/C++开发