using NubLang.Diagnostics; namespace NubLang.Syntax; public enum Symbol { Func, Return, If, Else, While, Break, Continue, Colon, DoubleColon, OpenParen, CloseParen, OpenBrace, CloseBrace, OpenBracket, CloseBracket, Comma, Period, Assign, Bang, Equal, NotEqual, LessThan, LessThanOrEqual, GreaterThan, GreaterThanOrEqual, Plus, Minus, Star, ForwardSlash, Struct, Caret, Ampersand, Let, Calls, For, In, Extern, Semi, Percent, LeftShift, RightShift, Pipe, And, Or, Module, Import, Export, Defer, At, } public abstract record Token(SourceSpan Span); public record IdentifierToken(SourceSpan Span, string Value) : Token(Span); public record IntLiteralToken(SourceSpan Span, string Value, int Base) : Token(Span); public record StringLiteralToken(SourceSpan Span, string Value) : Token(Span); public record BoolLiteralToken(SourceSpan Span, bool Value) : Token(Span); public record FloatLiteralToken(SourceSpan Span, string Value) : Token(Span); public record SymbolToken(SourceSpan Span, Symbol Symbol) : Token(Span);