/* Generated by Nim Compiler v0.10.2 */
/*   (c) 2014 Andreas Rumpf */
/* The generated code is subject to the original license. */
#define NIM_INTBITS 64
#include "nimbase.h"

#include <string.h>

#include <setjmp.h>

#include <stdio.h>
typedef struct tident201021 tident201021;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tcell44933 tcell44933;
typedef struct TNimType TNimType;
typedef struct tcellseq44949 tcellseq44949;
typedef struct tgcheap47016 tgcheap47016;
typedef struct tcellset44945 tcellset44945;
typedef struct tpagedesc44941 tpagedesc44941;
typedef struct tmemregion27210 tmemregion27210;
typedef struct tsmallchunk26440 tsmallchunk26440;
typedef struct tllchunk27204 tllchunk27204;
typedef struct tbigchunk26442 tbigchunk26442;
typedef struct tintset26417 tintset26417;
typedef struct ttrunk26413 ttrunk26413;
typedef struct tavlnode27208 tavlnode27208;
typedef struct tgcstat47014 tgcstat47014;
typedef struct TNimNode TNimNode;
typedef struct tlexer216190 tlexer216190;
typedef struct tbaselexer214024 tbaselexer214024;
typedef struct TNimObject TNimObject;
typedef struct tllstream212204 tllstream212204;
typedef struct tlineinfo196539 tlineinfo196539;
typedef struct TY613034 TY613034;
typedef struct TY613037 TY613037;
typedef struct ttoken216186 ttoken216186;
typedef struct tidobj201015 tidobj201015;
typedef struct Exception Exception;
typedef struct TSafePoint TSafePoint;
typedef struct tbasechunk26438 tbasechunk26438;
typedef struct tfreecell26430 tfreecell26430;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  tcell44933  {
NI Refcount;
TNimType* Typ;
};
struct  tcellseq44949  {
NI Len;
NI Cap;
tcell44933** D;
};
struct  tcellset44945  {
NI Counter;
NI Max;
tpagedesc44941* Head;
tpagedesc44941** Data;
};
typedef tsmallchunk26440* TY27222[512];
typedef ttrunk26413* ttrunkbuckets26415[256];
struct  tintset26417  {
ttrunkbuckets26415 Data;
};
struct  tmemregion27210  {
NI Minlargeobj;
NI Maxlargeobj;
TY27222 Freesmallchunks;
tllchunk27204* Llmem;
NI Currmem;
NI Maxmem;
NI Freemem;
NI Lastsize;
tbigchunk26442* Freechunkslist;
tintset26417 Chunkstarts;
tavlnode27208* Root;
tavlnode27208* Deleted;
tavlnode27208* Last;
tavlnode27208* Freeavlnodes;
};
struct  tgcstat47014  {
NI Stackscans;
NI Cyclecollections;
NI Maxthreshold;
NI Maxstacksize;
NI Maxstackcells;
NI Cycletablesize;
NI64 Maxpause;
};
struct  tgcheap47016  {
void* Stackbottom;
NI Cyclethreshold;
tcellseq44949 Zct;
tcellseq44949 Decstack;
tcellset44945 Cycleroots;
tcellseq44949 Tempstack;
NI Recgclock;
tmemregion27210 Region;
tgcstat47014 Stat;
};
typedef N_NIMCALL_PTR(void, TY3089) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3094) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3089 marker;
TY3094 deepcopy;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  tbaselexer214024  {
  TNimObject Sup;
NI Bufpos;
NCSTRING Buf;
NI Buflen;
tllstream212204* Stream;
NI Linenumber;
NI Sentinel;
NI Linestart;
};
struct  tlineinfo196539  {
NI16 Line;
NI16 Col;
NI32 Fileindex;
};
typedef struct {
N_NIMCALL_PTR(void, ClPrc) (tlineinfo196539 info, NU16 msg, NimStringDesc* arg, void* ClEnv);
void* ClEnv;
} terrorhandler216188;
struct  tlexer216190  {
  tbaselexer214024 Sup;
NI32 Fileidx;
NI Indentahead;
NI Currlineindent;
NIM_BOOL Strongspaces;
terrorhandler216188 Errorhandler;
};
struct TY613034 {
void* Field0;
TY613037* Field1;
};
struct TY613037 {
char dummy;
};
struct  ttoken216186  {
NU8 Toktype;
NI Indent;
tident201021* Ident;
NI64 Inumber;
NF Fnumber;
NU8 Base;
NI8 Strongspacea;
NI8 Strongspaceb;
NimStringDesc* Literal;
NI Line;
NI Col;
};
struct  tllstream212204  {
  TNimObject Sup;
NU8 Kind;
FILE* F;
NimStringDesc* S;
NI Rd;
NI Wr;
NI Lineoffset;
};
typedef N_CLOSURE_PTR(void, TMP1052) (tlineinfo196539 info, NU16 msg, NimStringDesc* arg);
struct  tidobj201015  {
  TNimObject Sup;
NI Id;
};
struct  tident201021  {
  tidobj201015 Sup;
NimStringDesc* S;
tident201021* Next;
NI H;
};
typedef NU8 TY212607[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;
} TY14809;
struct  TSafePoint  {
TSafePoint* prev;
NI status;
jmp_buf context;
NIM_BOOL hasRaiseAction;
TY14809 raiseAction;
};
typedef NimStringDesc* TY216175[118];
typedef NimStringDesc* TY198620[4];
typedef NimStringDesc* TY198301[1];
typedef NI TY26420[8];
struct  tpagedesc44941  {
tpagedesc44941* Next;
NI Key;
TY26420 Bits;
};
struct  tbasechunk26438  {
NI Prevsize;
NI Size;
NIM_BOOL Used;
};
struct  tsmallchunk26440  {
  tbasechunk26438 Sup;
tsmallchunk26440* Next;
tsmallchunk26440* Prev;
tfreecell26430* Freelist;
NI Free;
NI Acc;
NF Data;
};
struct  tllchunk27204  {
NI Size;
NI Acc;
tllchunk27204* Next;
};
struct  tbigchunk26442  {
  tbasechunk26438 Sup;
tbigchunk26442* Next;
tbigchunk26442* Prev;
NI Align;
NF Data;
};
struct  ttrunk26413  {
ttrunk26413* Next;
NI Key;
TY26420 Bits;
};
typedef tavlnode27208* TY27214[2];
struct  tavlnode27208  {
TY27214 Link;
NI Key;
NI Upperbound;
NI Level;
};
struct  tfreecell26430  {
tfreecell26430* Next;
NI Zerofield;
};
N_NIMCALL(tident201021*, getident_201472)(NimStringDesc* identifier);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(tcell44933*, usrtocell_48646)(void* usr);
static N_INLINE(void, rtladdzct_50204)(tcell44933* c);
N_NOINLINE(void, addzct_48617)(tcellseq44949* s, tcell44933* c);
N_NIMCALL(void, TMP1017)(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, tllstream212204* inputstream, NI buflen);
N_NIMCALL(void, filltoken_216493)(ttoken216186* l);
N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newlen);
N_NIMCALL(void, skip_219641)(tlexer216190* l, ttoken216186* tok);
N_NIMCALL(void, lexmessagepos_216602)(tlexer216190* l, NU16 msg, NI pos, NimStringDesc* arg);
N_NIMCALL(tlineinfo196539, newlineinfo_197128)(NI32 fileinfoidx, NI line, NI col);
N_NIMCALL(void, dispmessage_216572)(tlexer216190* l, tlineinfo196539 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(void, message_198976)(tlineinfo196539 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NI, handlecrlf_217880)(tlexer216190* l, NI pos);
N_NIMCALL(NI, getcolnumber_214059)(tbaselexer214024* l, NI pos);
N_NIMCALL(NimStringDesc*, newstring_217832)(NCSTRING s, NI len);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
N_NIMCALL(void, addsourceline_199042)(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_218190)(tlexer216190* l, ttoken216186* tok);
static N_INLINE(NI, HEX21HEX26_128025)(NI h, NI val);
N_NIMCALL(void, lexmessage_216289)(tlexer216190* l, NU16 msg, NimStringDesc* arg);
N_NIMCALL(tlineinfo196539, getlineinfo_216562)(tlexer216190* l);
static N_INLINE(NI, HEX21HEX24_128054)(NI h);
N_NIMCALL(tident201021*, getident_201268)(NCSTRING identifier, NI length, NI h);
N_NIMCALL(void, scancomment_218456)(tlexer216190* l, ttoken216186* 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_218327)(tlexer216190* l, ttoken216186* tok, NI pos, NI hash);
N_NIMCALL(void, getoperator_218354)(tlexer216190* l, ttoken216186* tok);
N_NIMCALL(void, getstring_217948)(tlexer216190* l, ttoken216186* tok, NIM_BOOL rawmode);
N_NIMCALL(void, getescapedchar_217648)(tlexer216190* l, ttoken216186* tok);
N_NIMCALL(void, handlehexchar_217483)(tlexer216190* l, NI* xi);
N_NIMCALL(NIM_BOOL, matchtwochars_216689)(tlexer216190* l, NIM_CHAR first, TY212607 second);
N_NIMCALL(void, handledecchars_217586)(tlexer216190* l, NI* xi);
N_NIMCALL(void, getcharacter_218128)(tlexer216190* l, ttoken216186* tok);
N_NIMCALL(NimStringDesc*, nimCharToStr)(NIM_CHAR x);
N_NIMCALL(void, getnumber_216767)(tlexer216190* l, ttoken216186* Result);
N_NIMCALL(void, matchunderscorechars_216616)(tlexer216190* l, ttoken216186* tok, TY212607 chars);
static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
static N_INLINE(void, pushSafePoint)(TSafePoint* s);
N_NIMCALL(void, internalerror_198987)(tlineinfo196539 info, NimStringDesc* errmsg);
N_NIMCALL(NIM_BOOL, isfloatliteral_216715)(NimStringDesc* s);
N_NIMCALL(NF, nsuParseFloat)(NimStringDesc* s);
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_51025)(tcell44933* c);
static N_INLINE(NIM_BOOL, canbecycleroot_48667)(tcell44933* c);
static N_INLINE(void, rtladdcycleroot_49429)(tcell44933* c);
N_NOINLINE(void, incl_45671)(tcellset44945* s, tcell44933* cell);
static N_INLINE(void, decref_50604)(tcell44933* c);
N_NIMCALL(void, reraiseException)(void);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x);
N_NIMCALL(NIM_BOOL, iskeyword_216223)(NU8 kind);
N_NIMCALL(NimStringDesc*, toktostr_216271)(ttoken216186* tok);
N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x);
N_NIMCALL(NimStringDesc*, nimFloatToStr)(NF f);
N_NIMCALL(void, internalerror_199006)(NimStringDesc* errmsg);
N_NIMCALL(void, closebaselexer_214045)(tbaselexer214024* l);
N_NIMCALL(void, openlexer_216229)(tlexer216190* lex, NI32 fileidx, tllstream212204* inputstream);
N_NIMCALL(NI32, fileinfoidx_196747)(NimStringDesc* filename);
N_NIMCALL(void, write_12881)(FILE* f, NimStringDesc** a, NI aLen0);
N_NIMCALL(void, write_12865)(FILE* f, NimStringDesc* s);
static N_INLINE(void, writeln_171205)(FILE* f_171209, NimStringDesc** x_171213, NI x_171213Len0);
STRING_LITERAL(TMP717, "", 0);
STRING_LITERAL(TMP1053, "use \'# [\' instead; \'#[\'", 23);
STRING_LITERAL(TMP1054, "_", 1);
STRING_LITERAL(TMP1055, "use \'## [\' instead; \'##[\'", 25);
STRING_LITERAL(TMP1056, "\012", 1);
static NIM_CONST TY212607 TMP1057 = {
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 TY212607 TMP1058 = {
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}
;
static NIM_CONST TY212607 TMP1059 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
0x7E, 0x00, 0x00, 0x01, 0x7E, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
static NIM_CONST TY212607 TMP1060 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
0x0C, 0x00, 0x00, 0x00, 0x0C, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP1061, "\'f", 2);
STRING_LITERAL(TMP1062, "\'i", 2);
STRING_LITERAL(TMP1063, "\'", 1);
STRING_LITERAL(TMP1065, "getNumber", 9);
STRING_LITERAL(TMP1073, " (\\", 3);
STRING_LITERAL(TMP1083, "tkInvalid", 9);
STRING_LITERAL(TMP1084, "[EOF]", 5);
STRING_LITERAL(TMP1085, "tkSymbol", 8);
STRING_LITERAL(TMP1086, "addr", 4);
STRING_LITERAL(TMP1087, "and", 3);
STRING_LITERAL(TMP1088, "as", 2);
STRING_LITERAL(TMP1089, "asm", 3);
STRING_LITERAL(TMP1090, "atomic", 6);
STRING_LITERAL(TMP1091, "bind", 4);
STRING_LITERAL(TMP1092, "block", 5);
STRING_LITERAL(TMP1093, "break", 5);
STRING_LITERAL(TMP1094, "case", 4);
STRING_LITERAL(TMP1095, "cast", 4);
STRING_LITERAL(TMP1096, "const", 5);
STRING_LITERAL(TMP1097, "continue", 8);
STRING_LITERAL(TMP1098, "converter", 9);
STRING_LITERAL(TMP1099, "defer", 5);
STRING_LITERAL(TMP1100, "discard", 7);
STRING_LITERAL(TMP1101, "distinct", 8);
STRING_LITERAL(TMP1102, "div", 3);
STRING_LITERAL(TMP1103, "do", 2);
STRING_LITERAL(TMP1104, "elif", 4);
STRING_LITERAL(TMP1105, "else", 4);
STRING_LITERAL(TMP1106, "end", 3);
STRING_LITERAL(TMP1107, "enum", 4);
STRING_LITERAL(TMP1108, "except", 6);
STRING_LITERAL(TMP1109, "export", 6);
STRING_LITERAL(TMP1110, "finally", 7);
STRING_LITERAL(TMP1111, "for", 3);
STRING_LITERAL(TMP1112, "from", 4);
STRING_LITERAL(TMP1113, "func", 4);
STRING_LITERAL(TMP1114, "generic", 7);
STRING_LITERAL(TMP1115, "if", 2);
STRING_LITERAL(TMP1116, "import", 6);
STRING_LITERAL(TMP1117, "in", 2);
STRING_LITERAL(TMP1118, "include", 7);
STRING_LITERAL(TMP1119, "interface", 9);
STRING_LITERAL(TMP1120, "is", 2);
STRING_LITERAL(TMP1121, "isnot", 5);
STRING_LITERAL(TMP1122, "iterator", 8);
STRING_LITERAL(TMP1123, "let", 3);
STRING_LITERAL(TMP1124, "macro", 5);
STRING_LITERAL(TMP1125, "method", 6);
STRING_LITERAL(TMP1126, "mixin", 5);
STRING_LITERAL(TMP1127, "mod", 3);
STRING_LITERAL(TMP1128, "nil", 3);
STRING_LITERAL(TMP1129, "not", 3);
STRING_LITERAL(TMP1130, "notin", 5);
STRING_LITERAL(TMP1131, "object", 6);
STRING_LITERAL(TMP1132, "of", 2);
STRING_LITERAL(TMP1133, "or", 2);
STRING_LITERAL(TMP1134, "out", 3);
STRING_LITERAL(TMP1135, "proc", 4);
STRING_LITERAL(TMP1136, "ptr", 3);
STRING_LITERAL(TMP1137, "raise", 5);
STRING_LITERAL(TMP1138, "ref", 3);
STRING_LITERAL(TMP1139, "return", 6);
STRING_LITERAL(TMP1140, "shl", 3);
STRING_LITERAL(TMP1141, "shr", 3);
STRING_LITERAL(TMP1142, "static", 6);
STRING_LITERAL(TMP1143, "template", 8);
STRING_LITERAL(TMP1144, "try", 3);
STRING_LITERAL(TMP1145, "tuple", 5);
STRING_LITERAL(TMP1146, "type", 4);
STRING_LITERAL(TMP1147, "using", 5);
STRING_LITERAL(TMP1148, "var", 3);
STRING_LITERAL(TMP1149, "when", 4);
STRING_LITERAL(TMP1150, "while", 5);
STRING_LITERAL(TMP1151, "with", 4);
STRING_LITERAL(TMP1152, "without", 7);
STRING_LITERAL(TMP1153, "xor", 3);
STRING_LITERAL(TMP1154, "yield", 5);
STRING_LITERAL(TMP1155, "tkIntLit", 8);
STRING_LITERAL(TMP1156, "tkInt8Lit", 9);
STRING_LITERAL(TMP1157, "tkInt16Lit", 10);
STRING_LITERAL(TMP1158, "tkInt32Lit", 10);
STRING_LITERAL(TMP1159, "tkInt64Lit", 10);
STRING_LITERAL(TMP1160, "tkUIntLit", 9);
STRING_LITERAL(TMP1161, "tkUInt8Lit", 10);
STRING_LITERAL(TMP1162, "tkUInt16Lit", 11);
STRING_LITERAL(TMP1163, "tkUInt32Lit", 11);
STRING_LITERAL(TMP1164, "tkUInt64Lit", 11);
STRING_LITERAL(TMP1165, "tkFloatLit", 10);
STRING_LITERAL(TMP1166, "tkFloat32Lit", 12);
STRING_LITERAL(TMP1167, "tkFloat64Lit", 12);
STRING_LITERAL(TMP1168, "tkFloat128Lit", 13);
STRING_LITERAL(TMP1169, "tkStrLit", 8);
STRING_LITERAL(TMP1170, "tkRStrLit", 9);
STRING_LITERAL(TMP1171, "tkTripleStrLit", 14);
STRING_LITERAL(TMP1172, "tkGStrLit", 9);
STRING_LITERAL(TMP1173, "tkGTripleStrLit", 15);
STRING_LITERAL(TMP1174, "tkCharLit", 9);
STRING_LITERAL(TMP1175, "(", 1);
STRING_LITERAL(TMP1176, ")", 1);
STRING_LITERAL(TMP1177, "[", 1);
STRING_LITERAL(TMP1178, "]", 1);
STRING_LITERAL(TMP1179, "{", 1);
STRING_LITERAL(TMP1180, "}", 1);
STRING_LITERAL(TMP1181, "[.", 2);
STRING_LITERAL(TMP1182, ".]", 2);
STRING_LITERAL(TMP1183, "{.", 2);
STRING_LITERAL(TMP1184, ".}", 2);
STRING_LITERAL(TMP1185, "(.", 2);
STRING_LITERAL(TMP1186, ".)", 2);
STRING_LITERAL(TMP1187, ",", 1);
STRING_LITERAL(TMP1188, ";", 1);
STRING_LITERAL(TMP1189, ":", 1);
STRING_LITERAL(TMP1190, "::", 2);
STRING_LITERAL(TMP1191, "=", 1);
STRING_LITERAL(TMP1192, ".", 1);
STRING_LITERAL(TMP1193, "..", 2);
STRING_LITERAL(TMP1194, "tkOpr", 5);
STRING_LITERAL(TMP1195, "tkComment", 9);
STRING_LITERAL(TMP1196, "`", 1);
STRING_LITERAL(TMP1197, "tkSpaces", 8);
STRING_LITERAL(TMP1198, "tkInfixOpr", 10);
STRING_LITERAL(TMP1199, "tkPrefixOpr", 11);
STRING_LITERAL(TMP1200, "tkPostfixOpr", 12);
NIM_CONST TY216175 toktypetostr_216174 = {((NimStringDesc*) &TMP1083),
((NimStringDesc*) &TMP1084),
((NimStringDesc*) &TMP1085),
((NimStringDesc*) &TMP1086),
((NimStringDesc*) &TMP1087),
((NimStringDesc*) &TMP1088),
((NimStringDesc*) &TMP1089),
((NimStringDesc*) &TMP1090),
((NimStringDesc*) &TMP1091),
((NimStringDesc*) &TMP1092),
((NimStringDesc*) &TMP1093),
((NimStringDesc*) &TMP1094),
((NimStringDesc*) &TMP1095),
((NimStringDesc*) &TMP1096),
((NimStringDesc*) &TMP1097),
((NimStringDesc*) &TMP1098),
((NimStringDesc*) &TMP1099),
((NimStringDesc*) &TMP1100),
((NimStringDesc*) &TMP1101),
((NimStringDesc*) &TMP1102),
((NimStringDesc*) &TMP1103),
((NimStringDesc*) &TMP1104),
((NimStringDesc*) &TMP1105),
((NimStringDesc*) &TMP1106),
((NimStringDesc*) &TMP1107),
((NimStringDesc*) &TMP1108),
((NimStringDesc*) &TMP1109),
((NimStringDesc*) &TMP1110),
((NimStringDesc*) &TMP1111),
((NimStringDesc*) &TMP1112),
((NimStringDesc*) &TMP1113),
((NimStringDesc*) &TMP1114),
((NimStringDesc*) &TMP1115),
((NimStringDesc*) &TMP1116),
((NimStringDesc*) &TMP1117),
((NimStringDesc*) &TMP1118),
((NimStringDesc*) &TMP1119),
((NimStringDesc*) &TMP1120),
((NimStringDesc*) &TMP1121),
((NimStringDesc*) &TMP1122),
((NimStringDesc*) &TMP1123),
((NimStringDesc*) &TMP1124),
((NimStringDesc*) &TMP1125),
((NimStringDesc*) &TMP1126),
((NimStringDesc*) &TMP1127),
((NimStringDesc*) &TMP1128),
((NimStringDesc*) &TMP1129),
((NimStringDesc*) &TMP1130),
((NimStringDesc*) &TMP1131),
((NimStringDesc*) &TMP1132),
((NimStringDesc*) &TMP1133),
((NimStringDesc*) &TMP1134),
((NimStringDesc*) &TMP1135),
((NimStringDesc*) &TMP1136),
((NimStringDesc*) &TMP1137),
((NimStringDesc*) &TMP1138),
((NimStringDesc*) &TMP1139),
((NimStringDesc*) &TMP1140),
((NimStringDesc*) &TMP1141),
((NimStringDesc*) &TMP1142),
((NimStringDesc*) &TMP1143),
((NimStringDesc*) &TMP1144),
((NimStringDesc*) &TMP1145),
((NimStringDesc*) &TMP1146),
((NimStringDesc*) &TMP1147),
((NimStringDesc*) &TMP1148),
((NimStringDesc*) &TMP1149),
((NimStringDesc*) &TMP1150),
((NimStringDesc*) &TMP1151),
((NimStringDesc*) &TMP1152),
((NimStringDesc*) &TMP1153),
((NimStringDesc*) &TMP1154),
((NimStringDesc*) &TMP1155),
((NimStringDesc*) &TMP1156),
((NimStringDesc*) &TMP1157),
((NimStringDesc*) &TMP1158),
((NimStringDesc*) &TMP1159),
((NimStringDesc*) &TMP1160),
((NimStringDesc*) &TMP1161),
((NimStringDesc*) &TMP1162),
((NimStringDesc*) &TMP1163),
((NimStringDesc*) &TMP1164),
((NimStringDesc*) &TMP1165),
((NimStringDesc*) &TMP1166),
((NimStringDesc*) &TMP1167),
((NimStringDesc*) &TMP1168),
((NimStringDesc*) &TMP1169),
((NimStringDesc*) &TMP1170),
((NimStringDesc*) &TMP1171),
((NimStringDesc*) &TMP1172),
((NimStringDesc*) &TMP1173),
((NimStringDesc*) &TMP1174),
((NimStringDesc*) &TMP1175),
((NimStringDesc*) &TMP1176),
((NimStringDesc*) &TMP1177),
((NimStringDesc*) &TMP1178),
((NimStringDesc*) &TMP1179),
((NimStringDesc*) &TMP1180),
((NimStringDesc*) &TMP1181),
((NimStringDesc*) &TMP1182),
((NimStringDesc*) &TMP1183),
((NimStringDesc*) &TMP1184),
((NimStringDesc*) &TMP1185),
((NimStringDesc*) &TMP1186),
((NimStringDesc*) &TMP1187),
((NimStringDesc*) &TMP1188),
((NimStringDesc*) &TMP1189),
((NimStringDesc*) &TMP1190),
((NimStringDesc*) &TMP1191),
((NimStringDesc*) &TMP1192),
((NimStringDesc*) &TMP1193),
((NimStringDesc*) &TMP1194),
((NimStringDesc*) &TMP1195),
((NimStringDesc*) &TMP1196),
((NimStringDesc*) &TMP1197),
((NimStringDesc*) &TMP1198),
((NimStringDesc*) &TMP1199),
((NimStringDesc*) &TMP1200)}
;
STRING_LITERAL(TMP1201, "keyword ", 8);
STRING_LITERAL(TMP1202, "tokToStr", 8);
STRING_LITERAL(TMP4846, "\011", 1);
STRING_LITERAL(TMP4847, " ", 1);
NI glinescompiled_216218;
tident201021* dummyident_216477;
extern tgcheap47016 gch_47044;
extern TNimType NTI214024; /* TBaseLexer */
TNimType NTI216190; /* TLexer */
extern TNimType NTI114; /* int32 */
extern TNimType NTI108; /* int */
extern TNimType NTI138; /* bool */
TNimType NTI216188; /* tuple[pointer, ref tuple[]] */
extern TNimType NTI153; /* pointer */
TNimType NTI613037; /* tuple[] */
TNimType NTI613036; /* ref tuple[] */
TNimType NTI216186; /* TToken */
TNimType NTI216022; /* TTokType */
extern TNimType NTI201019; /* PIdent */
extern TNimType NTI5510; /* BiggestInt */
extern TNimType NTI5512; /* BiggestFloat */
TNimType NTI216184; /* TNumericalBase */
extern TNimType NTI110; /* int8 */
extern TNimType NTI149; /* string */
extern NU32 gglobaloptions_170118;
extern NimStringDesc* tnl_175613;
extern TSafePoint* exchandler_16243;
extern TNimType NTI3249; /* ValueError */
extern Exception* currexception_16245;
extern TNimType NTI3243; /* OverflowError */
extern TNimType NTI3259; /* RangeError */

