diff options
author | Aleksey Kladov <[email protected]> | 2018-07-29 13:16:07 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2018-07-29 13:16:07 +0100 |
commit | 415c891d641fa305e7ddbbbcc78db990dd5d3564 (patch) | |
tree | 4b6e1e0aa4b5a732aeae8945e75c9bee3bbf1d65 /src/parser/mod.rs | |
parent | ad188d4c3db34f035408afbdd6d2f3c308121f0a (diff) |
Reorganize
Diffstat (limited to 'src/parser/mod.rs')
-rw-r--r-- | src/parser/mod.rs | 26 |
1 files changed, 8 insertions, 18 deletions
diff --git a/src/parser/mod.rs b/src/parser/mod.rs index b7d5e5832..e72ab05af 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs | |||
@@ -5,18 +5,16 @@ mod input; | |||
5 | mod event; | 5 | mod event; |
6 | mod grammar; | 6 | mod grammar; |
7 | 7 | ||
8 | use std::sync::Arc; | ||
9 | use { | 8 | use { |
10 | Token, | 9 | lexer::Token, |
11 | yellow::SyntaxNode, | 10 | parser::event::{process} |
12 | syntax_kinds::* | ||
13 | }; | 11 | }; |
14 | use GreenBuilder; | 12 | |
15 | use parser::event::process; | 13 | pub(crate) use self::event::Sink; |
16 | 14 | ||
17 | 15 | ||
18 | /// Parse a sequence of tokens into the representative node tree | 16 | /// Parse a sequence of tokens into the representative node tree |
19 | pub fn parse_green(text: String, tokens: &[Token]) -> SyntaxNode { | 17 | pub(crate) fn parse<S: Sink>(text: String, tokens: &[Token]) -> S::Tree { |
20 | let events = { | 18 | let events = { |
21 | let input = input::ParserInput::new(&text, tokens); | 19 | let input = input::ParserInput::new(&text, tokens); |
22 | let parser_impl = parser::imp::ParserImpl::new(&input); | 20 | let parser_impl = parser::imp::ParserImpl::new(&input); |
@@ -24,15 +22,7 @@ pub fn parse_green(text: String, tokens: &[Token]) -> SyntaxNode { | |||
24 | grammar::file(&mut parser); | 22 | grammar::file(&mut parser); |
25 | parser.0.into_events() | 23 | parser.0.into_events() |
26 | }; | 24 | }; |
27 | let mut builder = GreenBuilder::new(text); | 25 | let mut sink = S::new(text); |
28 | process(&mut builder, tokens, events); | 26 | process(&mut sink, tokens, events); |
29 | let (green, errors) = builder.finish(); | 27 | sink.finish() |
30 | SyntaxNode::new(Arc::new(green), errors) | ||
31 | } | ||
32 | |||
33 | fn is_insignificant(kind: SyntaxKind) -> bool { | ||
34 | match kind { | ||
35 | WHITESPACE | COMMENT => true, | ||
36 | _ => false, | ||
37 | } | ||
38 | } | 28 | } |