stage1 部分功能测试00,01,02,06成功

This commit is contained in:
zzy
2026-07-05 18:23:33 +08:00
parent 50b07074fb
commit 51d8510b79
30 changed files with 4336 additions and 59 deletions

43
stage1/test08.spl Normal file
View File

@@ -0,0 +1,43 @@
#[extern("vm")] fn vm_printf(fmt: *u8, ...) void;
type Point = struct {
x: i32,
y: i32,
type Test = enum {
TestEnum0,
TestEnum1,
}
fn init(x: i32, y: i32) Point {
ret Point { .x = x, .y = y };
}
fn dump(self: *Point) {
vm_printf("Point: %d %d\n", self.x, self.y);
}
}
type Expr = enum {
Int: i32,
Add: struct { left: *Expr, right: *Expr },
fn eval(self: *Expr) i32 {
match self {
.Int(val) => return val,
.Add(left, right) => return eval(left) + eval(right),
}
return 0;
}
}
fn main() void {
var p: Point = Point.init(3, 4);
p.dump();
var expr_l := Expr { .Int = 3 };
var expr_r := Expr { .Int = 4 };
var expr := Expr { .Add = { .left = expr_l, .right = expr_r } };
vm_printf("Expr: %d\n", expr.eval());
ret;
}