boost-spirit相关内容
我正在尝试使用boost spirit来获取要解析的文件的当前行.我创建了一个语法类和我的结构来解析我的命令.我还想跟踪找到命令的那一行,并将其解析到我的结构中.我将istream文件迭代器包装在multi_pass迭代器中,然后将其包装在boost :: spirit :: classic :: position_iterator2中.在我的语法规则中,如何获得迭代器的当前位置?或者这不可能吗?
..
TL; DR 如何将 boost :: spirit 语法的结果解析为 std :: set ? 完整的问题陈述 作为学习如何使用 boost :: spirit 的练习,我正在设计X.500/LDAP专有名称的解析器.可以在 RFC-1779 中以BNF格式找到语法. 我“展开"并将其翻译为 boost :: spirit 规则.那是第一步.基本上,DN是一组RDN(相对
..
为了提高性能,我希望替换: templatestd :: string ToStringFixed(const T x,const unsigned int width = 8){std :: stringstream ss;ss
..
为了开发Spirit X3解析器,我想使用语义动作(脚注1).对我来说,控制如何将属性存储到STL容器中很重要. 这个问题是关于如何控制解析器属性_attr(ctx)与规则类型:_val(ctx)匹配的,以便可以对其进行正确分配.也许这个问题归结为如何应用无证件 transform_attribute 功能.但是,请与我一起阅读,看看在示例代码中这是否真的可以解决我的问题. 打印对象/
..
我最近一直在看Boost.Spirit(Boost 1.39中包含的版本),但是仅凭文档我就感到很困惑.我正在寻找的是使用Boost.Spirit实现的玩具语言的示例-类似于小型Javascript或Lua的东西,您基本上在其中创建AST和过程.如果它仅支持函数/变量定义和基本运算符,我会很高兴,我只想看看您如何使用Boost.Spirit创建普通的AST,以及如何实现基本规则(例如标识符,声明等
..
我正在尝试解析以下结构: 结构选择器{std :: string元素;std :: string id;std :: vector类;}; 此结构用于解析形式为 element#id.class1.class2.classn 的选择器.这些选择器始终以1或不包含任何元素开头,可以包含1或不包含id,并且可以包含0到n个类. 这会变得更加复杂,因为类和id
..
假设我有这样的BNF语法 :: =|:: = a |b |c |d |Ë|f |克|h |一世:: = 0 |1 |2 |3 |4 如果您查看 规则,则其延续从 | 开始,但以&digit; 规则的延续开始从生产开始,在前一行的末尾出现 | .我也不想使用特定的符号来表示
..
我的解析器快要工作了:)(仍然让Spirit功能集(和编译时)以及非常欢迎的社区在堆栈溢出时感到惊讶) 在线尝试的小样本: http://coliru.stacked-crooked.com/a/1c1bf88909dce7e3 所以我学会了使用更多的lexeme-rules并尝试防止no_skip-我的规则较小,因此更易于阅读,但现在我坚持使用将lexeme-rules和skippi
..
我正在尝试使用Boost.Spirit X3编写(部分)CSS解析器. 我有(非常)基本的设置工作: const autoclarification_block_def ='{'>>+声明>>'}';const autoclarification_def =属性>>':'>>值>>';';const auto property_def = +(char_-“:");const auto
..
#include#include#include#include#include#include使用命名空间boost :: spirit;int main(){std :: string s;std :: getline(std :
..
我一直在研究提振精神的例子,并遇到了以下问题.(我认为它在某些地方像代码中的错误一样被描述,但是我可能是错的) 简而言之:当尝试解析具有从x3 :: variant继承的单个文件类型的结构时,解析器没有生成. 这是代码的一部分 struct操作数:x3 :: variant
..
前言:我问这个问题是因为由于某种原因我无法编译我的代码.我只想知道对Spirit :: x3的不正确理解是不是 您好,我想验证一下;以下是为大量的高度递归解析器定义规则的正确方法(至少在技术上)吗?因此,对于每个解析器,我都会执行以下操作: //仅供参考,它大大简化了定义属性的过程.模板//标签是唯一的struct Access_base
..
我又在和Boost.Spirit.X3挣扎. 我有多个逻辑分析器组(语句,表达式等),每个逻辑组由几个文件表示: group.hpp -包含用于使用的那些解析器的 typedef s, BOOST_SPIRIT_DECLARE 和 extern 变量声明“外面" group_def.hpp -包括上一个,并且包含解析器, BOOST_SPIRIT_DEFINE 等的实际定义. gr
..
我需要为自定义语言为加引号的字符串创建一个解析器,该解析器还将正确处理转义序列,其中包括允许在字符串中使用转义引号.这是我当前的字符串解析器: x3 :: lexeme [quote>*(x3 :: char_-引用)>引用] 其中 quote 只是'“'的常量表达式.它不会处理任何转义序列.我知道 boost :: spirit :: classic:: lex_escape_ch_p
..
我正在尝试使用Boost :: Spirit解析字符串,但是我无法使其正常工作.从今天开始,我就没有使用Boost :: Spirit的经验. 该字符串由用';'分隔的命令组成.这些命令是 "INC someInteger" "BOMB firstInteger secondInteger" “将firstInteger secondInteger thirdInteger
..
编辑:我扩展了sehe的示例,以在我要在另一条规则上使用它时显示该问题: http://liveworkspace.org/code/22lxL7 $ 17 我正在尝试提高Boost Spirit解析器的性能,并且看到自C ++ 11起,就可以使用这样的自动规则: 自动注释="/*">>*(char_-"*/")>>"*/"; (或使用BOOST_AUTO或BOOST_SPIRIT_A
..
所以我有以下qi队长: templatestruct verilog_skipper:公共qi :: grammar{verilog_skipper():verilog_skipper :: base_type(skip){命名空间phx = boost :: phoenix;跳过= qi :: ascii :: space |qi
..
boost :: spirit :: x3 错误处理实用程序允许用户选择在发生期望失败时向用户显示的内容.但是,消息的行号部分似乎并非如此,这正是我要修改的内容.因此,与其代替在第1行中打印出等.我想在其位置打印具有相同行号信息的其他消息.有谁知道我该怎么做,或者一开始是否可以修改? 编辑: 以下是直接来自 https://www.boost.org/doc/libs/1_68_0/l
..
我必须在句子中找到变量并将其替换为它们的值.变量可以用不同的形式编写,例如$ varName或$(varName). 我希望拥有一个VariableHolder结构以方便地访问两者: 结构VariableHolder{字符串名称;//包含"varName"字符串fromFile;//包含"$(varName)"或"$ varName"void setName(ustring n){name
..
我确实有一个看起来像这样的OBJ文件: #此文件使用厘米作为非参数坐标的单位.#第一个元素v -0.017050 -0.017928 0.005579v -0.014504 -0.017928 0.010577..v -0.000000 -0.017928 0.017967VT 0.397581 0.004762VT 0.397544 0.034263..VT 0.397507 0.063764
..