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§
- pub use crate::ast::AstNode;
- pub use crate::ast::AstToken;
- pub use crate::ast::SourceFile;
- pub use rustc_literal_escaper as unescape;
Modules§
- algo
- Collection of assorted algorithms for syntax trees.
- ast
- Abstract Syntax Tree, layered on top of untyped SyntaxNodes
- hacks
- Things which exist to solve practical issues, but which shouldn’t exist.
- syntax_editor 
- Syntax Tree editor
- ted
- Primitive tree editor, ed for trees.
- utils
- A set of utils methods to reuse on other abstraction levels
Macros§
- T
- format_smolstr 
- Formats arguments to a SmolStr, potentially without allocating.
- match_ast 
- Matches a SyntaxNodeagainst anasttype.
Structs§
- AstPtr
- Like SyntaxNodePtr, but remembers the type of node.
- GreenNode 
- Internal node in the immutable tree. It has other nodes and tokens as children.
- Parse
- Parseis the result of the parsing: a syntax tree and a collection of errors.
- Preorder
- SmolStr
- A SmolStris a string type that has the following properties:
- SmolStrBuilder 
- A builder that can be used to efficiently build a SmolStr.
- SyntaxError 
- Represents the result of unsuccessful tokenization, parsing or tree validation.
- SyntaxText 
- SyntaxTree Builder 
- TextRange 
- A range in text, represented as a pair of TextSize.
- TextSize 
- A measure of text length. Also, equivalently, an index into text.
- TokenText 
Enums§
- Direction
- Edition
- NodeOrToken 
- RustLanguage 
- SyntaxKind 
- The kind of syntax node, e.g. IDENT,USE_KW, orSTRUCT.
- TokenAtOffset 
- There might be zero, one or two leaves at a given offset.
- WalkEvent 
- WalkEventdescribes tree walking process.
Traits§
- ToSmolStr 
- Convert value to SmolStrusingfmt::Display, potentially without allocating.
Type Aliases§
- PreorderWith Tokens 
- SyntaxElement 
- SyntaxElement Children 
- SyntaxNode 
- SyntaxNode Children 
- SyntaxNode Ptr 
- A “pointer” to a SyntaxNode, via location in the source code.
- SyntaxToken