基础语法速览
只描述语言层面的约定,不涉及编译器实现细节。
源文件结构
- 以
#import引入模块:#import "std/io" as io; - 顶层允许:函数定义、类/结构体定义、变量定义、导出(未来)。
声明与作用域
- 块级作用域,
{ ... }包围。 let可重赋值,const不可重赋值。- 类型后置:
let n: i64 = 42;,类型可省略,由初始值推断。 - 语句末尾使用分号。
表达式
- 算术/比较/逻辑与常见 C/JS 类似:
+ - * / %,== != < > <= >=,&& || ! - 字符串可使用
+连接。 - 取址/解引用:
addrof(expr)得到i64地址;objof(addr)将整数视作泛型引用,配合as T做类型断言/解引用:(objof(addr) as i32). - 类型断言:
expr as Type,支持整数位宽扩展/截断、指针位宽转换、指针与整数互转。
语句与流程
if (...) { ... } else { ... }while (cond) { ... }for (init; cond; post) { ... }(风格接近 C)break/continuereturn expr;可省略表达式表示返回空。
系统调用
- 内置
syscall(num, arg1..arg6),所有实参会自动提升为i64,不足 6 个自动填 0。 - 传递指针时,先用
addrof取得地址,再按需要(objof(addr)) as i64传入。
模块与命名
#import "std/io" as io;得到模块对象io,其成员通过点号访问:io.output("hi");- 模块内的类/函数通过命名空间访问:
new io.File(...)。
计划中的语法拓展
- 导出/包管理的正式语法(当前仅概念)。
- 更丰富的字面量:数组、记录、异步相关语法糖。