/* Generated by Nim Compiler v0.12.0 */
/*   (c) 2015 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 Generaltokenizer340023 Generaltokenizer340023;
typedef struct TNimObject TNimObject;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef NimStringDesc* TY340084[7];
typedef N_NIMCALL_PTR(void, TY3889) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3894) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3889 marker;
TY3894 deepcopy;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  Generaltokenizer340023  {
  TNimObject Sup;
NU8 kind;
NI start;
NI length;
NCSTRING buf;
NI pos;
NU8 state;
};
typedef NimStringDesc* TY340094[70];
typedef NU8 TY212407[32];
typedef NimStringDesc* TY342721[48];
typedef NimStringDesc* TY342738[77];
typedef NimStringDesc* TY342704[37];
typedef NimStringDesc* TY342755[53];
typedef NimStringDesc* TY340090[33];
N_NIMCALL(NI, nsuCmpIgnoreStyle)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(void, initgeneraltokenizer_340246)(Generaltokenizer340023* g, NCSTRING buf);
N_NIMCALL(void, nimnexttoken_340687)(Generaltokenizer340023* g);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(NU8, nimgetkeyword_340310)(NimStringDesc* id);
N_NIMCALL(NI, nimnumberpostfix_340420)(Generaltokenizer340023* g, NI position);
N_NIMCALL(NI, nimnumber_340540)(Generaltokenizer340023* g, NI position);
N_NIMCALL(void, cppnexttoken_342714)(Generaltokenizer340023* g);
N_NIMCALL(void, clikenexttoken_341864)(Generaltokenizer340023* g, NimStringDesc** keywords, NI keywordsLen0, NU8 flags);
N_NIMCALL(NI, iskeyword_341790)(NimStringDesc** x, NI xLen0, NimStringDesc* y);
N_NIMCALL(NI, cmp_6577)(NimStringDesc* x, NimStringDesc* y);
N_NIMCALL(NI, generalnumber_341505)(Generaltokenizer340023* g, NI position);
N_NIMCALL(NI, generalstrlit_341647)(Generaltokenizer340023* g, NI position);
N_NIMCALL(void, csharpnexttoken_342731)(Generaltokenizer340023* g);
N_NIMCALL(void, cnexttoken_342698)(Generaltokenizer340023* g);
N_NIMCALL(void, javanexttoken_342748)(Generaltokenizer340023* g);
STRING_LITERAL(TMP2315, "none", 4);
STRING_LITERAL(TMP2316, "Nim", 3);
STRING_LITERAL(TMP2317, "Nimrod", 6);
STRING_LITERAL(TMP2318, "C++", 3);
STRING_LITERAL(TMP2319, "C#", 2);
STRING_LITERAL(TMP2320, "C", 1);
STRING_LITERAL(TMP2321, "Java", 4);
NIM_CONST TY340084 sourcelanguagetostr_340081 = {((NimStringDesc*) &TMP2315),
((NimStringDesc*) &TMP2316),
((NimStringDesc*) &TMP2317),
((NimStringDesc*) &TMP2318),
((NimStringDesc*) &TMP2319),
((NimStringDesc*) &TMP2320),
((NimStringDesc*) &TMP2321)}
;
STRING_LITERAL(TMP2333, "", 0);
STRING_LITERAL(TMP2334, "addr", 4);
STRING_LITERAL(TMP2335, "and", 3);
STRING_LITERAL(TMP2336, "as", 2);
STRING_LITERAL(TMP2337, "asm", 3);
STRING_LITERAL(TMP2338, "atomic", 6);
STRING_LITERAL(TMP2339, "bind", 4);
STRING_LITERAL(TMP2340, "block", 5);
STRING_LITERAL(TMP2341, "break", 5);
STRING_LITERAL(TMP2342, "case", 4);
STRING_LITERAL(TMP2343, "cast", 4);
STRING_LITERAL(TMP2344, "concept", 7);
STRING_LITERAL(TMP2345, "const", 5);
STRING_LITERAL(TMP2346, "continue", 8);
STRING_LITERAL(TMP2347, "converter", 9);
STRING_LITERAL(TMP2348, "defer", 5);
STRING_LITERAL(TMP2349, "discard", 7);
STRING_LITERAL(TMP2350, "distinct", 8);
STRING_LITERAL(TMP2351, "div", 3);
STRING_LITERAL(TMP2352, "do", 2);
STRING_LITERAL(TMP2353, "elif", 4);
STRING_LITERAL(TMP2354, "else", 4);
STRING_LITERAL(TMP2355, "end", 3);
STRING_LITERAL(TMP2356, "enum", 4);
STRING_LITERAL(TMP2357, "except", 6);
STRING_LITERAL(TMP2358, "export", 6);
STRING_LITERAL(TMP2359, "finally", 7);
STRING_LITERAL(TMP2360, "for", 3);
STRING_LITERAL(TMP2361, "from", 4);
STRING_LITERAL(TMP2362, "func", 4);
STRING_LITERAL(TMP2363, "generic", 7);
STRING_LITERAL(TMP2364, "if", 2);
STRING_LITERAL(TMP2365, "import", 6);
STRING_LITERAL(TMP2366, "in", 2);
STRING_LITERAL(TMP2367, "include", 7);
STRING_LITERAL(TMP2368, "interface", 9);
STRING_LITERAL(TMP2369, "is", 2);
STRING_LITERAL(TMP2370, "isnot", 5);
STRING_LITERAL(TMP2371, "iterator", 8);
STRING_LITERAL(TMP2372, "let", 3);
STRING_LITERAL(TMP2373, "macro", 5);
STRING_LITERAL(TMP2374, "method", 6);
STRING_LITERAL(TMP2375, "mixin", 5);
STRING_LITERAL(TMP2376, "mod", 3);
STRING_LITERAL(TMP2377, "nil", 3);
STRING_LITERAL(TMP2378, "not", 3);
STRING_LITERAL(TMP2379, "notin", 5);
STRING_LITERAL(TMP2380, "object", 6);
STRING_LITERAL(TMP2381, "of", 2);
STRING_LITERAL(TMP2382, "or", 2);
STRING_LITERAL(TMP2383, "out", 3);
STRING_LITERAL(TMP2384, "proc", 4);
STRING_LITERAL(TMP2385, "ptr", 3);
STRING_LITERAL(TMP2386, "raise", 5);
STRING_LITERAL(TMP2387, "ref", 3);
STRING_LITERAL(TMP2388, "return", 6);
STRING_LITERAL(TMP2389, "shl", 3);
STRING_LITERAL(TMP2390, "shr", 3);
STRING_LITERAL(TMP2391, "static", 6);
STRING_LITERAL(TMP2392, "template", 8);
STRING_LITERAL(TMP2393, "try", 3);
STRING_LITERAL(TMP2394, "tuple", 5);
STRING_LITERAL(TMP2395, "type", 4);
STRING_LITERAL(TMP2396, "using", 5);
STRING_LITERAL(TMP2397, "var", 3);
STRING_LITERAL(TMP2398, "when", 4);
STRING_LITERAL(TMP2399, "while", 5);
STRING_LITERAL(TMP2400, "with", 4);
STRING_LITERAL(TMP2401, "without", 7);
STRING_LITERAL(TMP2402, "xor", 3);
STRING_LITERAL(TMP2403, "yield", 5);
NIM_CONST TY340094 nimkeywords_340093 = {((NimStringDesc*) &TMP2334),
((NimStringDesc*) &TMP2335),
((NimStringDesc*) &TMP2336),
((NimStringDesc*) &TMP2337),
((NimStringDesc*) &TMP2338),
((NimStringDesc*) &TMP2339),
((NimStringDesc*) &TMP2340),
((NimStringDesc*) &TMP2341),
((NimStringDesc*) &TMP2342),
((NimStringDesc*) &TMP2343),
((NimStringDesc*) &TMP2344),
((NimStringDesc*) &TMP2345),
((NimStringDesc*) &TMP2346),
((NimStringDesc*) &TMP2347),
((NimStringDesc*) &TMP2348),
((NimStringDesc*) &TMP2349),
((NimStringDesc*) &TMP2350),
((NimStringDesc*) &TMP2351),
((NimStringDesc*) &TMP2352),
((NimStringDesc*) &TMP2353),
((NimStringDesc*) &TMP2354),
((NimStringDesc*) &TMP2355),
((NimStringDesc*) &TMP2356),
((NimStringDesc*) &TMP2357),
((NimStringDesc*) &TMP2358),
((NimStringDesc*) &TMP2359),
((NimStringDesc*) &TMP2360),
((NimStringDesc*) &TMP2361),
((NimStringDesc*) &TMP2362),
((NimStringDesc*) &TMP2363),
((NimStringDesc*) &TMP2364),
((NimStringDesc*) &TMP2365),
((NimStringDesc*) &TMP2366),
((NimStringDesc*) &TMP2367),
((NimStringDesc*) &TMP2368),
((NimStringDesc*) &TMP2369),
((NimStringDesc*) &TMP2370),
((NimStringDesc*) &TMP2371),
((NimStringDesc*) &TMP2372),
((NimStringDesc*) &TMP2373),
((NimStringDesc*) &TMP2374),
((NimStringDesc*) &TMP2375),
((NimStringDesc*) &TMP2376),
((NimStringDesc*) &TMP2377),
((NimStringDesc*) &TMP2378),
((NimStringDesc*) &TMP2379),
((NimStringDesc*) &TMP2380),
((NimStringDesc*) &TMP2381),
((NimStringDesc*) &TMP2382),
((NimStringDesc*) &TMP2383),
((NimStringDesc*) &TMP2384),
((NimStringDesc*) &TMP2385),
((NimStringDesc*) &TMP2386),
((NimStringDesc*) &TMP2387),
((NimStringDesc*) &TMP2388),
((NimStringDesc*) &TMP2389),
((NimStringDesc*) &TMP2390),
((NimStringDesc*) &TMP2391),
((NimStringDesc*) &TMP2392),
((NimStringDesc*) &TMP2393),
((NimStringDesc*) &TMP2394),
((NimStringDesc*) &TMP2395),
((NimStringDesc*) &TMP2396),
((NimStringDesc*) &TMP2397),
((NimStringDesc*) &TMP2398),
((NimStringDesc*) &TMP2399),
((NimStringDesc*) &TMP2400),
((NimStringDesc*) &TMP2401),
((NimStringDesc*) &TMP2402),
((NimStringDesc*) &TMP2403)}
;
static NIM_CONST TY212407 TMP2404 = {
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(TMP2406, "auto", 4);
STRING_LITERAL(TMP2407, "catch", 5);
STRING_LITERAL(TMP2408, "char", 4);
STRING_LITERAL(TMP2409, "class", 5);
STRING_LITERAL(TMP2410, "default", 7);
STRING_LITERAL(TMP2411, "delete", 6);
STRING_LITERAL(TMP2412, "double", 6);
STRING_LITERAL(TMP2413, "extern", 6);
STRING_LITERAL(TMP2414, "float", 5);
STRING_LITERAL(TMP2415, "friend", 6);
STRING_LITERAL(TMP2416, "goto", 4);
STRING_LITERAL(TMP2417, "inline", 6);
STRING_LITERAL(TMP2418, "int", 3);
STRING_LITERAL(TMP2419, "long", 4);
STRING_LITERAL(TMP2420, "new", 3);
STRING_LITERAL(TMP2421, "operator", 8);
STRING_LITERAL(TMP2422, "private", 7);
STRING_LITERAL(TMP2423, "protected", 9);
STRING_LITERAL(TMP2424, "public", 6);
STRING_LITERAL(TMP2425, "register", 8);
STRING_LITERAL(TMP2426, "short", 5);
STRING_LITERAL(TMP2427, "signed", 6);
STRING_LITERAL(TMP2428, "sizeof", 6);
STRING_LITERAL(TMP2429, "struct", 6);
STRING_LITERAL(TMP2430, "switch", 6);
STRING_LITERAL(TMP2431, "this", 4);
STRING_LITERAL(TMP2432, "throw", 5);
STRING_LITERAL(TMP2433, "typedef", 7);
STRING_LITERAL(TMP2434, "union", 5);
STRING_LITERAL(TMP2435, "unsigned", 8);
STRING_LITERAL(TMP2436, "virtual", 7);
STRING_LITERAL(TMP2437, "void", 4);
STRING_LITERAL(TMP2438, "volatile", 8);
NIM_CONST TY342721 TMP2405 = {((NimStringDesc*) &TMP2337),
((NimStringDesc*) &TMP2406),
((NimStringDesc*) &TMP2341),
((NimStringDesc*) &TMP2342),
((NimStringDesc*) &TMP2407),
((NimStringDesc*) &TMP2408),
((NimStringDesc*) &TMP2409),
((NimStringDesc*) &TMP2345),
((NimStringDesc*) &TMP2346),
((NimStringDesc*) &TMP2410),
((NimStringDesc*) &TMP2411),
((NimStringDesc*) &TMP2352),
((NimStringDesc*) &TMP2412),
((NimStringDesc*) &TMP2354),
((NimStringDesc*) &TMP2356),
((NimStringDesc*) &TMP2413),
((NimStringDesc*) &TMP2414),
((NimStringDesc*) &TMP2360),
((NimStringDesc*) &TMP2415),
((NimStringDesc*) &TMP2416),
((NimStringDesc*) &TMP2364),
((NimStringDesc*) &TMP2417),
((NimStringDesc*) &TMP2418),
((NimStringDesc*) &TMP2419),
((NimStringDesc*) &TMP2420),
((NimStringDesc*) &TMP2421),
((NimStringDesc*) &TMP2422),
((NimStringDesc*) &TMP2423),
((NimStringDesc*) &TMP2424),
((NimStringDesc*) &TMP2425),
((NimStringDesc*) &TMP2388),
((NimStringDesc*) &TMP2426),
((NimStringDesc*) &TMP2427),
((NimStringDesc*) &TMP2428),
((NimStringDesc*) &TMP2391),
((NimStringDesc*) &TMP2429),
((NimStringDesc*) &TMP2430),
((NimStringDesc*) &TMP2392),
((NimStringDesc*) &TMP2431),
((NimStringDesc*) &TMP2432),
((NimStringDesc*) &TMP2393),
((NimStringDesc*) &TMP2433),
((NimStringDesc*) &TMP2434),
((NimStringDesc*) &TMP2435),
((NimStringDesc*) &TMP2436),
((NimStringDesc*) &TMP2437),
((NimStringDesc*) &TMP2438),
((NimStringDesc*) &TMP2399)}
;
STRING_LITERAL(TMP2440, "abstract", 8);
STRING_LITERAL(TMP2441, "base", 4);
STRING_LITERAL(TMP2442, "bool", 4);
STRING_LITERAL(TMP2443, "byte", 4);
STRING_LITERAL(TMP2444, "checked", 7);
STRING_LITERAL(TMP2445, "decimal", 7);
STRING_LITERAL(TMP2446, "delegate", 8);
STRING_LITERAL(TMP2447, "event", 5);
STRING_LITERAL(TMP2448, "explicit", 8);
STRING_LITERAL(TMP2449, "false", 5);
STRING_LITERAL(TMP2450, "fixed", 5);
STRING_LITERAL(TMP2451, "foreach", 7);
STRING_LITERAL(TMP2452, "implicit", 8);
STRING_LITERAL(TMP2453, "internal", 8);
STRING_LITERAL(TMP2454, "lock", 4);
STRING_LITERAL(TMP2455, "namespace", 9);
STRING_LITERAL(TMP2456, "null", 4);
STRING_LITERAL(TMP2457, "override", 8);
STRING_LITERAL(TMP2458, "params", 6);
STRING_LITERAL(TMP2459, "readonly", 8);
STRING_LITERAL(TMP2460, "sbyte", 5);
STRING_LITERAL(TMP2461, "sealed", 6);
STRING_LITERAL(TMP2462, "stackalloc", 10);
STRING_LITERAL(TMP2463, "string", 6);
STRING_LITERAL(TMP2464, "true", 4);
STRING_LITERAL(TMP2465, "typeof", 6);
STRING_LITERAL(TMP2466, "uint", 4);
STRING_LITERAL(TMP2467, "ulong", 5);
STRING_LITERAL(TMP2468, "unchecked", 9);
STRING_LITERAL(TMP2469, "unsafe", 6);
STRING_LITERAL(TMP2470, "ushort", 6);
NIM_CONST TY342738 TMP2439 = {((NimStringDesc*) &TMP2440),
((NimStringDesc*) &TMP2336),
((NimStringDesc*) &TMP2441),
((NimStringDesc*) &TMP2442),
((NimStringDesc*) &TMP2341),
((NimStringDesc*) &TMP2443),
((NimStringDesc*) &TMP2342),
((NimStringDesc*) &TMP2407),
((NimStringDesc*) &TMP2408),
((NimStringDesc*) &TMP2444),
((NimStringDesc*) &TMP2409),
((NimStringDesc*) &TMP2345),
((NimStringDesc*) &TMP2346),
((NimStringDesc*) &TMP2445),
((NimStringDesc*) &TMP2410),
((NimStringDesc*) &TMP2446),
((NimStringDesc*) &TMP2352),
((NimStringDesc*) &TMP2412),
((NimStringDesc*) &TMP2354),
((NimStringDesc*) &TMP2356),
((NimStringDesc*) &TMP2447),
((NimStringDesc*) &TMP2448),
((NimStringDesc*) &TMP2413),
((NimStringDesc*) &TMP2449),
((NimStringDesc*) &TMP2359),
((NimStringDesc*) &TMP2450),
((NimStringDesc*) &TMP2414),
((NimStringDesc*) &TMP2360),
((NimStringDesc*) &TMP2451),
((NimStringDesc*) &TMP2416),
((NimStringDesc*) &TMP2364),
((NimStringDesc*) &TMP2452),
((NimStringDesc*) &TMP2366),
((NimStringDesc*) &TMP2418),
((NimStringDesc*) &TMP2368),
((NimStringDesc*) &TMP2453),
((NimStringDesc*) &TMP2369),
((NimStringDesc*) &TMP2454),
((NimStringDesc*) &TMP2419),
((NimStringDesc*) &TMP2455),
((NimStringDesc*) &TMP2420),
((NimStringDesc*) &TMP2456),
((NimStringDesc*) &TMP2380),
((NimStringDesc*) &TMP2421),
((NimStringDesc*) &TMP2383),
((NimStringDesc*) &TMP2457),
((NimStringDesc*) &TMP2458),
((NimStringDesc*) &TMP2422),
((NimStringDesc*) &TMP2423),
((NimStringDesc*) &TMP2424),
((NimStringDesc*) &TMP2459),
((NimStringDesc*) &TMP2387),
((NimStringDesc*) &TMP2388),
((NimStringDesc*) &TMP2460),
((NimStringDesc*) &TMP2461),
((NimStringDesc*) &TMP2426),
((NimStringDesc*) &TMP2428),
((NimStringDesc*) &TMP2462),
((NimStringDesc*) &TMP2391),
((NimStringDesc*) &TMP2463),
((NimStringDesc*) &TMP2429),
((NimStringDesc*) &TMP2430),
((NimStringDesc*) &TMP2431),
((NimStringDesc*) &TMP2432),
((NimStringDesc*) &TMP2464),
((NimStringDesc*) &TMP2393),
((NimStringDesc*) &TMP2465),
((NimStringDesc*) &TMP2466),
((NimStringDesc*) &TMP2467),
((NimStringDesc*) &TMP2468),
((NimStringDesc*) &TMP2469),
((NimStringDesc*) &TMP2470),
((NimStringDesc*) &TMP2396),
((NimStringDesc*) &TMP2436),
((NimStringDesc*) &TMP2437),
((NimStringDesc*) &TMP2438),
((NimStringDesc*) &TMP2399)}
;
STRING_LITERAL(TMP2472, "_Bool", 5);
STRING_LITERAL(TMP2473, "_Complex", 8);
STRING_LITERAL(TMP2474, "_Imaginary", 10);
STRING_LITERAL(TMP2475, "restrict", 8);
NIM_CONST TY342704 TMP2471 = {((NimStringDesc*) &TMP2472),
((NimStringDesc*) &TMP2473),
((NimStringDesc*) &TMP2474),
((NimStringDesc*) &TMP2406),
((NimStringDesc*) &TMP2341),
((NimStringDesc*) &TMP2342),
((NimStringDesc*) &TMP2408),
((NimStringDesc*) &TMP2345),
((NimStringDesc*) &TMP2346),
((NimStringDesc*) &TMP2410),
((NimStringDesc*) &TMP2352),
((NimStringDesc*) &TMP2412),
((NimStringDesc*) &TMP2354),
((NimStringDesc*) &TMP2356),
((NimStringDesc*) &TMP2413),
((NimStringDesc*) &TMP2414),
((NimStringDesc*) &TMP2360),
((NimStringDesc*) &TMP2416),
((NimStringDesc*) &TMP2364),
((NimStringDesc*) &TMP2417),
((NimStringDesc*) &TMP2418),
((NimStringDesc*) &TMP2419),
((NimStringDesc*) &TMP2425),
((NimStringDesc*) &TMP2475),
((NimStringDesc*) &TMP2388),
((NimStringDesc*) &TMP2426),
((NimStringDesc*) &TMP2427),
((NimStringDesc*) &TMP2428),
((NimStringDesc*) &TMP2391),
((NimStringDesc*) &TMP2429),
((NimStringDesc*) &TMP2430),
((NimStringDesc*) &TMP2433),
((NimStringDesc*) &TMP2434),
((NimStringDesc*) &TMP2435),
((NimStringDesc*) &TMP2437),
((NimStringDesc*) &TMP2438),
((NimStringDesc*) &TMP2399)}
;
STRING_LITERAL(TMP2477, "assert", 6);
STRING_LITERAL(TMP2478, "boolean", 7);
STRING_LITERAL(TMP2479, "extends", 7);
STRING_LITERAL(TMP2480, "final", 5);
STRING_LITERAL(TMP2481, "implements", 10);
STRING_LITERAL(TMP2482, "instanceof", 10);
STRING_LITERAL(TMP2483, "native", 6);
STRING_LITERAL(TMP2484, "package", 7);
STRING_LITERAL(TMP2485, "strictfp", 8);
STRING_LITERAL(TMP2486, "super", 5);
STRING_LITERAL(TMP2487, "synchronized", 12);
STRING_LITERAL(TMP2488, "throws", 6);
STRING_LITERAL(TMP2489, "transient", 9);
NIM_CONST TY342755 TMP2476 = {((NimStringDesc*) &TMP2440),
((NimStringDesc*) &TMP2477),
((NimStringDesc*) &TMP2478),
((NimStringDesc*) &TMP2341),
((NimStringDesc*) &TMP2443),
((NimStringDesc*) &TMP2342),
((NimStringDesc*) &TMP2407),
((NimStringDesc*) &TMP2408),
((NimStringDesc*) &TMP2409),
((NimStringDesc*) &TMP2345),
((NimStringDesc*) &TMP2346),
((NimStringDesc*) &TMP2410),
((NimStringDesc*) &TMP2352),
((NimStringDesc*) &TMP2412),
((NimStringDesc*) &TMP2354),
((NimStringDesc*) &TMP2356),
((NimStringDesc*) &TMP2479),
((NimStringDesc*) &TMP2449),
((NimStringDesc*) &TMP2480),
((NimStringDesc*) &TMP2359),
((NimStringDesc*) &TMP2414),
((NimStringDesc*) &TMP2360),
((NimStringDesc*) &TMP2416),
((NimStringDesc*) &TMP2364),
((NimStringDesc*) &TMP2481),
((NimStringDesc*) &TMP2365),
((NimStringDesc*) &TMP2482),
((NimStringDesc*) &TMP2418),
((NimStringDesc*) &TMP2368),
((NimStringDesc*) &TMP2419),
((NimStringDesc*) &TMP2483),
((NimStringDesc*) &TMP2420),
((NimStringDesc*) &TMP2456),
((NimStringDesc*) &TMP2484),
((NimStringDesc*) &TMP2422),
((NimStringDesc*) &TMP2423),
((NimStringDesc*) &TMP2424),
((NimStringDesc*) &TMP2388),
((NimStringDesc*) &TMP2426),
((NimStringDesc*) &TMP2391),
((NimStringDesc*) &TMP2485),
((NimStringDesc*) &TMP2486),
((NimStringDesc*) &TMP2430),
((NimStringDesc*) &TMP2487),
((NimStringDesc*) &TMP2431),
((NimStringDesc*) &TMP2432),
((NimStringDesc*) &TMP2488),
((NimStringDesc*) &TMP2489),
((NimStringDesc*) &TMP2464),
((NimStringDesc*) &TMP2393),
((NimStringDesc*) &TMP2437),
((NimStringDesc*) &TMP2438),
((NimStringDesc*) &TMP2399)}
;
STRING_LITERAL(TMP2492, "Eof", 3);
STRING_LITERAL(TMP2493, "None", 4);
STRING_LITERAL(TMP2494, "Whitespace", 10);
STRING_LITERAL(TMP2495, "DecNumber", 9);
STRING_LITERAL(TMP2496, "BinNumber", 9);
STRING_LITERAL(TMP2497, "HexNumber", 9);
STRING_LITERAL(TMP2498, "OctNumber", 9);
STRING_LITERAL(TMP2499, "FloatNumber", 11);
STRING_LITERAL(TMP2500, "Identifier", 10);
STRING_LITERAL(TMP2501, "Keyword", 7);
STRING_LITERAL(TMP2502, "StringLit", 9);
STRING_LITERAL(TMP2503, "LongStringLit", 13);
STRING_LITERAL(TMP2504, "CharLit", 7);
STRING_LITERAL(TMP2505, "EscapeSequence", 14);
STRING_LITERAL(TMP2506, "Operator", 8);
STRING_LITERAL(TMP2507, "Punctuation", 11);
STRING_LITERAL(TMP2508, "Comment", 7);
STRING_LITERAL(TMP2509, "LongComment", 11);
STRING_LITERAL(TMP2510, "RegularExpression", 17);
STRING_LITERAL(TMP2511, "TagStart", 8);
STRING_LITERAL(TMP2512, "TagEnd", 6);
STRING_LITERAL(TMP2513, "Key", 3);
STRING_LITERAL(TMP2514, "Value", 5);
STRING_LITERAL(TMP2515, "RawData", 7);
STRING_LITERAL(TMP2516, "Assembler", 9);
STRING_LITERAL(TMP2517, "Preprocessor", 12);
STRING_LITERAL(TMP2518, "Directive", 9);
STRING_LITERAL(TMP2519, "Command", 7);
STRING_LITERAL(TMP2520, "Rule", 4);
STRING_LITERAL(TMP2521, "Hyperlink", 9);
STRING_LITERAL(TMP2522, "Label", 5);
STRING_LITERAL(TMP2523, "Reference", 9);
STRING_LITERAL(TMP2524, "Other", 5);
NIM_CONST TY340090 tokenclasstostr_340087 = {((NimStringDesc*) &TMP2492),
((NimStringDesc*) &TMP2493),
((NimStringDesc*) &TMP2494),
((NimStringDesc*) &TMP2495),
((NimStringDesc*) &TMP2496),
((NimStringDesc*) &TMP2497),
((NimStringDesc*) &TMP2498),
((NimStringDesc*) &TMP2499),
((NimStringDesc*) &TMP2500),
((NimStringDesc*) &TMP2501),
((NimStringDesc*) &TMP2502),
((NimStringDesc*) &TMP2503),
((NimStringDesc*) &TMP2504),
((NimStringDesc*) &TMP2505),
((NimStringDesc*) &TMP2506),
((NimStringDesc*) &TMP2507),
((NimStringDesc*) &TMP2508),
((NimStringDesc*) &TMP2509),
((NimStringDesc*) &TMP2510),
((NimStringDesc*) &TMP2511),
((NimStringDesc*) &TMP2512),
((NimStringDesc*) &TMP2513),
((NimStringDesc*) &TMP2514),
((NimStringDesc*) &TMP2515),
((NimStringDesc*) &TMP2516),
((NimStringDesc*) &TMP2517),
((NimStringDesc*) &TMP2518),
((NimStringDesc*) &TMP2519),
((NimStringDesc*) &TMP2520),
((NimStringDesc*) &TMP2521),
((NimStringDesc*) &TMP2522),
((NimStringDesc*) &TMP2523),
((NimStringDesc*) &TMP2524)}
;
extern TNimType NTI4011; /* RootObj */
TNimType NTI340023; /* GeneralTokenizer */
TNimType NTI340021; /* TokenClass */
extern TNimType NTI108; /* int */
extern TNimType NTI151; /* cstring */

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

