/* Generated by Nimrod Compiler v0.9.5 */
/*   (c) 2014 Andreas Rumpf */
/* The generated code is subject to the original license. */
/* Compiled for: Linux, i386, gcc */
/* Command for C compiler:
   gcc -c  -w -O3 -fno-strict-aliasing  -I/build/nimrod/src/nimrod/lib -o compiler/nimcache/lexer.o compiler/nimcache/lexer.c */
#define NIM_INTBITS 32
#include "nimbase.h"

#include <string.h>

#include <setjmp.h>

#include <stdio.h>
typedef struct tident167019 tident167019;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tcell41090 tcell41090;
typedef struct TNimType TNimType;
typedef struct tcellseq41106 tcellseq41106;
typedef struct tgcheap43016 tgcheap43016;
typedef struct tcellset41102 tcellset41102;
typedef struct tpagedesc41098 tpagedesc41098;
typedef struct tmemregion23410 tmemregion23410;
typedef struct tsmallchunk22638 tsmallchunk22638;
typedef struct tllchunk23404 tllchunk23404;
typedef struct tbigchunk22640 tbigchunk22640;
typedef struct tintset22615 tintset22615;
typedef struct ttrunk22611 ttrunk22611;
typedef struct tavlnode23408 tavlnode23408;
typedef struct tgcstat43014 tgcstat43014;
typedef struct TNimNode TNimNode;
typedef struct tlexer180176 tlexer180176;
typedef struct tbaselexer178018 tbaselexer178018;
typedef struct TNimObject TNimObject;
typedef struct tllstream176204 tllstream176204;
typedef struct ttoken180174 ttoken180174;
typedef struct tlineinfo163527 tlineinfo163527;
typedef struct tidobj167013 tidobj167013;
typedef struct E_Base E_Base;
typedef struct TSafePoint TSafePoint;
typedef struct tbasechunk22636 tbasechunk22636;
typedef struct tfreecell22628 tfreecell22628;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  tcell41090  {
NI Refcount;
TNimType* Typ;
};
struct  tcellseq41106  {
NI Len;
NI Cap;
tcell41090** D;
};
struct  tcellset41102  {
NI Counter;
NI Max;
tpagedesc41098* Head;
tpagedesc41098** Data;
};
typedef tsmallchunk22638* TY23422[512];
typedef ttrunk22611* ttrunkbuckets22613[256];
struct  tintset22615  {
ttrunkbuckets22613 Data;
};
struct  tmemregion23410  {
NI Minlargeobj;
NI Maxlargeobj;
TY23422 Freesmallchunks;
tllchunk23404* Llmem;
NI Currmem;
NI Maxmem;
NI Freemem;
NI Lastsize;
tbigchunk22640* Freechunkslist;
tintset22615 Chunkstarts;
tavlnode23408* Root;
tavlnode23408* Deleted;
tavlnode23408* Last;
tavlnode23408* Freeavlnodes;
};
struct  tgcstat43014  {
NI Stackscans;
NI Cyclecollections;
NI Maxthreshold;
NI Maxstacksize;
NI Maxstackcells;
NI Cycletablesize;
NI64 Maxpause;
};
struct  tgcheap43016  {
void* Stackbottom;
NI Cyclethreshold;
tcellseq41106 Zct;
tcellseq41106 Decstack;
tcellset41102 Cycleroots;
tcellseq41106 Tempstack;
NI Recgclock;
tmemregion23410 Region;
tgcstat43014 Stat;
};
typedef N_NIMCALL_PTR(void, TY2289) (void* p, NI op);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY2289 marker;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  tbaselexer178018  {
  TNimObject Sup;
NI Bufpos;
NCSTRING Buf;
NI Buflen;
tllstream176204* Stream;
NI Linenumber;
NI Sentinel;
NI Linestart;
};
struct  tlexer180176  {
  tbaselexer178018 Sup;
NI32 Fileidx;
NI Indentahead;
NI Currlineindent;
NIM_BOOL Strongspaces;
};
struct  ttoken180174  {
NU8 Toktype;
NI Indent;
tident167019* Ident;
NI64 Inumber;
NF Fnumber;
NU8 Base;
NI8 Strongspacea;
NI8 Strongspaceb;
NimStringDesc* Literal;
NI Line;
NI Col;
};
struct  tllstream176204  {
  TNimObject Sup;
NU8 Kind;
FILE* F;
NimStringDesc* S;
NI Rd;
NI Wr;
NI Lineoffset;
};
struct  tlineinfo163527  {
NI16 Line;
NI16 Col;
NI32 Fileindex;
};
struct  tidobj167013  {
  TNimObject Sup;
NI Id;
};
struct  tident167019  {
  tidobj167013 Sup;
NimStringDesc* S;
tident167019* Next;
NI H;
};
typedef NU8 TY90161[32];
struct  E_Base  {
  TNimObject Sup;
E_Base* parent;
NCSTRING name;
NimStringDesc* message;
NimStringDesc* trace;
};
typedef struct {
N_NIMCALL_PTR(NIM_BOOL, ClPrc) (E_Base* e, void* ClEnv);
void* ClEnv;
} TY11626;
struct  TSafePoint  {
TSafePoint* prev;
NI status;
jmp_buf context;
NIM_BOOL hasRaiseAction;
TY11626 raiseAction;
};
typedef NimStringDesc* TY180165[117];
typedef NimStringDesc* TY165283[4];
typedef NimStringDesc* TY165002[1];
typedef NI TY22618[16];
struct  tpagedesc41098  {
tpagedesc41098* Next;
NI Key;
TY22618 Bits;
};
struct  tbasechunk22636  {
NI Prevsize;
NI Size;
NIM_BOOL Used;
};
struct  tsmallchunk22638  {
  tbasechunk22636 Sup;
tsmallchunk22638* Next;
tsmallchunk22638* Prev;
tfreecell22628* Freelist;
NI Free;
NI Acc;
NF Data;
};
struct  tllchunk23404  {
NI Size;
NI Acc;
tllchunk23404* Next;
};
struct  tbigchunk22640  {
  tbasechunk22636 Sup;
tbigchunk22640* Next;
tbigchunk22640* Prev;
NI Align;
NF Data;
};
struct  ttrunk22611  {
ttrunk22611* Next;
NI Key;
TY22618 Bits;
};
typedef tavlnode23408* TY23414[2];
struct  tavlnode23408  {
TY23414 Link;
NI Key;
NI Upperbound;
NI Level;
};
struct  tfreecell22628  {
tfreecell22628* Next;
NI Zerofield;
};
N_NIMCALL(tident167019*, getident_167456)(NimStringDesc* identifier);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(tcell41090*, usrtocell_44443)(void* usr);
static N_INLINE(void, rtladdzct_46002)(tcell41090* c);
N_NOINLINE(void, addzct_44418)(tcellseq41106* s, tcell41090* c);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(void, openlexer_180204)(tlexer180176* lex, NI32 fileidx, tllstream176204* inputstream);
N_NIMCALL(void, openbaselexer_178027)(tbaselexer178018* l, tllstream176204* inputstream, NI buflen);
N_NIMCALL(NI32, fileinfoidx_163721)(NimStringDesc* filename);
N_NIMCALL(void, filltoken_180424)(ttoken180174* l);
N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newlen);
N_NIMCALL(void, skip_182498)(tlexer180176* l, ttoken180174* tok);
N_NIMCALL(void, lexmessagepos_180498)(tlexer180176* l, NU16 msg, NI pos, NimStringDesc* arg);
N_NIMCALL(tlineinfo163527, newlineinfo_164069)(NI32 fileinfoidx, NI line, NI col);
N_NIMCALL(void, message_165584)(tlineinfo163527 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NI, handlecrlf_181858)(tlexer180176* l, NI pos);
N_NIMCALL(NI, getcolnumber_178045)(tbaselexer178018* l, NI pos);
N_NIMCALL(NimStringDesc*, newstring_181824)(NCSTRING s, NI len);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
N_NIMCALL(void, addsourceline_165634)(NI32 fileidx, NimStringDesc* line);
N_NIMCALL(NI, handlecr_178050)(tbaselexer178018* l, NI pos);
N_NIMCALL(NI, handlelf_178056)(tbaselexer178018* l, NI pos);
N_NIMCALL(void, getsymbol_182118)(tlexer180176* l, ttoken180174* tok);
static N_INLINE(NI, HEX21HEX26_119015)(NI h, NI val);
N_NIMCALL(void, lexmessage_180246)(tlexer180176* l, NU16 msg, NimStringDesc* arg);
N_NIMCALL(tlineinfo163527, getlineinfo_180485)(tlexer180176* l);
static N_INLINE(NI, HEX21HEX24_119040)(NI h);
N_NIMCALL(tident167019*, getident_167250)(NCSTRING identifier, NI length, NI h);
N_NIMCALL(void, scancomment_182370)(tlexer180176* l, ttoken180174* 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_182249)(tlexer180176* l, ttoken180174* tok, NI pos, NI hash);
N_NIMCALL(void, getoperator_182272)(tlexer180176* l, ttoken180174* tok);
N_NIMCALL(void, getstring_181922)(tlexer180176* l, ttoken180174* tok, NIM_BOOL rawmode);
N_NIMCALL(void, getescapedchar_181592)(tlexer180176* l, ttoken180174* tok);
N_NIMCALL(void, handlehexchar_181425)(tlexer180176* l, NI* xi);
N_NIMCALL(NIM_BOOL, matchtwochars_180578)(tlexer180176* l, NIM_CHAR first, TY90161 second);
N_NIMCALL(void, handledecchars_181536)(tlexer180176* l, NI* xi);
N_NIMCALL(void, getcharacter_182048)(tlexer180176* l, ttoken180174* tok);
N_NIMCALL(NimStringDesc*, nimCharToStr)(NIM_CHAR x);
N_NIMCALL(void, getnumber_180637)(tlexer180176* l, ttoken180174* Result);
N_NIMCALL(void, matchunderscorechars_180508)(tlexer180176* l, ttoken180174* tok, TY90161 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_165591)(tlineinfo163527 info, NimStringDesc* errmsg);
N_NIMCALL(NIM_BOOL, isfloatliteral_180599)(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(E_Base*, getCurrentException)(void);
static N_INLINE(void, popCurrentException)(void);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_46827)(tcell41090* c);
static N_INLINE(NIM_BOOL, canbecycleroot_44462)(tcell41090* c);
static N_INLINE(void, rtladdcycleroot_45235)(tcell41090* c);
N_NOINLINE(void, incl_41855)(tcellset41102* s, tcell41090* cell);
static N_INLINE(void, decref_46402)(tcell41090* c);
N_NIMCALL(void, reraiseException)(void);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x);
N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x);
N_NIMCALL(NimStringDesc*, nimFloatToStr)(NF x);
N_NIMCALL(void, internalerror_165606)(NimStringDesc* errmsg);
N_NIMCALL(void, closebaselexer_178035)(tbaselexer178018* l);
N_NIMCALL(NIM_BOOL, iskeyword_180200)(NU8 kind);
N_NIMCALL(NimStringDesc*, toktostr_180234)(ttoken180174* tok);
N_NIMCALL(void, write_10479)(FILE* f, NimStringDesc** a, NI aLen0);
N_NIMCALL(void, write_10463)(FILE* f, NimStringDesc* s);
static N_INLINE(void, writeln_138205)(FILE* f_138209, NimStringDesc** x_138213, NI x_138213Len0);
STRING_LITERAL(TMP707, "", 0);
STRING_LITERAL(TMP1394, "_", 1);
STRING_LITERAL(TMP1395, "\012", 1);
static NIM_CONST TY90161 TMP1396 = {
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 TY90161 TMP1397 = {
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 TY90161 TMP1398 = {
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 TY90161 TMP1399 = {
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(TMP1400, "\'f", 2);
STRING_LITERAL(TMP1401, "\'i", 2);
STRING_LITERAL(TMP1402, "\'", 1);
STRING_LITERAL(TMP1404, "getNumber", 9);
STRING_LITERAL(TMP1406, " (\\", 3);
STRING_LITERAL(TMP1412, "tkInvalid", 9);
STRING_LITERAL(TMP1413, "[EOF]", 5);
STRING_LITERAL(TMP1414, "tkSymbol", 8);
STRING_LITERAL(TMP1415, "addr", 4);
STRING_LITERAL(TMP1416, "and", 3);
STRING_LITERAL(TMP1417, "as", 2);
STRING_LITERAL(TMP1418, "asm", 3);
STRING_LITERAL(TMP1419, "atomic", 6);
STRING_LITERAL(TMP1420, "bind", 4);
STRING_LITERAL(TMP1421, "block", 5);
STRING_LITERAL(TMP1422, "break", 5);
STRING_LITERAL(TMP1423, "case", 4);
STRING_LITERAL(TMP1424, "cast", 4);
STRING_LITERAL(TMP1425, "const", 5);
STRING_LITERAL(TMP1426, "continue", 8);
STRING_LITERAL(TMP1427, "converter", 9);
STRING_LITERAL(TMP1428, "discard", 7);
STRING_LITERAL(TMP1429, "distinct", 8);
STRING_LITERAL(TMP1430, "div", 3);
STRING_LITERAL(TMP1431, "do", 2);
STRING_LITERAL(TMP1432, "elif", 4);
STRING_LITERAL(TMP1433, "else", 4);
STRING_LITERAL(TMP1434, "end", 3);
STRING_LITERAL(TMP1435, "enum", 4);
STRING_LITERAL(TMP1436, "except", 6);
STRING_LITERAL(TMP1437, "export", 6);
STRING_LITERAL(TMP1438, "finally", 7);
STRING_LITERAL(TMP1439, "for", 3);
STRING_LITERAL(TMP1440, "from", 4);
STRING_LITERAL(TMP1441, "generic", 7);
STRING_LITERAL(TMP1442, "if", 2);
STRING_LITERAL(TMP1443, "import", 6);
STRING_LITERAL(TMP1444, "in", 2);
STRING_LITERAL(TMP1445, "include", 7);
STRING_LITERAL(TMP1446, "interface", 9);
STRING_LITERAL(TMP1447, "is", 2);
STRING_LITERAL(TMP1448, "isnot", 5);
STRING_LITERAL(TMP1449, "iterator", 8);
STRING_LITERAL(TMP1450, "lambda", 6);
STRING_LITERAL(TMP1451, "let", 3);
STRING_LITERAL(TMP1452, "macro", 5);
STRING_LITERAL(TMP1453, "method", 6);
STRING_LITERAL(TMP1454, "mixin", 5);
STRING_LITERAL(TMP1455, "mod", 3);
STRING_LITERAL(TMP1456, "nil", 3);
STRING_LITERAL(TMP1457, "not", 3);
STRING_LITERAL(TMP1458, "notin", 5);
STRING_LITERAL(TMP1459, "object", 6);
STRING_LITERAL(TMP1460, "of", 2);
STRING_LITERAL(TMP1461, "or", 2);
STRING_LITERAL(TMP1462, "out", 3);
STRING_LITERAL(TMP1463, "proc", 4);
STRING_LITERAL(TMP1464, "ptr", 3);
STRING_LITERAL(TMP1465, "raise", 5);
STRING_LITERAL(TMP1466, "ref", 3);
STRING_LITERAL(TMP1467, "return", 6);
STRING_LITERAL(TMP1468, "shl", 3);
STRING_LITERAL(TMP1469, "shr", 3);
STRING_LITERAL(TMP1470, "static", 6);
STRING_LITERAL(TMP1471, "template", 8);
STRING_LITERAL(TMP1472, "try", 3);
STRING_LITERAL(TMP1473, "tuple", 5);
STRING_LITERAL(TMP1474, "type", 4);
STRING_LITERAL(TMP1475, "using", 5);
STRING_LITERAL(TMP1476, "var", 3);
STRING_LITERAL(TMP1477, "when", 4);
STRING_LITERAL(TMP1478, "while", 5);
STRING_LITERAL(TMP1479, "with", 4);
STRING_LITERAL(TMP1480, "without", 7);
STRING_LITERAL(TMP1481, "xor", 3);
STRING_LITERAL(TMP1482, "yield", 5);
STRING_LITERAL(TMP1483, "tkIntLit", 8);
STRING_LITERAL(TMP1484, "tkInt8Lit", 9);
STRING_LITERAL(TMP1485, "tkInt16Lit", 10);
STRING_LITERAL(TMP1486, "tkInt32Lit", 10);
STRING_LITERAL(TMP1487, "tkInt64Lit", 10);
STRING_LITERAL(TMP1488, "tkUIntLit", 9);
STRING_LITERAL(TMP1489, "tkUInt8Lit", 10);
STRING_LITERAL(TMP1490, "tkUInt16Lit", 11);
STRING_LITERAL(TMP1491, "tkUInt32Lit", 11);
STRING_LITERAL(TMP1492, "tkUInt64Lit", 11);
STRING_LITERAL(TMP1493, "tkFloatLit", 10);
STRING_LITERAL(TMP1494, "tkFloat32Lit", 12);
STRING_LITERAL(TMP1495, "tkFloat64Lit", 12);
STRING_LITERAL(TMP1496, "tkFloat128Lit", 13);
STRING_LITERAL(TMP1497, "tkStrLit", 8);
STRING_LITERAL(TMP1498, "tkRStrLit", 9);
STRING_LITERAL(TMP1499, "tkTripleStrLit", 14);
STRING_LITERAL(TMP1500, "tkGStrLit", 9);
STRING_LITERAL(TMP1501, "tkGTripleStrLit", 15);
STRING_LITERAL(TMP1502, "tkCharLit", 9);
STRING_LITERAL(TMP1503, "(", 1);
STRING_LITERAL(TMP1504, ")", 1);
STRING_LITERAL(TMP1505, "[", 1);
STRING_LITERAL(TMP1506, "]", 1);
STRING_LITERAL(TMP1507, "{", 1);
STRING_LITERAL(TMP1508, "}", 1);
STRING_LITERAL(TMP1509, "[.", 2);
STRING_LITERAL(TMP1510, ".]", 2);
STRING_LITERAL(TMP1511, "{.", 2);
STRING_LITERAL(TMP1512, ".}", 2);
STRING_LITERAL(TMP1513, "(.", 2);
STRING_LITERAL(TMP1514, ".)", 2);
STRING_LITERAL(TMP1515, ",", 1);
STRING_LITERAL(TMP1516, ";", 1);
STRING_LITERAL(TMP1517, ":", 1);
STRING_LITERAL(TMP1518, "::", 2);
STRING_LITERAL(TMP1519, "=", 1);
STRING_LITERAL(TMP1520, ".", 1);
STRING_LITERAL(TMP1521, "..", 2);
STRING_LITERAL(TMP1522, "tkOpr", 5);
STRING_LITERAL(TMP1523, "tkComment", 9);
STRING_LITERAL(TMP1524, "`", 1);
STRING_LITERAL(TMP1525, "tkSpaces", 8);
STRING_LITERAL(TMP1526, "tkInfixOpr", 10);
STRING_LITERAL(TMP1527, "tkPrefixOpr", 11);
STRING_LITERAL(TMP1528, "tkPostfixOpr", 12);
NIM_CONST TY180165 toktypetostr_180164 = {((NimStringDesc*) &TMP1412),
((NimStringDesc*) &TMP1413),
((NimStringDesc*) &TMP1414),
((NimStringDesc*) &TMP1415),
((NimStringDesc*) &TMP1416),
((NimStringDesc*) &TMP1417),
((NimStringDesc*) &TMP1418),
((NimStringDesc*) &TMP1419),
((NimStringDesc*) &TMP1420),
((NimStringDesc*) &TMP1421),
((NimStringDesc*) &TMP1422),
((NimStringDesc*) &TMP1423),
((NimStringDesc*) &TMP1424),
((NimStringDesc*) &TMP1425),
((NimStringDesc*) &TMP1426),
((NimStringDesc*) &TMP1427),
((NimStringDesc*) &TMP1428),
((NimStringDesc*) &TMP1429),
((NimStringDesc*) &TMP1430),
((NimStringDesc*) &TMP1431),
((NimStringDesc*) &TMP1432),
((NimStringDesc*) &TMP1433),
((NimStringDesc*) &TMP1434),
((NimStringDesc*) &TMP1435),
((NimStringDesc*) &TMP1436),
((NimStringDesc*) &TMP1437),
((NimStringDesc*) &TMP1438),
((NimStringDesc*) &TMP1439),
((NimStringDesc*) &TMP1440),
((NimStringDesc*) &TMP1441),
((NimStringDesc*) &TMP1442),
((NimStringDesc*) &TMP1443),
((NimStringDesc*) &TMP1444),
((NimStringDesc*) &TMP1445),
((NimStringDesc*) &TMP1446),
((NimStringDesc*) &TMP1447),
((NimStringDesc*) &TMP1448),
((NimStringDesc*) &TMP1449),
((NimStringDesc*) &TMP1450),
((NimStringDesc*) &TMP1451),
((NimStringDesc*) &TMP1452),
((NimStringDesc*) &TMP1453),
((NimStringDesc*) &TMP1454),
((NimStringDesc*) &TMP1455),
((NimStringDesc*) &TMP1456),
((NimStringDesc*) &TMP1457),
((NimStringDesc*) &TMP1458),
((NimStringDesc*) &TMP1459),
((NimStringDesc*) &TMP1460),
((NimStringDesc*) &TMP1461),
((NimStringDesc*) &TMP1462),
((NimStringDesc*) &TMP1463),
((NimStringDesc*) &TMP1464),
((NimStringDesc*) &TMP1465),
((NimStringDesc*) &TMP1466),
((NimStringDesc*) &TMP1467),
((NimStringDesc*) &TMP1468),
((NimStringDesc*) &TMP1469),
((NimStringDesc*) &TMP1470),
((NimStringDesc*) &TMP1471),
((NimStringDesc*) &TMP1472),
((NimStringDesc*) &TMP1473),
((NimStringDesc*) &TMP1474),
((NimStringDesc*) &TMP1475),
((NimStringDesc*) &TMP1476),
((NimStringDesc*) &TMP1477),
((NimStringDesc*) &TMP1478),
((NimStringDesc*) &TMP1479),
((NimStringDesc*) &TMP1480),
((NimStringDesc*) &TMP1481),
((NimStringDesc*) &TMP1482),
((NimStringDesc*) &TMP1483),
((NimStringDesc*) &TMP1484),
((NimStringDesc*) &TMP1485),
((NimStringDesc*) &TMP1486),
((NimStringDesc*) &TMP1487),
((NimStringDesc*) &TMP1488),
((NimStringDesc*) &TMP1489),
((NimStringDesc*) &TMP1490),
((NimStringDesc*) &TMP1491),
((NimStringDesc*) &TMP1492),
((NimStringDesc*) &TMP1493),
((NimStringDesc*) &TMP1494),
((NimStringDesc*) &TMP1495),
((NimStringDesc*) &TMP1496),
((NimStringDesc*) &TMP1497),
((NimStringDesc*) &TMP1498),
((NimStringDesc*) &TMP1499),
((NimStringDesc*) &TMP1500),
((NimStringDesc*) &TMP1501),
((NimStringDesc*) &TMP1502),
((NimStringDesc*) &TMP1503),
((NimStringDesc*) &TMP1504),
((NimStringDesc*) &TMP1505),
((NimStringDesc*) &TMP1506),
((NimStringDesc*) &TMP1507),
((NimStringDesc*) &TMP1508),
((NimStringDesc*) &TMP1509),
((NimStringDesc*) &TMP1510),
((NimStringDesc*) &TMP1511),
((NimStringDesc*) &TMP1512),
((NimStringDesc*) &TMP1513),
((NimStringDesc*) &TMP1514),
((NimStringDesc*) &TMP1515),
((NimStringDesc*) &TMP1516),
((NimStringDesc*) &TMP1517),
((NimStringDesc*) &TMP1518),
((NimStringDesc*) &TMP1519),
((NimStringDesc*) &TMP1520),
((NimStringDesc*) &TMP1521),
((NimStringDesc*) &TMP1522),
((NimStringDesc*) &TMP1523),
((NimStringDesc*) &TMP1524),
((NimStringDesc*) &TMP1525),
((NimStringDesc*) &TMP1526),
((NimStringDesc*) &TMP1527),
((NimStringDesc*) &TMP1528)}
;
STRING_LITERAL(TMP1529, "tokToStr", 8);
STRING_LITERAL(TMP1560, "keyword ", 8);
STRING_LITERAL(TMP4516, "\011", 1);
STRING_LITERAL(TMP4517, " ", 1);
NI glinescompiled_180197;
tident167019* dummyident_180414;
extern tgcheap43016 gch_43044;
extern TNimType NTI178018; /* TBaseLexer */
TNimType NTI180176; /* TLexer */
extern TNimType NTI112; /* int32 */
extern TNimType NTI106; /* int */
extern TNimType NTI134; /* bool */
extern NU32 gglobaloptions_137111;
extern NimStringDesc* tnl_142593;
extern TSafePoint* exchandler_13039;
extern TNimType NTI2453; /* EInvalidValue */
extern E_Base* currexception_13041;
extern TNimType NTI2445; /* EOverflow */
extern TNimType NTI2463; /* EOutOfRange */
TNimType NTI180174; /* TToken */
TNimType NTI180015; /* TTokType */
extern TNimType NTI167017; /* PIdent */
extern TNimType NTI4289; /* BiggestInt */
extern TNimType NTI4291; /* BiggestFloat */
TNimType NTI180172; /* TNumericalBase */
extern TNimType NTI108; /* int8 */
extern TNimType NTI143; /* string */

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

static N_INLINE(void, rtladdzct_46002)(tcell41090* c) {
	addzct_44418(&gch_43044.Zct, c);
}

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		tcell41090* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_44443(src);
		(*c).Refcount += 8;
	}
	LA3: ;
	{
		tcell41090* c;
		if (!!(((*dest) == NIM_NIL))) goto LA7;
		c = usrtocell_44443((*dest));
		{
			(*c).Refcount -= 8;
			if (!((NU32)((*c).Refcount) < (NU32)(8))) goto LA11;
			rtladdzct_46002(c);
		}
		LA11: ;
	}
	LA7: ;
	(*dest) = src;
}

N_NIMCALL(void, inittoken_180417)(ttoken180174* l) {
	(*l).Toktype = ((NU8) 0);
	(*l).Inumber = 0;
	(*l).Indent = 0;
	(*l).Strongspacea = ((NI8) 0);
	unsureAsgnRef((void**) &(*l).Literal, copyString(((NimStringDesc*) &TMP707)));
	(*l).Fnumber = 0.0;
	(*l).Base = ((NU8) 0);
	unsureAsgnRef((void**) &(*l).Ident, dummyident_180414);
}

N_NIMCALL(void, openlexer_180204)(tlexer180176* lex, NI32 fileidx, tllstream176204* inputstream) {
	openbaselexer_178027(&lex->Sup, inputstream, 8192);
	(*lex).Fileidx = fileidx;
	(*lex).Indentahead = -1;
	(*lex).Currlineindent = 0;
	(*lex).Sup.Linenumber += (*inputstream).Lineoffset;
}

N_NIMCALL(void, openlexer_180238)(tlexer180176* lex, NimStringDesc* filename, tllstream176204* inputstream) {
	NI32 LOC1;
	LOC1 = 0;
	LOC1 = fileinfoidx_163721(filename);
	openlexer_180204(lex, LOC1, inputstream);
}

N_NIMCALL(void, filltoken_180424)(ttoken180174* l) {
	(*l).Toktype = ((NU8) 0);
	(*l).Inumber = 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_180414);
}

N_NIMCALL(void, lexmessagepos_180498)(tlexer180176* l, NU16 msg, NI pos, NimStringDesc* arg) {
	tlineinfo163527 info;
	info = newlineinfo_164069((*l).Fileidx, (*l).Sup.Linenumber, (NI32)(pos - (*l).Sup.Linestart));
	message_165584(info, msg, arg);
}

N_NIMCALL(NimStringDesc*, newstring_181824)(NCSTRING s, NI len) {
	NimStringDesc* result;
	NI i_181850;
	NI HEX3Atmp_181851;
	NI res_181853;
	result = 0;
	result = mnewString(len);
	i_181850 = 0;
	HEX3Atmp_181851 = 0;
	HEX3Atmp_181851 = len - 1;
	res_181853 = 0;
	while (1) {
		if (!(res_181853 <= HEX3Atmp_181851)) goto LA1;
		i_181850 = res_181853;
		result->data[i_181850] = s[i_181850];
		res_181853 += 1;
	} LA1: ;
	return result;
}

N_NIMCALL(NI, handlecrlf_181858)(tlexer180176* l, NI pos) {
	NI result;
	result = 0;
	switch (((NU8)((*l).Sup.Buf[pos]))) {
	case 13:
	{
		NI col_181875;
		col_181875 = getcolnumber_178045(&(*l).Sup, pos);
		{
			if (!(80 < col_181875)) goto LA4;
			lexmessagepos_180498(l, ((NU16) 259), pos, ((NimStringDesc*) &TMP707));
		}
		LA4: ;
		{
			NI linestart_181877;
			NimStringDesc* line_181879;
			if (!((gglobaloptions_137111 &(1<<((((NU8) 31))&31)))!=0)) goto LA8;
			linestart_181877 = (NI32)(((NI) ((*l).Sup.Buf)) + (*l).Sup.Linestart);
			line_181879 = newstring_181824(((NCSTRING) (linestart_181877)), col_181875);
			addsourceline_165634((*l).Fileidx, line_181879);
		}
		LA8: ;
		result = handlecr_178050(&l->Sup, pos);
	}
	break;
	case 10:
	{
		NI col_181896;
		col_181896 = getcolnumber_178045(&(*l).Sup, pos);
		{
			if (!(80 < col_181896)) goto LA13;
			lexmessagepos_180498(l, ((NU16) 259), pos, ((NimStringDesc*) &TMP707));
		}
		LA13: ;
		{
			NI linestart_181898;
			NimStringDesc* line_181900;
			if (!((gglobaloptions_137111 &(1<<((((NU8) 31))&31)))!=0)) goto LA17;
			linestart_181898 = (NI32)(((NI) ((*l).Sup.Buf)) + (*l).Sup.Linestart);
			line_181900 = newstring_181824(((NCSTRING) (linestart_181898)), col_181896);
			addsourceline_165634((*l).Fileidx, line_181900);
		}
		LA17: ;
		result = handlelf_178056(&l->Sup, pos);
	}
	break;
	default:
	{
		result = pos;
	}
	break;
	}
	return result;
}

N_NIMCALL(void, skip_182498)(tlexer180176* l, ttoken180174* 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_180498(l, ((NU16) 11), pos, ((NimStringDesc*) &TMP707));
			pos += 1;
		}
		break;
		case 13:
		case 10:
		{
			NI indent;
			pos = handlecrlf_181858(l, pos);
			buf = (*l).Sup.Buf;
			indent = 0;
			while (1) {
				if (!((NU8)(buf[pos]) == (NU8)(32))) goto LA5;
				pos += 1;
				indent += 1;
			} LA5: ;
			(*tok).Strongspacea = ((NI8) 0);
			{
				if (!((NU8)(32) < (NU8)(buf[pos]))) goto LA8;
				(*tok).Indent = indent;
				(*l).Currlineindent = indent;
				goto LA1;
			}
			LA8: ;
		}
		break;
		default:
		{
			goto LA1;
		}
		break;
		}
	} LA1: ;
	(*l).Sup.Bufpos = pos;
}

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

