pub const AstNodeType = enum { Program, }; pub const AstNode = union(AstNodeType) { Program: []AstNode, }; pub fn printNode(stdout: var, node: AstNode) anyerror!void { switch (node) { .Program => |children| try printNodes(stdout, children), } } fn printNodes(stdout: var, nodes: []AstNode) anyerror!void { for (nodes) |node| { try printNode(stdout, node); } }