Crate ra_ap_syntax[−][src]
Expand description
Syntax Tree library used throughout the rust analyzer.
Properties:
- easy and fast incremental re-parsing
- graceful handling of errors
- full-fidelity representation (any text can be precisely represented as a syntax tree)
For more information, see the RFC. Current implementation is inspired by the Swift one.
The most interesting modules here are syntax_node
(which defines concrete
syntax tree) and ast
(which defines abstract syntax tree on top of the
CST). The actual parser live in a separate parser
crate, though the
lexer lives in this crate.
See api_walkthrough
test in this file for a quick API tour!
Re-exports
Modules
Collection of assorted algorithms for syntax trees.
Abstract Syntax Tree, layered on top of untyped SyntaxNode
s
This module contains utilities for turning SyntaxNodes and HIR types into types that may be used to render in a UI.
Primitive tree editor, ed for trees.
A set of utils methods to reuse on other abstraction levels
Macros
Structs
Like SyntaxNodePtr
, but remembers the type of node
Internal node in the immutable tree. It has other nodes and tokens as children.
Parse
is the result of the parsing: a syntax tree and a collection of
errors.
A SmolStr
is a string type that has the following properties:
Represents the result of unsuccessful tokenization, parsing or tree validation.
A pointer to a syntax node inside a file. It can be used to remember a specific node across reparses of the same file.
A range in text, represented as a pair of TextSize
.
A measure of text length. Also, equivalently, an index into text.
A token of Rust source.
Enums
The kind of syntax node, e.g. IDENT
, USE_KW
, or STRUCT
.
There might be zero, one or two leaves at a given offset.
WalkEvent
describes tree walking process.
Functions
Returns SyntaxKind
and Option<SyntaxError>
if text
parses as a single token.
The same as lex_single_syntax_kind()
but returns only SyntaxKind
and
returns None
if any tokenization error occurred.
Break a string up into its component tokens. Beware that it checks for shebang first and its length contributes to resulting tokens offsets.