问题标签 [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.
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)。
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.
parsing - 用 nom 解析驼峰式字符串
我想将字符串解析为类似"ParseThis"
或使用nom crate"parseThis"
的字符串向量。["Parse", "This"]
["parse", "this"]
我尝试过的所有尝试都没有返回预期的结果。我可能还不明白如何使用 nom 中的所有功能。
我试过:
但是p_camel_case
只返回 aError(Many0)
用于解析以大写字母开头的字符串,并返回用于解析以小写字母开头Done
但结果为空字符串的字符串。
我如何告诉 nom 我要解析字符串,用大写字母分隔(假设可以有第一个大写或小写字母)?
rust - 使用 Nom 将整数解析为浮点数
Nom 有一个解析浮点数的例子:
我想将此示例扩展为也支持解析"123"
为123.0
. 我试过这样的事情没有运气:
types - 使用 nom 解析文字并返回值
我是 Rust 的新手,三个小时以来一直在努力解决这个问题,我想我快疯了。我想要的只是一个解析器,它接受字符串"true"
并返回一个 enum Value::Const(true)
。这是我到目前为止所拥有的:
但我得到的是:
我不知道这里发生了什么。我试图找到示例或教程来获得关于如何做到这一点的一点提示,但出于某种原因,这一定是一些以前没有人尝试过的罕见的边缘事情。
parsing - 如何将任何字符串向量与 nom 匹配?
我正在尝试使用 nom 创建一个解析器,它将解析一些可能是许多选项之一的文本。当值在编译时已知时, Nom 具有alt!
,但我的值不会。
这是我尝试创建自己的解析器Vec<String>
来匹配的,我遇到了几个问题。
我知道我的alternative_wrapper
函数实际上并没有做任何有用的事情,但这不是问题。这就是 Rust 抱怨这个片段的原因:
如何从我的函数中创建解析器?以及如何使用现有的解析器,例如tag!
from inside alternative_wrapper
?
macros - 匹配 nom 中的几个字节之一
我正在使用nom来解析一些二进制 65c816 汇编数据。我的解析器结构的一部分将操作码拆分为单独的形式,然后获取它们的参数(如果有的话)。当前的示例解析器如下所示:
我制作的宏在哪里opcode!
执行以下操作:
相反,我希望拥有如下代码,但无法弄清楚如何制作宏或函数来做到这一点:
我得到的最接近的是制作这个宏,但它几乎立即遇到递归限制,而且总的来说它似乎真的不是最理想的:
有什么办法可以实现这样的东西,还是我最好只使用tag_bits
?我觉得我应该可以使用one_of
,但我无法让它与字节一起使用。
rust - 如何在 nom 中创建流解析器?
我在 nom 中创建了一些重要的解析器,所以我现在对它非常熟悉。到目前为止,我创建的所有解析器总是将整个输入切片提供给解析器。
我想创建一个流解析器,我认为这意味着我可以继续将字节输入解析器,直到它完成。我很难找到任何说明这一点的文档或示例,而且我也质疑我对“流解析器”是什么的假设。
我的问题是:
- 我对流解析器的理解是否正确?
- 如果是这样,有没有使用这种技术的解析器的好例子?
rust - 向 nom 解析器添加状态
我用 nom 写了一个完全无状态的解析器,现在我需要将它包装在几个有状态的层中。
我有一个名为的顶级解析函数alt_fn
,它将为我提供下一个解析输出作为枚举变量,其中的细节可能并不重要。
我需要做三件涉及状态的事情:
1)我需要有条件地对输出进行转换,如果在作为我的结构alt_fn
的一部分的非可变 HashMap 中有匹配项。State
这应该基本上就像map!
我的结构上的一个方法调用。像这样的东西:
这目前给了我:error: unexpected end of macro invocation
带alt_fn
下划线。
2)我需要用我从输入中得到的数据更新状态结构的其他字段(例如计算校验和和更新时间戳等),然后用这个新知识再次转换输出。这可能如下所示:
3)我需要重复调用第二部分中的方法,直到所有输入都用完:
method!(pub parse<State,&[u8],Vec<AllTags>>, mut self, many1!(update_state));
不幸的是,nom
文档非常有限,而且我对宏语法不是很好,所以我不知道我做错了什么。