static N_INLINE(tcell44933*, usrtocell_48646)(void* usr) {
	tcell44933* result;
	result = 0;
	result = ((tcell44933*) ((NI)((NU64)(((NI) (usr))) - (NU64)(((NI)sizeof(tcell44933))))));
	return result;
}

static N_INLINE(void, rtladdzct_50204)(tcell44933* c) {
	addzct_48617((&gch_47044.Zct), c);
}

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		tcell44933* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_48646(src);
		(*c).Refcount += 8;
	}
	LA3: ;
	{
		tcell44933* c;
		if (!!(((*dest) == NIM_NIL))) goto LA7;
		c = usrtocell_48646((*dest));
		{
			(*c).Refcount -= 8;
			if (!((NU64)((*c).Refcount) < (NU64)(8))) goto LA11;
			rtladdzct_50204(c);
		}
		LA11: ;
	}
	LA7: ;
	(*dest) = src;
}
N_NIMCALL(void, TMP1017)(void* p, NI op) {
	TY613037* a;
	a = (TY613037*)p;
}

N_NIMCALL(void, inittoken_216482)(ttoken216186* l) {
	(*l).Toktype = ((NU8) 0);
	(*l).Inumber = IL64(0);
	(*l).Indent = 0;
	(*l).Strongspacea = ((NI8) 0);
	unsureAsgnRef((void**) (&(*l).Literal), copyString(((NimStringDesc*) &TMP717)));
	(*l).Fnumber = 0.0;
	(*l).Base = ((NU8) 0);
	unsureAsgnRef((void**) (&(*l).Ident), dummyident_216477);
}

