using NubLang.Code; namespace NubLang.Tokenization; public enum LiteralKind { Integer, Float, String, Bool } 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, Enum, } public abstract record Token(string FileName, SourceSpan Span); public record IdentifierToken(string FileName, SourceSpan Span, string Value) : Token(FileName, Span); public record LiteralToken(string FileName, SourceSpan Span, LiteralKind Kind, string Value) : Token(FileName, Span); public record SymbolToken(string FileName, SourceSpan Span, Symbol Symbol) : Token(FileName, Span);