/* 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/parser.o compiler/nimcache/parser.c */
#define NIM_INTBITS 32
#include "nimbase.h"

#include <string.h>

#include <stdio.h>
typedef struct tparser205203 tparser205203;
typedef struct tlexer180176 tlexer180176;
typedef struct tbaselexer178018 tbaselexer178018;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tllstream176204 tllstream176204;
typedef struct ttoken180174 ttoken180174;
typedef struct tident167019 tident167019;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tnode188803 tnode188803;
typedef struct tlineinfo163527 tlineinfo163527;
typedef struct ttype188837 ttype188837;
typedef struct tsym188833 tsym188833;
typedef struct tnodeseq188797 tnodeseq188797;
typedef struct tcell41090 tcell41090;
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 tidobj167013 tidobj167013;
typedef struct ttypeseq188835 ttypeseq188835;
typedef struct tloc188817 tloc188817;
typedef struct trope145007 trope145007;
typedef struct tscope188827 tscope188827;
typedef struct TY188933 TY188933;
typedef struct tinstantiation188823 tinstantiation188823;
typedef struct tstrtable188807 tstrtable188807;
typedef struct tsymseq188805 tsymseq188805;
typedef struct tlib188821 tlib188821;
typedef struct tbasechunk22636 tbasechunk22636;
typedef struct tfreecell22628 tfreecell22628;
typedef struct TY188922 TY188922;
typedef struct tlistentry118017 tlistentry118017;
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  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  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
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  tparser205203  {
NI Currind;
NIM_BOOL Firsttok;
NIM_BOOL Strongspaces;
tlexer180176 Lex;
ttoken180174 Tok;
NI Inpragma;
NI Insemistmtlist;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  tlineinfo163527  {
NI16 Line;
NI16 Col;
NI32 Fileindex;
};
struct  tnode188803  {
ttype188837* Typ;
tlineinfo163527 Info;
NU16 Flags;
NU8 Kind;
union {
struct {NI64 Intval;
} S1;
struct {NF Floatval;
} S2;
struct {NimStringDesc* Strval;
} S3;
struct {tsym188833* Sym;
} S4;
struct {tident167019* Ident;
} S5;
struct {tnodeseq188797* Sons;
} S6;
} kindU;
NimStringDesc* Comment;
};
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 NimStringDesc* TY180165[117];
typedef NU8 TY205763[15];
struct  tidobj167013  {
  TNimObject Sup;
NI Id;
};
struct  tident167019  {
  tidobj167013 Sup;
NimStringDesc* S;
tident167019* Next;
NI H;
};
typedef tnode188803* TY207692[1];
typedef N_NIMCALL_PTR(tnode188803*, tdefparser208461) (tparser205203* p);
struct  tllstream176204  {
  TNimObject Sup;
NU8 Kind;
FILE* F;
NimStringDesc* S;
NI Rd;
NI Wr;
NI Lineoffset;
};
struct  tloc188817  {
NU8 K;
NU8 S;
NU8 Flags;
ttype188837* T;
trope145007* R;
trope145007* Heaproot;
NI A;
};
struct  ttype188837  {
  tidobj167013 Sup;
NU8 Kind;
NU8 Callconv;
NU32 Flags;
ttypeseq188835* Sons;
tnode188803* N;
tsym188833* Destructor;
tsym188833* Owner;
tsym188833* Sym;
NI64 Size;
NI Align;
tloc188817 Loc;
};
struct  tstrtable188807  {
NI Counter;
tsymseq188805* Data;
};
struct  tsym188833  {
  tidobj167013 Sup;
NU8 Kind;
union {
struct {ttypeseq188835* Typeinstcache;
tscope188827* Typscope;
} S1;
struct {TY188933* Procinstcache;
tscope188827* Scope;
} S2;
struct {TY188933* Usedgenerics;
tstrtable188807 Tab;
} S3;
} kindU;
NU16 Magic;
ttype188837* Typ;
tident167019* Name;
tlineinfo163527 Info;
tsym188833* Owner;
NU32 Flags;
tnode188803* Ast;
NU32 Options;
NI Position;
NI Offset;
tloc188817 Loc;
tlib188821* Annex;
tnode188803* Constraint;
};
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  trope145007  {
  TNimObject Sup;
trope145007* Left;
trope145007* Right;
NI Length;
NimStringDesc* Data;
};
struct  tscope188827  {
NI Depthlevel;
tstrtable188807 Symbols;
tnodeseq188797* Usingsyms;
tscope188827* Parent;
};
struct  tinstantiation188823  {
tsym188833* Sym;
ttypeseq188835* Concretetypes;
TY188922* Usedby;
};
struct  tlistentry118017  {
  TNimObject Sup;
tlistentry118017* Prev;
tlistentry118017* Next;
};
struct  tlib188821  {
  tlistentry118017 Sup;
NU8 Kind;
NIM_BOOL Generated;
NIM_BOOL Isoverriden;
trope145007* Name;
tnode188803* Path;
};
struct  tfreecell22628  {
tfreecell22628* Next;
NI Zerofield;
};
struct tnodeseq188797 {
  TGenericSeq Sup;
  tnode188803* data[SEQ_DECL_SIZE];
};
struct ttypeseq188835 {
  TGenericSeq Sup;
  ttype188837* data[SEQ_DECL_SIZE];
};
struct TY188933 {
  TGenericSeq Sup;
  tinstantiation188823* data[SEQ_DECL_SIZE];
};
struct tsymseq188805 {
  TGenericSeq Sup;
  tsym188833* data[SEQ_DECL_SIZE];
};
struct TY188922 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
N_NIMCALL(void, openparser_205353)(tparser205203* p, NI32 fileidx, tllstream176204* inputstream, NIM_BOOL strongspaces);
N_NIMCALL(void, inittoken_180417)(ttoken180174* l);
N_NIMCALL(void, openlexer_180204)(tlexer180176* lex, NI32 fileidx, tllstream176204* inputstream);
N_NIMCALL(void, gettok_205238)(tparser205203* p);
N_NIMCALL(void, rawgettok_180211)(tlexer180176* l, ttoken180174* tok);
N_NIMCALL(NI32, fileinfoidx_163721)(NimStringDesc* filename);
N_NIMCALL(tnode188803*, newnodep_205255)(NU8 kind, tparser205203* p);
N_NIMCALL(tnode188803*, newnodei_189099)(NU8 kind, tlineinfo163527 info);
N_NIMCALL(tlineinfo163527, parlineinfo_205291)(tparser205203* p);
static N_INLINE(tlineinfo163527, getlineinfo_180218)(tlexer180176* l, ttoken180174* tok);
N_NIMCALL(tlineinfo163527, newlineinfo_164069)(NI32 fileinfoidx, NI line, NI col);
N_NIMCALL(tnode188803*, complexorsimplestmt_206367)(tparser205203* p);
N_NIMCALL(tnode188803*, parseiforwhen_208138)(tparser205203* p, NU8 kind);
N_NIMCALL(void, optind_205311)(tparser205203* p, tnode188803* n);
N_NIMCALL(void, skipcomment_205249)(tparser205203* p, tnode188803* node);
N_NIMCALL(void, rawskipcomment_205420)(tparser205203* p, tnode188803* node);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
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);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_NIMCALL(void, parmessage_205243)(tparser205203* p, NU16 msg, NimStringDesc* arg);
N_NIMCALL(void, lexmessage_180246)(tlexer180176* l, NU16 msg, NimStringDesc* arg);
N_NIMCALL(void, skipind_205301)(tparser205203* p);
N_NIMCALL(void, addson_189207)(tnode188803* father, tnode188803* son);
N_NIMCALL(tnode188803*, parseexpr_205649)(tparser205203* p);
N_NIMCALL(tnode188803*, parseifexpr_206869)(tparser205203* p, NU8 kind);
N_NIMCALL(void, colcom_205830)(tparser205203* p, tnode188803* n);
N_NIMCALL(void, eat_205295)(tparser205203* p, NU8 toktype);
N_NIMCALL(tnode188803*, parsecase_205339)(tparser205203* p);
N_NIMCALL(void, exprlist_205931)(tparser205203* p, NU8 endtok, tnode188803* result);
N_NIMCALL(tnode188803*, parsestmt_205654)(tparser205203* p);
N_NIMCALL(void, parmessage_205387)(tparser205203* p, NU16 msg, ttoken180174* tok);
N_NIMCALL(NimStringDesc*, prettytok_180379)(ttoken180174* tok);
N_NIMCALL(tnode188803*, simplestmt_208869)(tparser205203* p);
N_NIMCALL(tnode188803*, parsereturnorraise_208121)(tparser205203* p, NU8 kind);
N_NIMCALL(NIM_BOOL, isexprstart_207306)(tparser205203* p);
N_NIMCALL(tnode188803*, parsestmtpragma_208851)(tparser205203* p);
N_NIMCALL(tnode188803*, parsepragma_206889)(tparser205203* p);
N_NIMCALL(tnode188803*, exprcoloneqexpr_205923)(tparser205203* p);
N_NIMCALL(tnode188803*, colonorequals_205897)(tparser205203* p, tnode188803* a);
N_NIMCALL(void, optpar_205306)(tparser205203* p);
N_NIMCALL(void, add_189390)(tnode188803* father, tnode188803* son);
N_NIMCALL(tnode188803*, parseimport_208003)(tparser205203* p, NU8 kind);
N_NIMCALL(tnode188803*, parsemodulename_207892)(tparser205203* p, NU8 kind);
N_NIMCALL(tnode188803*, parsefromstmt_208094)(tparser205203* p);
N_NIMCALL(tnode188803*, parseincludestmt_208067)(tparser205203* p);
N_NIMCALL(tnode188803*, newcommentstmt_208453)(tparser205203* p);
N_NIMCALL(tnode188803*, parseexprstmt_207802)(tparser205203* p);
N_NIMCALL(tnode188803*, simpleexpr_206372)(tparser205203* p, NU8 mode);
N_NIMCALL(tnode188803*, simpleexpraux_206810)(tparser205203* p, NI limit, NU8 mode);
N_NIMCALL(tnode188803*, primary_206804)(tparser205203* p, NU8 mode);
N_NIMCALL(NIM_BOOL, isoperator_205234)(ttoken180174* tok);
static N_INLINE(NIM_BOOL, issigillike_205684)(ttoken180174* tok);
static N_INLINE(NIM_CHAR, relevantoprchar_205676)(tident167019* ident);
N_NIMCALL(tnode188803*, newidentnodep_205278)(tident167019* ident, tparser205203* p);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
N_NIMCALL(tnode188803*, primarysuffix_206609)(tparser205203* p, tnode188803* r, NI baseindent);
N_NIMCALL(tnode188803*, namedparams_206592)(tparser205203* p, tnode188803* callee, NU8 kind, NU8 endtok);
N_NIMCALL(void, exprcoloneqexprlistaux_205993)(tparser205203* p, NU8 endtok, tnode188803* result);
static N_INLINE(NI, len_189264)(tnode188803* n);
N_NIMCALL(void, parsedoblocks_205664)(tparser205203* p, tnode188803* call);
N_NIMCALL(tnode188803*, parsedoblock_207234)(tparser205203* p);
N_NIMCALL(tnode188803*, parseparamlist_205670)(tparser205203* p, NIM_BOOL retcolon);
N_NIMCALL(tnode188803*, parseidentcolonequals_207008)(tparser205203* p, NU8 flags);
N_NIMCALL(tnode188803*, identwithpragma_206984)(tparser205203* p);
N_NIMCALL(tnode188803*, identvis_206967)(tparser205203* p);
N_NIMCALL(tnode188803*, parsesymbol_205328)(tparser205203* p, NIM_BOOL allownil);
N_NIMCALL(tident167019*, getident_167456)(NimStringDesc* identifier);
N_NIMCALL(NimStringDesc*, toktostr_180234)(ttoken180174* tok);
N_NIMCALL(tnode188803*, parsetypedesc_205659)(tparser205203* p);
N_NIMCALL(NIM_BOOL, identeq_167469)(tident167019* id, NimStringDesc* name);
N_NIMCALL(tnode188803*, optpragmas_207216)(tparser205203* p);
N_NIMCALL(tnode188803*, newprocnode_191214)(NU8 kind, tlineinfo163527 info, tnode188803* body, tnode188803* params, tnode188803* name, tnode188803* pattern, tnode188803* genericparams, tnode188803* pragmas, tnode188803* exceptions);
N_NIMCALL(tnode188803*, dotexpr_205968)(tparser205203* p, tnode188803* a);
N_NIMCALL(tnode188803*, parsegstrlit_206352)(tparser205203* p, tnode188803* a);
N_NIMCALL(tnode188803*, newstrnodep_205272)(NU8 kind, NimStringDesc* strval, tparser205203* p);
N_NIMCALL(tnode188803*, parsetypedesckaux_207340)(tparser205203* p, NU8 kind, NU8 mode);
N_NIMCALL(void, parsesymbollist_207312)(tparser205203* p, tnode188803* result, NIM_BOOL allownil);
N_NIMCALL(tnode188803*, parsetuple_207090)(tparser205203* p, NIM_BOOL indentallowed);
N_NIMCALL(tnode188803*, parseprocexpr_207270)(tparser205203* p, NIM_BOOL isexpr);
N_NIMCALL(tnode188803*, parseenum_207390)(tparser205203* p);
N_NIMCALL(tnode188803*, parseobject_207395)(tparser205203* p);
N_NIMCALL(NIM_BOOL, validind_208400)(tparser205203* p);
N_NIMCALL(tnode188803*, parseobjectpart_208560)(tparser205203* p);
N_NIMCALL(tnode188803*, parseobjectwhen_208565)(tparser205203* p);
N_NIMCALL(tnode188803*, parseobjectcase_208593)(tparser205203* p);
N_NIMCALL(void, gettoknoind_205482)(tparser205203* p);
N_NIMCALL(tnode188803*, parsetypeclass_207400)(tparser205203* p);
N_NIMCALL(tnode188803*, newnode_189065)(NU8 kind);
N_NIMCALL(tnode188803*, parsetypeclassparam_208684)(tparser205203* p);
static N_INLINE(NI, sonslen_189181)(tnode188803* n);
N_NIMCALL(tnode188803*, newnode_191003)(NU8 kind, tlineinfo163527 info, tnodeseq188797* sons, ttype188837* typ);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(tnode188803*, identorliteral_206562)(tparser205203* p, NU8 mode);
N_NIMCALL(tnode188803*, newintnodep_205260)(NU8 kind, NI64 intval, tparser205203* p);
N_NIMCALL(void, setbaseflags_205323)(tnode188803* n, NU8 base);
N_NIMCALL(tnode188803*, newfloatnodep_205266)(NU8 kind, NF floatval, tparser205203* p);
N_NIMCALL(tnode188803*, exprcoloneqexprlist_206232)(tparser205203* p, NU8 kind, NU8 endtok);
N_NIMCALL(tnode188803*, parsepar_206427)(tparser205203* p);
N_NIMCALL(void, semistmtlist_206378)(tparser205203* p, tnode188803* result);
N_NIMCALL(tnode188803*, newnodei_190803)(NU8 kind, tlineinfo163527 info, NI children);
N_NIMCALL(tnode188803*, setortableconstr_206241)(tparser205203* p);
N_NIMCALL(tnode188803*, parsecast_206291)(tparser205203* p);
N_NIMCALL(tnode188803*, parseoperators_206817)(tparser205203* p, tnode188803* headnode, NI limit, NU8 mode);
N_NIMCALL(NI, getprecedence_205714)(ttoken180174* tok, NIM_BOOL strongspaces);
N_NIMCALL(NIM_BOOL, isunary_205778)(tparser205203* p);
static N_INLINE(void, checkbinary_205799)(tparser205203* p);
N_NIMCALL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr, NimStringDesc* a);
static N_INLINE(NIM_BOOL, isleftassociative_205699)(ttoken180174* tok);
N_NIMCALL(tnode188803*, makecall_207738)(tnode188803* n);
N_NIMCALL(tnode188803*, parsemacrocolon_206603)(tparser205203* p, tnode188803* x);
N_NIMCALL(tnode188803*, parsetry_205334)(tparser205203* p);
N_NIMCALL(tnode188803*, parsewhile_208169)(tparser205203* p);
N_NIMCALL(tnode188803*, parseexceptblock_208245)(tparser205203* p, NU8 kind);
N_NIMCALL(tnode188803*, parsefor_208253)(tparser205203* p);
N_NIMCALL(tnode188803*, parseblock_208271)(tparser205203* p);
N_NIMCALL(tnode188803*, parsestatic_208287)(tparser205203* p);
N_NIMCALL(tnode188803*, parseasm_208294)(tparser205203* p);
N_NIMCALL(tnode188803*, parseroutine_208409)(tparser205203* p, NU8 kind);
N_NIMCALL(tnode188803*, parsepattern_208393)(tparser205203* p);
N_NIMCALL(tnode188803*, parsegenericparamlist_208356)(tparser205203* p);
N_NIMCALL(tnode188803*, parsegenericparam_208310)(tparser205203* p);
N_NIMCALL(void, indandcomment_205317)(tparser205203* p, tnode188803* n);
N_NIMCALL(tnode188803*, parsesection_208466)(tparser205203* p, NU8 kind, tdefparser208461 defparser);
N_NIMCALL(tnode188803*, parsetypedef_208758)(tparser205203* p);
N_NIMCALL(tnode188803*, parsetypedefaux_207731)(tparser205203* p);
N_NIMCALL(tnode188803*, parseconstant_208505)(tparser205203* p);
N_NIMCALL(tnode188803*, parsevariable_208815)(tparser205203* p);
N_NIMCALL(tnode188803*, parsevartuple_208783)(tparser205203* p);
N_NIMCALL(tnode188803*, parsebind_208832)(tparser205203* p, NU8 k);
N_NIMCALL(tnode188803*, qualifiedident_205977)(tparser205203* p);
N_NIMCALL(void, closelexer_180225)(tlexer180176* lex);
N_NIMCALL(tllstream176204*, llstreamopen_176218)(NimStringDesc* data);
N_NIMCALL(void, objectInit)(void* dest, TNimType* typ);
N_NIMCALL(void, openparser_205364)(tparser205203* p, NimStringDesc* filename, tllstream176204* inputstream, NIM_BOOL strongspaces);
N_NIMCALL(tnode188803*, parseall_205212)(tparser205203* p);
N_NIMCALL(void, closeparser_205217)(tparser205203* p);
STRING_LITERAL(TMP1558, "", 0);
STRING_LITERAL(TMP1559, "skipComment", 11);
extern NIM_CONST TY180165 toktypetostr_180164;
STRING_LITERAL(TMP1561, ".}", 2);
static NIM_CONST TY205763 TMP1562 = {
0x30, 0x00, 0x04, 0x00, 0x19, 0x68, 0x03, 0x03,
0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00}
;
STRING_LITERAL(TMP1563, "[]", 2);
STRING_LITERAL(TMP1564, "=", 1);
STRING_LITERAL(TMP1565, "()", 2);
STRING_LITERAL(TMP1566, "{}", 2);
STRING_LITERAL(TMP1567, ")", 1);
STRING_LITERAL(TMP1568, "->", 2);
static NIM_CONST TY205763 TMP1569 = {
0x00, 0x2A, 0x01, 0x4D, 0x82, 0x04, 0x00, 0x10,
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP1570, "number of spaces around \'$#\' not consistent", 43);
STRING_LITERAL(TMP1571, "number of spaces must be 0,1,2,4 or 8", 37);
STRING_LITERAL(TMP1572, "except", 6);
TNimType NTI205203; /* TParser */
extern TNimType NTI106; /* int */
extern TNimType NTI134; /* bool */
extern TNimType NTI180176; /* TLexer */
extern TNimType NTI180174; /* TToken */
extern tgcheap43016 gch_43044;
extern tnode188803* emptynode_189727;
extern TNimType NTI188797; /* TNodeSeq */
extern tnode188803* emptyparams_191211;

