blob: 6eed0e656a4abe1582f7c74c9d655ad7e12a6ae2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
pub(super) mod event;
pub(super) mod input;
use crate::parsing::{
TreeSink, TokenSource,
lexer::Token,
parser_api::Parser,
parser_impl::event::EventProcessor,
};
/// Parse a sequence of tokens into the representative node tree
pub(super) fn parse_with<S: TreeSink>(
sink: S,
text: &str,
tokens: &[Token],
parser: fn(&mut Parser),
) -> S::Tree {
let mut events = {
let input = input::ParserInput::new(text, tokens);
let mut parser_api = Parser::new(&input);
parser(&mut parser_api);
parser_api.finish()
};
EventProcessor::new(sink, text, tokens, &mut events).process().finish()
}
|