diff options
Diffstat (limited to 'docs/dev')
-rw-r--r-- | docs/dev/architecture.md | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/docs/dev/architecture.md b/docs/dev/architecture.md index 9e9651801..1201f6e5a 100644 --- a/docs/dev/architecture.md +++ b/docs/dev/architecture.md | |||
@@ -70,7 +70,7 @@ Rust syntax tree structure and parser. See | |||
70 | 70 | ||
71 | - [rowan](https://github.com/rust-analyzer/rowan) library is used for constructing syntax trees. | 71 | - [rowan](https://github.com/rust-analyzer/rowan) library is used for constructing syntax trees. |
72 | - `grammar` module is the actual parser. It is a hand-written recursive descent parser, which | 72 | - `grammar` module is the actual parser. It is a hand-written recursive descent parser, which |
73 | produces a sequence of events like "start node X", "finish not Y". It works similarly to [kotlin's parser](https://github.com/JetBrains/kotlin/blob/4d951de616b20feca92f3e9cc9679b2de9e65195/compiler/frontend/src/org/jetbrains/kotlin/parsing/KotlinParsing.java), | 73 | produces a sequence of events like "start node X", "finish node Y". It works similarly to [kotlin's parser](https://github.com/JetBrains/kotlin/blob/4d951de616b20feca92f3e9cc9679b2de9e65195/compiler/frontend/src/org/jetbrains/kotlin/parsing/KotlinParsing.java), |
74 | which is a good source of inspiration for dealing with syntax errors and incomplete input. Original [libsyntax parser](https://github.com/rust-lang/rust/blob/6b99adeb11313197f409b4f7c4083c2ceca8a4fe/src/libsyntax/parse/parser.rs) | 74 | which is a good source of inspiration for dealing with syntax errors and incomplete input. Original [libsyntax parser](https://github.com/rust-lang/rust/blob/6b99adeb11313197f409b4f7c4083c2ceca8a4fe/src/libsyntax/parse/parser.rs) |
75 | is what we use for the definition of the Rust language. | 75 | is what we use for the definition of the Rust language. |
76 | - `parser_api/parser_impl` bridges the tree-agnostic parser from `grammar` with `rowan` trees. | 76 | - `parser_api/parser_impl` bridges the tree-agnostic parser from `grammar` with `rowan` trees. |
@@ -83,11 +83,11 @@ Rust syntax tree structure and parser. See | |||
83 | visiting the nodes (this is double plus cool, if you understand how | 83 | visiting the nodes (this is double plus cool, if you understand how |
84 | `Visitor` works, you understand the design of syntax trees). | 84 | `Visitor` works, you understand the design of syntax trees). |
85 | 85 | ||
86 | Tests for ra_syntax are mostly data-driven: `tests/data/parser` contains a bunch of `.rs` | 86 | Tests for ra_syntax are mostly data-driven: `test_data/parser` contains subdirectories with a bunch of `.rs` |
87 | (test vectors) and `.txt` files with corresponding syntax trees. During testing, we check | 87 | (test vectors) and `.txt` files with corresponding syntax trees. During testing, we check |
88 | `.rs` against `.txt`. If the `.txt` file is missing, it is created (this is how you update | 88 | `.rs` against `.txt`. If the `.txt` file is missing, it is created (this is how you update |
89 | tests). Additionally, running `cargo gen-tests` will walk the grammar module and collect | 89 | tests). Additionally, running `cargo gen-tests` will walk the grammar module and collect |
90 | all `//test test_name` comments into files inside `tests/data` directory. | 90 | all `// test test_name` comments into files inside `test_data/parser/inline` directory. |
91 | 91 | ||
92 | See [#93](https://github.com/rust-analyzer/rust-analyzer/pull/93) for an example PR which | 92 | See [#93](https://github.com/rust-analyzer/rust-analyzer/pull/93) for an example PR which |
93 | fixes a bug in the grammar. | 93 | fixes a bug in the grammar. |