/* Generated by Nim Compiler v0.12.0 */
/*   (c) 2015 Andreas Rumpf */
/* The generated code is subject to the original license. */
#define NIM_INTBITS 32

#include "nimbase.h"
#include <string.h>
#include <setjmp.h>
#include <stdio.h>
typedef struct Tident198021 Tident198021;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Cell48946 Cell48946;
typedef struct TNimType TNimType;
typedef struct Cellseq48962 Cellseq48962;
typedef struct Gcheap51018 Gcheap51018;
typedef struct Gcstack51016 Gcstack51016;
typedef struct Cellset48958 Cellset48958;
typedef struct Pagedesc48954 Pagedesc48954;
typedef struct Memregion30890 Memregion30890;
typedef struct Smallchunk30842 Smallchunk30842;
typedef struct Llchunk30884 Llchunk30884;
typedef struct Bigchunk30844 Bigchunk30844;
typedef struct Intset30817 Intset30817;
typedef struct Trunk30813 Trunk30813;
typedef struct Avlnode30888 Avlnode30888;
typedef struct Gcstat51014 Gcstat51014;
typedef struct TNimNode TNimNode;
typedef struct Tlexer216185 Tlexer216185;
typedef struct Tbaselexer214024 Tbaselexer214024;
typedef struct TNimObject TNimObject;
typedef struct Tllstream213204 Tllstream213204;
typedef struct Tlineinfo190352 Tlineinfo190352;
typedef struct TY576951 TY576951;
typedef struct TY576954 TY576954;
typedef struct Ttoken216181 Ttoken216181;
typedef struct Tidobj198015 Tidobj198015;
typedef struct Exception Exception;
typedef struct TSafePoint TSafePoint;
typedef struct Valueerror4049 Valueerror4049;
typedef struct Basechunk30840 Basechunk30840;
typedef struct Freecell30832 Freecell30832;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  Cell48946  {
NI refcount;
TNimType* typ;
};
struct  Cellseq48962  {
NI len;
NI cap;
Cell48946** d;
};
struct  Cellset48958  {
NI counter;
NI max;
Pagedesc48954* head;
Pagedesc48954** data;
};
typedef Smallchunk30842* TY30905[512];
typedef Trunk30813* Trunkbuckets30815[256];
struct  Intset30817  {
Trunkbuckets30815 data;
};
struct  Memregion30890  {
NI minlargeobj;
NI maxlargeobj;
TY30905 freesmallchunks;
Llchunk30884* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Bigchunk30844* freechunkslist;
Intset30817 chunkstarts;
Avlnode30888* root;
Avlnode30888* deleted;
Avlnode30888* last;
Avlnode30888* freeavlnodes;
};
struct  Gcstat51014  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Gcheap51018  {
Gcstack51016* stack;
void* stackbottom;
NI cyclethreshold;
Cellseq48962 zct;
Cellseq48962 decstack;
Cellset48958 cycleroots;
Cellseq48962 tempstack;
NI recgclock;
Memregion30890 region;
Gcstat51014 stat;
};
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  Tbaselexer214024  {
  TNimObject Sup;
NI bufpos;
NCSTRING buf;
NI buflen;
Tllstream213204* stream;
NI linenumber;
NI sentinel;
NI linestart;
};
typedef struct {
N_NIMCALL_PTR(void, ClPrc) (Tlineinfo190352 info, NU16 msg, NimStringDesc* arg, void* ClEnv);
void* ClEnv;
} Terrorhandler216183;
struct  Tlexer216185  {
  Tbaselexer214024 Sup;
NI32 fileidx;
NI indentahead;
NI currlineindent;
NIM_BOOL strongspaces;
Terrorhandler216183 errorhandler;
};
struct TY576951 {
void* Field0;
TY576954* Field1;
};
struct TY576954 {
char dummy;
};
struct  Ttoken216181  {
NU8 toktype;
NI indent;
Tident198021* ident;
NI64 inumber;
NF fnumber;
NU8 base;
NI8 strongspacea;
NI8 strongspaceb;
NimStringDesc* literal;
NI line;
NI col;
};
struct  Tllstream213204  {
  TNimObject Sup;
NU8 kind;
FILE* f;
NimStringDesc* s;
NI rd;
NI wr;
NI lineoffset;
};
struct  Tlineinfo190352  {
NI16 line;
NI16 col;
NI32 fileindex;
};
typedef N_CLOSURE_PTR(void, TMP1206) (Tlineinfo190352 info, NU16 msg, NimStringDesc* arg);
struct  Tidobj198015  {
  TNimObject Sup;
NI id;
};
struct  Tident198021  {
  Tidobj198015 Sup;
NimStringDesc* s;
Tident198021* next;
NI h;
};
typedef NU8 TY213407[32];
struct  Exception  {
  TNimObject Sup;
Exception* parent;
NCSTRING name;
NimStringDesc* message;
NimStringDesc* trace;
};
typedef struct {
N_NIMCALL_PTR(NIM_BOOL, ClPrc) (Exception* e, void* ClEnv);
void* ClEnv;
} TY19211;
struct  TSafePoint  {
TSafePoint* prev;
NI status;
jmp_buf context;
NIM_BOOL hasRaiseAction;
TY19211 raiseAction;
};
struct  Valueerror4049  {
  Exception Sup;
};
typedef NimStringDesc* TY216172[119];
struct  Gcstack51016  {
Gcstack51016* prev;
Gcstack51016* next;
void* starts;
void* pos;
NI maxstacksize;
};
typedef NI TY30821[16];
struct  Pagedesc48954  {
Pagedesc48954* next;
NI key;
TY30821 bits;
};
struct  Basechunk30840  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Smallchunk30842  {
  Basechunk30840 Sup;
Smallchunk30842* next;
Smallchunk30842* prev;
Freecell30832* freelist;
NI free;
NI acc;
NF data;
};
struct  Llchunk30884  {
NI size;
NI acc;
Llchunk30884* next;
};
struct  Bigchunk30844  {
  Basechunk30840 Sup;
Bigchunk30844* next;
Bigchunk30844* prev;
NI align;
NF data;
};
struct  Trunk30813  {
Trunk30813* next;
NI key;
TY30821 bits;
};
typedef Avlnode30888* TY30895[2];
struct  Avlnode30888  {
TY30895 link;
NI key;
NI upperbound;
NI level;
};
struct  Freecell30832  {
Freecell30832* next;
NI zerofield;
};
N_NIMCALL(Tident198021*, getident_198463)(NimStringDesc* identifier);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(Cell48946*, usrtocell_52646)(void* usr);
static N_INLINE(void, rtladdzct_54204)(Cell48946* c);
N_NOINLINE(void, addzct_52617)(Cellseq48962* s, Cell48946* c);
N_NIMCALL(void, TMP1182)(void* p, NI op);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(void, openbaselexer_214035)(Tbaselexer214024* L, Tllstream213204* inputstream, NI buflen);
N_NIMCALL(void, filltoken_216379)(Ttoken216181* L);
N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newlen);
N_NIMCALL(void, skip_219437)(Tlexer216185* L, Ttoken216181* tok);
N_NIMCALL(void, lexmessagepos_216505)(Tlexer216185* L, NU16 msg, NI pos, NimStringDesc* arg);
N_NIMCALL(Tlineinfo190352, newlineinfo_191267)(NI32 fileinfoidx, NI line, NI col);
N_NIMCALL(void, dispmessage_216461)(Tlexer216185* L, Tlineinfo190352 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(void, message_196161)(Tlineinfo190352 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NI, handlecrlf_217855)(Tlexer216185* L, NI pos);
N_NIMCALL(NI, getcolnumber_214059)(Tbaselexer214024* L, NI pos);
N_NIMCALL(NimStringDesc*, newstring_217808)(NCSTRING s, NI len);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
N_NIMCALL(void, addsourceline_196227)(NI32 fileidx, NimStringDesc* line);
N_NIMCALL(NI, handlecr_214066)(Tbaselexer214024* L, NI pos);
N_NIMCALL(NI, handlelf_214074)(Tbaselexer214024* L, NI pos);
N_NIMCALL(void, getsymbol_218110)(Tlexer216185* L, Ttoken216181* tok);
N_NIMCALL(void, lexmessage_216481)(Tlexer216185* L, NU16 msg, NimStringDesc* arg);
N_NIMCALL(Tlineinfo190352, getlineinfo_216451)(Tlexer216185* L);
static N_INLINE(NI, HEX21HEX26_142013)(NI h, NI val);
static N_INLINE(NI, HEX21HEX24_142042)(NI h);
N_NIMCALL(Tident198021*, getident_198280)(NCSTRING identifier, NI length, NI h);
N_NIMCALL(void, scancomment_218388)(Tlexer216185* L, Ttoken216181* tok);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
static N_INLINE(void, endoperator_218276)(Tlexer216185* L, Ttoken216181* tok, NI pos, NI hash);
N_NIMCALL(void, getoperator_218301)(Tlexer216185* L, Ttoken216181* tok);
N_NIMCALL(void, getstring_217913)(Tlexer216185* L, Ttoken216181* tok, NIM_BOOL rawmode);
N_NIMCALL(void, getescapedchar_217663)(Tlexer216185* L, Ttoken216181* tok);
N_NIMCALL(void, handlehexchar_217513)(Tlexer216185* L, NI* xi);
N_NIMCALL(NIM_BOOL, matchtwochars_216519)(Tlexer216185* L, NIM_CHAR first, TY213407 second);
N_NIMCALL(void, handledecchars_217607)(Tlexer216185* L, NI* xi);
N_NIMCALL(NimStringDesc*, nimCharToStr)(NIM_CHAR x);
static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_NIMCALL(void, getcharacter_218060)(Tlexer216185* L, Ttoken216181* tok);
N_NIMCALL(void, getnumber_216708)(Tlexer216185* L, Ttoken216181* Result);
N_NIMCALL(void, lexmessagelitnum_216792)(Tlexer216185* L, NU16 msg, NI startpos);
N_NIMCALL(void, matchchars_216762)(Tlexer216185* L, Ttoken216181* tok, TY213407 chars);
N_NIMCALL(void, matchunderscorechars_216713)(Tlexer216185* L, Ttoken216181* tok, TY213407 chars);
N_NIMCALL(void, internalerror_196172)(Tlineinfo190352 info, NimStringDesc* errmsg);
static N_INLINE(void, pushSafePoint)(TSafePoint* s);
N_NIMCALL(NF, nsuParseFloat)(NimStringDesc* s);
N_NIMCALL(NI, unsafeparseuint_216596)(NimStringDesc* s, NI64* b, NI start);
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x);
N_NIMCALL(void, raiseException)(Exception* e, NCSTRING ename);
N_NIMCALL(NI64, nsuParseBiggestInt)(NimStringDesc* s);
static N_INLINE(void, popSafePoint)(void);
N_NIMCALL(NIM_BOOL, isObj)(TNimType* obj, TNimType* subclass);
static N_INLINE(Exception*, getCurrentException)(void);
static N_INLINE(void, popCurrentException)(void);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_55022)(Cell48946* c);
static N_INLINE(NIM_BOOL, canbecycleroot_52667)(Cell48946* c);
static N_INLINE(void, rtladdcycleroot_53423)(Cell48946* c);
N_NOINLINE(void, incl_49665)(Cellset48958* s, Cell48946* cell);
static N_INLINE(void, decref_54604)(Cell48946* c);
N_NIMCALL(void, reraiseException)(void);
N_NIMCALL(NIM_BOOL, iskeyword_216229)(NU8 kind);
N_NIMCALL(NimStringDesc*, toktostr_216323)(Ttoken216181* tok);
N_NIMCALL(NimStringDesc*, nimFloatToStr)(NF f);
N_NIMCALL(void, internalerror_196191)(NimStringDesc* errmsg);
N_NIMCALL(void, closebaselexer_214045)(Tbaselexer214024* L);
static N_INLINE(NIM_BOOL, ismagicidentseparatorrune_141029)(NCSTRING cs, NI i);
N_NIMCALL(void, openlexer_216389)(Tlexer216185* lex, NI32 fileidx, Tllstream213204* inputstream);
N_NIMCALL(NI32, fileinfoidx_191254)(NimStringDesc* filename);
N_NIMCALL(void, msgwriteln_191915)(NimStringDesc* s, NU8 flags);
STRING_LITERAL(TMP795, "", 0);
STRING_LITERAL(TMP1207, "use \'# [\' instead; \'#[\'", 23);
STRING_LITERAL(TMP1208, "\342\200\223", 3);
STRING_LITERAL(TMP1209, "_", 1);
STRING_LITERAL(TMP1210, "[]", 2);
STRING_LITERAL(TMP1211, "use \'## [\' instead; \'##[\'", 25);
STRING_LITERAL(TMP1212, "\012", 1);
static NIM_CONST TY213407 TMP1213 = {
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}
;
static NIM_CONST TY213407 TMP1214 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP1215, " (\\", 3);
static NIM_CONST TY213407 TMP1216 = {
0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0xFF, 0x03,
0x7E, 0x80, 0x00, 0x81, 0x7E, 0x82, 0x20, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
static NIM_CONST TY213407 TMP1217 = {
0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0x50, 0x02, 0x20, 0x00, 0x50, 0x02, 0x20, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
static NIM_CONST TY213407 TMP1218 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
0x7E, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
static NIM_CONST TY213407 TMP1219 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
static NIM_CONST TY213407 TMP1220 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP1221, "getNumber", 9);
STRING_LITERAL(TMP1223, "invalid integer: ", 17);
STRING_LITERAL(TMP1237, "tkInvalid", 9);
STRING_LITERAL(TMP1238, "[EOF]", 5);
STRING_LITERAL(TMP1239, "tkSymbol", 8);
STRING_LITERAL(TMP1240, "addr", 4);
STRING_LITERAL(TMP1241, "and", 3);
STRING_LITERAL(TMP1242, "as", 2);
STRING_LITERAL(TMP1243, "asm", 3);
STRING_LITERAL(TMP1244, "atomic", 6);
STRING_LITERAL(TMP1245, "bind", 4);
STRING_LITERAL(TMP1246, "block", 5);
STRING_LITERAL(TMP1247, "break", 5);
STRING_LITERAL(TMP1248, "case", 4);
STRING_LITERAL(TMP1249, "cast", 4);
STRING_LITERAL(TMP1250, "concept", 7);
STRING_LITERAL(TMP1251, "const", 5);
STRING_LITERAL(TMP1252, "continue", 8);
STRING_LITERAL(TMP1253, "converter", 9);
STRING_LITERAL(TMP1254, "defer", 5);
STRING_LITERAL(TMP1255, "discard", 7);
STRING_LITERAL(TMP1256, "distinct", 8);
STRING_LITERAL(TMP1257, "div", 3);
STRING_LITERAL(TMP1258, "do", 2);
STRING_LITERAL(TMP1259, "elif", 4);
STRING_LITERAL(TMP1260, "else", 4);
STRING_LITERAL(TMP1261, "end", 3);
STRING_LITERAL(TMP1262, "enum", 4);
STRING_LITERAL(TMP1263, "except", 6);
STRING_LITERAL(TMP1264, "export", 6);
STRING_LITERAL(TMP1265, "finally", 7);
STRING_LITERAL(TMP1266, "for", 3);
STRING_LITERAL(TMP1267, "from", 4);
STRING_LITERAL(TMP1268, "func", 4);
STRING_LITERAL(TMP1269, "generic", 7);
STRING_LITERAL(TMP1270, "if", 2);
STRING_LITERAL(TMP1271, "import", 6);
STRING_LITERAL(TMP1272, "in", 2);
STRING_LITERAL(TMP1273, "include", 7);
STRING_LITERAL(TMP1274, "interface", 9);
STRING_LITERAL(TMP1275, "is", 2);
STRING_LITERAL(TMP1276, "isnot", 5);
STRING_LITERAL(TMP1277, "iterator", 8);
STRING_LITERAL(TMP1278, "let", 3);
STRING_LITERAL(TMP1279, "macro", 5);
STRING_LITERAL(TMP1280, "method", 6);
STRING_LITERAL(TMP1281, "mixin", 5);
STRING_LITERAL(TMP1282, "mod", 3);
STRING_LITERAL(TMP1283, "nil", 3);
STRING_LITERAL(TMP1284, "not", 3);
STRING_LITERAL(TMP1285, "notin", 5);
STRING_LITERAL(TMP1286, "object", 6);
STRING_LITERAL(TMP1287, "of", 2);
STRING_LITERAL(TMP1288, "or", 2);
STRING_LITERAL(TMP1289, "out", 3);
STRING_LITERAL(TMP1290, "proc", 4);
STRING_LITERAL(TMP1291, "ptr", 3);
STRING_LITERAL(TMP1292, "raise", 5);
STRING_LITERAL(TMP1293, "ref", 3);
STRING_LITERAL(TMP1294, "return", 6);
STRING_LITERAL(TMP1295, "shl", 3);
STRING_LITERAL(TMP1296, "shr", 3);
STRING_LITERAL(TMP1297, "static", 6);
STRING_LITERAL(TMP1298, "template", 8);
STRING_LITERAL(TMP1299, "try", 3);
STRING_LITERAL(TMP1300, "tuple", 5);
STRING_LITERAL(TMP1301, "type", 4);
STRING_LITERAL(TMP1302, "using", 5);
STRING_LITERAL(TMP1303, "var", 3);
STRING_LITERAL(TMP1304, "when", 4);
STRING_LITERAL(TMP1305, "while", 5);
STRING_LITERAL(TMP1306, "with", 4);
STRING_LITERAL(TMP1307, "without", 7);
STRING_LITERAL(TMP1308, "xor", 3);
STRING_LITERAL(TMP1309, "yield", 5);
STRING_LITERAL(TMP1310, "tkIntLit", 8);
STRING_LITERAL(TMP1311, "tkInt8Lit", 9);
STRING_LITERAL(TMP1312, "tkInt16Lit", 10);
STRING_LITERAL(TMP1313, "tkInt32Lit", 10);
STRING_LITERAL(TMP1314, "tkInt64Lit", 10);
STRING_LITERAL(TMP1315, "tkUIntLit", 9);
STRING_LITERAL(TMP1316, "tkUInt8Lit", 10);
STRING_LITERAL(TMP1317, "tkUInt16Lit", 11);
STRING_LITERAL(TMP1318, "tkUInt32Lit", 11);
STRING_LITERAL(TMP1319, "tkUInt64Lit", 11);
STRING_LITERAL(TMP1320, "tkFloatLit", 10);
STRING_LITERAL(TMP1321, "tkFloat32Lit", 12);
STRING_LITERAL(TMP1322, "tkFloat64Lit", 12);
STRING_LITERAL(TMP1323, "tkFloat128Lit", 13);
STRING_LITERAL(TMP1324, "tkStrLit", 8);
STRING_LITERAL(TMP1325, "tkRStrLit", 9);
STRING_LITERAL(TMP1326, "tkTripleStrLit", 14);
STRING_LITERAL(TMP1327, "tkGStrLit", 9);
STRING_LITERAL(TMP1328, "tkGTripleStrLit", 15);
STRING_LITERAL(TMP1329, "tkCharLit", 9);
STRING_LITERAL(TMP1330, "(", 1);
STRING_LITERAL(TMP1331, ")", 1);
STRING_LITERAL(TMP1332, "[", 1);
STRING_LITERAL(TMP1333, "]", 1);
STRING_LITERAL(TMP1334, "{", 1);
STRING_LITERAL(TMP1335, "}", 1);
STRING_LITERAL(TMP1336, "[.", 2);
STRING_LITERAL(TMP1337, ".]", 2);
STRING_LITERAL(TMP1338, "{.", 2);
STRING_LITERAL(TMP1339, ".}", 2);
STRING_LITERAL(TMP1340, "(.", 2);
STRING_LITERAL(TMP1341, ".)", 2);
STRING_LITERAL(TMP1342, ",", 1);
STRING_LITERAL(TMP1343, ";", 1);
STRING_LITERAL(TMP1344, ":", 1);
STRING_LITERAL(TMP1345, "::", 2);
STRING_LITERAL(TMP1346, "=", 1);
STRING_LITERAL(TMP1347, ".", 1);
STRING_LITERAL(TMP1348, "..", 2);
STRING_LITERAL(TMP1349, "tkOpr", 5);
STRING_LITERAL(TMP1350, "tkComment", 9);
STRING_LITERAL(TMP1351, "`", 1);
STRING_LITERAL(TMP1352, "tkSpaces", 8);
STRING_LITERAL(TMP1353, "tkInfixOpr", 10);
STRING_LITERAL(TMP1354, "tkPrefixOpr", 11);
STRING_LITERAL(TMP1355, "tkPostfixOpr", 12);
NIM_CONST TY216172 Toktypetostr_216169 = {((NimStringDesc*) &TMP1237),
((NimStringDesc*) &TMP1238),
((NimStringDesc*) &TMP1239),
((NimStringDesc*) &TMP1240),
((NimStringDesc*) &TMP1241),
((NimStringDesc*) &TMP1242),
((NimStringDesc*) &TMP1243),
((NimStringDesc*) &TMP1244),
((NimStringDesc*) &TMP1245),
((NimStringDesc*) &TMP1246),
((NimStringDesc*) &TMP1247),
((NimStringDesc*) &TMP1248),
((NimStringDesc*) &TMP1249),
((NimStringDesc*) &TMP1250),
((NimStringDesc*) &TMP1251),
((NimStringDesc*) &TMP1252),
((NimStringDesc*) &TMP1253),
((NimStringDesc*) &TMP1254),
((NimStringDesc*) &TMP1255),
((NimStringDesc*) &TMP1256),
((NimStringDesc*) &TMP1257),
((NimStringDesc*) &TMP1258),
((NimStringDesc*) &TMP1259),
((NimStringDesc*) &TMP1260),
((NimStringDesc*) &TMP1261),
((NimStringDesc*) &TMP1262),
((NimStringDesc*) &TMP1263),
((NimStringDesc*) &TMP1264),
((NimStringDesc*) &TMP1265),
((NimStringDesc*) &TMP1266),
((NimStringDesc*) &TMP1267),
((NimStringDesc*) &TMP1268),
((NimStringDesc*) &TMP1269),
((NimStringDesc*) &TMP1270),
((NimStringDesc*) &TMP1271),
((NimStringDesc*) &TMP1272),
((NimStringDesc*) &TMP1273),
((NimStringDesc*) &TMP1274),
((NimStringDesc*) &TMP1275),
((NimStringDesc*) &TMP1276),
((NimStringDesc*) &TMP1277),
((NimStringDesc*) &TMP1278),
((NimStringDesc*) &TMP1279),
((NimStringDesc*) &TMP1280),
((NimStringDesc*) &TMP1281),
((NimStringDesc*) &TMP1282),
((NimStringDesc*) &TMP1283),
((NimStringDesc*) &TMP1284),
((NimStringDesc*) &TMP1285),
((NimStringDesc*) &TMP1286),
((NimStringDesc*) &TMP1287),
((NimStringDesc*) &TMP1288),
((NimStringDesc*) &TMP1289),
((NimStringDesc*) &TMP1290),
((NimStringDesc*) &TMP1291),
((NimStringDesc*) &TMP1292),
((NimStringDesc*) &TMP1293),
((NimStringDesc*) &TMP1294),
((NimStringDesc*) &TMP1295),
((NimStringDesc*) &TMP1296),
((NimStringDesc*) &TMP1297),
((NimStringDesc*) &TMP1298),
((NimStringDesc*) &TMP1299),
((NimStringDesc*) &TMP1300),
((NimStringDesc*) &TMP1301),
((NimStringDesc*) &TMP1302),
((NimStringDesc*) &TMP1303),
((NimStringDesc*) &TMP1304),
((NimStringDesc*) &TMP1305),
((NimStringDesc*) &TMP1306),
((NimStringDesc*) &TMP1307),
((NimStringDesc*) &TMP1308),
((NimStringDesc*) &TMP1309),
((NimStringDesc*) &TMP1310),
((NimStringDesc*) &TMP1311),
((NimStringDesc*) &TMP1312),
((NimStringDesc*) &TMP1313),
((NimStringDesc*) &TMP1314),
((NimStringDesc*) &TMP1315),
((NimStringDesc*) &TMP1316),
((NimStringDesc*) &TMP1317),
((NimStringDesc*) &TMP1318),
((NimStringDesc*) &TMP1319),
((NimStringDesc*) &TMP1320),
((NimStringDesc*) &TMP1321),
((NimStringDesc*) &TMP1322),
((NimStringDesc*) &TMP1323),
((NimStringDesc*) &TMP1324),
((NimStringDesc*) &TMP1325),
((NimStringDesc*) &TMP1326),
((NimStringDesc*) &TMP1327),
((NimStringDesc*) &TMP1328),
((NimStringDesc*) &TMP1329),
((NimStringDesc*) &TMP1330),
((NimStringDesc*) &TMP1331),
((NimStringDesc*) &TMP1332),
((NimStringDesc*) &TMP1333),
((NimStringDesc*) &TMP1334),
((NimStringDesc*) &TMP1335),
((NimStringDesc*) &TMP1336),
((NimStringDesc*) &TMP1337),
((NimStringDesc*) &TMP1338),
((NimStringDesc*) &TMP1339),
((NimStringDesc*) &TMP1340),
((NimStringDesc*) &TMP1341),
((NimStringDesc*) &TMP1342),
((NimStringDesc*) &TMP1343),
((NimStringDesc*) &TMP1344),
((NimStringDesc*) &TMP1345),
((NimStringDesc*) &TMP1346),
((NimStringDesc*) &TMP1347),
((NimStringDesc*) &TMP1348),
((NimStringDesc*) &TMP1349),
((NimStringDesc*) &TMP1350),
((NimStringDesc*) &TMP1351),
((NimStringDesc*) &TMP1352),
((NimStringDesc*) &TMP1353),
((NimStringDesc*) &TMP1354),
((NimStringDesc*) &TMP1355)}
;
STRING_LITERAL(TMP1356, "keyword ", 8);
STRING_LITERAL(TMP1360, "tokToStr", 8);
STRING_LITERAL(TMP5235, "\011", 1);
STRING_LITERAL(TMP5236, " ", 1);
NI glinescompiled_216213;
Tident198021* dummyident_216364;
extern Gcheap51018 gch_51059;
extern TNimType NTI214024; /* TBaseLexer */
TNimType NTI216185; /* TLexer */
extern TNimType NTI114; /* int32 */
extern TNimType NTI108; /* int */
extern TNimType NTI138; /* bool */
TNimType NTI216183; /* (pointer, ref tuple[]) */
extern TNimType NTI153; /* pointer */
TNimType NTI576954; /* tuple[] */
TNimType NTI576953; /* ref tuple[] */
TNimType NTI216181; /* TToken */
TNimType NTI216022; /* TTokType */
extern TNimType NTI198019; /* PIdent */
extern TNimType NTI8112; /* BiggestInt */
extern TNimType NTI8114; /* BiggestFloat */
TNimType NTI216179; /* TNumericalBase */
extern TNimType NTI110; /* int8 */
extern TNimType NTI149; /* string */
extern NU32 gglobaloptions_167132;
extern NimStringDesc* tnl_174654;
extern TSafePoint* exchandler_20843;
extern TNimType NTI25028; /* ref ValueError */
extern TNimType NTI4049; /* ValueError */
extern Exception* currexception_20845;
extern TNimType NTI4043; /* OverflowError */
extern TNimType NTI4059; /* RangeError */

static N_INLINE(Cell48946*, usrtocell_52646)(void* usr) {
	Cell48946* result;
	result = 0;
	result = ((Cell48946*) ((NI)((NU32)(((NI) (usr))) - (NU32)(((NI)sizeof(Cell48946))))));
	return result;
}

static N_INLINE(void, rtladdzct_54204)(Cell48946* c) {
	addzct_52617((&gch_51059.zct), c);
}

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		Cell48946* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_52646(src);
		(*c).refcount += ((NI) 8);
	}
	LA3: ;
	{
		Cell48946* c;
		if (!!(((*dest) == NIM_NIL))) goto LA7;
		c = usrtocell_52646((*dest));
		{
			(*c).refcount -= ((NI) 8);
			if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA11;
			rtladdzct_54204(c);
		}
		LA11: ;
	}
	LA7: ;
	(*dest) = src;
}
N_NIMCALL(void, TMP1182)(void* p, NI op) {
	TY576954* a;
	a = (TY576954*)p;
}

