aboutsummaryrefslogtreecommitdiff
path: root/crates/libsyntax2/src/parser_impl
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2018-08-25 12:45:17 +0100
committerAleksey Kladov <[email protected]>2018-08-25 12:45:17 +0100
commitc3e5987c433cdd0ea95a6b1057b442f4f0fe1ffc (patch)
tree1ef2814a3ddc800ef6976aa0459c6b5cf0c3b621 /crates/libsyntax2/src/parser_impl
parent5211e7d97771aa7f8d7cc99e5131fb3cc71a1627 (diff)
incremental reparse
Diffstat (limited to 'crates/libsyntax2/src/parser_impl')
-rw-r--r--crates/libsyntax2/src/parser_impl/mod.rs9
1 files changed, 6 insertions, 3 deletions
diff --git a/crates/libsyntax2/src/parser_impl/mod.rs b/crates/libsyntax2/src/parser_impl/mod.rs
index 14cceced5..f60ef80f0 100644
--- a/crates/libsyntax2/src/parser_impl/mod.rs
+++ b/crates/libsyntax2/src/parser_impl/mod.rs
@@ -2,7 +2,6 @@ mod event;
2mod input; 2mod input;
3 3
4use { 4use {
5 grammar,
6 lexer::Token, 5 lexer::Token,
7 parser_api::Parser, 6 parser_api::Parser,
8 parser_impl::{ 7 parser_impl::{
@@ -27,12 +26,16 @@ pub(crate) trait Sink<'a> {
27} 26}
28 27
29/// Parse a sequence of tokens into the representative node tree 28/// Parse a sequence of tokens into the representative node tree
30pub(crate) fn parse<'a, S: Sink<'a>>(text: &'a str, tokens: &[Token]) -> S::Tree { 29pub(crate) fn parse_with<'a, S: Sink<'a>>(
30 text: &'a str,
31 tokens: &[Token],
32 parser: fn(&mut Parser),
33) -> S::Tree {
31 let events = { 34 let events = {
32 let input = input::ParserInput::new(text, tokens); 35 let input = input::ParserInput::new(text, tokens);
33 let parser_impl = ParserImpl::new(&input); 36 let parser_impl = ParserImpl::new(&input);
34 let mut parser_api = Parser(parser_impl); 37 let mut parser_api = Parser(parser_impl);
35 grammar::file(&mut parser_api); 38 parser(&mut parser_api);
36 parser_api.0.into_events() 39 parser_api.0.into_events()
37 }; 40 };
38 let mut sink = S::new(text); 41 let mut sink = S::new(text);