N_NIMCALL(void, openlexer_216229)(tlexer216190* lex, NI32 fileidx, tllstream212204* inputstream) {
	tbaselexer214024* LOC1;
	LOC1 = 0;
	LOC1 = &lex->Sup;
	openbaselexer_214035(LOC1, inputstream, 8192);
	(*lex).Fileidx = fileidx;
	(*lex).Indentahead = -1;
	(*lex).Currlineindent = 0;
	(*lex).Sup.Linenumber += (*inputstream).Lineoffset;
}

N_NIMCALL(void, filltoken_216493)(ttoken216186* l) {
	(*l).Toktype = ((NU8) 0);
	(*l).Inumber = IL64(0);
	(*l).Indent = 0;
	(*l).Strongspacea = ((NI8) 0);
	(*l).Literal = setLengthStr((*l).Literal, 0);
	(*l).Fnumber = 0.0;
	(*l).Base = ((NU8) 0);
	unsureAsgnRef((void**) (&(*l).Ident), dummyident_216477);
}

N_NIMCALL(void, dispmessage_216572)(tlexer216190* l, tlineinfo196539 info, NU16 msg, NimStringDesc* arg) {
	{
		if (!(*l).Errorhandler.ClPrc == 0) goto LA3;
		message_198976(info, msg, arg);
	}
	goto LA1;
	LA3: ;
	{
		(*l).Errorhandler.ClEnv? (*l).Errorhandler.ClPrc(info, msg, arg, (*l).Errorhandler.ClEnv):((TMP1052)((*l).Errorhandler.ClPrc))(info, msg, arg);
	}
	LA1: ;
}

N_NIMCALL(void, lexmessagepos_216602)(tlexer216190* l, NU16 msg, NI pos, NimStringDesc* arg) {
	tlineinfo196539 info;
	info = newlineinfo_197128((*l).Fileidx, (*l).Sup.Linenumber, (NI64)(pos - (*l).Sup.Linestart));
	dispmessage_216572((&(*l)), info, msg, arg);
}

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

N_NIMCALL(NI, handlecrlf_217880)(tlexer216190* l, NI pos) {
	NI result;
	result = 0;
	switch (((NU8)((*l).Sup.Buf[pos]))) {
	case 13:
	{
		NI col_217897;
		tbaselexer214024* LOC10;
		col_217897 = getcolnumber_214059((&(*l).Sup), pos);
		{
			if (!(80 < col_217897)) goto LA4;
			lexmessagepos_216602(l, ((NU16) 261), pos, ((NimStringDesc*) &TMP717));
		}
		LA4: ;
		{
			NI linestart_217899;
			NimStringDesc* line_217901;
			if (!((gglobaloptions_170118 &(1<<((((NU8) 31))&31)))!=0)) goto LA8;
			linestart_217899 = (NI64)(((NI) ((*l).Sup.Buf)) + (*l).Sup.Linestart);
			line_217901 = newstring_217832(((NCSTRING) (linestart_217899)), col_217897);
			addsourceline_199042((*l).Fileidx, line_217901);
		}
		LA8: ;
		LOC10 = 0;
		LOC10 = &l->Sup;
		result = handlecr_214066(LOC10, pos);
	}
	break;
	case 10:
	{
		NI col_217918;
		tbaselexer214024* LOC20;
		col_217918 = getcolnumber_214059((&(*l).Sup), pos);
		{
			if (!(80 < col_217918)) goto LA14;
			lexmessagepos_216602(l, ((NU16) 261), pos, ((NimStringDesc*) &TMP717));
		}
		LA14: ;
		{
			NI linestart_217920;
			NimStringDesc* line_217922;
			if (!((gglobaloptions_170118 &(1<<((((NU8) 31))&31)))!=0)) goto LA18;
			linestart_217920 = (NI64)(((NI) ((*l).Sup.Buf)) + (*l).Sup.Linestart);
			line_217922 = newstring_217832(((NCSTRING) (linestart_217920)), col_217918);
			addsourceline_199042((*l).Fileidx, line_217922);
		}
		LA18: ;
		LOC20 = 0;
		LOC20 = &l->Sup;
		result = handlelf_214074(LOC20, pos);
	}
	break;
	default:
	{
		result = pos;
	}
	break;
	}
	return result;
}

N_NIMCALL(void, skip_219641)(tlexer216190* l, ttoken216186* 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 += 1;
				(*tok).Strongspacea += 1;
			}
			break;
			case 9:
			{
				lexmessagepos_216602(l, ((NU16) 11), pos, ((NimStringDesc*) &TMP717));
				pos += 1;
			}
			break;
			case 13:
			case 10:
			{
				NI indent;
				pos = handlecrlf_217880(l, pos);
				buf = (*l).Sup.Buf;
				indent = 0;
				{
					while (1) {
						if (!((NU8)(buf[pos]) == (NU8)(32))) goto LA7;
						pos += 1;
						indent += 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[(NI64)(pos + 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[(NI64)(pos + 1)]) == (NU8)(35))) goto LA19;
					goto LA1;
				}
				LA19: ;
				{
					if (!((NU8)(buf[(NI64)(pos + 1)]) == (NU8)(91))) goto LA23;
					lexmessagepos_216602(l, ((NU16) 234), pos, ((NimStringDesc*) &TMP1053));
				}
				LA23: ;
				{
					while (1) {
						if (!!((((NU8)(buf[pos])) == ((NU8)(13)) || ((NU8)(buf[pos])) == ((NU8)(10)) || ((NU8)(buf[pos])) == ((NU8)(0))))) goto LA26;
						pos += 1;
					} LA26: ;
				}
			}
			break;
			default:
			{
				goto LA1;
			}
			break;
			}
		}
	} LA1: ;
	(*l).Sup.Bufpos = pos;
}

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

N_NIMCALL(tlineinfo196539, getlineinfo_216562)(tlexer216190* l) {
	tlineinfo196539 result;
	NI LOC1;
	memset((void*)(&result), 0, sizeof(result));
	LOC1 = 0;
	LOC1 = getcolnumber_214059((&(*l).Sup), (*l).Sup.Bufpos);
	result = newlineinfo_197128((*l).Fileidx, (*l).Sup.Linenumber, LOC1);
	return result;
}

N_NIMCALL(void, lexmessage_216289)(tlexer216190* l, NU16 msg, NimStringDesc* arg) {
	tlineinfo196539 LOC1;
	LOC1 = getlineinfo_216562(l);
	dispmessage_216572(l, LOC1, msg, arg);
}

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

N_NIMCALL(void, getsymbol_218190)(tlexer216190* l, ttoken216186* tok) {
	NI h;
	NI pos;
	NCSTRING buf;
	h = 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:
			{
				h = HEX21HEX26_128025(h, ((NI) (((NU8)(c)))));
			}
			break;
			case 65 ... 90:
			{
				c = ((NIM_CHAR) (((NI) ((NI64)(((NI) (((NU8)(c)))) + 32)))));
				h = HEX21HEX26_128025(h, ((NI) (((NU8)(c)))));
			}
			break;
			case 95:
			{
				{
					if (!!((((NU8)(buf[(NI64)(pos + 1)])) >= ((NU8)(97)) && ((NU8)(buf[(NI64)(pos + 1)])) <= ((NU8)(122)) || ((NU8)(buf[(NI64)(pos + 1)])) >= ((NU8)(65)) && ((NU8)(buf[(NI64)(pos + 1)])) <= ((NU8)(90)) || ((NU8)(buf[(NI64)(pos + 1)])) >= ((NU8)(48)) && ((NU8)(buf[(NI64)(pos + 1)])) <= ((NU8)(57)) || ((NU8)(buf[(NI64)(pos + 1)])) >= ((NU8)(128)) && ((NU8)(buf[(NI64)(pos + 1)])) <= ((NU8)(255))))) goto LA8;
					lexmessage_216289((&(*l)), ((NU16) 12), ((NimStringDesc*) &TMP1054));
					goto LA1;
				}
				LA8: ;
			}
			break;
			default:
			{
				goto LA1;
			}
			break;
			}
			pos += 1;
		}
	} LA1: ;
	h = HEX21HEX24_128054(h);
	unsureAsgnRef((void**) (&(*tok).Ident), getident_201268(((NCSTRING) ((&(*l).Sup.Buf[(*l).Sup.Bufpos]))), (NI64)(pos - (*l).Sup.Bufpos), h));
	(*l).Sup.Bufpos = pos;
	{
		NIM_BOOL LOC13;
		LOC13 = 0;
		LOC13 = ((*(*tok).Ident).Sup.Id < 1);
		if (LOC13) goto LA14;
		LOC13 = (69 < (*(*tok).Ident).Sup.Id);
		LA14: ;
		if (!LOC13) goto LA15;
		(*tok).Toktype = ((NU8) 2);
	}
	goto LA11;
	LA15: ;
	{
		(*tok).Toktype = ((NU8) ((NI64)((*(*tok).Ident).Sup.Id + 2)));
	}
	LA11: ;
}

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

