package token import "../source" import "../symbol" Kind :: enum u8 { Invalid, Eof, Newline, Identifier, Integer, Float, String, Multiline_String, Character, Underscore, Colon, Colon_Colon, Equal, Equal_Equal, Bang, Bang_Equal, Less, Less_Equal, Greater, Greater_Equal, Plus, Minus, Slash, Plus_Equal, Minus_Equal, Star_Equal, Slash_Equal, Dot, Range, Range_Inclusive, Ellipsis, At, Star, Ampersand, Caret, Question, Semicolon, Left_Bracket, Right_Bracket, Left_Paren, Right_Paren, Left_Brace, Right_Brace, Comma, Pipe, Keyword_Func, Keyword_C_Func, Keyword_Struct, Keyword_C_Struct, Keyword_Union, Keyword_Enum, Keyword_Distinct, Keyword_Alias, Keyword_Import, Keyword_Return, Keyword_Mut, Keyword_None, Keyword_Undefined, Keyword_Orelse, Keyword_And, Keyword_Or, Keyword_If, Keyword_While, Keyword_For, Keyword_Break, Keyword_Continue, Keyword_Defer, Keyword_Yield, Keyword_Match, Keyword_Else, Keyword_True, Keyword_False, Keyword_Void, Keyword_Bool, Keyword_Int, Keyword_Float, Keyword_Range, Keyword_I8, Keyword_I16, Keyword_I32, Keyword_I64, Keyword_U8, Keyword_U16, Keyword_U32, Keyword_U64, Keyword_Isize, Keyword_Usize, Keyword_F32, Keyword_F64, Keyword_C_Char, Keyword_C_Schar, Keyword_C_Uchar, Keyword_C_Short, Keyword_C_Ushort, Keyword_C_Int, Keyword_C_Uint, Keyword_C_Long, Keyword_C_Ulong, Keyword_C_Longlong, Keyword_C_Ulonglong, Keyword_C_Float, Keyword_C_Double, Keyword_C_Longdouble, } Token :: struct { span: source.Span, symbol: symbol.Id, diagnostic: source.Diagnostic_Id, kind: Kind, } Stream :: struct { items: [dynamic]Token, }