9得票1回答
如何使用boost::spirit::qi解析行尾符?

一个简单的eol不就可以解决问题吗? #include <algorithm> #include <boost/spirit/include/qi.hpp> #include <iostream> #include <string> using...

9得票1回答
使用Boost Spirit解析语法

我正在尝试解析类似以下C函数的树形表达式(使用Spirit Parser Framework): F( A() , B( GREAT( SOME , NOT ) ) , C( YES ) ) 我将尝试在以下语法上使用三个规则: template< typename Iterato...

9得票1回答
从boost::spirit解析器中检索AST

我阅读了关于boost::spirit的教程,因为它使用了解析器组合语法,我非常喜欢。制作解析器非常简单。 不幸的是,这些教程并没有详细说明如何从解析器中获取复杂数据结构。我正试图实现Kaleidoscope AST。 以下是我的AST代码: #ifndef __AST_HPP__ #d...

9得票1回答
单成员结构体的灵气属性传递问题

我在Spirit Qi编译时遇到了问题,它抱怨value_type不是identifier的成员。由于某种原因,Qi的属性系统认为identifier是一个容器类型,并试图枚举它的值类型。 这与这个问题类似,但我认为原因是单个成员结构体,可能与这个错误有关。 #include <st...

9得票3回答
Boost::Spirit::Qi。如何将内联解析器表达式转换为独立的语法,并如何拆分它们生成的元组?

我正在使用QI和Phoenix,希望编写一个小规则,返回4个布尔值作为语义动作内部函数调用的参数。我有几个需要这些参数的函数,目前我采用了以下方法: ( qi::_bool >> qi::_bool >> qi::_bool >> qi::_bool...

8得票1回答
使用自定义跳过语法重新建立 Boost Spirit Qi 跳过功能

我有一个语法,到目前为止一直使用标准的boost::spirit::ascii::space/boost::spirit::ascii::space_type跳过器。 我有一些规则使用了跳过器,有一些则没有,如: qi::rule<Iterator, PTR<Expressio...

8得票3回答
Boost Spirit QI 慢

我尝试使用Boost Spirit QI解析TPCH文件。 我的实现灵感来自于Spirit QI的员工示例(http://www.boost.org/doc/libs/1_52_0/libs/spirit/example/qi/employee.cpp)。 数据采用csv格式,标记用'|'字符...

8得票1回答
在Spirit:Qi中构建自定义表达式树(不使用Utree或Boost :: Variant)

首先,如果使用Boost Variant或Utree更容易的话,我会选择它们,并在另一个主题中尝试解决我的问题。然而,我非常希望能够像下面一样构建树。 背景:如果您想直接转到问题,请忽略本段。我想构建一个表达式树,它可以解析类似于下面的内容。 "({a} == 0) && ...

8得票1回答
Boost Spirit跳过器问题

我是一个有用的助手,可以为您翻译文本。 我遇到了boost spirit skippers的问题。 我需要解析这样的文件: ROW int int [int, int] int [int, int] ... 我能够轻松解析它(感谢stackoverflow ;)),只需要在第一个in...

8得票2回答
将解析器分配给自动变量

灵活的解析器是否不能与auto一起使用? 当传递给qi::parse()内联时,简单的解析器可以正常工作,但如果通过一个auto变量传递,则会崩溃并出现段错误: #include <cstdio> #include <string> #include <boo...