@@ -43,16 +43,17 @@ we'll talk about that later.
4343- The lexer preserves full fidelity information for both IDEs and proc macros.
4444- The parser [ translates the token stream from the lexer into an Abstract Syntax
4545 Tree (AST)] [ parser ] . It uses a recursive descent (top-down) approach to syntax
46- analysis. The crate entry points for the parser are the ` Parser::parse_crate_mod() ` and
47- ` Parser::parse_mod() ` methods found in ` rustc_parse::parser::Parser ` . The external
48- module parsing entry point is ` rustc_expand::module::parse_external_mod ` . And
49- the macro parser entry point is [ ` Parser::parse_nonterminal() ` ] [ parse_nonterminal ] .
46+ analysis. The crate entry points for the parser are the
47+ [ ` Parser::parse_crate_mod() ` ] [ parse_crate_mod ] and [ ` Parser::parse_mod() ` ] [ parse_mod ]
48+ methods found in [ ` rustc_parse::parser::Parser ` ] . The external module parsing
49+ entry point is [ ` rustc_expand::module::parse_external_mod ` ] [ parse_external_mod ] .
50+ And the macro parser entry point is [ ` Parser::parse_nonterminal() ` ] [ parse_nonterminal ] .
5051- Parsing is performed with a set of ` Parser ` utility methods including ` fn bump ` ,
5152 ` fn check ` , ` fn eat ` , ` fn expect ` , ` fn look_ahead ` .
5253- Parsing is organized by the semantic construct that is being parsed. Separate
53- ` parse_* ` methods can be found in ` rustc_parse ` ` parser ` directory. The source
54- file name follows the construct name. For example, the following files are found
55- in the parser:
54+ ` parse_* ` methods can be found in [ ` rustc_parse ` ` parser ` ] [ rustc_parse_parser_dir ]
55+ directory. The source file name follows the construct name. For example, the
56+ following files are found in the parser:
5657 - ` expr.rs `
5758 - ` pat.rs `
5859 - ` ty.rs `
@@ -123,6 +124,11 @@ we'll talk about that later.
123124[ `simplify_try` ] : https://github.com/rust-lang/rust/pull/66282
124125[ codegen ] : https://rustc-dev-guide.rust-lang.org/backend/codegen.html
125126[ parse_nonterminal ] : https://doc.rust-lang.org/nightly/nightly-rustc/rustc_parse/parser/struct.Parser.html#method.parse_nonterminal
127+ [ parse_crate_mod ] : https://doc.rust-lang.org/nightly/nightly-rustc/rustc_parse/parser/struct.Parser.html#method.parse_crate_mod
128+ [ parse_mod ] : https://doc.rust-lang.org/nightly/nightly-rustc/rustc_parse/parser/struct.Parser.html#method.parse_mod
129+ [ `rustc_parse::parser::Parser` ] : https://doc.rust-lang.org/nightly/nightly-rustc/rustc_parse/parser/struct.Parser.html
130+ [ parse_external_mod ] : https://doc.rust-lang.org/nightly/nightly-rustc/rustc_expand/module/fn.parse_external_mod.html
131+ [ rustc_parse_parser_dir ] : https://github.com/rust-lang/rust/tree/master/compiler/rustc_parse/src/parser
126132
127133## How it does it
128134
0 commit comments