N_NIMCALL(void, inittoken_216369)(Ttoken216181* L) {
	(*L).toktype = ((NU8) 0);
	(*L).inumber = IL64(0);
	(*L).indent = ((NI) 0);
	(*L).strongspacea = ((NI8) 0);
	unsureAsgnRef((void**) (&(*L).literal), copyString(((NimStringDesc*) &TMP795)));
	(*L).fnumber = 0.0;
	(*L).base = ((NU8) 0);
	unsureAsgnRef((void**) (&(*L).ident), dummyident_216364);
}

N_NIMCALL(void, openlexer_216389)(Tlexer216185* lex, NI32 fileidx, Tllstream213204* inputstream) {
	Tbaselexer214024* LOC1;
	LOC1 = 0;
	LOC1 = &lex->Sup;
	openbaselexer_214035(LOC1, inputstream, ((NI) 8192));
	(*lex).fileidx = fileidx;
	(*lex).indentahead = ((NI) -1);
	(*lex).currlineindent = ((NI) 0);
	(*lex).Sup.linenumber += (*inputstream).lineoffset;
}

N_NIMCALL(void, filltoken_216379)(Ttoken216181* L) {
	(*L).toktype = ((NU8) 0);
	(*L).inumber = IL64(0);
	(*L).indent = ((NI) 0);
	(*L).strongspacea = ((NI8) 0);
	(*L).literal = setLengthStr((*L).literal, ((NI) 0));
	(*L).fnumber = 0.0;
	(*L).base = ((NU8) 0);
	unsureAsgnRef((void**) (&(*L).ident), dummyident_216364);
}

