3 ms·
Rust macros are Token Trees and provide namespace hygiene, so not quite "text in, text out".
by estebank 5mo ago
Rust macros are Token Trees and provide namespace hygiene, so not quite "text in, text out".
- 0x1ceb00da 5mo agoToken list, not token trees. There are official libraries for parsing token stream as rust code but you can parse it as anything (eg json, html) if you want to.
- estebank 5mo agoI think you meant TokenStream. They are trees, behind the scenes, because matching delimiters happens early on between lexing and parsing. By the time the rustc_proc_macro::TokenStream is exposed, the rustc_ast::tokenstream::TokenTree is hidden to the proc macro API. https://doc.rust-lang.org/stable/nightly-rustc/rustc_ast/tokenstream/index.html https://doc.rust-lang.org/stable/nightly-rustc/rustc_ast/tok... https://doc.rust-lang.org/stable/nightly-rustc/rustc_proc_macro/struct.TokenStream.html https://doc.rust-lang.org/stable/nightly-rustc/rustc_proc_ma...
- mplanchard 5mo agoYou know, I was going to say tokens rather than text, but the AI discourse has me so burnt out on the term that I edited it. Regardless, one can emit unsafe blocks from a macro, provided they are valid tokens.