问题标签 [nom]
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.
parsing - 将 slug 与 Nom 匹配
一段时间以来,我一直在尝试为 Nom 找到一个体面的解决方案,以将 slug 识别为alpha1
. 所以我可以解析这样的东西
我试过这样的东西,但它似乎不起作用。
PS:你知道如何告诉 Nom slug 中的“-”不能在开头也不能在结尾?
rust - 如何使用 nom 将 u128 整数转换为 Uuid
我有一个带有 UUID(16 字节)、一个 1 字节类型字段和 4 个包含浮点值的字节的二进制数据包。
如何用 nom 解析并得到一个元组(Uuid,u8,f32)?
rust - 如何为令牌 Vec 实现 nom::InputIter?
我正在使用nom构建解析器,我想使用 nom 组合器来处理标记化的输入。
令牌流由 表示Vec<Token<S>>
,其中Token
:
我试图为InputIter
任意值的向量实现:
当我遇到以下错误时:
然后我尝试使用类型参数来约束生命周期参数Token<S>
:
这导致了以下情况:
该错误似乎暗示我无法为外部类型实现外部特征,因此我试图包装Vec<Token<S>>
到自定义结构中:
这会导致以下错误:
这是否意味着我只能使用引用向量而不是直接包含标记的向量?是什么赋予了?声明中似乎没有任何内容InputIter
暗示这种约束。
是否有另一种方法来完成我正在尝试做的事情并以与 nom 组合器兼容的方式表示令牌流?
一个可重现的示例游乐场:
parsing - 用 nom 解析自定义标识符
我有兴趣使用nom解析器组合器来识别这种标识符:
标识符的第一个字符应该是字母小写字符,然后可以是字母数字字符和下划线 (so [a-zA-Z0-9_]*
) 的任何组合,但不得出现双(或更多)下划线且下划线不得结束标识符,拒绝这些情况:
到目前为止,我已经提出了这个解决方案,但不确定我的方法的正确性:
此外,我需要在使用它时环绕recognize
这个解析器,如下所示:identifier
rust - 如何在 nom 5.x 中模拟 take_until_and_consume?
我已将我的nom
依赖项从 4.x 更新到 5.x 版本,发现该宏take_until_and_consume
已被弃用。变更日志 说:
"这可以替换为
take_until
组合take
"
但我不知道如何模仿take_until_and_consume
他们。有没有人在版本更新时遇到过这样的问题,或者有人知道怎么做吗?
我的意思是这个已弃用的宏take_until_and_consume
。还有这些新的:take
和take_until
rust - 如何在 rust 中使用 nom 解析对称引用字符串?
我应该如何使用nom解析类似于 rust 的原始字符串的带引号的字符串?我想解析以下内容:
我将如何做到这一点,在开始和结束时需要相同数量的“#”符号,同时允许 #'ed 字符串包含未转义的引号和哈希?
rust - 以 nom 解析一个数字
我正在尝试使用 nom5 传递一些锌格式 https://www.project-haystack.org/doc/Zinc
数字格式可以像以下任何一种格式
1、-34、10_000、5.4e-45、-5.4e-45、9.23kg、74.2°F、4 分钟、INF、-INF、NaN
我相信如果指定,单位可以是任何单位。
我有一些简单数字传递的例子,比如 Parsing number with nom 5.0
但我不确定如何处理这些值,这些值也可能是 INF 或 -INF、NaN 以及可能添加的单位。
我将如何处理这个案子?
谢谢
rust - 如何在 nom 中获取 N 位字节?
我正在尝试用 nom 编写一个 HTTP2 解析器。我正在实现 HPACK 标头压缩,但无法理解如何使用 nom 中的位字段。
例如,Indexed Header Field Representation从第一位为 1 开始。
这给了我一个我不太明白的编译器警告(老实说,我在 nom 的类型上遇到了一些问题):
我应该在这里放什么?
另一个例子是:
在这里,我的问题是第一个字节的剩余位被丢弃,即使我想进一步处理它们。
我想我可以使用按位与手动进行操作,但使用 nom 会更好。
我尝试过以下方法,但这给了我很多编译器警告:
(灵感来自https://docs.rs/nom/5.1.2/nom/bits/fn.bytes.html)。
它告诉我,没有complete::take_bits
(我猜只有文档有点偏离),但它也告诉我:
和其他错误,但这只是由于第一个错误而导致的。
rust - nom::bits::bits 返回的剩余数据不正确
我正在尝试使用 nom::bits::bits 从 &[u8] 向量中取 7 位,但我发现剩下的数据不正确,似乎它必须是 4/8 的整数倍,但我不是当然。像这样的一些代码(nom = 5.12):
和输出:
从输出中,您可以看到剩余数据的开头与 4/8 的整数倍对齐。所以第二个data2
是不正确的。我是否在代码中犯了任何错误或遗漏了什么?