N_NIMCALL(void, dispmessage_216461)(Tlexer216185* L, Tlineinfo190352 info, NU16 msg, NimStringDesc* arg) {
	{
		if (!(*L).errorhandler.ClPrc == 0) goto LA3;
		message_196161(info, msg, arg);
	}
	goto LA1;
	LA3: ;
	{
		(*L).errorhandler.ClEnv? (*L).errorhandler.ClPrc(info, msg, arg, (*L).errorhandler.ClEnv):((TMP1206)((*L).errorhandler.ClPrc))(info, msg, arg);
	}
	LA1: ;
}

N_NIMCALL(void, lexmessagepos_216505)(Tlexer216185* L, NU16 msg, NI pos, NimStringDesc* arg) {
	Tlineinfo190352 info;
	info = newlineinfo_191267((*L).fileidx, (*L).Sup.linenumber, (NI)(pos - (*L).Sup.linestart));
	dispmessage_216461((&(*L)), info, msg, arg);
}

N_NIMCALL(NimStringDesc*, newstring_217808)(NCSTRING s, NI len) {
	NimStringDesc* result;
	result = 0;
	result = mnewString(((NI) (len)));
	{
		NI i_217831;
		NI HEX3Atmp_217833;
		NI res_217836;
		i_217831 = 0;
		HEX3Atmp_217833 = 0;
		HEX3Atmp_217833 = (len - 1);
		res_217836 = ((NI) 0);
		{
			while (1) {
				if (!(res_217836 <= HEX3Atmp_217833)) goto LA3;
				i_217831 = res_217836;
				result->data[i_217831] = s[i_217831];
				res_217836 += ((NI) 1);
			} LA3: ;
		}
	}
	return result;
}

N_NIMCALL(NI, handlecrlf_217855)(Tlexer216185* L, NI pos) {
	NI result;
	result = 0;
	switch (((NU8)((*L).Sup.buf[pos]))) {
	case 13:
	{
		NI col_217872;
		Tbaselexer214024* LOC10;
		col_217872 = getcolnumber_214059((&(*L).Sup), pos);
		{
			if (!(((NI) 80) < col_217872)) goto LA4;
			lexmessagepos_216505(L, ((NU16) 270), pos, ((NimStringDesc*) &TMP795));
		}
		LA4: ;
		{
			NI linestart_217874;
			NimStringDesc* line_217876;
			if (!((gglobaloptions_167132 &(1<<((((NU8) 28))&31)))!=0)) goto LA8;
			linestart_217874 = (NI)(((NI) ((*L).Sup.buf)) + (*L).Sup.linestart);
			line_217876 = newstring_217808(((NCSTRING) (linestart_217874)), col_217872);
			addsourceline_196227((*L).fileidx, line_217876);
		}
		LA8: ;
		LOC10 = 0;
		LOC10 = &L->Sup;
		result = handlecr_214066(LOC10, pos);
	}
	break;
	case 10:
	{
		NI col_217888;
		Tbaselexer214024* LOC20;
		col_217888 = getcolnumber_214059((&(*L).Sup), pos);
		{
			if (!(((NI) 80) < col_217888)) goto LA14;
			lexmessagepos_216505(L, ((NU16) 270), pos, ((NimStringDesc*) &TMP795));
		}
		LA14: ;
		{
			NI linestart_217890;
			NimStringDesc* line_217892;
			if (!((gglobaloptions_167132 &(1<<((((NU8) 28))&31)))!=0)) goto LA18;
			linestart_217890 = (NI)(((NI) ((*L).Sup.buf)) + (*L).Sup.linestart);
			line_217892 = newstring_217808(((NCSTRING) (linestart_217890)), col_217888);
			addsourceline_196227((*L).fileidx, line_217892);
		}
		LA18: ;
		LOC20 = 0;
		LOC20 = &L->Sup;
		result = handlelf_214074(LOC20, pos);
	}
	break;
	default:
	{
		result = pos;
	}
	break;
	}
	return result;
}

N_NIMCALL(void, skip_219437)(Tlexer216185* L, Ttoken216181* tok) {
	NI pos;
	NCSTRING buf;
	pos = (*L).Sup.bufpos;
	buf = (*L).Sup.buf;
	(*tok).strongspacea = ((NI8) 0);
	{
		while (1) {
			switch (((NU8)(buf[pos]))) {
			case 32:
			{
				pos += ((NI) 1);
				(*tok).strongspacea += ((NI) 1);
			}
			break;
			case 9:
			{
				lexmessagepos_216505(L, ((NU16) 11), pos, ((NimStringDesc*) &TMP795));
				pos += ((NI) 1);
			}
			break;
			case 13:
			case 10:
			{
				NI indent;
				pos = handlecrlf_217855(L, pos);
				buf = (*L).Sup.buf;
				indent = ((NI) 0);
				{
					while (1) {
						if (!((NU8)(buf[pos]) == (NU8)(32))) goto LA7;
						pos += ((NI) 1);
						indent += ((NI) 1);
					} LA7: ;
				}
				(*tok).strongspacea = ((NI8) 0);
				{
					NIM_BOOL LOC10;
					NIM_BOOL LOC12;
					LOC10 = 0;
					LOC10 = ((NU8)(32) < (NU8)(buf[pos]));
					if (!(LOC10)) goto LA11;
					LOC12 = 0;
					LOC12 = !(((NU8)(buf[pos]) == (NU8)(35)));
					if (LOC12) goto LA13;
					LOC12 = ((NU8)(buf[(NI)(pos + ((NI) 1))]) == (NU8)(35));
					LA13: ;
					LOC10 = LOC12;
					LA11: ;
					if (!LOC10) goto LA14;
					(*tok).indent = indent;
					(*L).currlineindent = indent;
					goto LA1;
				}
				LA14: ;
			}
			break;
			case 35:
			{
				{
					if (!((NU8)(buf[(NI)(pos + ((NI) 1))]) == (NU8)(35))) goto LA19;
					goto LA1;
				}
				LA19: ;
				{
					if (!((NU8)(buf[(NI)(pos + ((NI) 1))]) == (NU8)(91))) goto LA23;
					lexmessagepos_216505(L, ((NU16) 241), pos, ((NimStringDesc*) &TMP1207));
				}
				LA23: ;
				{
					while (1) {
						if (!!((((NU8)(buf[pos])) == ((NU8)(13)) || ((NU8)(buf[pos])) == ((NU8)(10)) || ((NU8)(buf[pos])) == ((NU8)(0))))) goto LA26;
						pos += ((NI) 1);
					} LA26: ;
				}
			}
			break;
			default:
			{
				goto LA1;
			}
			break;
			}
		}
	} LA1: ;
	(*L).Sup.bufpos = pos;
}

N_NIMCALL(Tlineinfo190352, getlineinfo_216451)(Tlexer216185* L) {
	Tlineinfo190352 result;
	NI LOC1;
	memset((void*)(&result), 0, sizeof(result));
	LOC1 = 0;
	LOC1 = getcolnumber_214059((&(*L).Sup), (*L).Sup.bufpos);
	result = newlineinfo_191267((*L).fileidx, (*L).Sup.linenumber, LOC1);
	return result;
}

N_NIMCALL(void, lexmessage_216481)(Tlexer216185* L, NU16 msg, NimStringDesc* arg) {
	Tlineinfo190352 LOC1;
	LOC1 = getlineinfo_216451(L);
	dispmessage_216461(L, LOC1, msg, arg);
}

static N_INLINE(NI, HEX21HEX26_142013)(NI h, NI val) {
	NI result;
	result = 0;
	result = (NI)((NU32)(h) + (NU32)(val));
	result = (NI)((NU32)(result) + (NU32)((NI)((NU32)(result) << (NU32)(((NI) 10)))));
	result = (NI)(result ^ (NI)((NU32)(result) >> (NU32)(((NI) 6))));
	return result;
}

static N_INLINE(NI, HEX21HEX24_142042)(NI h) {
	NI result;
	result = 0;
	result = (NI)((NU32)(h) + (NU32)((NI)((NU32)(h) << (NU32)(((NI) 3)))));
	result = (NI)(result ^ (NI)((NU32)(result) >> (NU32)(((NI) 11))));
	result = (NI)((NU32)(result) + (NU32)((NI)((NU32)(result) << (NU32)(((NI) 15)))));
	return result;
}

N_NIMCALL(void, getsymbol_218110)(Tlexer216185* L, Ttoken216181* tok) {
	NI h;
	NI pos;
	NCSTRING buf;
	h = ((NI) 0);
	pos = (*L).Sup.bufpos;
	buf = (*L).Sup.buf;
	{
		while (1) {
			NIM_CHAR c;
			c = buf[pos];
			switch (((NU8)(c))) {
			case 97 ... 122:
			case 48 ... 57:
			case 128 ... 255:
			{
				{
					NIM_BOOL LOC6;
					NIM_BOOL LOC7;
					LOC6 = 0;
					LOC7 = 0;
					LOC7 = ((NU8)(c) == (NU8)(226));
					if (!(LOC7)) goto LA8;
					LOC7 = ((NU8)(buf[(NI)(pos + ((NI) 1))]) == (NU8)(128));
					LA8: ;
					LOC6 = LOC7;
					if (!(LOC6)) goto LA9;
					LOC6 = ((NU8)(buf[(NI)(pos + ((NI) 2))]) == (NU8)(147));
					LA9: ;
					if (!LOC6) goto LA10;
					{
						if (!!((((NU8)(buf[(NI)(pos + ((NI) 3))])) >= ((NU8)(97)) && ((NU8)(buf[(NI)(pos + ((NI) 3))])) <= ((NU8)(122)) || ((NU8)(buf[(NI)(pos + ((NI) 3))])) >= ((NU8)(65)) && ((NU8)(buf[(NI)(pos + ((NI) 3))])) <= ((NU8)(90)) || ((NU8)(buf[(NI)(pos + ((NI) 3))])) >= ((NU8)(48)) && ((NU8)(buf[(NI)(pos + ((NI) 3))])) <= ((NU8)(57)) || ((NU8)(buf[(NI)(pos + ((NI) 3))])) >= ((NU8)(128)) && ((NU8)(buf[(NI)(pos + ((NI) 3))])) <= ((NU8)(255))))) goto LA14;
						lexmessage_216481((&(*L)), ((NU16) 12), ((NimStringDesc*) &TMP1208));
						goto LA1;
					}
					LA14: ;
					pos += ((NI) 3);
				}
				goto LA4;
				LA10: ;
				{
					h = HEX21HEX26_142013(h, ((NI) (((NU8)(c)))));
					pos += ((NI) 1);
				}
				LA4: ;
			}
			break;
			case 65 ... 90:
			{
				c = ((NIM_CHAR) (((NI) ((NI)(((NI) (((NU8)(c)))) + ((NI) 32))))));
				h = HEX21HEX26_142013(h, ((NI) (((NU8)(c)))));
				pos += ((NI) 1);
			}
			break;
			case 95:
			{
				{
					if (!!((((NU8)(buf[(NI)(pos + ((NI) 1))])) >= ((NU8)(97)) && ((NU8)(buf[(NI)(pos + ((NI) 1))])) <= ((NU8)(122)) || ((NU8)(buf[(NI)(pos + ((NI) 1))])) >= ((NU8)(65)) && ((NU8)(buf[(NI)(pos + ((NI) 1))])) <= ((NU8)(90)) || ((NU8)(buf[(NI)(pos + ((NI) 1))])) >= ((NU8)(48)) && ((NU8)(buf[(NI)(pos + ((NI) 1))])) <= ((NU8)(57)) || ((NU8)(buf[(NI)(pos + ((NI) 1))])) >= ((NU8)(128)) && ((NU8)(buf[(NI)(pos + ((NI) 1))])) <= ((NU8)(255))))) goto LA21;
					lexmessage_216481((&(*L)), ((NU16) 12), ((NimStringDesc*) &TMP1209));
					goto LA1;
				}
				LA21: ;
				pos += ((NI) 1);
			}
			break;
			default:
			{
				goto LA1;
			}
			break;
			}
		}
	} LA1: ;
	h = HEX21HEX24_142042(h);
	unsureAsgnRef((void**) (&(*tok).ident), getident_198280(((NCSTRING) ((&(*L).Sup.buf[(*L).Sup.bufpos]))), (NI)(pos - (*L).Sup.bufpos), h));
	(*L).Sup.bufpos = pos;
	{
		NIM_BOOL LOC26;
		LOC26 = 0;
		LOC26 = ((*(*tok).ident).Sup.id < ((NI) 1));
		if (LOC26) goto LA27;
		LOC26 = (((NI) 70) < (*(*tok).ident).Sup.id);
		LA27: ;
		if (!LOC26) goto LA28;
		(*tok).toktype = ((NU8) 2);
	}
	goto LA24;
	LA28: ;
	{
		(*tok).toktype = ((NU8) ((NI)((*(*tok).ident).Sup.id + ((NI) 2))));
	}
	LA24: ;
}

static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
	memcpy(((NCSTRING) ((&(*dest).data[((*dest).Sup.len)- 0]))), ((NCSTRING) ((*src).data)), (NI)((*src).Sup.len + ((NI) 1)));
	(*dest).Sup.len += (*src).Sup.len;
}