N_NIMCALL(void, gettok_205238)(tparser205203* p) {
	rawgettok_180211(&(*p).Lex, &(*p).Tok);
}

N_NIMCALL(void, openparser_205353)(tparser205203* p, NI32 fileidx, tllstream176204* inputstream, NIM_BOOL strongspaces) {
	inittoken_180417(&(*p).Tok);
	openlexer_180204(&(*p).Lex, fileidx, inputstream);
	gettok_205238(p);
	(*p).Firsttok = NIM_TRUE;
	(*p).Strongspaces = strongspaces;
}

N_NIMCALL(void, openparser_205364)(tparser205203* p, NimStringDesc* filename, tllstream176204* inputstream, NIM_BOOL strongspaces) {
	NI32 LOC1;
	LOC1 = 0;
	LOC1 = fileinfoidx_163721(filename);
	openparser_205353(p, LOC1, inputstream, strongspaces);
}

static N_INLINE(tlineinfo163527, getlineinfo_180218)(tlexer180176* l, ttoken180174* tok) {
	tlineinfo163527 result;
	memset((void*)&result, 0, sizeof(result));
	result = newlineinfo_164069((*l).Fileidx, (*tok).Line, (*tok).Col);
	return result;
}

N_NIMCALL(tlineinfo163527, parlineinfo_205291)(tparser205203* p) {
	tlineinfo163527 result;
	memset((void*)&result, 0, sizeof(result));
	result = getlineinfo_180218(&(*p).Lex, &(*p).Tok);
	return result;
}

N_NIMCALL(tnode188803*, newnodep_205255)(NU8 kind, tparser205203* p) {
	tnode188803* result;
	tlineinfo163527 LOC1;
	result = 0;
	LOC1 = parlineinfo_205291(p);
	result = newnodei_189099(kind, LOC1);
	return result;
}

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, nimGCunrefNoCycle)(void* p) {
	tcell41090* c;
	c = usrtocell_44443(p);
	{
		(*c).Refcount -= 8;
		if (!((NU32)((*c).Refcount) < (NU32)(8))) goto LA3;
		rtladdzct_46002(c);
	}
	LA3: ;
}

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, parmessage_205243)(tparser205203* p, NU16 msg, NimStringDesc* arg) {
	lexmessage_180246(&(*p).Lex, msg, arg);
}

N_NIMCALL(void, rawskipcomment_205420)(tparser205203* p, tnode188803* node) {
	{
		if (!((*p).Tok.Toktype == ((NU8) 111))) goto LA3;
		{
			if (!!((node == NIM_NIL))) goto LA7;
			{
				NimStringDesc* LOC13;
				if (!((*node).Comment == NIM_NIL)) goto LA11;
				LOC13 = 0;
				LOC13 = (*node).Comment; (*node).Comment = copyStringRC1(((NimStringDesc*) &TMP1558));
				if (LOC13) nimGCunrefNoCycle(LOC13);
			}
			LA11: ;
			(*node).Comment = resizeString((*node).Comment, (*p).Tok.Literal->Sup.len + 0);
appendString((*node).Comment, (*p).Tok.Literal);
		}
		goto LA5;
		LA7: ;
		{
			parmessage_205243(&(*p), ((NU16) 2), ((NimStringDesc*) &TMP1559));
		}
		LA5: ;
		gettok_205238(p);
	}
	LA3: ;
}

N_NIMCALL(void, skipcomment_205249)(tparser205203* p, tnode188803* node) {
	{
		if (!((*p).Tok.Indent < 0)) goto LA3;
		rawskipcomment_205420(p, node);
	}
	LA3: ;
}

N_NIMCALL(void, skipind_205301)(tparser205203* p) {
	{
		if (!(0 <= (*p).Tok.Indent)) goto LA3;
		{
			if (!!(((*p).Currind < (*p).Tok.Indent))) goto LA7;
			parmessage_205243(&(*p), ((NU16) 33), ((NimStringDesc*) &TMP1558));
		}
		LA7: ;
	}
	LA3: ;
}

N_NIMCALL(void, optind_205311)(tparser205203* p, tnode188803* n) {
	skipcomment_205249(p, n);
	skipind_205301(p);
}

N_NIMCALL(void, eat_205295)(tparser205203* p, NU8 toktype) {
	{
		if (!((*p).Tok.Toktype == toktype)) goto LA3;
		gettok_205238(p);
	}
	goto LA1;
	LA3: ;
	{
		lexmessage_180246(&(*p).Lex, ((NU16) 23), toktypetostr_180164[(toktype)- 0]);
	}
	LA1: ;
}

N_NIMCALL(void, colcom_205830)(tparser205203* p, tnode188803* n) {
	eat_205295(p, ((NU8) 105));
	skipcomment_205249(p, n);
}

N_NIMCALL(tnode188803*, parseifexpr_206869)(tparser205203* p, NU8 kind) {
	tnode188803* result;
	tnode188803* branch;
	tnode188803* LOC8;
	result = 0;
	result = newnodep_205255(kind, &(*p));
	while (1) {
		tnode188803* branch;
		tnode188803* LOC2;
		tnode188803* LOC3;
		gettok_205238(p);
		branch = newnodep_205255(((NU8) 49), &(*p));
		LOC2 = 0;
		LOC2 = parseexpr_205649(p);
		addson_189207(branch, LOC2);
		colcom_205830(p, branch);
		LOC3 = 0;
		LOC3 = parseexpr_205649(p);
		addson_189207(branch, LOC3);
		optind_205311(p, branch);
		addson_189207(result, branch);
		{
			if (!!(((*p).Tok.Toktype == ((NU8) 20)))) goto LA6;
			goto LA1;
		}
		LA6: ;
	} LA1: ;
	branch = newnodep_205255(((NU8) 50), &(*p));
	eat_205295(p, ((NU8) 21));
	colcom_205830(p, branch);
	LOC8 = 0;
	LOC8 = parseexpr_205649(p);
	addson_189207(branch, LOC8);
	addson_189207(result, branch);
	return result;
}

N_NIMCALL(void, exprlist_205931)(tparser205203* p, NU8 endtok, tnode188803* result) {
	gettok_205238(p);
	optind_205311(p, result);
	while (1) {
		NIM_BOOL LOC2;
		tnode188803* a;
		LOC2 = 0;
		LOC2 = !(((*p).Tok.Toktype == endtok));
		if (!(LOC2)) goto LA3;
		LOC2 = !(((*p).Tok.Toktype == ((NU8) 1)));
		LA3: ;
		if (!LOC2) goto LA1;
		a = parseexpr_205649(p);
		addson_189207(result, a);
		{
			if (!!(((*p).Tok.Toktype == ((NU8) 103)))) goto LA6;
			goto LA1;
		}
		LA6: ;
		gettok_205238(p);
		optind_205311(p, a);
	} LA1: ;
	eat_205295(p, endtok);
}

N_NIMCALL(void, parmessage_205387)(tparser205203* p, NU16 msg, ttoken180174* tok) {
	NimStringDesc* LOC1;
	LOC1 = 0;
	LOC1 = prettytok_180379(tok);
	lexmessage_180246(&(*p).Lex, msg, LOC1);
}

N_NIMCALL(NIM_BOOL, isexprstart_207306)(tparser205203* p) {
	NIM_BOOL result;
	result = 0;
	switch ((*p).Tok.Toktype) {
	case ((NU8) 2):
	case ((NU8) 112):
	case ((NU8) 110):
	case ((NU8) 45):
	case ((NU8) 44):
	case ((NU8) 12):
	case ((NU8) 30):
	case ((NU8) 51):
	case ((NU8) 37):
	case ((NU8) 8):
	case ((NU8) 3):
	case ((NU8) 91):
	case ((NU8) 93):
	case ((NU8) 95):
	case ((NU8) 71) ... ((NU8) 90):
	case ((NU8) 64):
	case ((NU8) 54):
	case ((NU8) 52):
	case ((NU8) 61):
	case ((NU8) 47):
	case ((NU8) 62):
	case ((NU8) 65):
	case ((NU8) 11):
	{
		result = NIM_TRUE;
	}
	break;
	default:
	{
		result = NIM_FALSE;
	}
	break;
	}
	return result;
}

N_NIMCALL(tnode188803*, parsereturnorraise_208121)(tparser205203* p, NU8 kind) {
	tnode188803* result;
	result = 0;
	result = newnodep_205255(kind, &(*p));
	gettok_205238(p);
	{
		if (!((*p).Tok.Toktype == ((NU8) 111))) goto LA3;
		skipcomment_205249(p, result);
		addson_189207(result, emptynode_189727);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		NIM_BOOL LOC7;
		NIM_BOOL LOC10;
		LOC6 = 0;
		LOC7 = 0;
		LOC7 = (0 <= (*p).Tok.Indent);
		if (!(LOC7)) goto LA8;
		LOC7 = ((*p).Tok.Indent <= (*p).Currind);
		LA8: ;
		LOC6 = LOC7;
		if (LOC6) goto LA9;
		LOC10 = 0;
		LOC10 = isexprstart_207306(&(*p));
		LOC6 = !(LOC10);
		LA9: ;
		if (!LOC6) goto LA11;
		addson_189207(result, emptynode_189727);
	}
	goto LA1;
	LA11: ;
	{
		tnode188803* LOC14;
		LOC14 = 0;
		LOC14 = parseexpr_205649(p);
		addson_189207(result, LOC14);
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, colonorequals_205897)(tparser205203* p, tnode188803* a) {
	tnode188803* result;
	result = 0;
	{
		tnode188803* LOC5;
		if (!((*p).Tok.Toktype == ((NU8) 105))) goto LA3;
		result = newnodep_205255(((NU8) 34), &(*p));
		gettok_205238(p);
		addson_189207(result, a);
		LOC5 = 0;
		LOC5 = parseexpr_205649(p);
		addson_189207(result, LOC5);
	}
	goto LA1;
	LA3: ;
	{
		tnode188803* LOC9;
		if (!((*p).Tok.Toktype == ((NU8) 107))) goto LA7;
		result = newnodep_205255(((NU8) 33), &(*p));
		gettok_205238(p);
		addson_189207(result, a);
		LOC9 = 0;
		LOC9 = parseexpr_205649(p);
		addson_189207(result, LOC9);
	}
	goto LA1;
	LA7: ;
	{
		result = a;
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, exprcoloneqexpr_205923)(tparser205203* p) {
	tnode188803* result;
	tnode188803* a;
	result = 0;
	a = parseexpr_205649(p);
	result = colonorequals_205897(p, a);
	return result;
}

N_NIMCALL(void, optpar_205306)(tparser205203* p) {
	{
		if (!(0 <= (*p).Tok.Indent)) goto LA3;
		{
			if (!((*p).Tok.Indent < (*p).Currind)) goto LA7;
			parmessage_205243(&(*p), ((NU16) 33), ((NimStringDesc*) &TMP1558));
		}
		LA7: ;
	}
	LA3: ;
}

N_NIMCALL(tnode188803*, parsepragma_206889)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	result = newnodep_205255(((NU8) 90), &(*p));
	(*p).Inpragma += 1;
	gettok_205238(p);
	optind_205311(p, result);
	while (1) {
		tnode188803* a;
		if (!!(((*p).Tok.Toktype == ((NU8) 100) || (*p).Tok.Toktype == ((NU8) 96) || (*p).Tok.Toktype == ((NU8) 1)))) goto LA1;
		a = exprcoloneqexpr_205923(p);
		addson_189207(result, a);
		{
			if (!((*p).Tok.Toktype == ((NU8) 103))) goto LA4;
			gettok_205238(p);
			skipcomment_205249(p, a);
		}
		LA4: ;
	} LA1: ;
	optpar_205306(p);
	{
		if (!((*p).Tok.Toktype == ((NU8) 100) || (*p).Tok.Toktype == ((NU8) 96))) goto LA8;
		gettok_205238(p);
	}
	goto LA6;
	LA8: ;
	{
		parmessage_205243(&(*p), ((NU16) 23), ((NimStringDesc*) &TMP1561));
	}
	LA6: ;
	(*p).Inpragma -= 1;
	return result;
}

N_NIMCALL(tnode188803*, parsestmtpragma_208851)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	result = parsepragma_206889(p);
	{
		NIM_BOOL LOC3;
		tnode188803* a;
		tnode188803* LOC7;
		LOC3 = 0;
		LOC3 = ((*p).Tok.Toktype == ((NU8) 105));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*p).Tok.Indent < 0);
		LA4: ;
		if (!LOC3) goto LA5;
		a = result;
		result = newnodei_189099(((NU8) 91), (*a).Info);
		gettok_205238(p);
		skipcomment_205249(p, result);
		add_189390(result, a);
		LOC7 = 0;
		LOC7 = parsestmt_205654(p);
		add_189390(result, LOC7);
	}
	LA5: ;
	return result;
}

N_NIMCALL(tnode188803*, parsemodulename_207892)(tparser205203* p, NU8 kind) {
	tnode188803* result;
	result = 0;
	result = parseexpr_205649(p);
	return result;
}

N_NIMCALL(tnode188803*, parseimport_208003)(tparser205203* p, NU8 kind) {
	tnode188803* result;
	tnode188803* a;
	result = 0;
	result = newnodep_205255(kind, &(*p));
	gettok_205238(p);
	optind_205311(p, result);
	a = parsemodulename_207892(p, kind);
	addson_189207(result, a);
	{
		if (!((*p).Tok.Toktype == ((NU8) 103) || (*p).Tok.Toktype == ((NU8) 24))) goto LA3;
		{
			if (!((*p).Tok.Toktype == ((NU8) 24))) goto LA7;
			(*result).Kind = kind + 1;
		}
		LA7: ;
		gettok_205238(p);
		optind_205311(p, result);
		while (1) {
			a = parsemodulename_207892(p, kind);
			{
				if (!((*a).Kind == ((NU8) 1))) goto LA12;
				goto LA9;
			}
			LA12: ;
			addson_189207(result, a);
			{
				if (!!(((*p).Tok.Toktype == ((NU8) 103)))) goto LA16;
				goto LA9;
			}
			LA16: ;
			gettok_205238(p);
			optind_205311(p, a);
		} LA9: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(tnode188803*, parsefromstmt_208094)(tparser205203* p) {
	tnode188803* result;
	tnode188803* a;
	result = 0;
	result = newnodep_205255(((NU8) 119), &(*p));
	gettok_205238(p);
	optind_205311(p, result);
	a = parsemodulename_207892(p, ((NU8) 115));
	addson_189207(result, a);
	eat_205295(p, ((NU8) 31));
	optind_205311(p, result);
	while (1) {
		a = parseexpr_205649(p);
		{
			if (!((*a).Kind == ((NU8) 1))) goto LA4;
			goto LA1;
		}
		LA4: ;
		addson_189207(result, a);
		{
			if (!!(((*p).Tok.Toktype == ((NU8) 103)))) goto LA8;
			goto LA1;
		}
		LA8: ;
		gettok_205238(p);
		optind_205311(p, a);
	} LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, parseincludestmt_208067)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	result = newnodep_205255(((NU8) 120), &(*p));
	gettok_205238(p);
	optind_205311(p, result);
	while (1) {
		tnode188803* a;
		a = parseexpr_205649(p);
		{
			if (!((*a).Kind == ((NU8) 1))) goto LA4;
			goto LA1;
		}
		LA4: ;
		addson_189207(result, a);
		{
			if (!!(((*p).Tok.Toktype == ((NU8) 103)))) goto LA8;
			goto LA1;
		}
		LA8: ;
		gettok_205238(p);
		optind_205311(p, a);
	} LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, newcommentstmt_208453)(tparser205203* p) {
	tnode188803* result;
	NimStringDesc* LOC1;
	result = 0;
	result = newnodep_205255(((NU8) 124), &(*p));
	LOC1 = 0;
	LOC1 = (*result).Comment; (*result).Comment = copyStringRC1((*p).Tok.Literal);
	if (LOC1) nimGCunrefNoCycle(LOC1);
	gettok_205238(p);
	return result;
}

N_NIMCALL(NIM_BOOL, isoperator_205234)(ttoken180174* tok) {
	NIM_BOOL result;
	result = 0;
	result = ((TMP1562[(*tok).Toktype/8] &(1<<((*tok).Toktype%8)))!=0);
	return result;
}

static N_INLINE(NIM_CHAR, relevantoprchar_205676)(tident167019* ident) {
	NIM_CHAR result;
	NI l;
	result = 0;
	result = (*ident).S->data[0];
	l = (*ident).S->Sup.len;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((NU8)(result) == (NU8)(92));
		if (!(LOC3)) goto LA4;
		LOC3 = (1 < l);
		LA4: ;
		if (!LOC3) goto LA5;
		result = (*ident).S->data[1];
	}
	LA5: ;
	return result;
}

static N_INLINE(NIM_BOOL, issigillike_205684)(ttoken180174* tok) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_CHAR LOC3;
	result = 0;
	LOC1 = 0;
	LOC1 = ((*tok).Toktype == ((NU8) 110));
	if (!(LOC1)) goto LA2;
	LOC3 = 0;
	LOC3 = relevantoprchar_205676((*tok).Ident);
	LOC1 = ((NU8)(LOC3) == (NU8)(64));
	LA2: ;
	result = LOC1;
	return result;
}

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(tnode188803*, newidentnodep_205278)(tident167019* ident, tparser205203* p) {
	tnode188803* result;
	result = 0;
	result = newnodep_205255(((NU8) 2), p);
	asgnRefNoCycle((void**) &(*result).kindU.S5.Ident, ident);
	return result;
}

N_NIMCALL(void, exprcoloneqexprlistaux_205993)(tparser205203* p, NU8 endtok, tnode188803* result) {
	gettok_205238(p);
	optind_205311(p, result);
	while (1) {
		NIM_BOOL LOC2;
		tnode188803* a;
		LOC2 = 0;
		LOC2 = !(((*p).Tok.Toktype == endtok));
		if (!(LOC2)) goto LA3;
		LOC2 = !(((*p).Tok.Toktype == ((NU8) 1)));
		LA3: ;
		if (!LOC2) goto LA1;
		a = exprcoloneqexpr_205923(p);
		addson_189207(result, a);
		{
			if (!!(((*p).Tok.Toktype == ((NU8) 103)))) goto LA6;
			goto LA1;
		}
		LA6: ;
		gettok_205238(p);
		skipcomment_205249(p, a);
	} LA1: ;
	optpar_205306(p);
	eat_205295(p, endtok);
}

N_NIMCALL(tnode188803*, namedparams_206592)(tparser205203* p, tnode188803* callee, NU8 kind, NU8 endtok) {
	tnode188803* result;
	tnode188803* a;
	result = 0;
	a = callee;
	result = newnodep_205255(kind, &(*p));
	addson_189207(result, a);
	exprcoloneqexprlistaux_205993(p, endtok, result);
	return result;
}

