/* Generated by Nimrod Compiler v0.9.5 */
/*   (c) 2014 Andreas Rumpf */
/* The generated code is subject to the original license. */
/* Compiled for: Linux, i386, gcc */
/* Command for C compiler:
   gcc -c  -w -O3 -fno-strict-aliasing  -I/build/nimrod/src/nimrod/lib -o compiler/nimcache/docutils_highlite.o compiler/nimcache/docutils_highlite.c */
#define NIM_INTBITS 32
#include "nimbase.h"
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tgeneraltokenizer305015 tgeneraltokenizer305015;
typedef struct TNimObject TNimObject;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef NimStringDesc* TY305065[6];
typedef N_NIMCALL_PTR(void, TY2289) (void* p, NI op);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY2289 marker;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  tgeneraltokenizer305015  {
  TNimObject Sup;
NU8 Kind;
NI Start;
NI Length;
NCSTRING Buf;
NI Pos;
NU8 State;
};
typedef NimStringDesc* TY305077[68];
typedef NU8 TY90161[32];
typedef NimStringDesc* TY308033[48];
typedef NimStringDesc* TY308045[77];
typedef NimStringDesc* TY308021[37];
typedef NimStringDesc* TY308058[53];
typedef NimStringDesc* TY305071[33];
N_NIMCALL(NI, nsuCmpIgnoreStyle)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(void, initgeneraltokenizer_305149)(tgeneraltokenizer305015* g, NCSTRING buf);
N_NIMCALL(void, nimnexttoken_305763)(tgeneraltokenizer305015* g);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(NU8, nimgetkeyword_305205)(NimStringDesc* id);
N_NIMCALL(NI, nimnumberpostfix_305406)(tgeneraltokenizer305015* g, NI position);
N_NIMCALL(NI, nimnumber_305583)(tgeneraltokenizer305015* g, NI position);
N_NIMCALL(void, cppnexttoken_308028)(tgeneraltokenizer305015* g);
N_NIMCALL(void, clikenexttoken_307044)(tgeneraltokenizer305015* g, NimStringDesc** keywords, NI keywordsLen0, NU8 flags);
N_NIMCALL(NI, iskeyword_306993)(NimStringDesc** x, NI xLen0, NimStringDesc* y);
N_NIMCALL(NI, cmp_3490)(NimStringDesc* x, NimStringDesc* y);
N_NIMCALL(NI, generalnumber_306617)(tgeneraltokenizer305015* g, NI position);
N_NIMCALL(NI, generalstrlit_306794)(tgeneraltokenizer305015* g, NI position);
N_NIMCALL(void, csharpnexttoken_308040)(tgeneraltokenizer305015* g);
N_NIMCALL(void, cnexttoken_308016)(tgeneraltokenizer305015* g);
N_NIMCALL(void, javanexttoken_308053)(tgeneraltokenizer305015* g);
STRING_LITERAL(TMP2087, "none", 4);
STRING_LITERAL(TMP2088, "Nimrod", 6);
STRING_LITERAL(TMP2089, "C++", 3);
STRING_LITERAL(TMP2090, "C#", 2);
STRING_LITERAL(TMP2091, "C", 1);
STRING_LITERAL(TMP2092, "Java", 4);
NIM_CONST TY305065 sourcelanguagetostr_305064 = {((NimStringDesc*) &TMP2087),
((NimStringDesc*) &TMP2088),
((NimStringDesc*) &TMP2089),
((NimStringDesc*) &TMP2090),
((NimStringDesc*) &TMP2091),
((NimStringDesc*) &TMP2092)}
;
STRING_LITERAL(TMP2099, "", 0);
STRING_LITERAL(TMP2100, "addr", 4);
STRING_LITERAL(TMP2101, "and", 3);
STRING_LITERAL(TMP2102, "as", 2);
STRING_LITERAL(TMP2103, "asm", 3);
STRING_LITERAL(TMP2104, "atomic", 6);
STRING_LITERAL(TMP2105, "bind", 4);
STRING_LITERAL(TMP2106, "block", 5);
STRING_LITERAL(TMP2107, "break", 5);
STRING_LITERAL(TMP2108, "case", 4);
STRING_LITERAL(TMP2109, "cast", 4);
STRING_LITERAL(TMP2110, "const", 5);
STRING_LITERAL(TMP2111, "continue", 8);
STRING_LITERAL(TMP2112, "converter", 9);
STRING_LITERAL(TMP2113, "discard", 7);
STRING_LITERAL(TMP2114, "distinct", 8);
STRING_LITERAL(TMP2115, "div", 3);
STRING_LITERAL(TMP2116, "do", 2);
STRING_LITERAL(TMP2117, "elif", 4);
STRING_LITERAL(TMP2118, "else", 4);
STRING_LITERAL(TMP2119, "end", 3);
STRING_LITERAL(TMP2120, "enum", 4);
STRING_LITERAL(TMP2121, "except", 6);
STRING_LITERAL(TMP2122, "export", 6);
STRING_LITERAL(TMP2123, "finally", 7);
STRING_LITERAL(TMP2124, "for", 3);
STRING_LITERAL(TMP2125, "from", 4);
STRING_LITERAL(TMP2126, "generic", 7);
STRING_LITERAL(TMP2127, "if", 2);
STRING_LITERAL(TMP2128, "import", 6);
STRING_LITERAL(TMP2129, "in", 2);
STRING_LITERAL(TMP2130, "include", 7);
STRING_LITERAL(TMP2131, "interface", 9);
STRING_LITERAL(TMP2132, "is", 2);
STRING_LITERAL(TMP2133, "isnot", 5);
STRING_LITERAL(TMP2134, "iterator", 8);
STRING_LITERAL(TMP2135, "lambda", 6);
STRING_LITERAL(TMP2136, "let", 3);
STRING_LITERAL(TMP2137, "macro", 5);
STRING_LITERAL(TMP2138, "method", 6);
STRING_LITERAL(TMP2139, "mixin", 5);
STRING_LITERAL(TMP2140, "mod", 3);
STRING_LITERAL(TMP2141, "nil", 3);
STRING_LITERAL(TMP2142, "not", 3);
STRING_LITERAL(TMP2143, "notin", 5);
STRING_LITERAL(TMP2144, "object", 6);
STRING_LITERAL(TMP2145, "of", 2);
STRING_LITERAL(TMP2146, "or", 2);
STRING_LITERAL(TMP2147, "out", 3);
STRING_LITERAL(TMP2148, "proc", 4);
STRING_LITERAL(TMP2149, "ptr", 3);
STRING_LITERAL(TMP2150, "raise", 5);
STRING_LITERAL(TMP2151, "ref", 3);
STRING_LITERAL(TMP2152, "return", 6);
STRING_LITERAL(TMP2153, "shl", 3);
STRING_LITERAL(TMP2154, "shr", 3);
STRING_LITERAL(TMP2155, "static", 6);
STRING_LITERAL(TMP2156, "template", 8);
STRING_LITERAL(TMP2157, "try", 3);
STRING_LITERAL(TMP2158, "tuple", 5);
STRING_LITERAL(TMP2159, "type", 4);
STRING_LITERAL(TMP2160, "using", 5);
STRING_LITERAL(TMP2161, "var", 3);
STRING_LITERAL(TMP2162, "when", 4);
STRING_LITERAL(TMP2163, "while", 5);
STRING_LITERAL(TMP2164, "with", 4);
STRING_LITERAL(TMP2165, "without", 7);
STRING_LITERAL(TMP2166, "xor", 3);
STRING_LITERAL(TMP2167, "yield", 5);
NIM_CONST TY305077 nimrodkeywords_305076 = {((NimStringDesc*) &TMP2100),
((NimStringDesc*) &TMP2101),
((NimStringDesc*) &TMP2102),
((NimStringDesc*) &TMP2103),
((NimStringDesc*) &TMP2104),
((NimStringDesc*) &TMP2105),
((NimStringDesc*) &TMP2106),
((NimStringDesc*) &TMP2107),
((NimStringDesc*) &TMP2108),
((NimStringDesc*) &TMP2109),
((NimStringDesc*) &TMP2110),
((NimStringDesc*) &TMP2111),
((NimStringDesc*) &TMP2112),
((NimStringDesc*) &TMP2113),
((NimStringDesc*) &TMP2114),
((NimStringDesc*) &TMP2115),
((NimStringDesc*) &TMP2116),
((NimStringDesc*) &TMP2117),
((NimStringDesc*) &TMP2118),
((NimStringDesc*) &TMP2119),
((NimStringDesc*) &TMP2120),
((NimStringDesc*) &TMP2121),
((NimStringDesc*) &TMP2122),
((NimStringDesc*) &TMP2123),
((NimStringDesc*) &TMP2124),
((NimStringDesc*) &TMP2125),
((NimStringDesc*) &TMP2126),
((NimStringDesc*) &TMP2127),
((NimStringDesc*) &TMP2128),
((NimStringDesc*) &TMP2129),
((NimStringDesc*) &TMP2130),
((NimStringDesc*) &TMP2131),
((NimStringDesc*) &TMP2132),
((NimStringDesc*) &TMP2133),
((NimStringDesc*) &TMP2134),
((NimStringDesc*) &TMP2135),
((NimStringDesc*) &TMP2136),
((NimStringDesc*) &TMP2137),
((NimStringDesc*) &TMP2138),
((NimStringDesc*) &TMP2139),
((NimStringDesc*) &TMP2140),
((NimStringDesc*) &TMP2141),
((NimStringDesc*) &TMP2142),
((NimStringDesc*) &TMP2143),
((NimStringDesc*) &TMP2144),
((NimStringDesc*) &TMP2145),
((NimStringDesc*) &TMP2146),
((NimStringDesc*) &TMP2147),
((NimStringDesc*) &TMP2148),
((NimStringDesc*) &TMP2149),
((NimStringDesc*) &TMP2150),
((NimStringDesc*) &TMP2151),
((NimStringDesc*) &TMP2152),
((NimStringDesc*) &TMP2153),
((NimStringDesc*) &TMP2154),
((NimStringDesc*) &TMP2155),
((NimStringDesc*) &TMP2156),
((NimStringDesc*) &TMP2157),
((NimStringDesc*) &TMP2158),
((NimStringDesc*) &TMP2159),
((NimStringDesc*) &TMP2160),
((NimStringDesc*) &TMP2161),
((NimStringDesc*) &TMP2162),
((NimStringDesc*) &TMP2163),
((NimStringDesc*) &TMP2164),
((NimStringDesc*) &TMP2165),
((NimStringDesc*) &TMP2166),
((NimStringDesc*) &TMP2167)}
;
static NIM_CONST TY90161 TMP2168 = {
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(TMP2170, "auto", 4);
STRING_LITERAL(TMP2171, "catch", 5);
STRING_LITERAL(TMP2172, "char", 4);
STRING_LITERAL(TMP2173, "class", 5);
STRING_LITERAL(TMP2174, "default", 7);
STRING_LITERAL(TMP2175, "delete", 6);
STRING_LITERAL(TMP2176, "double", 6);
STRING_LITERAL(TMP2177, "extern", 6);
STRING_LITERAL(TMP2178, "float", 5);
STRING_LITERAL(TMP2179, "friend", 6);
STRING_LITERAL(TMP2180, "goto", 4);
STRING_LITERAL(TMP2181, "inline", 6);
STRING_LITERAL(TMP2182, "int", 3);
STRING_LITERAL(TMP2183, "long", 4);
STRING_LITERAL(TMP2184, "new", 3);
STRING_LITERAL(TMP2185, "operator", 8);
STRING_LITERAL(TMP2186, "private", 7);
STRING_LITERAL(TMP2187, "protected", 9);
STRING_LITERAL(TMP2188, "public", 6);
STRING_LITERAL(TMP2189, "register", 8);
STRING_LITERAL(TMP2190, "short", 5);
STRING_LITERAL(TMP2191, "signed", 6);
STRING_LITERAL(TMP2192, "sizeof", 6);
STRING_LITERAL(TMP2193, "struct", 6);
STRING_LITERAL(TMP2194, "switch", 6);
STRING_LITERAL(TMP2195, "this", 4);
STRING_LITERAL(TMP2196, "throw", 5);
STRING_LITERAL(TMP2197, "typedef", 7);
STRING_LITERAL(TMP2198, "union", 5);
STRING_LITERAL(TMP2199, "unsigned", 8);
STRING_LITERAL(TMP2200, "virtual", 7);
STRING_LITERAL(TMP2201, "void", 4);
STRING_LITERAL(TMP2202, "volatile", 8);
NIM_CONST TY308033 TMP2169 = {((NimStringDesc*) &TMP2103),
((NimStringDesc*) &TMP2170),
((NimStringDesc*) &TMP2107),
((NimStringDesc*) &TMP2108),
((NimStringDesc*) &TMP2171),
((NimStringDesc*) &TMP2172),
((NimStringDesc*) &TMP2173),
((NimStringDesc*) &TMP2110),
((NimStringDesc*) &TMP2111),
((NimStringDesc*) &TMP2174),
((NimStringDesc*) &TMP2175),
((NimStringDesc*) &TMP2116),
((NimStringDesc*) &TMP2176),
((NimStringDesc*) &TMP2118),
((NimStringDesc*) &TMP2120),
((NimStringDesc*) &TMP2177),
((NimStringDesc*) &TMP2178),
((NimStringDesc*) &TMP2124),
((NimStringDesc*) &TMP2179),
((NimStringDesc*) &TMP2180),
((NimStringDesc*) &TMP2127),
((NimStringDesc*) &TMP2181),
((NimStringDesc*) &TMP2182),
((NimStringDesc*) &TMP2183),
((NimStringDesc*) &TMP2184),
((NimStringDesc*) &TMP2185),
((NimStringDesc*) &TMP2186),
((NimStringDesc*) &TMP2187),
((NimStringDesc*) &TMP2188),
((NimStringDesc*) &TMP2189),
((NimStringDesc*) &TMP2152),
((NimStringDesc*) &TMP2190),
((NimStringDesc*) &TMP2191),
((NimStringDesc*) &TMP2192),
((NimStringDesc*) &TMP2155),
((NimStringDesc*) &TMP2193),
((NimStringDesc*) &TMP2194),
((NimStringDesc*) &TMP2156),
((NimStringDesc*) &TMP2195),
((NimStringDesc*) &TMP2196),
((NimStringDesc*) &TMP2157),
((NimStringDesc*) &TMP2197),
((NimStringDesc*) &TMP2198),
((NimStringDesc*) &TMP2199),
((NimStringDesc*) &TMP2200),
((NimStringDesc*) &TMP2201),
((NimStringDesc*) &TMP2202),
((NimStringDesc*) &TMP2163)}
;
STRING_LITERAL(TMP2204, "abstract", 8);
STRING_LITERAL(TMP2205, "base", 4);
STRING_LITERAL(TMP2206, "bool", 4);
STRING_LITERAL(TMP2207, "byte", 4);
STRING_LITERAL(TMP2208, "checked", 7);
STRING_LITERAL(TMP2209, "decimal", 7);
STRING_LITERAL(TMP2210, "delegate", 8);
STRING_LITERAL(TMP2211, "event", 5);
STRING_LITERAL(TMP2212, "explicit", 8);
STRING_LITERAL(TMP2213, "false", 5);
STRING_LITERAL(TMP2214, "fixed", 5);
STRING_LITERAL(TMP2215, "foreach", 7);
STRING_LITERAL(TMP2216, "implicit", 8);
STRING_LITERAL(TMP2217, "internal", 8);
STRING_LITERAL(TMP2218, "lock", 4);
STRING_LITERAL(TMP2219, "namespace", 9);
STRING_LITERAL(TMP2220, "null", 4);
STRING_LITERAL(TMP2221, "override", 8);
STRING_LITERAL(TMP2222, "params", 6);
STRING_LITERAL(TMP2223, "readonly", 8);
STRING_LITERAL(TMP2224, "sbyte", 5);
STRING_LITERAL(TMP2225, "sealed", 6);
STRING_LITERAL(TMP2226, "stackalloc", 10);
STRING_LITERAL(TMP2227, "string", 6);
STRING_LITERAL(TMP2228, "true", 4);
STRING_LITERAL(TMP2229, "typeof", 6);
STRING_LITERAL(TMP2230, "uint", 4);
STRING_LITERAL(TMP2231, "ulong", 5);
STRING_LITERAL(TMP2232, "unchecked", 9);
STRING_LITERAL(TMP2233, "unsafe", 6);
STRING_LITERAL(TMP2234, "ushort", 6);
NIM_CONST TY308045 TMP2203 = {((NimStringDesc*) &TMP2204),
((NimStringDesc*) &TMP2102),
((NimStringDesc*) &TMP2205),
((NimStringDesc*) &TMP2206),
((NimStringDesc*) &TMP2107),
((NimStringDesc*) &TMP2207),
((NimStringDesc*) &TMP2108),
((NimStringDesc*) &TMP2171),
((NimStringDesc*) &TMP2172),
((NimStringDesc*) &TMP2208),
((NimStringDesc*) &TMP2173),
((NimStringDesc*) &TMP2110),
((NimStringDesc*) &TMP2111),
((NimStringDesc*) &TMP2209),
((NimStringDesc*) &TMP2174),
((NimStringDesc*) &TMP2210),
((NimStringDesc*) &TMP2116),
((NimStringDesc*) &TMP2176),
((NimStringDesc*) &TMP2118),
((NimStringDesc*) &TMP2120),
((NimStringDesc*) &TMP2211),
((NimStringDesc*) &TMP2212),
((NimStringDesc*) &TMP2177),
((NimStringDesc*) &TMP2213),
((NimStringDesc*) &TMP2123),
((NimStringDesc*) &TMP2214),
((NimStringDesc*) &TMP2178),
((NimStringDesc*) &TMP2124),
((NimStringDesc*) &TMP2215),
((NimStringDesc*) &TMP2180),
((NimStringDesc*) &TMP2127),
((NimStringDesc*) &TMP2216),
((NimStringDesc*) &TMP2129),
((NimStringDesc*) &TMP2182),
((NimStringDesc*) &TMP2131),
((NimStringDesc*) &TMP2217),
((NimStringDesc*) &TMP2132),
((NimStringDesc*) &TMP2218),
((NimStringDesc*) &TMP2183),
((NimStringDesc*) &TMP2219),
((NimStringDesc*) &TMP2184),
((NimStringDesc*) &TMP2220),
((NimStringDesc*) &TMP2144),
((NimStringDesc*) &TMP2185),
((NimStringDesc*) &TMP2147),
((NimStringDesc*) &TMP2221),
((NimStringDesc*) &TMP2222),
((NimStringDesc*) &TMP2186),
((NimStringDesc*) &TMP2187),
((NimStringDesc*) &TMP2188),
((NimStringDesc*) &TMP2223),
((NimStringDesc*) &TMP2151),
((NimStringDesc*) &TMP2152),
((NimStringDesc*) &TMP2224),
((NimStringDesc*) &TMP2225),
((NimStringDesc*) &TMP2190),
((NimStringDesc*) &TMP2192),
((NimStringDesc*) &TMP2226),
((NimStringDesc*) &TMP2155),
((NimStringDesc*) &TMP2227),
((NimStringDesc*) &TMP2193),
((NimStringDesc*) &TMP2194),
((NimStringDesc*) &TMP2195),
((NimStringDesc*) &TMP2196),
((NimStringDesc*) &TMP2228),
((NimStringDesc*) &TMP2157),
((NimStringDesc*) &TMP2229),
((NimStringDesc*) &TMP2230),
((NimStringDesc*) &TMP2231),
((NimStringDesc*) &TMP2232),
((NimStringDesc*) &TMP2233),
((NimStringDesc*) &TMP2234),
((NimStringDesc*) &TMP2160),
((NimStringDesc*) &TMP2200),
((NimStringDesc*) &TMP2201),
((NimStringDesc*) &TMP2202),
((NimStringDesc*) &TMP2163)}
;
STRING_LITERAL(TMP2236, "_Bool", 5);
STRING_LITERAL(TMP2237, "_Complex", 8);
STRING_LITERAL(TMP2238, "_Imaginary", 10);
STRING_LITERAL(TMP2239, "restrict", 8);
NIM_CONST TY308021 TMP2235 = {((NimStringDesc*) &TMP2236),
((NimStringDesc*) &TMP2237),
((NimStringDesc*) &TMP2238),
((NimStringDesc*) &TMP2170),
((NimStringDesc*) &TMP2107),
((NimStringDesc*) &TMP2108),
((NimStringDesc*) &TMP2172),
((NimStringDesc*) &TMP2110),
((NimStringDesc*) &TMP2111),
((NimStringDesc*) &TMP2174),
((NimStringDesc*) &TMP2116),
((NimStringDesc*) &TMP2176),
((NimStringDesc*) &TMP2118),
((NimStringDesc*) &TMP2120),
((NimStringDesc*) &TMP2177),
((NimStringDesc*) &TMP2178),
((NimStringDesc*) &TMP2124),
((NimStringDesc*) &TMP2180),
((NimStringDesc*) &TMP2127),
((NimStringDesc*) &TMP2181),
((NimStringDesc*) &TMP2182),
((NimStringDesc*) &TMP2183),
((NimStringDesc*) &TMP2189),
((NimStringDesc*) &TMP2239),
((NimStringDesc*) &TMP2152),
((NimStringDesc*) &TMP2190),
((NimStringDesc*) &TMP2191),
((NimStringDesc*) &TMP2192),
((NimStringDesc*) &TMP2155),
((NimStringDesc*) &TMP2193),
((NimStringDesc*) &TMP2194),
((NimStringDesc*) &TMP2197),
((NimStringDesc*) &TMP2198),
((NimStringDesc*) &TMP2199),
((NimStringDesc*) &TMP2201),
((NimStringDesc*) &TMP2202),
((NimStringDesc*) &TMP2163)}
;
STRING_LITERAL(TMP2241, "assert", 6);
STRING_LITERAL(TMP2242, "boolean", 7);
STRING_LITERAL(TMP2243, "extends", 7);
STRING_LITERAL(TMP2244, "final", 5);
STRING_LITERAL(TMP2245, "implements", 10);
STRING_LITERAL(TMP2246, "instanceof", 10);
STRING_LITERAL(TMP2247, "native", 6);
STRING_LITERAL(TMP2248, "package", 7);
STRING_LITERAL(TMP2249, "strictfp", 8);
STRING_LITERAL(TMP2250, "super", 5);
STRING_LITERAL(TMP2251, "synchronized", 12);
STRING_LITERAL(TMP2252, "throws", 6);
STRING_LITERAL(TMP2253, "transient", 9);
NIM_CONST TY308058 TMP2240 = {((NimStringDesc*) &TMP2204),
((NimStringDesc*) &TMP2241),
((NimStringDesc*) &TMP2242),
((NimStringDesc*) &TMP2107),
((NimStringDesc*) &TMP2207),
((NimStringDesc*) &TMP2108),
((NimStringDesc*) &TMP2171),
((NimStringDesc*) &TMP2172),
((NimStringDesc*) &TMP2173),
((NimStringDesc*) &TMP2110),
((NimStringDesc*) &TMP2111),
((NimStringDesc*) &TMP2174),
((NimStringDesc*) &TMP2116),
((NimStringDesc*) &TMP2176),
((NimStringDesc*) &TMP2118),
((NimStringDesc*) &TMP2120),
((NimStringDesc*) &TMP2243),
((NimStringDesc*) &TMP2213),
((NimStringDesc*) &TMP2244),
((NimStringDesc*) &TMP2123),
((NimStringDesc*) &TMP2178),
((NimStringDesc*) &TMP2124),
((NimStringDesc*) &TMP2180),
((NimStringDesc*) &TMP2127),
((NimStringDesc*) &TMP2245),
((NimStringDesc*) &TMP2128),
((NimStringDesc*) &TMP2246),
((NimStringDesc*) &TMP2182),
((NimStringDesc*) &TMP2131),
((NimStringDesc*) &TMP2183),
((NimStringDesc*) &TMP2247),
((NimStringDesc*) &TMP2184),
((NimStringDesc*) &TMP2220),
((NimStringDesc*) &TMP2248),
((NimStringDesc*) &TMP2186),
((NimStringDesc*) &TMP2187),
((NimStringDesc*) &TMP2188),
((NimStringDesc*) &TMP2152),
((NimStringDesc*) &TMP2190),
((NimStringDesc*) &TMP2155),
((NimStringDesc*) &TMP2249),
((NimStringDesc*) &TMP2250),
((NimStringDesc*) &TMP2194),
((NimStringDesc*) &TMP2251),
((NimStringDesc*) &TMP2195),
((NimStringDesc*) &TMP2196),
((NimStringDesc*) &TMP2252),
((NimStringDesc*) &TMP2253),
((NimStringDesc*) &TMP2228),
((NimStringDesc*) &TMP2157),
((NimStringDesc*) &TMP2201),
((NimStringDesc*) &TMP2202),
((NimStringDesc*) &TMP2163)}
;
STRING_LITERAL(TMP2256, "Eof", 3);
STRING_LITERAL(TMP2257, "None", 4);
STRING_LITERAL(TMP2258, "Whitespace", 10);
STRING_LITERAL(TMP2259, "DecNumber", 9);
STRING_LITERAL(TMP2260, "BinNumber", 9);
STRING_LITERAL(TMP2261, "HexNumber", 9);
STRING_LITERAL(TMP2262, "OctNumber", 9);
STRING_LITERAL(TMP2263, "FloatNumber", 11);
STRING_LITERAL(TMP2264, "Identifier", 10);
STRING_LITERAL(TMP2265, "Keyword", 7);
STRING_LITERAL(TMP2266, "StringLit", 9);
STRING_LITERAL(TMP2267, "LongStringLit", 13);
STRING_LITERAL(TMP2268, "CharLit", 7);
STRING_LITERAL(TMP2269, "EscapeSequence", 14);
STRING_LITERAL(TMP2270, "Operator", 8);
STRING_LITERAL(TMP2271, "Punctuation", 11);
STRING_LITERAL(TMP2272, "Comment", 7);
STRING_LITERAL(TMP2273, "LongComment", 11);
STRING_LITERAL(TMP2274, "RegularExpression", 17);
STRING_LITERAL(TMP2275, "TagStart", 8);
STRING_LITERAL(TMP2276, "TagEnd", 6);
STRING_LITERAL(TMP2277, "Key", 3);
STRING_LITERAL(TMP2278, "Value", 5);
STRING_LITERAL(TMP2279, "RawData", 7);
STRING_LITERAL(TMP2280, "Assembler", 9);
STRING_LITERAL(TMP2281, "Preprocessor", 12);
STRING_LITERAL(TMP2282, "Directive", 9);
STRING_LITERAL(TMP2283, "Command", 7);
STRING_LITERAL(TMP2284, "Rule", 4);
STRING_LITERAL(TMP2285, "Hyperlink", 9);
STRING_LITERAL(TMP2286, "Label", 5);
STRING_LITERAL(TMP2287, "Reference", 9);
STRING_LITERAL(TMP2288, "Other", 5);
NIM_CONST TY305071 tokenclasstostr_305070 = {((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)}
;
extern TNimType NTI2409; /* TObject */
TNimType NTI305015; /* TGeneralTokenizer */
TNimType NTI305013; /* TTokenClass */
extern TNimType NTI106; /* int */
extern TNimType NTI145; /* cstring */

N_NIMCALL(NU8, getsourcelanguage_305080)(NimStringDesc* name) {
	NU8 result;
	NU8 i_305141;
	NU8 res_305144;
	result = 0;
	i_305141 = 0;
	res_305144 = ((NU8) 1);
	while (1) {
		if (!(res_305144 <= ((NU8) 5))) goto LA1;
		i_305141 = res_305144;
		{
			NI LOC4;
			LOC4 = 0;
			LOC4 = nsuCmpIgnoreStyle(name, sourcelanguagetostr_305064[(i_305141)- 0]);
			if (!(LOC4 == 0)) goto LA5;
			result = i_305141;
			goto BeforeRet;
		}
		LA5: ;
		res_305144 += 1;
	} LA1: ;
	result = ((NU8) 0);
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, initgeneraltokenizer_305149)(tgeneraltokenizer305015* 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 LA1;
		pos += 1;
	} LA1: ;
	(*g).Pos = pos;
}

N_NIMCALL(void, initgeneraltokenizer_305192)(tgeneraltokenizer305015* g, NimStringDesc* buf) {
	initgeneraltokenizer_305149(g, buf->data);
}

N_NIMCALL(NU8, nimgetkeyword_305205)(NimStringDesc* id) {
	NU8 result;
	NimStringDesc* k_305251;
	NI i_305402;
	result = 0;
	k_305251 = 0;
	i_305402 = 0;
	{
		if (!(((NI) (i_305402)) <= 67)) goto LA3;
		while (1) {
			k_305251 = nimrodkeywords_305076[(i_305402)- 0];
			{
				NI LOC8;
				LOC8 = 0;
				LOC8 = nsuCmpIgnoreStyle(id, k_305251);
				if (!(LOC8 == 0)) goto LA9;
				result = ((NU8) 9);
				goto BeforeRet;
			}
			LA9: ;
			{
				if (!(67 <= ((NI) (i_305402)))) goto LA13;
				goto LA5;
			}
			LA13: ;
			i_305402 += 1;
		} LA5: ;
	}
	LA3: ;
	result = ((NU8) 8);
	BeforeRet: ;
	return result;
}

N_NIMCALL(NI, nimnumberpostfix_305406)(tgeneraltokenizer305015* 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_305583)(tgeneraltokenizer305015* 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 LA1;
		pos += 1;
	} LA1: ;
	{
		if (!((NU8)((*g).Buf[pos]) == (NU8)(46))) goto LA4;
		(*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 LA6;
			pos += 1;
		} LA6: ;
	}
	LA4: ;
	{
		if (!(((NU8)((*g).Buf[pos])) == ((NU8)(101)) || ((NU8)((*g).Buf[pos])) == ((NU8)(69)))) goto LA9;
		(*g).Kind = ((NU8) 7);
		pos += 1;
		{
			if (!(((NU8)((*g).Buf[pos])) == ((NU8)(43)) || ((NU8)((*g).Buf[pos])) == ((NU8)(45)))) goto LA13;
			pos += 1;
		}
		LA13: ;
		while (1) {
			if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)) || ((NU8)((*g).Buf[pos])) == ((NU8)(95)))) goto LA15;
			pos += 1;
		} LA15: ;
	}
	LA9: ;
	result = nimnumberpostfix_305406(g, pos);
	return result;
}