N_NIMCALL(tlineinfo163527, getlineinfo_180485)(tlexer180176* l) {
	tlineinfo163527 result;
	NI LOC1;
	memset((void*)&result, 0, sizeof(result));
	LOC1 = 0;
	LOC1 = getcolnumber_178045(&(*l).Sup, (*l).Sup.Bufpos);
	result = newlineinfo_164069((*l).Fileidx, (*l).Sup.Linenumber, LOC1);
	return result;
}

N_NIMCALL(void, lexmessage_180246)(tlexer180176* l, NU16 msg, NimStringDesc* arg) {
	tlineinfo163527 LOC1;
	LOC1 = getlineinfo_180485(l);
	message_165584(LOC1, msg, arg);
}

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

N_NIMCALL(void, getsymbol_182118)(tlexer180176* l, ttoken180174* 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_119015(h, ((NI) (((NU8)(c)))));
		}
		break;
		case 65 ... 90:
		{
			c = ((NIM_CHAR) (((NI) ((NI32)(((NI) (((NU8)(c)))) + 32)))));
			h = HEX21HEX26_119015(h, ((NI) (((NU8)(c)))));
		}
		break;
		case 95:
		{
			{
				if (!!((((NU8)(buf[(NI32)(pos + 1)])) >= ((NU8)(97)) && ((NU8)(buf[(NI32)(pos + 1)])) <= ((NU8)(122)) || ((NU8)(buf[(NI32)(pos + 1)])) >= ((NU8)(65)) && ((NU8)(buf[(NI32)(pos + 1)])) <= ((NU8)(90)) || ((NU8)(buf[(NI32)(pos + 1)])) >= ((NU8)(48)) && ((NU8)(buf[(NI32)(pos + 1)])) <= ((NU8)(57)) || ((NU8)(buf[(NI32)(pos + 1)])) >= ((NU8)(128)) && ((NU8)(buf[(NI32)(pos + 1)])) <= ((NU8)(255))))) goto LA7;
				lexmessage_180246(&(*l), ((NU16) 12), ((NimStringDesc*) &TMP1394));
				goto LA1;
			}
			LA7: ;
		}
		break;
		default:
		{
			goto LA1;
		}
		break;
		}
		pos += 1;
	} LA1: ;
	h = HEX21HEX24_119040(h);
	unsureAsgnRef((void**) &(*tok).Ident, getident_167250(((NCSTRING) (&(*l).Sup.Buf[(*l).Sup.Bufpos])), (NI32)(pos - (*l).Sup.Bufpos), h));
	(*l).Sup.Bufpos = pos;
	{
		NIM_BOOL LOC12;
		LOC12 = 0;
		LOC12 = ((*(*tok).Ident).Sup.Id < 1);
		if (LOC12) goto LA13;
		LOC12 = (68 < (*(*tok).Ident).Sup.Id);
		LA13: ;
		if (!LOC12) goto LA14;
		(*tok).Toktype = ((NU8) 2);
	}
	goto LA10;
	LA14: ;
	{
		(*tok).Toktype = ((NU8) ((NI32)((*(*tok).Ident).Sup.Id + 2)));
	}
	LA10: ;
}

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

