boost-spirit-qi相关内容

如何使用boost ::精神,以验证的代数声明?

我试图延长计算器例如中,使,而不是分析和评估代数前pression,解析器会确定的代数陈述是真还是假。我的意思是一样的语句 1 + 5 * 5 - 10 = 19 - 3 (期望解析器的结果是真正)和 3 - 1 = 9 (期望解析器的结果是假) 我得承认,我是新来的的boost ::精神和它的各种此刻压倒。不过,我觉得我理解的计算器例子不够好,至少取得一些进展。 使用所提供的示例作为出发点, ..
发布时间:2016-08-12 17:36:52 C/C++开发

Boost.Spirit.Qi:动态地创建"区别"解析器在分析时

一个“差异化”解析器可以由二进制创建 - (减号)运算符: 规则=补气:: char_ - 气::亮起(“}}”) 甚至复合差异:规则=补气:: char_ - 气::亮起(“}}”) - 齐::亮起(“]]”) 但我怎么能生成在解析时的差异解析器的整个结果?结果 我猜它可能是某种形式的象下面这样:凤凰::功能< difference_parser_impl> diffe ..
发布时间:2016-08-12 17:33:52 C/C++开发

提振精神:: ::补气期望解析器和解析器分组意外的行为

我希望有人可以通过我的使用&GT的无知照亮一盏灯; 和>> 运营商在精神分析。 我有一个工作的语法,其中顶层的规则看起来像 检测=标识符>> operationRule>>重复(1,3)[any_string]≥>箭头GT;> any_string>> conditionRule; 它依赖于自动分配解析值的融合适应的结构(即升压元 ..
发布时间:2016-08-12 17:33:07 C/C++开发

从提高语义动作::精神访问迭代器位置

可以说我有code这样的(供参考行号): 1: 2:功能FuncName_1 { 3:VAR VAR_1 = 3; 4:VAR VAR_2 = 4; 5:... 我想写这样解析文本的语法,将所有indentifiers(函数和变量名)的相关信息成树(utree?)。 每个节点应preserve:line_num,column_num和符号价值。例如:根:FuncName_1(行:2,列:1 ..
发布时间:2016-08-12 17:29:46 C/C++开发

通过过滤一个std ::地图的合成属性,提振精神,语义动作

我在哪里,我想过滤通过一个std ::地图的规则内的综合属性出现的值的情况。 地图是pre-产生的,并不会解析过程中改变。 地图和实分析器的性质意味着该查找应该永远不会失败(尽管元件的实际数量可以是相当大的) 通常的方法完全适合于这个问题(使用符号表)是不适合的实际情况。在真正的问题的基础上,将直到在分析更晚是显而易见(以稍微移除规则)的属性查找是有条件的。 我尝试: 的#def ..
发布时间:2016-08-12 17:22:37 C/C++开发

提振精神:: ::气置换分析器和合成属性

我想放在一起用精神简单的命令行分析器没有语义动作。 我使用BOOST 1.52,但我想避免使用C ++ 11的特性。语法的语法如下: [ - P NUM1] [-j] [--jobs NUM2] STR1 STR2 可选参数可以是任何顺序。我成功地解析只可选参数。一旦我添加了额外的强制性两个字符串解析器它打破。当我尝试写下“RSTART”明确属性,并使用“自动”避类型推演它打破了平衡。 ..
发布时间:2016-08-12 17:21:39 C/C++开发

提振精神琪:在克林星分析器忽略元素

我要解析特殊构造和扔剩下的路程。但我不希望使用的队长。 我要得到这些结构的载体,所以我用一个克莱尼明星解析器为主要原则。但是,每次的东西被扔掉,一个默认构造元件被插入到载体中。 下面是一个由例子。它只是查找字符串测试并引发休息了,至少这是该计划。但每一次的规则垃圾成功增加了一个默认的构造项向量在规则所有,给人一种输出7 insteat 1.我怎么能告诉灵刚添加到向量如果规则项目成功? 的#d ..
发布时间:2016-08-12 17:21:37 C/C++开发

如何解析升压精神正常的保留字

我试图解析语法的序列:;方向><键入><名>。例如: 浮法富 的方向在哪里可以为在 退出或 IN_OUT 。我已经成功地用气::符号类的方向关键字转换为枚举解析正确的文本。 然而,问题显示了当我没有正确的文本。就拿例如: INT富 符号表解析器将除了'中'的'廉政'类型的一部分​​,所以结果将是:方向:在 类别:T- 名称:富 和未检测到错误。什么是最好的方式,能够解析 ..
发布时间:2016-08-12 17:20:52 C/C++

升压造成解析问题语义动作

我一直使用Boost迷你编译器的例子。这里是源$ C ​​$ C之根的http://www.boost.org/doc/libs/1_59_0/libs/spirit/example/qi/compiler_tutorial/mini_c/ 这是我感兴趣的片段是在 statement_def.hpp 我遇到的问题是,如果附加语义动作,比如像这样的, statement_ = ..
发布时间:2016-08-12 17:19:28 C/C++开发

解析与提振精神逃脱串

I'm与精神2.4工作,我会想解析这样的结构: 文字{text_field}; 问题的关键是,在text_field是一个转义字符串与符号'{','}'和'\\'。 我想创建一个解析器使用这个气。我一直在想这样的: 使用boost ::精神::标准:: char_; 使用boost ::精神::标准::串; 使用气::词位; 用气点燃::;齐::规则< IteratorT,标准::字 ..
发布时间:2016-08-12 17:19:06 C/C++开发

我如何使用与升压::精神::气解析器多态的属性?

我想我的boost ::精神为基础,解析器能够解析文件,转换解析规则为​​不同的类型,并放出包含所有它找到一个匹配的载体。所有发射作为属性的类型应该从基类继承,例如: 的#include<升压/精神/有/ qi.hpp> #包括LT&;升压/融合/ adapt_struct.hpp> #包括LT&;升压/ shared_ptr.hpp> #包括LT&;升压/ foreac ..
发布时间:2016-08-12 17:16:55 C/C++开发

提振精神:: ::气关键字和标识符

我看到有关齐语法关键字/标识符采用细微差别的几个职位,但我不能完全使如何助推例子证明这种方法应该工作意义... 关键词声明: 齐::符号<&烧焦GT;关键词; 例如关键字集: keywords.add (“富”) (“酒吧”) ; 标识符规则声明:齐::规则<的std ::字符串::为const_iterator,标准::字符 ..
发布时间:2016-08-12 17:11:38 C/C++开发

精神不能自动分配属性单元素结构(或融合序列)

我的目标是有我的齐::语法返回属性。我有一个精神做这显著困难::词法虽然。 我期望与下面给定的语法,如果我把它叫做精神::气::解析(开始,结束,语法,输出); ,该结构的ident输出将有语义分析的内容。 的错误似乎大多流出来这行:启动(%)= lexer.identifier; 系统注 升压1.47.0 的Mac OS X 10.7.2 铛++或g ++(如下图所示的错误是从铛 ..
发布时间:2016-08-12 17:07:36 C/C++开发

我如何使用ASCII队长::空间不跳过停产?

我要使用的boost ::精神解析,我想用phrase_parse功能: 齐:: phrase_parse(str.begin(),str.end(),语法,ASCII ::空间 - 齐:: EOL); 但第四项(ASCII ::空间 - 齐:: EOL),我的心不是编译器允许。 我如何使用ASCII队长::空间不跳过EOL? 解决方案 最简单的答案是齐:: phrase_parse(s ..
发布时间:2016-08-12 17:06:48 C/C++开发

提振精神:: ::复制齐解析的输出

我使用Boost有一个非常简单的解析器::精神: 规则<的std ::字符串::迭代器,标准::字符串()> zeroTo255 =(字符串(“25”)>>烧焦_('0','5')) | (焦炭_('2')>>烧焦_('0','4')GT;>数字) | (字符_(“1”)GT;>重复[2](数字)) | (焦炭_('1',' ..
发布时间:2016-08-12 17:04:59 C/C++开发

如何使用boost ::精神解析CSV

我有这个CSV行 的std ::字符串s = R“(1997年,福特E350,”AC,ABS,月亮“,”有些“生锈”部件“,3000.00)”; 我可以使用的boost ::标记生成器解析:的typedef的boost ::标记生成器<提高:: escaped_list_separator<&烧焦GT; ,标准::字符串::为const_iterator,标准::字符串>标 ..
发布时间:2016-08-12 17:04:43 C/C++开发

解析int或double使用boost精神(longest_d)

我正在寻找一种方法来解析字符串为int或双,分析器应该尝试两种选择,选择一个相匹配的输入流中最长的部分。 有一个去precated指令(longest_d)这不正是我要找的: 数= longest_d [整数|真正] ...因为它是德precated,还有​​其他的选择吗?如果有必要实现语义动作来实现所期望的行为,没有任何人有一个建议? 解决方案 首先,请切换到精神V2 - 这已经 ..
发布时间:2016-08-12 17:04:37 C/C++开发

解析引用的字符串用的boost ::精神

我想分析的句子,其中一些字符串可能是不带引号的“报价”或“援引”。下面的code几乎工程 - 但它不匹配收盘报价。我猜这是因为QQ的参考。的修改在code评论说,在修改reults“援引”或“引用”还分析,有助于显示原来的问题是关闭的引号。在code也介绍了具体的语法。 要彻底清除:无引号字符串解析。带引号的字符串,如'你好'将解析公开报价 ,所有的字符你好,但随后无法解析的最终报价 。 我作 ..
发布时间:2016-08-12 17:01:21 C/C++开发