问题标签 [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 回答
465 浏览

dependencies - Cargo 无法下载 nom v0.5.0

我正在尝试使用Nom但运行时出现以下错误cargo build --verbose

我的Cargo.toml样子是这样的:

我该如何解决?cargo update没有帮助。我正在使用作为 Rust 1.4 版本(Windows 7、x64)的一部分安装的 cargo 0.5.0-nightly(833b947 2015-09-13)。

0 投票
2 回答
537 浏览

rust - Matching template filter expressions with nom

I'm working on a templating engine where some of the syntax could be like:

In place of somevar could be an arbitrary "expression", which is to say, either a variable name like somevar, or a nested filter expression (like {{ somevar|filter|anotherfilter }}). I'm trying to parse this using Rust's nom parser combinator library, but failing to get it to work so far.

Here's the parser I've come up with so far:

With a playground. The current version panics through a stack overflow. I can fix this by reversing the expr_var | expr_filter order in any_expr, but then I'm back to basically the same error as before.

0 投票
1 回答
1049 浏览

parsing - 用 nom 解析驼峰式字符串

我想将字符串解析为类似"ParseThis"或使用nom crate"parseThis"的字符串向量。["Parse", "This"]["parse", "this"]

我尝试过的所有尝试都没有返回预期的结果。我可能还不明白如何使用 nom 中的所有功能。

我试过:

但是p_camel_case只返回 aError(Many0)用于解析以大写字母开头的字符串,并返回用于解析以小写字母开头Done但结果为空字符串的字符串。

我如何告诉 nom 我要解析字符串,用大写字母分隔(假设可以有第一个大写或小写字母)?

0 投票
1 回答
796 浏览

rust - 使用 Nom 将整数解析为浮点数

Nom 有一个解析浮点数的例子

我想将此示例扩展为也支持解析"123"123.0. 我试过这样的事情没有运气:

0 投票
1 回答
798 浏览

types - 使用 nom 解析文字并返回值

我是 Rust 的新手,三个小时以来一直在努力解决这个问题,我想我快疯了。我想要的只是一个解析器,它接受字符串"true"并返回一个 enum Value::Const(true)。这是我到目前为止所拥有的:

但我得到的是:

我不知道这里发生了什么。我试图找到示例或教程来获得关于如何做到这一点的一点提示,但出于某种原因,这一定是一些以前没有人尝试过的罕见的边缘事情。

0 投票
3 回答
1206 浏览

parsing - 如何将任何字符串向量与 nom 匹配?

我正在尝试使用 nom 创建一个解析器,它将解析一些可能是许多选项之一的文本。当值在编译时已知时, Nom 具有alt!,但我的值不会。

这是我尝试创建自己的解析器Vec<String>来匹配的,我遇到了几个问题。

我知道我的alternative_wrapper函数实际上并没有做任何有用的事情,但这不是问题。这就是 Rust 抱怨这个片段的原因:

如何从我的函数中创建解析器?以及如何使用现有的解析器,例如tag!from inside alternative_wrapper

0 投票
1 回答
437 浏览

macros - 匹配 nom 中的几个字节之一

我正在使用nom来解析一些二进制 65c816 汇编数据。我的解析器结构的一部分将操作码拆分为单独的形式,然后获取它们的参数(如果有的话)。当前的示例解析器如下所示:

我制作的宏在哪里opcode!执行以下操作:

相反,我希望拥有如下代码,但无法弄清楚如何制作宏或函数来做到这一点:

我得到的最接近的是制作这个宏,但它几乎立即遇到递归限制,而且总的来说它似乎真的不是最理想的:

有什么办法可以实现这样的东西,还是我最好只使用tag_bits?我觉得我应该可以使用one_of,但我无法让它与字节一起使用。

0 投票
0 回答
892 浏览

parsing - 使用下划线解析字母数字标识符并从顶级解析器调用

尝试做与这个问题类似的事情,除了允许从第二个字符开始使用下划线。不仅仅是骆驼案。

我可以成功地单独测试解析器,但是在更高级别的解析器中组合时,我得到了错误

举个例子:

0 投票
2 回答
3010 浏览

rust - 如何在 nom 中创建流解析器?

我在 nom 中创建了一些重要的解析器,所以我现在对它非常熟悉。到目前为止,我创建的所有解析器总是将整个输入切片提供给解析器。

我想创建一个流解析器,我认为这意味着我可以继续将字节输入解析器,直到它完成。我很难找到任何说明这一点的文档或示例,而且我也质疑我对“流解析器”是什么的假设。

我的问题是:

  • 我对流解析器的理解是否正确?
  • 如果是这样,有没有使用这种技术的解析器的好例子?
0 投票
1 回答
851 浏览

rust - 向 nom 解析器添加状态

我用 nom 写了一个完全无状态的解析器,现在我需要将它包装在几个有状态的层中。

我有一个名为的顶级解析函数alt_fn,它将为我提供下一个解析输出作为枚举变量,其中的细节可能并不重要。

我需要做三件涉及状态的事情:

1)我需要有条件地对输出进行转换,如果在作为我的结构alt_fn的一部分的非可变 HashMap 中有匹配项。State这应该基本上就像map!我的结构上的一个方法调用。像这样的东西:

这目前给了我:error: unexpected end of macro invocationalt_fn下划线。

2)我需要用我从输入中得到的数据更新状态结构的其他字段(例如计算校验和和更新时间戳等),然后用这个新知识再次转换输出。这可能如下所示:

3)我需要重复调​​用第二部分中的方法,直到所有输入都用完:

method!(pub parse<State,&[u8],Vec<AllTags>>, mut self, many1!(update_state));

不幸的是,nom文档非常有限,而且我对宏语法不是很好,所以我不知道我做错了什么。