/* Generated by Nim Compiler v0.10.2 */
/*   (c) 2014 Andreas Rumpf */
/* The generated code is subject to the original license. */
#define NIM_INTBITS 64
#include "nimbase.h"
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tgeneraltokenizer352023 tgeneraltokenizer352023;
typedef struct TNimObject TNimObject;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef NimStringDesc* TY352076[7];
typedef N_NIMCALL_PTR(void, TY3089) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3094) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3089 marker;
TY3094 deepcopy;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  tgeneraltokenizer352023  {
  TNimObject Sup;
NU8 Kind;
NI Start;
NI Length;
NCSTRING Buf;
NI Pos;
NU8 State;
};
typedef NimStringDesc* TY352088[69];
typedef NU8 TY211607[32];
typedef NimStringDesc* TY355119[48];
typedef NimStringDesc* TY355136[77];
typedef NimStringDesc* TY355103[37];
typedef NimStringDesc* TY355153[53];
typedef NimStringDesc* TY352082[33];
N_NIMCALL(NI, nsuCmpIgnoreStyle)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(void, initgeneraltokenizer_352180)(tgeneraltokenizer352023* g, NCSTRING buf);
N_NIMCALL(void, nimnexttoken_352753)(tgeneraltokenizer352023* g);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(NU8, nimgetkeyword_352250)(NimStringDesc* id);
N_NIMCALL(NI, nimnumberpostfix_352420)(tgeneraltokenizer352023* g, NI position);
N_NIMCALL(NI, nimnumber_352573)(tgeneraltokenizer352023* g, NI position);
N_NIMCALL(void, cppnexttoken_355114)(tgeneraltokenizer352023* g);
N_NIMCALL(void, clikenexttoken_354132)(tgeneraltokenizer352023* g, NimStringDesc** keywords, NI keywordsLen0, NU8 flags);
N_NIMCALL(NI, iskeyword_354059)(NimStringDesc** x, NI xLen0, NimStringDesc* y);
N_NIMCALL(NI, cmp_4517)(NimStringDesc* x, NimStringDesc* y);
N_NIMCALL(NI, generalnumber_353705)(tgeneraltokenizer352023* g, NI position);
N_NIMCALL(NI, generalstrlit_353880)(tgeneraltokenizer352023* g, NI position);
N_NIMCALL(void, csharpnexttoken_355131)(tgeneraltokenizer352023* g);
N_NIMCALL(void, cnexttoken_355098)(tgeneraltokenizer352023* g);
N_NIMCALL(void, javanexttoken_355148)(tgeneraltokenizer352023* g);
STRING_LITERAL(TMP2222, "none", 4);
STRING_LITERAL(TMP2223, "Nim", 3);
STRING_LITERAL(TMP2224, "Nimrod", 6);
STRING_LITERAL(TMP2225, "C++", 3);
STRING_LITERAL(TMP2226, "C#", 2);
STRING_LITERAL(TMP2227, "C", 1);
STRING_LITERAL(TMP2228, "Java", 4);
NIM_CONST TY352076 sourcelanguagetostr_352075 = {((NimStringDesc*) &TMP2222),
((NimStringDesc*) &TMP2223),
((NimStringDesc*) &TMP2224),
((NimStringDesc*) &TMP2225),
((NimStringDesc*) &TMP2226),
((NimStringDesc*) &TMP2227),
((NimStringDesc*) &TMP2228)}
;
STRING_LITERAL(TMP2240, "", 0);
STRING_LITERAL(TMP2241, "addr", 4);
STRING_LITERAL(TMP2242, "and", 3);
STRING_LITERAL(TMP2243, "as", 2);
STRING_LITERAL(TMP2244, "asm", 3);
STRING_LITERAL(TMP2245, "atomic", 6);
STRING_LITERAL(TMP2246, "bind", 4);
STRING_LITERAL(TMP2247, "block", 5);
STRING_LITERAL(TMP2248, "break", 5);
STRING_LITERAL(TMP2249, "case", 4);
STRING_LITERAL(TMP2250, "cast", 4);
STRING_LITERAL(TMP2251, "const", 5);
STRING_LITERAL(TMP2252, "continue", 8);
STRING_LITERAL(TMP2253, "converter", 9);
STRING_LITERAL(TMP2254, "defer", 5);
STRING_LITERAL(TMP2255, "discard", 7);
STRING_LITERAL(TMP2256, "distinct", 8);
STRING_LITERAL(TMP2257, "div", 3);
STRING_LITERAL(TMP2258, "do", 2);
STRING_LITERAL(TMP2259, "elif", 4);
STRING_LITERAL(TMP2260, "else", 4);
STRING_LITERAL(TMP2261, "end", 3);
STRING_LITERAL(TMP2262, "enum", 4);
STRING_LITERAL(TMP2263, "except", 6);
STRING_LITERAL(TMP2264, "export", 6);
STRING_LITERAL(TMP2265, "finally", 7);
STRING_LITERAL(TMP2266, "for", 3);
STRING_LITERAL(TMP2267, "from", 4);
STRING_LITERAL(TMP2268, "func", 4);
STRING_LITERAL(TMP2269, "generic", 7);
STRING_LITERAL(TMP2270, "if", 2);
STRING_LITERAL(TMP2271, "import", 6);
STRING_LITERAL(TMP2272, "in", 2);
STRING_LITERAL(TMP2273, "include", 7);
STRING_LITERAL(TMP2274, "interface", 9);
STRING_LITERAL(TMP2275, "is", 2);
STRING_LITERAL(TMP2276, "isnot", 5);
STRING_LITERAL(TMP2277, "iterator", 8);
STRING_LITERAL(TMP2278, "let", 3);
STRING_LITERAL(TMP2279, "macro", 5);
STRING_LITERAL(TMP2280, "method", 6);
STRING_LITERAL(TMP2281, "mixin", 5);
STRING_LITERAL(TMP2282, "mod", 3);
STRING_LITERAL(TMP2283, "nil", 3);
STRING_LITERAL(TMP2284, "not", 3);
STRING_LITERAL(TMP2285, "notin", 5);
STRING_LITERAL(TMP2286, "object", 6);
STRING_LITERAL(TMP2287, "of", 2);
STRING_LITERAL(TMP2288, "or", 2);
STRING_LITERAL(TMP2289, "out", 3);
STRING_LITERAL(TMP2290, "proc", 4);
STRING_LITERAL(TMP2291, "ptr", 3);
STRING_LITERAL(TMP2292, "raise", 5);
STRING_LITERAL(TMP2293, "ref", 3);
STRING_LITERAL(TMP2294, "return", 6);
STRING_LITERAL(TMP2295, "shl", 3);
STRING_LITERAL(TMP2296, "shr", 3);
STRING_LITERAL(TMP2297, "static", 6);
STRING_LITERAL(TMP2298, "template", 8);
STRING_LITERAL(TMP2299, "try", 3);
STRING_LITERAL(TMP2300, "tuple", 5);
STRING_LITERAL(TMP2301, "type", 4);
STRING_LITERAL(TMP2302, "using", 5);
STRING_LITERAL(TMP2303, "var", 3);
STRING_LITERAL(TMP2304, "when", 4);
STRING_LITERAL(TMP2305, "while", 5);
STRING_LITERAL(TMP2306, "with", 4);
STRING_LITERAL(TMP2307, "without", 7);
STRING_LITERAL(TMP2308, "xor", 3);
STRING_LITERAL(TMP2309, "yield", 5);
NIM_CONST TY352088 nimkeywords_352087 = {((NimStringDesc*) &TMP2241),
((NimStringDesc*) &TMP2242),
((NimStringDesc*) &TMP2243),
((NimStringDesc*) &TMP2244),
((NimStringDesc*) &TMP2245),
((NimStringDesc*) &TMP2246),
((NimStringDesc*) &TMP2247),
((NimStringDesc*) &TMP2248),
((NimStringDesc*) &TMP2249),
((NimStringDesc*) &TMP2250),
((NimStringDesc*) &TMP2251),
((NimStringDesc*) &TMP2252),
((NimStringDesc*) &TMP2253),
((NimStringDesc*) &TMP2254),
((NimStringDesc*) &TMP2255),
((NimStringDesc*) &TMP2256),
((NimStringDesc*) &TMP2257),
((NimStringDesc*) &TMP2258),
((NimStringDesc*) &TMP2259),
((NimStringDesc*) &TMP2260),
((NimStringDesc*) &TMP2261),
((NimStringDesc*) &TMP2262),
((NimStringDesc*) &TMP2263),
((NimStringDesc*) &TMP2264),
((NimStringDesc*) &TMP2265),
((NimStringDesc*) &TMP2266),
((NimStringDesc*) &TMP2267),
((NimStringDesc*) &TMP2268),
((NimStringDesc*) &TMP2269),
((NimStringDesc*) &TMP2270),
((NimStringDesc*) &TMP2271),
((NimStringDesc*) &TMP2272),
((NimStringDesc*) &TMP2273),
((NimStringDesc*) &TMP2274),
((NimStringDesc*) &TMP2275),
((NimStringDesc*) &TMP2276),
((NimStringDesc*) &TMP2277),
((NimStringDesc*) &TMP2278),
((NimStringDesc*) &TMP2279),
((NimStringDesc*) &TMP2280),
((NimStringDesc*) &TMP2281),
((NimStringDesc*) &TMP2282),
((NimStringDesc*) &TMP2283),
((NimStringDesc*) &TMP2284),
((NimStringDesc*) &TMP2285),
((NimStringDesc*) &TMP2286),
((NimStringDesc*) &TMP2287),
((NimStringDesc*) &TMP2288),
((NimStringDesc*) &TMP2289),
((NimStringDesc*) &TMP2290),
((NimStringDesc*) &TMP2291),
((NimStringDesc*) &TMP2292),
((NimStringDesc*) &TMP2293),
((NimStringDesc*) &TMP2294),
((NimStringDesc*) &TMP2295),
((NimStringDesc*) &TMP2296),
((NimStringDesc*) &TMP2297),
((NimStringDesc*) &TMP2298),
((NimStringDesc*) &TMP2299),
((NimStringDesc*) &TMP2300),
((NimStringDesc*) &TMP2301),
((NimStringDesc*) &TMP2302),
((NimStringDesc*) &TMP2303),
((NimStringDesc*) &TMP2304),
((NimStringDesc*) &TMP2305),
((NimStringDesc*) &TMP2306),
((NimStringDesc*) &TMP2307),
((NimStringDesc*) &TMP2308),
((NimStringDesc*) &TMP2309)}
;
static NIM_CONST TY211607 TMP2310 = {
0x00, 0x00, 0x00, 0x00, 0x72, 0xEC, 0x00, 0xF4,
0x01, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x50,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}
;
STRING_LITERAL(TMP2312, "auto", 4);
STRING_LITERAL(TMP2313, "catch", 5);
STRING_LITERAL(TMP2314, "char", 4);
STRING_LITERAL(TMP2315, "class", 5);
STRING_LITERAL(TMP2316, "default", 7);
STRING_LITERAL(TMP2317, "delete", 6);
STRING_LITERAL(TMP2318, "double", 6);
STRING_LITERAL(TMP2319, "extern", 6);
STRING_LITERAL(TMP2320, "float", 5);
STRING_LITERAL(TMP2321, "friend", 6);
STRING_LITERAL(TMP2322, "goto", 4);
STRING_LITERAL(TMP2323, "inline", 6);
STRING_LITERAL(TMP2324, "int", 3);
STRING_LITERAL(TMP2325, "long", 4);
STRING_LITERAL(TMP2326, "new", 3);
STRING_LITERAL(TMP2327, "operator", 8);
STRING_LITERAL(TMP2328, "private", 7);
STRING_LITERAL(TMP2329, "protected", 9);
STRING_LITERAL(TMP2330, "public", 6);
STRING_LITERAL(TMP2331, "register", 8);
STRING_LITERAL(TMP2332, "short", 5);
STRING_LITERAL(TMP2333, "signed", 6);
STRING_LITERAL(TMP2334, "sizeof", 6);
STRING_LITERAL(TMP2335, "struct", 6);
STRING_LITERAL(TMP2336, "switch", 6);
STRING_LITERAL(TMP2337, "this", 4);
STRING_LITERAL(TMP2338, "throw", 5);
STRING_LITERAL(TMP2339, "typedef", 7);
STRING_LITERAL(TMP2340, "union", 5);
STRING_LITERAL(TMP2341, "unsigned", 8);
STRING_LITERAL(TMP2342, "virtual", 7);
STRING_LITERAL(TMP2343, "void", 4);
STRING_LITERAL(TMP2344, "volatile", 8);
NIM_CONST TY355119 TMP2311 = {((NimStringDesc*) &TMP2244),
((NimStringDesc*) &TMP2312),
((NimStringDesc*) &TMP2248),
((NimStringDesc*) &TMP2249),
((NimStringDesc*) &TMP2313),
((NimStringDesc*) &TMP2314),
((NimStringDesc*) &TMP2315),
((NimStringDesc*) &TMP2251),
((NimStringDesc*) &TMP2252),
((NimStringDesc*) &TMP2316),
((NimStringDesc*) &TMP2317),
((NimStringDesc*) &TMP2258),
((NimStringDesc*) &TMP2318),
((NimStringDesc*) &TMP2260),
((NimStringDesc*) &TMP2262),
((NimStringDesc*) &TMP2319),
((NimStringDesc*) &TMP2320),
((NimStringDesc*) &TMP2266),
((NimStringDesc*) &TMP2321),
((NimStringDesc*) &TMP2322),
((NimStringDesc*) &TMP2270),
((NimStringDesc*) &TMP2323),
((NimStringDesc*) &TMP2324),
((NimStringDesc*) &TMP2325),
((NimStringDesc*) &TMP2326),
((NimStringDesc*) &TMP2327),
((NimStringDesc*) &TMP2328),
((NimStringDesc*) &TMP2329),
((NimStringDesc*) &TMP2330),
((NimStringDesc*) &TMP2331),
((NimStringDesc*) &TMP2294),
((NimStringDesc*) &TMP2332),
((NimStringDesc*) &TMP2333),
((NimStringDesc*) &TMP2334),
((NimStringDesc*) &TMP2297),
((NimStringDesc*) &TMP2335),
((NimStringDesc*) &TMP2336),
((NimStringDesc*) &TMP2298),
((NimStringDesc*) &TMP2337),
((NimStringDesc*) &TMP2338),
((NimStringDesc*) &TMP2299),
((NimStringDesc*) &TMP2339),
((NimStringDesc*) &TMP2340),
((NimStringDesc*) &TMP2341),
((NimStringDesc*) &TMP2342),
((NimStringDesc*) &TMP2343),
((NimStringDesc*) &TMP2344),
((NimStringDesc*) &TMP2305)}
;
STRING_LITERAL(TMP2346, "abstract", 8);
STRING_LITERAL(TMP2347, "base", 4);
STRING_LITERAL(TMP2348, "bool", 4);
STRING_LITERAL(TMP2349, "byte", 4);
STRING_LITERAL(TMP2350, "checked", 7);
STRING_LITERAL(TMP2351, "decimal", 7);
STRING_LITERAL(TMP2352, "delegate", 8);
STRING_LITERAL(TMP2353, "event", 5);
STRING_LITERAL(TMP2354, "explicit", 8);
STRING_LITERAL(TMP2355, "false", 5);
STRING_LITERAL(TMP2356, "fixed", 5);
STRING_LITERAL(TMP2357, "foreach", 7);
STRING_LITERAL(TMP2358, "implicit", 8);
STRING_LITERAL(TMP2359, "internal", 8);
STRING_LITERAL(TMP2360, "lock", 4);
STRING_LITERAL(TMP2361, "namespace", 9);
STRING_LITERAL(TMP2362, "null", 4);
STRING_LITERAL(TMP2363, "override", 8);
STRING_LITERAL(TMP2364, "params", 6);
STRING_LITERAL(TMP2365, "readonly", 8);
STRING_LITERAL(TMP2366, "sbyte", 5);
STRING_LITERAL(TMP2367, "sealed", 6);
STRING_LITERAL(TMP2368, "stackalloc", 10);
STRING_LITERAL(TMP2369, "string", 6);
STRING_LITERAL(TMP2370, "true", 4);
STRING_LITERAL(TMP2371, "typeof", 6);
STRING_LITERAL(TMP2372, "uint", 4);
STRING_LITERAL(TMP2373, "ulong", 5);
STRING_LITERAL(TMP2374, "unchecked", 9);
STRING_LITERAL(TMP2375, "unsafe", 6);
STRING_LITERAL(TMP2376, "ushort", 6);
NIM_CONST TY355136 TMP2345 = {((NimStringDesc*) &TMP2346),
((NimStringDesc*) &TMP2243),
((NimStringDesc*) &TMP2347),
((NimStringDesc*) &TMP2348),
((NimStringDesc*) &TMP2248),
((NimStringDesc*) &TMP2349),
((NimStringDesc*) &TMP2249),
((NimStringDesc*) &TMP2313),
((NimStringDesc*) &TMP2314),
((NimStringDesc*) &TMP2350),
((NimStringDesc*) &TMP2315),
((NimStringDesc*) &TMP2251),
((NimStringDesc*) &TMP2252),
((NimStringDesc*) &TMP2351),
((NimStringDesc*) &TMP2316),
((NimStringDesc*) &TMP2352),
((NimStringDesc*) &TMP2258),
((NimStringDesc*) &TMP2318),
((NimStringDesc*) &TMP2260),
((NimStringDesc*) &TMP2262),
((NimStringDesc*) &TMP2353),
((NimStringDesc*) &TMP2354),
((NimStringDesc*) &TMP2319),
((NimStringDesc*) &TMP2355),
((NimStringDesc*) &TMP2265),
((NimStringDesc*) &TMP2356),
((NimStringDesc*) &TMP2320),
((NimStringDesc*) &TMP2266),
((NimStringDesc*) &TMP2357),
((NimStringDesc*) &TMP2322),
((NimStringDesc*) &TMP2270),
((NimStringDesc*) &TMP2358),
((NimStringDesc*) &TMP2272),
((NimStringDesc*) &TMP2324),
((NimStringDesc*) &TMP2274),
((NimStringDesc*) &TMP2359),
((NimStringDesc*) &TMP2275),
((NimStringDesc*) &TMP2360),
((NimStringDesc*) &TMP2325),
((NimStringDesc*) &TMP2361),
((NimStringDesc*) &TMP2326),
((NimStringDesc*) &TMP2362),
((NimStringDesc*) &TMP2286),
((NimStringDesc*) &TMP2327),
((NimStringDesc*) &TMP2289),
((NimStringDesc*) &TMP2363),
((NimStringDesc*) &TMP2364),
((NimStringDesc*) &TMP2328),
((NimStringDesc*) &TMP2329),
((NimStringDesc*) &TMP2330),
((NimStringDesc*) &TMP2365),
((NimStringDesc*) &TMP2293),
((NimStringDesc*) &TMP2294),
((NimStringDesc*) &TMP2366),
((NimStringDesc*) &TMP2367),
((NimStringDesc*) &TMP2332),
((NimStringDesc*) &TMP2334),
((NimStringDesc*) &TMP2368),
((NimStringDesc*) &TMP2297),
((NimStringDesc*) &TMP2369),
((NimStringDesc*) &TMP2335),
((NimStringDesc*) &TMP2336),
((NimStringDesc*) &TMP2337),
((NimStringDesc*) &TMP2338),
((NimStringDesc*) &TMP2370),
((NimStringDesc*) &TMP2299),
((NimStringDesc*) &TMP2371),
((NimStringDesc*) &TMP2372),
((NimStringDesc*) &TMP2373),
((NimStringDesc*) &TMP2374),
((NimStringDesc*) &TMP2375),
((NimStringDesc*) &TMP2376),
((NimStringDesc*) &TMP2302),
((NimStringDesc*) &TMP2342),
((NimStringDesc*) &TMP2343),
((NimStringDesc*) &TMP2344),
((NimStringDesc*) &TMP2305)}
;
STRING_LITERAL(TMP2378, "_Bool", 5);
STRING_LITERAL(TMP2379, "_Complex", 8);
STRING_LITERAL(TMP2380, "_Imaginary", 10);
STRING_LITERAL(TMP2381, "restrict", 8);
NIM_CONST TY355103 TMP2377 = {((NimStringDesc*) &TMP2378),
((NimStringDesc*) &TMP2379),
((NimStringDesc*) &TMP2380),
((NimStringDesc*) &TMP2312),
((NimStringDesc*) &TMP2248),
((NimStringDesc*) &TMP2249),
((NimStringDesc*) &TMP2314),
((NimStringDesc*) &TMP2251),
((NimStringDesc*) &TMP2252),
((NimStringDesc*) &TMP2316),
((NimStringDesc*) &TMP2258),
((NimStringDesc*) &TMP2318),
((NimStringDesc*) &TMP2260),
((NimStringDesc*) &TMP2262),
((NimStringDesc*) &TMP2319),
((NimStringDesc*) &TMP2320),
((NimStringDesc*) &TMP2266),
((NimStringDesc*) &TMP2322),
((NimStringDesc*) &TMP2270),
((NimStringDesc*) &TMP2323),
((NimStringDesc*) &TMP2324),
((NimStringDesc*) &TMP2325),
((NimStringDesc*) &TMP2331),
((NimStringDesc*) &TMP2381),
((NimStringDesc*) &TMP2294),
((NimStringDesc*) &TMP2332),
((NimStringDesc*) &TMP2333),
((NimStringDesc*) &TMP2334),
((NimStringDesc*) &TMP2297),
((NimStringDesc*) &TMP2335),
((NimStringDesc*) &TMP2336),
((NimStringDesc*) &TMP2339),
((NimStringDesc*) &TMP2340),
((NimStringDesc*) &TMP2341),
((NimStringDesc*) &TMP2343),
((NimStringDesc*) &TMP2344),
((NimStringDesc*) &TMP2305)}
;
STRING_LITERAL(TMP2383, "assert", 6);
STRING_LITERAL(TMP2384, "boolean", 7);
STRING_LITERAL(TMP2385, "extends", 7);
STRING_LITERAL(TMP2386, "final", 5);
STRING_LITERAL(TMP2387, "implements", 10);
STRING_LITERAL(TMP2388, "instanceof", 10);
STRING_LITERAL(TMP2389, "native", 6);
STRING_LITERAL(TMP2390, "package", 7);
STRING_LITERAL(TMP2391, "strictfp", 8);
STRING_LITERAL(TMP2392, "super", 5);
STRING_LITERAL(TMP2393, "synchronized", 12);
STRING_LITERAL(TMP2394, "throws", 6);
STRING_LITERAL(TMP2395, "transient", 9);
NIM_CONST TY355153 TMP2382 = {((NimStringDesc*) &TMP2346),
((NimStringDesc*) &TMP2383),
((NimStringDesc*) &TMP2384),
((NimStringDesc*) &TMP2248),
((NimStringDesc*) &TMP2349),
((NimStringDesc*) &TMP2249),
((NimStringDesc*) &TMP2313),
((NimStringDesc*) &TMP2314),
((NimStringDesc*) &TMP2315),
((NimStringDesc*) &TMP2251),
((NimStringDesc*) &TMP2252),
((NimStringDesc*) &TMP2316),
((NimStringDesc*) &TMP2258),
((NimStringDesc*) &TMP2318),
((NimStringDesc*) &TMP2260),
((NimStringDesc*) &TMP2262),
((NimStringDesc*) &TMP2385),
((NimStringDesc*) &TMP2355),
((NimStringDesc*) &TMP2386),
((NimStringDesc*) &TMP2265),
((NimStringDesc*) &TMP2320),
((NimStringDesc*) &TMP2266),
((NimStringDesc*) &TMP2322),
((NimStringDesc*) &TMP2270),
((NimStringDesc*) &TMP2387),
((NimStringDesc*) &TMP2271),
((NimStringDesc*) &TMP2388),
((NimStringDesc*) &TMP2324),
((NimStringDesc*) &TMP2274),
((NimStringDesc*) &TMP2325),
((NimStringDesc*) &TMP2389),
((NimStringDesc*) &TMP2326),
((NimStringDesc*) &TMP2362),
((NimStringDesc*) &TMP2390),
((NimStringDesc*) &TMP2328),
((NimStringDesc*) &TMP2329),
((NimStringDesc*) &TMP2330),
((NimStringDesc*) &TMP2294),
((NimStringDesc*) &TMP2332),
((NimStringDesc*) &TMP2297),
((NimStringDesc*) &TMP2391),
((NimStringDesc*) &TMP2392),
((NimStringDesc*) &TMP2336),
((NimStringDesc*) &TMP2393),
((NimStringDesc*) &TMP2337),
((NimStringDesc*) &TMP2338),
((NimStringDesc*) &TMP2394),
((NimStringDesc*) &TMP2395),
((NimStringDesc*) &TMP2370),
((NimStringDesc*) &TMP2299),
((NimStringDesc*) &TMP2343),
((NimStringDesc*) &TMP2344),
((NimStringDesc*) &TMP2305)}
;
STRING_LITERAL(TMP2398, "Eof", 3);
STRING_LITERAL(TMP2399, "None", 4);
STRING_LITERAL(TMP2400, "Whitespace", 10);
STRING_LITERAL(TMP2401, "DecNumber", 9);
STRING_LITERAL(TMP2402, "BinNumber", 9);
STRING_LITERAL(TMP2403, "HexNumber", 9);
STRING_LITERAL(TMP2404, "OctNumber", 9);
STRING_LITERAL(TMP2405, "FloatNumber", 11);
STRING_LITERAL(TMP2406, "Identifier", 10);
STRING_LITERAL(TMP2407, "Keyword", 7);
STRING_LITERAL(TMP2408, "StringLit", 9);
STRING_LITERAL(TMP2409, "LongStringLit", 13);
STRING_LITERAL(TMP2410, "CharLit", 7);
STRING_LITERAL(TMP2411, "EscapeSequence", 14);
STRING_LITERAL(TMP2412, "Operator", 8);
STRING_LITERAL(TMP2413, "Punctuation", 11);
STRING_LITERAL(TMP2414, "Comment", 7);
STRING_LITERAL(TMP2415, "LongComment", 11);
STRING_LITERAL(TMP2416, "RegularExpression", 17);
STRING_LITERAL(TMP2417, "TagStart", 8);
STRING_LITERAL(TMP2418, "TagEnd", 6);
STRING_LITERAL(TMP2419, "Key", 3);
STRING_LITERAL(TMP2420, "Value", 5);
STRING_LITERAL(TMP2421, "RawData", 7);
STRING_LITERAL(TMP2422, "Assembler", 9);
STRING_LITERAL(TMP2423, "Preprocessor", 12);
STRING_LITERAL(TMP2424, "Directive", 9);
STRING_LITERAL(TMP2425, "Command", 7);
STRING_LITERAL(TMP2426, "Rule", 4);
STRING_LITERAL(TMP2427, "Hyperlink", 9);
STRING_LITERAL(TMP2428, "Label", 5);
STRING_LITERAL(TMP2429, "Reference", 9);
STRING_LITERAL(TMP2430, "Other", 5);
NIM_CONST TY352082 tokenclasstostr_352081 = {((NimStringDesc*) &TMP2398),
((NimStringDesc*) &TMP2399),
((NimStringDesc*) &TMP2400),
((NimStringDesc*) &TMP2401),
((NimStringDesc*) &TMP2402),
((NimStringDesc*) &TMP2403),
((NimStringDesc*) &TMP2404),
((NimStringDesc*) &TMP2405),
((NimStringDesc*) &TMP2406),
((NimStringDesc*) &TMP2407),
((NimStringDesc*) &TMP2408),
((NimStringDesc*) &TMP2409),
((NimStringDesc*) &TMP2410),
((NimStringDesc*) &TMP2411),
((NimStringDesc*) &TMP2412),
((NimStringDesc*) &TMP2413),
((NimStringDesc*) &TMP2414),
((NimStringDesc*) &TMP2415),
((NimStringDesc*) &TMP2416),
((NimStringDesc*) &TMP2417),
((NimStringDesc*) &TMP2418),
((NimStringDesc*) &TMP2419),
((NimStringDesc*) &TMP2420),
((NimStringDesc*) &TMP2421),
((NimStringDesc*) &TMP2422),
((NimStringDesc*) &TMP2423),
((NimStringDesc*) &TMP2424),
((NimStringDesc*) &TMP2425),
((NimStringDesc*) &TMP2426),
((NimStringDesc*) &TMP2427),
((NimStringDesc*) &TMP2428),
((NimStringDesc*) &TMP2429),
((NimStringDesc*) &TMP2430)}
;
extern TNimType NTI3211; /* RootObj */
TNimType NTI352023; /* TGeneralTokenizer */
TNimType NTI352021; /* TTokenClass */
extern TNimType NTI108; /* int */
extern TNimType NTI151; /* cstring */

