Crate ra_ap_syntax
source ·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
sThings which exist to solve practical issues, but which shouldn’t exist.
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:SourceFile
represents a parse tree for a single Rust file.Represents the result of unsuccessful tokenization, parsing
or tree validation.
A measure of text length. Also, equivalently, an index into text.
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.Type Definitions
A “pointer” to a
SyntaxNode
, via location in the source code.