#if !defined(FCODER_LEX_GEN_HAND_WRITTEN_TYPES) #define FCODER_LEX_GEN_HAND_WRITTEN_TYPES struct Lexeme_Table_Value{ Token_Base_Kind base_kind; u16 sub_kind; }; struct Lexeme_Table_Lookup{ b32 found_match; Token_Base_Kind base_kind; u16 sub_kind; }; #endif typedef u16 Token_Jai_Kind; enum{ TokenJaiKind_EOF = 0, TokenJaiKind_Whitespace = 1, TokenJaiKind_LexError = 2, TokenJaiKind_BlockComment = 3, TokenJaiKind_LineComment = 4, TokenJaiKind_Backslash = 5, TokenJaiKind_LiteralInteger = 6, TokenJaiKind_LiteralIntegerU = 7, TokenJaiKind_LiteralIntegerL = 8, TokenJaiKind_LiteralIntegerUL = 9, TokenJaiKind_LiteralIntegerLL = 10, TokenJaiKind_LiteralIntegerULL = 11, TokenJaiKind_LiteralIntegerHex = 12, TokenJaiKind_LiteralIntegerHexU = 13, TokenJaiKind_LiteralIntegerHexL = 14, TokenJaiKind_LiteralIntegerHexUL = 15, TokenJaiKind_LiteralIntegerHexLL = 16, TokenJaiKind_LiteralIntegerHexULL = 17, TokenJaiKind_LiteralIntegerOct = 18, TokenJaiKind_LiteralIntegerOctU = 19, TokenJaiKind_LiteralIntegerOctL = 20, TokenJaiKind_LiteralIntegerOctUL = 21, TokenJaiKind_LiteralIntegerOctLL = 22, TokenJaiKind_LiteralIntegerOctULL = 23, TokenJaiKind_LiteralFloat32 = 24, TokenJaiKind_LiteralFloat64 = 25, TokenJaiKind_LiteralString = 26, TokenJaiKind_LiteralStringWide = 27, TokenJaiKind_LiteralStringUTF8 = 28, TokenJaiKind_LiteralStringUTF16 = 29, TokenJaiKind_LiteralStringUTF32 = 30, TokenJaiKind_LiteralStringRaw = 31, TokenJaiKind_LiteralStringWideRaw = 32, TokenJaiKind_LiteralStringUTF8Raw = 33, TokenJaiKind_LiteralStringUTF16Raw = 34, TokenJaiKind_LiteralStringUTF32Raw = 35, TokenJaiKind_LiteralCharacter = 36, TokenJaiKind_LiteralCharacterWide = 37, TokenJaiKind_LiteralCharacterUTF8 = 38, TokenJaiKind_LiteralCharacterUTF16 = 39, TokenJaiKind_LiteralCharacterUTF32 = 40, TokenJaiKind_PPIncludeFile = 41, TokenJaiKind_PPErrorMessage = 42, TokenJaiKind_KeywordGeneric = 43, TokenJaiKind_BraceOp = 44, TokenJaiKind_BraceCl = 45, TokenJaiKind_ParenOp = 46, TokenJaiKind_BrackOp = 47, TokenJaiKind_ParenCl = 48, TokenJaiKind_BrackCl = 49, TokenJaiKind_Semicolon = 50, TokenJaiKind_DotDotDot = 51, TokenJaiKind_Colon = 52, TokenJaiKind_ColonColon = 53, TokenJaiKind_ColonEq = 54, TokenJaiKind_Dot = 55, TokenJaiKind_Plus = 56, TokenJaiKind_Minus = 57, TokenJaiKind_Not = 58, TokenJaiKind_Tilde = 59, TokenJaiKind_Star = 60, TokenJaiKind_And = 61, TokenJaiKind_DotStar = 62, TokenJaiKind_Div = 63, TokenJaiKind_Mod = 64, TokenJaiKind_MinusGrtr = 65, TokenJaiKind_EqGrtr = 66, TokenJaiKind_DotDot = 67, TokenJaiKind_LeftLeft = 68, TokenJaiKind_RightRight = 69, TokenJaiKind_Less = 70, TokenJaiKind_LessEq = 71, TokenJaiKind_Grtr = 72, TokenJaiKind_GrtrEq = 73, TokenJaiKind_EqEq = 74, TokenJaiKind_NotEq = 75, TokenJaiKind_Xor = 76, TokenJaiKind_Or = 77, TokenJaiKind_AndAnd = 78, TokenJaiKind_OrOr = 79, TokenJaiKind_Ternary = 80, TokenJaiKind_Eq = 81, TokenJaiKind_PlusEq = 82, TokenJaiKind_MinusEq = 83, TokenJaiKind_StarEq = 84, TokenJaiKind_DivEq = 85, TokenJaiKind_ModEq = 86, TokenJaiKind_LeftLeftEq = 87, TokenJaiKind_RightRightEq = 88, TokenJaiKind_Comma = 89, TokenJaiKind_AlignOf = 90, TokenJaiKind_Operator = 91, TokenJaiKind_Null = 92, TokenJaiKind_Inline = 93, TokenJaiKind_Using = 94, TokenJaiKind_Any = 95, TokenJaiKind_Void = 96, TokenJaiKind_String = 97, TokenJaiKind_Bool = 98, TokenJaiKind_Float = 99, TokenJaiKind_Float32 = 100, TokenJaiKind_Float64 = 101, TokenJaiKind_Int = 102, TokenJaiKind_U8 = 103, TokenJaiKind_U16 = 104, TokenJaiKind_U32 = 105, TokenJaiKind_U64 = 106, TokenJaiKind_S8 = 107, TokenJaiKind_S16 = 108, TokenJaiKind_S32 = 109, TokenJaiKind_S64 = 110, TokenJaiKind_Struct = 111, TokenJaiKind_Union = 112, TokenJaiKind_Enum = 113, TokenJaiKind_SizeOf = 114, TokenJaiKind_New = 115, TokenJaiKind_Delete = 116, TokenJaiKind_Defer = 117, TokenJaiKind_Autocast = 118, TokenJaiKind_Remove = 119, TokenJaiKind_PushContext = 120, TokenJaiKind_Uninitialized = 121, TokenJaiKind_It = 122, TokenJaiKind_ItIndex = 123, TokenJaiKind_Context = 124, TokenJaiKind_Break = 125, TokenJaiKind_Case = 126, TokenJaiKind_Continue = 127, TokenJaiKind_Default = 128, TokenJaiKind_Do = 129, TokenJaiKind_Else = 130, TokenJaiKind_For = 131, TokenJaiKind_Goto = 132, TokenJaiKind_If = 133, TokenJaiKind_Return = 134, TokenJaiKind_Switch = 135, TokenJaiKind_While = 136, TokenJaiKind_Cast = 137, TokenJaiKind_LiteralTrue = 138, TokenJaiKind_LiteralFalse = 139, TokenJaiKind_Identifier = 140, TokenJaiKind_PPInclude = 141, TokenJaiKind_PPVersion = 142, TokenJaiKind_PPDefine = 143, TokenJaiKind_PPUndef = 144, TokenJaiKind_PPIfDef = 145, TokenJaiKind_PPIfNDef = 146, TokenJaiKind_PPElse = 147, TokenJaiKind_PPElIf = 148, TokenJaiKind_PPEndIf = 149, TokenJaiKind_PPError = 150, TokenJaiKind_PPUsing = 151, TokenJaiKind_PPLine = 152, TokenJaiKind_PPIf = 153, TokenJaiKind_PPImport = 154, TokenJaiKind_PPPragma = 155, TokenJaiKind_PPLoad = 156, TokenJaiKind_PPUnknown = 157, TokenJaiKind_PPDefined = 158, TokenJaiKind_COUNT = 159, }; char *token_jai_kind_names[] = { "EOF", "Whitespace", "LexError", "BlockComment", "LineComment", "Backslash", "LiteralInteger", "LiteralIntegerU", "LiteralIntegerL", "LiteralIntegerUL", "LiteralIntegerLL", "LiteralIntegerULL", "LiteralIntegerHex", "LiteralIntegerHexU", "LiteralIntegerHexL", "LiteralIntegerHexUL", "LiteralIntegerHexLL", "LiteralIntegerHexULL", "LiteralIntegerOct", "LiteralIntegerOctU", "LiteralIntegerOctL", "LiteralIntegerOctUL", "LiteralIntegerOctLL", "LiteralIntegerOctULL", "LiteralFloat32", "LiteralFloat64", "LiteralString", "LiteralStringWide", "LiteralStringUTF8", "LiteralStringUTF16", "LiteralStringUTF32", "LiteralStringRaw", "LiteralStringWideRaw", "LiteralStringUTF8Raw", "LiteralStringUTF16Raw", "LiteralStringUTF32Raw", "LiteralCharacter", "LiteralCharacterWide", "LiteralCharacterUTF8", "LiteralCharacterUTF16", "LiteralCharacterUTF32", "PPIncludeFile", "PPErrorMessage", "KeywordGeneric", "BraceOp", "BraceCl", "ParenOp", "BrackOp", "ParenCl", "BrackCl", "Semicolon", "DotDotDot", "Colon", "ColonColon", "ColonEq", "Dot", "Plus", "Minus", "Not", "Tilde", "Star", "And", "DotStar", "Div", "Mod", "MinusGrtr", "EqGrtr", "DotDot", "LeftLeft", "RightRight", "Less", "LessEq", "Grtr", "GrtrEq", "EqEq", "NotEq", "Xor", "Or", "AndAnd", "OrOr", "Ternary", "Eq", "PlusEq", "MinusEq", "StarEq", "DivEq", "ModEq", "LeftLeftEq", "RightRightEq", "Comma", "AlignOf", "Operator", "Null", "Inline", "Using", "Any", "Void", "String", "Bool", "Float", "Float32", "Float64", "Int", "U8", "U16", "U32", "U64", "S8", "S16", "S32", "S64", "Struct", "Union", "Enum", "SizeOf", "New", "Delete", "Defer", "Autocast", "Remove", "PushContext", "Uninitialized", "It", "ItIndex", "Context", "Break", "Case", "Continue", "Default", "Do", "Else", "For", "Goto", "If", "Return", "Switch", "While", "Cast", "LiteralTrue", "LiteralFalse", "Identifier", "PPInclude", "PPVersion", "PPDefine", "PPUndef", "PPIfDef", "PPIfNDef", "PPElse", "PPElIf", "PPEndIf", "PPError", "PPUsing", "PPLine", "PPIf", "PPImport", "PPPragma", "PPLoad", "PPUnknown", "PPDefined", };