N_NIMCALL(void, initgeneraltokenizer_340246)(Generaltokenizer340023* g, NCSTRING buf) {
	NI pos;
	(*g).buf = buf;
	(*g).kind = ((NU8) 0);
	(*g).start = ((NI) 0);
	(*g).length = ((NI) 0);
	(*g).state = ((NU8) 0);
	pos = ((NI) 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 += ((NI) 1);
		} LA2: ;
	}
	(*g).pos = pos;
}

N_NIMCALL(void, initgeneraltokenizer_340289)(Generaltokenizer340023* g, NimStringDesc* buf) {
	initgeneraltokenizer_340246(g, buf->data);
}

N_NIMCALL(NU8, nimgetkeyword_340310)(NimStringDesc* id) {
	NU8 result;
{	result = 0;
	{
		NimStringDesc* k_340354;
		NI i_340404;
		k_340354 = 0;
		i_340404 = ((NI) 0);
		{
			if (!(((NI) (i_340404)) <= ((NI) 69))) goto LA4;
			{
				while (1) {
					k_340354 = copyString(nimkeywords_340093[(i_340404)- 0]);
					{
						NI LOC10;
						LOC10 = 0;
						LOC10 = nsuCmpIgnoreStyle(id, k_340354);
						if (!(LOC10 == ((NI) 0))) goto LA11;
						result = ((NU8) 9);
						goto BeforeRet;
					}
					LA11: ;
					{
						if (!(((NI) 69) <= ((NI) (i_340404)))) goto LA15;
						goto LA6;
					}
					LA15: ;
					i_340404 += ((NI) 1);
				}
			} LA6: ;
		}
		LA4: ;
	}
	result = ((NU8) 8);
	}BeforeRet: ;
	return result;
}

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

