这是一份根据最新审美调整后的 Auto 语言 (.at) 核心语法介绍文档。
我们将所有的后置操作(无论是符号还是单词)统一收纳在点号 . 之下。这种设计让点号成为了 .at 语言中唯一的**“属性引导符”**,视觉上达到了极度的工整与统一,同时也强化了“一切皆属性”的哲学。
Auto 语言核心规范:统一属性化设计
在 Auto 语言 (.at) 中,我们消除了一切前缀操作符和嵌套括号。通过统一的点号引导符(Dot-notated Lead),我们将内存契约、解构操作和类型转换全部转化为从左向右的线性流。
其核心哲学是:每一个点号,都是对数据的一次深度加工或权限切换。
1. 语法分类:属性符号 vs 属性关键字
所有的后置操作现在都遵循统一的格式:Object.Property。
A. 属性符号 (Symbol Properties)
用简洁的符号代表最基础的物理或底层操作。
.?:解包(Option/Result 类型安全解包)。.*:解引用(访问指针指向的目标空间)。.@:取地址(获取当前目标的内存坐标)。
B. 属性关键字 (Keyword Properties)
用语义化的单词描述高级的逻辑契约、权限或转换。
- **
.view/.mut/.take**:所有权与权限切换。 - **
.as/.to**:类型转换(如500.as.u64)。 - **
.fixed/.dynamic**:缓冲区模式适配。
2. 视觉一致性与空格规范
统一使用点号后,代码展现出一种工业级的工整感。为了区分逻辑运算与属性访问,编译器强制执行以下规则:
- 属性流:点号两侧严禁空格(如
p.*),代表紧密的级联关系。 - 二元运算:运算符两侧必须有空格(如
a * b),代表独立的数学逻辑。
3. 从简单到复杂的示例演进
示例 1:基础指针与类型转换
点号引导让原本需要括号的优先级问题消失,代码读起来像一条直线。
rust
fn demo_basic() {
let n i32 = 100
let ptr = n.@ // 获取地址:主体.地址
// 线性流:指针.取值 -> 结果.转为f32 -> 数学运算
let val = ptr.*.as.f32 * 1.5
print(val)
}示例 2:空安全与属性访问
使用 .? 代替复杂的 unwrap 或 if let,保持链条不断裂。
rust
type Student {
name str
age i32
}
fn get_student_age(y ?Student) i32 {
// 逻辑:y 如果有值,则取其 age;否则返回 0
// 注意:.? 也是点号引导的一环
return y.?.age ?? 0
}示例 3:复杂的内存契约级联
这是 .at 语言最具代表性的写法,展示了权限切换与物理操作的无缝串联。
rust
[pub, async]
fn process_sensor(y ?Sensor) {
// 纯线性阅读路径:
// 1. y.? -> 解包传感器
// 2. .mut -> 切换到可变权限
// 3. .buffer -> 访问缓冲区成员
// 4. .@ -> 获取缓冲区地址
// 5. .* -> 访问地址指向的内容
let data = y.?.mut.buffer.@.*
print("Data: " + data.to.str)
}示例 4:终极场景(泛型、数组与适配器)
展示如何用一套 API 通过 .fixed 和 .dynamic 适配不同的硬件平台。
rust
// 统一的写入接口
fn log_data<T>(mut w Writer, val T) {
w.mut.append("Val: ")
w.mut.append(val.to.str)
}
fn main() {
// PC 场景:String 会动态扩容
let out String = ""
log_data(out.mut.dynamic, 404)
// MCU 场景:固定长度数组,零分配
let [mut, shared] buf [32]u8 = [0; 32]
log_data(buf.mut.fixed, 200)
// 即使再复杂的类型,读取逻辑依然清晰
// 解包 -> 只读视图 -> 获取长度 -> 强制转为 u64
let count = out.?.view.len.as.u64
}4. 为什么“统一加点”是更好的设计?
- 心智模型简化:开发者只需要记住“我想对这个东西做什么,就打一个点”。
- IDE 补全友好:当你输入
.后,AutoIDE 可以列出所有可能的符号(?,*,@)和关键字,不需要切换思维。 - 语法扩展性:如果未来需要增加新的操作(如异步等待
.await或解包.opt),它们都能完美融入现有的点号体系中,不会破坏语言的整体感。 - 工整美学:取消了
y?这种“吊在后面”的碎片感,让所有操作符都整齐地挂在点号轴线上。