using Common; using Syntax.Tokenization; using Syntax.Typing; namespace Syntax.Parsing.Node; public record StatementNode(IEnumerable Tokens) : Node(Tokens); public record StatementExpressionNode(IEnumerable Tokens, ExpressionNode Expression) : StatementNode(Tokens); public record ReturnNode(IEnumerable Tokens, Optional Value) : StatementNode(Tokens); public record AssignmentNode(IEnumerable Tokens, ExpressionNode Expression, ExpressionNode Value) : StatementNode(Tokens); public record IfNode(IEnumerable Tokens, ExpressionNode Condition, BlockNode Body, Optional> Else) : StatementNode(Tokens); public record VariableDeclarationNode(IEnumerable Tokens, string Name, NubType Type, Optional Assignment) : StatementNode(Tokens); public record ContinueNode(IEnumerable Tokens) : StatementNode(Tokens); public record BreakNode(IEnumerable Tokens) : StatementNode(Tokens); public record WhileNode(IEnumerable Tokens, ExpressionNode Condition, BlockNode Body) : StatementNode(Tokens);