N_NIMCALL(NI, nimnumber_340540)(Generaltokenizer340023* 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 += ((NI) 1);
		} LA2: ;
	}
	{
		if (!((NU8)((*g).buf[pos]) == (NU8)(46))) goto LA5;
		(*g).kind = ((NU8) 7);
		pos += ((NI) 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 += ((NI) 1);
			} LA8: ;
		}
	}
	LA5: ;
	{
		if (!(((NU8)((*g).buf[pos])) == ((NU8)(101)) || ((NU8)((*g).buf[pos])) == ((NU8)(69)))) goto LA11;
		(*g).kind = ((NU8) 7);
		pos += ((NI) 1);
		{
			if (!(((NU8)((*g).buf[pos])) == ((NU8)(43)) || ((NU8)((*g).buf[pos])) == ((NU8)(45)))) goto LA15;
			pos += ((NI) 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 += ((NI) 1);
			} LA18: ;
		}
	}
	LA11: ;
	result = nimnumberpostfix_340420(g, pos);
	return result;
}

N_NIMCALL(void, nimnexttoken_340687)(Generaltokenizer340023* 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 += ((NI) 1);
					switch (((NU8)((*g).buf[pos]))) {
					case 120:
					case 88:
					{
						pos += ((NI) 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 += ((NI) 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 += ((NI) 1);
						}
						LA15: ;
					}
					break;
					case 48 ... 57:
					{
						{
							while (1) {
								if (!(((NU8)((*g).buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).buf[pos])) <= ((NU8)(57)))) goto LA19;
								pos += ((NI) 1);
							} LA19: ;
						}
					}
					break;
					case 0:
					{
						(*g).state = ((NU8) 1);
					}
					break;
					default:
					{
						pos += ((NI) 1);
					}
					break;
					}
					goto LA5;
				}
				break;
				case 0:
				case 13:
				case 10:
				{
					(*g).state = ((NU8) 1);
					goto LA5;
				}
				break;
				case 34:
				{
					pos += ((NI) 1);
					(*g).state = ((NU8) 1);
					goto LA5;
				}
				break;
				default:
				{
					pos += ((NI) 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 += ((NI) 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 += ((NI) 1);
				} LA31: ;
			}
		}
		break;
		case 97 ... 122:
		case 65 ... 90:
		case 95:
		case 128 ... 255:
		{
			NimStringDesc* id;
			id = copyString(((NimStringDesc*) &TMP2333));
			{
				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 += ((NI) 1);
				} LA34: ;
			}
			{
				if (!((NU8)((*g).buf[pos]) == (NU8)(34))) goto LA37;
				{
					NIM_BOOL LOC41;
					LOC41 = 0;
					LOC41 = ((NU8)((*g).buf[(NI)(pos + ((NI) 1))]) == (NU8)(34));
					if (!(LOC41)) goto LA42;
					LOC41 = ((NU8)((*g).buf[(NI)(pos + ((NI) 2))]) == (NU8)(34));
					LA42: ;
					if (!LOC41) goto LA43;
					pos += ((NI) 3);
					(*g).kind = ((NU8) 11);
					{
						while (1) {
							switch (((NU8)((*g).buf[pos]))) {
							case 0:
							{
								goto LA45;
							}
							break;
							case 34:
							{
								pos += ((NI) 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[(NI)(pos + ((NI) 1))]) == (NU8)(34));
									LA53: ;
									LOC51 = LOC52;
									if (!(LOC51)) goto LA54;
									LOC51 = !(((NU8)((*g).buf[(NI)(pos + ((NI) 2))]) == (NU8)(34)));
									LA54: ;
									if (!LOC51) goto LA55;
									pos += ((NI) 2);
									goto LA45;
								}
								LA55: ;
							}
							break;
							default:
							{
								pos += ((NI) 1);
							}
							break;
							}
						}
					} LA45: ;
				}
				goto LA39;
				LA43: ;
				{
					(*g).kind = ((NU8) 23);
					pos += ((NI) 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[(NI)(pos + ((NI) 1))]) == (NU8)(34)));
								LA64: ;
								if (!LOC63) goto LA65;
								goto LA59;
							}
							LA65: ;
							pos += ((NI) 1);
						} LA60: ;
					} LA59: ;
					{
						if (!((NU8)((*g).buf[pos]) == (NU8)(34))) goto LA69;
						pos += ((NI) 1);
					}
					LA69: ;
				}
				LA39: ;
			}
			goto LA35;
			LA37: ;
			{
				(*g).kind = nimgetkeyword_340310(id);
			}
			LA35: ;
		}
		break;
		case 48:
		{
			pos += ((NI) 1);
			switch (((NU8)((*g).buf[pos]))) {
			case 98:
			case 66:
			{
				pos += ((NI) 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 += ((NI) 1);
					} LA75: ;
				}
				pos = nimnumberpostfix_340420(g, pos);
			}
			break;
			case 120:
			case 88:
			{
				pos += ((NI) 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 += ((NI) 1);
					} LA78: ;
				}
				pos = nimnumberpostfix_340420(g, pos);
			}
			break;
			case 111:
			case 79:
			{
				pos += ((NI) 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 += ((NI) 1);
					} LA81: ;
				}
				pos = nimnumberpostfix_340420(g, pos);
			}
			break;
			default:
			{
				pos = nimnumber_340540(g, pos);
			}
			break;
			}
		}
		break;
		case 49 ... 57:
		{
			pos = nimnumber_340540(g, pos);
		}
		break;
		case 39:
		{
			pos += ((NI) 1);
			(*g).kind = ((NU8) 12);
			{
				while (1) {
					switch (((NU8)((*g).buf[pos]))) {
					case 0:
					case 13:
					case 10:
					{
						goto LA85;
					}
					break;
					case 39:
					{
						pos += ((NI) 1);
						goto LA85;
					}
					break;
					case 92:
					{
						pos += ((NI) 2);
					}
					break;
					default:
					{
						pos += ((NI) 1);
					}
					break;
					}
				}
			} LA85: ;
		}
		break;
		case 34:
		{
			pos += ((NI) 1);
			{
				NIM_BOOL LOC94;
				LOC94 = 0;
				LOC94 = ((NU8)((*g).buf[pos]) == (NU8)(34));
				if (!(LOC94)) goto LA95;
				LOC94 = ((NU8)((*g).buf[(NI)(pos + ((NI) 1))]) == (NU8)(34));
				LA95: ;
				if (!LOC94) goto LA96;
				pos += ((NI) 2);
				(*g).kind = ((NU8) 11);
				{
					while (1) {
						switch (((NU8)((*g).buf[pos]))) {
						case 0:
						{
							goto LA98;
						}
						break;
						case 34:
						{
							pos += ((NI) 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[(NI)(pos + ((NI) 1))]) == (NU8)(34));
								LA106: ;
								LOC104 = LOC105;
								if (!(LOC104)) goto LA107;
								LOC104 = !(((NU8)((*g).buf[(NI)(pos + ((NI) 2))]) == (NU8)(34)));
								LA107: ;
								if (!LOC104) goto LA108;
								pos += ((NI) 2);
								goto LA98;
							}
							LA108: ;
						}
						break;
						default:
						{
							pos += ((NI) 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 += ((NI) 1);
							goto LA112;
						}
						break;
						case 92:
						{
							(*g).state = (*g).kind;
							goto LA112;
						}
						break;
						default:
						{
							pos += ((NI) 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 += ((NI) 1);
			(*g).kind = ((NU8) 15);
		}
		break;
		case 0:
		{
			(*g).kind = ((NU8) 0);
		}
		break;
		default:
		{
			{
				if (!((TMP2404[((NU8)((*g).buf[pos]))/8] &(1<<(((NU8)((*g).buf[pos]))%8)))!=0)) goto LA123;
				(*g).kind = ((NU8) 14);
				{
					while (1) {
						if (!((TMP2404[((NU8)((*g).buf[pos]))/8] &(1<<(((NU8)((*g).buf[pos]))%8)))!=0)) goto LA126;
						pos += ((NI) 1);
					} LA126: ;
				}
			}
			goto LA121;
			LA123: ;
			{
				pos += ((NI) 1);
				(*g).kind = ((NU8) 1);
			}
			LA121: ;
		}
		break;
		}
	}
	LA1: ;
	(*g).length = (NI)(pos - (*g).pos);
	{
		NIM_BOOL LOC130;
		LOC130 = 0;
		LOC130 = !(((*g).kind == ((NU8) 0)));
		if (!(LOC130)) goto LA131;
		LOC130 = ((*g).length <= ((NI) 0));
		LA131: ;
		if (!LOC130) goto LA132;
	}
	LA132: ;
	(*g).pos = pos;
}

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

N_NIMCALL(NI, generalnumber_341505)(Generaltokenizer340023* 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 += ((NI) 1);
		} LA2: ;
	}
	{
		if (!((NU8)((*g).buf[pos]) == (NU8)(46))) goto LA5;
		(*g).kind = ((NU8) 7);
		pos += ((NI) 1);
		{
			while (1) {
				if (!(((NU8)((*g).buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).buf[pos])) <= ((NU8)(57)))) goto LA8;
				pos += ((NI) 1);
			} LA8: ;
		}
	}
	LA5: ;
	{
		if (!(((NU8)((*g).buf[pos])) == ((NU8)(101)) || ((NU8)((*g).buf[pos])) == ((NU8)(69)))) goto LA11;
		(*g).kind = ((NU8) 7);
		pos += ((NI) 1);
		{
			if (!(((NU8)((*g).buf[pos])) == ((NU8)(43)) || ((NU8)((*g).buf[pos])) == ((NU8)(45)))) goto LA15;
			pos += ((NI) 1);
		}
		LA15: ;
		{
			while (1) {
				if (!(((NU8)((*g).buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).buf[pos])) <= ((NU8)(57)))) goto LA18;
				pos += ((NI) 1);
			} LA18: ;
		}
	}
	LA11: ;
	result = pos;
	return result;
}

