diff --git a/crates/ra_syntax/src/parsing.rs b/crates/ra_syntax/src/parsing.rs index cf573801cb..ad5668a65c 100644 --- a/crates/ra_syntax/src/parsing.rs +++ b/crates/ra_syntax/src/parsing.rs @@ -2,17 +2,13 @@ //! incremental reparsing. mod lexer; -mod input; -mod builder; +mod text_token_source; +mod text_tree_sink; mod reparsing; use crate::{ SyntaxError, syntax_node::GreenNode, - parsing::{ - builder::TreeBuilder, - input::ParserInput, - }, }; pub use self::lexer::{tokenize, Token}; @@ -21,8 +17,8 @@ pub(crate) use self::reparsing::incremental_reparse; pub(crate) fn parse_text(text: &str) -> (GreenNode, Vec) { let tokens = tokenize(&text); - let token_source = ParserInput::new(text, &tokens); - let mut tree_sink = TreeBuilder::new(text, &tokens); + let token_source = text_token_source::TextTokenSource::new(text, &tokens); + let mut tree_sink = text_tree_sink::TextTreeSink::new(text, &tokens); ra_parser::parse(&token_source, &mut tree_sink); tree_sink.finish() } diff --git a/crates/ra_syntax/src/parsing/reparsing.rs b/crates/ra_syntax/src/parsing/reparsing.rs index 19d8adcfb3..ba77a3b6c8 100644 --- a/crates/ra_syntax/src/parsing/reparsing.rs +++ b/crates/ra_syntax/src/parsing/reparsing.rs @@ -14,8 +14,8 @@ use crate::{ algo, syntax_node::{GreenNode, SyntaxNode}, parsing::{ - input::ParserInput, - builder::TreeBuilder, + text_token_source::TextTokenSource, + text_tree_sink::TextTreeSink, lexer::{tokenize, Token}, } }; @@ -68,8 +68,8 @@ fn reparse_block<'node>( if !is_balanced(&tokens) { return None; } - let token_source = ParserInput::new(&text, &tokens); - let mut tree_sink = TreeBuilder::new(&text, &tokens); + let token_source = TextTokenSource::new(&text, &tokens); + let mut tree_sink = TextTreeSink::new(&text, &tokens); reparser.parse(&token_source, &mut tree_sink); let (green, new_errors) = tree_sink.finish(); Some((node, green, new_errors)) diff --git a/crates/ra_syntax/src/parsing/input.rs b/crates/ra_syntax/src/parsing/text_token_source.rs similarity index 86% rename from crates/ra_syntax/src/parsing/input.rs rename to crates/ra_syntax/src/parsing/text_token_source.rs index 31c6a3b9bc..a6277f66fc 100644 --- a/crates/ra_syntax/src/parsing/input.rs +++ b/crates/ra_syntax/src/parsing/text_token_source.rs @@ -5,7 +5,7 @@ use crate::{ parsing::lexer::Token, }; -pub(crate) struct ParserInput<'t> { +pub(crate) struct TextTokenSource<'t> { text: &'t str, /// start position of each token(expect whitespace and comment) /// ```non-rust @@ -25,7 +25,7 @@ pub(crate) struct ParserInput<'t> { tokens: Vec, } -impl<'t> TokenSource for ParserInput<'t> { +impl<'t> TokenSource for TextTokenSource<'t> { fn token_kind(&self, pos: usize) -> SyntaxKind { if !(pos < self.tokens.len()) { return EOF; @@ -48,9 +48,9 @@ impl<'t> TokenSource for ParserInput<'t> { } } -impl<'t> ParserInput<'t> { +impl<'t> TextTokenSource<'t> { /// Generate input from tokens(expect comment and whitespace). - pub fn new(text: &'t str, raw_tokens: &'t [Token]) -> ParserInput<'t> { + pub fn new(text: &'t str, raw_tokens: &'t [Token]) -> TextTokenSource<'t> { let mut tokens = Vec::new(); let mut start_offsets = Vec::new(); let mut len = 0.into(); @@ -62,6 +62,6 @@ impl<'t> ParserInput<'t> { len += token.len; } - ParserInput { text, start_offsets, tokens } + TextTokenSource { text, start_offsets, tokens } } } diff --git a/crates/ra_syntax/src/parsing/builder.rs b/crates/ra_syntax/src/parsing/text_tree_sink.rs similarity index 94% rename from crates/ra_syntax/src/parsing/builder.rs rename to crates/ra_syntax/src/parsing/text_tree_sink.rs index cfe3139b81..8c1d78deb3 100644 --- a/crates/ra_syntax/src/parsing/builder.rs +++ b/crates/ra_syntax/src/parsing/text_tree_sink.rs @@ -12,8 +12,8 @@ use crate::{ /// Bridges the parser with our specific syntax tree representation. /// -/// `TreeBuilder` also handles attachment of trivia (whitespace) to nodes. -pub(crate) struct TreeBuilder<'a> { +/// `TextTreeSink` also handles attachment of trivia (whitespace) to nodes. +pub(crate) struct TextTreeSink<'a> { text: &'a str, tokens: &'a [Token], text_pos: TextUnit, @@ -29,7 +29,7 @@ enum State { PendingFinish, } -impl<'a> TreeSink for TreeBuilder<'a> { +impl<'a> TreeSink for TextTreeSink<'a> { fn leaf(&mut self, kind: SyntaxKind, n_tokens: u8) { match mem::replace(&mut self.state, State::Normal) { State::PendingStart => unreachable!(), @@ -91,9 +91,9 @@ impl<'a> TreeSink for TreeBuilder<'a> { } } -impl<'a> TreeBuilder<'a> { - pub(super) fn new(text: &'a str, tokens: &'a [Token]) -> TreeBuilder<'a> { - TreeBuilder { +impl<'a> TextTreeSink<'a> { + pub(super) fn new(text: &'a str, tokens: &'a [Token]) -> TextTreeSink<'a> { + TextTreeSink { text, tokens, text_pos: 0.into(),