20 lines
403 B
Zig
20 lines
403 B
Zig
|
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);
|
||
|
}
|
||
|
}
|