N_NIMCALL(void, scancomment_182370)(tlexer180176* l, ttoken180174* tok) {
	NI pos;
	NCSTRING buf;
	NI col;
	pos = (*l).Sup.Bufpos;
	buf = (*l).Sup.Buf;
	(*tok).Toktype = ((NU8) 111);
	(*tok).Inumber = 0;
	col = getcolnumber_178045(&(*l).Sup, pos);
	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 LA2;
			{
				if (!((NU8)(buf[pos]) == (NU8)(92))) goto LA5;
				lastbackslash = (NI32)(pos + 1);
			}
			LA5: ;
			(*tok).Literal = addChar((*tok).Literal, buf[pos]);
			pos += 1;
		} LA2: ;
		{
			if (!(0 < lastbackslash)) goto LA9;
			while (1) {
				if (!((NU8)(buf[lastbackslash]) == (NU8)(32))) goto LA11;
				lastbackslash += 1;
			} LA11: ;
			{
				if (!!((((NU8)(buf[lastbackslash])) == ((NU8)(13)) || ((NU8)(buf[lastbackslash])) == ((NU8)(10)) || ((NU8)(buf[lastbackslash])) == ((NU8)(0))))) goto LA14;
				lastbackslash = -1;
			}
			LA14: ;
		}
		LA9: ;
		pos = handlecrlf_181858(l, pos);
		buf = (*l).Sup.Buf;
		indent = 0;
		while (1) {
			if (!((NU8)(buf[pos]) == (NU8)(32))) goto LA16;
			pos += 1;
			indent += 1;
		} LA16: ;
		{
			NIM_BOOL LOC19;
			NIM_BOOL LOC21;
			LOC19 = 0;
			LOC19 = ((NU8)(buf[pos]) == (NU8)(35));
			if (!(LOC19)) goto LA20;
			LOC21 = 0;
			LOC21 = (col == indent);
			if (LOC21) goto LA22;
			LOC21 = (0 < lastbackslash);
			LA22: ;
			LOC19 = LOC21;
			LA20: ;
			if (!LOC19) goto LA23;
			(*tok).Literal = resizeString((*tok).Literal, 1);
appendString((*tok).Literal, ((NimStringDesc*) &TMP1395));
			col = indent;
			(*tok).Inumber += 1;
		}
		goto LA17;
		LA23: ;
		{
			{
				if (!((NU8)(32) < (NU8)(buf[pos]))) goto LA28;
				(*l).Indentahead = indent;
			}
			LA28: ;
			goto LA1;
		}
		LA17: ;
	} LA1: ;
	(*l).Sup.Bufpos = pos;
}

