From 5348e2b5c478804931a66c43cf5662a40feade30 Mon Sep 17 00:00:00 2001 From: Luna Date: Sat, 5 Oct 2019 10:37:28 -0300 Subject: [PATCH] remove Stmt as an AST node it was only used for printing purposes, even though we can use the existing printStmt() function. --- src/ast.zig | 3 --- src/ast_printer.zig | 6 ------ src/parsers.zig | 9 ++------- 3 files changed, 2 insertions(+), 16 deletions(-) diff --git a/src/ast.zig b/src/ast.zig index f8136b6..4d6b7b3 100644 --- a/src/ast.zig +++ b/src/ast.zig @@ -18,7 +18,6 @@ pub const NodeType = enum { Struct, Enum, Block, - Stmt, }; pub const ParamDecl = struct { @@ -323,8 +322,6 @@ pub const Node = union(NodeType) { Block: StmtList, - Stmt: *Stmt, - pub fn mkRoot(allocator: *std.mem.Allocator) !*Node { var node = try allocator.create(Node); node.* = Node{ .Root = NodeList.init(allocator) }; diff --git a/src/ast_printer.zig b/src/ast_printer.zig index 181a3c2..36bd72a 100644 --- a/src/ast_printer.zig +++ b/src/ast_printer.zig @@ -99,12 +99,6 @@ pub fn printNode(node: *const Node, ident: usize) void { } }, - .Stmt => |stmt| { - printIdent(ident); - printStmt(ident, stmt); - std.debug.warn("\n"); - }, - .Struct => |struc| { print(ident, "(struct {} (\n", struc.name.lexeme); for (struc.fields.toSlice()) |field| { diff --git a/src/parsers.zig b/src/parsers.zig index 7fa359b..75bedfc 100644 --- a/src/parsers.zig +++ b/src/parsers.zig @@ -236,12 +236,6 @@ pub const Parser = struct { return node; } - fn mkStmt(self: *Parser, stmt: *Stmt) !*ast.Node { - var node = try self.allocator.create(Node); - node.* = Node{ .Stmt = stmt }; - return node; - } - fn mkStmtExpr(self: *Parser, expr: *Expr) !*Stmt { var stmt = try self.allocator.create(Stmt); stmt.* = Stmt{ .Expr = expr }; @@ -634,7 +628,8 @@ pub const Parser = struct { while (self.peek().typ != .RightBrace) { var stmt = try self.parseStmt(); - printer.printNode(try self.mkStmt(stmt), 0); + printer.printStmt(0, stmt); + if (self.check(.Semicolon)) _ = try self.consumeSingle(.Semicolon); try stmts.append(stmt.*);