diff --git a/docs/dev/architecture.md b/docs/dev/architecture.md index 9e9651801a..4caacea7d0 100644 --- a/docs/dev/architecture.md +++ b/docs/dev/architecture.md @@ -70,7 +70,7 @@ Rust syntax tree structure and parser. See - [rowan](https://github.com/rust-analyzer/rowan) library is used for constructing syntax trees. - `grammar` module is the actual parser. It is a hand-written recursive descent parser, which - 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), + 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), 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) is what we use for the definition of the Rust language. - `parser_api/parser_impl` bridges the tree-agnostic parser from `grammar` with `rowan` trees.