finn-lang/Expr.g.cs

64 lines
1.6 KiB
C#
Raw Normal View History

2023-06-25 01:15:37 +00:00
////////////////////////////////////////////////////////////
// THIS FILE IS GENERATED. //
// DO NOT EDIT. //
////////////////////////////////////////////////////////////
using System;
namespace Finn.AST;
public abstract class Expr {
public abstract T accept<T>(IVisitor<T> visitor);
}
public interface IVisitor<T> {
T visitBinaryExpr(Binary expr);
T visitGroupingExpr(Grouping expr);
T visitLiteralExpr(Literal expr);
T visitUnaryExpr(Unary expr);
2023-06-28 22:26:08 +00:00
T visitIfExpr(If expr);
2023-06-25 01:15:37 +00:00
}
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<T>(IVisitor<T> visitor)
{
return visitor.visitBinaryExpr(this);
}
}
public class Grouping : Expr
{
public required Expr Expression { get; init; }
public override T accept<T>(IVisitor<T> visitor)
{
return visitor.visitGroupingExpr(this);
}
}
public class Literal : Expr
{
public required System.Object Value { get; init; }
public override T accept<T>(IVisitor<T> 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<T>(IVisitor<T> visitor)
{
return visitor.visitUnaryExpr(this);
}
}
2023-06-28 22:26:08 +00:00
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<T>(IVisitor<T> visitor)
{
return visitor.visitIfExpr(this);
}
}