N_NIMCALL(NU8, getsourcelanguage_352093)(NimStringDesc* name) {
	NU8 result;
	result = 0;
	{
		NU8 i_352158;
		NU8 res_352163;
		i_352158 = 0;
		res_352163 = ((NU8) 1);
		{
			while (1) {
				if (!(res_352163 <= ((NU8) 6))) goto LA3;
				i_352158 = res_352163;
				{
					NI LOC6;
					LOC6 = 0;
					LOC6 = nsuCmpIgnoreStyle(name, sourcelanguagetostr_352075[(i_352158)- 0]);
					if (!(LOC6 == 0)) goto LA7;
					result = i_352158;
					goto BeforeRet;
				}
				LA7: ;
				res_352163 += 1;
			} LA3: ;
		}
	}
	result = ((NU8) 0);
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, initgeneraltokenizer_352180)(tgeneraltokenizer352023* g, NCSTRING buf) {
	NI pos;
	(*g).Buf = buf;
	(*g).Kind = ((NU8) 0);
	(*g).Start = 0;
	(*g).Length = 0;
	(*g).State = ((NU8) 0);
	pos = 0;
	{
		while (1) {
			if (!(((NU8)((*g).Buf[pos])) == ((NU8)(32)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(9)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(13)))) goto LA2;
			pos += 1;
		} LA2: ;
	}
	(*g).Pos = pos;
}

