Corrected relationship of macro and rust parsers

This commit is contained in:
Mark Mansi 2018-01-29 11:50:34 -06:00
parent 41a4f43684
commit 68e84c734d
1 changed files with 7 additions and 6 deletions

View File

@ -2,12 +2,13 @@
Macro expansion happens during parsing. `rustc` has two parsers, in fact: the
normal Rust parser, and the macro parser. During the parsing phase, the normal
Rust parser will call into the macro parser when it encounters a macro
definition or macro invocation (TODO: verify). The macro parser, in turn, may
call back out to the Rust parser when it needs to bind a metavariable (e.g.
`$my_expr`) while parsing the contents of a macro invocation. The code for macro
expansion is in [`src/libsyntax/ext/tt/`][code_dir]. This chapter aims to
explain how macro expansion works.
Rust parser will set aside the contents of macros and their invokations. Later,
before name resolution, macros are expanded using these portions of the code.
The macro parser, in turn, may call the normal Rust parser when it needs to
bind a metavariable (e.g. `$my_expr`) while parsing the contents of a macro
invocation. The code for macro expansion is in
[`src/libsyntax/ext/tt/`][code_dir]. This chapter aims to explain how macro
expansion works.
### Example