语法宏和过程宏有什么区别?

per*_*mil 3 programming-languages rust

过程宏和语法宏有什么区别?Rust 将其宏系统称为过程宏,但我见过语言文章将像 rust 宏系统这样的系统称为语法宏。语法宏在解析时似乎可以访问全部或部分 AST。这似乎就是 Rust 所拥有的。

kmd*_*eko 5

Rust 宏是语法性的;他们在 AST 级别上工作。

Rust 有两种类型的宏,它们的编写方式和使用方式有所不同,这可能会让您在术语上感到困惑。有一些声明性宏(也称为“示例宏”)是通过调用macro_rules!. 还有过程宏,它们被编写为将TokenStreams 作为输入和输出处理的函数(可以用作属性、派生或类似函数)。

也可以看看: