nom的“ $ i”宏参数从何而来?

时间:2018-07-16 18:08:51

标签: macros rust nom

我试图了解Rust宏如何捕获工作,并正在研究nom解析器库。

位置nom/src/bytes.rs声明了tag!捕获的宏($i:expr, $tag: expr)。 但是,在使用tag!的所有地方,它仅使用一个参数,即tag!("+")。 示例:nom-lua52/op.rs。我已经读过tutorials有关宏的信息,但是这种结构似乎很特殊。

输入$i似乎是隐式

1 个答案:

答案 0 :(得分:6)

诀窍在于,start end 宏调用位于tag!()宏内,它将与value!匹配并向其传递附加参数。在文件implementing tag!中对此进行了说明。