diff --git a/src/syntax-intro.md b/src/syntax-intro.md index 43ef44577..6339a7e6b 100644 --- a/src/syntax-intro.md +++ b/src/syntax-intro.md @@ -1,13 +1,19 @@ # Syntax and the AST -Working directly with source code is very inconvenient and error-prone. Thus, -before we do anything else, we convert raw source code into an AST. It turns -out that doing even this involves a lot of work, including lexing, parsing, -macro expansion, name resolution, conditional compilation, feature-gate -checking, and validation of the AST. In this chapter, we take a look at all -of these steps. +Working directly with source code is very inconvenient and error-prone. +Thus, before we do anything else, we convert raw source code into an +[Abstract Syntax Tree (AST)][AST]. It turns out that doing this involves a lot of work, +including [lexing, parsing], [macro expansion], [name resolution], conditional +compilation, [feature-gate checking], and [validation] of the [AST]. +In this chapter, we take a look at all of these steps. -Notably, there isn't always a clean ordering between these tasks. For example, -macro expansion relies on name resolution to resolve the names of macros and -imports. And parsing requires macro expansion, which in turn may require -parsing the output of the macro. +Notably, there isn't always a clean ordering between these tasks. +For example, macro expansion relies on name resolution to resolve the names of macros and imports. +And parsing requires macro expansion, which in turn may require parsing the output of the macro. + +[AST]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_parse/index.html +[macro expansion]: ./macro-expansion.md +[feature-gate checking]: ./feature-gate-ck.md +[lexing, parsing]: ./lexing-parsing.md +[name resolution]: ./name-resolution.md +[validation]: ./ast-validation.md