diff --git a/crates/json-pawarser/src/syntax_kind.rs b/crates/json-pawarser/src/syntax_kind.rs index 6e6b966..8713b2d 100644 --- a/crates/json-pawarser/src/syntax_kind.rs +++ b/crates/json-pawarser/src/syntax_kind.rs @@ -62,15 +62,13 @@ pub enum SyntaxKind { PARSE_ERR, // Meta SyntaxKinds - ROOT, EOF, } impl pawarser::parser::SyntaxElement for SyntaxKind { - const SYNTAX_EOF: Self = Self::EOF; + const EOF: Self = Self::EOF; - const SYNTAX_ERROR: Self = Self::PARSE_ERR; - const SYNTAX_ROOT: Self = Self::ROOT; + const ERROR: Self = Self::PARSE_ERR; } impl From for rowan::SyntaxKind { diff --git a/crates/pawarser/src/parser.rs b/crates/pawarser/src/parser.rs index c592cdb..2a666bf 100644 --- a/crates/pawarser/src/parser.rs +++ b/crates/pawarser/src/parser.rs @@ -26,10 +26,9 @@ where + Eq, { /// EOF value. This will be used by the rest of the parser library to represent an EOF. - const SYNTAX_EOF: Self; + const EOF: Self; /// Error value. This will be used as a placeholder for associated respective errors. - const SYNTAX_ERROR: Self; - const SYNTAX_ROOT: Self; + const ERROR: Self; } pub struct Parser<'src, SyntaxKind: SyntaxElement, SyntaxErr: SyntaxError> { @@ -120,9 +119,6 @@ impl<'src, 'toks, SyntaxKind: SyntaxElement, SyntaxErr: SyntaxError> let mut errors: Vec = Vec::new(); raw_toks.reverse(); - // always have an implicit root node to avoid [`GreenNodeBuilder::finish()`] panicking due to multiple root elements. - builder.start_node(SyntaxKind::SYNTAX_ROOT.into()); - for i in 0..events.len() { match mem::replace(&mut events[i], Event::tombstone()) { Event::Start { @@ -174,7 +170,7 @@ impl<'src, 'toks, SyntaxKind: SyntaxElement, SyntaxErr: SyntaxError> NodeKind::Syntax(kind) => builder.start_node(kind.into()), NodeKind::Error(err) => { errors.push(err); - builder.start_node(SyntaxKind::SYNTAX_ERROR.into()) + builder.start_node(SyntaxKind::ERROR.into()) } _ => {} } @@ -188,9 +184,6 @@ impl<'src, 'toks, SyntaxKind: SyntaxElement, SyntaxErr: SyntaxError> } } - // finish SYNTAX_ROOT - builder.finish_node(); - ParserOutput { green_node: builder.finish(), errors, diff --git a/crates/pawarser/src/parser/input.rs b/crates/pawarser/src/parser/input.rs index d7e14b3..a20d73d 100644 --- a/crates/pawarser/src/parser/input.rs +++ b/crates/pawarser/src/parser/input.rs @@ -34,7 +34,7 @@ impl<'src, SyntaxKind: SyntaxElement> Input<'src, SyntaxKind> { pub fn kind(&self, idx: usize) -> SyntaxKind { let Some(meaningful_idx) = self.meaningful_toks.get(idx) else { - return SyntaxKind::SYNTAX_EOF; + return SyntaxKind::EOF; }; self.raw.get(*meaningful_idx).unwrap().0 diff --git a/crates/pawarser/src/parser/output.rs b/crates/pawarser/src/parser/output.rs index 25b0c31..bea13e8 100644 --- a/crates/pawarser/src/parser/output.rs +++ b/crates/pawarser/src/parser/output.rs @@ -38,7 +38,7 @@ fn debug_print_output( match node { NodeOrToken::Node(n) => { let kind: SyntaxKind = node.kind().into(); - if kind != SyntaxKind::SYNTAX_ERROR { + if kind != SyntaxKind::ERROR { writeln!(f, "{:?} {{", kind)?; } else { let err = errs