问题标签 [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.

0 投票
1 回答
73 浏览

parsing - 将 slug 与 Nom 匹配

一段时间以来,我一直在尝试为 Nom 找到一个体面的解决方案,以将 slug 识别为alpha1. 所以我可以解析这样的东西

我试过这样的东西,但它似乎不起作用。

PS:你知道如何告诉 Nom slug 中的“-”不能在开头也不能在结尾?

0 投票
2 回答
240 浏览

rust - 如何使用 nom 将 u128 整数转换为 Uuid

我有一个带有 UUID(16 字节)、一个 1 字节类型字段和 4 个包含浮点值的字节的二进制数据包。

如何用 nom 解析并得到一个元组(Uuid,u8,f32)?

0 投票
0 回答
267 浏览

rust - 如何为令牌 Vec 实现 nom::InputIter?

我正在使用nom构建解析器,我想使用 nom 组合器来处理标记化的输入。

令牌流由 表示Vec<Token<S>>,其中Token

我试图为InputIter任意值的向量实现:

当我遇到以下错误时:

然后我尝试使用类型参数来约束生命周期参数Token<S>

这导致了以下情况:

该错误似乎暗示我无法为外部类型实现外部特征,因此我试图包装Vec<Token<S>>到自定义结构中:

这会导致以下错误:

这是否意味着我只能使用引用向量而不是直接包含标记的向量?是什么赋予了?声明中似乎没有任何内容InputIter暗示这种约束。

是否有另一种方法来完成我正在尝试做的事情并以与 nom 组合器兼容的方式表示令牌流?

一个可重现的示例游乐场

0 投票
1 回答
465 浏览

parsing - 用 nom 解析自定义标识符

我有兴趣使用nom解析器组合器来识别这种标识符:

标识符的第一个字符应该是字母小写字符,然后可以是字母数字字符和下划线 (so [a-zA-Z0-9_]*) 的任何组合,但不得出现双(或更多)下划线且下划线不得结束标识符,拒绝这些情况:

到目前为止,我已经提出了这个解决方案,但不确定我的方法的正确性:

此外,我需要在使用它时环绕recognize这个解析器,如下所示:identifier

0 投票
1 回答
196 浏览

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。还有这些新的:taketake_until

0 投票
1 回答
335 浏览

rust - 如何在 rust 中使用 nom 解析对称引用字符串?

我应该如何使用nom解析类似于 rust 的原始字符串的带引号的字符串?我想解析以下内容:

我将如何做到这一点,在开始和结束时需要相同数量的“#”符号,同时允许 #'ed 字符串包含未转义的引号和哈希?

0 投票
1 回答
322 浏览

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 以及可能添加的单位。

我将如何处理这个案子?

谢谢

0 投票
1 回答
863 浏览

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(我猜只有文档有点偏离),但它也告诉我:

和其他错误,但这只是由于第一个错误而导致的。

0 投票
1 回答
59 浏览

rust - nom::bits::bits 返回的剩余数据不正确

我正在尝试使用 nom::bits::bits 从 &[u8] 向量中取 7 位,但我发现剩下的数据不正确,似乎它必须是 4/8 的整数倍,但我不是当然。像这样的一些代码(nom = 5.12):

和输出:

从输出中,您可以看到剩余数据的开头与 4/8 的整数倍对齐。所以第二个data2是不正确的。我是否在代码中犯了任何错误或遗漏了什么?

0 投票
1 回答
871 浏览

rust - 使用 nom 解析时,无法推断函数“元组”上声明的类型参数“I”的类型

我正在尝试使用nom'stuple功能。该文档提供了以下示例:

当我尝试它时,我得到一个编译错误:

如果我想为变量添加一个类型,它会是什么?我知道它必须是 的一些变体FnMut,但我不确定它是如何工作的。

货运.toml