N_NIMCALL(void, scancomment_218456)(tlexer216190* l, ttoken216186* tok) {
	NI pos;
	NCSTRING buf;
	pos = (*l).Sup.Bufpos;
	buf = (*l).Sup.Buf;
	{
		if (!((NU8)(buf[(NI64)(pos + 2)]) == (NU8)(91))) goto LA3;
		lexmessagepos_216602(l, ((NU16) 234), pos, ((NimStringDesc*) &TMP1055));
	}
	LA3: ;
	(*tok).Toktype = ((NU8) 112);
	(*tok).Inumber = IL64(0);
	{
		while (1) {
			NI lastbackslash;
			NI indent;
			lastbackslash = -1;
			{
				while (1) {
					if (!!((((NU8)(buf[pos])) == ((NU8)(13)) || ((NU8)(buf[pos])) == ((NU8)(10)) || ((NU8)(buf[pos])) == ((NU8)(0))))) goto LA8;
					{
						if (!((NU8)(buf[pos]) == (NU8)(92))) goto LA11;
						lastbackslash = (NI64)(pos + 1);
					}
					LA11: ;
					(*tok).Literal = addChar((*tok).Literal, buf[pos]);
					pos += 1;
				} LA8: ;
			}
			pos = handlecrlf_217880(l, pos);
			buf = (*l).Sup.Buf;
			indent = 0;
			{
				while (1) {
					if (!((NU8)(buf[pos]) == (NU8)(32))) goto LA14;
					pos += 1;
					indent += 1;
				} LA14: ;
			}
			{
				NIM_BOOL LOC17;
				LOC17 = 0;
				LOC17 = ((NU8)(buf[pos]) == (NU8)(35));
				if (!(LOC17)) goto LA18;
				LOC17 = ((NU8)(buf[(NI64)(pos + 1)]) == (NU8)(35));
				LA18: ;
				if (!LOC17) goto LA19;
				(*tok).Literal = resizeString((*tok).Literal, 1);
appendString((*tok).Literal, ((NimStringDesc*) &TMP1056));
				(*tok).Inumber += 1;
			}
			goto LA15;
			LA19: ;
			{
				{
					if (!((NU8)(32) < (NU8)(buf[pos]))) goto LA24;
					(*l).Indentahead = indent;
				}
				LA24: ;
				goto LA5;
			}
			LA15: ;
		}
	} LA5: ;
	(*l).Sup.Bufpos = pos;
}

static N_INLINE(void, endoperator_218327)(tlexer216190* l, ttoken216186* tok, NI pos, NI hash) {
	NI h;
	h = HEX21HEX24_128054(hash);
	unsureAsgnRef((void**) (&(*tok).Ident), getident_201268(((NCSTRING) ((&(*l).Sup.Buf[(*l).Sup.Bufpos]))), (NI64)(pos - (*l).Sup.Bufpos), h));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*(*tok).Ident).Sup.Id < 70);
		if (LOC3) goto LA4;
		LOC3 = (74 < (*(*tok).Ident).Sup.Id);
		LA4: ;
		if (!LOC3) goto LA5;
		(*tok).Toktype = ((NU8) 111);
	}
	goto LA1;
	LA5: ;
	{
		(*tok).Toktype = ((NU8) ((NI64)((NI64)((*(*tok).Ident).Sup.Id - 70) + 106)));
	}
	LA1: ;
	(*l).Sup.Bufpos = pos;
}

N_NIMCALL(void, getoperator_218354)(tlexer216190* l, ttoken216186* tok) {
	NI pos;
	NCSTRING buf;
	NI h;
	pos = (*l).Sup.Bufpos;
	buf = (*l).Sup.Buf;
	h = 0;
	{
		while (1) {
			NIM_CHAR c;
			c = buf[pos];
			{
				if (!!(((TMP1057[((NU8)(c))/8] &(1<<(((NU8)(c))%8)))!=0))) goto LA5;
				goto LA1;
			}
			LA5: ;
			h = HEX21HEX26_128025(h, ((NI) (((NU8)(c)))));
			pos += 1;
		}
	} LA1: ;
	endoperator_218327(l, tok, pos, h);
	(*tok).Strongspaceb = ((NI8) 0);
	{
		while (1) {
			if (!((NU8)(buf[pos]) == (NU8)(32))) goto LA8;
			pos += 1;
			(*tok).Strongspaceb += 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_217483)(tlexer216190* l, NI* xi) {
	switch (((NU8)((*l).Sup.Buf[(*l).Sup.Bufpos]))) {
	case 48 ... 57:
	{
		(*xi) = (NI)((NI)((NU64)((*xi)) << (NU64)(4)) | ((NI) ((NI64)(((NI) (((NU8)((*l).Sup.Buf[(*l).Sup.Bufpos])))) - 48))));
		(*l).Sup.Bufpos += 1;
	}
	break;
	case 97 ... 102:
	{
		(*xi) = (NI)((NI)((NU64)((*xi)) << (NU64)(4)) | ((NI) ((NI64)(((NI) ((NI64)(((NI) (((NU8)((*l).Sup.Buf[(*l).Sup.Bufpos])))) - 97))) + 10))));
		(*l).Sup.Bufpos += 1;
	}
	break;
	case 65 ... 70:
	{
		(*xi) = (NI)((NI)((NU64)((*xi)) << (NU64)(4)) | ((NI) ((NI64)(((NI) ((NI64)(((NI) (((NU8)((*l).Sup.Buf[(*l).Sup.Bufpos])))) - 65))) + 10))));
		(*l).Sup.Bufpos += 1;
	}
	break;
	default:
	{
	}
	break;
	}
}

N_NIMCALL(NIM_BOOL, matchtwochars_216689)(tlexer216190* l, NIM_CHAR first, TY212607 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[(NI64)((*l).Sup.Bufpos + 1)]))/8] &(1<<(((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos + 1)]))%8)))!=0);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, handledecchars_217586)(tlexer216190* 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) = (NI64)((NI64)((*xi) * 10) + ((NI) ((NI64)(((NI) (((NU8)((*l).Sup.Buf[(*l).Sup.Bufpos])))) - 48))));
			(*l).Sup.Bufpos += 1;
		} LA2: ;
	}
}

N_NIMCALL(void, getescapedchar_217648)(tlexer216190* l, ttoken216186* tok) {
	(*l).Sup.Bufpos += 1;
	switch (((NU8)((*l).Sup.Buf[(*l).Sup.Bufpos]))) {
	case 110:
	case 78:
	{
		{
			if (!((*tok).Toktype == ((NU8) 91))) goto LA4;
			lexmessage_216289((&(*l)), ((NU16) 16), ((NimStringDesc*) &TMP717));
		}
		LA4: ;
		(*tok).Literal = resizeString((*tok).Literal, tnl_175613->Sup.len + 0);
appendString((*tok).Literal, tnl_175613);
		(*l).Sup.Bufpos += 1;
	}
	break;
	case 114:
	case 82:
	case 99:
	case 67:
	{
		(*tok).Literal = addChar((*tok).Literal, 13);
		(*l).Sup.Bufpos += 1;
	}
	break;
	case 108:
	case 76:
	{
		(*tok).Literal = addChar((*tok).Literal, 10);
		(*l).Sup.Bufpos += 1;
	}
	break;
	case 102:
	case 70:
	{
		(*tok).Literal = addChar((*tok).Literal, 12);
		(*l).Sup.Bufpos += 1;
	}
	break;
	case 101:
	case 69:
	{
		(*tok).Literal = addChar((*tok).Literal, 27);
		(*l).Sup.Bufpos += 1;
	}
	break;
	case 97:
	case 65:
	{
		(*tok).Literal = addChar((*tok).Literal, 7);
		(*l).Sup.Bufpos += 1;
	}
	break;
	case 98:
	case 66:
	{
		(*tok).Literal = addChar((*tok).Literal, 8);
		(*l).Sup.Bufpos += 1;
	}
	break;
	case 118:
	case 86:
	{
		(*tok).Literal = addChar((*tok).Literal, 11);
		(*l).Sup.Bufpos += 1;
	}
	break;
	case 116:
	case 84:
	{
		(*tok).Literal = addChar((*tok).Literal, 9);
		(*l).Sup.Bufpos += 1;
	}
	break;
	case 39:
	case 34:
	{
		(*tok).Literal = addChar((*tok).Literal, (*l).Sup.Buf[(*l).Sup.Bufpos]);
		(*l).Sup.Bufpos += 1;
	}
	break;
	case 92:
	{
		(*tok).Literal = addChar((*tok).Literal, 92);
		(*l).Sup.Bufpos += 1;
	}
	break;
	case 120:
	case 88:
	{
		NI xi;
		(*l).Sup.Bufpos += 1;
		xi = 0;
		handlehexchar_217483(l, (&xi));
		handlehexchar_217483(l, (&xi));
		(*tok).Literal = addChar((*tok).Literal, ((NIM_CHAR) (((NI) (xi)))));
	}
	break;
	case 48 ... 57:
	{
		NI xi;
		{
			NIM_BOOL LOC20;
			LOC20 = 0;
			LOC20 = matchtwochars_216689((&(*l)), 48, TMP1058);
			if (!LOC20) goto LA21;
			lexmessage_216289((&(*l)), ((NU16) 231), ((NimStringDesc*) &TMP717));
		}
		LA21: ;
		xi = 0;
		handledecchars_217586(l, (&xi));
		{
			if (!(xi <= 255)) goto LA25;
			(*tok).Literal = addChar((*tok).Literal, ((NIM_CHAR) (((NI) (xi)))));
		}
		goto LA23;
		LA25: ;
		{
			lexmessage_216289((&(*l)), ((NU16) 8), ((NimStringDesc*) &TMP717));
		}
		LA23: ;
	}
	break;
	default:
	{
		lexmessage_216289((&(*l)), ((NU16) 8), ((NimStringDesc*) &TMP717));
	}
	break;
	}
}

N_NIMCALL(void, getstring_217948)(tlexer216190* l, ttoken216186* tok, NIM_BOOL rawmode) {
	NI pos;
	NCSTRING buf;
	NI line;
	pos = (NI64)((*l).Sup.Bufpos + 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[(NI64)(pos + 1)]) == (NU8)(34));
		LA4: ;
		if (!LOC3) goto LA5;
		(*tok).Toktype = ((NU8) 88);
		pos += 2;
		{
			NI newpos;
			if (!(((NU8)(buf[pos])) == ((NU8)(32)) || ((NU8)(buf[pos])) == ((NU8)(9)))) goto LA9;
			newpos = (NI64)(pos + 1);
			{
				while (1) {
					if (!(((NU8)(buf[newpos])) == ((NU8)(32)) || ((NU8)(buf[newpos])) == ((NU8)(9)))) goto LA12;
					newpos += 1;
				} LA12: ;
			}
			{
				if (!(((NU8)(buf[newpos])) == ((NU8)(13)) || ((NU8)(buf[newpos])) == ((NU8)(10)))) goto LA15;
				pos = newpos;
			}
			LA15: ;
		}
		LA9: ;
		pos = handlecrlf_217880(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[(NI64)(pos + 1)]) == (NU8)(34));
						if (!(LOC23)) goto LA24;
						LOC23 = ((NU8)(buf[(NI64)(pos + 2)]) == (NU8)(34));
						LA24: ;
						LOC22 = LOC23;
						if (!(LOC22)) goto LA25;
						LOC22 = !(((NU8)(buf[(NI64)(pos + 3)]) == (NU8)(34)));
						LA25: ;
						if (!LOC22) goto LA26;
						(*l).Sup.Bufpos = (NI64)(pos + 3);
						goto LA17;
					}
					LA26: ;
					(*tok).Literal = addChar((*tok).Literal, 34);
					pos += 1;
				}
				break;
				case 13:
				case 10:
				{
					pos = handlecrlf_217880(l, pos);
					buf = (*l).Sup.Buf;
					(*tok).Literal = resizeString((*tok).Literal, tnl_175613->Sup.len + 0);
appendString((*tok).Literal, tnl_175613);
				}
				break;
				case 0:
				{
					NI line2;
					line2 = (*l).Sup.Linenumber;
					(*l).Sup.Linenumber = line;
					lexmessagepos_216602(l, ((NU16) 9), (*l).Sup.Linestart, ((NimStringDesc*) &TMP717));
					(*l).Sup.Linenumber = line2;
					goto LA17;
				}
				break;
				default:
				{
					(*tok).Literal = addChar((*tok).Literal, buf[pos]);
					pos += 1;
				}
				break;
				}
			}
		} LA17: ;
	}
	goto LA1;
	LA5: ;
	{
		{
			if (!rawmode) goto LA34;
			(*tok).Toktype = ((NU8) 87);
		}
		goto LA32;
		LA34: ;
		{
			(*tok).Toktype = ((NU8) 86);
		}
		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[(NI64)(pos + 1)]) == (NU8)(34));
						LA46: ;
						if (!LOC45) goto LA47;
						pos += 2;
						(*tok).Literal = addChar((*tok).Literal, 34);
					}
					goto LA43;
					LA47: ;
					{
						pos += 1;
						goto LA37;
					}
					LA43: ;
				}
				goto LA39;
				LA41: ;
				{
					if (!(((NU8)(c)) == ((NU8)(13)) || ((NU8)(c)) == ((NU8)(10)) || ((NU8)(c)) == ((NU8)(0)))) goto LA51;
					lexmessage_216289((&(*l)), ((NU16) 10), ((NimStringDesc*) &TMP717));
					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_217648(l, tok);
					pos = (*l).Sup.Bufpos;
				}
				goto LA39;
				LA56: ;
				{
					(*tok).Literal = addChar((*tok).Literal, c);
					pos += 1;
				}
				LA39: ;
			}
		} LA37: ;
		(*l).Sup.Bufpos = pos;
	}
	LA1: ;
}

