//////////////////////////////////////////////////////////// // THIS FILE IS GENERATED. // // DO NOT EDIT. // //////////////////////////////////////////////////////////// using System; namespace Finn.AST; public abstract class Expr { public abstract T accept(IVisitor visitor); } public interface IVisitor { T visitBinaryExpr(Binary expr); T visitGroupingExpr(Grouping expr); T visitLiteralExpr(Literal expr); T visitUnaryExpr(Unary expr); T visitIfExpr(If expr); } public class Binary : Expr { public required Expr Left { get; init; } public required Token Op { get; init; } public required Expr Right { get; init; } public override T accept(IVisitor visitor) { return visitor.visitBinaryExpr(this); } } public class Grouping : Expr { public required Expr Expression { get; init; } public override T accept(IVisitor visitor) { return visitor.visitGroupingExpr(this); } } public class Literal : Expr { public required System.Object Value { get; init; } public override T accept(IVisitor visitor) { return visitor.visitLiteralExpr(this); } } public class Unary : Expr { public required Token Op { get; init; } public required Expr Right { get; init; } public override T accept(IVisitor visitor) { return visitor.visitUnaryExpr(this); } } public class If : Expr { public required Expr Condition { get; init; } public required Expr Then { get; init; } public required Expr Else { get; init; } public override T accept(IVisitor visitor) { return visitor.visitIfExpr(this); } }