N_NIMCALL(void, initgeneraltokenizer_352229)(tgeneraltokenizer352023* g, NimStringDesc* buf) {
	initgeneraltokenizer_352180(g, buf->data);
}

N_NIMCALL(NU8, nimgetkeyword_352250)(NimStringDesc* id) {
	NU8 result;
	result = 0;
	{
		NimStringDesc* k_352300;
		NI i_352404;
		k_352300 = 0;
		i_352404 = 0;
		{
			if (!(((NI) (i_352404)) <= 68)) goto LA4;
			{
				while (1) {
					k_352300 = nimkeywords_352087[(i_352404)- 0];
					{
						NI LOC10;
						LOC10 = 0;
						LOC10 = nsuCmpIgnoreStyle(id, k_352300);
						if (!(LOC10 == 0)) goto LA11;
						result = ((NU8) 9);
						goto BeforeRet;
					}
					LA11: ;
					{
						if (!(68 <= ((NI) (i_352404)))) goto LA15;
						goto LA6;
					}
					LA15: ;
					i_352404 += 1;
				}
			} LA6: ;
		}
		LA4: ;
	}
	result = ((NU8) 8);
	BeforeRet: ;
	return result;
}

N_NIMCALL(NI, nimnumberpostfix_352420)(tgeneraltokenizer352023* g, NI position) {
	NI result;
	NI pos;
	result = 0;
	pos = position;
	{
		if (!((NU8)((*g).Buf[pos]) == (NU8)(39))) goto LA3;
		pos += 1;
		switch (((NU8)((*g).Buf[pos]))) {
		case 102:
		case 70:
		{
			(*g).Kind = ((NU8) 7);
			pos += 1;
			{
				if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)))) goto LA8;
				pos += 1;
			}
			LA8: ;
			{
				if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)))) goto LA12;
				pos += 1;
			}
			LA12: ;
		}
		break;
		case 105:
		case 73:
		{
			pos += 1;
			{
				if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)))) goto LA17;
				pos += 1;
			}
			LA17: ;
			{
				if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)))) goto LA21;
				pos += 1;
			}
			LA21: ;
		}
		break;
		default:
		{
		}
		break;
		}
	}
	LA3: ;
	result = pos;
	return result;
}

