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 body
或if 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§
- ASTNode
Modifier - AST 修饰符枚举。
- ASTNode
Operation - AST 运算符枚举。
- ASTNode
Type - AST 节点类型枚举。
- ASTParse
Diagnostic - AST 解析诊断信息类型。
Functions§
- build_
ast - 构建抽象语法树。
Type Aliases§
- Gathered
Tokens - 收集的 Token 片段类型别名。
- Token
Stream - Token 流类型别名。