static N_INLINE(NI, len_189264)(tnode188803* n) {
	NI result;
	result = 0;
	{
		if (!(*n).kindU.S6.Sons == 0) goto LA3;
		result = 0;
	}
	goto LA1;
	LA3: ;
	{
		result = (*n).kindU.S6.Sons->Sup.len;
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, parsesymbol_205328)(tparser205203* p, NIM_BOOL allownil) {
	tnode188803* result;
	result = 0;
	switch ((*p).Tok.Toktype) {
	case ((NU8) 2):
	{
		result = newidentnodep_205278((*p).Tok.Ident, &(*p));
		gettok_205238(p);
	}
	break;
	case ((NU8) 112):
	{
		result = newnodep_205255(((NU8) 53), &(*p));
		gettok_205238(p);
		while (1) {
			switch ((*p).Tok.Toktype) {
			case ((NU8) 93):
			{
				tident167019* LOC5;
				tnode188803* LOC6;
				LOC5 = 0;
				LOC5 = getident_167456(((NimStringDesc*) &TMP1563));
				LOC6 = 0;
				LOC6 = newidentnodep_205278(LOC5, &(*p));
				add_189390(result, LOC6);
				gettok_205238(p);
				eat_205295(p, ((NU8) 94));
			}
			break;
			case ((NU8) 107):
			{
				tident167019* LOC8;
				tnode188803* LOC9;
				LOC8 = 0;
				LOC8 = getident_167456(((NimStringDesc*) &TMP1564));
				LOC9 = 0;
				LOC9 = newidentnodep_205278(LOC8, &(*p));
				add_189390(result, LOC9);
				gettok_205238(p);
			}
			break;
			case ((NU8) 91):
			{
				tident167019* LOC11;
				tnode188803* LOC12;
				LOC11 = 0;
				LOC11 = getident_167456(((NimStringDesc*) &TMP1565));
				LOC12 = 0;
				LOC12 = newidentnodep_205278(LOC11, &(*p));
				add_189390(result, LOC12);
				gettok_205238(p);
				eat_205295(p, ((NU8) 92));
			}
			break;
			case ((NU8) 95):
			{
				tident167019* LOC14;
				tnode188803* LOC15;
				LOC14 = 0;
				LOC14 = getident_167456(((NimStringDesc*) &TMP1566));
				LOC15 = 0;
				LOC15 = newidentnodep_205278(LOC14, &(*p));
				add_189390(result, LOC15);
				gettok_205238(p);
				eat_205295(p, ((NU8) 96));
			}
			break;
			case ((NU8) 3) ... ((NU8) 70):
			case ((NU8) 2):
			case ((NU8) 110):
			case ((NU8) 108):
			case ((NU8) 109):
			{
				tnode188803* LOC17;
				LOC17 = 0;
				LOC17 = newidentnodep_205278((*p).Tok.Ident, &(*p));
				add_189390(result, LOC17);
				gettok_205238(p);
			}
			break;
			case ((NU8) 71) ... ((NU8) 90):
			{
				NimStringDesc* LOC19;
				tident167019* LOC20;
				tnode188803* LOC21;
				LOC19 = 0;
				LOC19 = toktostr_180234(&(*p).Tok);
				LOC20 = 0;
				LOC20 = getident_167456(LOC19);
				LOC21 = 0;
				LOC21 = newidentnodep_205278(LOC20, &(*p));
				add_189390(result, LOC21);
				gettok_205238(p);
			}
			break;
			default:
			{
				{
					NI LOC25;
					LOC25 = 0;
					LOC25 = len_189264(result);
					if (!(LOC25 == 0)) goto LA26;
					parmessage_205387(&(*p), ((NU16) 19), &(*p).Tok);
				}
				LA26: ;
				goto LA3;
			}
			break;
			}
		} LA3: ;
		eat_205295(p, ((NU8) 112));
	}
	break;
	default:
	{
		{
			NIM_BOOL LOC31;
			LOC31 = 0;
			LOC31 = allownil;
			if (!(LOC31)) goto LA32;
			LOC31 = ((*p).Tok.Toktype == ((NU8) 44));
			LA32: ;
			if (!LOC31) goto LA33;
			result = newnodep_205255(((NU8) 23), &(*p));
			gettok_205238(p);
		}
		goto LA29;
		LA33: ;
		{
			parmessage_205387(&(*p), ((NU16) 19), &(*p).Tok);
			gettok_205238(p);
			result = emptynode_189727;
		}
		LA29: ;
	}
	break;
	}
	return result;
}

N_NIMCALL(tnode188803*, identvis_206967)(tparser205203* p) {
	tnode188803* result;
	tnode188803* a;
	result = 0;
	a = parsesymbol_205328(p, NIM_FALSE);
	{
		tnode188803* LOC5;
		if (!((*p).Tok.Toktype == ((NU8) 110))) goto LA3;
		result = newnodep_205255(((NU8) 31), &(*p));
		LOC5 = 0;
		LOC5 = newidentnodep_205278((*p).Tok.Ident, &(*p));
		addson_189207(result, LOC5);
		addson_189207(result, a);
		gettok_205238(p);
	}
	goto LA1;
	LA3: ;
	{
		result = a;
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, identwithpragma_206984)(tparser205203* p) {
	tnode188803* result;
	tnode188803* a;
	result = 0;
	a = identvis_206967(p);
	{
		tnode188803* LOC5;
		if (!((*p).Tok.Toktype == ((NU8) 99))) goto LA3;
		result = newnodep_205255(((NU8) 43), &(*p));
		addson_189207(result, a);
		LOC5 = 0;
		LOC5 = parsepragma_206889(p);
		addson_189207(result, LOC5);
	}
	goto LA1;
	LA3: ;
	{
		result = a;
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, parsetypedesc_205659)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	result = simpleexpr_206372(p, ((NU8) 1));
	return result;
}

N_NIMCALL(tnode188803*, parseidentcolonequals_207008)(tparser205203* p, NU8 flags) {
	tnode188803* result;
	tnode188803* a;
	result = 0;
	a = 0;
	result = newnodep_205255(((NU8) 35), &(*p));
	while (1) {
		switch ((*p).Tok.Toktype) {
		case ((NU8) 2):
		case ((NU8) 112):
		{
			{
				if (!((flags &(1<<((((NU8) 0))&7)))!=0)) goto LA5;
				a = identwithpragma_206984(p);
			}
			goto LA3;
			LA5: ;
			{
				a = parsesymbol_205328(p, NIM_FALSE);
			}
			LA3: ;
			{
				if (!((*a).Kind == ((NU8) 1))) goto LA10;
				goto BeforeRet;
			}
			LA10: ;
		}
		break;
		default:
		{
			goto LA1;
		}
		break;
		}
		addson_189207(result, a);
		{
			if (!!(((*p).Tok.Toktype == ((NU8) 103)))) goto LA15;
			goto LA1;
		}
		LA15: ;
		gettok_205238(p);
		optind_205311(p, a);
	} LA1: ;
	{
		tnode188803* LOC21;
		if (!((*p).Tok.Toktype == ((NU8) 105))) goto LA19;
		gettok_205238(p);
		optind_205311(p, result);
		LOC21 = 0;
		LOC21 = parsetypedesc_205659(p);
		addson_189207(result, LOC21);
	}
	goto LA17;
	LA19: ;
	{
		addson_189207(result, emptynode_189727);
		{
			NIM_BOOL LOC25;
			LOC25 = 0;
			LOC25 = !(((*p).Tok.Toktype == ((NU8) 107)));
			if (!(LOC25)) goto LA26;
			LOC25 = !(((flags &(1<<((((NU8) 1))&7)))!=0));
			LA26: ;
			if (!LOC25) goto LA27;
			parmessage_205387(&(*p), ((NU16) 59), &(*p).Tok);
		}
		LA27: ;
	}
	LA17: ;
	{
		tnode188803* LOC33;
		if (!((*p).Tok.Toktype == ((NU8) 107))) goto LA31;
		gettok_205238(p);
		optind_205311(p, result);
		LOC33 = 0;
		LOC33 = parseexpr_205649(p);
		addson_189207(result, LOC33);
	}
	goto LA29;
	LA31: ;
	{
		addson_189207(result, emptynode_189727);
	}
	LA29: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, parseparamlist_205670)(tparser205203* p, NIM_BOOL retcolon) {
	tnode188803* result;
	tnode188803* a;
	NIM_BOOL hasret;
	result = 0;
	a = 0;
	result = newnodep_205255(((NU8) 76), &(*p));
	addson_189207(result, emptynode_189727);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*p).Tok.Toktype == ((NU8) 91));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*p).Tok.Indent < 0);
		LA4: ;
		if (!LOC3) goto LA5;
		gettok_205238(p);
		optind_205311(p, result);
		while (1) {
			switch ((*p).Tok.Toktype) {
			case ((NU8) 2):
			case ((NU8) 112):
			{
				a = parseidentcolonequals_207008(p, 3);
			}
			break;
			case ((NU8) 92):
			{
				goto LA7;
			}
			break;
			default:
			{
				parmessage_205243(&(*p), ((NU16) 23), ((NimStringDesc*) &TMP1567));
				goto LA7;
			}
			break;
			}
			addson_189207(result, a);
			{
				if (!!(((*p).Tok.Toktype == ((NU8) 103) || (*p).Tok.Toktype == ((NU8) 104)))) goto LA13;
				goto LA7;
			}
			LA13: ;
			gettok_205238(p);
			skipcomment_205249(p, a);
		} LA7: ;
		optpar_205306(p);
		eat_205295(p, ((NU8) 92));
	}
	LA5: ;
	{
		if (!retcolon) goto LA17;
		hasret = ((*p).Tok.Toktype == ((NU8) 105));
	}
	goto LA15;
	LA17: ;
	{
		NIM_BOOL LOC20;
		LOC20 = 0;
		LOC20 = ((*p).Tok.Toktype == ((NU8) 110));
		if (!(LOC20)) goto LA21;
		LOC20 = identeq_167469((*p).Tok.Ident, ((NimStringDesc*) &TMP1568));
		LA21: ;
		hasret = LOC20;
	}
	LA15: ;
	{
		NIM_BOOL LOC24;
		LOC24 = 0;
		LOC24 = hasret;
		if (!(LOC24)) goto LA25;
		LOC24 = ((*p).Tok.Indent < 0);
		LA25: ;
		if (!LOC24) goto LA26;
		gettok_205238(p);
		optind_205311(p, result);
		asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[0], parsetypedesc_205659(p));
	}
	LA26: ;
	return result;
}

N_NIMCALL(tnode188803*, optpragmas_207216)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		LOC3 = 0;
		LOC3 = ((*p).Tok.Toktype == ((NU8) 99));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = ((*p).Tok.Indent < 0);
		if (LOC5) goto LA6;
		LOC5 = ((*p).Currind < (*p).Tok.Indent);
		LA6: ;
		LOC3 = LOC5;
		LA4: ;
		if (!LOC3) goto LA7;
		result = parsepragma_206889(p);
	}
	goto LA1;
	LA7: ;
	{
		result = emptynode_189727;
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, parsedoblock_207234)(tparser205203* p) {
	tnode188803* result;
	tlineinfo163527 info;
	tnode188803* params;
	tnode188803* pragmas;
	tnode188803* LOC1;
	result = 0;
	info = parlineinfo_205291(&(*p));
	gettok_205238(p);
	params = parseparamlist_205670(p, NIM_FALSE);
	pragmas = optpragmas_207216(p);
	eat_205295(p, ((NU8) 105));
	skipcomment_205249(p, result);
	LOC1 = 0;
	LOC1 = parsestmt_205654(p);
	result = newprocnode_191214(((NU8) 52), info, LOC1, params, emptynode_189727, emptynode_189727, emptynode_189727, pragmas, emptynode_189727);
	return result;
}

N_NIMCALL(void, parsedoblocks_205664)(tparser205203* p, tnode188803* call) {
	{
		tnode188803* LOC5;
		if (!((*p).Tok.Toktype == ((NU8) 19))) goto LA3;
		LOC5 = 0;
		LOC5 = parsedoblock_207234(p);
		addson_189207(call, LOC5);
		while (1) {
			NIM_BOOL LOC7;
			tnode188803* LOC9;
			LOC7 = 0;
			LOC7 = ((*p).Tok.Indent == (*p).Currind);
			if (!(LOC7)) goto LA8;
			LOC7 = ((*p).Tok.Toktype == ((NU8) 19));
			LA8: ;
			if (!LOC7) goto LA6;
			LOC9 = 0;
			LOC9 = parsedoblock_207234(p);
			addson_189207(call, LOC9);
		} LA6: ;
	}
	LA3: ;
}

N_NIMCALL(tnode188803*, dotexpr_205968)(tparser205203* p, tnode188803* a) {
	tnode188803* result;
	tlineinfo163527 info;
	result = 0;
	info = parlineinfo_205291(&(*p));
	gettok_205238(p);
	optind_205311(p, a);
	switch ((*p).Tok.Toktype) {
	case ((NU8) 62):
	{
		result = newnodep_205255(((NU8) 131), &(*p));
		gettok_205238(p);
		addson_189207(result, a);
	}
	break;
	case ((NU8) 3):
	{
		result = newnodep_205255(((NU8) 63), &(*p));
		gettok_205238(p);
		addson_189207(result, a);
	}
	break;
	default:
	{
		tnode188803* LOC4;
		result = newnodei_189099(((NU8) 45), info);
		addson_189207(result, a);
		LOC4 = 0;
		LOC4 = parsesymbol_205328(p, NIM_FALSE);
		addson_189207(result, LOC4);
	}
	break;
	}
	return result;
}

N_NIMCALL(tnode188803*, newstrnodep_205272)(NU8 kind, NimStringDesc* strval, tparser205203* p) {
	tnode188803* result;
	NimStringDesc* LOC1;
	result = 0;
	result = newnodep_205255(kind, p);
	LOC1 = 0;
	LOC1 = (*result).kindU.S3.Strval; (*result).kindU.S3.Strval = copyStringRC1(strval);
	if (LOC1) nimGCunrefNoCycle(LOC1);
	return result;
}

N_NIMCALL(tnode188803*, parsegstrlit_206352)(tparser205203* p, tnode188803* a) {
	tnode188803* result;
	result = 0;
	switch ((*p).Tok.Toktype) {
	case ((NU8) 88):
	{
		tnode188803* LOC2;
		result = newnodep_205255(((NU8) 28), &(*p));
		addson_189207(result, a);
		LOC2 = 0;
		LOC2 = newstrnodep_205272(((NU8) 21), (*p).Tok.Literal, &(*p));
		addson_189207(result, LOC2);
		gettok_205238(p);
	}
	break;
	case ((NU8) 89):
	{
		tnode188803* LOC4;
		result = newnodep_205255(((NU8) 28), &(*p));
		addson_189207(result, a);
		LOC4 = 0;
		LOC4 = newstrnodep_205272(((NU8) 22), (*p).Tok.Literal, &(*p));
		addson_189207(result, LOC4);
		gettok_205238(p);
	}
	break;
	default:
	{
		result = a;
	}
	break;
	}
	return result;
}

N_NIMCALL(tnode188803*, primarysuffix_206609)(tparser205203* p, tnode188803* r, NI baseindent) {
	tnode188803* result;
	result = 0;
	result = r;
	while (1) {
		NIM_BOOL LOC2;
		NIM_BOOL LOC4;
		LOC2 = 0;
		LOC2 = ((*p).Tok.Indent < 0);
		if (LOC2) goto LA3;
		LOC4 = 0;
		LOC4 = ((*p).Tok.Toktype == ((NU8) 108));
		if (!(LOC4)) goto LA5;
		LOC4 = (baseindent <= (*p).Tok.Indent);
		LA5: ;
		LOC2 = LOC4;
		LA3: ;
		if (!LOC2) goto LA1;
		switch ((*p).Tok.Toktype) {
		case ((NU8) 91):
		{
			{
				NIM_BOOL LOC9;
				LOC9 = 0;
				LOC9 = (*p).Strongspaces;
				if (!(LOC9)) goto LA10;
				LOC9 = (((NI8) 0) < (*p).Tok.Strongspacea);
				LA10: ;
				if (!LOC9) goto LA11;
				goto LA1;
			}
			LA11: ;
			result = namedparams_206592(p, result, ((NU8) 27), ((NU8) 92));
			{
				NIM_BOOL LOC15;
				NI LOC16;
				LOC15 = 0;
				LOC16 = 0;
				LOC16 = len_189264(result);
				LOC15 = (1 < LOC16);
				if (!(LOC15)) goto LA17;
				LOC15 = ((*(*result).kindU.S6.Sons->data[1]).Kind == ((NU8) 34));
				LA17: ;
				if (!LOC15) goto LA18;
				(*result).Kind = ((NU8) 38);
			}
			goto LA13;
			LA18: ;
			{
				parsedoblocks_205664(p, result);
			}
			LA13: ;
		}
		break;
		case ((NU8) 19):
		{
			tnode188803* a;
			a = result;
			result = newnodep_205255(((NU8) 27), &(*p));
			addson_189207(result, a);
			parsedoblocks_205664(p, result);
		}
		break;
		case ((NU8) 108):
		{
			result = dotexpr_205968(p, result);
			result = parsegstrlit_206352(p, result);
		}
		break;
		case ((NU8) 93):
		{
			{
				NIM_BOOL LOC26;
				LOC26 = 0;
				LOC26 = (*p).Strongspaces;
				if (!(LOC26)) goto LA27;
				LOC26 = (((NI8) 0) < (*p).Tok.Strongspacea);
				LA27: ;
				if (!LOC26) goto LA28;
				goto LA1;
			}
			LA28: ;
			result = namedparams_206592(p, result, ((NU8) 42), ((NU8) 94));
		}
		break;
		case ((NU8) 95):
		{
			{
				NIM_BOOL LOC33;
				LOC33 = 0;
				LOC33 = (*p).Strongspaces;
				if (!(LOC33)) goto LA34;
				LOC33 = (((NI8) 0) < (*p).Tok.Strongspacea);
				LA34: ;
				if (!LOC33) goto LA35;
				goto LA1;
			}
			LA35: ;
			result = namedparams_206592(p, result, ((NU8) 40), ((NU8) 96));
		}
		break;
		case ((NU8) 2):
		case ((NU8) 112):
		case ((NU8) 71) ... ((NU8) 90):
		case ((NU8) 44):
		case ((NU8) 12):
		{
			{
				tnode188803* a;
				tnode188803* LOC42;
				if (!((*p).Inpragma == 0)) goto LA40;
				a = result;
				result = newnodep_205255(((NU8) 26), &(*p));
				addson_189207(result, a);
				LOC42 = 0;
				LOC42 = parseexpr_205649(p);
				addson_189207(result, LOC42);
			}
			LA40: ;
			goto LA1;
		}
		break;
		default:
		{
			goto LA1;
		}
		break;
		}
	} LA1: ;
	return result;
}

N_NIMCALL(void, parsesymbollist_207312)(tparser205203* p, tnode188803* result, NIM_BOOL allownil) {
	while (1) {
		tnode188803* s;
		s = parsesymbol_205328(p, allownil);
		{
			if (!((*s).Kind == ((NU8) 1))) goto LA4;
			goto LA1;
		}
		LA4: ;
		addson_189207(result, s);
		{
			if (!!(((*p).Tok.Toktype == ((NU8) 103)))) goto LA8;
			goto LA1;
		}
		LA8: ;
		gettok_205238(p);
		optind_205311(p, s);
	} LA1: ;
}

