diff options
author | Aleksey Kladov <[email protected]> | 2018-01-28 08:18:17 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2018-01-28 08:18:17 +0000 |
commit | 1417f26f820bd6428b528c3dc6127fabb084115a (patch) | |
tree | a943a0920b2eeb4be44eca9987aae6302bb9fac2 /src | |
parent | efadcf715862a2d96af0f57d2b53bfa325390779 (diff) |
Document the design of `FileBuilder`
Diffstat (limited to 'src')
-rw-r--r-- | src/lib.rs | 3 | ||||
-rw-r--r-- | src/tree/file_builder.rs | 16 | ||||
-rw-r--r-- | src/tree/mod.rs | 2 |
3 files changed, 14 insertions, 7 deletions
diff --git a/src/lib.rs b/src/lib.rs index 87a9d11ea..2d8ddade0 100644 --- a/src/lib.rs +++ b/src/lib.rs | |||
@@ -26,7 +26,8 @@ mod parser; | |||
26 | #[allow(missing_docs)] | 26 | #[allow(missing_docs)] |
27 | pub mod syntax_kinds; | 27 | pub mod syntax_kinds; |
28 | pub use text::{TextRange, TextUnit}; | 28 | pub use text::{TextRange, TextUnit}; |
29 | pub use tree::{File, FileBuilder, Node, Sink, SyntaxKind, Token}; | 29 | pub use tree::{File, Node, SyntaxKind, Token}; |
30 | pub(crate) use tree::{FileBuilder, Sink}; | ||
30 | pub use lexer::{next_token, tokenize}; | 31 | pub use lexer::{next_token, tokenize}; |
31 | pub use parser::parse; | 32 | pub use parser::parse; |
32 | 33 | ||
diff --git a/src/tree/file_builder.rs b/src/tree/file_builder.rs index 738705f02..47038496d 100644 --- a/src/tree/file_builder.rs +++ b/src/tree/file_builder.rs | |||
@@ -1,10 +1,16 @@ | |||
1 | // FIXME(CAD97): I don't understand this mod well enough to stub out docs for the public symbols yet | 1 | //! This module provides a way to construct a `File`. |
2 | #![allow(missing_docs)] | 2 | //! It is intended to be completely decoupled from the |
3 | 3 | //! parser, so as to allow to evolve the tree representation | |
4 | //! and the parser algorithm independently. | ||
5 | //! | ||
6 | //! The `Sink` trait is the bridge between the parser and the | ||
7 | //! tree builder: the parser produces a stream of events like | ||
8 | //! `start node`, `finish node`, and `FileBuilder` converts | ||
9 | //! this stream to a real tree. | ||
4 | use {SyntaxKind, TextRange, TextUnit}; | 10 | use {SyntaxKind, TextRange, TextUnit}; |
5 | use super::{File, NodeData, NodeIdx, SyntaxErrorData}; | 11 | use super::{File, NodeData, NodeIdx, SyntaxErrorData}; |
6 | 12 | ||
7 | pub trait Sink { | 13 | pub(crate) trait Sink { |
8 | fn leaf(&mut self, kind: SyntaxKind, len: TextUnit); | 14 | fn leaf(&mut self, kind: SyntaxKind, len: TextUnit); |
9 | fn start_internal(&mut self, kind: SyntaxKind); | 15 | fn start_internal(&mut self, kind: SyntaxKind); |
10 | fn finish_internal(&mut self); | 16 | fn finish_internal(&mut self); |
@@ -12,7 +18,7 @@ pub trait Sink { | |||
12 | } | 18 | } |
13 | 19 | ||
14 | #[derive(Debug)] | 20 | #[derive(Debug)] |
15 | pub struct FileBuilder { | 21 | pub(crate) struct FileBuilder { |
16 | text: String, | 22 | text: String, |
17 | nodes: Vec<NodeData>, | 23 | nodes: Vec<NodeData>, |
18 | errors: Vec<SyntaxErrorData>, | 24 | errors: Vec<SyntaxErrorData>, |
diff --git a/src/tree/mod.rs b/src/tree/mod.rs index aaf048c73..30a4b33a9 100644 --- a/src/tree/mod.rs +++ b/src/tree/mod.rs | |||
@@ -5,7 +5,7 @@ use std::fmt; | |||
5 | use std::cmp; | 5 | use std::cmp; |
6 | 6 | ||
7 | mod file_builder; | 7 | mod file_builder; |
8 | pub use self::file_builder::{FileBuilder, Sink}; | 8 | pub(crate) use self::file_builder::{FileBuilder, Sink}; |
9 | 9 | ||
10 | /// The kind of syntax node, e.g. `IDENT`, `USE_KW`, or `STRUCT_DEF`. | 10 | /// The kind of syntax node, e.g. `IDENT`, `USE_KW`, or `STRUCT_DEF`. |
11 | #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] | 11 | #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] |