N_NIMCALL(void, getcharacter_218128)(tlexer216190* l, ttoken216186* tok) {
	NIM_CHAR c;
	(*l).Sup.Bufpos += 1;
	c = (*l).Sup.Buf[(*l).Sup.Bufpos];
	switch (((NU8)(c))) {
	case 0 ... 31:
	case 39:
	{
		lexmessage_216289((&(*l)), ((NU16) 8), ((NimStringDesc*) &TMP717));
	}
	break;
	case 92:
	{
		getescapedchar_217648(l, tok);
	}
	break;
	default:
	{
		unsureAsgnRef((void**) (&(*tok).Literal), nimCharToStr(c));
		(*l).Sup.Bufpos += 1;
	}
	break;
	}
	{
		if (!!(((NU8)((*l).Sup.Buf[(*l).Sup.Bufpos]) == (NU8)(39)))) goto LA6;
		lexmessage_216289((&(*l)), ((NU16) 18), ((NimStringDesc*) &TMP717));
	}
	LA6: ;
	(*l).Sup.Bufpos += 1;
}

N_NIMCALL(void, matchunderscorechars_216616)(tlexer216190* l, ttoken216186* tok, TY212607 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 += 1;
			}
			goto LA3;
			LA5: ;
			{
				goto LA1;
			}
			LA3: ;
			{
				if (!((NU8)(buf[pos]) == (NU8)(95))) goto LA10;
				{
					if (!!(((chars[((NU8)(buf[(NI64)(pos + 1)]))/8] &(1<<(((NU8)(buf[(NI64)(pos + 1)]))%8)))!=0))) goto LA14;
					lexmessage_216289((&(*l)), ((NU16) 12), ((NimStringDesc*) &TMP1054));
					goto LA1;
				}
				LA14: ;
				(*tok).Literal = addChar((*tok).Literal, 95);
				pos += 1;
			}
			LA10: ;
		}
	} LA1: ;
	(*l).Sup.Bufpos = pos;
}

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

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

N_NIMCALL(NIM_BOOL, isfloatliteral_216715)(NimStringDesc* s) {
	NIM_BOOL result;
	result = 0;
	{
		NI i_216731;
		NI HEX3Atmp_216747;
		NI res_216750;
		i_216731 = 0;
		HEX3Atmp_216747 = 0;
		HEX3Atmp_216747 = (NI64)(s->Sup.len - 1);
		res_216750 = 0;
		{
			while (1) {
				if (!(res_216750 <= HEX3Atmp_216747)) goto LA3;
				i_216731 = res_216750;
				{
					if (!(((NU8)(s->data[i_216731])) == ((NU8)(46)) || ((NU8)(s->data[i_216731])) == ((NU8)(101)) || ((NU8)(s->data[i_216731])) == ((NU8)(69)))) goto LA6;
					result = NIM_TRUE;
					goto BeforeRet;
				}
				LA6: ;
				res_216750 += 1;
			} LA3: ;
		}
	}
	result = NIM_FALSE;
	BeforeRet: ;
	return result;
}

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

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

static N_INLINE(NIM_BOOL, canbecycleroot_48667)(tcell44933* c) {
	NIM_BOOL result;
	result = 0;
	result = !((((*(*c).Typ).flags &(1<<((((NU8) 1))&7)))!=0));
	return result;
}

static N_INLINE(void, rtladdcycleroot_49429)(tcell44933* c) {
	{
		if (!!((((NI) ((NI)((*c).Refcount & 3))) == 3))) goto LA3;
		(*c).Refcount = (NI)((NI)((*c).Refcount & -4) | 3);
		incl_45671((&gch_47044.Cycleroots), c);
	}
	LA3: ;
}

static N_INLINE(void, incref_51025)(tcell44933* c) {
	(*c).Refcount = (NI)((NU64)((*c).Refcount) + (NU64)(8));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = canbecycleroot_48667(c);
		if (!LOC3) goto LA4;
		rtladdcycleroot_49429(c);
	}
	LA4: ;
}

static N_INLINE(void, decref_50604)(tcell44933* c) {
	{
		(*c).Refcount -= 8;
		if (!((NU64)((*c).Refcount) < (NU64)(8))) goto LA3;
		rtladdzct_50204(c);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = canbecycleroot_48667(c);
		if (!LOC6) goto LA7;
		rtladdcycleroot_49429(c);
	}
	goto LA1;
	LA7: ;
	LA1: ;
}

