Module ast

Source
Expand description

抽象语法树模块。

定义 AST 节点结构和语法解析逻辑,将 Token 流转换为结构化的语法树。 AST 解析模块:将 Token 流转换为抽象语法树(AST)。

本模块实现了 Onion 语言的语法分析器,将词法分析产生的 Token 流转换为 结构化的抽象语法树。支持丰富的语法结构,包括表达式、控制流、函数定义、 类型系统、模式匹配等。

§Onion 语言语法结构

§基础语法

  • 字面量42, "hello", true, false, null, undefined
  • 变量variable_name
  • 元组x, y, z(x, y, z)
  • 对象{...} 块作用域

§表达式

  • 算术运算+, -, *, /, %, ** (幂运算)
  • 比较运算==, !=, >, <, >=, <=
  • 逻辑运算and, or, xor, not
  • 位运算<<, >> (位移)
  • 一元运算-x (负号), +x (绝对值)

§变量与赋值

  • 变量定义x := value (let binding)
  • 变量赋值x = value (assignment)
  • 模式匹配key: value (pair), key => value (named pair)

§函数与 Lambda

  • 函数定义params -> body (静态函数)
  • 动态函数params -> dyn body (动态函数)
  • 捕获变量params -> & captured_vars body
  • 函数调用func args

§控制流

  • 条件判断if condition bodyif condition body else else_body
  • 循环while condition body
  • 跳转break value, continue value, return value, raise error

§高级特性

  • 范围start..end
  • 成员访问object.member
  • 包含检查element in container
  • 同一性检查x is y
  • 类型转换value as type
  • 集合操作collection | filter (set), collection |> map (map)

§修饰符

  • 可变性mut, const
  • 类型查询typeof, keyof, valueof, lengthof
  • 断言assert condition
  • 导入import module
  • 并发launch, spawn, async, sync, atomic

§编译时特性

  • 编译时求值@ expression
  • AST 序列化$ expression
  • 动态/静态模式dynamic expression, static expression
  • 命名空间Type::value
  • 假设元组...value
  • 快速命名expression ?

§用法示例

let tokens = tokenize(source);
let gathered = ast_token_stream::from_stream(&tokens);
let ast = build_ast(&mut diagnostics, gathered)?;

Modules§

ast_token_stream
AST Token 流处理模块。

Structs§

ASTNode
AST 节点结构体。

Enums§

ASTNodeModifier
AST 修饰符枚举。
ASTNodeOperation
AST 运算符枚举。
ASTNodeType
AST 节点类型枚举。
ASTParseDiagnostic
AST 解析诊断信息类型。

Functions§

build_ast
构建抽象语法树。

Type Aliases§

GatheredTokens
收集的 Token 片段类型别名。
TokenStream
Token 流类型别名。