diff options
Diffstat (limited to 'src/parser/mod.rs')
-rw-r--r-- | src/parser/mod.rs | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/parser/mod.rs b/src/parser/mod.rs index 0a136266c..ccccd78f9 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs | |||
@@ -1,11 +1,24 @@ | |||
1 | use {Token, File, FileBuilder, Sink}; | 1 | use {Token, File, FileBuilder, Sink, SyntaxKind}; |
2 | 2 | ||
3 | use syntax_kinds::*; | 3 | use syntax_kinds::*; |
4 | 4 | ||
5 | mod event_parser; | ||
6 | use self::event_parser::Event; | ||
7 | |||
5 | 8 | ||
6 | pub fn parse(text: String, tokens: &[Token]) -> File { | 9 | pub fn parse(text: String, tokens: &[Token]) -> File { |
10 | let events = event_parser::parse(&text, tokens); | ||
11 | from_events_to_file(text, events) | ||
12 | } | ||
13 | |||
14 | fn from_events_to_file(text: String, events: Vec<Event>) -> File { | ||
7 | let mut builder = FileBuilder::new(text); | 15 | let mut builder = FileBuilder::new(text); |
8 | builder.start_internal(FILE); | 16 | for event in events { |
9 | builder.finish_internal(); | 17 | match event { |
18 | Event::Start { kind } => builder.start_internal(kind), | ||
19 | Event::Finish => builder.finish_internal(), | ||
20 | Event::Token { .. } => unimplemented!(), | ||
21 | } | ||
22 | } | ||
10 | builder.finish() | 23 | builder.finish() |
11 | } \ No newline at end of file | 24 | } |