aboutsummaryrefslogtreecommitdiff
path: root/src/parser/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser/mod.rs')
-rw-r--r--src/parser/mod.rs21
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 @@
1use {Token, File, FileBuilder, Sink}; 1use {Token, File, FileBuilder, Sink, SyntaxKind};
2 2
3use syntax_kinds::*; 3use syntax_kinds::*;
4 4
5mod event_parser;
6use self::event_parser::Event;
7
5 8
6pub fn parse(text: String, tokens: &[Token]) -> File { 9pub fn parse(text: String, tokens: &[Token]) -> File {
10 let events = event_parser::parse(&text, tokens);
11 from_events_to_file(text, events)
12}
13
14fn 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}