1use oak_core::{
2 parser::{ParseCache, ParseOutput, Parser as CoreParser, parse_with_lexer},
3 source::{Source, TextEdit},
4 tree::GreenNode,
5};
6
7use crate::{language::RacketLanguage, lexer::Lexer};
8
9mod element_type;
10pub use element_type::ElementType;
11
12pub struct Parser;
14
15impl CoreParser<RacketLanguage> for Parser {
16 fn parse<'a, S: Source + ?Sized>(&self, text: &'a S, edits: &[TextEdit], cache: &'a mut impl ParseCache<RacketLanguage>) -> ParseOutput<'a, RacketLanguage> {
17 parse_with_lexer(&Lexer, text, edits, cache, |state| {
18 let root = state.arena().alloc(GreenNode::new(ElementType::Expression, &[]));
19 Ok(root)
20 })
21 }
22}