N_NIMCALL(tnode188803*, parsetypedesckaux_207340)(tparser205203* p, NU8 kind, NU8 mode) {
	tnode188803* result;
	result = 0;
	result = newnodep_205255(kind, &(*p));
	gettok_205238(p);
	optind_205311(p, result);
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		tnode188803* LOC8;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = isoperator_205234(&(*p).Tok);
		LOC3 = !(LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = isexprstart_207306(&(*p));
		LA5: ;
		if (!LOC3) goto LA6;
		LOC8 = 0;
		LOC8 = primary_206804(p, mode);
		addson_189207(result, LOC8);
	}
	LA6: ;
	{
		NIM_BOOL LOC11;
		NU8 nodekind;
		tnode188803* list;
		LOC11 = 0;
		LOC11 = (kind == ((NU8) 144));
		if (!(LOC11)) goto LA12;
		LOC11 = ((*p).Tok.Toktype == ((NU8) 67) || (*p).Tok.Toktype == ((NU8) 68));
		LA12: ;
		if (!LOC11) goto LA13;
		{
			if (!((*p).Tok.Toktype == ((NU8) 67))) goto LA17;
			nodekind = ((NU8) 129);
		}
		goto LA15;
		LA17: ;
		{
			nodekind = ((NU8) 130);
		}
		LA15: ;
		gettok_205238(p);
		list = newnodep_205255(nodekind, &(*p));
		addson_189207(result, list);
		parsesymbollist_207312(p, list, NIM_TRUE);
	}
	LA13: ;
	return result;
}

N_NIMCALL(tnode188803*, parsetuple_207090)(tparser205203* p, NIM_BOOL indentallowed) {
	tnode188803* result;
	result = 0;
	result = newnodep_205255(((NU8) 133), &(*p));
	gettok_205238(p);
	{
		if (!((*p).Tok.Toktype == ((NU8) 93))) goto LA3;
		gettok_205238(p);
		optind_205311(p, result);
		while (1) {
			tnode188803* a;
			if (!((*p).Tok.Toktype == ((NU8) 2) || (*p).Tok.Toktype == ((NU8) 112))) goto LA5;
			a = parseidentcolonequals_207008(p, 0);
			addson_189207(result, a);
			{
				if (!!(((*p).Tok.Toktype == ((NU8) 103) || (*p).Tok.Toktype == ((NU8) 104)))) goto LA8;
				goto LA5;
			}
			LA8: ;
			gettok_205238(p);
			skipcomment_205249(p, a);
		} LA5: ;
		optpar_205306(p);
		eat_205295(p, ((NU8) 94));
	}
	goto LA1;
	LA3: ;
	{
		if (!indentallowed) goto LA11;
		skipcomment_205249(p, result);
		{
			NI oldind_207138;
			if (!((*p).Currind < (*p).Tok.Indent)) goto LA15;
			oldind_207138 = (*p).Currind;
			(*p).Currind = (*p).Tok.Indent;
			skipcomment_205249(p, result);
			while (1) {
				switch ((*p).Tok.Toktype) {
				case ((NU8) 2):
				case ((NU8) 112):
				{
					tnode188803* a;
					a = parseidentcolonequals_207008(p, 0);
					skipcomment_205249(p, a);
					addson_189207(result, a);
				}
				break;
				case ((NU8) 1):
				{
					goto LA17;
				}
				break;
				default:
				{
					parmessage_205387(&(*p), ((NU16) 19), &(*p).Tok);
					goto LA17;
				}
				break;
				}
				{
					if (!!(((*p).Tok.Indent == (*p).Currind))) goto LA23;
					goto LA17;
				}
				LA23: ;
			} LA17: ;
			(*p).Currind = oldind_207138;
		}
		LA15: ;
	}
	goto LA1;
	LA11: ;
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, parseprocexpr_207270)(tparser205203* p, NIM_BOOL isexpr) {
	tnode188803* result;
	tlineinfo163527 info;
	NIM_BOOL hassignature;
	NIM_BOOL LOC1;
	tnode188803* params;
	tnode188803* pragmas;
	result = 0;
	info = parlineinfo_205291(&(*p));
	gettok_205238(p);
	LOC1 = 0;
	LOC1 = ((*p).Tok.Toktype == ((NU8) 91) || (*p).Tok.Toktype == ((NU8) 105));
	if (!(LOC1)) goto LA2;
	LOC1 = ((*p).Tok.Indent < 0);
	LA2: ;
	hassignature = LOC1;
	params = parseparamlist_205670(p, NIM_TRUE);
	pragmas = optpragmas_207216(p);
	{
		NIM_BOOL LOC5;
		tnode188803* LOC9;
		LOC5 = 0;
		LOC5 = ((*p).Tok.Toktype == ((NU8) 107));
		if (!(LOC5)) goto LA6;
		LOC5 = isexpr;
		LA6: ;
		if (!LOC5) goto LA7;
		gettok_205238(p);
		skipcomment_205249(p, result);
		LOC9 = 0;
		LOC9 = parsestmt_205654(p);
		result = newprocnode_191214(((NU8) 51), info, LOC9, params, emptynode_189727, emptynode_189727, emptynode_189727, pragmas, emptynode_189727);
	}
	goto LA3;
	LA7: ;
	{
		result = newnodei_189099(((NU8) 145), info);
		{
			if (!hassignature) goto LA13;
			addson_189207(result, params);
			addson_189207(result, pragmas);
		}
		LA13: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(tnode188803*, parseenum_207390)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	result = newnodep_205255(((NU8) 148), &(*p));
	gettok_205238(p);
	addson_189207(result, emptynode_189727);
	optind_205311(p, result);
	while (1) {
		tnode188803* a;
		a = parsesymbol_205328(p, NIM_FALSE);
		{
			NIM_BOOL LOC4;
			LOC4 = 0;
			LOC4 = (0 <= (*p).Tok.Indent);
			if (!(LOC4)) goto LA5;
			LOC4 = ((*p).Tok.Indent <= (*p).Currind);
			LA5: ;
			if (!LOC4) goto LA6;
			add_189390(result, a);
			goto LA1;
		}
		LA6: ;
		{
			NIM_BOOL LOC10;
			tnode188803* b;
			tnode188803* LOC14;
			LOC10 = 0;
			LOC10 = ((*p).Tok.Toktype == ((NU8) 107));
			if (!(LOC10)) goto LA11;
			LOC10 = ((*p).Tok.Indent < 0);
			LA11: ;
			if (!LOC10) goto LA12;
			gettok_205238(p);
			optind_205311(p, a);
			b = a;
			a = newnodep_205255(((NU8) 149), &(*p));
			addson_189207(a, b);
			LOC14 = 0;
			LOC14 = parseexpr_205649(p);
			addson_189207(a, LOC14);
			skipcomment_205249(p, a);
		}
		LA12: ;
		{
			NIM_BOOL LOC17;
			LOC17 = 0;
			LOC17 = ((*p).Tok.Toktype == ((NU8) 103));
			if (!(LOC17)) goto LA18;
			LOC17 = ((*p).Tok.Indent < 0);
			LA18: ;
			if (!LOC17) goto LA19;
			gettok_205238(p);
			rawskipcomment_205420(p, a);
		}
		goto LA15;
		LA19: ;
		{
			skipcomment_205249(p, a);
		}
		LA15: ;
		addson_189207(result, a);
		{
			NIM_BOOL LOC24;
			NIM_BOOL LOC25;
			LOC24 = 0;
			LOC25 = 0;
			LOC25 = (0 <= (*p).Tok.Indent);
			if (!(LOC25)) goto LA26;
			LOC25 = ((*p).Tok.Indent <= (*p).Currind);
			LA26: ;
			LOC24 = LOC25;
			if (LOC24) goto LA27;
			LOC24 = ((*p).Tok.Toktype == ((NU8) 1));
			LA27: ;
			if (!LOC24) goto LA28;
			goto LA1;
		}
		LA28: ;
	} LA1: ;
	{
		NI LOC32;
		NimStringDesc* LOC35;
		LOC32 = 0;
		LOC32 = len_189264(result);
		if (!(LOC32 <= 1)) goto LA33;
		LOC35 = 0;
		LOC35 = prettytok_180379(&(*p).Tok);
		lexmessage_180246(&(*p).Lex, ((NU16) 19), LOC35);
	}
	LA33: ;
	return result;
}

N_NIMCALL(NIM_BOOL, validind_208400)(tparser205203* p) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = ((*p).Tok.Indent < 0);
	if (LOC1) goto LA2;
	LOC1 = ((*p).Currind < (*p).Tok.Indent);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(tnode188803*, parseobjectwhen_208565)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	result = newnodep_205255(((NU8) 138), &(*p));
	while (1) {
		tnode188803* branch;
		tnode188803* LOC2;
		tnode188803* LOC3;
		if (!((*p).Tok.Indent == (*p).Currind)) goto LA1;
		gettok_205238(p);
		branch = newnodep_205255(((NU8) 86), &(*p));
		optind_205311(p, branch);
		LOC2 = 0;
		LOC2 = parseexpr_205649(p);
		addson_189207(branch, LOC2);
		colcom_205830(p, branch);
		LOC3 = 0;
		LOC3 = parseobjectpart_208560(p);
		addson_189207(branch, LOC3);
		skipcomment_205249(p, branch);
		addson_189207(result, branch);
		{
			if (!!(((*p).Tok.Toktype == ((NU8) 20)))) goto LA6;
			goto LA1;
		}
		LA6: ;
	} LA1: ;
	{
		NIM_BOOL LOC10;
		tnode188803* branch;
		tnode188803* LOC14;
		LOC10 = 0;
		LOC10 = ((*p).Tok.Toktype == ((NU8) 21));
		if (!(LOC10)) goto LA11;
		LOC10 = ((*p).Tok.Indent == (*p).Currind);
		LA11: ;
		if (!LOC10) goto LA12;
		branch = newnodep_205255(((NU8) 88), &(*p));
		eat_205295(p, ((NU8) 21));
		colcom_205830(p, branch);
		LOC14 = 0;
		LOC14 = parseobjectpart_208560(p);
		addson_189207(branch, LOC14);
		skipcomment_205249(p, branch);
		addson_189207(result, branch);
	}
	LA12: ;
	return result;
}

N_NIMCALL(void, gettoknoind_205482)(tparser205203* p) {
	gettok_205238(p);
	{
		if (!(0 <= (*p).Tok.Indent)) goto LA3;
		parmessage_205243(&(*p), ((NU16) 33), ((NimStringDesc*) &TMP1558));
	}
	LA3: ;
}

N_NIMCALL(tnode188803*, parseobjectcase_208593)(tparser205203* p) {
	tnode188803* result;
	tnode188803* a;
	tnode188803* LOC1;
	tnode188803* LOC2;
	NIM_BOOL wasindented;
	NI oldind;
	result = 0;
	result = newnodep_205255(((NU8) 137), &(*p));
	gettoknoind_205482(p);
	a = newnodep_205255(((NU8) 35), &(*p));
	LOC1 = 0;
	LOC1 = identwithpragma_206984(p);
	addson_189207(a, LOC1);
	eat_205295(p, ((NU8) 105));
	LOC2 = 0;
	LOC2 = parsetypedesc_205659(p);
	addson_189207(a, LOC2);
	addson_189207(a, emptynode_189727);
	addson_189207(result, a);
	{
		if (!((*p).Tok.Toktype == ((NU8) 105))) goto LA5;
		gettok_205238(p);
	}
	LA5: ;
	skipcomment_205249(p, result);
	wasindented = NIM_FALSE;
	oldind = (*p).Currind;
	{
		if (!((*p).Currind < (*p).Tok.Indent)) goto LA9;
		(*p).Currind = (*p).Tok.Indent;
		wasindented = NIM_TRUE;
	}
	LA9: ;
	while (1) {
		tnode188803* b;
		tnode188803* fields;
		if (!((*p).Tok.Indent == (*p).Currind)) goto LA11;
		b = 0;
		switch ((*p).Tok.Toktype) {
		case ((NU8) 48):
		{
			b = newnodep_205255(((NU8) 85), &(*p));
			exprlist_205931(p, ((NU8) 105), b);
		}
		break;
		case ((NU8) 21):
		{
			b = newnodep_205255(((NU8) 88), &(*p));
			gettok_205238(p);
			eat_205295(p, ((NU8) 105));
		}
		break;
		default:
		{
			goto LA11;
		}
		break;
		}
		skipcomment_205249(p, b);
		fields = parseobjectpart_208560(p);
		{
			if (!((*fields).Kind == ((NU8) 1))) goto LA17;
			parmessage_205387(&(*p), ((NU16) 19), &(*p).Tok);
			fields = newnodep_205255(((NU8) 23), &(*p));
		}
		LA17: ;
		addson_189207(b, fields);
		addson_189207(result, b);
		{
			if (!((*b).Kind == ((NU8) 88))) goto LA21;
			goto LA11;
		}
		LA21: ;
	} LA11: ;
	{
		if (!wasindented) goto LA25;
		(*p).Currind = oldind;
	}
	LA25: ;
	return result;
}