static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		tcell44933* LOC5;
		if (!!((src == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = usrtocell_48646(src);
		incref_51025(LOC5);
	}
	LA3: ;
	{
		tcell44933* LOC10;
		if (!!(((*dest) == NIM_NIL))) goto LA8;
		LOC10 = 0;
		LOC10 = usrtocell_48646((*dest));
		decref_50604(LOC10);
	}
	LA8: ;
	(*dest) = src;
}

static N_INLINE(void, popCurrentException)(void) {
	asgnRef((void**) (&currexception_16245), (*currexception_16245).parent);
}

N_NIMCALL(void, getnumber_216767)(tlexer216190* l, ttoken216186* Result) {
	NI pos;
	NI endpos;
	NI64 volatile xi;
	NIM_BOOL eallowed;
	TSafePoint TMP1064;
	pos = 0;
	endpos = 0;
	xi = 0;
	(*Result).Toktype = ((NU8) 72);
	unsureAsgnRef((void**) (&(*Result).Literal), copyString(((NimStringDesc*) &TMP717)));
	(*Result).Base = ((NU8) 0);
	pos = (*l).Sup.Bufpos;
	eallowed = NIM_FALSE;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((NU8)((*l).Sup.Buf[pos]) == (NU8)(48));
		if (!(LOC3)) goto LA4;
		LOC3 = (((NU8)((*l).Sup.Buf[(NI64)(pos + 1)])) == ((NU8)(88)) || ((NU8)((*l).Sup.Buf[(NI64)(pos + 1)])) == ((NU8)(120)));
		LA4: ;
		if (!LOC3) goto LA5;
		matchunderscorechars_216616(l, Result, TMP1059);
	}
	goto LA1;
	LA5: ;
	{
		matchunderscorechars_216616(l, Result, TMP1060);
		eallowed = NIM_TRUE;
	}
	LA1: ;
	{
		NIM_BOOL LOC10;
		LOC10 = 0;
		LOC10 = ((NU8)((*l).Sup.Buf[(*l).Sup.Bufpos]) == (NU8)(46));
		if (!(LOC10)) goto LA11;
		LOC10 = (((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos + 1)])) >= ((NU8)(48)) && ((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos + 1)])) <= ((NU8)(57)));
		LA11: ;
		if (!LOC10) goto LA12;
		(*Result).Literal = addChar((*Result).Literal, 46);
		(*l).Sup.Bufpos += 1;
		matchunderscorechars_216616(l, Result, TMP1058);
		eallowed = NIM_TRUE;
	}
	LA12: ;
	{
		NIM_BOOL LOC16;
		LOC16 = 0;
		LOC16 = eallowed;
		if (!(LOC16)) goto LA17;
		LOC16 = (((NU8)((*l).Sup.Buf[(*l).Sup.Bufpos])) == ((NU8)(101)) || ((NU8)((*l).Sup.Buf[(*l).Sup.Bufpos])) == ((NU8)(69)));
		LA17: ;
		if (!LOC16) goto LA18;
		(*Result).Literal = addChar((*Result).Literal, 101);
		(*l).Sup.Bufpos += 1;
		{
			if (!(((NU8)((*l).Sup.Buf[(*l).Sup.Bufpos])) == ((NU8)(43)) || ((NU8)((*l).Sup.Buf[(*l).Sup.Bufpos])) == ((NU8)(45)))) goto LA22;
			(*Result).Literal = addChar((*Result).Literal, (*l).Sup.Buf[(*l).Sup.Bufpos]);
			(*l).Sup.Bufpos += 1;
		}
		LA22: ;
		matchunderscorechars_216616(l, Result, TMP1058);
	}
	LA18: ;
	endpos = (*l).Sup.Bufpos;
	{
		if (!(((NU8)((*l).Sup.Buf[endpos])) == ((NU8)(39)) || ((NU8)((*l).Sup.Buf[endpos])) == ((NU8)(102)) || ((NU8)((*l).Sup.Buf[endpos])) == ((NU8)(70)) || ((NU8)((*l).Sup.Buf[endpos])) == ((NU8)(105)) || ((NU8)((*l).Sup.Buf[endpos])) == ((NU8)(73)) || ((NU8)((*l).Sup.Buf[endpos])) == ((NU8)(117)) || ((NU8)((*l).Sup.Buf[endpos])) == ((NU8)(85)))) goto LA26;
		{
			if (!((NU8)((*l).Sup.Buf[endpos]) == (NU8)(39))) goto LA30;
			endpos += 1;
		}
		LA30: ;
		(*l).Sup.Bufpos = pos;
		switch (((NU8)((*l).Sup.Buf[endpos]))) {
		case 102:
		case 70:
		{
			endpos += 1;
			{
				NIM_BOOL LOC35;
				LOC35 = 0;
				LOC35 = ((NU8)((*l).Sup.Buf[endpos]) == (NU8)(51));
				if (!(LOC35)) goto LA36;
				LOC35 = ((NU8)((*l).Sup.Buf[(NI64)(endpos + 1)]) == (NU8)(50));
				LA36: ;
				if (!LOC35) goto LA37;
				(*Result).Toktype = ((NU8) 83);
				endpos += 2;
			}
			goto LA33;
			LA37: ;
			{
				NIM_BOOL LOC40;
				LOC40 = 0;
				LOC40 = ((NU8)((*l).Sup.Buf[endpos]) == (NU8)(54));
				if (!(LOC40)) goto LA41;
				LOC40 = ((NU8)((*l).Sup.Buf[(NI64)(endpos + 1)]) == (NU8)(52));
				LA41: ;
				if (!LOC40) goto LA42;
				(*Result).Toktype = ((NU8) 84);
				endpos += 2;
			}
			goto LA33;
			LA42: ;
			{
				NIM_BOOL LOC45;
				NIM_BOOL LOC46;
				LOC45 = 0;
				LOC46 = 0;
				LOC46 = ((NU8)((*l).Sup.Buf[endpos]) == (NU8)(49));
				if (!(LOC46)) goto LA47;
				LOC46 = ((NU8)((*l).Sup.Buf[(NI64)(endpos + 1)]) == (NU8)(50));
				LA47: ;
				LOC45 = LOC46;
				if (!(LOC45)) goto LA48;
				LOC45 = ((NU8)((*l).Sup.Buf[(NI64)(endpos + 2)]) == (NU8)(56));
				LA48: ;
				if (!LOC45) goto LA49;
				(*Result).Toktype = ((NU8) 85);
				endpos += 3;
			}
			goto LA33;
			LA49: ;
			{
				NimStringDesc* LOC52;
				LOC52 = 0;
				LOC52 = rawNewString((*Result).Literal->Sup.len + 3);
appendString(LOC52, (*Result).Literal);
appendString(LOC52, ((NimStringDesc*) &TMP1061));
appendChar(LOC52, (*l).Sup.Buf[endpos]);
				lexmessage_216289((&(*l)), ((NU16) 14), LOC52);
			}
			LA33: ;
		}
		break;
		case 105:
		case 73:
		{
			endpos += 1;
			{
				NIM_BOOL LOC56;
				LOC56 = 0;
				LOC56 = ((NU8)((*l).Sup.Buf[endpos]) == (NU8)(54));
				if (!(LOC56)) goto LA57;
				LOC56 = ((NU8)((*l).Sup.Buf[(NI64)(endpos + 1)]) == (NU8)(52));
				LA57: ;
				if (!LOC56) goto LA58;
				(*Result).Toktype = ((NU8) 76);
				endpos += 2;
			}
			goto LA54;
			LA58: ;
			{
				NIM_BOOL LOC61;
				LOC61 = 0;
				LOC61 = ((NU8)((*l).Sup.Buf[endpos]) == (NU8)(51));
				if (!(LOC61)) goto LA62;
				LOC61 = ((NU8)((*l).Sup.Buf[(NI64)(endpos + 1)]) == (NU8)(50));
				LA62: ;
				if (!LOC61) goto LA63;
				(*Result).Toktype = ((NU8) 75);
				endpos += 2;
			}
			goto LA54;
			LA63: ;
			{
				NIM_BOOL LOC66;
				LOC66 = 0;
				LOC66 = ((NU8)((*l).Sup.Buf[endpos]) == (NU8)(49));
				if (!(LOC66)) goto LA67;
				LOC66 = ((NU8)((*l).Sup.Buf[(NI64)(endpos + 1)]) == (NU8)(54));
				LA67: ;
				if (!LOC66) goto LA68;
				(*Result).Toktype = ((NU8) 74);
				endpos += 2;
			}
			goto LA54;
			LA68: ;
			{
				if (!((NU8)((*l).Sup.Buf[endpos]) == (NU8)(56))) goto LA71;
				(*Result).Toktype = ((NU8) 73);
				endpos += 1;
			}
			goto LA54;
			LA71: ;
			{
				NimStringDesc* LOC74;
				LOC74 = 0;
				LOC74 = rawNewString((*Result).Literal->Sup.len + 3);
appendString(LOC74, (*Result).Literal);
appendString(LOC74, ((NimStringDesc*) &TMP1062));
appendChar(LOC74, (*l).Sup.Buf[endpos]);
				lexmessage_216289((&(*l)), ((NU16) 14), LOC74);
			}
			LA54: ;
		}
		break;
		case 117:
		case 85:
		{
			endpos += 1;
			{
				NIM_BOOL LOC78;
				LOC78 = 0;
				LOC78 = ((NU8)((*l).Sup.Buf[endpos]) == (NU8)(54));
				if (!(LOC78)) goto LA79;
				LOC78 = ((NU8)((*l).Sup.Buf[(NI64)(endpos + 1)]) == (NU8)(52));
				LA79: ;
				if (!LOC78) goto LA80;
				(*Result).Toktype = ((NU8) 81);
				endpos += 2;
			}
			goto LA76;
			LA80: ;
			{
				NIM_BOOL LOC83;
				LOC83 = 0;
				LOC83 = ((NU8)((*l).Sup.Buf[endpos]) == (NU8)(51));
				if (!(LOC83)) goto LA84;
				LOC83 = ((NU8)((*l).Sup.Buf[(NI64)(endpos + 1)]) == (NU8)(50));
				LA84: ;
				if (!LOC83) goto LA85;
				(*Result).Toktype = ((NU8) 80);
				endpos += 2;
			}
			goto LA76;
			LA85: ;
			{
				NIM_BOOL LOC88;
				LOC88 = 0;
				LOC88 = ((NU8)((*l).Sup.Buf[endpos]) == (NU8)(49));
				if (!(LOC88)) goto LA89;
				LOC88 = ((NU8)((*l).Sup.Buf[(NI64)(endpos + 1)]) == (NU8)(54));
				LA89: ;
				if (!LOC88) goto LA90;
				(*Result).Toktype = ((NU8) 79);
				endpos += 2;
			}
			goto LA76;
			LA90: ;
			{
				if (!((NU8)((*l).Sup.Buf[endpos]) == (NU8)(56))) goto LA93;
				(*Result).Toktype = ((NU8) 78);
				endpos += 1;
			}
			goto LA76;
			LA93: ;
			{
				(*Result).Toktype = ((NU8) 77);
			}
			LA76: ;
		}
		break;
		default:
		{
			NimStringDesc* LOC97;
			LOC97 = 0;
			LOC97 = rawNewString((*Result).Literal->Sup.len + 2);
appendString(LOC97, (*Result).Literal);
appendString(LOC97, ((NimStringDesc*) &TMP1063));
appendChar(LOC97, (*l).Sup.Buf[endpos]);
			lexmessage_216289((&(*l)), ((NU16) 14), LOC97);
		}
		break;
		}
	}
	goto LA24;
	LA26: ;
	{
		(*l).Sup.Bufpos = pos;
	}
	LA24: ;
	pushSafePoint(&TMP1064);
	TMP1064.status = setjmp(TMP1064.context);
	if (TMP1064.status == 0) {
		{
			NIM_BOOL LOC102;
			LOC102 = 0;
			LOC102 = ((NU8)((*l).Sup.Buf[pos]) == (NU8)(48));
			if (!(LOC102)) goto LA103;
			LOC102 = (((NU8)((*l).Sup.Buf[(NI64)(pos + 1)])) == ((NU8)(120)) || ((NU8)((*l).Sup.Buf[(NI64)(pos + 1)])) == ((NU8)(88)) || ((NU8)((*l).Sup.Buf[(NI64)(pos + 1)])) == ((NU8)(98)) || ((NU8)((*l).Sup.Buf[(NI64)(pos + 1)])) == ((NU8)(66)) || ((NU8)((*l).Sup.Buf[(NI64)(pos + 1)])) == ((NU8)(111)) || ((NU8)((*l).Sup.Buf[(NI64)(pos + 1)])) == ((NU8)(79)) || ((NU8)((*l).Sup.Buf[(NI64)(pos + 1)])) == ((NU8)(99)) || ((NU8)((*l).Sup.Buf[(NI64)(pos + 1)])) == ((NU8)(67)));
			LA103: ;
			if (!LOC102) goto LA104;
			pos += 2;
			xi = IL64(0);
			switch (((NU8)((*l).Sup.Buf[(NI64)(pos - 1)]))) {
			case 98:
			case 66:
			{
				(*Result).Base = ((NU8) 1);
				{
					while (1) {
						switch (((NU8)((*l).Sup.Buf[pos]))) {
						case 50 ... 57:
						case 46:
						{
							lexmessage_216289((&(*l)), ((NU16) 14), (*Result).Literal);
							pos += 1;
						}
						break;
						case 95:
						{
							{
								if (!!((((NU8)((*l).Sup.Buf[(NI64)(pos + 1)])) >= ((NU8)(48)) && ((NU8)((*l).Sup.Buf[(NI64)(pos + 1)])) <= ((NU8)(49))))) goto LA113;
								lexmessage_216289((&(*l)), ((NU16) 12), ((NimStringDesc*) &TMP1054));
								goto LA107;
							}
							LA113: ;
							pos += 1;
						}
						break;
						case 48:
						case 49:
						{
							xi = (NI64)((NI64)((NU64)(xi) << (NU64)(IL64(1))) | ((NI64) ((NI64)(((NI) (((NU8)((*l).Sup.Buf[pos])))) - 48))));
							pos += 1;
						}
						break;
						default:
						{
							goto LA107;
						}
						break;
						}
					}
				} LA107: ;
			}
			break;
			case 111:
			case 99:
			case 67:
			{
				(*Result).Base = ((NU8) 2);
				{
					while (1) {
						switch (((NU8)((*l).Sup.Buf[pos]))) {
						case 56 ... 57:
						case 46:
						{
							lexmessage_216289((&(*l)), ((NU16) 14), (*Result).Literal);
							pos += 1;
						}
						break;
						case 95:
						{
							{
								if (!!((((NU8)((*l).Sup.Buf[(NI64)(pos + 1)])) >= ((NU8)(48)) && ((NU8)((*l).Sup.Buf[(NI64)(pos + 1)])) <= ((NU8)(55))))) goto LA124;
								lexmessage_216289((&(*l)), ((NU16) 12), ((NimStringDesc*) &TMP1054));
								goto LA118;
							}
							LA124: ;
							pos += 1;
						}
						break;
						case 48 ... 55:
						{
							xi = (NI64)((NI64)((NU64)(xi) << (NU64)(IL64(3))) | ((NI64) ((NI64)(((NI) (((NU8)((*l).Sup.Buf[pos])))) - 48))));
							pos += 1;
						}
						break;
						default:
						{
							goto LA118;
						}
						break;
						}
					}
				} LA118: ;
			}
			break;
			case 79:
			{
				lexmessage_216289((&(*l)), ((NU16) 14), (*Result).Literal);
			}
			break;
			case 120:
			case 88:
			{
				(*Result).Base = ((NU8) 3);
				{
					while (1) {
						switch (((NU8)((*l).Sup.Buf[pos]))) {
						case 95:
						{
							{
								if (!!((((NU8)((*l).Sup.Buf[(NI64)(pos + 1)])) >= ((NU8)(48)) && ((NU8)((*l).Sup.Buf[(NI64)(pos + 1)])) <= ((NU8)(57)) || ((NU8)((*l).Sup.Buf[(NI64)(pos + 1)])) >= ((NU8)(97)) && ((NU8)((*l).Sup.Buf[(NI64)(pos + 1)])) <= ((NU8)(102)) || ((NU8)((*l).Sup.Buf[(NI64)(pos + 1)])) >= ((NU8)(65)) && ((NU8)((*l).Sup.Buf[(NI64)(pos + 1)])) <= ((NU8)(70))))) goto LA135;
								lexmessage_216289((&(*l)), ((NU16) 12), ((NimStringDesc*) &TMP1054));
								goto LA130;
							}
							LA135: ;
							pos += 1;
						}
						break;
						case 48 ... 57:
						{
							xi = (NI64)((NI64)((NU64)(xi) << (NU64)(IL64(4))) | ((NI64) ((NI64)(((NI) (((NU8)((*l).Sup.Buf[pos])))) - 48))));
							pos += 1;
						}
						break;
						case 97 ... 102:
						{
							xi = (NI64)((NI64)((NU64)(xi) << (NU64)(IL64(4))) | ((NI64) ((NI64)(((NI) ((NI64)(((NI) (((NU8)((*l).Sup.Buf[pos])))) - 97))) + 10))));
							pos += 1;
						}
						break;
						case 65 ... 70:
						{
							xi = (NI64)((NI64)((NU64)(xi) << (NU64)(IL64(4))) | ((NI64) ((NI64)(((NI) ((NI64)(((NI) (((NU8)((*l).Sup.Buf[pos])))) - 65))) + 10))));
							pos += 1;
						}
						break;
						default:
						{
							goto LA130;
						}
						break;
						}
					}
				} LA130: ;
			}
			break;
			default:
			{
				tlineinfo196539 LOC142;
				LOC142 = getlineinfo_216562((&(*l)));
				internalerror_198987(LOC142, ((NimStringDesc*) &TMP1065));
			}
			break;
			}
			switch ((*Result).Toktype) {
			case ((NU8) 72):
			case ((NU8) 76):
			{
				(*Result).Inumber = xi;
			}
			break;
			case ((NU8) 73):
			{
				(*Result).Inumber = ((NI64) (((NI8)(NU8)(NU)(((NI) (xi))))));
			}
			break;
			case ((NU8) 74):
			{
				(*Result).Inumber = ((NI64) (((NI16)(NU16)(NU)(((NI) (xi))))));
			}
			break;
			case ((NU8) 75):
			{
				(*Result).Inumber = ((NI64) (((NI32)(NU32)(NU64)(xi))));
			}
			break;
			case ((NU8) 77):
			case ((NU8) 81):
			{
				(*Result).Inumber = xi;
			}
			break;
			case ((NU8) 78):
			{
				(*Result).Inumber = ((NI64) (((NI8)(NU8)(NU)(((NI) (xi))))));
			}
			break;
			case ((NU8) 79):
			{
				(*Result).Inumber = ((NI64) (((NI16)(NU16)(NU)(((NI) (xi))))));
			}
			break;
			case ((NU8) 80):
			{
				(*Result).Inumber = ((NI64) (((NI32)(NU32)(NU64)(xi))));
			}
			break;
			case ((NU8) 83):
			{
				(*Result).Fnumber = ((NF) ((*((NF32*) ((&xi))))));
			}
			break;
			case ((NU8) 84):
			{
				(*Result).Fnumber = (*((NF*) ((&xi))));
			}
			break;
			default:
			{
				tlineinfo196539 LOC154;
				LOC154 = getlineinfo_216562((&(*l)));
				internalerror_198987(LOC154, ((NimStringDesc*) &TMP1065));
			}
			break;
			}
		}
		goto LA100;
		LA104: ;
		{
			NIM_BOOL LOC156;
			NIM_BOOL LOC157;
			LOC156 = 0;
			LOC157 = 0;
			LOC157 = isfloatliteral_216715((*Result).Literal);
			if (LOC157) goto LA158;
			LOC157 = ((*Result).Toktype == ((NU8) 83));
			LA158: ;
			LOC156 = LOC157;
			if (LOC156) goto LA159;
			LOC156 = ((*Result).Toktype == ((NU8) 84));
			LA159: ;
			if (!LOC156) goto LA160;
			(*Result).Fnumber = nsuParseFloat((*Result).Literal);
			{
				if (!((*Result).Toktype == ((NU8) 72))) goto LA164;
				(*Result).Toktype = ((NU8) 82);
			}
			LA164: ;
		}
		goto LA100;
		LA160: ;
		{
			(*Result).Inumber = nsuParseBiggestInt((*Result).Literal);
			{
				NIM_BOOL LOC169;
				LOC169 = 0;
				LOC169 = ((*Result).Inumber < IL64(-2147483648));
				if (LOC169) goto LA170;
				LOC169 = (IL64(2147483647) < (*Result).Inumber);
				LA170: ;
				if (!LOC169) goto LA171;
				{
					if (!((*Result).Toktype == ((NU8) 72))) goto LA175;
					(*Result).Toktype = ((NU8) 76);
				}
				goto LA173;
				LA175: ;
				{
					if (!((*Result).Toktype == ((NU8) 73) || (*Result).Toktype == ((NU8) 74) || (*Result).Toktype == ((NU8) 75))) goto LA178;
					lexmessage_216289((&(*l)), ((NU16) 15), (*Result).Literal);
				}
				goto LA173;
				LA178: ;
				LA173: ;
			}
			goto LA167;
			LA171: ;
			{
				NIM_BOOL LOC181;
				NIM_BOOL LOC183;
				LOC181 = 0;
				LOC181 = ((*Result).Toktype == ((NU8) 73));
				if (!(LOC181)) goto LA182;
				LOC183 = 0;
				LOC183 = ((*Result).Inumber < IL64(-128));
				if (LOC183) goto LA184;
				LOC183 = (IL64(127) < (*Result).Inumber);
				LA184: ;
				LOC181 = LOC183;
				LA182: ;
				if (!LOC181) goto LA185;
				lexmessage_216289((&(*l)), ((NU16) 15), (*Result).Literal);
			}
			goto LA167;
			LA185: ;
			{
				NIM_BOOL LOC188;
				NIM_BOOL LOC190;
				LOC188 = 0;
				LOC188 = ((*Result).Toktype == ((NU8) 74));
				if (!(LOC188)) goto LA189;
				LOC190 = 0;
				LOC190 = ((*Result).Inumber < IL64(-32768));
				if (LOC190) goto LA191;
				LOC190 = (IL64(32767) < (*Result).Inumber);
				LA191: ;
				LOC188 = LOC190;
				LA189: ;
				if (!LOC188) goto LA192;
				lexmessage_216289((&(*l)), ((NU16) 15), (*Result).Literal);
			}
			goto LA167;
			LA192: ;
			LA167: ;
		}
		LA100: ;
		popSafePoint();
	}
	else {
		popSafePoint();
		if (isObj(getCurrentException()->Sup.m_type, (&NTI3249))) {
			TMP1064.status = 0;
			lexmessage_216289((&(*l)), ((NU16) 14), (*Result).Literal);
			popCurrentException();
		}
		else 		if (isObj(getCurrentException()->Sup.m_type, (&NTI3243))||isObj(getCurrentException()->Sup.m_type, (&NTI3259))) {
			TMP1064.status = 0;
			lexmessage_216289((&(*l)), ((NU16) 15), (*Result).Literal);
			popCurrentException();
		}
	}
	if (TMP1064.status != 0) reraiseException();
	(*l).Sup.Bufpos = endpos;
}