static N_INLINE(void, endoperator_182249)(tlexer180176* l, ttoken180174* tok, NI pos, NI hash) {
	NI h;
	h = HEX21HEX24_119040(hash);
	unsureAsgnRef((void**) &(*tok).Ident, getident_167250(((NCSTRING) (&(*l).Sup.Buf[(*l).Sup.Bufpos])), (NI32)(pos - (*l).Sup.Bufpos), h));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*(*tok).Ident).Sup.Id < 69);
		if (LOC3) goto LA4;
		LOC3 = (73 < (*(*tok).Ident).Sup.Id);
		LA4: ;
		if (!LOC3) goto LA5;
		(*tok).Toktype = ((NU8) 110);
	}
	goto LA1;
	LA5: ;
	{
		(*tok).Toktype = ((NU8) ((NI32)((NI32)((*(*tok).Ident).Sup.Id - 69) + 105)));
	}
	LA1: ;
	(*l).Sup.Bufpos = pos;
}

N_NIMCALL(void, getoperator_182272)(tlexer180176* l, ttoken180174* 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 (!!(((TMP1396[((NU8)(c))/8] &(1<<(((NU8)(c))%8)))!=0))) goto LA4;
			goto LA1;
		}
		LA4: ;
		h = HEX21HEX26_119015(h, ((NI) (((NU8)(c)))));
		pos += 1;
	} LA1: ;
	endoperator_182249(l, tok, pos, h);
	(*tok).Strongspaceb = ((NI8) 0);
	while (1) {
		if (!((NU8)(buf[pos]) == (NU8)(32))) goto LA6;
		pos += 1;
		(*tok).Strongspaceb += 1;
	} LA6: ;
	{
		if (!(((NU8)(buf[pos])) == ((NU8)(13)) || ((NU8)(buf[pos])) == ((NU8)(10)) || ((NU8)(buf[pos])) == ((NU8)(0)))) goto LA9;
		(*tok).Strongspaceb = ((NI8) -1);
	}
	LA9: ;
}

N_NIMCALL(void, handlehexchar_181425)(tlexer180176* l, NI* xi) {
	switch (((NU8)((*l).Sup.Buf[(*l).Sup.Bufpos]))) {
	case 48 ... 57:
	{
		(*xi) = (NI)((NI)((NU32)((*xi)) << (NU32)(4)) | ((NI) ((NI32)(((NI) (((NU8)((*l).Sup.Buf[(*l).Sup.Bufpos])))) - 48))));
		(*l).Sup.Bufpos += 1;
	}
	break;
	case 97 ... 102:
	{
		(*xi) = (NI)((NI)((NU32)((*xi)) << (NU32)(4)) | ((NI) ((NI32)(((NI) ((NI32)(((NI) (((NU8)((*l).Sup.Buf[(*l).Sup.Bufpos])))) - 97))) + 10))));
		(*l).Sup.Bufpos += 1;
	}
	break;
	case 65 ... 70:
	{
		(*xi) = (NI)((NI)((NU32)((*xi)) << (NU32)(4)) | ((NI) ((NI32)(((NI) ((NI32)(((NI) (((NU8)((*l).Sup.Buf[(*l).Sup.Bufpos])))) - 65))) + 10))));
		(*l).Sup.Bufpos += 1;
	}
	break;
	default:
	{
	}
	break;
	}
}

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

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