N_NIMCALL(tnode188803*, parseobjectpart_208560)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	{
		NI oldind_208642;
		if (!((*p).Currind < (*p).Tok.Indent)) goto LA3;
		result = newnodep_205255(((NU8) 136), &(*p));
		oldind_208642 = (*p).Currind;
		(*p).Currind = (*p).Tok.Indent;
		rawskipcomment_205420(p, result);
		while (1) {
			if (!((*p).Tok.Indent == (*p).Currind)) goto LA5;
			switch ((*p).Tok.Toktype) {
			case ((NU8) 11):
			case ((NU8) 65):
			case ((NU8) 2):
			case ((NU8) 112):
			case ((NU8) 44):
			{
				tnode188803* LOC7;
				LOC7 = 0;
				LOC7 = parseobjectpart_208560(p);
				addson_189207(result, LOC7);
			}
			break;
			default:
			{
				parmessage_205387(&(*p), ((NU16) 19), &(*p).Tok);
				goto LA5;
			}
			break;
			}
		} LA5: ;
		(*p).Currind = oldind_208642;
	}
	goto LA1;
	LA3: ;
	{
		switch ((*p).Tok.Toktype) {
		case ((NU8) 65):
		{
			result = parseobjectwhen_208565(p);
		}
		break;
		case ((NU8) 11):
		{
			result = parseobjectcase_208593(p);
		}
		break;
		case ((NU8) 2):
		case ((NU8) 112):
		{
			result = parseidentcolonequals_207008(p, 1);
			skipcomment_205249(p, result);
		}
		break;
		case ((NU8) 44):
		{
			result = newnodep_205255(((NU8) 23), &(*p));
			gettok_205238(p);
		}
		break;
		default:
		{
			result = emptynode_189727;
		}
		break;
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, parseobject_207395)(tparser205203* p) {
	tnode188803* result;
	tnode188803* LOC25;
	result = 0;
	result = newnodep_205255(((NU8) 132), &(*p));
	gettok_205238(p);
	{
		NIM_BOOL LOC3;
		tnode188803* LOC7;
		LOC3 = 0;
		LOC3 = ((*p).Tok.Toktype == ((NU8) 99));
		if (!(LOC3)) goto LA4;
		LOC3 = validind_208400(p);
		LA4: ;
		if (!LOC3) goto LA5;
		LOC7 = 0;
		LOC7 = parsepragma_206889(p);
		addson_189207(result, LOC7);
	}
	goto LA1;
	LA5: ;
	{
		addson_189207(result, emptynode_189727);
	}
	LA1: ;
	{
		NIM_BOOL LOC11;
		tnode188803* a;
		tnode188803* LOC15;
		LOC11 = 0;
		LOC11 = ((*p).Tok.Toktype == ((NU8) 48));
		if (!(LOC11)) goto LA12;
		LOC11 = ((*p).Tok.Indent < 0);
		LA12: ;
		if (!LOC11) goto LA13;
		a = newnodep_205255(((NU8) 77), &(*p));
		gettok_205238(p);
		LOC15 = 0;
		LOC15 = parsetypedesc_205659(p);
		addson_189207(a, LOC15);
		addson_189207(result, a);
	}
	goto LA9;
	LA13: ;
	{
		addson_189207(result, emptynode_189727);
	}
	LA9: ;
	{
		if (!((*p).Tok.Toktype == ((NU8) 111))) goto LA19;
		skipcomment_205249(p, result);
	}
	LA19: ;
	{
		if (!!(((*p).Currind < (*p).Tok.Indent))) goto LA23;
		addson_189207(result, emptynode_189727);
		goto BeforeRet;
	}
	LA23: ;
	LOC25 = 0;
	LOC25 = parseobjectpart_208560(p);
	addson_189207(result, LOC25);
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, parsetypeclassparam_208684)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	{
		tnode188803* LOC5;
		if (!((*p).Tok.Toktype == ((NU8) 64))) goto LA3;
		gettok_205238(p);
		result = newnode_189065(((NU8) 141));
		LOC5 = 0;
		LOC5 = parsesymbol_205328(p, NIM_FALSE);
		addson_189207(result, LOC5);
	}
	goto LA1;
	LA3: ;
	{
		result = parsesymbol_205328(p, NIM_FALSE);
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, parsetypeclass_207400)(tparser205203* p) {
	tnode188803* result;
	tnode188803* args;
	tnode188803* LOC1;
	result = 0;
	result = newnodep_205255(((NU8) 134), &(*p));
	gettok_205238(p);
	args = newnode_189065(((NU8) 150));
	addson_189207(result, args);
	LOC1 = 0;
	LOC1 = parsetypeclassparam_208684(p);
	addson_189207(args, LOC1);
	while (1) {
		tnode188803* LOC3;
		if (!((*p).Tok.Toktype == ((NU8) 103))) goto LA2;
		gettok_205238(p);
		LOC3 = 0;
		LOC3 = parsetypeclassparam_208684(p);
		addson_189207(args, LOC3);
	} LA2: ;
	{
		NIM_BOOL LOC6;
		tnode188803* LOC10;
		LOC6 = 0;
		LOC6 = ((*p).Tok.Toktype == ((NU8) 99));
		if (!(LOC6)) goto LA7;
		LOC6 = validind_208400(p);
		LA7: ;
		if (!LOC6) goto LA8;
		LOC10 = 0;
		LOC10 = parsepragma_206889(p);
		addson_189207(result, LOC10);
	}
	goto LA4;
	LA8: ;
	{
		addson_189207(result, emptynode_189727);
	}
	LA4: ;
	{
		NIM_BOOL LOC14;
		tnode188803* a;
		LOC14 = 0;
		LOC14 = ((*p).Tok.Toktype == ((NU8) 48));
		if (!(LOC14)) goto LA15;
		LOC14 = ((*p).Tok.Indent < 0);
		LA15: ;
		if (!LOC14) goto LA16;
		a = newnodep_205255(((NU8) 77), &(*p));
		gettok_205238(p);
		while (1) {
			tnode188803* LOC19;
			LOC19 = 0;
			LOC19 = parsetypedesc_205659(p);
			addson_189207(a, LOC19);
			{
				if (!!(((*p).Tok.Toktype == ((NU8) 103)))) goto LA22;
				goto LA18;
			}
			LA22: ;
			gettok_205238(p);
		} LA18: ;
		addson_189207(result, a);
	}
	goto LA12;
	LA16: ;
	{
		addson_189207(result, emptynode_189727);
	}
	LA12: ;
	{
		if (!((*p).Tok.Toktype == ((NU8) 111))) goto LA27;
		skipcomment_205249(p, result);
	}
	LA27: ;
	{
		if (!!(((*p).Currind < (*p).Tok.Indent))) goto LA31;
		addson_189207(result, emptynode_189727);
	}
	goto LA29;
	LA31: ;
	{
		tnode188803* LOC34;
		LOC34 = 0;
		LOC34 = parsestmt_205654(p);
		addson_189207(result, LOC34);
	}
	LA29: ;
	return result;
}

static N_INLINE(NI, sonslen_189181)(tnode188803* n) {
	NI result;
	result = 0;
	{
		if (!(*n).kindU.S6.Sons == 0) goto LA3;
		result = 0;
	}
	goto LA1;
	LA3: ;
	{
		result = (*n).kindU.S6.Sons->Sup.len;
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, newintnodep_205260)(NU8 kind, NI64 intval, tparser205203* p) {
	tnode188803* result;
	result = 0;
	result = newnodep_205255(kind, p);
	(*result).kindU.S1.Intval = intval;
	return result;
}

N_NIMCALL(void, setbaseflags_205323)(tnode188803* n, NU8 base) {
	switch (base) {
	case ((NU8) 0):
	{
	}
	break;
	case ((NU8) 1):
	{
		(*n).Flags |=((NI16)(1)<<((((NU8) 1))%(sizeof(NI16)*8)));
	}
	break;
	case ((NU8) 2):
	{
		(*n).Flags |=((NI16)(1)<<((((NU8) 2))%(sizeof(NI16)*8)));
	}
	break;
	case ((NU8) 3):
	{
		(*n).Flags |=((NI16)(1)<<((((NU8) 3))%(sizeof(NI16)*8)));
	}
	break;
	}
}

N_NIMCALL(tnode188803*, newfloatnodep_205266)(NU8 kind, NF floatval, tparser205203* p) {
	tnode188803* result;
	result = 0;
	result = newnodep_205255(kind, p);
	(*result).kindU.S2.Floatval = floatval;
	return result;
}

N_NIMCALL(tnode188803*, exprcoloneqexprlist_206232)(tparser205203* p, NU8 kind, NU8 endtok) {
	tnode188803* result;
	result = 0;
	result = newnodep_205255(kind, &(*p));
	exprcoloneqexprlistaux_205993(p, endtok, result);
	return result;
}

N_NIMCALL(void, semistmtlist_206378)(tparser205203* p, tnode188803* result) {
	tnode188803* LOC1;
	(*p).Insemistmtlist += 1;
	LOC1 = 0;
	LOC1 = complexorsimplestmt_206367(p);
	add_189390(result, LOC1);
	while (1) {
		tnode188803* LOC3;
		if (!((*p).Tok.Toktype == ((NU8) 104))) goto LA2;
		gettok_205238(p);
		optind_205311(p, result);
		LOC3 = 0;
		LOC3 = complexorsimplestmt_206367(p);
		add_189390(result, LOC3);
	} LA2: ;
	(*p).Insemistmtlist -= 1;
	(*result).Kind = ((NU8) 125);
}

N_NIMCALL(tnode188803*, parsepar_206427)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	result = newnodep_205255(((NU8) 37), &(*p));
	gettok_205238(p);
	optind_205311(p, result);
	{
		if (!((TMP1569[(*p).Tok.Toktype/8] &(1<<((*p).Tok.Toktype%8)))!=0)) goto LA3;
		semistmtlist_206378(p, result);
	}
	goto LA1;
	LA3: ;
	{
		if (!((*p).Tok.Toktype == ((NU8) 104))) goto LA6;
		gettok_205238(p);
		optind_205311(p, result);
		semistmtlist_206378(p, result);
	}
	goto LA1;
	LA6: ;
	{
		tnode188803* a_206464;
		if (!!(((*p).Tok.Toktype == ((NU8) 92)))) goto LA9;
		a_206464 = simpleexpr_206372(p, ((NU8) 0));
		{
			tnode188803* b;
			tnode188803* asgn;
			if (!((*p).Tok.Toktype == ((NU8) 107))) goto LA13;
			gettok_205238(p);
			optind_205311(p, result);
			b = parseexpr_205649(p);
			asgn = newnodei_190803(((NU8) 73), (*a_206464).Info, 2);
			asgnRefNoCycle((void**) &(*asgn).kindU.S6.Sons->data[0], a_206464);
			asgnRefNoCycle((void**) &(*asgn).kindU.S6.Sons->data[1], b);
			add_189390(result, asgn);
			{
				if (!((*p).Tok.Toktype == ((NU8) 104))) goto LA17;
				semistmtlist_206378(p, result);
			}
			LA17: ;
		}
		goto LA11;
		LA13: ;
		{
			if (!((*p).Tok.Toktype == ((NU8) 104))) goto LA20;
			add_189390(result, a_206464);
			semistmtlist_206378(p, result);
		}
		goto LA11;
		LA20: ;
		{
			a_206464 = colonorequals_205897(p, a_206464);
			add_189390(result, a_206464);
			{
				if (!((*p).Tok.Toktype == ((NU8) 103))) goto LA25;
				gettok_205238(p);
				skipcomment_205249(p, a_206464);
				while (1) {
					NIM_BOOL LOC28;
					tnode188803* a;
					LOC28 = 0;
					LOC28 = !(((*p).Tok.Toktype == ((NU8) 92)));
					if (!(LOC28)) goto LA29;
					LOC28 = !(((*p).Tok.Toktype == ((NU8) 1)));
					LA29: ;
					if (!LOC28) goto LA27;
					a = exprcoloneqexpr_205923(p);
					addson_189207(result, a);
					{
						if (!!(((*p).Tok.Toktype == ((NU8) 103)))) goto LA32;
						goto LA27;
					}
					LA32: ;
					gettok_205238(p);
					skipcomment_205249(p, a);
				} LA27: ;
			}
			LA25: ;
		}
		LA11: ;
	}
	goto LA1;
	LA9: ;
	LA1: ;
	optpar_205306(p);
	eat_205295(p, ((NU8) 92));
	return result;
}

N_NIMCALL(tnode188803*, setortableconstr_206241)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	result = newnodep_205255(((NU8) 39), &(*p));
	gettok_205238(p);
	optind_205311(p, result);
	{
		if (!((*p).Tok.Toktype == ((NU8) 105))) goto LA3;
		gettok_205238(p);
		(*result).Kind = ((NU8) 54);
	}
	goto LA1;
	LA3: ;
	{
		while (1) {
			tnode188803* a;
			if (!!(((*p).Tok.Toktype == ((NU8) 96) || (*p).Tok.Toktype == ((NU8) 1)))) goto LA6;
			a = exprcoloneqexpr_205923(p);
			{
				if (!((*a).Kind == ((NU8) 34))) goto LA9;
				(*result).Kind = ((NU8) 54);
			}
			LA9: ;
			addson_189207(result, a);
			{
				if (!!(((*p).Tok.Toktype == ((NU8) 103)))) goto LA13;
				goto LA6;
			}
			LA13: ;
			gettok_205238(p);
			skipcomment_205249(p, a);
		} LA6: ;
	}
	LA1: ;
	optpar_205306(p);
	eat_205295(p, ((NU8) 96));
	return result;
}

N_NIMCALL(tnode188803*, parsecast_206291)(tparser205203* p) {
	tnode188803* result;
	tnode188803* LOC1;
	tnode188803* LOC2;
	result = 0;
	result = newnodep_205255(((NU8) 61), &(*p));
	gettok_205238(p);
	eat_205295(p, ((NU8) 93));
	optind_205311(p, result);
	LOC1 = 0;
	LOC1 = parsetypedesc_205659(p);
	addson_189207(result, LOC1);
	optpar_205306(p);
	eat_205295(p, ((NU8) 94));
	eat_205295(p, ((NU8) 91));
	optind_205311(p, result);
	LOC2 = 0;
	LOC2 = parseexpr_205649(p);
	addson_189207(result, LOC2);
	optpar_205306(p);
	eat_205295(p, ((NU8) 92));
	return result;
}

N_NIMCALL(tnode188803*, identorliteral_206562)(tparser205203* p, NU8 mode) {
	tnode188803* result;
	result = 0;
	switch ((*p).Tok.Toktype) {
	case ((NU8) 2):
	{
		result = newidentnodep_205278((*p).Tok.Ident, &(*p));
		gettok_205238(p);
		result = parsegstrlit_206352(p, result);
	}
	break;
	case ((NU8) 112):
	{
		result = parsesymbol_205328(p, NIM_FALSE);
	}
	break;
	case ((NU8) 71):
	{
		result = newintnodep_205260(((NU8) 6), (*p).Tok.Inumber, &(*p));
		setbaseflags_205323(result, (*p).Tok.Base);
		gettok_205238(p);
	}
	break;
	case ((NU8) 72):
	{
		result = newintnodep_205260(((NU8) 7), (*p).Tok.Inumber, &(*p));
		setbaseflags_205323(result, (*p).Tok.Base);
		gettok_205238(p);
	}
	break;
	case ((NU8) 73):
	{
		result = newintnodep_205260(((NU8) 8), (*p).Tok.Inumber, &(*p));
		setbaseflags_205323(result, (*p).Tok.Base);
		gettok_205238(p);
	}
	break;
	case ((NU8) 74):
	{
		result = newintnodep_205260(((NU8) 9), (*p).Tok.Inumber, &(*p));
		setbaseflags_205323(result, (*p).Tok.Base);
		gettok_205238(p);
	}
	break;
	case ((NU8) 75):
	{
		result = newintnodep_205260(((NU8) 10), (*p).Tok.Inumber, &(*p));
		setbaseflags_205323(result, (*p).Tok.Base);
		gettok_205238(p);
	}
	break;
	case ((NU8) 76):
	{
		result = newintnodep_205260(((NU8) 11), (*p).Tok.Inumber, &(*p));
		setbaseflags_205323(result, (*p).Tok.Base);
		gettok_205238(p);
	}
	break;
	case ((NU8) 77):
	{
		result = newintnodep_205260(((NU8) 12), (*p).Tok.Inumber, &(*p));
		setbaseflags_205323(result, (*p).Tok.Base);
		gettok_205238(p);
	}
	break;
	case ((NU8) 78):
	{
		result = newintnodep_205260(((NU8) 13), (*p).Tok.Inumber, &(*p));
		setbaseflags_205323(result, (*p).Tok.Base);
		gettok_205238(p);
	}
	break;
	case ((NU8) 79):
	{
		result = newintnodep_205260(((NU8) 14), (*p).Tok.Inumber, &(*p));
		setbaseflags_205323(result, (*p).Tok.Base);
		gettok_205238(p);
	}
	break;
	case ((NU8) 80):
	{
		result = newintnodep_205260(((NU8) 15), (*p).Tok.Inumber, &(*p));
		setbaseflags_205323(result, (*p).Tok.Base);
		gettok_205238(p);
	}
	break;
	case ((NU8) 81):
	{
		result = newfloatnodep_205266(((NU8) 16), (*p).Tok.Fnumber, &(*p));
		setbaseflags_205323(result, (*p).Tok.Base);
		gettok_205238(p);
	}
	break;
	case ((NU8) 82):
	{
		result = newfloatnodep_205266(((NU8) 17), (*p).Tok.Fnumber, &(*p));
		setbaseflags_205323(result, (*p).Tok.Base);
		gettok_205238(p);
	}
	break;
	case ((NU8) 83):
	{
		result = newfloatnodep_205266(((NU8) 18), (*p).Tok.Fnumber, &(*p));
		setbaseflags_205323(result, (*p).Tok.Base);
		gettok_205238(p);
	}
	break;
	case ((NU8) 84):
	{
		result = newfloatnodep_205266(((NU8) 19), (*p).Tok.Fnumber, &(*p));
		setbaseflags_205323(result, (*p).Tok.Base);
		gettok_205238(p);
	}
	break;
	case ((NU8) 85):
	{
		result = newstrnodep_205272(((NU8) 20), (*p).Tok.Literal, &(*p));
		gettok_205238(p);
	}
	break;
	case ((NU8) 86):
	{
		result = newstrnodep_205272(((NU8) 21), (*p).Tok.Literal, &(*p));
		gettok_205238(p);
	}
	break;
	case ((NU8) 87):
	{
		result = newstrnodep_205272(((NU8) 22), (*p).Tok.Literal, &(*p));
		gettok_205238(p);
	}
	break;
	case ((NU8) 90):
	{
		result = newintnodep_205260(((NU8) 5), ((NI64) (((NU8)((*p).Tok.Literal->data[0])))), &(*p));
		gettok_205238(p);
	}
	break;
	case ((NU8) 44):
	{
		result = newnodep_205255(((NU8) 23), &(*p));
		gettok_205238(p);
	}
	break;
	case ((NU8) 91):
	{
		{
			if (!((6 &(1<<((mode)&7)))!=0)) goto LA25;
			result = exprcoloneqexprlist_206232(p, ((NU8) 37), ((NU8) 92));
		}
		goto LA23;
		LA25: ;
		{
			result = parsepar_206427(p);
		}
		LA23: ;
	}
	break;
	case ((NU8) 95):
	{
		result = setortableconstr_206241(p);
	}
	break;
	case ((NU8) 93):
	{
		result = exprcoloneqexprlist_206232(p, ((NU8) 41), ((NU8) 94));
	}
	break;
	case ((NU8) 12):
	{
		result = parsecast_206291(p);
	}
	break;
	default:
	{
		parmessage_205387(&(*p), ((NU16) 60), &(*p).Tok);
		gettok_205238(p);
		result = emptynode_189727;
	}
	break;
	}
	return result;
}