N_NIMCALL(void, scancomment_218388)(Tlexer216185* L, Ttoken216181* tok) {
	NI pos;
	NCSTRING buf;
{	pos = (*L).Sup.bufpos;
	buf = (*L).Sup.buf;
	{
		if (!((NU8)(buf[(NI)(pos + ((NI) 2))]) == (NU8)(91))) goto LA3;
		{
			if (!((NU8)(buf[(NI)(pos + ((NI) 3))]) == (NU8)(93))) goto LA7;
			(*tok).toktype = ((NU8) 113);
			unsureAsgnRef((void**) (&(*tok).literal), copyString(((NimStringDesc*) &TMP1210)));
			(*L).Sup.bufpos += ((NI) 4);
			goto BeforeRet;
		}
		goto LA5;
		LA7: ;
		{
			lexmessagepos_216505(L, ((NU16) 241), pos, ((NimStringDesc*) &TMP1211));
		}
		LA5: ;
	}
	LA3: ;
	(*tok).toktype = ((NU8) 113);
	(*tok).inumber = IL64(0);
	{
		while (1) {
			NI lastbackslash;
			NI indent;
			lastbackslash = ((NI) -1);
			{
				while (1) {
					if (!!((((NU8)(buf[pos])) == ((NU8)(13)) || ((NU8)(buf[pos])) == ((NU8)(10)) || ((NU8)(buf[pos])) == ((NU8)(0))))) goto LA13;
					{
						if (!((NU8)(buf[pos]) == (NU8)(92))) goto LA16;
						lastbackslash = (NI)(pos + ((NI) 1));
					}
					LA16: ;
					(*tok).literal = addChar((*tok).literal, buf[pos]);
					pos += ((NI) 1);
				} LA13: ;
			}
			pos = handlecrlf_217855(L, pos);
			buf = (*L).Sup.buf;
			indent = ((NI) 0);
			{
				while (1) {
					if (!((NU8)(buf[pos]) == (NU8)(32))) goto LA19;
					pos += ((NI) 1);
					indent += ((NI) 1);
				} LA19: ;
			}
			{
				NIM_BOOL LOC22;
				LOC22 = 0;
				LOC22 = ((NU8)(buf[pos]) == (NU8)(35));
				if (!(LOC22)) goto LA23;
				LOC22 = ((NU8)(buf[(NI)(pos + ((NI) 1))]) == (NU8)(35));
				LA23: ;
				if (!LOC22) goto LA24;
				(*tok).literal = resizeString((*tok).literal, 1);
appendString((*tok).literal, ((NimStringDesc*) &TMP1212));
				(*tok).inumber += ((NI) 1);
			}
			goto LA20;
			LA24: ;
			{
				{
					if (!((NU8)(32) < (NU8)(buf[pos]))) goto LA29;
					(*L).indentahead = indent;
				}
				LA29: ;
				goto LA10;
			}
			LA20: ;
		}
	} LA10: ;
	(*L).Sup.bufpos = pos;
	}BeforeRet: ;
}

static N_INLINE(void, endoperator_218276)(Tlexer216185* L, Ttoken216181* tok, NI pos, NI hash) {
	NI h;
	h = HEX21HEX24_142042(hash);
	unsureAsgnRef((void**) (&(*tok).ident), getident_198280(((NCSTRING) ((&(*L).Sup.buf[(*L).Sup.bufpos]))), (NI)(pos - (*L).Sup.bufpos), h));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*(*tok).ident).Sup.id < ((NI) 71));
		if (LOC3) goto LA4;
		LOC3 = (((NI) 75) < (*(*tok).ident).Sup.id);
		LA4: ;
		if (!LOC3) goto LA5;
		(*tok).toktype = ((NU8) 112);
	}
	goto LA1;
	LA5: ;
	{
		(*tok).toktype = ((NU8) ((NI)((NI)((*(*tok).ident).Sup.id - ((NI) 71)) + ((NI) 107))));
	}
	LA1: ;
	(*L).Sup.bufpos = pos;
}

N_NIMCALL(void, getoperator_218301)(Tlexer216185* L, Ttoken216181* tok) {
	NI pos;
	NCSTRING buf;
	NI h;
	pos = (*L).Sup.bufpos;
	buf = (*L).Sup.buf;
	h = ((NI) 0);
	{
		while (1) {
			NIM_CHAR c;
			c = buf[pos];
			{
				if (!!(((TMP1213[((NU8)(c))/8] &(1<<(((NU8)(c))%8)))!=0))) goto LA5;
				goto LA1;
			}
			LA5: ;
			h = HEX21HEX26_142013(h, ((NI) (((NU8)(c)))));
			pos += ((NI) 1);
		}
	} LA1: ;
	endoperator_218276(L, tok, pos, h);
	(*tok).strongspaceb = ((NI8) 0);
	{
		while (1) {
			if (!((NU8)(buf[pos]) == (NU8)(32))) goto LA8;
			pos += ((NI) 1);
			(*tok).strongspaceb += ((NI) 1);
		} LA8: ;
	}
	{
		if (!(((NU8)(buf[pos])) == ((NU8)(13)) || ((NU8)(buf[pos])) == ((NU8)(10)) || ((NU8)(buf[pos])) == ((NU8)(0)))) goto LA11;
		(*tok).strongspaceb = ((NI8) -1);
	}
	LA11: ;
}