N_NIMCALL(void, nimnexttoken_305763)(tgeneraltokenizer305015* 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 LA10;
						pos += 1;
					}
					LA10: ;
					{
						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 LA14;
						pos += 1;
					}
					LA14: ;
				}
				break;
				case 48 ... 57:
				{
					while (1) {
						if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)))) goto LA17;
						pos += 1;
					} LA17: ;
				}
				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 LA25;
				pos += 1;
			} LA25: ;
		}
		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 LA27;
				pos += 1;
			} LA27: ;
		}
		break;
		case 97 ... 122:
		case 65 ... 90:
		case 95:
		case 128 ... 255:
		{
			NimStringDesc* id;
			id = copyString(((NimStringDesc*) &TMP2099));
			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 LA29;
				id = addChar(id, (*g).Buf[pos]);
				pos += 1;
			} LA29: ;
			{
				if (!((NU8)((*g).Buf[pos]) == (NU8)(34))) goto LA32;
				{
					NIM_BOOL LOC36;
					LOC36 = 0;
					LOC36 = ((NU8)((*g).Buf[(NI32)(pos + 1)]) == (NU8)(34));
					if (!(LOC36)) goto LA37;
					LOC36 = ((NU8)((*g).Buf[(NI32)(pos + 2)]) == (NU8)(34));
					LA37: ;
					if (!LOC36) goto LA38;
					pos += 3;
					(*g).Kind = ((NU8) 11);
					while (1) {
						switch (((NU8)((*g).Buf[pos]))) {
						case 0:
						{
							goto LA40;
						}
						break;
						case 34:
						{
							pos += 1;
							{
								NIM_BOOL LOC45;
								NIM_BOOL LOC46;
								LOC45 = 0;
								LOC46 = 0;
								LOC46 = ((NU8)((*g).Buf[pos]) == (NU8)(34));
								if (!(LOC46)) goto LA47;
								LOC46 = ((NU8)((*g).Buf[(NI32)(pos + 1)]) == (NU8)(34));
								LA47: ;
								LOC45 = LOC46;
								if (!(LOC45)) goto LA48;
								LOC45 = !(((NU8)((*g).Buf[(NI32)(pos + 2)]) == (NU8)(34)));
								LA48: ;
								if (!LOC45) goto LA49;
								pos += 2;
								goto LA40;
							}
							LA49: ;
						}
						break;
						default:
						{
							pos += 1;
						}
						break;
						}
					} LA40: ;
				}
				goto LA34;
				LA38: ;
				{
					(*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 LA53;
						{
							NIM_BOOL LOC56;
							LOC56 = 0;
							LOC56 = ((NU8)((*g).Buf[pos]) == (NU8)(34));
							if (!(LOC56)) goto LA57;
							LOC56 = !(((NU8)((*g).Buf[(NI32)(pos + 1)]) == (NU8)(34)));
							LA57: ;
							if (!LOC56) goto LA58;
							goto LA53;
						}
						LA58: ;
						pos += 1;
					} LA53: ;
					{
						if (!((NU8)((*g).Buf[pos]) == (NU8)(34))) goto LA62;
						pos += 1;
					}
					LA62: ;
				}
				LA34: ;
			}
			goto LA30;
			LA32: ;
			{
				(*g).Kind = nimgetkeyword_305205(id);
			}
			LA30: ;
		}
		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 LA67;
					pos += 1;
				} LA67: ;
				pos = nimnumberpostfix_305406(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 LA69;
					pos += 1;
				} LA69: ;
				pos = nimnumberpostfix_305406(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 LA71;
					pos += 1;
				} LA71: ;
				pos = nimnumberpostfix_305406(g, pos);
			}
			break;
			default:
			{
				pos = nimnumber_305583(g, pos);
			}
			break;
			}
		}
		break;
		case 49 ... 57:
		{
			pos = nimnumber_305583(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 LA75;
				}
				break;
				case 39:
				{
					pos += 1;
					goto LA75;
				}
				break;
				case 92:
				{
					pos += 2;
				}
				break;
				default:
				{
					pos += 1;
				}
				break;
				}
			} LA75: ;
		}
		break;
		case 34:
		{
			pos += 1;
			{
				NIM_BOOL LOC83;
				LOC83 = 0;
				LOC83 = ((NU8)((*g).Buf[pos]) == (NU8)(34));
				if (!(LOC83)) goto LA84;
				LOC83 = ((NU8)((*g).Buf[(NI32)(pos + 1)]) == (NU8)(34));
				LA84: ;
				if (!LOC83) goto LA85;
				pos += 2;
				(*g).Kind = ((NU8) 11);
				while (1) {
					switch (((NU8)((*g).Buf[pos]))) {
					case 0:
					{
						goto LA87;
					}
					break;
					case 34:
					{
						pos += 1;
						{
							NIM_BOOL LOC92;
							NIM_BOOL LOC93;
							LOC92 = 0;
							LOC93 = 0;
							LOC93 = ((NU8)((*g).Buf[pos]) == (NU8)(34));
							if (!(LOC93)) goto LA94;
							LOC93 = ((NU8)((*g).Buf[(NI32)(pos + 1)]) == (NU8)(34));
							LA94: ;
							LOC92 = LOC93;
							if (!(LOC92)) goto LA95;
							LOC92 = !(((NU8)((*g).Buf[(NI32)(pos + 2)]) == (NU8)(34)));
							LA95: ;
							if (!LOC92) goto LA96;
							pos += 2;
							goto LA87;
						}
						LA96: ;
					}
					break;
					default:
					{
						pos += 1;
					}
					break;
					}
				} LA87: ;
			}
			goto LA81;
			LA85: ;
			{
				(*g).Kind = ((NU8) 10);
				while (1) {
					switch (((NU8)((*g).Buf[pos]))) {
					case 0:
					case 13:
					case 10:
					{
						goto LA100;
					}
					break;
					case 34:
					{
						pos += 1;
						goto LA100;
					}
					break;
					case 92:
					{
						(*g).State = (*g).Kind;
						goto LA100;
					}
					break;
					default:
					{
						pos += 1;
					}
					break;
					}
				} LA100: ;
			}
			LA81: ;
		}
		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 (!((TMP2168[((NU8)((*g).Buf[pos]))/8] &(1<<(((NU8)((*g).Buf[pos]))%8)))!=0)) goto LA110;
				(*g).Kind = ((NU8) 14);
				while (1) {
					if (!((TMP2168[((NU8)((*g).Buf[pos]))/8] &(1<<(((NU8)((*g).Buf[pos]))%8)))!=0)) goto LA112;
					pos += 1;
				} LA112: ;
			}
			goto LA108;
			LA110: ;
			{
				pos += 1;
				(*g).Kind = ((NU8) 1);
			}
			LA108: ;
		}
		break;
		}
	}
	LA1: ;
	(*g).Length = (NI32)(pos - (*g).Pos);
	{
		NIM_BOOL LOC116;
		LOC116 = 0;
		LOC116 = !(((*g).Kind == ((NU8) 0)));
		if (!(LOC116)) goto LA117;
		LOC116 = ((*g).Length <= 0);
		LA117: ;
		if (!LOC116) goto LA118;
	}
	LA118: ;
	(*g).Pos = pos;
}