N_NIMCALL(tnode188803*, primary_206804)(tparser205203* p, NU8 mode) {
	tnode188803* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL issigil;
		tnode188803* a;
		LOC3 = 0;
		LOC3 = isoperator_205234(&(*p).Tok);
		if (!LOC3) goto LA4;
		issigil = issigillike_205684(&(*p).Tok);
		result = newnodep_205255(((NU8) 30), &(*p));
		a = newidentnodep_205278((*p).Tok.Ident, &(*p));
		addson_189207(result, a);
		gettok_205238(p);
		optind_205311(p, a);
		{
			NI baseind;
			tnode188803* LOC10;
			if (!issigil) goto LA8;
			baseind = (*p).Lex.Currlineindent;
			LOC10 = 0;
			LOC10 = primary_206804(p, ((NU8) 3));
			addson_189207(result, LOC10);
			result = primarysuffix_206609(p, result, baseind);
		}
		goto LA6;
		LA8: ;
		{
			tnode188803* LOC12;
			LOC12 = 0;
			LOC12 = primary_206804(p, ((NU8) 0));
			addson_189207(result, LOC12);
		}
		LA6: ;
		goto BeforeRet;
	}
	LA4: ;
	switch ((*p).Tok.Toktype) {
	case ((NU8) 64):
	{
		result = parsetypedesckaux_207340(p, ((NU8) 141), mode);
	}
	break;
	case ((NU8) 54):
	{
		result = parsetypedesckaux_207340(p, ((NU8) 139), mode);
	}
	break;
	case ((NU8) 52):
	{
		result = parsetypedesckaux_207340(p, ((NU8) 140), mode);
	}
	break;
	case ((NU8) 17):
	{
		result = parsetypedesckaux_207340(p, ((NU8) 144), mode);
	}
	break;
	case ((NU8) 62):
	{
		result = parsetypedesckaux_207340(p, ((NU8) 131), mode);
	}
	break;
	case ((NU8) 61):
	{
		result = parsetuple_207090(p, (mode == ((NU8) 2)));
	}
	break;
	case ((NU8) 51):
	{
		result = parseprocexpr_207270(p, !(((6 &(1<<((mode)&7)))!=0)));
	}
	break;
	case ((NU8) 37):
	{
		result = parseprocexpr_207270(p, !(((6 &(1<<((mode)&7)))!=0)));
		{
			if (!((*result).Kind == ((NU8) 51))) goto LA23;
			(*result).Kind = ((NU8) 84);
		}
		goto LA21;
		LA23: ;
		{
			(*result).Kind = ((NU8) 146);
		}
		LA21: ;
	}
	break;
	case ((NU8) 23):
	{
		{
			if (!(mode == ((NU8) 2))) goto LA29;
			result = parseenum_207390(p);
		}
		goto LA27;
		LA29: ;
		{
			result = newnodep_205255(((NU8) 148), &(*p));
			gettok_205238(p);
		}
		LA27: ;
	}
	break;
	case ((NU8) 47):
	{
		{
			if (!(mode == ((NU8) 2))) goto LA35;
			result = parseobject_207395(p);
		}
		goto LA33;
		LA35: ;
		{
			result = newnodep_205255(((NU8) 132), &(*p));
			gettok_205238(p);
		}
		LA33: ;
	}
	break;
	case ((NU8) 29):
	{
		{
			if (!(mode == ((NU8) 2))) goto LA41;
			result = parsetypeclass_207400(p);
		}
		goto LA39;
		LA41: ;
		{
			parmessage_205387(&(*p), ((NU16) 12), &(*p).Tok);
		}
		LA39: ;
	}
	break;
	case ((NU8) 3):
	{
		tnode188803* LOC45;
		result = newnodep_205255(((NU8) 63), &(*p));
		gettoknoind_205482(p);
		LOC45 = 0;
		LOC45 = primary_206804(p, ((NU8) 0));
		addson_189207(result, LOC45);
	}
	break;
	case ((NU8) 58):
	{
		tlineinfo163527 info;
		tnode188803* next;
		info = parlineinfo_205291(&(*p));
		gettoknoind_205482(p);
		next = primary_206804(p, ((NU8) 0));
		{
			NIM_BOOL LOC49;
			NI LOC51;
			tnodeseq188797* LOC54;
			TY207692 LOC55;
			LOC49 = 0;
			LOC49 = ((*next).Kind == ((NU8) 41));
			if (!(LOC49)) goto LA50;
			LOC51 = 0;
			LOC51 = sonslen_189181(next);
			LOC49 = (LOC51 == 1);
			LA50: ;
			if (!LOC49) goto LA52;
			LOC54 = 0;
			LOC54 = (tnodeseq188797*) newSeq((&NTI188797), 1);
			memset((void*)LOC55, 0, sizeof(LOC55));
			LOC55[0] = (*next).kindU.S6.Sons->data[0];
			asgnRefNoCycle((void**) &LOC54->data[0], LOC55[0]);
			result = newnode_191003(((NU8) 135), info, LOC54, NIM_NIL);
		}
		goto LA47;
		LA52: ;
		{
			tnodeseq188797* LOC57;
			TY207692 LOC58;
			LOC57 = 0;
			LOC57 = (tnodeseq188797*) newSeq((&NTI188797), 1);
			memset((void*)LOC58, 0, sizeof(LOC58));
			LOC58[0] = next;
			asgnRefNoCycle((void**) &LOC57->data[0], LOC58[0]);
			result = newnode_191003(((NU8) 62), info, LOC57, NIM_NIL);
		}
		LA47: ;
	}
	break;
	case ((NU8) 8):
	{
		tnode188803* LOC60;
		result = newnodep_205255(((NU8) 55), &(*p));
		gettok_205238(p);
		optind_205311(p, result);
		LOC60 = 0;
		LOC60 = primary_206804(p, ((NU8) 0));
		addson_189207(result, LOC60);
	}
	break;
	default:
	{
		NI baseind;
		baseind = (*p).Lex.Currlineindent;
		result = identorliteral_206562(p, mode);
		{
			if (!!((mode == ((NU8) 3)))) goto LA64;
			result = primarysuffix_206609(p, result, baseind);
		}
		LA64: ;
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(NI, getprecedence_205714)(ttoken180174* tok, NIM_BOOL strongspaces) {
	NI result;
	result = 0;
	switch ((*tok).Toktype) {
	case ((NU8) 110):
	{
		NI l;
		NIM_CHAR relevantchar;
		l = (*(*tok).Ident).S->Sup.len;
		relevantchar = relevantoprchar_205676((*tok).Ident);
		switch (((NU8)(relevantchar))) {
		case 36:
		case 94:
		{
			{
				if (!((NU8)((*(*tok).Ident).S->data[(NI32)(l - 1)]) == (NU8)(61))) goto LA5;
				result = 1;
			}
			goto LA3;
			LA5: ;
			{
				NI LOC8;
				LOC8 = 0;
				{
					if (!strongspaces) goto LA11;
					LOC8 = (NI32)(100 - (NI32)(((NI) ((*tok).Strongspacea)) * 10));
				}
				goto LA9;
				LA11: ;
				{
					LOC8 = 0;
				}
				LA9: ;
				result = (NI32)(10 + LOC8);
			}
			LA3: ;
		}
		break;
		case 42:
		case 37:
		case 47:
		case 92:
		{
			{
				if (!((NU8)((*(*tok).Ident).S->data[(NI32)(l - 1)]) == (NU8)(61))) goto LA17;
				result = 1;
			}
			goto LA15;
			LA17: ;
			{
				NI LOC20;
				LOC20 = 0;
				{
					if (!strongspaces) goto LA23;
					LOC20 = (NI32)(100 - (NI32)(((NI) ((*tok).Strongspacea)) * 10));
				}
				goto LA21;
				LA23: ;
				{
					LOC20 = 0;
				}
				LA21: ;
				result = (NI32)(9 + LOC20);
			}
			LA15: ;
		}
		break;
		case 126:
		{
			NI LOC27;
			LOC27 = 0;
			{
				if (!strongspaces) goto LA30;
				LOC27 = (NI32)(100 - (NI32)(((NI) ((*tok).Strongspacea)) * 10));
			}
			goto LA28;
			LA30: ;
			{
				LOC27 = 0;
			}
			LA28: ;
			result = (NI32)(8 + LOC27);
		}
		break;
		case 43:
		case 45:
		case 124:
		{
			{
				if (!((NU8)((*(*tok).Ident).S->data[(NI32)(l - 1)]) == (NU8)(61))) goto LA36;
				result = 1;
			}
			goto LA34;
			LA36: ;
			{
				NI LOC39;
				LOC39 = 0;
				{
					if (!strongspaces) goto LA42;
					LOC39 = (NI32)(100 - (NI32)(((NI) ((*tok).Strongspacea)) * 10));
				}
				goto LA40;
				LA42: ;
				{
					LOC39 = 0;
				}
				LA40: ;
				result = (NI32)(8 + LOC39);
			}
			LA34: ;
		}
		break;
		case 38:
		{
			{
				if (!((NU8)((*(*tok).Ident).S->data[(NI32)(l - 1)]) == (NU8)(61))) goto LA48;
				result = 1;
			}
			goto LA46;
			LA48: ;
			{
				NI LOC51;
				LOC51 = 0;
				{
					if (!strongspaces) goto LA54;
					LOC51 = (NI32)(100 - (NI32)(((NI) ((*tok).Strongspacea)) * 10));
				}
				goto LA52;
				LA54: ;
				{
					LOC51 = 0;
				}
				LA52: ;
				result = (NI32)(7 + LOC51);
			}
			LA46: ;
		}
		break;
		case 61:
		case 60:
		case 62:
		case 33:
		{
			NI LOC58;
			LOC58 = 0;
			{
				if (!strongspaces) goto LA61;
				LOC58 = (NI32)(100 - (NI32)(((NI) ((*tok).Strongspacea)) * 10));
			}
			goto LA59;
			LA61: ;
			{
				LOC58 = 0;
			}
			LA59: ;
			result = (NI32)(5 + LOC58);
		}
		break;
		case 46:
		{
			{
				if (!((NU8)((*(*tok).Ident).S->data[(NI32)(l - 1)]) == (NU8)(61))) goto LA67;
				result = 1;
			}
			goto LA65;
			LA67: ;
			{
				NI LOC70;
				LOC70 = 0;
				{
					if (!strongspaces) goto LA73;
					LOC70 = (NI32)(100 - (NI32)(((NI) ((*tok).Strongspacea)) * 10));
				}
				goto LA71;
				LA73: ;
				{
					LOC70 = 0;
				}
				LA71: ;
				result = (NI32)(6 + LOC70);
			}
			LA65: ;
		}
		break;
		case 63:
		{
			NI LOC77;
			LOC77 = 0;
			{
				if (!strongspaces) goto LA80;
				LOC77 = (NI32)(100 - (NI32)(((NI) ((*tok).Strongspacea)) * 10));
			}
			goto LA78;
			LA80: ;
			{
				LOC77 = 0;
			}
			LA78: ;
			result = (NI32)(2 + LOC77);
		}
		break;
		default:
		{
			{
				if (!((NU8)((*(*tok).Ident).S->data[(NI32)(l - 1)]) == (NU8)(61))) goto LA86;
				result = 1;
			}
			goto LA84;
			LA86: ;
			{
				NI LOC89;
				LOC89 = 0;
				{
					if (!strongspaces) goto LA92;
					LOC89 = (NI32)(100 - (NI32)(((NI) ((*tok).Strongspacea)) * 10));
				}
				goto LA90;
				LA92: ;
				{
					LOC89 = 0;
				}
				LA90: ;
				result = (NI32)(2 + LOC89);
			}
			LA84: ;
		}
		break;
		}
	}
	break;
	case ((NU8) 18):
	case ((NU8) 43):
	case ((NU8) 56):
	case ((NU8) 57):
	{
		result = 9;
	}
	break;
	case ((NU8) 32):
	case ((NU8) 46):
	case ((NU8) 35):
	case ((NU8) 36):
	case ((NU8) 45):
	case ((NU8) 48):
	case ((NU8) 5):
	{
		result = 5;
	}
	break;
	case ((NU8) 109):
	{
		NI LOC98;
		LOC98 = 0;
		{
			if (!strongspaces) goto LA101;
			LOC98 = (NI32)(100 - (NI32)(((NI) ((*tok).Strongspacea)) * 10));
		}
		goto LA99;
		LA101: ;
		{
			LOC98 = 0;
		}
		LA99: ;
		result = (NI32)(6 + LOC98);
	}
	break;
	case ((NU8) 4):
	{
		result = 4;
	}
	break;
	case ((NU8) 49):
	case ((NU8) 69):
	case ((NU8) 52):
	case ((NU8) 54):
	{
		result = 3;
	}
	break;
	default:
	{
		result = -10;
	}
	break;
	}
	return result;
}

N_NIMCALL(NIM_BOOL, isunary_205778)(tparser205203* p) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	NIM_BOOL LOC3;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC3 = 0;
	LOC3 = (*p).Strongspaces;
	if (!(LOC3)) goto LA4;
	LOC3 = ((*p).Tok.Toktype == ((NU8) 110) || (*p).Tok.Toktype == ((NU8) 109));
	LA4: ;
	LOC2 = LOC3;
	if (!(LOC2)) goto LA5;
	LOC2 = ((*p).Tok.Strongspaceb == ((NI8) 0));
	LA5: ;
	LOC1 = LOC2;
	if (!(LOC1)) goto LA6;
	LOC1 = (((NI8) 0) < (*p).Tok.Strongspacea);
	LA6: ;
	result = LOC1;
	return result;
}

static N_INLINE(void, checkbinary_205799)(tparser205203* p) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (*p).Strongspaces;
		if (!(LOC3)) goto LA4;
		LOC3 = ((*p).Tok.Toktype == ((NU8) 110));
		LA4: ;
		if (!LOC3) goto LA5;
		{
			NIM_BOOL LOC9;
			NimStringDesc* LOC13;
			NimStringDesc* LOC14;
			LOC9 = 0;
			LOC9 = (((NI8) 0) < (*p).Tok.Strongspaceb);
			if (!(LOC9)) goto LA10;
			LOC9 = !(((*p).Tok.Strongspacea == (*p).Tok.Strongspaceb));
			LA10: ;
			if (!LOC9) goto LA11;
			LOC13 = 0;
			LOC13 = prettytok_180379(&(*p).Tok);
			LOC14 = 0;
			LOC14 = nsuFormatSingleElem(((NimStringDesc*) &TMP1570), LOC13);
			parmessage_205243(p, ((NU16) 4), LOC14);
		}
		goto LA7;
		LA11: ;
		{
			if (!!(((*p).Tok.Strongspacea == 0 || (*p).Tok.Strongspacea == 1 || (*p).Tok.Strongspacea == 2 || (*p).Tok.Strongspacea == 4 || (*p).Tok.Strongspacea == 8))) goto LA16;
			parmessage_205243(p, ((NU16) 4), ((NimStringDesc*) &TMP1571));
		}
		goto LA7;
		LA16: ;
		LA7: ;
	}
	LA5: ;
}

static N_INLINE(NIM_BOOL, isleftassociative_205699)(ttoken180174* tok) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_CHAR LOC3;
	result = 0;
	LOC1 = 0;
	LOC1 = !(((*tok).Toktype == ((NU8) 110)));
	if (LOC1) goto LA2;
	LOC3 = 0;
	LOC3 = relevantoprchar_205676((*tok).Ident);
	LOC1 = !(((NU8)(LOC3) == (NU8)(94)));
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(tnode188803*, parseoperators_206817)(tparser205203* p, tnode188803* headnode, NI limit, NU8 mode) {
	tnode188803* result;
	NI opprec;
	NU8 modeb;
	result = 0;
	result = headnode;
	opprec = getprecedence_205714(&(*p).Tok, (*p).Strongspaces);
	{
		if (!(mode == ((NU8) 2))) goto LA3;
		modeb = ((NU8) 1);
	}
	goto LA1;
	LA3: ;
	{
		modeb = mode;
	}
	LA1: ;
	while (1) {
		NIM_BOOL LOC7;
		NIM_BOOL LOC8;
		NIM_BOOL LOC11;
		NI leftassoc;
		NIM_BOOL LOC12;
		tnode188803* a;
		tnode188803* opnode;
		tnode188803* b;
		LOC7 = 0;
		LOC8 = 0;
		LOC8 = (limit <= opprec);
		if (!(LOC8)) goto LA9;
		LOC8 = ((*p).Tok.Indent < 0);
		LA9: ;
		LOC7 = LOC8;
		if (!(LOC7)) goto LA10;
		LOC11 = 0;
		LOC11 = isunary_205778(&(*p));
		LOC7 = !(LOC11);
		LA10: ;
		if (!LOC7) goto LA6;
		checkbinary_205799(&(*p));
		LOC12 = 0;
		LOC12 = isleftassociative_205699(&(*p).Tok);
		leftassoc = LOC12;
		a = newnodep_205255(((NU8) 29), &(*p));
		opnode = newidentnodep_205278((*p).Tok.Ident, &(*p));
		gettok_205238(p);
		optind_205311(p, opnode);
		b = simpleexpraux_206810(p, (NI32)(opprec + ((NI) (leftassoc))), modeb);
		addson_189207(a, opnode);
		addson_189207(a, result);
		addson_189207(a, b);
		result = a;
		opprec = getprecedence_205714(&(*p).Tok, (*p).Strongspaces);
	} LA6: ;
	return result;
}

N_NIMCALL(tnode188803*, simpleexpraux_206810)(tparser205203* p, NI limit, NU8 mode) {
	tnode188803* result;
	result = 0;
	result = primary_206804(p, mode);
	result = parseoperators_206817(p, result, limit, mode);
	return result;
}

N_NIMCALL(tnode188803*, simpleexpr_206372)(tparser205203* p, NU8 mode) {
	tnode188803* result;
	result = 0;
	result = simpleexpraux_206810(p, -1, mode);
	return result;
}

N_NIMCALL(tnode188803*, makecall_207738)(tnode188803* n) {
	tnode188803* result;
	result = 0;
	{
		if (!((*n).Kind == ((NU8) 27) || (*n).Kind == ((NU8) 29) || (*n).Kind == ((NU8) 30) || (*n).Kind == ((NU8) 31) || (*n).Kind == ((NU8) 26) || (*n).Kind == ((NU8) 28) || (*n).Kind == ((NU8) 32))) goto LA3;
		result = n;
	}
	goto LA1;
	LA3: ;
	{
		result = newnodei_189099(((NU8) 27), (*n).Info);
		add_189390(result, n);
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, parsemacrocolon_206603)(tparser205203* p, tnode188803* x) {
	tnode188803* result;
	result = 0;
	result = x;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*p).Tok.Toktype == ((NU8) 105));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*p).Tok.Indent < 0);
		LA4: ;
		if (!LOC3) goto LA5;
		result = makecall_207738(result);
		gettok_205238(p);
		skipcomment_205249(p, result);
		{
			tnode188803* body;
			tnode188803* LOC11;
			if (!!(((*p).Tok.Toktype == ((NU8) 48) || (*p).Tok.Toktype == ((NU8) 20) || (*p).Tok.Toktype == ((NU8) 21) || (*p).Tok.Toktype == ((NU8) 24)))) goto LA9;
			body = parsestmt_205654(p);
			LOC11 = 0;
			LOC11 = newprocnode_191214(((NU8) 52), (*body).Info, body, emptyparams_191211, emptynode_189727, emptynode_189727, emptynode_189727, emptynode_189727, emptynode_189727);
			addson_189207(result, LOC11);
		}
		LA9: ;
		while (1) {
			tnode188803* b;
			tnode188803* LOC19;
			if (!((*p).Tok.Indent == (*p).Currind)) goto LA12;
			b = 0;
			switch ((*p).Tok.Toktype) {
			case ((NU8) 48):
			{
				b = newnodep_205255(((NU8) 85), &(*p));
				exprlist_205931(p, ((NU8) 105), b);
			}
			break;
			case ((NU8) 20):
			{
				tnode188803* LOC15;
				b = newnodep_205255(((NU8) 86), &(*p));
				gettok_205238(p);
				optind_205311(p, b);
				LOC15 = 0;
				LOC15 = parseexpr_205649(p);
				addson_189207(b, LOC15);
				eat_205295(p, ((NU8) 105));
			}
			break;
			case ((NU8) 24):
			{
				b = newnodep_205255(((NU8) 87), &(*p));
				exprlist_205931(p, ((NU8) 105), b);
				skipcomment_205249(p, b);
			}
			break;
			case ((NU8) 21):
			{
				b = newnodep_205255(((NU8) 88), &(*p));
				gettok_205238(p);
				eat_205295(p, ((NU8) 105));
			}
			break;
			default:
			{
				goto LA12;
			}
			break;
			}
			LOC19 = 0;
			LOC19 = parsestmt_205654(p);
			addson_189207(b, LOC19);
			addson_189207(result, b);
			{
				if (!((*b).Kind == ((NU8) 88))) goto LA22;
				goto LA12;
			}
			LA22: ;
		} LA12: ;
	}
	LA5: ;
	return result;
}

N_NIMCALL(tnode188803*, parseexprstmt_207802)(tparser205203* p) {
	tnode188803* result;
	tnode188803* a;
	result = 0;
	(*p).Inpragma += 1;
	a = simpleexpr_206372(p, ((NU8) 0));
	(*p).Inpragma -= 1;
	{
		tnode188803* b;
		if (!((*p).Tok.Toktype == ((NU8) 107))) goto LA3;
		gettok_205238(p);
		optind_205311(p, result);
		b = parseexpr_205649(p);
		result = newnodei_189099(((NU8) 73), (*a).Info);
		addson_189207(result, a);
		addson_189207(result, b);
	}
	goto LA1;
	LA3: ;
	{
		{
			NIM_BOOL LOC8;
			tnodeseq188797* LOC12;
			TY207692 LOC13;
			LOC8 = 0;
			LOC8 = ((*p).Tok.Indent < 0);
			if (!(LOC8)) goto LA9;
			LOC8 = isexprstart_207306(&(*p));
			LA9: ;
			if (!LOC8) goto LA10;
			LOC12 = 0;
			LOC12 = (tnodeseq188797*) newSeq((&NTI188797), 1);
			memset((void*)LOC13, 0, sizeof(LOC13));
			LOC13[0] = a;
			asgnRefNoCycle((void**) &LOC12->data[0], LOC13[0]);
			result = newnode_191003(((NU8) 26), (*a).Info, LOC12, NIM_NIL);
			while (1) {
				tnode188803* e;
				e = parseexpr_205649(p);
				addson_189207(result, e);
				{
					if (!!(((*p).Tok.Toktype == ((NU8) 103)))) goto LA17;
					goto LA14;
				}
				LA17: ;
				gettok_205238(p);
				optind_205311(p, result);
			} LA14: ;
		}
		goto LA6;
		LA10: ;
		{
			result = a;
		}
		LA6: ;
		{
			NIM_BOOL LOC22;
			LOC22 = 0;
			LOC22 = ((*p).Tok.Toktype == ((NU8) 19));
			if (!(LOC22)) goto LA23;
			LOC22 = ((*p).Tok.Indent < 0);
			LA23: ;
			if (!LOC22) goto LA24;
			result = makecall_207738(result);
			parsedoblocks_205664(p, result);
			goto BeforeRet;
		}
		LA24: ;
		result = parsemacrocolon_206603(p, result);
	}
	LA1: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, simplestmt_208869)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	switch ((*p).Tok.Toktype) {
	case ((NU8) 55):
	{
		result = parsereturnorraise_208121(p, ((NU8) 108));
	}
	break;
	case ((NU8) 53):
	{
		result = parsereturnorraise_208121(p, ((NU8) 107));
	}
	break;
	case ((NU8) 70):
	{
		result = parsereturnorraise_208121(p, ((NU8) 104));
	}
	break;
	case ((NU8) 16):
	{
		result = parsereturnorraise_208121(p, ((NU8) 113));
	}
	break;
	case ((NU8) 10):
	{
		result = parsereturnorraise_208121(p, ((NU8) 109));
	}
	break;
	case ((NU8) 14):
	{
		result = parsereturnorraise_208121(p, ((NU8) 110));
	}
	break;
	case ((NU8) 99):
	{
		result = parsestmtpragma_208851(p);
	}
	break;
	case ((NU8) 31):
	{
		result = parseimport_208003(p, ((NU8) 115));
	}
	break;
	case ((NU8) 25):
	{
		result = parseimport_208003(p, ((NU8) 117));
	}
	break;
	case ((NU8) 28):
	{
		result = parsefromstmt_208094(p);
	}
	break;
	case ((NU8) 33):
	{
		result = parseincludestmt_208067(p);
	}
	break;
	case ((NU8) 111):
	{
		result = newcommentstmt_208453(p);
	}
	break;
	default:
	{
		{
			NIM_BOOL LOC16;
			LOC16 = 0;
			LOC16 = isexprstart_207306(&(*p));
			if (!LOC16) goto LA17;
			result = parseexprstmt_207802(p);
		}
		goto LA14;
		LA17: ;
		{
			result = emptynode_189727;
		}
		LA14: ;
	}
	break;
	}
	{
		if (!!(((*result).Kind == ((NU8) 1) || (*result).Kind == ((NU8) 124)))) goto LA22;
		skipcomment_205249(p, result);
	}
	LA22: ;
	return result;
}

