From af09763cc15b31b1f1deeffe77324df97e03113c Mon Sep 17 00:00:00 2001 From: Steve Klabnik Date: Thu, 19 Mar 2015 19:42:35 -0400 Subject: [PATCH] Add AST to the glossary Fixes #22551 --- src/doc/trpl/advanced-macros.md | 8 +++++--- src/doc/trpl/glossary.md | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/doc/trpl/advanced-macros.md b/src/doc/trpl/advanced-macros.md index a226e4d0bf911..86279f7f1a168 100644 --- a/src/doc/trpl/advanced-macros.md +++ b/src/doc/trpl/advanced-macros.md @@ -6,9 +6,11 @@ off. # Syntactic requirements Even when Rust code contains un-expanded macros, it can be parsed as a full -syntax tree. This property can be very useful for editors and other tools that -process code. It also has a few consequences for the design of Rust's macro -system. +[syntax tree][ast]. This property can be very useful for editors and other +tools that process code. It also has a few consequences for the design of +Rust's macro system. + +[ast]: glossary.html#abstract-syntax-tree One consequence is that Rust must determine, when it parses a macro invocation, whether the macro stands in for diff --git a/src/doc/trpl/glossary.md b/src/doc/trpl/glossary.md index 156f33748673b..97898324847e4 100644 --- a/src/doc/trpl/glossary.md +++ b/src/doc/trpl/glossary.md @@ -14,3 +14,26 @@ let z = (8, 2, 6); ``` In the example above `x` and `y` have arity 2. `z` has arity 3. + +### Abstract Syntax Tree + +When a compiler is compiling your program, it does a number of different +things. One of the things that it does is turn the text of your program into an +'abstract syntax tree,' or 'AST.' This tree is a representation of the +structure of your program. For example, `2 + 3` can be turned into a tree: + +```text + + + / \ +2 3 +``` + +And `2 + (3 * 4)` would look like this: + +```text + + + / \ +2 * + / \ + 3 4 +```