N_NIMCALL(NI, iskeyword_306993)(NimStringDesc** x, NI xLen0, NimStringDesc* y) {
	NI result;
	NI a;
	NI b;
	result = 0;
	a = 0;
	b = (NI32)(xLen0 - 1);
	while (1) {
		NI mid;
		NI c;
		if (!(a <= b)) goto LA1;
		mid = (NI32)((NI32)(a + b) / 2);
		c = cmp_3490(x[mid], y);
		{
			if (!(c < 0)) goto LA4;
			a = (NI32)(mid + 1);
		}
		goto LA2;
		LA4: ;
		{
			if (!(0 < c)) goto LA7;
			b = (NI32)(mid - 1);
		}
		goto LA2;
		LA7: ;
		{
			result = mid;
			goto BeforeRet;
		}
		LA2: ;
	} LA1: ;
	result = -1;
	BeforeRet: ;
	return result;
}

N_NIMCALL(NI, generalnumber_306617)(tgeneraltokenizer305015* 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 LA1;
		pos += 1;
	} LA1: ;
	{
		if (!((NU8)((*g).Buf[pos]) == (NU8)(46))) goto LA4;
		(*g).Kind = ((NU8) 7);
		pos += 1;
		while (1) {
			if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)))) goto LA6;
			pos += 1;
		} LA6: ;
	}
	LA4: ;
	{
		if (!(((NU8)((*g).Buf[pos])) == ((NU8)(101)) || ((NU8)((*g).Buf[pos])) == ((NU8)(69)))) goto LA9;
		(*g).Kind = ((NU8) 7);
		pos += 1;
		{
			if (!(((NU8)((*g).Buf[pos])) == ((NU8)(43)) || ((NU8)((*g).Buf[pos])) == ((NU8)(45)))) goto LA13;
			pos += 1;
		}
		LA13: ;
		while (1) {
			if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)))) goto LA15;
			pos += 1;
		} LA15: ;
	}
	LA9: ;
	result = pos;
	return result;
}

