我正在使用
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
的错误。如何准确定位解析失败的位置并给出适当的错误提示?