diff --git a/src/expr.zig b/src/expr.zig new file mode 100644 index 0000000..e00e76f --- /dev/null +++ b/src/expr.zig @@ -0,0 +1,28 @@ +const Token = @import("token.zig").Token; + +pub const Binary = struct { + left: Expr, + operator: Token, + right: Expr, +}; + +pub const Grouping = struct { + expression: Expr, +}; + +pub const Unary = struct { + operator: Token, + right: Expr, +}; + +pub const ExprType = enum { + Binary, + Grouping, + Unary, +}; + +pub const Expr = union(ExprType) { + Binary: Binary, + Grouping: Grouping, + Unary: Unary, +};