N_NIMCALL(void, handlehexchar_217513)(Tlexer216185* L, NI* xi) {
	switch (((NU8)((*L).Sup.buf[(*L).Sup.bufpos]))) {
	case 48 ... 57:
	{
		(*xi) = (NI)((NI)((NU32)((*xi)) << (NU32)(((NI) 4))) | ((NI) ((NI)(((NI) (((NU8)((*L).Sup.buf[(*L).Sup.bufpos])))) - ((NI) 48)))));
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 97 ... 102:
	{
		(*xi) = (NI)((NI)((NU32)((*xi)) << (NU32)(((NI) 4))) | ((NI) ((NI)(((NI) ((NI)(((NI) (((NU8)((*L).Sup.buf[(*L).Sup.bufpos])))) - ((NI) 97)))) + ((NI) 10)))));
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 65 ... 70:
	{
		(*xi) = (NI)((NI)((NU32)((*xi)) << (NU32)(((NI) 4))) | ((NI) ((NI)(((NI) ((NI)(((NI) (((NU8)((*L).Sup.buf[(*L).Sup.bufpos])))) - ((NI) 65)))) + ((NI) 10)))));
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	default:
	{
	}
	break;
	}
}

N_NIMCALL(NIM_BOOL, matchtwochars_216519)(Tlexer216185* L, NIM_CHAR first, TY213407 second) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = ((NU8)((*L).Sup.buf[(*L).Sup.bufpos]) == (NU8)(first));
	if (!(LOC1)) goto LA2;
	LOC1 = ((second[((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))]))/8] &(1<<(((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))]))%8)))!=0);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, handledecchars_217607)(Tlexer216185* L, NI* xi) {
	{
		while (1) {
			if (!(((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) >= ((NU8)(48)) && ((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) <= ((NU8)(57)))) goto LA2;
			(*xi) = (NI)((NI)((*xi) * ((NI) 10)) + ((NI) ((NI)(((NI) (((NU8)((*L).Sup.buf[(*L).Sup.bufpos])))) - ((NI) 48)))));
			(*L).Sup.bufpos += ((NI) 1);
		} LA2: ;
	}
}

N_NIMCALL(void, getescapedchar_217663)(Tlexer216185* L, Ttoken216181* tok) {
	(*L).Sup.bufpos += ((NI) 1);
	switch (((NU8)((*L).Sup.buf[(*L).Sup.bufpos]))) {
	case 110:
	case 78:
	{
		{
			if (!((*tok).toktype == ((NU8) 92))) goto LA4;
			lexmessage_216481((&(*L)), ((NU16) 17), ((NimStringDesc*) &TMP795));
		}
		LA4: ;
		(*tok).literal = resizeString((*tok).literal, tnl_174654->Sup.len + 0);
appendString((*tok).literal, tnl_174654);
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 114:
	case 82:
	case 99:
	case 67:
	{
		(*tok).literal = addChar((*tok).literal, 13);
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 108:
	case 76:
	{
		(*tok).literal = addChar((*tok).literal, 10);
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 102:
	case 70:
	{
		(*tok).literal = addChar((*tok).literal, 12);
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 101:
	case 69:
	{
		(*tok).literal = addChar((*tok).literal, 27);
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 97:
	case 65:
	{
		(*tok).literal = addChar((*tok).literal, 7);
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 98:
	case 66:
	{
		(*tok).literal = addChar((*tok).literal, 8);
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 118:
	case 86:
	{
		(*tok).literal = addChar((*tok).literal, 11);
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 116:
	case 84:
	{
		(*tok).literal = addChar((*tok).literal, 9);
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 39:
	case 34:
	{
		(*tok).literal = addChar((*tok).literal, (*L).Sup.buf[(*L).Sup.bufpos]);
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 92:
	{
		(*tok).literal = addChar((*tok).literal, 92);
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 120:
	case 88:
	{
		NI xi;
		(*L).Sup.bufpos += ((NI) 1);
		xi = ((NI) 0);
		handlehexchar_217513(L, (&xi));
		handlehexchar_217513(L, (&xi));
		(*tok).literal = addChar((*tok).literal, ((NIM_CHAR) (((NI) (xi)))));
	}
	break;
	case 48 ... 57:
	{
		NI xi;
		{
			NIM_BOOL LOC20;
			LOC20 = 0;
			LOC20 = matchtwochars_216519((&(*L)), 48, TMP1214);
			if (!LOC20) goto LA21;
			lexmessage_216481((&(*L)), ((NU16) 238), ((NimStringDesc*) &TMP795));
		}
		LA21: ;
		xi = ((NI) 0);
		handledecchars_217607(L, (&xi));
		{
			if (!(xi <= ((NI) 255))) goto LA25;
			(*tok).literal = addChar((*tok).literal, ((NIM_CHAR) (((NI) (xi)))));
		}
		goto LA23;
		LA25: ;
		{
			lexmessage_216481((&(*L)), ((NU16) 8), ((NimStringDesc*) &TMP795));
		}
		LA23: ;
	}
	break;
	default:
	{
		lexmessage_216481((&(*L)), ((NU16) 8), ((NimStringDesc*) &TMP795));
	}
	break;
	}
}

N_NIMCALL(void, getstring_217913)(Tlexer216185* L, Ttoken216181* tok, NIM_BOOL rawmode) {
	NI pos;
	NCSTRING buf;
	NI line;
	pos = (NI)((*L).Sup.bufpos + ((NI) 1));
	buf = (*L).Sup.buf;
	line = (*L).Sup.linenumber;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((NU8)(buf[pos]) == (NU8)(34));
		if (!(LOC3)) goto LA4;
		LOC3 = ((NU8)(buf[(NI)(pos + ((NI) 1))]) == (NU8)(34));
		LA4: ;
		if (!LOC3) goto LA5;
		(*tok).toktype = ((NU8) 89);
		pos += ((NI) 2);
		{
			NI newpos;
			if (!(((NU8)(buf[pos])) == ((NU8)(32)) || ((NU8)(buf[pos])) == ((NU8)(9)))) goto LA9;
			newpos = (NI)(pos + ((NI) 1));
			{
				while (1) {
					if (!(((NU8)(buf[newpos])) == ((NU8)(32)) || ((NU8)(buf[newpos])) == ((NU8)(9)))) goto LA12;
					newpos += ((NI) 1);
				} LA12: ;
			}
			{
				if (!(((NU8)(buf[newpos])) == ((NU8)(13)) || ((NU8)(buf[newpos])) == ((NU8)(10)))) goto LA15;
				pos = newpos;
			}
			LA15: ;
		}
		LA9: ;
		pos = handlecrlf_217855(L, pos);
		buf = (*L).Sup.buf;
		{
			while (1) {
				switch (((NU8)(buf[pos]))) {
				case 34:
				{
					{
						NIM_BOOL LOC22;
						NIM_BOOL LOC23;
						LOC22 = 0;
						LOC23 = 0;
						LOC23 = ((NU8)(buf[(NI)(pos + ((NI) 1))]) == (NU8)(34));
						if (!(LOC23)) goto LA24;
						LOC23 = ((NU8)(buf[(NI)(pos + ((NI) 2))]) == (NU8)(34));
						LA24: ;
						LOC22 = LOC23;
						if (!(LOC22)) goto LA25;
						LOC22 = !(((NU8)(buf[(NI)(pos + ((NI) 3))]) == (NU8)(34)));
						LA25: ;
						if (!LOC22) goto LA26;
						(*L).Sup.bufpos = (NI)(pos + ((NI) 3));
						goto LA17;
					}
					LA26: ;
					(*tok).literal = addChar((*tok).literal, 34);
					pos += ((NI) 1);
				}
				break;
				case 13:
				case 10:
				{
					pos = handlecrlf_217855(L, pos);
					buf = (*L).Sup.buf;
					(*tok).literal = resizeString((*tok).literal, tnl_174654->Sup.len + 0);
appendString((*tok).literal, tnl_174654);
				}
				break;
				case 0:
				{
					NI line2;
					line2 = (*L).Sup.linenumber;
					(*L).Sup.linenumber = line;
					lexmessagepos_216505(L, ((NU16) 9), (*L).Sup.linestart, ((NimStringDesc*) &TMP795));
					(*L).Sup.linenumber = line2;
					goto LA17;
				}
				break;
				default:
				{
					(*tok).literal = addChar((*tok).literal, buf[pos]);
					pos += ((NI) 1);
				}
				break;
				}
			}
		} LA17: ;
	}
	goto LA1;
	LA5: ;
	{
		{
			if (!rawmode) goto LA34;
			(*tok).toktype = ((NU8) 88);
		}
		goto LA32;
		LA34: ;
		{
			(*tok).toktype = ((NU8) 87);
		}
		LA32: ;
		{
			while (1) {
				NIM_CHAR c;
				c = buf[pos];
				{
					if (!((NU8)(c) == (NU8)(34))) goto LA41;
					{
						NIM_BOOL LOC45;
						LOC45 = 0;
						LOC45 = rawmode;
						if (!(LOC45)) goto LA46;
						LOC45 = ((NU8)(buf[(NI)(pos + ((NI) 1))]) == (NU8)(34));
						LA46: ;
						if (!LOC45) goto LA47;
						pos += ((NI) 2);
						(*tok).literal = addChar((*tok).literal, 34);
					}
					goto LA43;
					LA47: ;
					{
						pos += ((NI) 1);
						goto LA37;
					}
					LA43: ;
				}
				goto LA39;
				LA41: ;
				{
					if (!(((NU8)(c)) == ((NU8)(13)) || ((NU8)(c)) == ((NU8)(10)) || ((NU8)(c)) == ((NU8)(0)))) goto LA51;
					lexmessage_216481((&(*L)), ((NU16) 10), ((NimStringDesc*) &TMP795));
					goto LA37;
				}
				goto LA39;
				LA51: ;
				{
					NIM_BOOL LOC54;
					LOC54 = 0;
					LOC54 = ((NU8)(c) == (NU8)(92));
					if (!(LOC54)) goto LA55;
					LOC54 = !(rawmode);
					LA55: ;
					if (!LOC54) goto LA56;
					(*L).Sup.bufpos = pos;
					getescapedchar_217663(L, tok);
					pos = (*L).Sup.bufpos;
				}
				goto LA39;
				LA56: ;
				{
					(*tok).literal = addChar((*tok).literal, c);
					pos += ((NI) 1);
				}
				LA39: ;
			}
		} LA37: ;
		(*L).Sup.bufpos = pos;
	}
	LA1: ;
}

static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c) {
	(*dest).data[((*dest).Sup.len)- 0] = c;
	(*dest).data[((NI)((*dest).Sup.len + ((NI) 1)))- 0] = 0;
	(*dest).Sup.len += ((NI) 1);
}

N_NIMCALL(void, getcharacter_218060)(Tlexer216185* L, Ttoken216181* tok) {
	NIM_CHAR c;
	(*L).Sup.bufpos += ((NI) 1);
	c = (*L).Sup.buf[(*L).Sup.bufpos];
	switch (((NU8)(c))) {
	case 0 ... 31:
	case 39:
	{
		lexmessage_216481((&(*L)), ((NU16) 8), ((NimStringDesc*) &TMP795));
	}
	break;
	case 92:
	{
		getescapedchar_217663(L, tok);
	}
	break;
	default:
	{
		unsureAsgnRef((void**) (&(*tok).literal), nimCharToStr(c));
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	}
	{
		if (!!(((NU8)((*L).Sup.buf[(*L).Sup.bufpos]) == (NU8)(39)))) goto LA6;
		lexmessage_216481((&(*L)), ((NU16) 19), ((NimStringDesc*) &TMP795));
	}
	LA6: ;
	(*L).Sup.bufpos += ((NI) 1);
}

N_NIMCALL(void, matchchars_216762)(Tlexer216185* L, Ttoken216181* tok, TY213407 chars) {
	NI pos;
	NCSTRING buf;
	pos = (*L).Sup.bufpos;
	buf = (*L).Sup.buf;
	{
		while (1) {
			if (!((chars[((NU8)(buf[pos]))/8] &(1<<(((NU8)(buf[pos]))%8)))!=0)) goto LA2;
			(*tok).literal = addChar((*tok).literal, buf[pos]);
			pos += ((NI) 1);
		} LA2: ;
	}
	(*L).Sup.bufpos = pos;
}

N_NIMCALL(void, lexmessagelitnum_216792)(Tlexer216185* L, NU16 msg, NI startpos) {
	NI msgpos;
	Ttoken216181 t;
	msgpos = (*L).Sup.bufpos;
	memset((void*)(&t), 0, sizeof(t));
	t.literal = copyString(((NimStringDesc*) &TMP795));
	(*L).Sup.bufpos = startpos;
	matchchars_216762(L, (&t), TMP1216);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) == ((NU8)(43)) || ((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) == ((NU8)(45)));
		if (!(LOC3)) goto LA4;
		LOC3 = (((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos - ((NI) 1))])) == ((NU8)(101)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos - ((NI) 1))])) == ((NU8)(69)));
		LA4: ;
		if (!LOC3) goto LA5;
		t.literal = addChar(t.literal, (*L).Sup.buf[(*L).Sup.bufpos]);
		(*L).Sup.bufpos += ((NI) 1);
		matchchars_216762(L, (&t), TMP1216);
	}
	LA5: ;
	{
		if (!((TMP1217[((NU8)((*L).Sup.buf[(*L).Sup.bufpos]))/8] &(1<<(((NU8)((*L).Sup.buf[(*L).Sup.bufpos]))%8)))!=0)) goto LA9;
		(*L).Sup.bufpos += ((NI) 1);
		t.literal = addChar(t.literal, (*L).Sup.buf[(*L).Sup.bufpos]);
		matchchars_216762(L, (&t), TMP1214);
	}
	LA9: ;
	(*L).Sup.bufpos = msgpos;
	lexmessage_216481((&(*L)), msg, t.literal);
}

N_NIMCALL(void, matchunderscorechars_216713)(Tlexer216185* L, Ttoken216181* tok, TY213407 chars) {
	NI pos;
	NCSTRING buf;
	pos = (*L).Sup.bufpos;
	buf = (*L).Sup.buf;
	{
		while (1) {
			{
				if (!((chars[((NU8)(buf[pos]))/8] &(1<<(((NU8)(buf[pos]))%8)))!=0)) goto LA5;
				(*tok).literal = addChar((*tok).literal, buf[pos]);
				pos += ((NI) 1);
			}
			goto LA3;
			LA5: ;
			{
				goto LA1;
			}
			LA3: ;
			{
				if (!((NU8)(buf[pos]) == (NU8)(95))) goto LA10;
				{
					if (!!(((chars[((NU8)(buf[(NI)(pos + ((NI) 1))]))/8] &(1<<(((NU8)(buf[(NI)(pos + ((NI) 1))]))%8)))!=0))) goto LA14;
					lexmessage_216481((&(*L)), ((NU16) 12), ((NimStringDesc*) &TMP1209));
					goto LA1;
				}
				LA14: ;
				(*tok).literal = addChar((*tok).literal, 95);
				pos += ((NI) 1);
			}
			LA10: ;
		}
	} LA1: ;
	(*L).Sup.bufpos = pos;
}

static N_INLINE(void, pushSafePoint)(TSafePoint* s) {
	(*s).hasRaiseAction = NIM_FALSE;
	(*s).prev = exchandler_20843;
	exchandler_20843 = s;
}

N_NIMCALL(NI, unsafeparseuint_216596)(NimStringDesc* s, NI64* b, NI start) {
	NI result;
	NI i;
	result = 0;
	i = start;
	{
		if (!(((NU8)(s->data[i])) >= ((NU8)(48)) && ((NU8)(s->data[i])) <= ((NU8)(57)))) goto LA3;
		(*b) = IL64(0);
		{
			while (1) {
				if (!(((NU8)(s->data[i])) >= ((NU8)(48)) && ((NU8)(s->data[i])) <= ((NU8)(57)))) goto LA6;
				(*b) = (NI64)((NI64)((*b) * IL64(10)) + ((NI64) ((NI)(((NI) (((NU8)(s->data[i])))) - ((NI) 48)))));
				i += ((NI) 1);
				{
					while (1) {
						if (!((NU8)(s->data[i]) == (NU8)(95))) goto LA8;
						i += ((NI) 1);
					} LA8: ;
				}
			} LA6: ;
		}
		result = (NI)(i - start);
	}
	LA3: ;
	return result;
}

static N_INLINE(void, popSafePoint)(void) {
	exchandler_20843 = (*exchandler_20843).prev;
}

static N_INLINE(Exception*, getCurrentException)(void) {
	Exception* result;
	result = 0;
	result = currexception_20845;
	return result;
}

static N_INLINE(NIM_BOOL, canbecycleroot_52667)(Cell48946* c) {
	NIM_BOOL result;
	result = 0;
	result = !((((*(*c).typ).flags &(1<<((((NU8) 1))&7)))!=0));
	return result;
}

static N_INLINE(void, rtladdcycleroot_53423)(Cell48946* c) {
	{
		if (!!((((NI) ((NI)((*c).refcount & ((NI) 3)))) == ((NI) 3)))) goto LA3;
		(*c).refcount = (NI)((NI)((*c).refcount & ((NI) -4)) | ((NI) 3));
		incl_49665((&gch_51059.cycleroots), c);
	}
	LA3: ;
}

static N_INLINE(void, incref_55022)(Cell48946* c) {
	(*c).refcount = (NI)((NU32)((*c).refcount) + (NU32)(((NI) 8)));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = canbecycleroot_52667(c);
		if (!LOC3) goto LA4;
		rtladdcycleroot_53423(c);
	}
	LA4: ;
}

static N_INLINE(void, decref_54604)(Cell48946* c) {
	{
		(*c).refcount -= ((NI) 8);
		if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA3;
		rtladdzct_54204(c);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = canbecycleroot_52667(c);
		if (!LOC6) goto LA7;
		rtladdcycleroot_53423(c);
	}
	goto LA1;
	LA7: ;
	LA1: ;
}

static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		Cell48946* LOC5;
		if (!!((src == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = usrtocell_52646(src);
		incref_55022(LOC5);
	}
	LA3: ;
	{
		Cell48946* LOC10;
		if (!!(((*dest) == NIM_NIL))) goto LA8;
		LOC10 = 0;
		LOC10 = usrtocell_52646((*dest));
		decref_54604(LOC10);
	}
	LA8: ;
	(*dest) = src;
}

static N_INLINE(void, popCurrentException)(void) {
	asgnRef((void**) (&currexception_20845), NIM_NIL);
}

N_NIMCALL(void, getnumber_216708)(Tlexer216185* L, Ttoken216181* Result) {
	NI startpos;
	NI endpos;
	NI64 volatile xi;
	NIM_BOOL isbase10;
	NI postpos;
	NI pos;
	TSafePoint TMP1222;
	startpos = 0;
	endpos = 0;
	xi = 0;
	isbase10 = NIM_TRUE;
	(*Result).toktype = ((NU8) 73);
	unsureAsgnRef((void**) (&(*Result).literal), copyString(((NimStringDesc*) &TMP795)));
	(*Result).base = ((NU8) 0);
	startpos = (*L).Sup.bufpos;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((NU8)((*L).Sup.buf[(*L).Sup.bufpos]) == (NU8)(48));
		if (!(LOC3)) goto LA4;
		LOC3 = (((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) >= ((NU8)(66)) && ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) <= ((NU8)(67)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) == ((NU8)(79)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) == ((NU8)(88)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) >= ((NU8)(98)) && ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) <= ((NU8)(99)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) == ((NU8)(111)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) == ((NU8)(120)));
		LA4: ;
		if (!LOC3) goto LA5;
		isbase10 = NIM_FALSE;
		(*Result).literal = addChar((*Result).literal, 48);
		(*L).Sup.bufpos += ((NI) 1);
		switch (((NU8)((*L).Sup.buf[(*L).Sup.bufpos]))) {
		case 79:
		{
			lexmessagelitnum_216792(L, ((NU16) 15), startpos);
		}
		break;
		case 120:
		case 88:
		{
			(*Result).literal = addChar((*Result).literal, 120);
			(*L).Sup.bufpos += ((NI) 1);
			matchunderscorechars_216713(L, Result, TMP1218);
		}
		break;
		case 111:
		case 99:
		case 67:
		{
			(*Result).literal = addChar((*Result).literal, 99);
			(*L).Sup.bufpos += ((NI) 1);
			matchunderscorechars_216713(L, Result, TMP1219);
		}
		break;
		case 98:
		case 66:
		{
			(*Result).literal = addChar((*Result).literal, 98);
			(*L).Sup.bufpos += ((NI) 1);
			matchunderscorechars_216713(L, Result, TMP1220);
		}
		break;
		default:
		{
			Tlineinfo190352 LOC12;
			LOC12 = getlineinfo_216451((&(*L)));
			internalerror_196172(LOC12, ((NimStringDesc*) &TMP1221));
		}
		break;
		}
	}
	goto LA1;
	LA5: ;
	{
		matchunderscorechars_216713(L, Result, TMP1214);
		{
			NIM_BOOL LOC16;
			LOC16 = 0;
			LOC16 = ((NU8)((*L).Sup.buf[(*L).Sup.bufpos]) == (NU8)(46));
			if (!(LOC16)) goto LA17;
			LOC16 = (((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) >= ((NU8)(48)) && ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) <= ((NU8)(57)));
			LA17: ;
			if (!LOC16) goto LA18;
			(*Result).toktype = ((NU8) 85);
			(*Result).literal = addChar((*Result).literal, 46);
			(*L).Sup.bufpos += ((NI) 1);
			matchunderscorechars_216713(L, Result, TMP1214);
		}
		LA18: ;
		{
			if (!(((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) == ((NU8)(101)) || ((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) == ((NU8)(69)))) goto LA22;
			(*Result).toktype = ((NU8) 85);
			(*Result).literal = addChar((*Result).literal, 101);
			(*L).Sup.bufpos += ((NI) 1);
			{
				if (!(((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) == ((NU8)(43)) || ((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) == ((NU8)(45)))) goto LA26;
				(*Result).literal = addChar((*Result).literal, (*L).Sup.buf[(*L).Sup.bufpos]);
				(*L).Sup.bufpos += ((NI) 1);
			}
			LA26: ;
			matchunderscorechars_216713(L, Result, TMP1214);
		}
		LA22: ;
	}
	LA1: ;
	endpos = (*L).Sup.bufpos;
	postpos = endpos;
	{
		if (!((TMP1217[((NU8)((*L).Sup.buf[postpos]))/8] &(1<<(((NU8)((*L).Sup.buf[postpos]))%8)))!=0)) goto LA30;
		{
			if (!((NU8)((*L).Sup.buf[postpos]) == (NU8)(39))) goto LA34;
			postpos += ((NI) 1);
		}
		LA34: ;
		switch (((NU8)((*L).Sup.buf[postpos]))) {
		case 102:
		case 70:
		{
			postpos += ((NI) 1);
			{
				NIM_BOOL LOC39;
				LOC39 = 0;
				LOC39 = ((NU8)((*L).Sup.buf[postpos]) == (NU8)(51));
				if (!(LOC39)) goto LA40;
				LOC39 = ((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 1))]) == (NU8)(50));
				LA40: ;
				if (!LOC39) goto LA41;
				(*Result).toktype = ((NU8) 84);
				postpos += ((NI) 2);
			}
			goto LA37;
			LA41: ;
			{
				NIM_BOOL LOC44;
				LOC44 = 0;
				LOC44 = ((NU8)((*L).Sup.buf[postpos]) == (NU8)(54));
				if (!(LOC44)) goto LA45;
				LOC44 = ((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 1))]) == (NU8)(52));
				LA45: ;
				if (!LOC44) goto LA46;
				(*Result).toktype = ((NU8) 85);
				postpos += ((NI) 2);
			}
			goto LA37;
			LA46: ;
			{
				NIM_BOOL LOC49;
				NIM_BOOL LOC50;
				LOC49 = 0;
				LOC50 = 0;
				LOC50 = ((NU8)((*L).Sup.buf[postpos]) == (NU8)(49));
				if (!(LOC50)) goto LA51;
				LOC50 = ((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 1))]) == (NU8)(50));
				LA51: ;
				LOC49 = LOC50;
				if (!(LOC49)) goto LA52;
				LOC49 = ((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 2))]) == (NU8)(56));
				LA52: ;
				if (!LOC49) goto LA53;
				(*Result).toktype = ((NU8) 86);
				postpos += ((NI) 3);
			}
			goto LA37;
			LA53: ;
			{
				(*Result).toktype = ((NU8) 84);
			}
			LA37: ;
		}
		break;
		case 100:
		case 68:
		{
			postpos += ((NI) 1);
			(*Result).toktype = ((NU8) 85);
		}
		break;
		case 105:
		case 73:
		{
			postpos += ((NI) 1);
			{
				NIM_BOOL LOC60;
				LOC60 = 0;
				LOC60 = ((NU8)((*L).Sup.buf[postpos]) == (NU8)(54));
				if (!(LOC60)) goto LA61;
				LOC60 = ((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 1))]) == (NU8)(52));
				LA61: ;
				if (!LOC60) goto LA62;
				(*Result).toktype = ((NU8) 77);
				postpos += ((NI) 2);
			}
			goto LA58;
			LA62: ;
			{
				NIM_BOOL LOC65;
				LOC65 = 0;
				LOC65 = ((NU8)((*L).Sup.buf[postpos]) == (NU8)(51));
				if (!(LOC65)) goto LA66;
				LOC65 = ((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 1))]) == (NU8)(50));
				LA66: ;
				if (!LOC65) goto LA67;
				(*Result).toktype = ((NU8) 76);
				postpos += ((NI) 2);
			}
			goto LA58;
			LA67: ;
			{
				NIM_BOOL LOC70;
				LOC70 = 0;
				LOC70 = ((NU8)((*L).Sup.buf[postpos]) == (NU8)(49));
				if (!(LOC70)) goto LA71;
				LOC70 = ((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 1))]) == (NU8)(54));
				LA71: ;
				if (!LOC70) goto LA72;
				(*Result).toktype = ((NU8) 75);
				postpos += ((NI) 2);
			}
			goto LA58;
			LA72: ;
			{
				if (!((NU8)((*L).Sup.buf[postpos]) == (NU8)(56))) goto LA75;
				(*Result).toktype = ((NU8) 74);
				postpos += ((NI) 1);
			}
			goto LA58;
			LA75: ;
			{
				lexmessagelitnum_216792(L, ((NU16) 14), startpos);
			}
			LA58: ;
		}
		break;
		case 117:
		case 85:
		{
			postpos += ((NI) 1);
			{
				NIM_BOOL LOC81;
				LOC81 = 0;
				LOC81 = ((NU8)((*L).Sup.buf[postpos]) == (NU8)(54));
				if (!(LOC81)) goto LA82;
				LOC81 = ((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 1))]) == (NU8)(52));
				LA82: ;
				if (!LOC81) goto LA83;
				(*Result).toktype = ((NU8) 82);
				postpos += ((NI) 2);
			}
			goto LA79;
			LA83: ;
			{
				NIM_BOOL LOC86;
				LOC86 = 0;
				LOC86 = ((NU8)((*L).Sup.buf[postpos]) == (NU8)(51));
				if (!(LOC86)) goto LA87;
				LOC86 = ((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 1))]) == (NU8)(50));
				LA87: ;
				if (!LOC86) goto LA88;
				(*Result).toktype = ((NU8) 81);
				postpos += ((NI) 2);
			}
			goto LA79;
			LA88: ;
			{
				NIM_BOOL LOC91;
				LOC91 = 0;
				LOC91 = ((NU8)((*L).Sup.buf[postpos]) == (NU8)(49));
				if (!(LOC91)) goto LA92;
				LOC91 = ((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 1))]) == (NU8)(54));
				LA92: ;
				if (!LOC91) goto LA93;
				(*Result).toktype = ((NU8) 80);
				postpos += ((NI) 2);
			}
			goto LA79;
			LA93: ;
			{
				if (!((NU8)((*L).Sup.buf[postpos]) == (NU8)(56))) goto LA96;
				(*Result).toktype = ((NU8) 79);
				postpos += ((NI) 1);
			}
			goto LA79;
			LA96: ;
			{
				(*Result).toktype = ((NU8) 78);
			}
			LA79: ;
		}
		break;
		default:
		{
			lexmessagelitnum_216792(L, ((NU16) 14), startpos);
		}
		break;
		}
	}
	LA30: ;
	{
		NIM_BOOL LOC102;
		NIM_BOOL LOC104;
		LOC102 = 0;
		LOC102 = (((NU8)((*L).Sup.buf[postpos])) == ((NU8)(39)) || ((NU8)((*L).Sup.buf[postpos])) >= ((NU8)(48)) && ((NU8)((*L).Sup.buf[postpos])) <= ((NU8)(57)) || ((NU8)((*L).Sup.buf[postpos])) >= ((NU8)(65)) && ((NU8)((*L).Sup.buf[postpos])) <= ((NU8)(70)) || ((NU8)((*L).Sup.buf[postpos])) == ((NU8)(88)) || ((NU8)((*L).Sup.buf[postpos])) == ((NU8)(95)) || ((NU8)((*L).Sup.buf[postpos])) >= ((NU8)(97)) && ((NU8)((*L).Sup.buf[postpos])) <= ((NU8)(102)) || ((NU8)((*L).Sup.buf[postpos])) == ((NU8)(111)) || ((NU8)((*L).Sup.buf[postpos])) == ((NU8)(120)));
		if (LOC102) goto LA103;
		LOC104 = 0;
		LOC104 = ((NU8)((*L).Sup.buf[postpos]) == (NU8)(46));
		if (!(LOC104)) goto LA105;
		LOC104 = (((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 1))])) >= ((NU8)(48)) && ((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 1))])) <= ((NU8)(57)));
		LA105: ;
		LOC102 = LOC104;
		LA103: ;
		if (!LOC102) goto LA106;
		lexmessagelitnum_216792(L, ((NU16) 14), startpos);
	}
	LA106: ;
	(*L).Sup.bufpos = startpos;
	pos = startpos;
	pushSafePoint(&TMP1222);
	TMP1222.status = setjmp(TMP1222.context);
	if (TMP1222.status == 0) {
		{
			NIM_BOOL LOC111;
			LOC111 = 0;
			LOC111 = ((NU8)((*L).Sup.buf[pos]) == (NU8)(48));
			if (!(LOC111)) goto LA112;
			LOC111 = (((NU8)((*L).Sup.buf[(NI)(pos + ((NI) 1))])) == ((NU8)(88)) || ((NU8)((*L).Sup.buf[(NI)(pos + ((NI) 1))])) == ((NU8)(120)) || ((NU8)((*L).Sup.buf[(NI)(pos + ((NI) 1))])) == ((NU8)(111)) || ((NU8)((*L).Sup.buf[(NI)(pos + ((NI) 1))])) == ((NU8)(99)) || ((NU8)((*L).Sup.buf[(NI)(pos + ((NI) 1))])) == ((NU8)(67)) || ((NU8)((*L).Sup.buf[(NI)(pos + ((NI) 1))])) == ((NU8)(98)) || ((NU8)((*L).Sup.buf[(NI)(pos + ((NI) 1))])) == ((NU8)(66)));
			LA112: ;
			if (!LOC111) goto LA113;
			pos += ((NI) 2);
			xi = IL64(0);
			switch (((NU8)((*L).Sup.buf[(NI)(pos - ((NI) 1))]))) {
			case 98:
			case 66:
			{
				(*Result).base = ((NU8) 1);
				{
					while (1) {
						if (!(pos < endpos)) goto LA117;
						{
							if (!!(((NU8)((*L).Sup.buf[pos]) == (NU8)(95)))) goto LA120;
							xi = (NI64)((NI64)((NU64)(xi) << (NU64)(IL64(1))) | ((NI64) ((NI)(((NI) (((NU8)((*L).Sup.buf[pos])))) - ((NI) 48)))));
						}
						LA120: ;
						pos += ((NI) 1);
					} LA117: ;
				}
			}
			break;
			case 111:
			case 99:
			case 67:
			{
				(*Result).base = ((NU8) 2);
				{
					while (1) {
						if (!(pos < endpos)) goto LA124;
						{
							if (!!(((NU8)((*L).Sup.buf[pos]) == (NU8)(95)))) goto LA127;
							xi = (NI64)((NI64)((NU64)(xi) << (NU64)(IL64(3))) | ((NI64) ((NI)(((NI) (((NU8)((*L).Sup.buf[pos])))) - ((NI) 48)))));
						}
						LA127: ;
						pos += ((NI) 1);
					} LA124: ;
				}
			}
			break;
			case 120:
			case 88:
			{
				(*Result).base = ((NU8) 3);
				{
					while (1) {
						if (!(pos < endpos)) goto LA131;
						switch (((NU8)((*L).Sup.buf[pos]))) {
						case 95:
						{
							pos += ((NI) 1);
						}
						break;
						case 48 ... 57:
						{
							xi = (NI64)((NI64)((NU64)(xi) << (NU64)(IL64(4))) | ((NI64) ((NI)(((NI) (((NU8)((*L).Sup.buf[pos])))) - ((NI) 48)))));
							pos += ((NI) 1);
						}
						break;
						case 97 ... 102:
						{
							xi = (NI64)((NI64)((NU64)(xi) << (NU64)(IL64(4))) | ((NI64) ((NI)(((NI) ((NI)(((NI) (((NU8)((*L).Sup.buf[pos])))) - ((NI) 97)))) + ((NI) 10)))));
							pos += ((NI) 1);
						}
						break;
						case 65 ... 70:
						{
							xi = (NI64)((NI64)((NU64)(xi) << (NU64)(IL64(4))) | ((NI64) ((NI)(((NI) ((NI)(((NI) (((NU8)((*L).Sup.buf[pos])))) - ((NI) 65)))) + ((NI) 10)))));
							pos += ((NI) 1);
						}
						break;
						default:
						{
							goto LA130;
						}
						break;
						}
					} LA131: ;
				} LA130: ;
			}
			break;
			default:
			{
				Tlineinfo190352 LOC138;
				LOC138 = getlineinfo_216451((&(*L)));
				internalerror_196172(LOC138, ((NimStringDesc*) &TMP1221));
			}
			break;
			}
			switch ((*Result).toktype) {
			case ((NU8) 73):
			case ((NU8) 77):
			{
				(*Result).inumber = xi;
			}
			break;
			case ((NU8) 74):
			{
				(*Result).inumber = ((NI64) (((NI8)(NU8)(NU)(((NI) (xi))))));
			}
			break;
			case ((NU8) 75):
			{
				(*Result).inumber = ((NI64) (((NI16)(NU16)(NU)(((NI) (xi))))));
			}
			break;
			case ((NU8) 76):
			{
				(*Result).inumber = ((NI64) (((NI32)(NU32)(NU64)(xi))));
			}
			break;
			case ((NU8) 78):
			case ((NU8) 82):
			{
				(*Result).inumber = xi;
			}
			break;
			case ((NU8) 79):
			{
				(*Result).inumber = ((NI64) (((NU8) (((NI8)(NU8)(NU)(((NI) (xi))))))));
			}
			break;
			case ((NU8) 80):
			{
				(*Result).inumber = ((NI64) (((NU16) (((NI16)(NU16)(NU)(((NI) (xi))))))));
			}
			break;
			case ((NU8) 81):
			{
				(*Result).inumber = ((NI64) (((NU32) (((NI32)(NU32)(NU64)(xi))))));
			}
			break;
			case ((NU8) 84):
			{
				(*Result).fnumber = ((NF) ((*((NF32*) ((&xi))))));
			}
			break;
			case ((NU8) 85):
			{
				(*Result).fnumber = (*((NF*) ((&xi))));
			}
			break;
			default:
			{
				Tlineinfo190352 LOC150;
				LOC150 = getlineinfo_216451((&(*L)));
				internalerror_196172(LOC150, ((NimStringDesc*) &TMP1221));
			}
			break;
			}
			{
				NIM_BOOL outofrange;
				if (!!(((*Result).toktype == ((NU8) 83) || (*Result).toktype == ((NU8) 84) || (*Result).toktype == ((NU8) 85) || (*Result).toktype == ((NU8) 86)))) goto LA153;
				switch ((*Result).toktype) {
				case ((NU8) 79):
				case ((NU8) 80):
				case ((NU8) 81):
				{
					outofrange = !(((*Result).inumber == xi));
				}
				break;
				case ((NU8) 74):
				{
					outofrange = (IL64(255) < xi);
				}
				break;
				case ((NU8) 75):
				{
					outofrange = (IL64(65535) < xi);
				}
				break;
				case ((NU8) 76):
				{
					outofrange = (IL64(4294967295) < xi);
				}
				break;
				default:
				{
					outofrange = NIM_FALSE;
				}
				break;
				}
				{
					if (!outofrange) goto LA162;
					lexmessagelitnum_216792(L, ((NU16) 16), startpos);
				}
				LA162: ;
			}
			LA153: ;
		}
		goto LA109;
		LA113: ;
		{
			NIM_BOOL outofrange;
			switch ((*Result).toktype) {
			case ((NU8) 83):
			case ((NU8) 84):
			case ((NU8) 85):
			case ((NU8) 86):
			{
				(*Result).fnumber = nsuParseFloat((*Result).literal);
			}
			break;
			case ((NU8) 82):
			{
				NI len;
				xi = IL64(0);
				len = unsafeparseuint_216596((*Result).literal, (&xi), ((NI) 0));
				{
					NIM_BOOL LOC169;
					Valueerror4049* volatile e_217375;
					NimStringDesc* LOC173;
					NimStringDesc* LOC174;
					LOC169 = 0;
					LOC169 = !((len == ((*Result).literal ? (*Result).literal->Sup.len : 0)));
					if (LOC169) goto LA170;
					LOC169 = (len == ((NI) 0));
					LA170: ;
					if (!LOC169) goto LA171;
					e_217375 = 0;
					e_217375 = (Valueerror4049*) newObj((&NTI25028), sizeof(Valueerror4049));
					(*e_217375).Sup.Sup.m_type = (&NTI4049);
					LOC173 = 0;
					LOC174 = 0;
					LOC174 = nimInt64ToStr(xi);
					LOC173 = rawNewString(LOC174->Sup.len + 17);
appendString(LOC173, ((NimStringDesc*) &TMP1223));
appendString(LOC173, LOC174);
					asgnRefNoCycle((void**) (&(*e_217375).Sup.message), LOC173);
					raiseException((Exception*)e_217375, "ValueError");
				}
				LA171: ;
				(*Result).inumber = xi;
			}
			break;
			default:
			{
				(*Result).inumber = nsuParseBiggestInt((*Result).literal);
			}
			break;
			}
			switch ((*Result).toktype) {
			case ((NU8) 74):
			{
				NIM_BOOL LOC177;
				LOC177 = 0;
				LOC177 = ((*Result).inumber < IL64(-128));
				if (LOC177) goto LA178;
				LOC177 = (IL64(127) < (*Result).inumber);
				LA178: ;
				outofrange = LOC177;
			}
			break;
			case ((NU8) 79):
			{
				NIM_BOOL LOC180;
				LOC180 = 0;
				LOC180 = ((*Result).inumber < IL64(0));
				if (LOC180) goto LA181;
				LOC180 = (IL64(255) < (*Result).inumber);
				LA181: ;
				outofrange = LOC180;
			}
			break;
			case ((NU8) 75):
			{
				NIM_BOOL LOC183;
				LOC183 = 0;
				LOC183 = ((*Result).inumber < IL64(-32768));
				if (LOC183) goto LA184;
				LOC183 = (IL64(32767) < (*Result).inumber);
				LA184: ;
				outofrange = LOC183;
			}
			break;
			case ((NU8) 80):
			{
				NIM_BOOL LOC186;
				LOC186 = 0;
				LOC186 = ((*Result).inumber < IL64(0));
				if (LOC186) goto LA187;
				LOC186 = (IL64(65535) < (*Result).inumber);
				LA187: ;
				outofrange = LOC186;
			}
			break;
			case ((NU8) 76):
			{
				NIM_BOOL LOC189;
				LOC189 = 0;
				LOC189 = ((*Result).inumber < IL64(-2147483648));
				if (LOC189) goto LA190;
				LOC189 = (IL64(2147483647) < (*Result).inumber);
				LA190: ;
				outofrange = LOC189;
			}
			break;
			case ((NU8) 81):
			{
				NIM_BOOL LOC192;
				LOC192 = 0;
				LOC192 = ((*Result).inumber < IL64(0));
				if (LOC192) goto LA193;
				LOC192 = (IL64(4294967295) < (*Result).inumber);
				LA193: ;
				outofrange = LOC192;
			}
			break;
			default:
			{
				outofrange = NIM_FALSE;
			}
			break;
			}
			{
				if (!outofrange) goto LA197;
				lexmessagelitnum_216792(L, ((NU16) 16), startpos);
			}
			LA197: ;
		}
		LA109: ;
		{
			if (!((*Result).toktype == ((NU8) 73))) goto LA201;
			{
				NIM_BOOL LOC205;
				LOC205 = 0;
				LOC205 = ((*Result).inumber < IL64(-2147483648));
				if (LOC205) goto LA206;
				LOC205 = (IL64(2147483647) < (*Result).inumber);
				LA206: ;
				if (!LOC205) goto LA207;
				(*Result).toktype = ((NU8) 77);
			}
			LA207: ;
		}
		LA201: ;
		popSafePoint();
	}
	else {
		popSafePoint();
		if (isObj(getCurrentException()->Sup.m_type, (&NTI4049))) {
			TMP1222.status = 0;
			lexmessagelitnum_216792(L, ((NU16) 14), startpos);
			popCurrentException();
		}
		else 		if (isObj(getCurrentException()->Sup.m_type, (&NTI4043))||isObj(getCurrentException()->Sup.m_type, (&NTI4059))) {
			TMP1222.status = 0;
			lexmessagelitnum_216792(L, ((NU16) 16), startpos);
			popCurrentException();
		}
	}
	if (TMP1222.status != 0) reraiseException();
	(*L).Sup.bufpos = postpos;
}

