using Common; using NubLang.Syntax.Tokenization; namespace NubLang.Syntax.Node; public record BoundStatementNode(IEnumerable Tokens) : BoundNode(Tokens); public record BoundStatementExpressionNode(IEnumerable Tokens, BoundExpressionNode Expression) : BoundStatementNode(Tokens); public record BoundReturnNode(IEnumerable Tokens, Optional Value) : BoundStatementNode(Tokens); public record BoundAssignmentNode(IEnumerable Tokens, BoundExpressionNode Target, BoundExpressionNode Value) : BoundStatementNode(Tokens); public record BoundIfNode(IEnumerable Tokens, BoundExpressionNode Condition, BoundBlock Body, Optional> Else) : BoundStatementNode(Tokens); public record BoundVariableDeclarationNode(IEnumerable Tokens, string Name, Optional Assignment, NubType Type) : BoundStatementNode(Tokens); public record BoundContinueNode(IEnumerable Tokens) : BoundStatementNode(Tokens); public record BoundBreakNode(IEnumerable Tokens) : BoundStatementNode(Tokens); public record BoundWhileNode(IEnumerable Tokens, BoundExpressionNode Condition, BoundBlock Body) : BoundStatementNode(Tokens);