问题标签 [qi]
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.
ccl - 齐本型的烦恼
我徒劳地试图让类型声明示例与 Clozure CL 一起使用,例如:
但我得到的唯一输出是:
好像是Ccl的问题,有没有可能正常运行?
PS:类型检查开启,(tc +)
c++ - 船长在 boost::spirit 中不起作用
我使用增强精神来解析颜色。效果很好,但是在我更改了迭代器类型之后,船长停止了工作。
这是标题:
这是cpp
和电话:
我敢肯定,这只是一个小错误,但我看不到它。也许我在源头上看了太久……你能看出一个错误吗?
c++ - 如何使用 Boost Spirit 提取修剪后的文本?
使用 boost 精神,我想提取一个字符串,后面跟着括号中的一些数据。相关字符串由左括号中的空格分隔。不幸的是,字符串本身可能包含空格。我正在寻找一个简洁的解决方案,它返回没有尾随空格的字符串。
下面的代码说明了这个问题:
它的输出是:
使用这个简单的语法,提取的字符串后面总是跟一个空格(我想去掉)。
该解决方案应该在 Spirit 中起作用,因为这只是更大语法的一部分。(因此,在解析后修剪提取的字符串可能会很笨拙。)
先感谢您。
c++ - 无法使用 boost::spirit::qi 解析 SQL 类型 where 条件
我可能会问一个非常微不足道的问题,但我并没有从我的大脑中获取块来破解它。尝试使用 boost::spirit::qi 解析如下所示的 SQL like where 子句以生成对向量
我已经完成了以下线程,但仍然无法做到:-( Thread5 Thread4 Thread3 Thread2 Thread1
我真诚地请求,请帮助我了解如何实现这一目标......可能是我没有完全付出我的 100%,但请善待......
这是完整的代码(我希望做的部分注释),作为第一步,我只是检查是否可以获取 Vector 中的所有标记,然后解析每个 Vector 元素以生成另一个 std::pair 向量
输出:
我期望 4 ......因为有 4 个条件!
提前致谢, 维韦克
在 coliru 上工作的一些例子
c++ - 灵气:炭治[5]
我有以下结构
我把它做成一个融合结构
我的语法实现如下:
不幸的是它没有编译。现在我使用 std::string 而不是 char[5] 我没有问题。你能告诉我如何告诉 Spirit 读取 char[5] 吗?
谢谢
parsing - 精神:允许一个字符在开始但不允许在中间
到目前为止,我正在尝试为 javascript 标识符编写一个解析器,这就是我所拥有的:
此解析器适用于我的测试中的“良好标识符”列表:
但我在使用其中一个错误标识符时遇到了问题:foo$bar
. 这应该是失败的,但它成功了!!并且 sintetized 属性具有值"foo"
。
这是调试输出foo$bar
:
我想要的是解析器在解析时失败,foo$bar
但在解析时没有$foobar
。
我错过了什么?
c++ - 从 Boost::spirit 解析返回多种数据类型
我想解析大约 5-10 种不同的消息类型,它们共享一种通用格式(例如 JSON),但每种都有需要验证的特定字段。每条消息最终都应该被解析成一个自定义类/结构,该类/结构的类型不需要任何类型的转换(例如,一个字段是一个 int 而不是一个变体/元组)。我看到解决问题的两种方法:
为每个特定消息编写一个语法,处理消息格式(在本例中为 JSON 样板)的验证并验证字段的内容,返回一个真正自定义的结构
编写一个仅验证结构(仅 JSON 规则)并返回更通用的对象(具有变体/元组等字段)并在更高级别验证/转换为自定义结构的语法(转换和检查各种变体字段)
我认为这些是每个的优点和缺点:
优点 1:
- 所有验证都在 boost::spirit 内完成
- 业力生成器(如果编写的话)看起来像现有的精神解析代码
缺点 1:
- 必须为将来可能发明的每种新消息类型编写和维护新语法(并且精神语法不直观)
2的优点:
- 复杂的精神代码只写一次,很少接触
缺点 2:
- 通用消息对象的验证和翻译将是精神应该首先消除的混乱代码
哪种方法更可取?是否有第三种方法可以使用一种语法解析为多种类型?
下面是一些示例消息和它们最终应该驻留的类:
c++ - boost::spirit::qi::parse --> 没有结果
考虑以下代码:
结果:
我很困惑为什么结果不同。获得相同结果的 qi::rule 类型的正确定义是什么?
c++ - boost::spirit::qi::parse 语法没有按预期工作
我尝试编写一个语法来解析以下语法:
- 每个元素都应被解释为一个字符串
- 在字符串中允许所有符号
- 命令、参数和值之间允许有多个空格
- 参数总是以“-”开头
结果应存储在结构中:
- m_command 应存储已解析的命令
- m_arg 应将解析的参数和相应的值存储在向量中
我在这里的一个简短示例中添加了我当前的语法
我的问题:
向量包含比可用值更多的条目,因为空白也被解释为值