stage1 完成ast 定义sema
This commit is contained in:
@@ -24,8 +24,8 @@ type Expr = enum {
|
||||
|
||||
fn eval(self: *Expr) i32 {
|
||||
match self {
|
||||
.Int[val] => ret val,
|
||||
.Add[.left = left, .right = right] => ret eval(left) + eval(right),
|
||||
.Int[val] => { ret val; },
|
||||
.Add[sub] => { ret eval(sub.left) + eval(sub.right); }
|
||||
}
|
||||
ret 0;
|
||||
}
|
||||
@@ -39,7 +39,7 @@ fn main() i32 {
|
||||
/* enum 方法 + match */
|
||||
var expr_l := Expr { .Int = 3 };
|
||||
var expr_r := Expr { .Int = 4 };
|
||||
var expr := Expr { .Add = { .left = expr_l, .right = expr_r } };
|
||||
var expr := Expr { .Add = .{ .left = expr_l, .right = expr_r } };
|
||||
var result := expr.eval(&expr);
|
||||
vm_printf("eval result: %d\n", result);
|
||||
if result != 7 { ret 1; }
|
||||
|
||||
Reference in New Issue
Block a user