stage1 部分功能测试00,01,02,06成功
This commit is contained in:
32
stage1/test03.spl
Normal file
32
stage1/test03.spl
Normal file
@@ -0,0 +1,32 @@
|
||||
#[extern("vm")] fn vm_printf(fmt: *u8, ...) void;
|
||||
|
||||
type Point = struct {
|
||||
x: i32,
|
||||
y: i32,
|
||||
}
|
||||
|
||||
type Enum = enum {
|
||||
Int,
|
||||
Add
|
||||
}
|
||||
|
||||
type Expr = enum {
|
||||
Int: i32,
|
||||
Add: struct { left: *Expr, right: *Expr },
|
||||
}
|
||||
|
||||
fn eval(e: *Expr) i32 {
|
||||
match e {
|
||||
.Int(val) => return val,
|
||||
.Add(left, right) => return eval(left) + eval(right),
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
fn main() void {
|
||||
var p: Point = Point { .x = 3, .y = 4 };
|
||||
vm_printf("%d %d\n", p.x, p.y);
|
||||
|
||||
vm_printf("basic enum\n", Enum.Int, Enum.Add);
|
||||
ret;
|
||||
}
|
||||
Reference in New Issue
Block a user