问题标签 [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.
c++ - 用 boost 精神 x3 将数字解析为字符串
我想用精神 x3 将各种数字解析成一个字符串。我试图这样做,但它不起作用。
如何使用 x3::int32 解析器将 Int 解析为字符串?
c++ - 如何绕过贪婪的rd?
我想解析一个可以包含“-”的字符串,但不能以它开头或结尾。
我希望这个解析器能够工作:
但是在我的测试输入“某事”中,它只解析“所以”而不吃剩下的。
麻烦的是中间位*(alnum | char_('-'))
一直吃到最后(包括最后一个字符,所以整个可选括号都失败了)。
我想知道的是,我怎样才能绕过它并制作这个解析器?
c++ - 从 Spirit X3 开始
我刚开始使用 Spirit X3,我有一个与我的第一次测试有关的小问题。你知道为什么这个函数返回“false”吗?
我已经看到问题与我编写语法的方式有关。如果我用这个替换它,它会返回“true”
我正在使用 Boost 1.61.0 中包含的 Spirit 版本。
提前致谢,
森
c++ - 编译器差异:扩展 x3::variant 需要定义复制构造函数、复制赋值操作符和使用 gcc 但不是 clang 的默认构造函数
我改编了 x3 文档(http://ciere.com/cppnow15/x3_docs/spirit/tutorials/reexpr.html)中的一个示例来解析一个简单的二进制前缀表示法语法,我发现我需要定义复制 con,复制 assign op 和使用 g++ 6.1.1 编译时的默认构造函数,尽管该示例声称您只需要base_type
使用using
. 然后我发现它可以使用 clang 3.8.1 按预期编译。我将发布代码的重要部分,这里是一个完整的 g++ 示例,带有显示错误的 AST 打印机。
我看到g ++似乎认为复制con被删除了,因为已经定义了移动构造函数或移动赋值运算符,但是为什么它用clang编译呢?哪个编译器是正确的?
c++ - 将两个整数的序列匹配为一个`std::pair`
我正在尝试使用Boost.Sprit x3将两个整数的序列匹配到std::pair<int, int>
. 从文档来看,以下代码应该可以编译:
但是,它只匹配第一个整数。如果我更改std::pair<int, int> result;
为int result;
然后 print result
,我会得到1
我的输出。
为什么会这样?int_ >> int_
定义匹配(并设置为属性)两个整数的解析器的正确方法不是吗?
c++ - 提升 Spirit X3 和 std::unordered_map
我想解析成一个std::unordered_map
.
示例代码:
有以下主要内容:
和一个示例文件:
编译器错误信息是:
接下来怎么办,有办法适应std::unordered_map
吗?
c++ - 使用增强精神 x3 进行语义检查
我目前正在尝试使用 boost spirit x3 编写编译器。我完成了解析器(现在没有语义操作和错误处理,只是解析成 ast)。既然我想实现语言来支持作用域和函数调用,我问自己什么时候检查被调用的函数是否存在?我应该在构建 ast 时检查当前范围内是否存在函数(在使用语义操作进行解析时),还是应该在编译 ast 时检查这一点?范围堆栈也是如此。我应该在解析、使用语义操作还是编译 ast 时建立范围堆栈?
c++ - 当我使用 expect 运算符时,我会使用 Spirit X3 获得更快的解析器吗
在精神 X3 中,我可以构建一个这样的解析器:
如果我知道字符串之后Number
是一个 int 并且String
一直在一个字符串之后,我可以使用>
说 after Number
only 是一个数字,依此类推。
对我来说,区别在于如果解析器无法解析输入,则会抛出异常。
现在我的问题是,我应该尽可能使用>
操作符而不是>>
操作符吗?生成的解析器是否>
比仅使用>>
运算符的解析器更快?
boost-spirit-x3 - 解析器不会失败,船长不会跳过
我的语法有问题。我不确定为什么要解析日期以及为什么我不需要词位解析器。
完整示例
输出:
没有词位解析器:
将规则 term_ 更改为:
我以为船长会在 lit() 之后尝试跳过?
c++ - 我什么时候可以使用期望运算符?
我正在开发一个带有 boost spirit x3 的解析器。我完成了语法,解析器按预期解析。现在我想添加错误处理,所以我必须在我的语法中添加期望点。我的问题是我什么时候可以使用期望运算符>
而不是“跟随”运算符>>
?我只能像在语法的另一部分从未发生过一样使用它a > b
吗a >> b
?