Skip to main content

Parser

Struct Parser 

Source
pub struct Parser<'a, 'mt> { /* private fields */ }

Implementations§

Source§

impl<'a, 'mt> Parser<'a, 'mt>

Source

pub fn new( db: &'a dyn Database, file_id: FileId<'a>, text: &'a str, diagnostics: &'mt mut DiagnosticsBuilder<'a, ParserDiagnostic<'a>>, ) -> Self

Creates a new parser.

Source

pub fn add_diagnostic(&mut self, kind: ParserDiagnosticKind, span: TextSpan)

Adds a diagnostic to the parser diagnostics collection.

Source

pub fn parse_file( db: &'a dyn Database, diagnostics: &'mt mut DiagnosticsBuilder<'a, ParserDiagnostic<'a>>, file_id: FileId<'a>, text: &'a str, ) -> SyntaxFile<'a>

Parses a file.

Source

pub fn parse_file_green( db: &'a dyn Database, diagnostics: &'mt mut DiagnosticsBuilder<'a, ParserDiagnostic<'a>>, file_id: FileId<'a>, text: &'a str, ) -> SyntaxFileGreen<'a>

Parses a file, returning the green root. Used by callers that control root node creation, such as the canonical parsing query, which creates the root in its own query context so that node ids are reused when the file is reparsed.

Source

pub fn parse_file_expr_green( db: &'a dyn Database, diagnostics: &'mt mut DiagnosticsBuilder<'a, ParserDiagnostic<'a>>, file_id: FileId<'a>, text: &'a str, ) -> ExprGreen<'a>

Parses a file expr, returning the green root. See Self::parse_file_green.

Source

pub fn parse_file_statement_list_green( db: &'a dyn Database, diagnostics: &'mt mut DiagnosticsBuilder<'a, ParserDiagnostic<'a>>, file_id: FileId<'a>, text: &'a str, ) -> StatementListGreen<'a>

Parses a file as a list of statements, returning the green root. See Self::parse_file_green.

Source

pub fn is_eof(kind: SyntaxKind) -> bool

Checks if the given kind is an end of file token.

Source

pub fn parse_token_stream( db: &'a dyn Database, diagnostics: &'mt mut DiagnosticsBuilder<'a, ParserDiagnostic<'a>>, file_id: FileId<'a>, token_stream: &dyn ToPrimitiveTokenStream<Iter = impl Iterator<Item = PrimitiveToken>>, ) -> SyntaxFile<'a>

Parses a token stream.

Source

pub fn parse_token_stream_expr( db: &'a dyn Database, diagnostics: &'mt mut DiagnosticsBuilder<'a, ParserDiagnostic<'a>>, file_id: FileId<'a>, offset: Option<TextOffset>, ) -> Expr<'a>

Parses a token stream expression.

Source

pub fn parse_syntax_file(self) -> SyntaxFileGreen<'a>

Source

pub fn try_parse_module_item(&mut self) -> TryParseResult<ModuleItemGreen<'a>>

Returns a GreenId of a node with an Item.* kind (see syntax::node::ast::ModuleItem), or TryParseFailure if a module item can’t be parsed. In case of an identifier not followed by a !, it is skipped inside the function and thus a TryParseFailure::DoNothing is returned.

Source

pub fn try_parse_trait_item(&mut self) -> TryParseResult<TraitItemGreen<'a>>

Returns a GreenId of a node with a TraitItem.* kind (see syntax::node::ast::TraitItem), or TryParseFailure if a trait item can’t be parsed.

Source

pub fn try_parse_impl_item(&mut self) -> TryParseResult<ImplItemGreen<'a>>

Returns a GreenId of a node with a ImplItem.* kind (see syntax::node::ast::ImplItem), or TryParseFailure if an impl item can’t be parsed.

Source

pub fn try_parse_expr(&mut self) -> TryParseResult<ExprGreen<'a>>

Returns a GreenId of a node with an Expr.* kind (see syntax::node::ast::Expr) or TryParseFailure if an expression can’t be parsed.

Source

pub fn parse_expr(&mut self) -> ExprGreen<'a>

Returns a GreenId of a node with an Expr.* kind (see syntax::node::ast::Expr) or a node with kind ExprMissing if an expression can’t be parsed.

Source

pub fn try_parse_match_arm(&mut self) -> TryParseResult<MatchArmGreen<'a>>

Returns a GreenId of a node with a MatchArm kind or TryParseFailure if a match arm can’t be parsed.

Source

pub fn try_parse_statement(&mut self) -> TryParseResult<StatementGreen<'a>>

Returns a GreenId of a node with a Statement.* kind (see syntax::node::ast::Statement) or TryParseFailure if a statement can’t be parsed.

Source

pub fn peek(&self) -> &LexerTerminal<'a>

Peeks at the next terminal from the Lexer without taking it.

Source

pub fn peek_next_next_kind(&mut self) -> SyntaxKind

Peeks at the token following the next one. Assumption: the next token is not EOF.

Source

pub fn take<Terminal: Terminal<'a>>(&mut self) -> Terminal::Green

Takes a token from the Lexer and place it in self.current. If tokens were skipped, glue them to this token as leading trivia.

Auto Trait Implementations§

§

impl<'a, 'mt> !RefUnwindSafe for Parser<'a, 'mt>

§

impl<'a, 'mt> !Send for Parser<'a, 'mt>

§

impl<'a, 'mt> !Sync for Parser<'a, 'mt>

§

impl<'a, 'mt> !UnwindSafe for Parser<'a, 'mt>

§

impl<'a, 'mt> Freeze for Parser<'a, 'mt>

§

impl<'a, 'mt> Unpin for Parser<'a, 'mt>

§

impl<'a, 'mt> UnsafeUnpin for Parser<'a, 'mt>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<'db, T> DebugDbUpcast<'db, T> for T
where T: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Lookup<T> for T

Source§

fn into_owned(self) -> T

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more