问题标签 [boost-spirit-x3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
216 浏览

c++ - 用容器解析成结构

如何使用 boost.spirit x3 解析成如下结构:

来自 boost.spirit v2 我会使用语法,但由于 X3 不支持语法,我不知道如何做到这一点。

编辑:如果有人可以帮助我编写一个解析器来解析字符串列表并返回 aperson并且第一个字符串是名称并且字符串的 res 在friends向量中,那就太好了。

0 投票
1 回答
310 浏览

c++ - 用精神 x3 解析递归规则

我想解析以下解析简单模板类标识符的递归规则,如下所示foo<bar> foo<bar,baz> foo<bar<baz>>是简单语法:

我试图用 x3 编写一个解析器,如下所示:

但是这个尝试无法解析这样的东西,foo<bar<baz>>但 foo 很好。我的语法中是否存在一些逻辑错误,或者我是否使用了错误的提升精神,因为这是一个递归规则?

0 投票
2 回答
498 浏览

c++ - 使用boolean 或enum 成员解析为具有增强精神x3 的结构

如果我有一个结构:

或者

如何使用 boost.spirit X3 解析到这个结构?规则如何解析像“alice male bob”这样的字符串,解析器返回一个名为 alice 的对象,该对象是男性并且有一个朋友 bob。如果仅在此人不是女性的情况下明确表示性别,那会是什么样子?

0 投票
1 回答
441 浏览

c++ - 从 boost Spirit x3 解析器返回的向量中的空字符串

我想检查一个文件中的所有枚举(这只是一个 MCVE,所以没什么复杂的)并且枚举的名称应该存储在std::vector我构建的解析器中,如下所示:

当我尝试将带有 this 的字符串解析enum_finder为 astd::vector时,std::vector还包含很多空字符串。为什么这个解析器还将空字符串解析到向量中?

0 投票
2 回答
397 浏览

c++ - 提升精神 x3 int32 | double_ 无法解析双精度

我正在尝试编写一个解析器,它解析 aint32_t或 a double。作为第一次尝试,我编写了这个解析器:

我希望得到一个boost::variant<int32_t, double> 解析器成功解析整数,12, 100, -42, 7但它无法解析双精度数13.243, 42.7, 12.0 -10000.3

这是一个现场演示

为什么这个解析器在双打上失败?

0 投票
1 回答
153 浏览

c++ - 使用 boost Spirit x3 解析成集合

我感兴趣的是是否有一种方法可以使用 boost spirit x3 解析成一个集合。背景是我有一串标记,每个标记代表一个枚举值,现在我想创建一个解析器,它解析每个标记是否最多在字符串中出现一次,如果我能得到所有的解析,那将是一个魅力令牌进入一段std::set时间解析。为了从解析的字符串中取回枚举,我使用了 symbol_table:

0 投票
2 回答
722 浏览

c++ - 解析除关键字之外的标识符

我正在努力编写一个标识符解析器,它解析一个不是关键字的字母数字字符串。关键字都在一个表中:

标识符的解析器应该是这样的:

现在我尝试将这些组合起来,以便标识符解析器无法解析关键字。我试过这样:

和这个:

它适用于大多数输入,但是如果字符串以关键字开头,例如int, whilefoo, forbar解析器,则无法解析此字符串。我怎样才能让这个解析器正确?

0 投票
1 回答
323 浏览

c++ - Spirit X3,语义动作使编译失败并显示:属性没有预期的大小

此代码无法编译(gcc 5.3.1 + boost 1.60):

它以静态断言失败:

感谢 wandbox,我还尝试了 boost 1.61 和 clang,两者都产生了相同的结果。

如果我删除附加到的语义动作portal,它编译得很好;如果我更改dest为:

任何帮助,将不胜感激。TIA。

0 投票
1 回答
208 浏览

c++ - eps 解析器可能因“初始化后”失败而失败

我正在阅读Boost X3 快速入门教程并注意到这条线

eps是一个特殊的精神解析器,它不消耗任何输入但总是成功的。我们使用它来初始化规则的综合属性,在其他任何事情之前为零。[...] 使用eps这种方式有利于进行前后初始化。

现在我不禁想知道是否eps_that_might_fail可以对解析输入的一部分进行某种语义/后分析,这可能会失败,以便在语法中进行某种检查的局部性。

是否存在可能失败eps,使用此构造进行额外的输入验证是否是个好主意?

我试图传达的一个可怕的例子:

如果我没记错的话,这只会解析素数,并允许完整的解析器在它期望素数的地方失败。

0 投票
1 回答
166 浏览

c++ - 解析一个字符串列表,后跟一个带有精神 x3 的字符串列表

我正在尝试使用 boost spirit x3 将字符串解析为结构:

现在我有一个解析器规则来匹配这样的字符串:

我的解析器规则如下所示。

其中id_string解析alphanum. 我知道这条规则无法按我的意愿进行解析,因为foo.bar例如在解析时,这部分规则-(id_string % ".")会消耗整个字符串。如何更改规则以在结构中正确解析?