N_NIMCALL(NI, generalstrlit_306794)(tgeneraltokenizer305015* 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 LA6;
					pos += 1;
				} LA6: ;
			}
			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 LA10;
					pos += 1;
				}
				LA10: ;
				{
					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 LA14;
					pos += 1;
				}
				LA14: ;
			}
			break;
			default:
			{
				pos += 2;
			}
			break;
			}
		}
		break;
		default:
		{
			{
				if (!((NU8)((*g).Buf[pos]) == (NU8)(c))) goto LA20;
				pos += 1;
				goto LA1;
			}
			goto LA18;
			LA20: ;
			{
				pos += 1;
			}
			LA18: ;
		}
		break;
		}
	} LA1: ;
	result = pos;
	return result;
}

N_NIMCALL(void, clikenexttoken_307044)(tgeneraltokenizer305015* 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 LA10;
						pos += 1;
					}
					LA10: ;
					{
						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 LA14;
						pos += 1;
					}
					LA14: ;
				}
				break;
				case 48 ... 57:
				{
					while (1) {
						if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(57)))) goto LA17;
						pos += 1;
					} LA17: ;
				}
				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 LA25;
				pos += 1;
			} LA25: ;
		}
		break;
		case 47:
		{
			pos += 1;
			{
				if (!((NU8)((*g).Buf[pos]) == (NU8)(47))) goto LA29;
				(*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: ;
			}
			goto LA27;
			LA29: ;
			{
				NI nested;
				if (!((NU8)((*g).Buf[pos]) == (NU8)(42))) goto LA33;
				(*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 LA39;
							pos += 1;
							{
								if (!(nested == 0)) goto LA43;
								goto LA35;
							}
							LA43: ;
						}
						LA39: ;
					}
					break;
					case 47:
					{
						pos += 1;
						{
							if (!((NU8)((*g).Buf[pos]) == (NU8)(42))) goto LA48;
							pos += 1;
							{
								if (!((flags &(1<<((((NU8) 1))&7)))!=0)) goto LA52;
								nested += 1;
							}
							LA52: ;
						}
						LA48: ;
					}
					break;
					case 0:
					{
						goto LA35;
					}
					break;
					default:
					{
						pos += 1;
					}
					break;
					}
				} LA35: ;
			}
			goto LA27;
			LA33: ;
			LA27: ;
		}
		break;
		case 35:
		{
			pos += 1;
			{
				if (!((flags &(1<<((((NU8) 0))&7)))!=0)) goto LA59;
				(*g).Kind = ((NU8) 25);
				while (1) {
					if (!(((NU8)((*g).Buf[pos])) == ((NU8)(32)) || ((NU8)((*g).Buf[pos])) == ((NU8)(9)))) goto LA61;
					pos += 1;
				} LA61: ;
				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 LA62;
					pos += 1;
				} LA62: ;
			}
			goto LA57;
			LA59: ;
			{
				(*g).Kind = ((NU8) 14);
			}
			LA57: ;
		}
		break;
		case 97 ... 122:
		case 65 ... 90:
		case 95:
		case 128 ... 255:
		{
			NimStringDesc* id;
			id = copyString(((NimStringDesc*) &TMP2099));
			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 LA65;
				id = addChar(id, (*g).Buf[pos]);
				pos += 1;
			} LA65: ;
			{
				NI LOC68;
				LOC68 = 0;
				LOC68 = iskeyword_306993(keywords, keywordsLen0, id);
				if (!(0 <= LOC68)) goto LA69;
				(*g).Kind = ((NU8) 9);
			}
			goto LA66;
			LA69: ;
			{
				(*g).Kind = ((NU8) 8);
			}
			LA66: ;
		}
		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 LA74;
					pos += 1;
				} LA74: ;
				{
					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 LA77;
					pos += 1;
				}
				LA77: ;
			}
			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 LA80;
					pos += 1;
				} LA80: ;
				{
					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 LA83;
					pos += 1;
				}
				LA83: ;
			}
			break;
			case 48 ... 55:
			{
				pos += 1;
				while (1) {
					if (!(((NU8)((*g).Buf[pos])) >= ((NU8)(48)) && ((NU8)((*g).Buf[pos])) <= ((NU8)(55)))) goto LA86;
					pos += 1;
				} LA86: ;
				{
					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 LA89;
					pos += 1;
				}
				LA89: ;
			}
			break;
			default:
			{
				pos = generalnumber_306617(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 LA94;
					pos += 1;
				}
				LA94: ;
			}
			break;
			}
		}
		break;
		case 49 ... 57:
		{
			pos = generalnumber_306617(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 LA99;
				pos += 1;
			}
			LA99: ;
		}
		break;
		case 39:
		{
			pos = generalstrlit_306794(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 LA103;
				}
				break;
				case 34:
				{
					pos += 1;
					goto LA103;
				}
				break;
				case 92:
				{
					(*g).State = (*g).Kind;
					goto LA103;
				}
				break;
				default:
				{
					pos += 1;
				}
				break;
				}
			} LA103: ;
		}
		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 (!((TMP2168[((NU8)((*g).Buf[pos]))/8] &(1<<(((NU8)((*g).Buf[pos]))%8)))!=0)) goto LA113;
				(*g).Kind = ((NU8) 14);
				while (1) {
					if (!((TMP2168[((NU8)((*g).Buf[pos]))/8] &(1<<(((NU8)((*g).Buf[pos]))%8)))!=0)) goto LA115;
					pos += 1;
				} LA115: ;
			}
			goto LA111;
			LA113: ;
			{
				pos += 1;
				(*g).Kind = ((NU8) 1);
			}
			LA111: ;
		}
		break;
		}
	}
	LA1: ;
	(*g).Length = (NI32)(pos - (*g).Pos);
	{
		NIM_BOOL LOC119;
		LOC119 = 0;
		LOC119 = !(((*g).Kind == ((NU8) 0)));
		if (!(LOC119)) goto LA120;
		LOC119 = ((*g).Length <= 0);
		LA120: ;
		if (!LOC119) goto LA121;
	}
	LA121: ;
	(*g).Pos = pos;
}