N_NIMCALL(tnode188803*, parsestmt_205654)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	{
		NI oldind_208913;
		if (!((*p).Currind < (*p).Tok.Indent)) goto LA3;
		result = newnodep_205255(((NU8) 114), &(*p));
		oldind_208913 = (*p).Currind;
		(*p).Currind = (*p).Tok.Indent;
		while (1) {
			tnode188803* a;
			{
				if (!((*p).Tok.Indent == (*p).Currind)) goto LA8;
			}
			goto LA6;
			LA8: ;
			{
				if (!((*p).Tok.Toktype == ((NU8) 104))) goto LA11;
				gettok_205238(p);
				{
					NIM_BOOL LOC15;
					LOC15 = 0;
					LOC15 = ((*p).Tok.Indent < 0);
					if (LOC15) goto LA16;
					LOC15 = ((*p).Tok.Indent == (*p).Currind);
					LA16: ;
					if (!LOC15) goto LA17;
				}
				goto LA13;
				LA17: ;
				{
					goto LA5;
				}
				LA13: ;
			}
			goto LA6;
			LA11: ;
			{
				{
					NIM_BOOL LOC23;
					LOC23 = 0;
					LOC23 = ((*p).Currind < (*p).Tok.Indent);
					if (!(LOC23)) goto LA24;
					LOC23 = !(((*p).Tok.Toktype == ((NU8) 108)));
					LA24: ;
					if (!LOC23) goto LA25;
					parmessage_205243(&(*p), ((NU16) 33), ((NimStringDesc*) &TMP1558));
				}
				LA25: ;
				goto LA5;
			}
			LA6: ;
			{
				if (!((*p).Tok.Toktype == ((NU8) 96) || (*p).Tok.Toktype == ((NU8) 92) || (*p).Tok.Toktype == ((NU8) 100) || (*p).Tok.Toktype == ((NU8) 94))) goto LA29;
				goto LA5;
			}
			LA29: ;
			a = complexorsimplestmt_206367(p);
			{
				if (!!(((*a).Kind == ((NU8) 1)))) goto LA33;
				addson_189207(result, a);
			}
			goto LA31;
			LA33: ;
			{
				parmessage_205387(&(*p), ((NU16) 60), &(*p).Tok);
				gettok_205238(p);
			}
			LA31: ;
		} LA5: ;
		(*p).Currind = oldind_208913;
	}
	goto LA1;
	LA3: ;
	{
		switch ((*p).Tok.Toktype) {
		case ((NU8) 30):
		case ((NU8) 66):
		case ((NU8) 11):
		case ((NU8) 60):
		case ((NU8) 27):
		case ((NU8) 9):
		case ((NU8) 6):
		case ((NU8) 51):
		case ((NU8) 37):
		case ((NU8) 40):
		case ((NU8) 62):
		case ((NU8) 13):
		case ((NU8) 65):
		case ((NU8) 64):
		{
			parmessage_205243(&(*p), ((NU16) 153), ((NimStringDesc*) &TMP1558));
			result = emptynode_189727;
		}
		break;
		default:
		{
			{
				if (!(0 < (*p).Insemistmtlist)) goto LA41;
				result = simplestmt_208869(p);
				{
					if (!((*result).Kind == ((NU8) 1))) goto LA45;
					parmessage_205387(&(*p), ((NU16) 60), &(*p).Tok);
				}
				LA45: ;
			}
			goto LA39;
			LA41: ;
			{
				result = newnodep_205255(((NU8) 114), &(*p));
				while (1) {
					tnode188803* a;
					{
						if (!(0 <= (*p).Tok.Indent)) goto LA51;
						parmessage_205243(&(*p), ((NU16) 33), ((NimStringDesc*) &TMP1558));
					}
					LA51: ;
					a = simplestmt_208869(p);
					{
						if (!((*a).Kind == ((NU8) 1))) goto LA55;
						parmessage_205387(&(*p), ((NU16) 60), &(*p).Tok);
					}
					LA55: ;
					add_189390(result, a);
					{
						if (!!(((*p).Tok.Toktype == ((NU8) 104)))) goto LA59;
						goto LA48;
					}
					LA59: ;
					gettok_205238(p);
				} LA48: ;
			}
			LA39: ;
		}
		break;
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, parsecase_205339)(tparser205203* p) {
	tnode188803* result;
	tnode188803* b;
	NIM_BOOL inelif;
	NIM_BOOL wasindented;
	tnode188803* LOC1;
	NI oldind;
	result = 0;
	b = 0;
	inelif = NIM_FALSE;
	wasindented = NIM_FALSE;
	result = newnodep_205255(((NU8) 97), &(*p));
	gettok_205238(p);
	LOC1 = 0;
	LOC1 = parseexpr_205649(p);
	addson_189207(result, LOC1);
	{
		if (!((*p).Tok.Toktype == ((NU8) 105))) goto LA4;
		gettok_205238(p);
	}
	LA4: ;
	skipcomment_205249(p, result);
	oldind = (*p).Currind;
	{
		if (!((*p).Currind < (*p).Tok.Indent)) goto LA8;
		(*p).Currind = (*p).Tok.Indent;
		wasindented = NIM_TRUE;
	}
	LA8: ;
	while (1) {
		tnode188803* LOC20;
		if (!((*p).Tok.Indent == (*p).Currind)) goto LA10;
		switch ((*p).Tok.Toktype) {
		case ((NU8) 48):
		{
			{
				if (!inelif) goto LA14;
				goto LA10;
			}
			LA14: ;
			b = newnodep_205255(((NU8) 85), &(*p));
			exprlist_205931(p, ((NU8) 105), b);
		}
		break;
		case ((NU8) 20):
		{
			tnode188803* LOC17;
			inelif = NIM_TRUE;
			b = newnodep_205255(((NU8) 86), &(*p));
			gettok_205238(p);
			optind_205311(p, b);
			LOC17 = 0;
			LOC17 = parseexpr_205649(p);
			addson_189207(b, LOC17);
			eat_205295(p, ((NU8) 105));
		}
		break;
		case ((NU8) 21):
		{
			b = newnodep_205255(((NU8) 88), &(*p));
			gettok_205238(p);
			eat_205295(p, ((NU8) 105));
		}
		break;
		default:
		{
			goto LA10;
		}
		break;
		}
		skipcomment_205249(p, b);
		LOC20 = 0;
		LOC20 = parsestmt_205654(p);
		addson_189207(b, LOC20);
		addson_189207(result, b);
		{
			if (!((*b).Kind == ((NU8) 88))) goto LA23;
			goto LA10;
		}
		LA23: ;
	} LA10: ;
	{
		if (!wasindented) goto LA27;
		(*p).Currind = oldind;
	}
	LA27: ;
	return result;
}

N_NIMCALL(tnode188803*, parsetry_205334)(tparser205203* p) {
	tnode188803* result;
	tnode188803* LOC1;
	tnode188803* b;
	result = 0;
	result = newnodep_205255(((NU8) 105), &(*p));
	gettok_205238(p);
	eat_205295(p, ((NU8) 105));
	skipcomment_205249(p, result);
	LOC1 = 0;
	LOC1 = parsestmt_205654(p);
	addson_189207(result, LOC1);
	b = NIM_NIL;
	while (1) {
		NIM_BOOL LOC3;
		tnode188803* LOC8;
		LOC3 = 0;
		LOC3 = ((*p).Tok.Indent == (*p).Currind);
		if (LOC3) goto LA4;
		LOC3 = ((*p).Tok.Indent < 0);
		LA4: ;
		if (!LOC3) goto LA2;
		switch ((*p).Tok.Toktype) {
		case ((NU8) 24):
		{
			b = newnodep_205255(((NU8) 87), &(*p));
			exprlist_205931(p, ((NU8) 105), b);
		}
		break;
		case ((NU8) 26):
		{
			b = newnodep_205255(((NU8) 106), &(*p));
			gettoknoind_205482(p);
			eat_205295(p, ((NU8) 105));
		}
		break;
		default:
		{
			goto LA2;
		}
		break;
		}
		skipcomment_205249(p, b);
		LOC8 = 0;
		LOC8 = parsestmt_205654(p);
		addson_189207(b, LOC8);
		addson_189207(result, b);
		{
			if (!((*b).Kind == ((NU8) 106))) goto LA11;
			goto LA2;
		}
		LA11: ;
	} LA2: ;
	{
		if (!(b == NIM_NIL)) goto LA15;
		parmessage_205243(&(*p), ((NU16) 23), ((NimStringDesc*) &TMP1572));
	}
	LA15: ;
	return result;
}

N_NIMCALL(tnode188803*, parseexpr_205649)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	switch ((*p).Tok.Toktype) {
	case ((NU8) 30):
	{
		result = parseifexpr_206869(p, ((NU8) 48));
	}
	break;
	case ((NU8) 65):
	{
		result = parseifexpr_206869(p, ((NU8) 93));
	}
	break;
	case ((NU8) 11):
	{
		result = parsecase_205339(p);
	}
	break;
	case ((NU8) 60):
	{
		result = parsetry_205334(p);
	}
	break;
	default:
	{
		result = simpleexpr_206372(p, ((NU8) 0));
	}
	break;
	}
	return result;
}

N_NIMCALL(tnode188803*, parseiforwhen_208138)(tparser205203* p, NU8 kind) {
	tnode188803* result;
	result = 0;
	result = newnodep_205255(kind, &(*p));
	while (1) {
		tnode188803* branch;
		tnode188803* LOC2;
		tnode188803* LOC3;
		gettok_205238(p);
		branch = newnodep_205255(((NU8) 86), &(*p));
		optind_205311(p, branch);
		LOC2 = 0;
		LOC2 = parseexpr_205649(p);
		addson_189207(branch, LOC2);
		eat_205295(p, ((NU8) 105));
		skipcomment_205249(p, branch);
		LOC3 = 0;
		LOC3 = parsestmt_205654(p);
		addson_189207(branch, LOC3);
		skipcomment_205249(p, branch);
		addson_189207(result, branch);
		{
			NIM_BOOL LOC6;
			NIM_BOOL LOC8;
			LOC6 = 0;
			LOC6 = !(((*p).Tok.Toktype == ((NU8) 20)));
			if (LOC6) goto LA7;
			LOC8 = 0;
			LOC8 = ((*p).Tok.Indent == (*p).Currind);
			if (LOC8) goto LA9;
			LOC8 = ((*p).Tok.Indent < 0);
			LA9: ;
			LOC6 = !(LOC8);
			LA7: ;
			if (!LOC6) goto LA10;
			goto LA1;
		}
		LA10: ;
	} LA1: ;
	{
		NIM_BOOL LOC14;
		NIM_BOOL LOC16;
		tnode188803* branch;
		tnode188803* LOC20;
		LOC14 = 0;
		LOC14 = ((*p).Tok.Toktype == ((NU8) 21));
		if (!(LOC14)) goto LA15;
		LOC16 = 0;
		LOC16 = ((*p).Tok.Indent == (*p).Currind);
		if (LOC16) goto LA17;
		LOC16 = ((*p).Tok.Indent < 0);
		LA17: ;
		LOC14 = LOC16;
		LA15: ;
		if (!LOC14) goto LA18;
		branch = newnodep_205255(((NU8) 88), &(*p));
		eat_205295(p, ((NU8) 21));
		eat_205295(p, ((NU8) 105));
		skipcomment_205249(p, branch);
		LOC20 = 0;
		LOC20 = parsestmt_205654(p);
		addson_189207(branch, LOC20);
		addson_189207(result, branch);
	}
	LA18: ;
	return result;
}

N_NIMCALL(tnode188803*, parsewhile_208169)(tparser205203* p) {
	tnode188803* result;
	tnode188803* LOC1;
	tnode188803* LOC2;
	result = 0;
	result = newnodep_205255(((NU8) 96), &(*p));
	gettok_205238(p);
	optind_205311(p, result);
	LOC1 = 0;
	LOC1 = parseexpr_205649(p);
	addson_189207(result, LOC1);
	colcom_205830(p, result);
	LOC2 = 0;
	LOC2 = parsestmt_205654(p);
	addson_189207(result, LOC2);
	return result;
}

N_NIMCALL(tnode188803*, parseexceptblock_208245)(tparser205203* p, NU8 kind) {
	tnode188803* result;
	tnode188803* LOC1;
	result = 0;
	result = newnodep_205255(kind, &(*p));
	gettoknoind_205482(p);
	colcom_205830(p, result);
	LOC1 = 0;
	LOC1 = parsestmt_205654(p);
	addson_189207(result, LOC1);
	return result;
}

N_NIMCALL(tnode188803*, parsefor_208253)(tparser205203* p) {
	tnode188803* result;
	tnode188803* a;
	tnode188803* LOC2;
	tnode188803* LOC3;
	result = 0;
	result = newnodep_205255(((NU8) 94), &(*p));
	gettoknoind_205482(p);
	a = identwithpragma_206984(p);
	addson_189207(result, a);
	while (1) {
		if (!((*p).Tok.Toktype == ((NU8) 103))) goto LA1;
		gettok_205238(p);
		optind_205311(p, a);
		a = identwithpragma_206984(p);
		addson_189207(result, a);
	} LA1: ;
	eat_205295(p, ((NU8) 32));
	LOC2 = 0;
	LOC2 = parseexpr_205649(p);
	addson_189207(result, LOC2);
	colcom_205830(p, result);
	LOC3 = 0;
	LOC3 = parsestmt_205654(p);
	addson_189207(result, LOC3);
	return result;
}

N_NIMCALL(tnode188803*, parseblock_208271)(tparser205203* p) {
	tnode188803* result;
	tnode188803* LOC7;
	result = 0;
	result = newnodep_205255(((NU8) 111), &(*p));
	gettoknoind_205482(p);
	{
		if (!((*p).Tok.Toktype == ((NU8) 105))) goto LA3;
		addson_189207(result, emptynode_189727);
	}
	goto LA1;
	LA3: ;
	{
		tnode188803* LOC6;
		LOC6 = 0;
		LOC6 = parsesymbol_205328(p, NIM_FALSE);
		addson_189207(result, LOC6);
	}
	LA1: ;
	colcom_205830(p, result);
	LOC7 = 0;
	LOC7 = parsestmt_205654(p);
	addson_189207(result, LOC7);
	return result;
}

N_NIMCALL(tnode188803*, parsestatic_208287)(tparser205203* p) {
	tnode188803* result;
	tnode188803* LOC1;
	result = 0;
	result = newnodep_205255(((NU8) 112), &(*p));
	gettoknoind_205482(p);
	colcom_205830(p, result);
	LOC1 = 0;
	LOC1 = parsestmt_205654(p);
	addson_189207(result, LOC1);
	return result;
}

N_NIMCALL(tnode188803*, parseasm_208294)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	result = newnodep_205255(((NU8) 89), &(*p));
	gettoknoind_205482(p);
	{
		tnode188803* LOC5;
		if (!((*p).Tok.Toktype == ((NU8) 99))) goto LA3;
		LOC5 = 0;
		LOC5 = parsepragma_206889(p);
		addson_189207(result, LOC5);
	}
	goto LA1;
	LA3: ;
	{
		addson_189207(result, emptynode_189727);
	}
	LA1: ;
	switch ((*p).Tok.Toktype) {
	case ((NU8) 85):
	{
		tnode188803* LOC8;
		LOC8 = 0;
		LOC8 = newstrnodep_205272(((NU8) 20), (*p).Tok.Literal, &(*p));
		addson_189207(result, LOC8);
	}
	break;
	case ((NU8) 86):
	{
		tnode188803* LOC10;
		LOC10 = 0;
		LOC10 = newstrnodep_205272(((NU8) 21), (*p).Tok.Literal, &(*p));
		addson_189207(result, LOC10);
	}
	break;
	case ((NU8) 87):
	{
		tnode188803* LOC12;
		LOC12 = 0;
		LOC12 = newstrnodep_205272(((NU8) 22), (*p).Tok.Literal, &(*p));
		addson_189207(result, LOC12);
	}
	break;
	default:
	{
		parmessage_205243(&(*p), ((NU16) 6), ((NimStringDesc*) &TMP1558));
		addson_189207(result, emptynode_189727);
		goto BeforeRet;
	}
	break;
	}
	gettok_205238(p);
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, parsepattern_208393)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	eat_205295(p, ((NU8) 95));
	result = parsestmt_205654(p);
	eat_205295(p, ((NU8) 96));
	return result;
}

N_NIMCALL(tnode188803*, parsegenericparam_208310)(tparser205203* p) {
	tnode188803* result;
	tnode188803* a;
	result = 0;
	a = 0;
	result = newnodep_205255(((NU8) 35), &(*p));
	while (1) {
		switch ((*p).Tok.Toktype) {
		case ((NU8) 2):
		case ((NU8) 112):
		{
			a = parsesymbol_205328(p, NIM_FALSE);
			{
				if (!((*a).Kind == ((NU8) 1))) goto LA5;
				goto BeforeRet;
			}
			LA5: ;
		}
		break;
		default:
		{
			goto LA1;
		}
		break;
		}
		addson_189207(result, a);
		{
			if (!!(((*p).Tok.Toktype == ((NU8) 103)))) goto LA10;
			goto LA1;
		}
		LA10: ;
		gettok_205238(p);
		optind_205311(p, a);
	} LA1: ;
	{
		tnode188803* LOC16;
		if (!((*p).Tok.Toktype == ((NU8) 105))) goto LA14;
		gettok_205238(p);
		optind_205311(p, result);
		LOC16 = 0;
		LOC16 = parseexpr_205649(p);
		addson_189207(result, LOC16);
	}
	goto LA12;
	LA14: ;
	{
		addson_189207(result, emptynode_189727);
	}
	LA12: ;
	{
		tnode188803* LOC22;
		if (!((*p).Tok.Toktype == ((NU8) 107))) goto LA20;
		gettok_205238(p);
		optind_205311(p, result);
		LOC22 = 0;
		LOC22 = parseexpr_205649(p);
		addson_189207(result, LOC22);
	}
	goto LA18;
	LA20: ;
	{
		addson_189207(result, emptynode_189727);
	}
	LA18: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, parsegenericparamlist_208356)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	result = newnodep_205255(((NU8) 75), &(*p));
	gettok_205238(p);
	optind_205311(p, result);
	while (1) {
		tnode188803* a;
		if (!((*p).Tok.Toktype == ((NU8) 2) || (*p).Tok.Toktype == ((NU8) 112))) goto LA1;
		a = parsegenericparam_208310(p);
		addson_189207(result, a);
		{
			if (!!(((*p).Tok.Toktype == ((NU8) 103) || (*p).Tok.Toktype == ((NU8) 104)))) goto LA4;
			goto LA1;
		}
		LA4: ;
		gettok_205238(p);
		skipcomment_205249(p, a);
	} LA1: ;
	optpar_205306(p);
	eat_205295(p, ((NU8) 94));
	return result;
}

