【发布时间】:2018-08-06 21:24:12
【问题描述】:
我正在使用proc_macro 和syn 设计一个自定义HTML 语法解析器。一个样本:
#[derive(Debug)]
struct BlockElement {
stag: Ident,
child: Vec<Element>,
ctag: Ident
}
impl Synom for BlockElement {
named!(parse -> Self, do_parse!(
punct!(<) >>
stag: syn!(Ident) >>
punct!(>) >>
child: syn!(ElementList) >>
punct!(<) >>
punct!(/) >>
ctag: syn!(Ident) >>
punct!(>) >>
(BlockElement { stag, child: child.inner, ctag })
));
}
虽然我知道如何在解析后使用Span 给出错误,但我无法弄清楚如何在解析期间执行此操作。它只是与failed to parse anything 出错。如何查明解析失败的位置并给出适当的错误?
【问题讨论】:
-
我不确定,您最关心的是什么,trace_macros! 和 log_syntax! 对您有帮助吗?
-
我主要担心这个宏的用户必须自己寻找自定义语法中的任何错误。我希望解析器显示错误发生的位置。
标签: rust rust-macros