N_NIMCALL(void, rawgettok_219848)(Tlexer216185* L, Ttoken216181* tok) {
	NIM_CHAR c;
	filltoken_216379(tok);
	{
		if (!(((NI) 0) <= (*L).indentahead)) goto LA3;
		(*tok).indent = (*L).indentahead;
		(*L).currlineindent = (*L).indentahead;
		(*L).indentahead = ((NI) -1);
	}
	goto LA1;
	LA3: ;
	{
		(*tok).indent = ((NI) -1);
	}
	LA1: ;
	skip_219437(L, tok);
	c = (*L).Sup.buf[(*L).Sup.bufpos];
	(*tok).line = (*L).Sup.linenumber;
	(*tok).col = getcolnumber_214059((&(*L).Sup), (*L).Sup.bufpos);
	{
		if (!(((NU8)(c)) >= ((NU8)(65)) && ((NU8)(c)) <= ((NU8)(81)) || ((NU8)(c)) >= ((NU8)(83)) && ((NU8)(c)) <= ((NU8)(90)) || ((NU8)(c)) >= ((NU8)(97)) && ((NU8)(c)) <= ((NU8)(107)) || ((NU8)(c)) >= ((NU8)(109)) && ((NU8)(c)) <= ((NU8)(113)) || ((NU8)(c)) >= ((NU8)(115)) && ((NU8)(c)) <= ((NU8)(122)) || ((NU8)(c)) >= ((NU8)(128)) && ((NU8)(c)) <= ((NU8)(255)))) goto LA8;
		getsymbol_218110(L, tok);
	}
	goto LA6;
	LA8: ;
	{
		switch (((NU8)(c))) {
		case 35:
		{
			scancomment_218388(L, tok);
		}
		break;
		case 42:
		{
			{
				NIM_BOOL LOC15;
				NI h;
				LOC15 = 0;
				LOC15 = ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))]) == (NU8)(58));
				if (!(LOC15)) goto LA16;
				LOC15 = !(((TMP1213[((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 2))]))/8] &(1<<(((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 2))]))%8)))!=0));
				LA16: ;
				if (!LOC15) goto LA17;
				h = HEX21HEX26_142013(((NI) 0), ((NI) 42));
				endoperator_218276(L, tok, (NI)((*L).Sup.bufpos + ((NI) 1)), h);
			}
			goto LA13;
			LA17: ;
			{
				getoperator_218301(L, tok);
			}
			LA13: ;
		}
		break;
		case 44:
		{
			(*tok).toktype = ((NU8) 105);
			(*L).Sup.bufpos += ((NI) 1);
		}
		break;
		case 108:
		{
			{
				if (!!((((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) >= ((NU8)(48)) && ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) <= ((NU8)(57)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) >= ((NU8)(65)) && ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) <= ((NU8)(90)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) == ((NU8)(95)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) >= ((NU8)(97)) && ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) <= ((NU8)(122)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) >= ((NU8)(128)) && ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) <= ((NU8)(255))))) goto LA24;
				lexmessage_216481((&(*L)), ((NU16) 243), ((NimStringDesc*) &TMP795));
			}
			LA24: ;
			getsymbol_218110(L, tok);
		}
		break;
		case 114:
		case 82:
		{
			{
				if (!((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))]) == (NU8)(34))) goto LA29;
				(*L).Sup.bufpos += ((NI) 1);
				getstring_217913(L, tok, NIM_TRUE);
			}
			goto LA27;
			LA29: ;
			{
				getsymbol_218110(L, tok);
			}
			LA27: ;
		}
		break;
		case 40:
		{
			(*L).Sup.bufpos += ((NI) 1);
			{
				NIM_BOOL LOC35;
				LOC35 = 0;
				LOC35 = ((NU8)((*L).Sup.buf[(*L).Sup.bufpos]) == (NU8)(46));
				if (!(LOC35)) goto LA36;
				LOC35 = !(((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))]) == (NU8)(46)));
				LA36: ;
				if (!LOC35) goto LA37;
				(*tok).toktype = ((NU8) 103);
				(*L).Sup.bufpos += ((NI) 1);
			}
			goto LA33;
			LA37: ;
			{
				(*tok).toktype = ((NU8) 93);
			}
			LA33: ;
		}
		break;
		case 41:
		{
			(*tok).toktype = ((NU8) 94);
			(*L).Sup.bufpos += ((NI) 1);
		}
		break;
		case 91:
		{
			(*L).Sup.bufpos += ((NI) 1);
			{
				NIM_BOOL LOC44;
				LOC44 = 0;
				LOC44 = ((NU8)((*L).Sup.buf[(*L).Sup.bufpos]) == (NU8)(46));
				if (!(LOC44)) goto LA45;
				LOC44 = !(((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))]) == (NU8)(46)));
				LA45: ;
				if (!LOC44) goto LA46;
				(*tok).toktype = ((NU8) 99);
				(*L).Sup.bufpos += ((NI) 1);
			}
			goto LA42;
			LA46: ;
			{
				(*tok).toktype = ((NU8) 95);
			}
			LA42: ;
		}
		break;
		case 93:
		{
			(*tok).toktype = ((NU8) 96);
			(*L).Sup.bufpos += ((NI) 1);
		}
		break;
		case 46:
		{
			{
				if (!((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))]) == (NU8)(93))) goto LA53;
				(*tok).toktype = ((NU8) 100);
				(*L).Sup.bufpos += ((NI) 2);
			}
			goto LA51;
			LA53: ;
			{
				if (!((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))]) == (NU8)(125))) goto LA56;
				(*tok).toktype = ((NU8) 102);
				(*L).Sup.bufpos += ((NI) 2);
			}
			goto LA51;
			LA56: ;
			{
				if (!((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))]) == (NU8)(41))) goto LA59;
				(*tok).toktype = ((NU8) 104);
				(*L).Sup.bufpos += ((NI) 2);
			}
			goto LA51;
			LA59: ;
			{
				getoperator_218301(L, tok);
			}
			LA51: ;
		}
		break;
		case 123:
		{
			(*L).Sup.bufpos += ((NI) 1);
			{
				NIM_BOOL LOC65;
				LOC65 = 0;
				LOC65 = ((NU8)((*L).Sup.buf[(*L).Sup.bufpos]) == (NU8)(46));
				if (!(LOC65)) goto LA66;
				LOC65 = !(((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))]) == (NU8)(46)));
				LA66: ;
				if (!LOC65) goto LA67;
				(*tok).toktype = ((NU8) 101);
				(*L).Sup.bufpos += ((NI) 1);
			}
			goto LA63;
			LA67: ;
			{
				(*tok).toktype = ((NU8) 97);
			}
			LA63: ;
		}
		break;
		case 125:
		{
			(*tok).toktype = ((NU8) 98);
			(*L).Sup.bufpos += ((NI) 1);
		}
		break;
		case 59:
		{
			(*tok).toktype = ((NU8) 106);
			(*L).Sup.bufpos += ((NI) 1);
		}
		break;
		case 96:
		{
			(*tok).toktype = ((NU8) 114);
			(*L).Sup.bufpos += ((NI) 1);
		}
		break;
		case 95:
		{
			(*L).Sup.bufpos += ((NI) 1);
			{
				if (!!((((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) >= ((NU8)(97)) && ((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) <= ((NU8)(122)) || ((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) >= ((NU8)(65)) && ((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) <= ((NU8)(90)) || ((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) >= ((NU8)(48)) && ((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) <= ((NU8)(57)) || ((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) >= ((NU8)(128)) && ((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) <= ((NU8)(255))))) goto LA76;
				(*tok).toktype = ((NU8) 2);
				unsureAsgnRef((void**) (&(*tok).ident), getident_198463(((NimStringDesc*) &TMP1209)));
			}
			goto LA74;
			LA76: ;
			{
				NimStringDesc* LOC79;
				NimStringDesc* LOC80;
				unsureAsgnRef((void**) (&(*tok).literal), nimCharToStr(c));
				(*tok).toktype = ((NU8) 0);
				LOC79 = 0;
				LOC80 = 0;
				LOC80 = nimIntToStr(((NI) (((NU8)(c)))));
				LOC79 = rawNewString(LOC80->Sup.len + 5);
appendChar(LOC79, c);
appendString(LOC79, ((NimStringDesc*) &TMP1215));
appendString(LOC79, LOC80);
appendChar(LOC79, 41);
				lexmessage_216481((&(*L)), ((NU16) 12), LOC79);
			}
			LA74: ;
		}
		break;
		case 34:
		{
			NIM_BOOL rawmode;
			NIM_BOOL LOC82;
			LOC82 = 0;
			LOC82 = (((NI) 0) < (*L).Sup.bufpos);
			if (!(LOC82)) goto LA83;
			LOC82 = (((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos - ((NI) 1))])) >= ((NU8)(97)) && ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos - ((NI) 1))])) <= ((NU8)(122)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos - ((NI) 1))])) >= ((NU8)(65)) && ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos - ((NI) 1))])) <= ((NU8)(90)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos - ((NI) 1))])) >= ((NU8)(48)) && ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos - ((NI) 1))])) <= ((NU8)(57)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos - ((NI) 1))])) >= ((NU8)(128)) && ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos - ((NI) 1))])) <= ((NU8)(255)));
			LA83: ;
			rawmode = LOC82;
			getstring_217913(L, tok, rawmode);
			{
				if (!rawmode) goto LA86;
				(*tok).toktype += ((NI) 2);
			}
			LA86: ;
		}
		break;
		case 39:
		{
			(*tok).toktype = ((NU8) 92);
			getcharacter_218060(L, tok);
			(*tok).toktype = ((NU8) 92);
		}
		break;
		case 48 ... 57:
		{
			getnumber_216708(L, (&(*tok)));
		}
		break;
		default:
		{
			{
				if (!((TMP1213[((NU8)(c))/8] &(1<<(((NU8)(c))%8)))!=0)) goto LA93;
				getoperator_218301(L, tok);
			}
			goto LA91;
			LA93: ;
			{
				if (!((NU8)(c) == (NU8)(0))) goto LA96;
				(*tok).toktype = ((NU8) 1);
				(*tok).indent = ((NI) 0);
			}
			goto LA91;
			LA96: ;
			{
				NimStringDesc* LOC99;
				NimStringDesc* LOC100;
				unsureAsgnRef((void**) (&(*tok).literal), nimCharToStr(c));
				(*tok).toktype = ((NU8) 0);
				LOC99 = 0;
				LOC100 = 0;
				LOC100 = nimIntToStr(((NI) (((NU8)(c)))));
				LOC99 = rawNewString(LOC100->Sup.len + 5);
appendChar(LOC99, c);
appendString(LOC99, ((NimStringDesc*) &TMP1215));
appendString(LOC99, LOC100);
appendChar(LOC99, 41);
				lexmessage_216481((&(*L)), ((NU16) 12), LOC99);
				(*L).Sup.bufpos += ((NI) 1);
			}
			LA91: ;
		}
		break;
		}
	}
	LA6: ;
}

