Skip to main content

Parser

Trait Parser 

Source
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§

Required Methods§

Source

fn checkpoint(&mut self) -> Self::Checkpoint

Source

fn finish_node_impl(&mut self, token: NodeToken)

Can only be called by Node::drop

Source

fn start_node_impl( &mut self, kind: SyntaxKind, checkpoint: Option<Self::Checkpoint>, token: NodeToken, )

Can only be called by Self::start_node

Source

fn nth(&mut self, n: usize) -> Token

Peek the nth token, not including whitespace and comments

Source

fn consume(&mut self)

Source

fn error(&mut self, e: impl Into<String>)

Provided Methods§

Source

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)

Source

fn start_node_at( &mut self, checkpoint: Self::Checkpoint, kind: SyntaxKind, ) -> Node<'_, Self>

Source

fn peek(&mut self) -> Token

Same as nth(0)

Source

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.

Source

fn test(&mut self, kind: SyntaxKind) -> bool

If the token if of this type, consume it and return true, otherwise return false

Source

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".

Implementors§