N_NIMCALL(NI, generalstrlit_341647)(Generaltokenizer340023* g, NI position) {
	NI result;
	NI pos;
	NIM_CHAR c;
	result = 0;
	pos = position;
	(*g).kind = ((NU8) 10);
	c = (*g).buf[pos];
	pos += ((NI) 1);
	{
		while (1) {
			switch (((NU8)((*g).buf[pos]))) {
			case 0:
			{
				goto LA1;
			}
			break;
			case 92:
			{
				pos += ((NI) 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 += ((NI) 1);
						} LA8: ;
					}
				}
				break;
				case 120:
				case 88:
				{
					pos += ((NI) 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 += ((NI) 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 += ((NI) 1);
					}
					LA16: ;
				}
				break;
				default:
				{
					pos += ((NI) 2);
				}
				break;
				}
			}
			break;
			default:
			{
				{
					if (!((NU8)((*g).buf[pos]) == (NU8)(c))) goto LA22;
					pos += ((NI) 1);
					goto LA1;
				}
				goto LA20;
				LA22: ;
				{
					pos += ((NI) 1);
				}
				LA20: ;
			}
			break;
			}
		}
	} LA1: ;
	result = pos;
	return result;
}

N_NIMCALL(void, clikenexttoken_341864)(Generaltokenizer340023* 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 += ((NI) 1);
					switch (((NU8)((*g).buf[pos]))) {
					case 120:
					case 88:
					{
						pos += ((NI) 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 += ((NI) 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 += ((NI) 1);
						}
						LA15: ;
					}
					break;
					case 48 ... 57:
					{
						{
							while (1) {
								if (!(((NU8)((*g).buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).buf[pos])) <= ((NU8)(57)))) goto LA19;
								pos += ((NI) 1);
							} LA19: ;
						}
					}
					break;
					case 0:
					{
						(*g).state = ((NU8) 1);
					}
					break;
					default:
					{
						pos += ((NI) 1);
					}
					break;
					}
					goto LA5;
				}
				break;
				case 0:
				case 13:
				case 10:
				{
					(*g).state = ((NU8) 1);
					goto LA5;
				}
				break;
				case 34:
				{
					pos += ((NI) 1);
					(*g).state = ((NU8) 1);
					goto LA5;
				}
				break;
				default:
				{
					pos += ((NI) 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 += ((NI) 1);
				} LA28: ;
			}
		}
		break;
		case 47:
		{
			pos += ((NI) 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 += ((NI) 1);
					} LA35: ;
				}
			}
			goto LA30;
			LA32: ;
			{
				NI nested;
				if (!((NU8)((*g).buf[pos]) == (NU8)(42))) goto LA37;
				(*g).kind = ((NU8) 17);
				nested = ((NI) 0);
				pos += ((NI) 1);
				{
					while (1) {
						switch (((NU8)((*g).buf[pos]))) {
						case 42:
						{
							pos += ((NI) 1);
							{
								if (!((NU8)((*g).buf[pos]) == (NU8)(47))) goto LA44;
								pos += ((NI) 1);
								{
									if (!(nested == ((NI) 0))) goto LA48;
									goto LA39;
								}
								LA48: ;
							}
							LA44: ;
						}
						break;
						case 47:
						{
							pos += ((NI) 1);
							{
								if (!((NU8)((*g).buf[pos]) == (NU8)(42))) goto LA53;
								pos += ((NI) 1);
								{
									if (!((flags &(1<<((((NU8) 1))&7)))!=0)) goto LA57;
									nested += ((NI) 1);
								}
								LA57: ;
							}
							LA53: ;
						}
						break;
						case 0:
						{
							goto LA39;
						}
						break;
						default:
						{
							pos += ((NI) 1);
						}
						break;
						}
					}
				} LA39: ;
			}
			goto LA30;
			LA37: ;
			LA30: ;
		}
		break;
		case 35:
		{
			pos += ((NI) 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 += ((NI) 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 += ((NI) 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*) &TMP2333));
			{
				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 += ((NI) 1);
				} LA73: ;
			}
			{
				NI LOC76;
				LOC76 = 0;
				LOC76 = iskeyword_341790(keywords, keywordsLen0, id);
				if (!(((NI) 0) <= LOC76)) goto LA77;
				(*g).kind = ((NU8) 9);
			}
			goto LA74;
			LA77: ;
			{
				(*g).kind = ((NU8) 8);
			}
			LA74: ;
		}
		break;
		case 48:
		{
			pos += ((NI) 1);
			switch (((NU8)((*g).buf[pos]))) {
			case 98:
			case 66:
			{
				pos += ((NI) 1);
				{
					while (1) {
						if (!(((NU8)((*g).buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).buf[pos])) <= ((NU8)(49)))) goto LA83;
						pos += ((NI) 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 += ((NI) 1);
				}
				LA86: ;
			}
			break;
			case 120:
			case 88:
			{
				pos += ((NI) 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 += ((NI) 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 += ((NI) 1);
				}
				LA93: ;
			}
			break;
			case 48 ... 55:
			{
				pos += ((NI) 1);
				{
					while (1) {
						if (!(((NU8)((*g).buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).buf[pos])) <= ((NU8)(55)))) goto LA97;
						pos += ((NI) 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 += ((NI) 1);
				}
				LA100: ;
			}
			break;
			default:
			{
				pos = generalnumber_341505(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 += ((NI) 1);
				}
				LA105: ;
			}
			break;
			}
		}
		break;
		case 49 ... 57:
		{
			pos = generalnumber_341505(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 += ((NI) 1);
			}
			LA110: ;
		}
		break;
		case 39:
		{
			pos = generalstrlit_341647(g, pos);
			(*g).kind = ((NU8) 12);
		}
		break;
		case 34:
		{
			pos += ((NI) 1);
			(*g).kind = ((NU8) 10);
			{
				while (1) {
					switch (((NU8)((*g).buf[pos]))) {
					case 0:
					{
						goto LA114;
					}
					break;
					case 34:
					{
						pos += ((NI) 1);
						goto LA114;
					}
					break;
					case 92:
					{
						(*g).state = (*g).kind;
						goto LA114;
					}
					break;
					default:
					{
						pos += ((NI) 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 += ((NI) 1);
			(*g).kind = ((NU8) 15);
		}
		break;
		case 0:
		{
			(*g).kind = ((NU8) 0);
		}
		break;
		default:
		{
			{
				if (!((TMP2404[((NU8)((*g).buf[pos]))/8] &(1<<(((NU8)((*g).buf[pos]))%8)))!=0)) goto LA125;
				(*g).kind = ((NU8) 14);
				{
					while (1) {
						if (!((TMP2404[((NU8)((*g).buf[pos]))/8] &(1<<(((NU8)((*g).buf[pos]))%8)))!=0)) goto LA128;
						pos += ((NI) 1);
					} LA128: ;
				}
			}
			goto LA123;
			LA125: ;
			{
				pos += ((NI) 1);
				(*g).kind = ((NU8) 1);
			}
			LA123: ;
		}
		break;
		}
	}
	LA1: ;
	(*g).length = (NI)(pos - (*g).pos);
	{
		NIM_BOOL LOC132;
		LOC132 = 0;
		LOC132 = !(((*g).kind == ((NU8) 0)));
		if (!(LOC132)) goto LA133;
		LOC132 = ((*g).length <= ((NI) 0));
		LA133: ;
		if (!LOC132) goto LA134;
	}
	LA134: ;
	(*g).pos = pos;
}

N_NIMCALL(void, cppnexttoken_342714)(Generaltokenizer340023* g) {
	clikenexttoken_341864(g, TMP2405, 48, 1);
}

N_NIMCALL(void, csharpnexttoken_342731)(Generaltokenizer340023* g) {
	clikenexttoken_341864(g, TMP2439, 77, 1);
}

N_NIMCALL(void, cnexttoken_342698)(Generaltokenizer340023* g) {
	clikenexttoken_341864(g, TMP2471, 37, 1);
}

N_NIMCALL(void, javanexttoken_342748)(Generaltokenizer340023* g) {
	clikenexttoken_341864(g, TMP2476, 53, 0);
}

N_NIMCALL(void, getnexttoken_342766)(Generaltokenizer340023* g, NU8 lang) {
	switch (lang) {
	case ((NU8) 0):
	{
	}
	break;
	case ((NU8) 1):
	case ((NU8) 2):
	{
		nimnexttoken_340687(g);
	}
	break;
	case ((NU8) 3):
	{
		cppnexttoken_342714(g);
	}
	break;
	case ((NU8) 4):
	{
		csharpnexttoken_342731(g);
	}
	break;
	case ((NU8) 5):
	{
		cnexttoken_342698(g);
	}
	break;
	case ((NU8) 6):
	{
		javanexttoken_342748(g);
	}
	break;
	}
}

N_NIMCALL(void, deinitgeneraltokenizer_340300)(Generaltokenizer340023* g) {
}
NIM_EXTERNC N_NOINLINE(void, docutils_highliteInit000)(void) {
}

NIM_EXTERNC N_NOINLINE(void, docutils_highliteDatInit000)(void) {
static TNimNode* TMP2329[6];
static TNimNode* TMP2330[33];
NI TMP2332;
static char* NIM_CONST TMP2331[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 TMP971[41];
NTI340023.size = sizeof(Generaltokenizer340023);
NTI340023.kind = 17;
NTI340023.base = (&NTI4011);
NTI340023.flags = 1;
TMP2329[0] = &TMP971[1];
NTI340021.size = sizeof(NU8);
NTI340021.kind = 14;
NTI340021.base = 0;
NTI340021.flags = 3;
for (TMP2332 = 0; TMP2332 < 33; TMP2332++) {
TMP971[TMP2332+2].kind = 1;
TMP971[TMP2332+2].offset = TMP2332;
TMP971[TMP2332+2].name = TMP2331[TMP2332];
TMP2330[TMP2332] = &TMP971[TMP2332+2];
}
TMP971[35].len = 33; TMP971[35].kind = 2; TMP971[35].sons = &TMP2330[0];
NTI340021.node = &TMP971[35];
TMP971[1].kind = 1;
TMP971[1].offset = offsetof(Generaltokenizer340023, kind);
TMP971[1].typ = (&NTI340021);
TMP971[1].name = "kind";
TMP2329[1] = &TMP971[36];
TMP971[36].kind = 1;
TMP971[36].offset = offsetof(Generaltokenizer340023, start);
TMP971[36].typ = (&NTI108);
TMP971[36].name = "start";
TMP2329[2] = &TMP971[37];
TMP971[37].kind = 1;
TMP971[37].offset = offsetof(Generaltokenizer340023, length);
TMP971[37].typ = (&NTI108);
TMP971[37].name = "length";
TMP2329[3] = &TMP971[38];
TMP971[38].kind = 1;
TMP971[38].offset = offsetof(Generaltokenizer340023, buf);
TMP971[38].typ = (&NTI151);
TMP971[38].name = "buf";
TMP2329[4] = &TMP971[39];
TMP971[39].kind = 1;
TMP971[39].offset = offsetof(Generaltokenizer340023, pos);
TMP971[39].typ = (&NTI108);
TMP971[39].name = "pos";
TMP2329[5] = &TMP971[40];
TMP971[40].kind = 1;
TMP971[40].offset = offsetof(Generaltokenizer340023, state);
TMP971[40].typ = (&NTI340021);
TMP971[40].name = "state";
TMP971[0].len = 6; TMP971[0].kind = 2; TMP971[0].sons = &TMP2329[0];
NTI340023.node = &TMP971[0];
}