N_NIMCALL(NI, nimnumber_352573)(tgeneraltokenizer352023* g, NI position) {
	NI result;
	NI pos;
	result = 0;
	pos = position;
	(*g).Kind = ((NU8) 3);
	{
		while (1) {
			if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)) || ((NU8)((*g).Buf[pos])) == ((NU8)(95)))) goto LA2;
			pos += 1;
		} LA2: ;
	}
	{
		if (!((NU8)((*g).Buf[pos]) == (NU8)(46))) goto LA5;
		(*g).Kind = ((NU8) 7);
		pos += 1;
		{
			while (1) {
				if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)) || ((NU8)((*g).Buf[pos])) == ((NU8)(95)))) goto LA8;
				pos += 1;
			} LA8: ;
		}
	}
	LA5: ;
	{
		if (!(((NU8)((*g).Buf[pos])) == ((NU8)(101)) || ((NU8)((*g).Buf[pos])) == ((NU8)(69)))) goto LA11;
		(*g).Kind = ((NU8) 7);
		pos += 1;
		{
			if (!(((NU8)((*g).Buf[pos])) == ((NU8)(43)) || ((NU8)((*g).Buf[pos])) == ((NU8)(45)))) goto LA15;
			pos += 1;
		}
		LA15: ;
		{
			while (1) {
				if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)) || ((NU8)((*g).Buf[pos])) == ((NU8)(95)))) goto LA18;
				pos += 1;
			} LA18: ;
		}
	}
	LA11: ;
	result = nimnumberpostfix_352420(g, pos);
	return result;
}