N_NIMCALL(void, getescapedchar_181592)(tlexer180176* l, ttoken180174* tok) {
	(*l).Sup.Bufpos += 1;
	switch (((NU8)((*l).Sup.Buf[(*l).Sup.Bufpos]))) {
	case 110:
	case 78:
	{
		{
			if (!((*tok).Toktype == ((NU8) 90))) goto LA4;
			lexmessage_180246(&(*l), ((NU16) 16), ((NimStringDesc*) &TMP707));
		}
		LA4: ;
		(*tok).Literal = resizeString((*tok).Literal, tnl_142593->Sup.len + 0);
appendString((*tok).Literal, tnl_142593);
		(*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_181425(l, &xi);
		handlehexchar_181425(l, &xi);
		(*tok).Literal = addChar((*tok).Literal, ((NIM_CHAR) (((NI) (xi)))));
	}
	break;
	case 48 ... 57:
	{
		NI xi;
		{
			NIM_BOOL LOC20;
			LOC20 = 0;
			LOC20 = matchtwochars_180578(&(*l), 48, TMP1397);
			if (!LOC20) goto LA21;
			lexmessage_180246(&(*l), ((NU16) 231), ((NimStringDesc*) &TMP707));
		}
		LA21: ;
		xi = 0;
		handledecchars_181536(l, &xi);
		{
			if (!(xi <= 255)) goto LA25;
			(*tok).Literal = addChar((*tok).Literal, ((NIM_CHAR) (((NI) (xi)))));
		}
		goto LA23;
		LA25: ;
		{
			lexmessage_180246(&(*l), ((NU16) 8), ((NimStringDesc*) &TMP707));
		}
		LA23: ;
	}
	break;
	default:
	{
		lexmessage_180246(&(*l), ((NU16) 8), ((NimStringDesc*) &TMP707));
	}
	break;
	}
}

N_NIMCALL(void, getstring_181922)(tlexer180176* l, ttoken180174* tok, NIM_BOOL rawmode) {
	NI pos;
	NCSTRING buf;
	NI line;
	pos = (NI32)((*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[(NI32)(pos + 1)]) == (NU8)(34));
		LA4: ;
		if (!LOC3) goto LA5;
		(*tok).Toktype = ((NU8) 87);
		pos += 2;
		pos = handlecrlf_181858(l, pos);
		buf = (*l).Sup.Buf;
		while (1) {
			switch (((NU8)(buf[pos]))) {
			case 34:
			{
				{
					NIM_BOOL LOC11;
					NIM_BOOL LOC12;
					LOC11 = 0;
					LOC12 = 0;
					LOC12 = ((NU8)(buf[(NI32)(pos + 1)]) == (NU8)(34));
					if (!(LOC12)) goto LA13;
					LOC12 = ((NU8)(buf[(NI32)(pos + 2)]) == (NU8)(34));
					LA13: ;
					LOC11 = LOC12;
					if (!(LOC11)) goto LA14;
					LOC11 = !(((NU8)(buf[(NI32)(pos + 3)]) == (NU8)(34)));
					LA14: ;
					if (!LOC11) goto LA15;
					(*l).Sup.Bufpos = (NI32)(pos + 3);
					goto LA7;
				}
				LA15: ;
				(*tok).Literal = addChar((*tok).Literal, 34);
				pos += 1;
			}
			break;
			case 13:
			case 10:
			{
				pos = handlecrlf_181858(l, pos);
				buf = (*l).Sup.Buf;
				(*tok).Literal = resizeString((*tok).Literal, tnl_142593->Sup.len + 0);
appendString((*tok).Literal, tnl_142593);
			}
			break;
			case 0:
			{
				NI line2;
				line2 = (*l).Sup.Linenumber;
				(*l).Sup.Linenumber = line;
				lexmessagepos_180498(l, ((NU16) 9), (*l).Sup.Linestart, ((NimStringDesc*) &TMP707));
				(*l).Sup.Linenumber = line2;
				goto LA7;
			}
			break;
			default:
			{
				(*tok).Literal = addChar((*tok).Literal, buf[pos]);
				pos += 1;
			}
			break;
			}
		} LA7: ;
	}
	goto LA1;
	LA5: ;
	{
		{
			if (!rawmode) goto LA23;
			(*tok).Toktype = ((NU8) 86);
		}
		goto LA21;
		LA23: ;
		{
			(*tok).Toktype = ((NU8) 85);
		}
		LA21: ;
		while (1) {
			NIM_CHAR c;
			c = buf[pos];
			{
				if (!((NU8)(c) == (NU8)(34))) goto LA29;
				{
					NIM_BOOL LOC33;
					LOC33 = 0;
					LOC33 = rawmode;
					if (!(LOC33)) goto LA34;
					LOC33 = ((NU8)(buf[(NI32)(pos + 1)]) == (NU8)(34));
					LA34: ;
					if (!LOC33) goto LA35;
					pos += 2;
					(*tok).Literal = addChar((*tok).Literal, 34);
				}
				goto LA31;
				LA35: ;
				{
					pos += 1;
					goto LA26;
				}
				LA31: ;
			}
			goto LA27;
			LA29: ;
			{
				if (!(((NU8)(c)) == ((NU8)(13)) || ((NU8)(c)) == ((NU8)(10)) || ((NU8)(c)) == ((NU8)(0)))) goto LA39;
				lexmessage_180246(&(*l), ((NU16) 10), ((NimStringDesc*) &TMP707));
				goto LA26;
			}
			goto LA27;
			LA39: ;
			{
				NIM_BOOL LOC42;
				LOC42 = 0;
				LOC42 = ((NU8)(c) == (NU8)(92));
				if (!(LOC42)) goto LA43;
				LOC42 = !(rawmode);
				LA43: ;
				if (!LOC42) goto LA44;
				(*l).Sup.Bufpos = pos;
				getescapedchar_181592(l, tok);
				pos = (*l).Sup.Bufpos;
			}
			goto LA27;
			LA44: ;
			{
				(*tok).Literal = addChar((*tok).Literal, c);
				pos += 1;
			}
			LA27: ;
		} LA26: ;
		(*l).Sup.Bufpos = pos;
	}
	LA1: ;
}

N_NIMCALL(void, getcharacter_182048)(tlexer180176* l, ttoken180174* tok) {
	NIM_CHAR c;
	(*l).Sup.Bufpos += 1;
	c = (*l).Sup.Buf[(*l).Sup.Bufpos];
	switch (((NU8)(c))) {
	case 0 ... 31:
	case 39:
	{
		lexmessage_180246(&(*l), ((NU16) 8), ((NimStringDesc*) &TMP707));
	}
	break;
	case 92:
	{
		getescapedchar_181592(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_180246(&(*l), ((NU16) 18), ((NimStringDesc*) &TMP707));
	}
	LA6: ;
	(*l).Sup.Bufpos += 1;
}

N_NIMCALL(void, matchunderscorechars_180508)(tlexer180176* l, ttoken180174* tok, TY90161 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 LA4;
			(*tok).Literal = addChar((*tok).Literal, buf[pos]);
			pos += 1;
		}
		goto LA2;
		LA4: ;
		{
			goto LA1;
		}
		LA2: ;
		{
			if (!((NU8)(buf[pos]) == (NU8)(95))) goto LA9;
			{
				if (!!(((chars[((NU8)(buf[(NI32)(pos + 1)]))/8] &(1<<(((NU8)(buf[(NI32)(pos + 1)]))%8)))!=0))) goto LA13;
				lexmessage_180246(&(*l), ((NU16) 12), ((NimStringDesc*) &TMP1394));
				goto LA1;
			}
			LA13: ;
			(*tok).Literal = addChar((*tok).Literal, 95);
			pos += 1;
		}
		LA9: ;
	} LA1: ;
	(*l).Sup.Bufpos = pos;
}

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

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

N_NIMCALL(NIM_BOOL, isfloatliteral_180599)(NimStringDesc* s) {
	NIM_BOOL result;
	NI i_180615;
	NI HEX3Atmp_180630;
	NI res_180632;
	result = 0;
	i_180615 = 0;
	HEX3Atmp_180630 = 0;
	HEX3Atmp_180630 = (NI32)(s->Sup.len - 1);
	res_180632 = 0;
	while (1) {
		if (!(res_180632 <= HEX3Atmp_180630)) goto LA1;
		i_180615 = res_180632;
		{
			if (!(((NU8)(s->data[i_180615])) == ((NU8)(46)) || ((NU8)(s->data[i_180615])) == ((NU8)(101)) || ((NU8)(s->data[i_180615])) == ((NU8)(69)))) goto LA4;
			result = NIM_TRUE;
			goto BeforeRet;
		}
		LA4: ;
		res_180632 += 1;
	} LA1: ;
	result = NIM_FALSE;
	BeforeRet: ;
	return result;
}

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

static N_INLINE(E_Base*, getCurrentException)(void) {
	E_Base* result;
	result = 0;
	result = currexception_13041;
	return result;
}

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

static N_INLINE(void, rtladdcycleroot_45235)(tcell41090* c) {
	{
		if (!!((((NI) ((NI)((*c).Refcount & 3))) == 3))) goto LA3;
		(*c).Refcount = (NI)((NI)((*c).Refcount & -4) | 3);
		incl_41855(&gch_43044.Cycleroots, c);
	}
	LA3: ;
}

static N_INLINE(void, incref_46827)(tcell41090* c) {
	(*c).Refcount = (NI)((NU32)((*c).Refcount) + (NU32)(8));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = canbecycleroot_44462(c);
		if (!LOC3) goto LA4;
		rtladdcycleroot_45235(c);
	}
	LA4: ;
}

static N_INLINE(void, decref_46402)(tcell41090* c) {
	{
		(*c).Refcount -= 8;
		if (!((NU32)((*c).Refcount) < (NU32)(8))) goto LA3;
		rtladdzct_46002(c);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = canbecycleroot_44462(c);
		if (!LOC6) goto LA7;
		rtladdcycleroot_45235(c);
	}
	goto LA1;
	LA7: ;
	LA1: ;
}

