Skip to content

基础语法速览

只描述语言层面的约定,不涉及编译器实现细节。

源文件结构

  • #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 / continue
  • return 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(...)

计划中的语法拓展

  • 导出/包管理的正式语法(当前仅概念)。
  • 更丰富的字面量:数组、记录、异步相关语法糖。