标签: macros rust nom
我试图了解Rust宏如何捕获工作,并正在研究nom解析器库。
位置nom/src/bytes.rs声明了tag!捕获的宏($i:expr, $tag: expr)。 但是,在使用tag!的所有地方,它仅使用一个参数,即tag!("+")。 示例:nom-lua52/op.rs。我已经读过tutorials有关宏的信息,但是这种结构似乎很特殊。
tag!
($i:expr, $tag: expr)
tag!("+")
输入$i似乎是隐式?
$i
答案 0 :(得分:6)
诀窍在于,start end 宏调用位于tag!()宏内,它将与value!匹配并向其传递附加参数。在文件implementing tag!中对此进行了说明。
start end
tag!()
value!