static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		tcell41090* LOC5;
		if (!!((src == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = usrtocell_44443(src);
		incref_46827(LOC5);
	}
	LA3: ;
	{
		tcell41090* LOC10;
		if (!!(((*dest) == NIM_NIL))) goto LA8;
		LOC10 = 0;
		LOC10 = usrtocell_44443((*dest));
		decref_46402(LOC10);
	}
	LA8: ;
	(*dest) = src;
}

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

N_NIMCALL(void, getnumber_180637)(tlexer180176* l, ttoken180174* Result) {
	NI pos;
	NI endpos;
	NI64 xi;
	NIM_BOOL eallowed;
	TSafePoint TMP1403;
	pos = 0;
	endpos = 0;
	xi = 0;
	(*Result).Toktype = ((NU8) 71);
	unsureAsgnRef((void**) &(*Result).Literal, copyString(((NimStringDesc*) &TMP707)));
	(*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[(NI32)(pos + 1)])) == ((NU8)(88)) || ((NU8)((*l).Sup.Buf[(NI32)(pos + 1)])) == ((NU8)(120)));
		LA4: ;
		if (!LOC3) goto LA5;
		matchunderscorechars_180508(l, Result, TMP1398);
	}
	goto LA1;
	LA5: ;
	{
		matchunderscorechars_180508(l, Result, TMP1399);
		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[(NI32)((*l).Sup.Bufpos + 1)])) >= ((NU8)(48)) && ((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos + 1)])) <= ((NU8)(57)));
		LA11: ;
		if (!LOC10) goto LA12;
		(*Result).Literal = addChar((*Result).Literal, 46);
		(*l).Sup.Bufpos += 1;
		matchunderscorechars_180508(l, Result, TMP1397);
		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_180508(l, Result, TMP1397);
	}
	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[(NI32)(endpos + 1)]) == (NU8)(50));
				LA36: ;
				if (!LOC35) goto LA37;
				(*Result).Toktype = ((NU8) 82);
				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[(NI32)(endpos + 1)]) == (NU8)(52));
				LA41: ;
				if (!LOC40) goto LA42;
				(*Result).Toktype = ((NU8) 83);
				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[(NI32)(endpos + 1)]) == (NU8)(50));
				LA47: ;
				LOC45 = LOC46;
				if (!(LOC45)) goto LA48;
				LOC45 = ((NU8)((*l).Sup.Buf[(NI32)(endpos + 2)]) == (NU8)(56));
				LA48: ;
				if (!LOC45) goto LA49;
				(*Result).Toktype = ((NU8) 84);
				endpos += 3;
			}
			goto LA33;
			LA49: ;
			{
				NimStringDesc* LOC52;
				LOC52 = 0;
				LOC52 = rawNewString((*Result).Literal->Sup.len + 3);
appendString(LOC52, (*Result).Literal);
appendString(LOC52, ((NimStringDesc*) &TMP1400));
appendChar(LOC52, (*l).Sup.Buf[endpos]);
				lexmessage_180246(&(*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[(NI32)(endpos + 1)]) == (NU8)(52));
				LA57: ;
				if (!LOC56) goto LA58;
				(*Result).Toktype = ((NU8) 75);
				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[(NI32)(endpos + 1)]) == (NU8)(50));
				LA62: ;
				if (!LOC61) goto LA63;
				(*Result).Toktype = ((NU8) 74);
				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[(NI32)(endpos + 1)]) == (NU8)(54));
				LA67: ;
				if (!LOC66) goto LA68;
				(*Result).Toktype = ((NU8) 73);
				endpos += 2;
			}
			goto LA54;
			LA68: ;
			{
				if (!((NU8)((*l).Sup.Buf[endpos]) == (NU8)(56))) goto LA71;
				(*Result).Toktype = ((NU8) 72);
				endpos += 1;
			}
			goto LA54;
			LA71: ;
			{
				NimStringDesc* LOC74;
				LOC74 = 0;
				LOC74 = rawNewString((*Result).Literal->Sup.len + 3);
appendString(LOC74, (*Result).Literal);
appendString(LOC74, ((NimStringDesc*) &TMP1401));
appendChar(LOC74, (*l).Sup.Buf[endpos]);
				lexmessage_180246(&(*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[(NI32)(endpos + 1)]) == (NU8)(52));
				LA79: ;
				if (!LOC78) goto LA80;
				(*Result).Toktype = ((NU8) 80);
				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[(NI32)(endpos + 1)]) == (NU8)(50));
				LA84: ;
				if (!LOC83) goto LA85;
				(*Result).Toktype = ((NU8) 79);
				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[(NI32)(endpos + 1)]) == (NU8)(54));
				LA89: ;
				if (!LOC88) goto LA90;
				(*Result).Toktype = ((NU8) 78);
				endpos += 2;
			}
			goto LA76;
			LA90: ;
			{
				if (!((NU8)((*l).Sup.Buf[endpos]) == (NU8)(56))) goto LA93;
				(*Result).Toktype = ((NU8) 77);
				endpos += 1;
			}
			goto LA76;
			LA93: ;
			{
				(*Result).Toktype = ((NU8) 76);
			}
			LA76: ;
		}
		break;
		default:
		{
			NimStringDesc* LOC97;
			LOC97 = 0;
			LOC97 = rawNewString((*Result).Literal->Sup.len + 2);
appendString(LOC97, (*Result).Literal);
appendString(LOC97, ((NimStringDesc*) &TMP1402));
appendChar(LOC97, (*l).Sup.Buf[endpos]);
			lexmessage_180246(&(*l), ((NU16) 14), LOC97);
		}
		break;
		}
	}
	goto LA24;
	LA26: ;
	{
		(*l).Sup.Bufpos = pos;
	}
	LA24: ;
	pushSafePoint(&TMP1403);
	TMP1403.status = setjmp(TMP1403.context);
	if (TMP1403.status == 0) {
		{
			NIM_BOOL LOC102;
			LOC102 = 0;
			LOC102 = ((NU8)((*l).Sup.Buf[pos]) == (NU8)(48));
			if (!(LOC102)) goto LA103;
			LOC102 = (((NU8)((*l).Sup.Buf[(NI32)(pos + 1)])) == ((NU8)(120)) || ((NU8)((*l).Sup.Buf[(NI32)(pos + 1)])) == ((NU8)(88)) || ((NU8)((*l).Sup.Buf[(NI32)(pos + 1)])) == ((NU8)(98)) || ((NU8)((*l).Sup.Buf[(NI32)(pos + 1)])) == ((NU8)(66)) || ((NU8)((*l).Sup.Buf[(NI32)(pos + 1)])) == ((NU8)(111)) || ((NU8)((*l).Sup.Buf[(NI32)(pos + 1)])) == ((NU8)(79)) || ((NU8)((*l).Sup.Buf[(NI32)(pos + 1)])) == ((NU8)(99)) || ((NU8)((*l).Sup.Buf[(NI32)(pos + 1)])) == ((NU8)(67)));
			LA103: ;
			if (!LOC102) goto LA104;
			pos += 2;
			xi = 0;
			switch (((NU8)((*l).Sup.Buf[(NI32)(pos - 1)]))) {
			case 98:
			case 66:
			{
				(*Result).Base = ((NU8) 1);
				while (1) {
					switch (((NU8)((*l).Sup.Buf[pos]))) {
					case 65 ... 90:
					case 97 ... 122:
					case 50 ... 57:
					case 46:
					{
						lexmessage_180246(&(*l), ((NU16) 14), (*Result).Literal);
						pos += 1;
					}
					break;
					case 95:
					{
						{
							if (!!((((NU8)((*l).Sup.Buf[(NI32)(pos + 1)])) >= ((NU8)(48)) && ((NU8)((*l).Sup.Buf[(NI32)(pos + 1)])) <= ((NU8)(49))))) goto LA112;
							lexmessage_180246(&(*l), ((NU16) 12), ((NimStringDesc*) &TMP1394));
							goto LA107;
						}
						LA112: ;
						pos += 1;
					}
					break;
					case 48:
					case 49:
					{
						xi = (NI64)((NI64)((NU64)(xi) << (NU64)(1)) | ((NI64) ((NI32)(((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 65 ... 90:
					case 97 ... 122:
					case 56 ... 57:
					case 46:
					{
						lexmessage_180246(&(*l), ((NU16) 14), (*Result).Literal);
						pos += 1;
					}
					break;
					case 95:
					{
						{
							if (!!((((NU8)((*l).Sup.Buf[(NI32)(pos + 1)])) >= ((NU8)(48)) && ((NU8)((*l).Sup.Buf[(NI32)(pos + 1)])) <= ((NU8)(55))))) goto LA122;
							lexmessage_180246(&(*l), ((NU16) 12), ((NimStringDesc*) &TMP1394));
							goto LA117;
						}
						LA122: ;
						pos += 1;
					}
					break;
					case 48 ... 55:
					{
						xi = (NI64)((NI64)((NU64)(xi) << (NU64)(3)) | ((NI64) ((NI32)(((NI) (((NU8)((*l).Sup.Buf[pos])))) - 48))));
						pos += 1;
					}
					break;
					default:
					{
						goto LA117;
					}
					break;
					}
				} LA117: ;
			}
			break;
			case 79:
			{
				lexmessage_180246(&(*l), ((NU16) 14), (*Result).Literal);
			}
			break;
			case 120:
			case 88:
			{
				(*Result).Base = ((NU8) 3);
				while (1) {
					switch (((NU8)((*l).Sup.Buf[pos]))) {
					case 71 ... 90:
					case 103 ... 122:
					{
						lexmessage_180246(&(*l), ((NU16) 14), (*Result).Literal);
						pos += 1;
					}
					break;
					case 95:
					{
						{
							if (!!((((NU8)((*l).Sup.Buf[(NI32)(pos + 1)])) >= ((NU8)(48)) && ((NU8)((*l).Sup.Buf[(NI32)(pos + 1)])) <= ((NU8)(57)) || ((NU8)((*l).Sup.Buf[(NI32)(pos + 1)])) >= ((NU8)(97)) && ((NU8)((*l).Sup.Buf[(NI32)(pos + 1)])) <= ((NU8)(102)) || ((NU8)((*l).Sup.Buf[(NI32)(pos + 1)])) >= ((NU8)(65)) && ((NU8)((*l).Sup.Buf[(NI32)(pos + 1)])) <= ((NU8)(70))))) goto LA133;
							lexmessage_180246(&(*l), ((NU16) 12), ((NimStringDesc*) &TMP1394));
							goto LA128;
						}
						LA133: ;
						pos += 1;
					}
					break;
					case 48 ... 57:
					{
						xi = (NI64)((NI64)((NU64)(xi) << (NU64)(4)) | ((NI64) ((NI32)(((NI) (((NU8)((*l).Sup.Buf[pos])))) - 48))));
						pos += 1;
					}
					break;
					case 97 ... 102:
					{
						xi = (NI64)((NI64)((NU64)(xi) << (NU64)(4)) | ((NI64) ((NI32)(((NI) ((NI32)(((NI) (((NU8)((*l).Sup.Buf[pos])))) - 97))) + 10))));
						pos += 1;
					}
					break;
					case 65 ... 70:
					{
						xi = (NI64)((NI64)((NU64)(xi) << (NU64)(4)) | ((NI64) ((NI32)(((NI) ((NI32)(((NI) (((NU8)((*l).Sup.Buf[pos])))) - 65))) + 10))));
						pos += 1;
					}
					break;
					default:
					{
						goto LA128;
					}
					break;
					}
				} LA128: ;
			}
			break;
			default:
			{
				tlineinfo163527 LOC140;
				LOC140 = getlineinfo_180485(&(*l));
				internalerror_165591(LOC140, ((NimStringDesc*) &TMP1404));
			}
			break;
			}
			switch ((*Result).Toktype) {
			case ((NU8) 71):
			case ((NU8) 75):
			{
				(*Result).Inumber = xi;
			}
			break;
			case ((NU8) 72):
			{
				(*Result).Inumber = ((NI64) (((NI8)(NU8)(NU)(((NI) (xi))))));
			}
			break;
			case ((NU8) 73):
			{
				(*Result).Inumber = ((NI64) (((NI16)(NU16)(NU)(((NI) (xi))))));
			}
			break;
			case ((NU8) 74):
			{
				(*Result).Inumber = ((NI64) (((NI32)(NU32)(NU64)(xi))));
			}
			break;
			case ((NU8) 76):
			case ((NU8) 80):
			{
				(*Result).Inumber = xi;
			}
			break;
			case ((NU8) 77):
			{
				(*Result).Inumber = ((NI64) (((NI8)(NU8)(NU)(((NI) (xi))))));
			}
			break;
			case ((NU8) 78):
			{
				(*Result).Inumber = ((NI64) (((NI16)(NU16)(NU)(((NI) (xi))))));
			}
			break;
			case ((NU8) 79):
			{
				(*Result).Inumber = ((NI64) (((NI32)(NU32)(NU64)(xi))));
			}
			break;
			case ((NU8) 82):
			{
				(*Result).Fnumber = ((NF) ((*((NF32*) (&xi)))));
			}
			break;
			case ((NU8) 83):
			{
				(*Result).Fnumber = (*((NF*) (&xi)));
			}
			break;
			default:
			{
				tlineinfo163527 LOC152;
				LOC152 = getlineinfo_180485(&(*l));
				internalerror_165591(LOC152, ((NimStringDesc*) &TMP1404));
			}
			break;
			}
		}
		goto LA100;
		LA104: ;
		{
			NIM_BOOL LOC154;
			NIM_BOOL LOC155;
			LOC154 = 0;
			LOC155 = 0;
			LOC155 = isfloatliteral_180599((*Result).Literal);
			if (LOC155) goto LA156;
			LOC155 = ((*Result).Toktype == ((NU8) 82));
			LA156: ;
			LOC154 = LOC155;
			if (LOC154) goto LA157;
			LOC154 = ((*Result).Toktype == ((NU8) 83));
			LA157: ;
			if (!LOC154) goto LA158;
			(*Result).Fnumber = nsuParseFloat((*Result).Literal);
			{
				if (!((*Result).Toktype == ((NU8) 71))) goto LA162;
				(*Result).Toktype = ((NU8) 81);
			}
			LA162: ;
		}
		goto LA100;
		LA158: ;
		{
			(*Result).Inumber = nsuParseBiggestInt((*Result).Literal);
			{
				NIM_BOOL LOC167;
				LOC167 = 0;
				LOC167 = ((*Result).Inumber < (-2147483647 -1));
				if (LOC167) goto LA168;
				LOC167 = (2147483647 < (*Result).Inumber);
				LA168: ;
				if (!LOC167) goto LA169;
				{
					if (!((*Result).Toktype == ((NU8) 71))) goto LA173;
					(*Result).Toktype = ((NU8) 75);
				}
				goto LA171;
				LA173: ;
				{
					if (!((*Result).Toktype == ((NU8) 72) || (*Result).Toktype == ((NU8) 73))) goto LA176;
					lexmessage_180246(&(*l), ((NU16) 14), (*Result).Literal);
				}
				goto LA171;
				LA176: ;
				LA171: ;
			}
			LA169: ;
		}
		LA100: ;
		popSafePoint();
	}
	else {
		popSafePoint();
		if (isObj(getCurrentException()->Sup.m_type, (&NTI2453))) {
			TMP1403.status = 0;
			lexmessage_180246(&(*l), ((NU16) 14), (*Result).Literal);
			popCurrentException();
		}
		else 		if (isObj(getCurrentException()->Sup.m_type, (&NTI2445))||isObj(getCurrentException()->Sup.m_type, (&NTI2463))) {
			TMP1403.status = 0;
			lexmessage_180246(&(*l), ((NU16) 15), (*Result).Literal);
			popCurrentException();
		}
	}
	if (TMP1403.status != 0) reraiseException();
	(*l).Sup.Bufpos = endpos;
}

N_NIMCALL(void, rawgettok_180211)(tlexer180176* l, ttoken180174* tok) {
	NIM_CHAR c;
	filltoken_180424(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_182498(l, tok);
	c = (*l).Sup.Buf[(*l).Sup.Bufpos];
	(*tok).Line = (*l).Sup.Linenumber;
	(*tok).Col = getcolnumber_178045(&(*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_182118(l, tok);
	}
	goto LA6;
	LA8: ;
	{
		switch (((NU8)(c))) {
		case 35:
		{
			scancomment_182370(l, tok);
		}
		break;
		case 42:
		{
			{
				NIM_BOOL LOC15;
				NI h;
				LOC15 = 0;
				LOC15 = ((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos + 1)]) == (NU8)(58));
				if (!(LOC15)) goto LA16;
				LOC15 = !(((TMP1396[((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos + 2)]))/8] &(1<<(((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos + 2)]))%8)))!=0));
				LA16: ;
				if (!LOC15) goto LA17;
				h = HEX21HEX26_119015(0, 42);
				endoperator_182249(l, tok, (NI32)((*l).Sup.Bufpos + 1), h);
			}
			goto LA13;
			LA17: ;
			{
				getoperator_182272(l, tok);
			}
			LA13: ;
		}
		break;
		case 44:
		{
			(*tok).Toktype = ((NU8) 103);
			(*l).Sup.Bufpos += 1;
		}
		break;
		case 108:
		{
			{
				if (!!((((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos + 1)])) >= ((NU8)(48)) && ((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos + 1)])) <= ((NU8)(57)) || ((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos + 1)])) >= ((NU8)(65)) && ((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos + 1)])) <= ((NU8)(90)) || ((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos + 1)])) == ((NU8)(95)) || ((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos + 1)])) >= ((NU8)(97)) && ((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos + 1)])) <= ((NU8)(122)) || ((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos + 1)])) >= ((NU8)(128)) && ((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos + 1)])) <= ((NU8)(255))))) goto LA24;
				lexmessage_180246(&(*l), ((NU16) 236), ((NimStringDesc*) &TMP707));
			}
			LA24: ;
			getsymbol_182118(l, tok);
		}
		break;
		case 114:
		case 82:
		{
			{
				if (!((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos + 1)]) == (NU8)(34))) goto LA29;
				(*l).Sup.Bufpos += 1;
				getstring_181922(l, tok, NIM_TRUE);
			}
			goto LA27;
			LA29: ;
			{
				getsymbol_182118(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[(NI32)((*l).Sup.Bufpos + 1)]) == (NU8)(46)));
				LA36: ;
				if (!LOC35) goto LA37;
				(*tok).Toktype = ((NU8) 101);
				(*l).Sup.Bufpos += 1;
			}
			goto LA33;
			LA37: ;
			{
				(*tok).Toktype = ((NU8) 91);
			}
			LA33: ;
		}
		break;
		case 41:
		{
			(*tok).Toktype = ((NU8) 92);
			(*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[(NI32)((*l).Sup.Bufpos + 1)]) == (NU8)(46)));
				LA45: ;
				if (!LOC44) goto LA46;
				(*tok).Toktype = ((NU8) 97);
				(*l).Sup.Bufpos += 1;
			}
			goto LA42;
			LA46: ;
			{
				(*tok).Toktype = ((NU8) 93);
			}
			LA42: ;
		}
		break;
		case 93:
		{
			(*tok).Toktype = ((NU8) 94);
			(*l).Sup.Bufpos += 1;
		}
		break;
		case 46:
		{
			{
				if (!((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos + 1)]) == (NU8)(93))) goto LA53;
				(*tok).Toktype = ((NU8) 98);
				(*l).Sup.Bufpos += 2;
			}
			goto LA51;
			LA53: ;
			{
				if (!((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos + 1)]) == (NU8)(125))) goto LA56;
				(*tok).Toktype = ((NU8) 100);
				(*l).Sup.Bufpos += 2;
			}
			goto LA51;
			LA56: ;
			{
				if (!((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos + 1)]) == (NU8)(41))) goto LA59;
				(*tok).Toktype = ((NU8) 102);
				(*l).Sup.Bufpos += 2;
			}
			goto LA51;
			LA59: ;
			{
				getoperator_182272(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[(NI32)((*l).Sup.Bufpos + 1)]) == (NU8)(46)));
				LA66: ;
				if (!LOC65) goto LA67;
				(*tok).Toktype = ((NU8) 99);
				(*l).Sup.Bufpos += 1;
			}
			goto LA63;
			LA67: ;
			{
				(*tok).Toktype = ((NU8) 95);
			}
			LA63: ;
		}
		break;
		case 125:
		{
			(*tok).Toktype = ((NU8) 96);
			(*l).Sup.Bufpos += 1;
		}
		break;
		case 59:
		{
			(*tok).Toktype = ((NU8) 104);
			(*l).Sup.Bufpos += 1;
		}
		break;
		case 96:
		{
			(*tok).Toktype = ((NU8) 112);
			(*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[(NI32)((*l).Sup.Bufpos - 1)])) >= ((NU8)(97)) && ((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos - 1)])) <= ((NU8)(122)) || ((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos - 1)])) >= ((NU8)(65)) && ((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos - 1)])) <= ((NU8)(90)) || ((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos - 1)])) >= ((NU8)(48)) && ((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos - 1)])) <= ((NU8)(57)) || ((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos - 1)])) >= ((NU8)(128)) && ((NU8)((*l).Sup.Buf[(NI32)((*l).Sup.Bufpos - 1)])) <= ((NU8)(255)));
			LA75: ;
			rawmode = LOC74;
			getstring_181922(l, tok, rawmode);
			{
				if (!rawmode) goto LA78;
				(*tok).Toktype += 2;
			}
			LA78: ;
		}
		break;
		case 39:
		{
			(*tok).Toktype = ((NU8) 90);
			getcharacter_182048(l, tok);
			(*tok).Toktype = ((NU8) 90);
		}
		break;
		case 48 ... 57:
		{
			getnumber_180637(l, &(*tok));
		}
		break;
		default:
		{
			{
				if (!((TMP1396[((NU8)(c))/8] &(1<<(((NU8)(c))%8)))!=0)) goto LA85;
				getoperator_182272(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*) &TMP1406));