N_NIMCALL(void, lexmessagetok_216492)(Tlexer216185* L, NU16 msg, Ttoken216181* tok, NimStringDesc* arg) {
	Tlineinfo190352 info;
	info = newlineinfo_191267((*L).fileidx, (*tok).line, (*tok).col);
	dispmessage_216461(L, info, msg, arg);
}

N_NIMCALL(NIM_BOOL, iskeyword_216229)(NU8 kind) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = (((NU8) 3) <= kind);
	if (!(LOC1)) goto LA2;
	LOC1 = (kind <= ((NU8) 72));
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(NimStringDesc*, toktostr_216323)(Ttoken216181* tok) {
	NimStringDesc* result;
	result = 0;
	switch ((*tok).toktype) {
	case ((NU8) 73) ... ((NU8) 77):
	{
		result = nimInt64ToStr((*tok).inumber);
	}
	break;
	case ((NU8) 83) ... ((NU8) 85):
	{
		result = nimFloatToStr((*tok).fnumber);
	}
	break;
	case ((NU8) 0):
	case ((NU8) 87) ... ((NU8) 92):
	case ((NU8) 113):
	{
		result = copyString((*tok).literal);
	}
	break;
	case ((NU8) 93) ... ((NU8) 107):
	case ((NU8) 1):
	case ((NU8) 114):
	{
		result = copyString(Toktypetostr_216169[((*tok).toktype)- 0]);
	}
	break;
	default:
	{
		{
			if (!!(((*tok).ident == NIM_NIL))) goto LA8;
			result = copyString((*(*tok).ident).s);
		}
		goto LA6;
		LA8: ;
		{
			internalerror_196191(((NimStringDesc*) &TMP1360));
			result = copyString(((NimStringDesc*) &TMP795));
		}
		LA6: ;
	}
	break;
	}
	return result;
}

