pub struct Parser<'a, 'mt> { /* private fields */ }Implementations§
Source§impl<'a, 'mt> Parser<'a, 'mt>
impl<'a, 'mt> Parser<'a, 'mt>
Sourcepub fn new(
db: &'a dyn Database,
file_id: FileId<'a>,
text: &'a str,
diagnostics: &'mt mut DiagnosticsBuilder<'a, ParserDiagnostic<'a>>,
) -> Self
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.
Sourcepub fn add_diagnostic(&mut self, kind: ParserDiagnosticKind, span: TextSpan)
pub fn add_diagnostic(&mut self, kind: ParserDiagnosticKind, span: TextSpan)
Adds a diagnostic to the parser diagnostics collection.
Sourcepub fn parse_file(
db: &'a dyn Database,
diagnostics: &'mt mut DiagnosticsBuilder<'a, ParserDiagnostic<'a>>,
file_id: FileId<'a>,
text: &'a str,
) -> SyntaxFile<'a>
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.
Sourcepub fn parse_file_green(
db: &'a dyn Database,
diagnostics: &'mt mut DiagnosticsBuilder<'a, ParserDiagnostic<'a>>,
file_id: FileId<'a>,
text: &'a str,
) -> SyntaxFileGreen<'a>
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.
Sourcepub 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>
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.
Sourcepub 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>
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.
Sourcepub fn is_eof(kind: SyntaxKind) -> bool
pub fn is_eof(kind: SyntaxKind) -> bool
Checks if the given kind is an end of file token.
Sourcepub 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>
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.
Sourcepub 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>
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.
pub fn parse_syntax_file(self) -> SyntaxFileGreen<'a>
Sourcepub fn try_parse_module_item(&mut self) -> TryParseResult<ModuleItemGreen<'a>>
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.
Sourcepub fn try_parse_trait_item(&mut self) -> TryParseResult<TraitItemGreen<'a>>
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.
Sourcepub fn try_parse_impl_item(&mut self) -> TryParseResult<ImplItemGreen<'a>>
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.
Sourcepub fn try_parse_expr(&mut self) -> TryParseResult<ExprGreen<'a>>
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.
Sourcepub fn parse_expr(&mut self) -> ExprGreen<'a>
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.
Sourcepub fn try_parse_match_arm(&mut self) -> TryParseResult<MatchArmGreen<'a>>
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.
Sourcepub fn try_parse_statement(&mut self) -> TryParseResult<StatementGreen<'a>>
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.
Sourcepub fn peek(&self) -> &LexerTerminal<'a>
pub fn peek(&self) -> &LexerTerminal<'a>
Peeks at the next terminal from the Lexer without taking it.
Sourcepub fn peek_next_next_kind(&mut self) -> SyntaxKind
pub fn peek_next_next_kind(&mut self) -> SyntaxKind
Peeks at the token following the next one. Assumption: the next token is not EOF.
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<'db, T> DebugDbUpcast<'db, T> for Twhere
T: ?Sized,
impl<'db, T> DebugDbUpcast<'db, T> for Twhere
T: ?Sized,
fn debug_db_upcast(&'db self) -> &'db T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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