using NubLang.Tokenization; namespace NubLang.Parsing.Syntax; public abstract record StatementSyntax(IEnumerable Tokens) : SyntaxNode(Tokens); public record StatementExpressionSyntax(IEnumerable Tokens, ExpressionSyntax Expression) : StatementSyntax(Tokens); public record ReturnSyntax(IEnumerable Tokens, Optional Value) : StatementSyntax(Tokens); public record AssignmentSyntax(IEnumerable Tokens, ExpressionSyntax Target, ExpressionSyntax Value) : StatementSyntax(Tokens); public record IfSyntax(IEnumerable Tokens, ExpressionSyntax Condition, BlockSyntax Body, Optional> Else) : StatementSyntax(Tokens); public record VariableDeclarationSyntax(IEnumerable Tokens, string Name, Optional ExplicitType, Optional Assignment) : StatementSyntax(Tokens); public record ContinueSyntax(IEnumerable Tokens) : StatementSyntax(Tokens); public record BreakSyntax(IEnumerable Tokens) : StatementSyntax(Tokens); public record WhileSyntax(IEnumerable Tokens, ExpressionSyntax Condition, BlockSyntax Body) : StatementSyntax(Tokens);