N_NIMCALL(void, nimnexttoken_352753)(tgeneraltokenizer352023* g) {
	NI pos;
	pos = (*g).Pos;
	(*g).Start = (*g).Pos;
	{
		if (!((*g).State == ((NU8) 10))) goto LA3;
		(*g).Kind = ((NU8) 10);
		{
			while (1) {
				switch (((NU8)((*g).Buf[pos]))) {
				case 92:
				{
					(*g).Kind = ((NU8) 13);
					pos += 1;
					switch (((NU8)((*g).Buf[pos]))) {
					case 120:
					case 88:
					{
						pos += 1;
						{
							if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(65)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(70)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(97)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(102)) || ((NU8)((*g).Buf[pos])) == ((NU8)(95)))) goto LA11;
							pos += 1;
						}
						LA11: ;
						{
							if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(65)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(70)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(97)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(102)) || ((NU8)((*g).Buf[pos])) == ((NU8)(95)))) goto LA15;
							pos += 1;
						}
						LA15: ;
					}
					break;
					case 48 ... 57:
					{
						{
							while (1) {
								if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)))) goto LA19;
								pos += 1;
							} LA19: ;
						}
					}
					break;
					case 0:
					{
						(*g).State = ((NU8) 1);
					}
					break;
					default:
					{
						pos += 1;
					}
					break;
					}
					goto LA5;
				}
				break;
				case 0:
				case 13:
				case 10:
				{
					(*g).State = ((NU8) 1);
					goto LA5;
				}
				break;
				case 34:
				{
					pos += 1;
					(*g).State = ((NU8) 1);
					goto LA5;
				}
				break;
				default:
				{
					pos += 1;
				}
				break;
				}
			}
		} LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		switch (((NU8)((*g).Buf[pos]))) {
		case 32:
		case 9 ... 13:
		{
			(*g).Kind = ((NU8) 2);
			{
				while (1) {
					if (!(((NU8)((*g).Buf[pos])) == ((NU8)(32)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(9)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(13)))) goto LA28;
					pos += 1;
				} LA28: ;
			}
		}
		break;
		case 35:
		{
			(*g).Kind = ((NU8) 16);
			{
				while (1) {
					if (!!((((NU8)((*g).Buf[pos])) == ((NU8)(0)) || ((NU8)((*g).Buf[pos])) == ((NU8)(10)) || ((NU8)((*g).Buf[pos])) == ((NU8)(13))))) goto LA31;
					pos += 1;
				} LA31: ;
			}
		}
		break;
		case 97 ... 122:
		case 65 ... 90:
		case 95:
		case 128 ... 255:
		{
			NimStringDesc* id;
			id = copyString(((NimStringDesc*) &TMP2240));
			{
				while (1) {
					if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(65)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(90)) || ((NU8)((*g).Buf[pos])) == ((NU8)(95)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(97)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(122)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(128)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(255)))) goto LA34;
					id = addChar(id, (*g).Buf[pos]);
					pos += 1;
				} LA34: ;
			}
			{
				if (!((NU8)((*g).Buf[pos]) == (NU8)(34))) goto LA37;
				{
					NIM_BOOL LOC41;
					LOC41 = 0;
					LOC41 = ((NU8)((*g).Buf[(NI64)(pos + 1)]) == (NU8)(34));
					if (!(LOC41)) goto LA42;
					LOC41 = ((NU8)((*g).Buf[(NI64)(pos + 2)]) == (NU8)(34));
					LA42: ;
					if (!LOC41) goto LA43;
					pos += 3;
					(*g).Kind = ((NU8) 11);
					{
						while (1) {
							switch (((NU8)((*g).Buf[pos]))) {
							case 0:
							{
								goto LA45;
							}
							break;
							case 34:
							{
								pos += 1;
								{
									NIM_BOOL LOC51;
									NIM_BOOL LOC52;
									LOC51 = 0;
									LOC52 = 0;
									LOC52 = ((NU8)((*g).Buf[pos]) == (NU8)(34));
									if (!(LOC52)) goto LA53;
									LOC52 = ((NU8)((*g).Buf[(NI64)(pos + 1)]) == (NU8)(34));
									LA53: ;
									LOC51 = LOC52;
									if (!(LOC51)) goto LA54;
									LOC51 = !(((NU8)((*g).Buf[(NI64)(pos + 2)]) == (NU8)(34)));
									LA54: ;
									if (!LOC51) goto LA55;
									pos += 2;
									goto LA45;
								}
								LA55: ;
							}
							break;
							default:
							{
								pos += 1;
							}
							break;
							}
						}
					} LA45: ;
				}
				goto LA39;
				LA43: ;
				{
					(*g).Kind = ((NU8) 23);
					pos += 1;
					{
						while (1) {
							if (!!((((NU8)((*g).Buf[pos])) == ((NU8)(0)) || ((NU8)((*g).Buf[pos])) == ((NU8)(10)) || ((NU8)((*g).Buf[pos])) == ((NU8)(13))))) goto LA60;
							{
								NIM_BOOL LOC63;
								LOC63 = 0;
								LOC63 = ((NU8)((*g).Buf[pos]) == (NU8)(34));
								if (!(LOC63)) goto LA64;
								LOC63 = !(((NU8)((*g).Buf[(NI64)(pos + 1)]) == (NU8)(34)));
								LA64: ;
								if (!LOC63) goto LA65;
								goto LA59;
							}
							LA65: ;
							pos += 1;
						} LA60: ;
					} LA59: ;
					{
						if (!((NU8)((*g).Buf[pos]) == (NU8)(34))) goto LA69;
						pos += 1;
					}
					LA69: ;
				}
				LA39: ;
			}
			goto LA35;
			LA37: ;
			{
				(*g).Kind = nimgetkeyword_352250(id);
			}
			LA35: ;
		}
		break;
		case 48:
		{
			pos += 1;
			switch (((NU8)((*g).Buf[pos]))) {
			case 98:
			case 66:
			{
				pos += 1;
				{
					while (1) {
						if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(49)) || ((NU8)((*g).Buf[pos])) == ((NU8)(95)))) goto LA75;
						pos += 1;
					} LA75: ;
				}
				pos = nimnumberpostfix_352420(g, pos);
			}
			break;
			case 120:
			case 88:
			{
				pos += 1;
				{
					while (1) {
						if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(65)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(70)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(97)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(102)) || ((NU8)((*g).Buf[pos])) == ((NU8)(95)))) goto LA78;
						pos += 1;
					} LA78: ;
				}
				pos = nimnumberpostfix_352420(g, pos);
			}
			break;
			case 111:
			case 79:
			{
				pos += 1;
				{
					while (1) {
						if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(55)) || ((NU8)((*g).Buf[pos])) == ((NU8)(95)))) goto LA81;
						pos += 1;
					} LA81: ;
				}
				pos = nimnumberpostfix_352420(g, pos);
			}
			break;
			default:
			{
				pos = nimnumber_352573(g, pos);
			}
			break;
			}
		}
		break;
		case 49 ... 57:
		{
			pos = nimnumber_352573(g, pos);
		}
		break;
		case 39:
		{
			pos += 1;
			(*g).Kind = ((NU8) 12);
			{
				while (1) {
					switch (((NU8)((*g).Buf[pos]))) {
					case 0:
					case 13:
					case 10:
					{
						goto LA85;
					}
					break;
					case 39:
					{
						pos += 1;
						goto LA85;
					}
					break;
					case 92:
					{
						pos += 2;
					}
					break;
					default:
					{
						pos += 1;
					}
					break;
					}
				}
			} LA85: ;
		}
		break;
		case 34:
		{
			pos += 1;
			{
				NIM_BOOL LOC94;
				LOC94 = 0;
				LOC94 = ((NU8)((*g).Buf[pos]) == (NU8)(34));
				if (!(LOC94)) goto LA95;
				LOC94 = ((NU8)((*g).Buf[(NI64)(pos + 1)]) == (NU8)(34));
				LA95: ;
				if (!LOC94) goto LA96;
				pos += 2;
				(*g).Kind = ((NU8) 11);
				{
					while (1) {
						switch (((NU8)((*g).Buf[pos]))) {
						case 0:
						{
							goto LA98;
						}
						break;
						case 34:
						{
							pos += 1;
							{
								NIM_BOOL LOC104;
								NIM_BOOL LOC105;
								LOC104 = 0;
								LOC105 = 0;
								LOC105 = ((NU8)((*g).Buf[pos]) == (NU8)(34));
								if (!(LOC105)) goto LA106;
								LOC105 = ((NU8)((*g).Buf[(NI64)(pos + 1)]) == (NU8)(34));
								LA106: ;
								LOC104 = LOC105;
								if (!(LOC104)) goto LA107;
								LOC104 = !(((NU8)((*g).Buf[(NI64)(pos + 2)]) == (NU8)(34)));
								LA107: ;
								if (!LOC104) goto LA108;
								pos += 2;
								goto LA98;
							}
							LA108: ;
						}
						break;
						default:
						{
							pos += 1;
						}
						break;
						}
					}
				} LA98: ;
			}
			goto LA92;
			LA96: ;
			{
				(*g).Kind = ((NU8) 10);
				{
					while (1) {
						switch (((NU8)((*g).Buf[pos]))) {
						case 0:
						case 13:
						case 10:
						{
							goto LA112;
						}
						break;
						case 34:
						{
							pos += 1;
							goto LA112;
						}
						break;
						case 92:
						{
							(*g).State = (*g).Kind;
							goto LA112;
						}
						break;
						default:
						{
							pos += 1;
						}
						break;
						}
					}
				} LA112: ;
			}
			LA92: ;
		}
		break;
		case 40:
		case 41:
		case 91:
		case 93:
		case 123:
		case 125:
		case 96:
		case 58:
		case 44:
		case 59:
		{
			pos += 1;
			(*g).Kind = ((NU8) 15);
		}
		break;
		case 0:
		{
			(*g).Kind = ((NU8) 0);
		}
		break;
		default:
		{
			{
				if (!((TMP2310[((NU8)((*g).Buf[pos]))/8] &(1<<(((NU8)((*g).Buf[pos]))%8)))!=0)) goto LA123;
				(*g).Kind = ((NU8) 14);
				{
					while (1) {
						if (!((TMP2310[((NU8)((*g).Buf[pos]))/8] &(1<<(((NU8)((*g).Buf[pos]))%8)))!=0)) goto LA126;
						pos += 1;
					} LA126: ;
				}
			}
			goto LA121;
			LA123: ;
			{
				pos += 1;
				(*g).Kind = ((NU8) 1);
			}
			LA121: ;
		}
		break;
		}
	}
	LA1: ;
	(*g).Length = (NI64)(pos - (*g).Pos);
	{
		NIM_BOOL LOC130;
		LOC130 = 0;
		LOC130 = !(((*g).Kind == ((NU8) 0)));
		if (!(LOC130)) goto LA131;
		LOC130 = ((*g).Length <= 0);
		LA131: ;
		if (!LOC130) goto LA132;
	}
	LA132: ;
	(*g).Pos = pos;
}

