From b040f47956db64e9a97e83fbc057f9f364275467 Mon Sep 17 00:00:00 2001 From: Luna Date: Tue, 4 Jun 2019 23:53:55 -0300 Subject: [PATCH] ast: change AstBinOp to use *AstNode instead of AstNode using raw AstNode causes compile-errors due to recursion. --- src/ast.zig | 8 ++++---- src/runner.zig | 13 +++++++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/ast.zig b/src/ast.zig index acc8211..5886e8a 100644 --- a/src/ast.zig +++ b/src/ast.zig @@ -18,8 +18,8 @@ pub const AstBinOp = struct { optype: BinOpType, // TODO expression - left: AstNumber, - right: AstNumber, + left: *AstNode, + right: *AstNode, }; pub const NumberType = enum { @@ -50,9 +50,9 @@ pub fn printNode(stdout: var, node: AstNode) anyerror!void { } try stdout.write(" "); - try printNode(stdout, AstNode{ .Number = bin_op.left }); + try printNode(stdout, bin_op.left.*); try stdout.write(" "); - try printNode(stdout, AstNode{ .Number = bin_op.right }); + try printNode(stdout, bin_op.right.*); try stdout.print(")"); }, .Number => |ast_num| { diff --git a/src/runner.zig b/src/runner.zig index fd624b3..5e0bb1b 100644 --- a/src/runner.zig +++ b/src/runner.zig @@ -46,12 +46,21 @@ pub const Runner = struct { .Program = &[]ast.AstNode{ast.AstNode{ .BinOp = ast.AstBinOp{ .optype = ast.BinOpType.Equality, - .left = ast.AstNumber{ .Integer32 = 30 }, - .right = ast.AstNumber{ .Integer32 = 30 }, + .left = &ast.AstNode{ + .Number = ast.AstNumber{ + .Integer32 = 30, + }, + }, + .right = &ast.AstNode{ + .Number = ast.AstNumber{ + .Integer32 = 30, + }, + }, }, }}, }); try self.stdout.print("\n"); + return Result.Ok; } };