Crate oq3_syntax

source ·
Expand description

Syntax Tree library used throughout the rust-analyzer.

Properties:

  • easy and fast incremental re-parsing. (Removed for OpenQASM 3, GJL)
  • 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§

  • Abstract Syntax Tree, layered on top of untyped SyntaxNodes
  • This module defines Concrete Syntax Tree (CST), used by rust-analyzer.
  • Primitive tree editor, ed for trees.

Macros§

  • Matches a SyntaxNode against an ast type.

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.
  • Same as Parse except that the GreenNode is wrapped in Option. The Option is None if lexer errors were recorded, in which case no parsing was done. In the same case, all errors will be lexer errors. If there are no lexer errors, the parsing was done, and there is a GreenNode. In this case any errors are parser errors.
  • A SmolStr is a string type that has the following properties:
  • Represents the result of unsuccessful tokenization, parsing or tree validation.
  • A range in text, represented as a pair of TextSize.
  • A measure of text length. Also, equivalently, an index into text.

Enums§

Traits§

Functions§

Type Aliases§