N_NIMCALL(NI, iskeyword_354059)(NimStringDesc** x, NI xLen0, NimStringDesc* y) {
	NI result;
	NI a;
	NI b;
	result = 0;
	a = 0;
	b = (NI64)(xLen0 - 1);
	{
		while (1) {
			NI mid;
			NI c;
			if (!(a <= b)) goto LA2;
			mid = (NI64)((NI64)(a + b) / 2);
			c = cmp_4517(x[mid], y);
			{
				if (!(c < 0)) goto LA5;
				a = (NI64)(mid + 1);
			}
			goto LA3;
			LA5: ;
			{
				if (!(0 < c)) goto LA8;
				b = (NI64)(mid - 1);
			}
			goto LA3;
			LA8: ;
			{
				result = mid;
				goto BeforeRet;
			}
			LA3: ;
		} LA2: ;
	}
	result = -1;
	BeforeRet: ;
	return result;
}

N_NIMCALL(NI, generalnumber_353705)(tgeneraltokenizer352023* g, NI position) {
	NI result;
	NI pos;
	result = 0;
	pos = position;
	(*g).Kind = ((NU8) 3);
	{
		while (1) {
			if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)))) goto LA2;
			pos += 1;
		} LA2: ;
	}
	{
		if (!((NU8)((*g).Buf[pos]) == (NU8)(46))) goto LA5;
		(*g).Kind = ((NU8) 7);
		pos += 1;
		{
			while (1) {
				if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)))) goto LA8;
				pos += 1;
			} LA8: ;
		}
	}
	LA5: ;
	{
		if (!(((NU8)((*g).Buf[pos])) == ((NU8)(101)) || ((NU8)((*g).Buf[pos])) == ((NU8)(69)))) goto LA11;
		(*g).Kind = ((NU8) 7);
		pos += 1;
		{
			if (!(((NU8)((*g).Buf[pos])) == ((NU8)(43)) || ((NU8)((*g).Buf[pos])) == ((NU8)(45)))) goto LA15;
			pos += 1;
		}
		LA15: ;
		{
			while (1) {
				if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)))) goto LA18;
				pos += 1;
			} LA18: ;
		}
	}
	LA11: ;
	result = pos;
	return result;
}