appendString(LOC91, LOC92);
appendChar(LOC91, 41);
				lexmessage_180246(&(*l), ((NU16) 12), LOC91);
				(*l).Sup.Bufpos += 1;
			}
			LA83: ;
		}
		break;
		}
	}
	LA6: ;
}

N_NIMCALL(NimStringDesc*, toktostr_180234)(ttoken180174* tok) {
	NimStringDesc* result;
	result = 0;
	switch ((*tok).Toktype) {
	case ((NU8) 71) ... ((NU8) 75):
	{
		result = nimInt64ToStr((*tok).Inumber);
	}
	break;
	case ((NU8) 81) ... ((NU8) 83):
	{
		result = nimFloatToStr((*tok).Fnumber);
	}
	break;
	case ((NU8) 0):
	case ((NU8) 85) ... ((NU8) 90):
	case ((NU8) 111):
	{
		result = copyString((*tok).Literal);
	}
	break;
	case ((NU8) 91) ... ((NU8) 105):
	case ((NU8) 1):
	case ((NU8) 112):
	{
		result = copyString(toktypetostr_180164[((*tok).Toktype)- 0]);
	}
	break;
	default:
	{
		{
			if (!!(((*tok).Ident == NIM_NIL))) goto LA8;
			result = copyString((*(*tok).Ident).S);
		}
		goto LA6;
		LA8: ;
		{
			internalerror_165606(((NimStringDesc*) &TMP1529));
			result = copyString(((NimStringDesc*) &TMP707));
		}
		LA6: ;
	}
	break;
	}
	return result;
}