N_NIMCALL(void, indandcomment_205317)(tparser205203* p, tnode188803* n) {
	{
		if (!((*p).Currind < (*p).Tok.Indent)) goto LA3;
		{
			if (!((*p).Tok.Toktype == ((NU8) 111))) goto LA7;
			rawskipcomment_205420(p, n);
		}
		goto LA5;
		LA7: ;
		{
			parmessage_205243(&(*p), ((NU16) 33), ((NimStringDesc*) &TMP1558));
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		skipcomment_205249(p, n);
	}
	LA1: ;
}

N_NIMCALL(tnode188803*, parseroutine_208409)(tparser205203* p, NU8 kind) {
	tnode188803* result;
	tnode188803* LOC1;
	tnode188803* LOC18;
	result = 0;
	result = newnodep_205255(kind, &(*p));
	gettok_205238(p);
	optind_205311(p, result);
	LOC1 = 0;
	LOC1 = identvis_206967(p);
	addson_189207(result, LOC1);
	{
		NIM_BOOL LOC4;
		tnode188803* LOC8;
		LOC4 = 0;
		LOC4 = ((*p).Tok.Toktype == ((NU8) 95));
		if (!(LOC4)) goto LA5;
		LOC4 = validind_208400(p);
		LA5: ;
		if (!LOC4) goto LA6;
		LOC8 = 0;
		LOC8 = parsepattern_208393(p);
		addson_189207(result, LOC8);
	}
	goto LA2;
	LA6: ;
	{
		addson_189207(result, emptynode_189727);
	}
	LA2: ;
	{
		NIM_BOOL LOC12;
		tnode188803* LOC16;
		LOC12 = 0;
		LOC12 = ((*p).Tok.Toktype == ((NU8) 93));
		if (!(LOC12)) goto LA13;
		LOC12 = validind_208400(p);
		LA13: ;
		if (!LOC12) goto LA14;
		LOC16 = 0;
		LOC16 = parsegenericparamlist_208356(p);
		add_189390(result, LOC16);
	}
	goto LA10;
	LA14: ;
	{
		addson_189207(result, emptynode_189727);
	}
	LA10: ;
	LOC18 = 0;
	LOC18 = parseparamlist_205670(p, NIM_TRUE);
	addson_189207(result, LOC18);
	{
		NIM_BOOL LOC21;
		tnode188803* LOC25;
		LOC21 = 0;
		LOC21 = ((*p).Tok.Toktype == ((NU8) 99));
		if (!(LOC21)) goto LA22;
		LOC21 = validind_208400(p);
		LA22: ;
		if (!LOC21) goto LA23;
		LOC25 = 0;
		LOC25 = parsepragma_206889(p);
		addson_189207(result, LOC25);
	}
	goto LA19;
	LA23: ;
	{
		addson_189207(result, emptynode_189727);
	}
	LA19: ;
	addson_189207(result, emptynode_189727);
	{
		NIM_BOOL LOC29;
		tnode188803* LOC33;
		LOC29 = 0;
		LOC29 = ((*p).Tok.Toktype == ((NU8) 107));
		if (!(LOC29)) goto LA30;
		LOC29 = validind_208400(p);
		LA30: ;
		if (!LOC29) goto LA31;
		gettok_205238(p);
		skipcomment_205249(p, result);
		LOC33 = 0;
		LOC33 = parsestmt_205654(p);
		addson_189207(result, LOC33);
	}
	goto LA27;
	LA31: ;
	{
		addson_189207(result, emptynode_189727);
	}
	LA27: ;
	indandcomment_205317(p, result);
	return result;
}

N_NIMCALL(tnode188803*, parsesection_208466)(tparser205203* p, NU8 kind, tdefparser208461 defparser) {
	tnode188803* result;
	result = 0;
	result = newnodep_205255(kind, &(*p));
	{
		if (!!((kind == ((NU8) 98)))) goto LA3;
		gettok_205238(p);
	}
	LA3: ;
	skipcomment_205249(p, result);
	{
		NI oldind_208484;
		if (!((*p).Currind < (*p).Tok.Indent)) goto LA7;
		oldind_208484 = (*p).Currind;
		(*p).Currind = (*p).Tok.Indent;
		skipcomment_205249(p, result);
		while (1) {
			if (!((*p).Tok.Indent == (*p).Currind)) goto LA9;
			switch ((*p).Tok.Toktype) {
			case ((NU8) 2):
			case ((NU8) 112):
			case ((NU8) 91):
			{
				tnode188803* a;
				a = defparser(p);
				skipcomment_205249(p, a);
				addson_189207(result, a);
			}
			break;
			case ((NU8) 111):
			{
				tnode188803* a;
				a = newcommentstmt_208453(p);
				addson_189207(result, a);
			}
			break;
			default:
			{
				parmessage_205387(&(*p), ((NU16) 19), &(*p).Tok);
				goto LA9;
			}
			break;
			}
		} LA9: ;
		(*p).Currind = oldind_208484;
		{
			NI LOC15;
			LOC15 = 0;
			LOC15 = len_189264(result);
			if (!(LOC15 == 0)) goto LA16;
			parmessage_205387(&(*p), ((NU16) 19), &(*p).Tok);
		}
		LA16: ;
	}
	goto LA5;
	LA7: ;
	{
		NIM_BOOL LOC19;
		tnode188803* LOC23;
		LOC19 = 0;
		LOC19 = ((*p).Tok.Toktype == ((NU8) 2) || (*p).Tok.Toktype == ((NU8) 112) || (*p).Tok.Toktype == ((NU8) 91));
		if (!(LOC19)) goto LA20;
		LOC19 = ((*p).Tok.Indent < 0);
		LA20: ;
		if (!LOC19) goto LA21;
		LOC23 = 0;
		LOC23 = defparser(p);
		addson_189207(result, LOC23);
	}
	goto LA5;
	LA21: ;
	{
		parmessage_205387(&(*p), ((NU16) 19), &(*p).Tok);
	}
	LA5: ;
	return result;
}

N_NIMCALL(tnode188803*, parsetypedefaux_207731)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	result = simpleexpr_206372(p, ((NU8) 2));
	return result;
}

N_NIMCALL(tnode188803*, parsetypedef_208758)(tparser205203* p) {
	tnode188803* result;
	tnode188803* LOC1;
	result = 0;
	result = newnodep_205255(((NU8) 103), &(*p));
	LOC1 = 0;
	LOC1 = identwithpragma_206984(p);
	addson_189207(result, LOC1);
	{
		NIM_BOOL LOC4;
		tnode188803* LOC8;
		LOC4 = 0;
		LOC4 = ((*p).Tok.Toktype == ((NU8) 93));
		if (!(LOC4)) goto LA5;
		LOC4 = validind_208400(p);
		LA5: ;
		if (!LOC4) goto LA6;
		LOC8 = 0;
		LOC8 = parsegenericparamlist_208356(p);
		addson_189207(result, LOC8);
	}
	goto LA2;
	LA6: ;
	{
		addson_189207(result, emptynode_189727);
	}
	LA2: ;
	{
		tnode188803* LOC14;
		if (!((*p).Tok.Toktype == ((NU8) 107))) goto LA12;
		gettok_205238(p);
		optind_205311(p, result);
		LOC14 = 0;
		LOC14 = parsetypedefaux_207731(p);
		addson_189207(result, LOC14);
	}
	goto LA10;
	LA12: ;
	{
		addson_189207(result, emptynode_189727);
	}
	LA10: ;
	indandcomment_205317(p, result);
	return result;
}

N_NIMCALL(tnode188803*, parseconstant_208505)(tparser205203* p) {
	tnode188803* result;
	tnode188803* LOC1;
	tnode188803* LOC8;
	result = 0;
	result = newnodep_205255(((NU8) 102), &(*p));
	LOC1 = 0;
	LOC1 = identwithpragma_206984(p);
	addson_189207(result, LOC1);
	{
		tnode188803* LOC6;
		if (!((*p).Tok.Toktype == ((NU8) 105))) goto LA4;
		gettok_205238(p);
		optind_205311(p, result);
		LOC6 = 0;
		LOC6 = parsetypedesc_205659(p);
		addson_189207(result, LOC6);
	}
	goto LA2;
	LA4: ;
	{
		addson_189207(result, emptynode_189727);
	}
	LA2: ;
	eat_205295(p, ((NU8) 107));
	optind_205311(p, result);
	LOC8 = 0;
	LOC8 = parseexpr_205649(p);
	addson_189207(result, LOC8);
	indandcomment_205317(p, result);
	return result;
}

N_NIMCALL(tnode188803*, parsevartuple_208783)(tparser205203* p) {
	tnode188803* result;
	tnode188803* LOC6;
	result = 0;
	result = newnodep_205255(((NU8) 36), &(*p));
	gettok_205238(p);
	optind_205311(p, result);
	while (1) {
		tnode188803* a;
		if (!((*p).Tok.Toktype == ((NU8) 2) || (*p).Tok.Toktype == ((NU8) 112))) goto LA1;
		a = identwithpragma_206984(p);
		addson_189207(result, a);
		{
			if (!!(((*p).Tok.Toktype == ((NU8) 103)))) goto LA4;
			goto LA1;
		}
		LA4: ;
		gettok_205238(p);
		skipcomment_205249(p, a);
	} LA1: ;
	addson_189207(result, emptynode_189727);
	optpar_205306(p);
	eat_205295(p, ((NU8) 92));
	eat_205295(p, ((NU8) 107));
	optind_205311(p, result);
	LOC6 = 0;
	LOC6 = parseexpr_205649(p);
	addson_189207(result, LOC6);
	return result;
}

N_NIMCALL(tnode188803*, parsevariable_208815)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	{
		if (!((*p).Tok.Toktype == ((NU8) 91))) goto LA3;
		result = parsevartuple_208783(p);
	}
	goto LA1;
	LA3: ;
	{
		result = parseidentcolonequals_207008(p, 1);
	}
	LA1: ;
	indandcomment_205317(p, result);
	return result;
}

N_NIMCALL(tnode188803*, qualifiedident_205977)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	result = parsesymbol_205328(p, NIM_FALSE);
	{
		if (!((*p).Tok.Toktype == ((NU8) 108))) goto LA3;
		result = dotexpr_205968(p, result);
	}
	LA3: ;
	return result;
}

N_NIMCALL(tnode188803*, parsebind_208832)(tparser205203* p, NU8 k) {
	tnode188803* result;
	result = 0;
	result = newnodep_205255(k, &(*p));
	gettok_205238(p);
	optind_205311(p, result);
	while (1) {
		tnode188803* a;
		a = qualifiedident_205977(p);
		addson_189207(result, a);
		{
			if (!!(((*p).Tok.Toktype == ((NU8) 103)))) goto LA4;
			goto LA1;
		}
		LA4: ;
		gettok_205238(p);
		optind_205311(p, a);
	} LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, complexorsimplestmt_206367)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	switch ((*p).Tok.Toktype) {
	case ((NU8) 30):
	{
		result = parseiforwhen_208138(p, ((NU8) 92));
	}
	break;
	case ((NU8) 66):
	{
		result = parsewhile_208169(p);
	}
	break;
	case ((NU8) 11):
	{
		result = parsecase_205339(p);
	}
	break;
	case ((NU8) 60):
	{
		result = parsetry_205334(p);
	}
	break;
	case ((NU8) 26):
	{
		result = parseexceptblock_208245(p, ((NU8) 106));
	}
	break;
	case ((NU8) 24):
	{
		result = parseexceptblock_208245(p, ((NU8) 87));
	}
	break;
	case ((NU8) 27):
	{
		result = parsefor_208253(p);
	}
	break;
	case ((NU8) 9):
	{
		result = parseblock_208271(p);
	}
	break;
	case ((NU8) 58):
	{
		result = parsestatic_208287(p);
	}
	break;
	case ((NU8) 6):
	{
		result = parseasm_208294(p);
	}
	break;
	case ((NU8) 51):
	{
		result = parseroutine_208409(p, ((NU8) 79));
	}
	break;
	case ((NU8) 41):
	{
		result = parseroutine_208409(p, ((NU8) 80));
	}
	break;
	case ((NU8) 37):
	{
		result = parseroutine_208409(p, ((NU8) 84));
	}
	break;
	case ((NU8) 40):
	{
		result = parseroutine_208409(p, ((NU8) 82));
	}
	break;
	case ((NU8) 59):
	{
		result = parseroutine_208409(p, ((NU8) 83));
	}
	break;
	case ((NU8) 15):
	{
		result = parseroutine_208409(p, ((NU8) 81));
	}
	break;
	case ((NU8) 62):
	{
		gettok_205238(p);
		{
			tnode188803* LOC22;
			if (!((*p).Tok.Toktype == ((NU8) 91))) goto LA20;
			gettok_205238(p);
			result = newnodep_205255(((NU8) 131), &(*p));
			LOC22 = 0;
			LOC22 = primary_206804(p, ((NU8) 1));
			addson_189207(result, LOC22);
			eat_205295(p, ((NU8) 92));
			result = parseoperators_206817(p, result, -1, ((NU8) 0));
		}
		goto LA18;
		LA20: ;
		{
			result = parsesection_208466(p, ((NU8) 98), parsetypedef_208758);
		}
		LA18: ;
	}
	break;
	case ((NU8) 13):
	{
		result = parsesection_208466(p, ((NU8) 101), parseconstant_208505);
	}
	break;
	case ((NU8) 39):
	{
		result = parsesection_208466(p, ((NU8) 100), parsevariable_208815);
	}
	break;
	case ((NU8) 65):
	{
		result = parseiforwhen_208138(p, ((NU8) 93));
	}
	break;
	case ((NU8) 64):
	{
		result = parsesection_208466(p, ((NU8) 99), parsevariable_208815);
	}
	break;
	case ((NU8) 8):
	{
		result = parsebind_208832(p, ((NU8) 121));
	}
	break;
	case ((NU8) 42):
	{
		result = parsebind_208832(p, ((NU8) 122));
	}
	break;
	case ((NU8) 63):
	{
		result = parsebind_208832(p, ((NU8) 123));
	}
	break;
	default:
	{
		result = simplestmt_208869(p);
	}
	break;
	}
	return result;
}

N_NIMCALL(tnode188803*, parseall_205212)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	result = newnodep_205255(((NU8) 114), &(*p));
	while (1) {
		tnode188803* a;
		if (!!(((*p).Tok.Toktype == ((NU8) 1)))) goto LA1;
		a = complexorsimplestmt_206367(p);
		{
			if (!!(((*a).Kind == ((NU8) 1)))) goto LA4;
			addson_189207(result, a);
		}
		goto LA2;
		LA4: ;
		{
			parmessage_205387(&(*p), ((NU16) 60), &(*p).Tok);
			gettok_205238(p);
		}
		LA2: ;
		{
			if (!!(((*p).Tok.Indent == 0))) goto LA9;
			parmessage_205243(&(*p), ((NU16) 33), ((NimStringDesc*) &TMP1558));
		}
		LA9: ;
	} LA1: ;
	return result;
}

N_NIMCALL(void, closeparser_205217)(tparser205203* p) {
	closelexer_180225(&(*p).Lex);
}

N_NIMCALL(tnode188803*, parsetoplevelstmt_205222)(tparser205203* p) {
	tnode188803* result;
	result = 0;
	result = emptynode_189727;
	while (1) {
		{
			if (!!(((*p).Tok.Indent == 0))) goto LA4;
			{
				NIM_BOOL LOC8;
				LOC8 = 0;
				LOC8 = (*p).Firsttok;
				if (!(LOC8)) goto LA9;
				LOC8 = ((*p).Tok.Indent < 0);
				LA9: ;
				if (!LOC8) goto LA10;
			}
			goto LA6;
			LA10: ;
			{
				parmessage_205243(&(*p), ((NU16) 33), ((NimStringDesc*) &TMP1558));
			}
			LA6: ;
		}
		LA4: ;
		(*p).Firsttok = NIM_FALSE;
		switch ((*p).Tok.Toktype) {
		case ((NU8) 104):
		{
			gettok_205238(p);
			{
				if (!((*p).Tok.Indent <= 0)) goto LA16;
			}
			goto LA14;
			LA16: ;
			{
				parmessage_205243(&(*p), ((NU16) 33), ((NimStringDesc*) &TMP1558));
			}
			LA14: ;
		}
		break;
		case ((NU8) 1):
		{
			goto LA1;
		}
		break;
		default:
		{
			result = complexorsimplestmt_206367(p);
			{
				if (!((*result).Kind == ((NU8) 1))) goto LA23;
				parmessage_205387(&(*p), ((NU16) 60), &(*p).Tok);
			}
			LA23: ;
			goto LA1;
		}
		break;
		}
	} LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, parsestring_205227)(NimStringDesc* s, NimStringDesc* filename, NI line) {
	tnode188803* result;
	tllstream176204* stream;
	tparser205203 parser;
	result = 0;
	stream = llstreamopen_176218(s);
	(*stream).Lineoffset = line;
	memset((void*)&parser, 0, sizeof(parser));
	objectInit(&parser, (&NTI205203));
	openparser_205364(&parser, filename, stream, NIM_FALSE);
	result = parseall_205212(&parser);
	closeparser_205217(&parser);
	return result;
}
N_NOINLINE(void, parserInit)(void) {
}

N_NOINLINE(void, parserDatInit)(void) {
static TNimNode* TMP1550[7];
static TNimNode TMP789[8];
NTI205203.size = sizeof(tparser205203);
NTI205203.kind = 18;
NTI205203.base = 0;
TMP1550[0] = &TMP789[1];
TMP789[1].kind = 1;
TMP789[1].offset = offsetof(tparser205203, Currind);
TMP789[1].typ = (&NTI106);
TMP789[1].name = "currInd";
TMP1550[1] = &TMP789[2];
TMP789[2].kind = 1;
TMP789[2].offset = offsetof(tparser205203, Firsttok);
TMP789[2].typ = (&NTI134);
TMP789[2].name = "firstTok";
TMP1550[2] = &TMP789[3];
TMP789[3].kind = 1;
TMP789[3].offset = offsetof(tparser205203, Strongspaces);
TMP789[3].typ = (&NTI134);
TMP789[3].name = "strongSpaces";
TMP1550[3] = &TMP789[4];
TMP789[4].kind = 1;
TMP789[4].offset = offsetof(tparser205203, Lex);
TMP789[4].typ = (&NTI180176);
TMP789[4].name = "lex";
TMP1550[4] = &TMP789[5];
TMP789[5].kind = 1;
TMP789[5].offset = offsetof(tparser205203, Tok);
TMP789[5].typ = (&NTI180174);
TMP789[5].name = "tok";
TMP1550[5] = &TMP789[6];
TMP789[6].kind = 1;
TMP789[6].offset = offsetof(tparser205203, Inpragma);
TMP789[6].typ = (&NTI106);
TMP789[6].name = "inPragma";
TMP1550[6] = &TMP789[7];
TMP789[7].kind = 1;
TMP789[7].offset = offsetof(tparser205203, Insemistmtlist);
TMP789[7].typ = (&NTI106);
TMP789[7].name = "inSemiStmtList";
TMP789[0].len = 7; TMP789[0].kind = 2; TMP789[0].sons = &TMP1550[0];
NTI205203.node = &TMP789[0];
}