N_NIMCALL(NI, generalstrlit_353880)(tgeneraltokenizer352023* g, NI position) {
	NI result;
	NI pos;
	NIM_CHAR c;
	result = 0;
	pos = position;
	(*g).Kind = ((NU8) 10);
	c = (*g).Buf[pos];
	pos += 1;
	{
		while (1) {
			switch (((NU8)((*g).Buf[pos]))) {
			case 0:
			{
				goto LA1;
			}
			break;
			case 92:
			{
				pos += 1;
				switch (((NU8)((*g).Buf[pos]))) {
				case 0:
				{
					goto LA1;
				}
				break;
				case 48 ... 57:
				{
					{
						while (1) {
							if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)))) goto LA8;
							pos += 1;
						} LA8: ;
					}
				}
				break;
				case 120:
				case 88:
				{
					pos += 1;
					{
						if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(65)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(70)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(97)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(102)))) goto LA12;
						pos += 1;
					}
					LA12: ;
					{
						if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(65)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(70)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(97)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(102)))) goto LA16;
						pos += 1;
					}
					LA16: ;
				}
				break;
				default:
				{
					pos += 2;
				}
				break;
				}
			}
			break;
			default:
			{
				{
					if (!((NU8)((*g).Buf[pos]) == (NU8)(c))) goto LA22;
					pos += 1;
					goto LA1;
				}
				goto LA20;
				LA22: ;
				{
					pos += 1;
				}
				LA20: ;
			}
			break;
			}
		}
	} LA1: ;
	result = pos;
	return result;
}

N_NIMCALL(void, clikenexttoken_354132)(tgeneraltokenizer352023* g, NimStringDesc** keywords, NI keywordsLen0, NU8 flags) {
	NI pos;
	pos = (*g).Pos;
	(*g).Start = (*g).Pos;
	{
		if (!((*g).State == ((NU8) 10))) goto LA3;
		(*g).Kind = ((NU8) 10);
		{
			while (1) {
				switch (((NU8)((*g).Buf[pos]))) {
				case 92:
				{
					(*g).Kind = ((NU8) 13);
					pos += 1;
					switch (((NU8)((*g).Buf[pos]))) {
					case 120:
					case 88:
					{
						pos += 1;
						{
							if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(65)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(70)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(97)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(102)))) goto LA11;
							pos += 1;
						}
						LA11: ;
						{
							if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(65)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(70)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(97)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(102)))) goto LA15;
							pos += 1;
						}
						LA15: ;
					}
					break;
					case 48 ... 57:
					{
						{
							while (1) {
								if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)))) goto LA19;
								pos += 1;
							} LA19: ;
						}
					}
					break;
					case 0:
					{
						(*g).State = ((NU8) 1);
					}
					break;
					default:
					{
						pos += 1;
					}
					break;
					}
					goto LA5;
				}
				break;
				case 0:
				case 13:
				case 10:
				{
					(*g).State = ((NU8) 1);
					goto LA5;
				}
				break;
				case 34:
				{
					pos += 1;
					(*g).State = ((NU8) 1);
					goto LA5;
				}
				break;
				default:
				{
					pos += 1;
				}
				break;
				}
			}
		} LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		switch (((NU8)((*g).Buf[pos]))) {
		case 32:
		case 9 ... 13:
		{
			(*g).Kind = ((NU8) 2);
			{
				while (1) {
					if (!(((NU8)((*g).Buf[pos])) == ((NU8)(32)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(9)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(13)))) goto LA28;
					pos += 1;
				} LA28: ;
			}
		}
		break;
		case 47:
		{
			pos += 1;
			{
				if (!((NU8)((*g).Buf[pos]) == (NU8)(47))) goto LA32;
				(*g).Kind = ((NU8) 16);
				{
					while (1) {
						if (!!((((NU8)((*g).Buf[pos])) == ((NU8)(0)) || ((NU8)((*g).Buf[pos])) == ((NU8)(10)) || ((NU8)((*g).Buf[pos])) == ((NU8)(13))))) goto LA35;
						pos += 1;
					} LA35: ;
				}
			}
			goto LA30;
			LA32: ;
			{
				NI nested;
				if (!((NU8)((*g).Buf[pos]) == (NU8)(42))) goto LA37;
				(*g).Kind = ((NU8) 17);
				nested = 0;
				pos += 1;
				{
					while (1) {
						switch (((NU8)((*g).Buf[pos]))) {
						case 42:
						{
							pos += 1;
							{
								if (!((NU8)((*g).Buf[pos]) == (NU8)(47))) goto LA44;
								pos += 1;
								{
									if (!(nested == 0)) goto LA48;
									goto LA39;
								}
								LA48: ;
							}
							LA44: ;
						}
						break;
						case 47:
						{
							pos += 1;
							{
								if (!((NU8)((*g).Buf[pos]) == (NU8)(42))) goto LA53;
								pos += 1;
								{
									if (!((flags &(1<<((((NU8) 1))&7)))!=0)) goto LA57;
									nested += 1;
								}
								LA57: ;
							}
							LA53: ;
						}
						break;
						case 0:
						{
							goto LA39;
						}
						break;
						default:
						{
							pos += 1;
						}
						break;
						}
					}
				} LA39: ;
			}
			goto LA30;
			LA37: ;
			LA30: ;
		}
		break;
		case 35:
		{
			pos += 1;
			{
				if (!((flags &(1<<((((NU8) 0))&7)))!=0)) goto LA64;
				(*g).Kind = ((NU8) 25);
				{
					while (1) {
						if (!(((NU8)((*g).Buf[pos])) == ((NU8)(32)) || ((NU8)((*g).Buf[pos])) == ((NU8)(9)))) goto LA67;
						pos += 1;
					} LA67: ;
				}
				{
					while (1) {
						if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(65)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(90)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(97)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(122)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)) || ((NU8)((*g).Buf[pos])) == ((NU8)(95)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(128)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(255)))) goto LA69;
						pos += 1;
					} LA69: ;
				}
			}
			goto LA62;
			LA64: ;
			{
				(*g).Kind = ((NU8) 14);
			}
			LA62: ;
		}
		break;
		case 97 ... 122:
		case 65 ... 90:
		case 95:
		case 128 ... 255:
		{
			NimStringDesc* id;
			id = copyString(((NimStringDesc*) &TMP2240));
			{
				while (1) {
					if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(65)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(90)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(97)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(122)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)) || ((NU8)((*g).Buf[pos])) == ((NU8)(95)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(128)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(255)))) goto LA73;
					id = addChar(id, (*g).Buf[pos]);
					pos += 1;
				} LA73: ;
			}
			{
				NI LOC76;
				LOC76 = 0;
				LOC76 = iskeyword_354059(keywords, keywordsLen0, id);
				if (!(0 <= LOC76)) goto LA77;
				(*g).Kind = ((NU8) 9);
			}
			goto LA74;
			LA77: ;
			{
				(*g).Kind = ((NU8) 8);
			}
			LA74: ;
		}
		break;
		case 48:
		{
			pos += 1;
			switch (((NU8)((*g).Buf[pos]))) {
			case 98:
			case 66:
			{
				pos += 1;
				{
					while (1) {
						if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(49)))) goto LA83;
						pos += 1;
					} LA83: ;
				}
				{
					if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(65)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(90)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(97)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(122)))) goto LA86;
					pos += 1;
				}
				LA86: ;
			}
			break;
			case 120:
			case 88:
			{
				pos += 1;
				{
					while (1) {
						if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(65)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(70)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(97)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(102)))) goto LA90;
						pos += 1;
					} LA90: ;
				}
				{
					if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(65)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(90)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(97)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(122)))) goto LA93;
					pos += 1;
				}
				LA93: ;
			}
			break;
			case 48 ... 55:
			{
				pos += 1;
				{
					while (1) {
						if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(55)))) goto LA97;
						pos += 1;
					} LA97: ;
				}
				{
					if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(65)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(90)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(97)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(122)))) goto LA100;
					pos += 1;
				}
				LA100: ;
			}
			break;
			default:
			{
				pos = generalnumber_353705(g, pos);
				{
					if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(65)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(90)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(97)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(122)))) goto LA105;
					pos += 1;
				}
				LA105: ;
			}
			break;
			}
		}
		break;
		case 49 ... 57:
		{
			pos = generalnumber_353705(g, pos);
			{
				if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(65)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(90)) || ((NU8)((*g).Buf[pos])) >= ((NU8)(97)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(122)))) goto LA110;
				pos += 1;
			}
			LA110: ;
		}
		break;
		case 39:
		{
			pos = generalstrlit_353880(g, pos);
			(*g).Kind = ((NU8) 12);
		}
		break;
		case 34:
		{
			pos += 1;
			(*g).Kind = ((NU8) 10);
			{
				while (1) {
					switch (((NU8)((*g).Buf[pos]))) {
					case 0:
					{
						goto LA114;
					}
					break;
					case 34:
					{
						pos += 1;
						goto LA114;
					}
					break;
					case 92:
					{
						(*g).State = (*g).Kind;
						goto LA114;
					}
					break;
					default:
					{
						pos += 1;
					}
					break;
					}
				}
			} LA114: ;
		}
		break;
		case 40:
		case 41:
		case 91:
		case 93:
		case 123:
		case 125:
		case 58:
		case 44:
		case 59:
		case 46:
		{
			pos += 1;
			(*g).Kind = ((NU8) 15);
		}
		break;
		case 0:
		{
			(*g).Kind = ((NU8) 0);
		}
		break;
		default:
		{
			{
				if (!((TMP2310[((NU8)((*g).Buf[pos]))/8] &(1<<(((NU8)((*g).Buf[pos]))%8)))!=0)) goto LA125;
				(*g).Kind = ((NU8) 14);
				{
					while (1) {
						if (!((TMP2310[((NU8)((*g).Buf[pos]))/8] &(1<<(((NU8)((*g).Buf[pos]))%8)))!=0)) goto LA128;
						pos += 1;
					} LA128: ;
				}
			}
			goto LA123;
			LA125: ;
			{
				pos += 1;
				(*g).Kind = ((NU8) 1);
			}
			LA123: ;
		}
		break;
		}
	}
	LA1: ;
	(*g).Length = (NI64)(pos - (*g).Pos);
	{
		NIM_BOOL LOC132;
		LOC132 = 0;
		LOC132 = !(((*g).Kind == ((NU8) 0)));
		if (!(LOC132)) goto LA133;
		LOC132 = ((*g).Length <= 0);
		LA133: ;
		if (!LOC132) goto LA134;
	}
	LA134: ;
	(*g).Pos = pos;
}