N_NIMCALL(void, closelexer_180225)(tlexer180176* lex) {
	glinescompiled_180197 += (*lex).Sup.Linenumber;
	closebaselexer_178035(&lex->Sup);
}

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

N_NIMCALL(NimStringDesc*, prettytok_180379)(ttoken180174* tok) {
	NimStringDesc* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC6;
		LOC3 = 0;
		LOC3 = iskeyword_180200((*tok).Toktype);
		if (!LOC3) goto LA4;
		LOC6 = 0;
		LOC6 = rawNewString((*(*tok).Ident).S->Sup.len + 8);
appendString(LOC6, ((NimStringDesc*) &TMP1560));
appendString(LOC6, (*(*tok).Ident).S);
		result = LOC6;
	}
	goto LA1;
	LA4: ;
	{
		result = toktostr_180234(tok);
	}
	LA1: ;
	return result;
}

N_NIMCALL(NIM_BOOL, isnimrodidentifier_180276)(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 LA5;
			{
				if (!((NU8)(s->data[i]) == (NU8)(95))) goto LA8;
				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 LA12;
					goto BeforeRet;
				}
				LA12: ;
			}
			LA8: ;
			{
				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 LA16;
				goto BeforeRet;
			}
			LA16: ;
			i += 1;
		} LA5: ;
		result = NIM_TRUE;
	}
	LA3: ;
	BeforeRet: ;
	return result;
}

static N_INLINE(void, writeln_138205)(FILE* f_138209, NimStringDesc** x_138213, NI x_138213Len0) {
	NimStringDesc* i_138226;
	NI i_138232;
	i_138226 = 0;
	i_138232 = 0;
	while (1) {
		if (!(i_138232 < x_138213Len0)) goto LA1;
		i_138226 = x_138213[i_138232];
		write_10463(f_138209, i_138226);
		i_138232 += 1;
	} LA1: ;
	write_10463(f_138209, ((NimStringDesc*) &TMP1395));
}

N_NIMCALL(void, printtok_180230)(ttoken180174* tok) {
	TY165283 LOC1;
	TY165002 LOC2;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = nimIntToStr((*tok).Line);
	LOC1[1] = copyString(((NimStringDesc*) &TMP1517));
	LOC1[2] = nimIntToStr((*tok).Col);
	LOC1[3] = copyString(((NimStringDesc*) &TMP4516));
	write_10479(stdout, LOC1, 4);
	write_10463(stdout, toktypetostr_180164[((*tok).Toktype)- 0]);
	write_10463(stdout, ((NimStringDesc*) &TMP4517));
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = toktostr_180234(tok);
	writeln_138205(stdout, LOC2, 1);
}
N_NOINLINE(void, lexerInit)(void) {
	asgnRefNoCycle((void**) &dummyident_180414, getident_167456(((NimStringDesc*) &TMP707)));
}

N_NOINLINE(void, lexerDatInit)(void) {
static TNimNode* TMP1388[4];
static TNimNode* TMP1551[11];
static TNimNode* TMP1552[117];
NI TMP1554;
static char* NIM_CONST TMP1553[117] = {
"tkInvalid", 
"tkEof", 
"tkSymbol", 
"tkAddr", 
"tkAnd", 
"tkAs", 
"tkAsm", 
"tkAtomic", 
"tkBind", 
"tkBlock", 
"tkBreak", 
"tkCase", 
"tkCast", 
"tkConst", 
"tkContinue", 
"tkConverter", 
"tkDiscard", 
"tkDistinct", 
"tkDiv", 
"tkDo", 
"tkElif", 
"tkElse", 
"tkEnd", 
"tkEnum", 
"tkExcept", 
"tkExport", 
"tkFinally", 
"tkFor", 
"tkFrom", 
"tkGeneric", 
"tkIf", 
"tkImport", 
"tkIn", 
"tkInclude", 
"tkInterface", 
"tkIs", 
"tkIsnot", 
"tkIterator", 
"tkLambda", 
"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* TMP1555[4];
NI TMP1557;
static char* NIM_CONST TMP1556[4] = {
"base10", 
"base2", 
"base8", 
"base16"};
static TNimNode TMP701[140];
NTI180176.size = sizeof(tlexer180176);
NTI180176.kind = 17;
NTI180176.base = (&NTI178018);
TMP1388[0] = &TMP701[1];
TMP701[1].kind = 1;
TMP701[1].offset = offsetof(tlexer180176, Fileidx);
TMP701[1].typ = (&NTI112);
TMP701[1].name = "fileIdx";
TMP1388[1] = &TMP701[2];
TMP701[2].kind = 1;
TMP701[2].offset = offsetof(tlexer180176, Indentahead);
TMP701[2].typ = (&NTI106);
TMP701[2].name = "indentAhead";
TMP1388[2] = &TMP701[3];
TMP701[3].kind = 1;
TMP701[3].offset = offsetof(tlexer180176, Currlineindent);
TMP701[3].typ = (&NTI106);
TMP701[3].name = "currLineIndent";
TMP1388[3] = &TMP701[4];
TMP701[4].kind = 1;
TMP701[4].offset = offsetof(tlexer180176, Strongspaces);
TMP701[4].typ = (&NTI134);
TMP701[4].name = "strongSpaces";
TMP701[0].len = 4; TMP701[0].kind = 2; TMP701[0].sons = &TMP1388[0];
NTI180176.node = &TMP701[0];
NTI180174.size = sizeof(ttoken180174);
NTI180174.kind = 18;
NTI180174.base = 0;
NTI180174.flags = 2;
TMP1551[0] = &TMP701[6];
NTI180015.size = sizeof(NU8);
NTI180015.kind = 14;
NTI180015.base = 0;
NTI180015.flags = 3;
for (TMP1554 = 0; TMP1554 < 117; TMP1554++) {
TMP701[TMP1554+7].kind = 1;
TMP701[TMP1554+7].offset = TMP1554;
TMP701[TMP1554+7].name = TMP1553[TMP1554];
TMP1552[TMP1554] = &TMP701[TMP1554+7];
}
TMP701[124].len = 117; TMP701[124].kind = 2; TMP701[124].sons = &TMP1552[0];
NTI180015.node = &TMP701[124];
TMP701[6].kind = 1;
TMP701[6].offset = offsetof(ttoken180174, Toktype);
TMP701[6].typ = (&NTI180015);
TMP701[6].name = "tokType";
TMP1551[1] = &TMP701[125];
TMP701[125].kind = 1;
TMP701[125].offset = offsetof(ttoken180174, Indent);
TMP701[125].typ = (&NTI106);
TMP701[125].name = "indent";
TMP1551[2] = &TMP701[126];
TMP701[126].kind = 1;
TMP701[126].offset = offsetof(ttoken180174, Ident);
TMP701[126].typ = (&NTI167017);
TMP701[126].name = "ident";
TMP1551[3] = &TMP701[127];
TMP701[127].kind = 1;
TMP701[127].offset = offsetof(ttoken180174, Inumber);
TMP701[127].typ = (&NTI4289);
TMP701[127].name = "iNumber";
TMP1551[4] = &TMP701[128];
TMP701[128].kind = 1;
TMP701[128].offset = offsetof(ttoken180174, Fnumber);
TMP701[128].typ = (&NTI4291);
TMP701[128].name = "fNumber";
TMP1551[5] = &TMP701[129];
NTI180172.size = sizeof(NU8);
NTI180172.kind = 14;
NTI180172.base = 0;
NTI180172.flags = 3;
for (TMP1557 = 0; TMP1557 < 4; TMP1557++) {
TMP701[TMP1557+130].kind = 1;
TMP701[TMP1557+130].offset = TMP1557;
TMP701[TMP1557+130].name = TMP1556[TMP1557];
TMP1555[TMP1557] = &TMP701[TMP1557+130];
}
TMP701[134].len = 4; TMP701[134].kind = 2; TMP701[134].sons = &TMP1555[0];
NTI180172.node = &TMP701[134];
TMP701[129].kind = 1;
TMP701[129].offset = offsetof(ttoken180174, Base);
TMP701[129].typ = (&NTI180172);
TMP701[129].name = "base";
TMP1551[6] = &TMP701[135];
TMP701[135].kind = 1;
TMP701[135].offset = offsetof(ttoken180174, Strongspacea);
TMP701[135].typ = (&NTI108);
TMP701[135].name = "strongSpaceA";
TMP1551[7] = &TMP701[136];
TMP701[136].kind = 1;
TMP701[136].offset = offsetof(ttoken180174, Strongspaceb);
TMP701[136].typ = (&NTI108);
TMP701[136].name = "strongSpaceB";
TMP1551[8] = &TMP701[137];
TMP701[137].kind = 1;
TMP701[137].offset = offsetof(ttoken180174, Literal);
TMP701[137].typ = (&NTI143);
TMP701[137].name = "literal";
TMP1551[9] = &TMP701[138];
TMP701[138].kind = 1;
TMP701[138].offset = offsetof(ttoken180174, Line);
TMP701[138].typ = (&NTI106);
TMP701[138].name = "line";
TMP1551[10] = &TMP701[139];
TMP701[139].kind = 1;
TMP701[139].offset = offsetof(ttoken180174, Col);
TMP701[139].typ = (&NTI106);
TMP701[139].name = "col";
TMP701[5].len = 11; TMP701[5].kind = 2; TMP701[5].sons = &TMP1551[0];
NTI180174.node = &TMP701[5];
}

