rename
This commit is contained in:
parent
e5fb33a946
commit
0c1cb98182
4 changed files with 19 additions and 23 deletions
|
@ -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<SyntaxError>) {
|
||||
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()
|
||||
}
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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<Token>,
|
||||
}
|
||||
|
||||
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 }
|
||||
}
|
||||
}
|
|
@ -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(),
|
Loading…
Reference in a new issue