2018-01-06 14:16:00 +00:00
|
|
|
use {Token, SyntaxKind};
|
2018-01-01 13:05:46 +00:00
|
|
|
|
|
|
|
mod grammar;
|
|
|
|
mod parser;
|
|
|
|
|
2018-01-01 19:13:04 +00:00
|
|
|
#[derive(Debug)]
|
2018-01-01 13:05:46 +00:00
|
|
|
pub(crate) enum Event {
|
|
|
|
Start { kind: SyntaxKind },
|
|
|
|
Finish,
|
|
|
|
Token {
|
|
|
|
kind: SyntaxKind,
|
|
|
|
n_raw_tokens: u8,
|
2018-01-07 09:13:01 +00:00
|
|
|
},
|
|
|
|
Error {
|
|
|
|
message: String,
|
|
|
|
},
|
2018-01-01 13:05:46 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub(crate) fn parse<'t>(text: &'t str, raw_tokens: &'t [Token]) -> Vec<Event> {
|
|
|
|
let mut parser = parser::Parser::new(text, raw_tokens);
|
2018-01-01 14:21:53 +00:00
|
|
|
grammar::file(&mut parser);
|
2018-01-01 13:05:46 +00:00
|
|
|
parser.into_events()
|
|
|
|
}
|