问题标签 [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.
rust - Rust 编译器无法识别为结构实现的通用特征绑定
我正在使用解析器组合器Nom来编写 TOML 解析器。我遇到问题的解析器函数使用chrono crate 解析日期时间字符串。
在上面的代码中,我使用 解析一个字符串切片chrono::DatetTime::parse_from_rfc3339
,它返回一个chrono::format::ParseResult
. 然后,我正在匹配它,以便将其转换为正确的nom::IResult
. ParseResult::Ok
手臂很好,但我无法为ParseResult::Err
. 这是我在编译上面的代码片段时遇到的错误:
Error
fromError::from_error_kind
是 Nom 自己的结构之一,它确实实现了trait ParseError
,就像E
泛型指定的那样。为什么编译器不能识别这个?
rust - 使用 nom 解析时无法推断类型参数的类型错误
我对nom
7.1 版进行了这个测试:
运行cargo test
给
它建议我指定tag::<T, Input, Error>()
我该如何处理?我还没有完全理解为什么会出现这个问题。
我尝试从以下指定一些类型nom
:
rust - 如何使用 nom 进行解析,直到找到一个字符串?
使用 nom 很容易解析一个字符串,直到找到一个字符。如何使用 nom 吞噬字符串直到分隔符或结尾?处理这个。
如何对字符串(多个字符)而不是单个分隔符执行相同操作?
例如,要解析abchello
,我想解析所有内容,直到hello
找到为止。
rust - 如何在 nom 中有一个带有可选终止分隔符的分隔符?
我想用 nom 解析这两个:
目前我有这段代码解析第一个但不是第二个(第一个函数是来自 nom 文档的配方,它只解析空格):
我是 nom 的新手,对当前的代码没有任何效忠,很高兴告诉我我做错了......
谢谢!
rust - 解析允许在 nom 中嵌套括号
我用的是名。我想解析一个被括号包围的字符串,并允许在字符串中添加额外的嵌套括号。
所以(a + b)
会解析为a + b
,并且((a + b))
会解析为(a + b)
这适用于第一种情况,但不适用于嵌套情况:
我尝试使用rest
,但这不尊重 final )
:
谢谢!
rust - 带有 nom (>5) 和 `alt` 的状态
在 Rust 中尝试了一些树结构之后,我最终决定构建一个线性化树,例如
因此,在解析表达式(例如"+ + 3 4 1"
)时,解析器需要改变AST
,通过将新表达式推入其中并使用ExprRef
for 进一步的表达式。
所以,我想到了类似的东西
这有效,只要我不使用分支组合器,因为,你可能已经猜到了,需要多个可变借用ast
!例如
我尝试用 实现对这种类型的解析AST
,nom
因此我愿意接受任何正确方向的建议,即使这意味着我必须使用解析器走不同的路线。但似乎无论如何都涉及到某些状态。
parsing - 使用 nom 和 nom_locate 有简短的错误消息
我正在尝试按照本教程使用 nom 和 nom_locate 进行解析。我只想要以下格式的输出:
但目前我得到:
相关代码:
main中的相关错误代码:
我需要做什么才能获得简短的错误消息而不是广泛的错误消息?
编辑:我从自定义 ParseError 中删除了 span 属性,然后错误输出变为:
好多了,但问题仍然存在:我可以得到除消息本身之外的所有内容吗?