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(string FileName, SourceSpan Span); public record IdentifierToken(string FileName, SourceSpan Span, string Value) : Token(FileName, Span); public record IntLiteralToken(string FileName, SourceSpan Span, string Value, int Base) : Token(FileName, Span); public record StringLiteralToken(string FileName, SourceSpan Span, string Value) : Token(FileName, Span); public record BoolLiteralToken(string FileName, SourceSpan Span, bool Value) : Token(FileName, Span); public record FloatLiteralToken(string FileName, SourceSpan Span, string Value) : Token(FileName, Span); public record SymbolToken(string FileName, SourceSpan Span, Symbol Symbol) : Token(FileName, Span);