基础元数据与枚举 (Common)¶
本页定义了 AST 中通用的基础结构、位置信息以及各类修饰符枚举。
1. 源代码位置¶
/// 源代码中的具体位置
pub struct SourceLocation {
pub file: String,
pub line: u32,
pub column: u32,
}
/// 源代码中的一段范围
pub struct Span {
pub start: SourceLocation,
pub end: SourceLocation,
}
2. 函数相关枚举¶
2.1 纯度等级 (Purity)¶
pub enum Purity {
Def, // 纯函数:无副作用,确定性
Fun, // 逻辑纯函数:允许内部副作用,对外透明
Act, // 副作用函数:允许 IO 和全局状态修改
}
2.2 函数修饰符 (Modifier)¶
pub enum Modifier {
Unsafe, // 允许在 fun 中执行 act 操作
Async, // 异步函数
OnceStrict, // once! act (再次调用报错)
OnceSoft, // once? act (再次调用忽略)
}
2.3 成员访问权限修饰符 (MemberModifier)¶
用于类或结构体成员函数,标记对 self 的访问权限。
pub enum MemberModifier {
ReadOnly, // @ro: 只读成员
WriteOnly, // @wo: 只写成员
ReadWrite, // @rw: 可读可写 (默认)
ReadExec, // @rx: 可读可执行
}
3. 变量与内存枚举¶
3.1 变量修饰符 (VarModifier)¶
pub enum VarModifier {
Var, // 完全可变 (隐含 mut)
Val, // 逻辑不可变 (默认,允许内部可变性)
Imv, // 物理不可变 (隐含 imm,存放在只读内存)
Lit, // 编译期常量 (仅存在于编译期)
}
3.2 初始化策略 (InitStrategy)¶
pub enum InitStrategy {
Normal, // 立即初始化
Late, // 手动延迟初始化 (late)
Lazy, // 线程安全懒加载 (lazy)
}
4. 访问控制 (Access Control)¶
pub enum AccessModifier {
Public, // @public
Protected, // @protected
Private, // @private
}
## 5. 辅助结构
### 5.1 代码块 `Block`
```rust
pub struct Block {
pub stats: Vec<Stat>,
pub span: Span,
}
5.2 参数与捕获¶
pub struct Param {
pub name: String,
pub r#type: TypeRef,
pub constraint: Option<Expr>, // where 子句
}
pub struct Capture {
pub name: String,
pub is_by_value: bool,
}
```