N_NIMCALL(void, rawgettok_216238)(tlexer216190* l, ttoken216186* tok) {
	NIM_CHAR c;
	filltoken_216493(tok);
	{
		if (!(0 <= (*l).Indentahead)) goto LA3;
		(*tok).Indent = (*l).Indentahead;
		(*l).Currlineindent = (*l).Indentahead;
		(*l).Indentahead = -1;
	}
	goto LA1;
	LA3: ;
	{
		(*tok).Indent = -1;
	}
	LA1: ;
	skip_219641(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_218190(l, tok);
	}
	goto LA6;
	LA8: ;
	{
		switch (((NU8)(c))) {
		case 35:
		{
			scancomment_218456(l, tok);
		}
		break;
		case 42:
		{
			{
				NIM_BOOL LOC15;
				NI h;
				LOC15 = 0;
				LOC15 = ((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos + 1)]) == (NU8)(58));
				if (!(LOC15)) goto LA16;
				LOC15 = !(((TMP1057[((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos + 2)]))/8] &(1<<(((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos + 2)]))%8)))!=0));
				LA16: ;
				if (!LOC15) goto LA17;
				h = HEX21HEX26_128025(0, 42);
				endoperator_218327(l, tok, (NI64)((*l).Sup.Bufpos + 1), h);
			}
			goto LA13;
			LA17: ;
			{
				getoperator_218354(l, tok);
			}
			LA13: ;
		}
		break;
		case 44:
		{
			(*tok).Toktype = ((NU8) 104);
			(*l).Sup.Bufpos += 1;
		}
		break;
		case 108:
		{
			{
				if (!!((((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos + 1)])) >= ((NU8)(48)) && ((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos + 1)])) <= ((NU8)(57)) || ((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos + 1)])) >= ((NU8)(65)) && ((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos + 1)])) <= ((NU8)(90)) || ((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos + 1)])) == ((NU8)(95)) || ((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos + 1)])) >= ((NU8)(97)) && ((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos + 1)])) <= ((NU8)(122)) || ((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos + 1)])) >= ((NU8)(128)) && ((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos + 1)])) <= ((NU8)(255))))) goto LA24;
				lexmessage_216289((&(*l)), ((NU16) 236), ((NimStringDesc*) &TMP717));
			}
			LA24: ;
			getsymbol_218190(l, tok);
		}
		break;
		case 114:
		case 82:
		{
			{
				if (!((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos + 1)]) == (NU8)(34))) goto LA29;
				(*l).Sup.Bufpos += 1;
				getstring_217948(l, tok, NIM_TRUE);
			}
			goto LA27;
			LA29: ;
			{
				getsymbol_218190(l, tok);
			}
			LA27: ;
		}
		break;
		case 40:
		{
			(*l).Sup.Bufpos += 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[(NI64)((*l).Sup.Bufpos + 1)]) == (NU8)(46)));
				LA36: ;
				if (!LOC35) goto LA37;
				(*tok).Toktype = ((NU8) 102);
				(*l).Sup.Bufpos += 1;
			}
			goto LA33;
			LA37: ;
			{
				(*tok).Toktype = ((NU8) 92);
			}
			LA33: ;
		}
		break;
		case 41:
		{
			(*tok).Toktype = ((NU8) 93);
			(*l).Sup.Bufpos += 1;
		}
		break;
		case 91:
		{
			(*l).Sup.Bufpos += 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[(NI64)((*l).Sup.Bufpos + 1)]) == (NU8)(46)));
				LA45: ;
				if (!LOC44) goto LA46;
				(*tok).Toktype = ((NU8) 98);
				(*l).Sup.Bufpos += 1;
			}
			goto LA42;
			LA46: ;
			{
				(*tok).Toktype = ((NU8) 94);
			}
			LA42: ;
		}
		break;
		case 93:
		{
			(*tok).Toktype = ((NU8) 95);
			(*l).Sup.Bufpos += 1;
		}
		break;
		case 46:
		{
			{
				if (!((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos + 1)]) == (NU8)(93))) goto LA53;
				(*tok).Toktype = ((NU8) 99);
				(*l).Sup.Bufpos += 2;
			}
			goto LA51;
			LA53: ;
			{
				if (!((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos + 1)]) == (NU8)(125))) goto LA56;
				(*tok).Toktype = ((NU8) 101);
				(*l).Sup.Bufpos += 2;
			}
			goto LA51;
			LA56: ;
			{
				if (!((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos + 1)]) == (NU8)(41))) goto LA59;
				(*tok).Toktype = ((NU8) 103);
				(*l).Sup.Bufpos += 2;
			}
			goto LA51;
			LA59: ;
			{
				getoperator_218354(l, tok);
			}
			LA51: ;
		}
		break;
		case 123:
		{
			(*l).Sup.Bufpos += 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[(NI64)((*l).Sup.Bufpos + 1)]) == (NU8)(46)));
				LA66: ;
				if (!LOC65) goto LA67;
				(*tok).Toktype = ((NU8) 100);
				(*l).Sup.Bufpos += 1;
			}
			goto LA63;
			LA67: ;
			{
				(*tok).Toktype = ((NU8) 96);
			}
			LA63: ;
		}
		break;
		case 125:
		{
			(*tok).Toktype = ((NU8) 97);
			(*l).Sup.Bufpos += 1;
		}
		break;
		case 59:
		{
			(*tok).Toktype = ((NU8) 105);
			(*l).Sup.Bufpos += 1;
		}
		break;
		case 96:
		{
			(*tok).Toktype = ((NU8) 113);
			(*l).Sup.Bufpos += 1;
		}
		break;
		case 34:
		{
			NIM_BOOL rawmode;
			NIM_BOOL LOC74;
			LOC74 = 0;
			LOC74 = (0 < (*l).Sup.Bufpos);
			if (!(LOC74)) goto LA75;
			LOC74 = (((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos - 1)])) >= ((NU8)(97)) && ((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos - 1)])) <= ((NU8)(122)) || ((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos - 1)])) >= ((NU8)(65)) && ((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos - 1)])) <= ((NU8)(90)) || ((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos - 1)])) >= ((NU8)(48)) && ((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos - 1)])) <= ((NU8)(57)) || ((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos - 1)])) >= ((NU8)(128)) && ((NU8)((*l).Sup.Buf[(NI64)((*l).Sup.Bufpos - 1)])) <= ((NU8)(255)));
			LA75: ;
			rawmode = LOC74;
			getstring_217948(l, tok, rawmode);
			{
				if (!rawmode) goto LA78;
				(*tok).Toktype += 2;
			}
			LA78: ;
		}
		break;
		case 39:
		{
			(*tok).Toktype = ((NU8) 91);
			getcharacter_218128(l, tok);
			(*tok).Toktype = ((NU8) 91);
		}
		break;
		case 48 ... 57:
		{
			getnumber_216767(l, (&(*tok)));
		}
		break;
		default:
		{
			{
				if (!((TMP1057[((NU8)(c))/8] &(1<<(((NU8)(c))%8)))!=0)) goto LA85;
				getoperator_218354(l, tok);
			}
			goto LA83;
			LA85: ;
			{
				if (!((NU8)(c) == (NU8)(0))) goto LA88;
				(*tok).Toktype = ((NU8) 1);
				(*tok).Indent = 0;
			}
			goto LA83;
			LA88: ;
			{
				NimStringDesc* LOC91;
				NimStringDesc* LOC92;
				unsureAsgnRef((void**) (&(*tok).Literal), nimCharToStr(c));
				(*tok).Toktype = ((NU8) 0);
				LOC91 = 0;
				LOC92 = 0;
				LOC92 = nimIntToStr(((NI) (((NU8)(c)))));
				LOC91 = rawNewString(LOC92->Sup.len + 5);
appendChar(LOC91, c);
appendString(LOC91, ((NimStringDesc*) &TMP1073));
appendString(LOC91, LOC92);
appendChar(LOC91, 41);
				lexmessage_216289((&(*l)), ((NU16) 12), LOC91);
				(*l).Sup.Bufpos += 1;
			}
			LA83: ;
		}
		break;
		}
	}
	LA6: ;
}

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