N_NIMCALL(NimStringDesc*, prettytok_216345)(Ttoken216181* tok) {
	NimStringDesc* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC6;
		LOC3 = 0;
		LOC3 = iskeyword_216229((*tok).toktype);
		if (!LOC3) goto LA4;
		LOC6 = 0;
		LOC6 = rawNewString((*(*tok).ident).s->Sup.len + 8);
appendString(LOC6, ((NimStringDesc*) &TMP1356));
appendString(LOC6, (*(*tok).ident).s);
		result = LOC6;
	}
	goto LA1;
	LA4: ;
	{
		result = toktostr_216323(tok);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, closelexer_216422)(Tlexer216185* lex) {
	Tbaselexer214024* LOC1;
	glinescompiled_216213 += (*lex).Sup.linenumber;
	LOC1 = 0;
	LOC1 = &lex->Sup;
	closebaselexer_214045(LOC1);
}

static N_INLINE(NIM_BOOL, ismagicidentseparatorrune_141029)(NCSTRING cs, NI i) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = ((NU8)(cs[i]) == (NU8)(226));
	if (!(LOC2)) goto LA3;
	LOC2 = ((NU8)(cs[(NI)(i + ((NI) 1))]) == (NU8)(128));
	LA3: ;
	LOC1 = LOC2;
	if (!(LOC1)) goto LA4;
	LOC1 = ((NU8)(cs[(NI)(i + ((NI) 2))]) == (NU8)(147));
	LA4: ;
	result = LOC1;
	return result;
}

N_NIMCALL(NIM_BOOL, isnimidentifier_216257)(NimStringDesc* s) {
	NIM_BOOL result;
{	result = 0;
	{
		NI i;
		NI slen;
		if (!(((NU8)(s->data[((NI) 0)])) >= ((NU8)(97)) && ((NU8)(s->data[((NI) 0)])) <= ((NU8)(122)) || ((NU8)(s->data[((NI) 0)])) >= ((NU8)(65)) && ((NU8)(s->data[((NI) 0)])) <= ((NU8)(90)) || ((NU8)(s->data[((NI) 0)])) >= ((NU8)(128)) && ((NU8)(s->data[((NI) 0)])) <= ((NU8)(255)))) goto LA3;
		i = ((NI) 1);
		slen = (s ? s->Sup.len : 0);
		{
			while (1) {
				if (!(i < slen)) goto LA6;
				{
					if (!((NU8)(s->data[i]) == (NU8)(95))) goto LA9;
					i += ((NI) 1);
				}
				goto LA7;
				LA9: ;
				{
					NIM_BOOL LOC12;
					LOC12 = 0;
					LOC12 = ismagicidentseparatorrune_141029(s->data, i);
					if (!LOC12) goto LA13;
					i += ((NI) 3);
				}
				goto LA7;
				LA13: ;
				LA7: ;
				{
					if (!!((((NU8)(s->data[i])) >= ((NU8)(97)) && ((NU8)(s->data[i])) <= ((NU8)(122)) || ((NU8)(s->data[i])) >= ((NU8)(65)) && ((NU8)(s->data[i])) <= ((NU8)(90)) || ((NU8)(s->data[i])) >= ((NU8)(48)) && ((NU8)(s->data[i])) <= ((NU8)(57)) || ((NU8)(s->data[i])) >= ((NU8)(128)) && ((NU8)(s->data[i])) <= ((NU8)(255))))) goto LA17;
					goto BeforeRet;
				}
				LA17: ;
				i += ((NI) 1);
			} LA6: ;
		}
		result = NIM_TRUE;
	}
	LA3: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, openlexer_216410)(Tlexer216185* lex, NimStringDesc* filename, Tllstream213204* inputstream) {
	NI32 LOC1;
	LOC1 = 0;
	LOC1 = fileinfoidx_191254(filename);
	openlexer_216389(lex, LOC1, inputstream);
}

N_NIMCALL(void, printtok_216355)(Ttoken216181* tok) {
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	NimStringDesc* LOC3;
	NimStringDesc* LOC4;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = nimIntToStr((*tok).line);
	LOC3 = 0;
	LOC3 = nimIntToStr((*tok).col);
	LOC4 = 0;
	LOC4 = toktostr_216323(tok);
	LOC1 = rawNewString(LOC2->Sup.len + LOC3->Sup.len + Toktypetostr_216169[((*tok).toktype)- 0]->Sup.len + LOC4->Sup.len + 3);
appendString(LOC1, LOC2);
appendString(LOC1, ((NimStringDesc*) &TMP1344));
appendString(LOC1, LOC3);
appendString(LOC1, ((NimStringDesc*) &TMP5235));
appendString(LOC1, Toktypetostr_216169[((*tok).toktype)- 0]);
appendString(LOC1, ((NimStringDesc*) &TMP5236));
appendString(LOC1, LOC4);
	msgwriteln_191915(LOC1, 0);
}
NIM_EXTERNC N_NOINLINE(void, compiler_lexerInit000)(void) {
	asgnRefNoCycle((void**) (&dummyident_216364), getident_198463(((NimStringDesc*) &TMP795)));
}

NIM_EXTERNC N_NOINLINE(void, compiler_lexerDatInit000)(void) {
static TNimNode* TMP1180[5];
static TNimNode* TMP1181[2];
static TNimNode* TMP1183[11];
static TNimNode* TMP1184[119];
NI TMP1186;
static char* NIM_CONST TMP1185[119] = {
"tkInvalid", 
"tkEof", 
"tkSymbol", 
"tkAddr", 
"tkAnd", 
"tkAs", 
"tkAsm", 
"tkAtomic", 
"tkBind", 
"tkBlock", 
"tkBreak", 
"tkCase", 
"tkCast", 
"tkConcept", 
"tkConst", 
"tkContinue", 
"tkConverter", 
"tkDefer", 
"tkDiscard", 
"tkDistinct", 
"tkDiv", 
"tkDo", 
"tkElif", 
"tkElse", 
"tkEnd", 
"tkEnum", 
"tkExcept", 
"tkExport", 
"tkFinally", 
"tkFor", 
"tkFrom", 
"tkFunc", 
"tkGeneric", 
"tkIf", 
"tkImport", 
"tkIn", 
"tkInclude", 
"tkInterface", 
"tkIs", 
"tkIsnot", 
"tkIterator", 
"tkLet", 
"tkMacro", 
"tkMethod", 
"tkMixin", 
"tkMod", 
"tkNil", 
"tkNot", 
"tkNotin", 
"tkObject", 
"tkOf", 
"tkOr", 
"tkOut", 
"tkProc", 
"tkPtr", 
"tkRaise", 
"tkRef", 
"tkReturn", 
"tkShl", 
"tkShr", 
"tkStatic", 
"tkTemplate", 
"tkTry", 
"tkTuple", 
"tkType", 
"tkUsing", 
"tkVar", 
"tkWhen", 
"tkWhile", 
"tkWith", 
"tkWithout", 
"tkXor", 
"tkYield", 
"tkIntLit", 
"tkInt8Lit", 
"tkInt16Lit", 
"tkInt32Lit", 
"tkInt64Lit", 
"tkUIntLit", 
"tkUInt8Lit", 
"tkUInt16Lit", 
"tkUInt32Lit", 
"tkUInt64Lit", 
"tkFloatLit", 
"tkFloat32Lit", 
"tkFloat64Lit", 
"tkFloat128Lit", 
"tkStrLit", 
"tkRStrLit", 
"tkTripleStrLit", 
"tkGStrLit", 
"tkGTripleStrLit", 
"tkCharLit", 
"tkParLe", 
"tkParRi", 
"tkBracketLe", 
"tkBracketRi", 
"tkCurlyLe", 
"tkCurlyRi", 
"tkBracketDotLe", 
"tkBracketDotRi", 
"tkCurlyDotLe", 
"tkCurlyDotRi", 
"tkParDotLe", 
"tkParDotRi", 
"tkComma", 
"tkSemiColon", 
"tkColon", 
"tkColonColon", 
"tkEquals", 
"tkDot", 
"tkDotDot", 
"tkOpr", 
"tkComment", 
"tkAccent", 
"tkSpaces", 
"tkInfixOpr", 
"tkPrefixOpr", 
"tkPostfixOpr"};
static TNimNode* TMP1187[4];
NI TMP1189;
static char* NIM_CONST TMP1188[4] = {
"base10", 
"base2", 
"base8", 
"base16"};
static TNimNode TMP789[147];
NTI216185.size = sizeof(Tlexer216185);
NTI216185.kind = 17;
NTI216185.base = (&NTI214024);
TMP1180[0] = &TMP789[1];
TMP789[1].kind = 1;
TMP789[1].offset = offsetof(Tlexer216185, fileidx);
TMP789[1].typ = (&NTI114);
TMP789[1].name = "fileIdx";
TMP1180[1] = &TMP789[2];
TMP789[2].kind = 1;
TMP789[2].offset = offsetof(Tlexer216185, indentahead);
TMP789[2].typ = (&NTI108);
TMP789[2].name = "indentAhead";
TMP1180[2] = &TMP789[3];
TMP789[3].kind = 1;
TMP789[3].offset = offsetof(Tlexer216185, currlineindent);
TMP789[3].typ = (&NTI108);
TMP789[3].name = "currLineIndent";
TMP1180[3] = &TMP789[4];
TMP789[4].kind = 1;
TMP789[4].offset = offsetof(Tlexer216185, strongspaces);
TMP789[4].typ = (&NTI138);
TMP789[4].name = "strongSpaces";
TMP1180[4] = &TMP789[5];
NTI216183.size = sizeof(TY576951);
NTI216183.kind = 18;
NTI216183.base = 0;
NTI216183.flags = 2;
TMP1181[0] = &TMP789[7];
TMP789[7].kind = 1;
TMP789[7].offset = offsetof(TY576951, Field0);
TMP789[7].typ = (&NTI153);
TMP789[7].name = "Field0";
TMP1181[1] = &TMP789[8];
NTI576954.size = sizeof(TY576954);
NTI576954.kind = 18;
NTI576954.base = 0;
NTI576954.flags = 3;
TMP789[9].len = 0; TMP789[9].kind = 2;
NTI576954.node = &TMP789[9];
NTI576953.size = sizeof(TY576954*);
NTI576953.kind = 22;
NTI576953.base = (&NTI576954);
NTI576953.flags = 2;
NTI576953.marker = TMP1182;
TMP789[8].kind = 1;
TMP789[8].offset = offsetof(TY576951, Field1);
TMP789[8].typ = (&NTI576953);
TMP789[8].name = "Field1";
TMP789[6].len = 2; TMP789[6].kind = 2; TMP789[6].sons = &TMP1181[0];
NTI216183.node = &TMP789[6];
TMP789[5].kind = 1;
TMP789[5].offset = offsetof(Tlexer216185, errorhandler);
TMP789[5].typ = (&NTI216183);
TMP789[5].name = "errorHandler";
TMP789[0].len = 5; TMP789[0].kind = 2; TMP789[0].sons = &TMP1180[0];
NTI216185.node = &TMP789[0];
NTI216181.size = sizeof(Ttoken216181);
NTI216181.kind = 18;
NTI216181.base = 0;
NTI216181.flags = 2;
TMP1183[0] = &TMP789[11];
NTI216022.size = sizeof(NU8);
NTI216022.kind = 14;
NTI216022.base = 0;
NTI216022.flags = 3;
for (TMP1186 = 0; TMP1186 < 119; TMP1186++) {
TMP789[TMP1186+12].kind = 1;
TMP789[TMP1186+12].offset = TMP1186;
TMP789[TMP1186+12].name = TMP1185[TMP1186];
TMP1184[TMP1186] = &TMP789[TMP1186+12];
}
TMP789[131].len = 119; TMP789[131].kind = 2; TMP789[131].sons = &TMP1184[0];
NTI216022.node = &TMP789[131];
TMP789[11].kind = 1;
TMP789[11].offset = offsetof(Ttoken216181, toktype);
TMP789[11].typ = (&NTI216022);
TMP789[11].name = "tokType";
TMP1183[1] = &TMP789[132];
TMP789[132].kind = 1;
TMP789[132].offset = offsetof(Ttoken216181, indent);
TMP789[132].typ = (&NTI108);
TMP789[132].name = "indent";
TMP1183[2] = &TMP789[133];
TMP789[133].kind = 1;
TMP789[133].offset = offsetof(Ttoken216181, ident);
TMP789[133].typ = (&NTI198019);
TMP789[133].name = "ident";
TMP1183[3] = &TMP789[134];
TMP789[134].kind = 1;
TMP789[134].offset = offsetof(Ttoken216181, inumber);
TMP789[134].typ = (&NTI8112);
TMP789[134].name = "iNumber";
TMP1183[4] = &TMP789[135];
TMP789[135].kind = 1;
TMP789[135].offset = offsetof(Ttoken216181, fnumber);
TMP789[135].typ = (&NTI8114);
TMP789[135].name = "fNumber";
TMP1183[5] = &TMP789[136];
NTI216179.size = sizeof(NU8);
NTI216179.kind = 14;
NTI216179.base = 0;
NTI216179.flags = 3;
for (TMP1189 = 0; TMP1189 < 4; TMP1189++) {
TMP789[TMP1189+137].kind = 1;
TMP789[TMP1189+137].offset = TMP1189;
TMP789[TMP1189+137].name = TMP1188[TMP1189];
TMP1187[TMP1189] = &TMP789[TMP1189+137];
}
TMP789[141].len = 4; TMP789[141].kind = 2; TMP789[141].sons = &TMP1187[0];
NTI216179.node = &TMP789[141];
TMP789[136].kind = 1;
TMP789[136].offset = offsetof(Ttoken216181, base);
TMP789[136].typ = (&NTI216179);
TMP789[136].name = "base";
TMP1183[6] = &TMP789[142];
TMP789[142].kind = 1;
TMP789[142].offset = offsetof(Ttoken216181, strongspacea);
TMP789[142].typ = (&NTI110);
TMP789[142].name = "strongSpaceA";
TMP1183[7] = &TMP789[143];
TMP789[143].kind = 1;
TMP789[143].offset = offsetof(Ttoken216181, strongspaceb);
TMP789[143].typ = (&NTI110);
TMP789[143].name = "strongSpaceB";
TMP1183[8] = &TMP789[144];
TMP789[144].kind = 1;
TMP789[144].offset = offsetof(Ttoken216181, literal);
TMP789[144].typ = (&NTI149);
TMP789[144].name = "literal";
TMP1183[9] = &TMP789[145];
TMP789[145].kind = 1;
TMP789[145].offset = offsetof(Ttoken216181, line);
TMP789[145].typ = (&NTI108);
TMP789[145].name = "line";
TMP1183[10] = &TMP789[146];
TMP789[146].kind = 1;
TMP789[146].offset = offsetof(Ttoken216181, col);
TMP789[146].typ = (&NTI108);
TMP789[146].name = "col";
TMP789[10].len = 11; TMP789[10].kind = 2; TMP789[10].sons = &TMP1183[0];
NTI216181.node = &TMP789[10];
}

