pub trait Parser: Sized {
type Checkpoint: Clone;
// Required methods
fn checkpoint(&mut self) -> Self::Checkpoint;
fn finish_node_impl(&mut self, token: NodeToken);
fn start_node_impl(
&mut self,
kind: SyntaxKind,
checkpoint: Option<Self::Checkpoint>,
token: NodeToken,
);
fn nth(&mut self, n: usize) -> Token;
fn consume(&mut self);
fn error(&mut self, e: impl Into<String>);
// Provided methods
fn start_node(&mut self, kind: SyntaxKind) -> Node<'_, Self> { ... }
fn start_node_at(
&mut self,
checkpoint: Self::Checkpoint,
kind: SyntaxKind,
) -> Node<'_, Self> { ... }
fn peek(&mut self) -> Token { ... }
fn expect(&mut self, kind: SyntaxKind) -> bool { ... }
fn test(&mut self, kind: SyntaxKind) -> bool { ... }
fn until(&mut self, kind: SyntaxKind) { ... }
}
Required Associated Types§
type Checkpoint: Clone
Required Methods§
fn checkpoint(&mut self) -> Self::Checkpoint
Sourcefn finish_node_impl(&mut self, token: NodeToken)
fn finish_node_impl(&mut self, token: NodeToken)
Can only be called by Node::drop
Sourcefn start_node_impl(
&mut self,
kind: SyntaxKind,
checkpoint: Option<Self::Checkpoint>,
token: NodeToken,
)
fn start_node_impl( &mut self, kind: SyntaxKind, checkpoint: Option<Self::Checkpoint>, token: NodeToken, )
Can only be called by Self::start_node
fn consume(&mut self)
fn error(&mut self, e: impl Into<String>)
Provided Methods§
Sourcefn start_node(&mut self, kind: SyntaxKind) -> Node<'_, Self>
fn start_node(&mut self, kind: SyntaxKind) -> Node<'_, Self>
Enter a new node. The node is going to be finished when The return value of this function is dropped
(do not re-implement this function, re-implement start_node_impl and finish_node_impl)
fn start_node_at( &mut self, checkpoint: Self::Checkpoint, kind: SyntaxKind, ) -> Node<'_, Self>
Sourcefn expect(&mut self, kind: SyntaxKind) -> bool
fn expect(&mut self, kind: SyntaxKind) -> bool
Consume the token if it has the right kind, otherwise report a syntax error. Returns true if the token was consumed.
Sourcefn test(&mut self, kind: SyntaxKind) -> bool
fn test(&mut self, kind: SyntaxKind) -> bool
If the token if of this type, consume it and return true, otherwise return false
Sourcefn until(&mut self, kind: SyntaxKind)
fn until(&mut self, kind: SyntaxKind)
consume everything until reaching a token of this kind
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.