N_NIMCALL(NimStringDesc*, toktostr_216271)(ttoken216186* tok) {
	NimStringDesc* result;
	result = 0;
	switch ((*tok).Toktype) {
	case ((NU8) 72) ... ((NU8) 76):
	{
		result = nimInt64ToStr((*tok).Inumber);
	}
	break;
	case ((NU8) 82) ... ((NU8) 84):
	{
		result = nimFloatToStr((*tok).Fnumber);
	}
	break;
	case ((NU8) 0):
	case ((NU8) 86) ... ((NU8) 91):
	case ((NU8) 112):
	{
		result = copyString((*tok).Literal);
	}
	break;
	case ((NU8) 92) ... ((NU8) 106):
	case ((NU8) 1):
	case ((NU8) 113):
	{
		result = copyString(toktypetostr_216174[((*tok).Toktype)- 0]);
	}
	break;
	default:
	{
		{
			if (!!(((*tok).Ident == NIM_NIL))) goto LA8;
			result = copyString((*(*tok).Ident).S);
		}
		goto LA6;
		LA8: ;
		{
			internalerror_199006(((NimStringDesc*) &TMP1202));
			result = copyString(((NimStringDesc*) &TMP717));
		}
		LA6: ;
	}
	break;
	}
	return result;
}

N_NIMCALL(NimStringDesc*, prettytok_216434)(ttoken216186* tok) {
	NimStringDesc* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC6;
		LOC3 = 0;
		LOC3 = iskeyword_216223((*tok).Toktype);
		if (!LOC3) goto LA4;
		LOC6 = 0;
		LOC6 = rawNewString((*(*tok).Ident).S->Sup.len + 8);
appendString(LOC6, ((NimStringDesc*) &TMP1201));
appendString(LOC6, (*(*tok).Ident).S);
		result = LOC6;
	}
	goto LA1;
	LA4: ;
	{
		result = toktostr_216271(tok);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, closelexer_216258)(tlexer216190* lex) {
	tbaselexer214024* LOC1;
	glinescompiled_216218 += (*lex).Sup.Linenumber;
	LOC1 = 0;
	LOC1 = &lex->Sup;
	closebaselexer_214045(LOC1);
}

N_NIMCALL(NIM_BOOL, isnimidentifier_216325)(NimStringDesc* s) {
	NIM_BOOL result;
	result = 0;
	{
		NI i;
		if (!(((NU8)(s->data[0])) >= ((NU8)(97)) && ((NU8)(s->data[0])) <= ((NU8)(122)) || ((NU8)(s->data[0])) >= ((NU8)(65)) && ((NU8)(s->data[0])) <= ((NU8)(90)) || ((NU8)(s->data[0])) >= ((NU8)(128)) && ((NU8)(s->data[0])) <= ((NU8)(255)))) goto LA3;
		i = 1;
		{
			while (1) {
				if (!(i < s->Sup.len)) goto LA6;
				{
					if (!((NU8)(s->data[i]) == (NU8)(95))) goto LA9;
					i += 1;
					{
						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 LA13;
						goto BeforeRet;
					}
					LA13: ;
				}
				LA9: ;
				{
					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 += 1;
			} LA6: ;
		}
		result = NIM_TRUE;
	}
	LA3: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, openlexer_216277)(tlexer216190* lex, NimStringDesc* filename, tllstream212204* inputstream) {
	NI32 LOC1;
	LOC1 = 0;
	LOC1 = fileinfoidx_196747(filename);
	openlexer_216229(lex, LOC1, inputstream);
}

static N_INLINE(void, writeln_171205)(FILE* f_171209, NimStringDesc** x_171213, NI x_171213Len0) {
	{
		NimStringDesc* i_171226;
		NI i_171234;
		i_171226 = 0;
		i_171234 = 0;
		{
			while (1) {
				if (!(i_171234 < x_171213Len0)) goto LA3;
				i_171226 = x_171213[i_171234];
				write_12865(f_171209, i_171226);
				i_171234 += 1;
			} LA3: ;
		}
	}
	write_12865(f_171209, ((NimStringDesc*) &TMP1056));
}

N_NIMCALL(void, printtok_216265)(ttoken216186* tok) {
	TY198620 LOC1;
	TY198301 LOC2;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = nimIntToStr((*tok).Line);
	LOC1[1] = copyString(((NimStringDesc*) &TMP1189));
	LOC1[2] = nimIntToStr((*tok).Col);
	LOC1[3] = copyString(((NimStringDesc*) &TMP4846));
	write_12881(stdout, LOC1, 4);
	write_12865(stdout, toktypetostr_216174[((*tok).Toktype)- 0]);
	write_12865(stdout, ((NimStringDesc*) &TMP4847));
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = toktostr_216271(tok);
	writeln_171205(stdout, LOC2, 1);
}
NIM_EXTERNC N_NOINLINE(void, HEX00_lexerInit)(void) {
	asgnRefNoCycle((void**) (&dummyident_216477), getident_201472(((NimStringDesc*) &TMP717)));
}

NIM_EXTERNC N_NOINLINE(void, HEX00_lexerDatInit)(void) {
static TNimNode* TMP1015[5];
static TNimNode* TMP1016[2];
static TNimNode* TMP1018[11];
static TNimNode* TMP1019[118];
NI TMP1021;
static char* NIM_CONST TMP1020[118] = {
"tkInvalid", 
"tkEof", 
"tkSymbol", 
"tkAddr", 
"tkAnd", 
"tkAs", 
"tkAsm", 
"tkAtomic", 
"tkBind", 
"tkBlock", 
"tkBreak", 
"tkCase", 
"tkCast", 
"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* TMP1022[4];
NI TMP1024;
static char* NIM_CONST TMP1023[4] = {
"base10", 
"base2", 
"base8", 
"base16"};
static TNimNode TMP711[146];
NTI216190.size = sizeof(tlexer216190);
NTI216190.kind = 17;
NTI216190.base = (&NTI214024);
TMP1015[0] = &TMP711[1];
TMP711[1].kind = 1;
TMP711[1].offset = offsetof(tlexer216190, Fileidx);
TMP711[1].typ = (&NTI114);
TMP711[1].name = "fileIdx";
TMP1015[1] = &TMP711[2];
TMP711[2].kind = 1;
TMP711[2].offset = offsetof(tlexer216190, Indentahead);
TMP711[2].typ = (&NTI108);
TMP711[2].name = "indentAhead";
TMP1015[2] = &TMP711[3];
TMP711[3].kind = 1;
TMP711[3].offset = offsetof(tlexer216190, Currlineindent);
TMP711[3].typ = (&NTI108);
TMP711[3].name = "currLineIndent";
TMP1015[3] = &TMP711[4];
TMP711[4].kind = 1;
TMP711[4].offset = offsetof(tlexer216190, Strongspaces);
TMP711[4].typ = (&NTI138);
TMP711[4].name = "strongSpaces";
TMP1015[4] = &TMP711[5];
NTI216188.size = sizeof(TY613034);
NTI216188.kind = 18;
NTI216188.base = 0;
NTI216188.flags = 2;
TMP1016[0] = &TMP711[7];
TMP711[7].kind = 1;
TMP711[7].offset = offsetof(TY613034, Field0);
TMP711[7].typ = (&NTI153);
TMP711[7].name = "Field0";
TMP1016[1] = &TMP711[8];
NTI613037.size = sizeof(TY613037);
NTI613037.kind = 18;
NTI613037.base = 0;
NTI613037.flags = 3;
TMP711[9].len = 0; TMP711[9].kind = 2;
NTI613037.node = &TMP711[9];
NTI613036.size = sizeof(TY613037*);
NTI613036.kind = 22;
NTI613036.base = (&NTI613037);
NTI613036.flags = 2;
NTI613036.marker = TMP1017;
TMP711[8].kind = 1;
TMP711[8].offset = offsetof(TY613034, Field1);
TMP711[8].typ = (&NTI613036);
TMP711[8].name = "Field1";
TMP711[6].len = 2; TMP711[6].kind = 2; TMP711[6].sons = &TMP1016[0];
NTI216188.node = &TMP711[6];
TMP711[5].kind = 1;
TMP711[5].offset = offsetof(tlexer216190, Errorhandler);
TMP711[5].typ = (&NTI216188);
TMP711[5].name = "errorHandler";
TMP711[0].len = 5; TMP711[0].kind = 2; TMP711[0].sons = &TMP1015[0];
NTI216190.node = &TMP711[0];
NTI216186.size = sizeof(ttoken216186);
NTI216186.kind = 18;
NTI216186.base = 0;
NTI216186.flags = 2;
TMP1018[0] = &TMP711[11];
NTI216022.size = sizeof(NU8);
NTI216022.kind = 14;
NTI216022.base = 0;
NTI216022.flags = 3;
for (TMP1021 = 0; TMP1021 < 118; TMP1021++) {
TMP711[TMP1021+12].kind = 1;
TMP711[TMP1021+12].offset = TMP1021;
TMP711[TMP1021+12].name = TMP1020[TMP1021];
TMP1019[TMP1021] = &TMP711[TMP1021+12];
}
TMP711[130].len = 118; TMP711[130].kind = 2; TMP711[130].sons = &TMP1019[0];
NTI216022.node = &TMP711[130];
TMP711[11].kind = 1;
TMP711[11].offset = offsetof(ttoken216186, Toktype);
TMP711[11].typ = (&NTI216022);
TMP711[11].name = "tokType";
TMP1018[1] = &TMP711[131];
TMP711[131].kind = 1;
TMP711[131].offset = offsetof(ttoken216186, Indent);
TMP711[131].typ = (&NTI108);
TMP711[131].name = "indent";
TMP1018[2] = &TMP711[132];
TMP711[132].kind = 1;
TMP711[132].offset = offsetof(ttoken216186, Ident);
TMP711[132].typ = (&NTI201019);
TMP711[132].name = "ident";
TMP1018[3] = &TMP711[133];
TMP711[133].kind = 1;
TMP711[133].offset = offsetof(ttoken216186, Inumber);
TMP711[133].typ = (&NTI5510);
TMP711[133].name = "iNumber";
TMP1018[4] = &TMP711[134];
TMP711[134].kind = 1;
TMP711[134].offset = offsetof(ttoken216186, Fnumber);
TMP711[134].typ = (&NTI5512);
TMP711[134].name = "fNumber";
TMP1018[5] = &TMP711[135];
NTI216184.size = sizeof(NU8);
NTI216184.kind = 14;
NTI216184.base = 0;
NTI216184.flags = 3;
for (TMP1024 = 0; TMP1024 < 4; TMP1024++) {
TMP711[TMP1024+136].kind = 1;
TMP711[TMP1024+136].offset = TMP1024;
TMP711[TMP1024+136].name = TMP1023[TMP1024];
TMP1022[TMP1024] = &TMP711[TMP1024+136];
}
TMP711[140].len = 4; TMP711[140].kind = 2; TMP711[140].sons = &TMP1022[0];
NTI216184.node = &TMP711[140];
TMP711[135].kind = 1;
TMP711[135].offset = offsetof(ttoken216186, Base);
TMP711[135].typ = (&NTI216184);
TMP711[135].name = "base";
TMP1018[6] = &TMP711[141];
TMP711[141].kind = 1;
TMP711[141].offset = offsetof(ttoken216186, Strongspacea);
TMP711[141].typ = (&NTI110);
TMP711[141].name = "strongSpaceA";
TMP1018[7] = &TMP711[142];
TMP711[142].kind = 1;
TMP711[142].offset = offsetof(ttoken216186, Strongspaceb);
TMP711[142].typ = (&NTI110);
TMP711[142].name = "strongSpaceB";
TMP1018[8] = &TMP711[143];
TMP711[143].kind = 1;
TMP711[143].offset = offsetof(ttoken216186, Literal);
TMP711[143].typ = (&NTI149);
TMP711[143].name = "literal";
TMP1018[9] = &TMP711[144];
TMP711[144].kind = 1;
TMP711[144].offset = offsetof(ttoken216186, Line);
TMP711[144].typ = (&NTI108);
TMP711[144].name = "line";
TMP1018[10] = &TMP711[145];
TMP711[145].kind = 1;
TMP711[145].offset = offsetof(ttoken216186, Col);
TMP711[145].typ = (&NTI108);
TMP711[145].name = "col";
TMP711[10].len = 11; TMP711[10].kind = 2; TMP711[10].sons = &TMP1018[0];
NTI216186.node = &TMP711[10];
}