N_NIMCALL(void, cppnexttoken_308028)(tgeneraltokenizer305015* g) {
	clikenexttoken_307044(g, TMP2169, 48, 1);
}

N_NIMCALL(void, csharpnexttoken_308040)(tgeneraltokenizer305015* g) {
	clikenexttoken_307044(g, TMP2203, 77, 1);
}

N_NIMCALL(void, cnexttoken_308016)(tgeneraltokenizer305015* g) {
	clikenexttoken_307044(g, TMP2235, 37, 1);
}

N_NIMCALL(void, javanexttoken_308053)(tgeneraltokenizer305015* g) {
	clikenexttoken_307044(g, TMP2240, 53, 0);
}

N_NIMCALL(void, getnexttoken_308067)(tgeneraltokenizer305015* g, NU8 lang) {
	switch (lang) {
	case ((NU8) 0):
	{
	}
	break;
	case ((NU8) 1):
	{
		nimnexttoken_305763(g);
	}
	break;
	case ((NU8) 2):
	{
		cppnexttoken_308028(g);
	}
	break;
	case ((NU8) 3):
	{
		csharpnexttoken_308040(g);
	}
	break;
	case ((NU8) 4):
	{
		cnexttoken_308016(g);
	}
	break;
	case ((NU8) 5):
	{
		javanexttoken_308053(g);
	}
	break;
	}
}