N_NIMCALL(void, cppnexttoken_355114)(tgeneraltokenizer352023* g) {
	clikenexttoken_354132(g, TMP2311, 48, 1);
}

N_NIMCALL(void, csharpnexttoken_355131)(tgeneraltokenizer352023* g) {
	clikenexttoken_354132(g, TMP2345, 77, 1);
}

N_NIMCALL(void, cnexttoken_355098)(tgeneraltokenizer352023* g) {
	clikenexttoken_354132(g, TMP2377, 37, 1);
}

N_NIMCALL(void, javanexttoken_355148)(tgeneraltokenizer352023* g) {
	clikenexttoken_354132(g, TMP2382, 53, 0);
}

N_NIMCALL(void, getnexttoken_355166)(tgeneraltokenizer352023* g, NU8 lang) {
	switch (lang) {
	case ((NU8) 0):
	{
	}
	break;
	case ((NU8) 1):
	case ((NU8) 2):
	{
		nimnexttoken_352753(g);
	}
	break;
	case ((NU8) 3):
	{
		cppnexttoken_355114(g);
	}
	break;
	case ((NU8) 4):
	{
		csharpnexttoken_355131(g);
	}
	break;
	case ((NU8) 5):
	{
		cnexttoken_355098(g);
	}
	break;
	case ((NU8) 6):
	{
		javanexttoken_355148(g);
	}
	break;
	}
}

N_NIMCALL(void, deinitgeneraltokenizer_352240)(tgeneraltokenizer352023* g) {
}
NIM_EXTERNC N_NOINLINE(void, docutils_highliteInit)(void) {
}

NIM_EXTERNC N_NOINLINE(void, docutils_highliteDatInit)(void) {
static TNimNode* TMP2236[6];
static TNimNode* TMP2237[33];
NI TMP2239;
static char* NIM_CONST TMP2238[33] = {
"gtEof", 
"gtNone", 
"gtWhitespace", 
"gtDecNumber", 
"gtBinNumber", 
"gtHexNumber", 
"gtOctNumber", 
"gtFloatNumber", 
"gtIdentifier", 
"gtKeyword", 
"gtStringLit", 
"gtLongStringLit", 
"gtCharLit", 
"gtEscapeSequence", 
"gtOperator", 
"gtPunctuation", 
"gtComment", 
"gtLongComment", 
"gtRegularExpression", 
"gtTagStart", 
"gtTagEnd", 
"gtKey", 
"gtValue", 
"gtRawData", 
"gtAssembler", 
"gtPreprocessor", 
"gtDirective", 
"gtCommand", 
"gtRule", 
"gtHyperlink", 
"gtLabel", 
"gtReference", 
"gtOther"};
static TNimNode TMP888[41];
NTI352023.size = sizeof(tgeneraltokenizer352023);
NTI352023.kind = 17;
NTI352023.base = (&NTI3211);
NTI352023.flags = 1;
TMP2236[0] = &TMP888[1];
NTI352021.size = sizeof(NU8);
NTI352021.kind = 14;
NTI352021.base = 0;
NTI352021.flags = 3;
for (TMP2239 = 0; TMP2239 < 33; TMP2239++) {
TMP888[TMP2239+2].kind = 1;
TMP888[TMP2239+2].offset = TMP2239;
TMP888[TMP2239+2].name = TMP2238[TMP2239];
TMP2237[TMP2239] = &TMP888[TMP2239+2];
}
TMP888[35].len = 33; TMP888[35].kind = 2; TMP888[35].sons = &TMP2237[0];
NTI352021.node = &TMP888[35];
TMP888[1].kind = 1;
TMP888[1].offset = offsetof(tgeneraltokenizer352023, Kind);
TMP888[1].typ = (&NTI352021);
TMP888[1].name = "kind";
TMP2236[1] = &TMP888[36];
TMP888[36].kind = 1;
TMP888[36].offset = offsetof(tgeneraltokenizer352023, Start);
TMP888[36].typ = (&NTI108);
TMP888[36].name = "start";
TMP2236[2] = &TMP888[37];
TMP888[37].kind = 1;
TMP888[37].offset = offsetof(tgeneraltokenizer352023, Length);
TMP888[37].typ = (&NTI108);
TMP888[37].name = "length";
TMP2236[3] = &TMP888[38];
TMP888[38].kind = 1;
TMP888[38].offset = offsetof(tgeneraltokenizer352023, Buf);
TMP888[38].typ = (&NTI151);
TMP888[38].name = "buf";
TMP2236[4] = &TMP888[39];
TMP888[39].kind = 1;
TMP888[39].offset = offsetof(tgeneraltokenizer352023, Pos);
TMP888[39].typ = (&NTI108);
TMP888[39].name = "pos";
TMP2236[5] = &TMP888[40];
TMP888[40].kind = 1;
TMP888[40].offset = offsetof(tgeneraltokenizer352023, State);
TMP888[40].typ = (&NTI352021);
TMP888[40].name = "state";
TMP888[0].len = 6; TMP888[0].kind = 2; TMP888[0].sons = &TMP2236[0];
NTI352023.node = &TMP888[0];
}