N_NIMCALL(void, deinitgeneraltokenizer_305199)(tgeneraltokenizer305015* g) {
}
N_NOINLINE(void, docutilshighliteInit)(void) {
}

N_NOINLINE(void, docutilshighliteDatInit)(void) {
static TNimNode* TMP2095[6];
static TNimNode* TMP2096[33];
NI TMP2098;
static char* NIM_CONST TMP2097[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 TMP874[41];
NTI305015.size = sizeof(tgeneraltokenizer305015);
NTI305015.kind = 17;
NTI305015.base = (&NTI2409);
NTI305015.flags = 1;
TMP2095[0] = &TMP874[1];
NTI305013.size = sizeof(NU8);
NTI305013.kind = 14;
NTI305013.base = 0;
NTI305013.flags = 3;
for (TMP2098 = 0; TMP2098 < 33; TMP2098++) {
TMP874[TMP2098+2].kind = 1;
TMP874[TMP2098+2].offset = TMP2098;
TMP874[TMP2098+2].name = TMP2097[TMP2098];
TMP2096[TMP2098] = &TMP874[TMP2098+2];
}
TMP874[35].len = 33; TMP874[35].kind = 2; TMP874[35].sons = &TMP2096[0];
NTI305013.node = &TMP874[35];
TMP874[1].kind = 1;
TMP874[1].offset = offsetof(tgeneraltokenizer305015, Kind);
TMP874[1].typ = (&NTI305013);
TMP874[1].name = "kind";
TMP2095[1] = &TMP874[36];
TMP874[36].kind = 1;
TMP874[36].offset = offsetof(tgeneraltokenizer305015, Start);
TMP874[36].typ = (&NTI106);
TMP874[36].name = "start";
TMP2095[2] = &TMP874[37];
TMP874[37].kind = 1;
TMP874[37].offset = offsetof(tgeneraltokenizer305015, Length);
TMP874[37].typ = (&NTI106);
TMP874[37].name = "length";
TMP2095[3] = &TMP874[38];
TMP874[38].kind = 1;
TMP874[38].offset = offsetof(tgeneraltokenizer305015, Buf);
TMP874[38].typ = (&NTI145);
TMP874[38].name = "buf";
TMP2095[4] = &TMP874[39];
TMP874[39].kind = 1;
TMP874[39].offset = offsetof(tgeneraltokenizer305015, Pos);
TMP874[39].typ = (&NTI106);
TMP874[39].name = "pos";
TMP2095[5] = &TMP874[40];
TMP874[40].kind = 1;
TMP874[40].offset = offsetof(tgeneraltokenizer305015, State);
TMP874[40].typ = (&NTI305013);
TMP874[40].name = "state";
TMP874[0].len = 6; TMP874[0].kind = 2; TMP874[0].sons = &TMP2095[0];
NTI305015.node = &TMP874[0];
}

