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

#include "nimbase.h"
#include <string.h>
#include <stdio.h>
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix
#define nimfr_(x, y)
#define nimln_(x, y)
typedef struct tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw;
typedef struct tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw;
typedef struct tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q;
typedef struct tyObject_TLLStream_a5oZYQ9aTktYME2449ayEi6g tyObject_TLLStream_a5oZYQ9aTktYME2449ayEi6g;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw;
typedef struct tyObject_TLexer_PdyFIzn4patQ2zB5OFD9cjw tyObject_TLexer_PdyFIzn4patQ2zB5OFD9cjw;
typedef struct tyObject_TBaseLexer_jTxk7Uc2dfr9aTDL2dZhO9ag tyObject_TBaseLexer_jTxk7Uc2dfr9aTDL2dZhO9ag;
typedef struct tyObject_TToken_kLaEEPwLj8cag79cbYQIkHQ tyObject_TToken_kLaEEPwLj8cag79cbYQIkHQ;
typedef struct tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA;
typedef struct tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ;
typedef struct tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w;
typedef struct tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ;
typedef struct tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g;
typedef struct tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w;
typedef struct tyObject_GcHeap_1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap_1TRH1TZMaVZTnLNcIHuNFQ;
typedef struct tyObject_GcStack_7fytPA5bBsob6See21YMRA tyObject_GcStack_7fytPA5bBsob6See21YMRA;
typedef struct tyObject_MemRegion_x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion_x81NhDv59b8ercDZ9bi85jyg;
typedef struct tyObject_SmallChunk_tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk_tXn60W2f8h3jgAYdEmy5NQ;
typedef struct tyObject_BigChunk_Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk_Rv9c70Uhp2TytkX7eH78qEg;
typedef struct tyObject_LLChunk_XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk_XsENErzHIZV9bhvyJx56wGw;
typedef struct tyObject_IntSet_EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet_EZObFrE3NC9bIb3YMkY9crZA;
typedef struct tyObject_Trunk_W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk_W0r8S0Y3UGke6T9bIUWnnuw;
typedef struct tyObject_AvlNode_IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode_IaqjtwKhxLEpvDS9bct9blEw;
typedef struct tyObject_HeapLinks_PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks_PDV1HBZ8CQSQJC9aOBFNRSg;
typedef struct tyTuple_ujsjpB2O9cjj3uDHsXbnSzg tyTuple_ujsjpB2O9cjj3uDHsXbnSzg;
typedef struct tyObject_GcStat_0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat_0RwLoVBHZPfUAcLczmfQAg;
typedef struct tyObject_CellSet_jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet_jG87P0AI9aZtss9ccTYBIISQ;
typedef struct tyObject_PageDesc_fublkgIY4LG3mT51LU2WHg tyObject_PageDesc_fublkgIY4LG3mT51LU2WHg;
typedef struct tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA;
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef NU8 tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w;
typedef struct {
N_NIMCALL_PTR(void, ClP_0) (tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w msg, NimStringDesc* arg, void* ClE_0);
void* ClE_0;
} tyProc_eADjAhqPI0ogAK7A2xrf0A;
typedef NU8 tyEnum_TNimKind_jIBKr1ejBgsfM33Kxw4j7A;
typedef NU8 tySet_tyEnum_TNimTypeFlag_v8QUszD1sWlSIWZz7mC4bQ;
typedef N_NIMCALL_PTR(void, tyProc_ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, tyProc_WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
struct TNimType {
NI size;
tyEnum_TNimKind_jIBKr1ejBgsfM33Kxw4j7A kind;
tySet_tyEnum_TNimTypeFlag_v8QUszD1sWlSIWZz7mC4bQ flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc_ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc_WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
struct RootObj {
TNimType* m_type;
};
typedef NU8 tyEnum_TLLStreamKind_jVcKY16LbOamXE9bxXUD6pQ;
typedef struct {
N_NIMCALL_PTR(NI, ClP_0) (tyObject_TLLStream_a5oZYQ9aTktYME2449ayEi6g* s, void* buf, NI bufLen, void* ClE_0);
void* ClE_0;
} tyProc_vqN8F2I9cNb9agHf5QUpC2lg;
struct tyObject_TLLStream_a5oZYQ9aTktYME2449ayEi6g {
  RootObj Sup;
tyEnum_TLLStreamKind_jVcKY16LbOamXE9bxXUD6pQ kind;
FILE* f;
NimStringDesc* s;
NI rd;
NI wr;
NI lineOffset;
tyProc_vqN8F2I9cNb9agHf5QUpC2lg repl;
};
struct tyObject_TBaseLexer_jTxk7Uc2dfr9aTDL2dZhO9ag {
  RootObj Sup;
NI bufpos;
NimStringDesc* buf;
tyObject_TLLStream_a5oZYQ9aTktYME2449ayEi6g* stream;
NI lineNumber;
NI sentinel;
NI lineStart;
NI offsetBase;
};
typedef NU8 tyEnum_CursorPosition_moKbK9a5baLOKMP3AQAcKoQ;
struct tyObject_TLexer_PdyFIzn4patQ2zB5OFD9cjw {
  tyObject_TBaseLexer_jTxk7Uc2dfr9aTDL2dZhO9ag Sup;
NI32 fileIdx;
NI indentAhead;
NI currLineIndent;
NIM_BOOL strongSpaces;
NIM_BOOL allowTabs;
tyEnum_CursorPosition_moKbK9a5baLOKMP3AQAcKoQ cursor;
tyProc_eADjAhqPI0ogAK7A2xrf0A errorHandler;
tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache;
tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* config;
};
typedef NU8 tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA;
typedef NU8 tyEnum_TNumericalBase_9cbxR9czWgoXwHHSzHtd9aV7Q;
struct tyObject_TToken_kLaEEPwLj8cag79cbYQIkHQ {
tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA tokType;
NI indent;
tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* ident;
NI64 iNumber;
NF fNumber;
tyEnum_TNumericalBase_9cbxR9czWgoXwHHSzHtd9aV7Q base;
NI8 strongSpaceA;
NI8 strongSpaceB;
NimStringDesc* literal;
NI line;
NI col;
};
struct tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw {
NI currInd;
NIM_BOOL firstTok;
NIM_BOOL hasProgress;
tyObject_TLexer_PdyFIzn4patQ2zB5OFD9cjw lex;
tyObject_TToken_kLaEEPwLj8cag79cbYQIkHQ tok;
NI inPragma;
NI inSemiStmtList;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* emptyNode;
};
typedef NU8 tyEnum_TNimNodeKind_unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind_unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q {
NU16 line;
NI16 col;
NI32 fileIndex;
};
typedef NU32 tySet_tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg;
typedef NU8 tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw;
struct tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw {
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info;
tySet_tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg flags;
tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind;
union{
struct {NI64 intVal;
};
struct {NF floatVal;
};
struct {NimStringDesc* strVal;
};
struct {tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym;
};
struct {tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* ident;
};
struct {tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* sons;
};
};
NimStringDesc* comment;
};
struct tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g {
NI refcount;
TNimType* typ;
};
struct tyObject_GcStack_7fytPA5bBsob6See21YMRA {
void* bottom;
};
struct tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w {
NI len;
NI cap;
tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g** d;
};
typedef tyObject_SmallChunk_tXn60W2f8h3jgAYdEmy5NQ* tyArray_SiRwrEKZdLgxqz9a9aoVBglg[512];
typedef NU32 tyArray_BHbOSqU1t9b3Gt7K2c6fQig[24];
typedef tyObject_BigChunk_Rv9c70Uhp2TytkX7eH78qEg* tyArray_N1u1nqOgmuJN9cSZrnMHgOQ[32];
typedef tyArray_N1u1nqOgmuJN9cSZrnMHgOQ tyArray_B6durA4ZCi1xjJvRtyYxMg[24];
typedef tyObject_Trunk_W0r8S0Y3UGke6T9bIUWnnuw* tyArray_lh2A89ahMmYg9bCmpVaplLbA[256];
struct tyObject_IntSet_EZObFrE3NC9bIb3YMkY9crZA {
tyArray_lh2A89ahMmYg9bCmpVaplLbA data;
};
typedef tyObject_AvlNode_IaqjtwKhxLEpvDS9bct9blEw* tyArray_0aOLqZchNi8nWtMTi8ND8w[2];
struct tyObject_AvlNode_IaqjtwKhxLEpvDS9bct9blEw {
tyArray_0aOLqZchNi8nWtMTi8ND8w link;
NI key;
NI upperBound;
NI level;
};
struct tyTuple_ujsjpB2O9cjj3uDHsXbnSzg {
tyObject_BigChunk_Rv9c70Uhp2TytkX7eH78qEg* Field0;
NI Field1;
};
typedef tyTuple_ujsjpB2O9cjj3uDHsXbnSzg tyArray_LzOv2eCDGiceMKQstCLmhw[30];
struct tyObject_HeapLinks_PDV1HBZ8CQSQJC9aOBFNRSg {
NI len;
tyArray_LzOv2eCDGiceMKQstCLmhw chunks;
tyObject_HeapLinks_PDV1HBZ8CQSQJC9aOBFNRSg* next;
};
struct tyObject_MemRegion_x81NhDv59b8ercDZ9bi85jyg {
NI minLargeObj;
NI maxLargeObj;
tyArray_SiRwrEKZdLgxqz9a9aoVBglg freeSmallChunks;
NU32 flBitmap;
tyArray_BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
tyArray_B6durA4ZCi1xjJvRtyYxMg matrix;
tyObject_LLChunk_XsENErzHIZV9bhvyJx56wGw* llmem;
NI currMem;
NI maxMem;
NI freeMem;
NI occ;
NI lastSize;
tyObject_IntSet_EZObFrE3NC9bIb3YMkY9crZA chunkStarts;
tyObject_AvlNode_IaqjtwKhxLEpvDS9bct9blEw* root;
tyObject_AvlNode_IaqjtwKhxLEpvDS9bct9blEw* deleted;
tyObject_AvlNode_IaqjtwKhxLEpvDS9bct9blEw* last;
tyObject_AvlNode_IaqjtwKhxLEpvDS9bct9blEw* freeAvlNodes;
NIM_BOOL locked;
NIM_BOOL blockChunkSizeIncrease;
NI nextChunkSize;
tyObject_AvlNode_IaqjtwKhxLEpvDS9bct9blEw bottomData;
tyObject_HeapLinks_PDV1HBZ8CQSQJC9aOBFNRSg heapLinks;
};
struct tyObject_GcStat_0RwLoVBHZPfUAcLczmfQAg {
NI stackScans;
NI cycleCollections;
NI maxThreshold;
NI maxStackSize;
NI maxStackCells;
NI cycleTableSize;
NI64 maxPause;
};
struct tyObject_CellSet_jG87P0AI9aZtss9ccTYBIISQ {
NI counter;
NI max;
tyObject_PageDesc_fublkgIY4LG3mT51LU2WHg* head;
tyObject_PageDesc_fublkgIY4LG3mT51LU2WHg** data;
};
struct tyObject_GcHeap_1TRH1TZMaVZTnLNcIHuNFQ {
tyObject_GcStack_7fytPA5bBsob6See21YMRA stack;
NI cycleThreshold;
NI zctThreshold;
tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w zct;
tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w decStack;
tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w tempStack;
NI recGcLock;
tyObject_MemRegion_x81NhDv59b8ercDZ9bi85jyg region;
tyObject_GcStat_0RwLoVBHZPfUAcLczmfQAg stat;
tyObject_CellSet_jG87P0AI9aZtss9ccTYBIISQ marked;
tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w additionalRoots;
NI gcThreadId;
};
typedef NU8 tyEnum_SymbolMode_9aoP9cJZtqH9cYXp2xqhRfe4g;
struct tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA {
  RootObj Sup;
NI id;
};
struct tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA {
  tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA Sup;
NimStringDesc* s;
tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* next;
NI h;
};
typedef NU8 tySet_tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw[21];
typedef NimStringDesc* tyArray_rhDLCy9aNYBAIsWVh16bA0A[116];
typedef NU8 tySet_tyEnum_TDeclaredIdentFlag_MzzaN6zqdToDXIyRutJEWg;
typedef NU8 tyEnum_TDeclaredIdentFlag_MzzaN6zqdToDXIyRutJEWg;
typedef NU8 tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg;
typedef NU8 tySet_tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA[15];
typedef NU8 tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg;
typedef N_NIMCALL_PTR(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, tyProc_s79bHuT8GEFwSamuAIHcACw) (tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
struct tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ {
  TGenericSeq Sup;
  tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(tyObject_TLLStream_a5oZYQ9aTktYME2449ayEi6g*, llStreamOpen_jzv9bBGhVSDMwEPDegAAa2w)(NimStringDesc* data);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem_JE6t4x7Z3v2iVz27Nx0MRAmemory)(void* a, int v, NI size);
N_NIMCALL(void, objectInit)(void* dest, TNimType* typ);
N_LIB_PRIVATE N_NIMCALL(void, openParser_VZUcy9bQgXXeGGRhyp8109aA)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NimStringDesc* filename, tyObject_TLLStream_a5oZYQ9aTktYME2449ayEi6g* inputStream, tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache, tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* config);
N_LIB_PRIVATE N_NIMCALL(void, openParser_FW7ShvhAki8F9b1PK9cXVItg)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NI32 fileIdx, tyObject_TLLStream_a5oZYQ9aTktYME2449ayEi6g* inputStream, tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache, tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* config);
N_LIB_PRIVATE N_NIMCALL(void, initToken_EaKJR9ap6SPzmmvwWz9aMd1g)(tyObject_TToken_kLaEEPwLj8cag79cbYQIkHQ* L);
N_LIB_PRIVATE N_NIMCALL(void, openLexer_EiqAU8uzJcXxIU5x2lB0bg)(tyObject_TLexer_PdyFIzn4patQ2zB5OFD9cjw* lex, NI32 fileIdx, tyObject_TLLStream_a5oZYQ9aTktYME2449ayEi6g* inputstream, tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache, tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* config);
N_LIB_PRIVATE N_NIMCALL(void, getTok_Xu4eHJ43ZFePtQEl7xNDtQ)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(void, rawGetTok_rwBXgYq6A9aRSWDrvp6B9cQg)(tyObject_TLexer_PdyFIzn4patQ2zB5OFD9cjw* L, tyObject_TToken_kLaEEPwLj8cag79cbYQIkHQ* tok);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNode_PMZ27S9ai4FB3gXOMDXvwsQ)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_LIB_PRIVATE N_NIMCALL(NI32, fileInfoIdx_3HRSVgYDcnQTolSZGx1zjA)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, NimStringDesc* filename);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseAll_x3UAdSvBfIIO33m4gWdOPg)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNodeP_Op9ax6vrbzZMdkYtTvibBdg)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNodeI_vokyXY9cZDshCSxFKChhG9bg)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q, parLineInfo_MtiItYhm6aG5IoWBtYIaGg)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
static N_INLINE(tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q, getLineInfo_lGlzs3oAU9bZxh6O9ctsjl5Qlexer)(tyObject_TLexer_PdyFIzn4patQ2zB5OFD9cjw* L, tyObject_TToken_kLaEEPwLj8cag79cbYQIkHQ* tok);
N_LIB_PRIVATE N_NIMCALL(tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q, newLineInfo_NPagzbOMpGo9aqJmfnDrITg)(NI32 fileInfoIdx, NI line, NI col);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, complexOrSimpleStmt_x3UAdSvBfIIO33m4gWdOPg_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseIfOrWhen_meuRB08PuMn59b2HR3aex4w)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind);
N_LIB_PRIVATE N_NIMCALL(void, optInd_f29cj23F8gdIHggpJ4lkkNw)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, skipComment_4X69atLAOW9bH7XN7NtLQ15A)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* node);
N_LIB_PRIVATE N_NIMCALL(void, rawSkipComment_4X69atLAOW9bH7XN7NtLQ15A_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* node);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
static N_INLINE(void, copyMem_M04YC71iJg1N7gBF3HZTngsystem)(void* dest, void* source, NI size);
static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incRef_AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell_QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr);
static N_INLINE(void, decRef_AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(void, rtlAddZCT_AT1eRuflKWyTTBdLjEDZbg_2system)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NOINLINE(void, addZCT_Y66tOYFjgwJ0k4aLz4bc0Q)(tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NIMCALL(void, parMessage_wjMY23FEyPmv9cffowHLsxA)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w msg, NimStringDesc* arg);
N_LIB_PRIVATE N_NIMCALL(void, lexMessageTok_ZiZ2YCW3WVnv6CAJkbYW9cA)(tyObject_TLexer_PdyFIzn4patQ2zB5OFD9cjw* L, tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w msg, tyObject_TToken_kLaEEPwLj8cag79cbYQIkHQ* tok, NimStringDesc* arg);
N_LIB_PRIVATE N_NIMCALL(void, skipInd_Xu4eHJ43ZFePtQEl7xNDtQ_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(void, parMessage_trqiH2WnOZXdRtAc0s4e7A)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NimStringDesc* arg);
N_LIB_PRIVATE N_NIMCALL(void, addSon_P8dDSotTW25BkfbyspojGg_2)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* father, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* son);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseExpr_x3UAdSvBfIIO33m4gWdOPg_3)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseBlock_x3UAdSvBfIIO33m4gWdOPg_4)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(void, getTokNoInd_Xu4eHJ43ZFePtQEl7xNDtQ_3)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseSymbol_N3GnkfhgYci4va8Az3kikA)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_SymbolMode_9aoP9cJZtqH9cYXp2xqhRfe4g mode);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newIdentNodeP_gljI1VO9aaziQr60MYvmzCw)(tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* ident, tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_NOINLINE(void, raiseFieldError)(NimStringDesc* f);
N_LIB_PRIVATE N_NIMCALL(void, parMessage_rXWbL6tbX9bTHhjIGAkRQhA)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NimStringDesc* msg, tyObject_TToken_kLaEEPwLj8cag79cbYQIkHQ* tok);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr, NimStringDesc* a);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, prettyTok_d3YnHm5OyfXf5tTfAaERTg)(tyObject_TToken_kLaEEPwLj8cag79cbYQIkHQ* tok);
static N_INLINE(NI, len_P89cqdlERShb9alU3iC0yj8wast)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, tokToStr_d3YnHm5OyfXf5tTfAaERTg_2)(tyObject_TToken_kLaEEPwLj8cag79cbYQIkHQ* tok);
N_LIB_PRIVATE N_NIMCALL(tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*, getIdent_9coBOmdXN09be4rJvXK6fQGQ)(tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* ic, NimStringDesc* identifier);
N_LIB_PRIVATE N_NIMCALL(void, add_P8dDSotTW25BkfbyspojGg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* father, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* son);
N_LIB_PRIVATE N_NIMCALL(void, eat_lqpEdCtNNxv5ylRLl1vASw)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA tokType);
N_LIB_PRIVATE N_NIMCALL(void, lexMessage_7sgxHfR2r4xBBAjZv1DqbQ)(tyObject_TLexer_PdyFIzn4patQ2zB5OFD9cjw* L, tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w msg, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_LIB_PRIVATE N_NIMCALL(void, colcom_f29cj23F8gdIHggpJ4lkkNw_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseStmt_x3UAdSvBfIIO33m4gWdOPg_5)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, simpleStmt_x3UAdSvBfIIO33m4gWdOPg_6)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseReturnOrRaise_meuRB08PuMn59b2HR3aex4w_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isExprStart_vR74cuHb1b42ISgxLPKFXw)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, postExprBlocks_TghyduzCvNkQUONd4Z5lpA)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseParamList_WcTv1Of1vVb82irmP9cU0EA)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NIM_BOOL retColon);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseIdentColonEquals_Bcfm0z8pniFRTPJG3yq6Iw)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tySet_tyEnum_TDeclaredIdentFlag_MzzaN6zqdToDXIyRutJEWg flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, identWithPragma_p8B2ZGnnV4OxW0KbdW69bBg)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NIM_BOOL allowDot);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, identVis_p8B2ZGnnV4OxW0KbdW69bBg_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NIM_BOOL allowDot);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, dotExpr_qidZGWvQrQ8JdLN3ZQrK5w)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a);
N_NOINLINE(void, raiseIndexError2)(NI i, NI n);
N_LIB_PRIVATE N_NIMCALL(void, exprList_vNL1MotDDlqUCHIgY7Xasg)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA endTok, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result);
N_LIB_PRIVATE N_NIMCALL(void, exprColonEqExprListAux_vNL1MotDDlqUCHIgY7Xasg_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA endTok, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl_W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
N_LIB_PRIVATE N_NIMCALL(void, flexComment_4X69atLAOW9bH7XN7NtLQ15A_3)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* node);
N_LIB_PRIVATE N_NIMCALL(void, optPar_Xu4eHJ43ZFePtQEl7xNDtQ_4)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, exprColonEqExpr_x3UAdSvBfIIO33m4gWdOPg_7)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, colonOrEquals_qidZGWvQrQ8JdLN3ZQrK5w_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a);
N_NIMCALL(void, FieldDiscriminantCheck)(NI oldDiscVal, NI newDiscVal, TNimNode** a, NI L);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parsePragma_x3UAdSvBfIIO33m4gWdOPg_8)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
static N_INLINE(NI, addInt)(NI a, NI b);
N_NOINLINE(void, raiseOverflow)(void);
static N_INLINE(NI, subInt)(NI a, NI b);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseTypeDesc_x3UAdSvBfIIO33m4gWdOPg_9)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, simpleExpr_kdOUXIZEhnaRyfX0iKDcHQ)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg mode);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, simpleExprAux_Q3jJxDCunbeS2rE10OxnZw)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NI limit, tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg mode);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, primary_kdOUXIZEhnaRyfX0iKDcHQ_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg mode);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isOperator_6uuOzScs0cnz0GgHAhmd6w)(tyObject_TToken_kLaEEPwLj8cag79cbYQIkHQ* tok);
static N_INLINE(NIM_BOOL, isSigilLike_SfnwiGITn60liGLbLMGJMQparser)(tyObject_TToken_kLaEEPwLj8cag79cbYQIkHQ* tok);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, primarySuffix_w6T1jA9cTSlFBXKmqZbMNPw)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* r, NI baseIndent, tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg mode);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, commandExpr_plq1N3PYSlIO37godpWqcg)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* r, tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg mode);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, commandParam_EiJ9aFLksR8ZZLfSZEews8w)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NIM_BOOL* isFirstParam, tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg mode);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, namedParams_yk2BP49bt9clLb19a43z5bm1w)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* callee, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA endTok);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseGStrLit_qidZGWvQrQ8JdLN3ZQrK5w_3)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newStrNodeP_iNMN6i7eOmK9cJZaS8PW9bHQ)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, NimStringDesc* strVal, tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isUnary_vR74cuHb1b42ISgxLPKFXw_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseTuple_MDbQ9c4Rjwx4LC9b3UHzN86g)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NIM_BOOL indentAllowed);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseProcExpr_wfNtjJMWUKpIuvPDpwaA3w)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NIM_BOOL isExpr, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, optPragmas_x3UAdSvBfIIO33m4gWdOPg_10)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newProcNode_g5PEkYP0A0RT03uHbJ6wKQ)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* params, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* name, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* pattern, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* genericParams, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* pragmas, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* exceptions);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseEnum_x3UAdSvBfIIO33m4gWdOPg_11)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseObject_x3UAdSvBfIIO33m4gWdOPg_12)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, validInd_N407wi9cDx33ZxrNOz2oYtA)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseObjectPart_x3UAdSvBfIIO33m4gWdOPg_13)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseObjectWhen_x3UAdSvBfIIO33m4gWdOPg_14)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseObjectCase_x3UAdSvBfIIO33m4gWdOPg_15)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseTypeClass_x3UAdSvBfIIO33m4gWdOPg_16)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseTypeClassParam_x3UAdSvBfIIO33m4gWdOPg_17)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseTypeDescKAux_9bFw56lxI4F5g2fW9cn1Vs6w)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg mode);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
static N_INLINE(NIM_BOOL, equalMem_Bj9c9cm9cBM9coLsuNsT5BvZ9awsystem)(void* a, void* b, NI size);
static N_INLINE(int, nimCmpMem)(void* a, void* b, NI size);
N_LIB_PRIVATE N_NIMCALL(void, parseSymbolList_Td5PM3IOFGbl8rUPZBSfWg)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, identOrLiteral_kdOUXIZEhnaRyfX0iKDcHQ_3)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg mode);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newIntNodeP_hbyUqFVqPnpH2E5dcZ36Yg)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, NI64 intVal, tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(void, setBaseFlags_9bmmAhE51GY2H09bDpfhLbpA)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TNumericalBase_9cbxR9czWgoXwHHSzHtd9aV7Q base);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newFloatNodeP_T0XGfAYe4dADVSxKlk3frA)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, NF floatVal, tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, exprColonEqExprList_F0eTToKkYyarQzoxiW3vAw)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA endTok);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parsePar_x3UAdSvBfIIO33m4gWdOPg_18)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(void, semiStmtList_Td5PM3IOFGbl8rUPZBSfWg_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseStmtPragma_x3UAdSvBfIIO33m4gWdOPg_19)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, setOrTableConstr_x3UAdSvBfIIO33m4gWdOPg_20)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseCast_x3UAdSvBfIIO33m4gWdOPg_21)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseOperators_lDjYBDeuaBffjeaA9bSrBGQ)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* headNode, NI limit, tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg mode);
N_LIB_PRIVATE N_NIMCALL(NI, getPrecedence_rmSHwGA9b9aVN1lhr9bYn59czQ)(tyObject_TToken_kLaEEPwLj8cag79cbYQIkHQ* tok, NIM_BOOL strongSpaces);
static N_INLINE(void, checkBinary_pamOlpQ5rTULefRYTxyHugparser)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
static N_INLINE(NIM_BOOL, isRightAssociative_SfnwiGITn60liGLbLMGJMQ_2parser)(tyObject_TToken_kLaEEPwLj8cag79cbYQIkHQ* tok);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, binaryNot_qidZGWvQrQ8JdLN3ZQrK5w_4)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, makeCall_Q0XtPtKhjDEfZ4UlFkHa0g)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseDoBlock_w9bgKT6NRtZ8K2dgxxPMfEg)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseImport_meuRB08PuMn59b2HR3aex4w_3)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseModuleName_meuRB08PuMn59b2HR3aex4w_4)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseFromStmt_x3UAdSvBfIIO33m4gWdOPg_22)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseIncludeStmt_x3UAdSvBfIIO33m4gWdOPg_23)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newCommentStmt_x3UAdSvBfIIO33m4gWdOPg_24)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseExprStmt_x3UAdSvBfIIO33m4gWdOPg_25)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNode_duw0Uu9cIFXmCAaunQWIP0g)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* sons, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseIfExpr_meuRB08PuMn59b2HR3aex4w_5)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseFor_x3UAdSvBfIIO33m4gWdOPg_26)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseVarTuple_x3UAdSvBfIIO33m4gWdOPg_27)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseCase_x3UAdSvBfIIO33m4gWdOPg_28)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseTry_ur2Ff8QkN8a3tOZBX9bKA2w)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NIM_BOOL isExpr);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseWhile_x3UAdSvBfIIO33m4gWdOPg_29)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseExceptBlock_meuRB08PuMn59b2HR3aex4w_6)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseStaticOrDefer_Tj3b9cenzlFv3pe7ECXccgw)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw k);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseAsm_x3UAdSvBfIIO33m4gWdOPg_30)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseRoutine_meuRB08PuMn59b2HR3aex4w_7)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parsePattern_x3UAdSvBfIIO33m4gWdOPg_31)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseGenericParamList_x3UAdSvBfIIO33m4gWdOPg_32)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseGenericParam_x3UAdSvBfIIO33m4gWdOPg_33)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_LIB_PRIVATE N_NIMCALL(void, expectIdent_y0Oo6oxiRSblBjHhhKpzMw)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(void, indAndComment_f29cj23F8gdIHggpJ4lkkNw_3)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseSection_GrPHXcmCn9bme87RpTtABZQ)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyProc_s79bHuT8GEFwSamuAIHcACw defparser);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseTypeDef_x3UAdSvBfIIO33m4gWdOPg_34)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseTypeDefAux_x3UAdSvBfIIO33m4gWdOPg_35)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseConstant_x3UAdSvBfIIO33m4gWdOPg_36)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseVariable_x3UAdSvBfIIO33m4gWdOPg_37)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseBind_Tj3b9cenzlFv3pe7ECXccgw_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw k);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, qualifiedIdent_x3UAdSvBfIIO33m4gWdOPg_38)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(void, closeParser_Xu4eHJ43ZFePtQEl7xNDtQ_5)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p);
N_LIB_PRIVATE N_NIMCALL(void, closeLexer_ukE4jLLltKtD9aVT9bIEv6Gg)(tyObject_TLexer_PdyFIzn4patQ2zB5OFD9cjw* lex);
TNimType NTI_c38t9cDVS8o9b29cOovKwkANw_;
extern TNimType NTI_rR5Bzr1D5krxoo1NcNyeMA_;
extern TNimType NTI_VaVACK0bpYmqIQ0mKcHfQQ_;
extern TNimType NTI_PdyFIzn4patQ2zB5OFD9cjw_;
extern TNimType NTI_kLaEEPwLj8cag79cbYQIkHQ_;
extern TNimType NTI_fKfcLzXYiz5jNu3NH3Tv8Q_;
extern tyObject_GcHeap_1TRH1TZMaVZTnLNcIHuNFQ gch_IcYaEuuWivYAS86vFMTS3Q;
extern TNimType NTI_bROa11lyF5vxEN9aYNbHmhw_;
extern TNimNode* NimDT__bROa11lyF5vxEN9aYNbHmhw_kind[162];
extern TNimType NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ_;
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_3, "skipComment", 11);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_4, "invalid indentation", 19);
static NIM_CONST tySet_tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw TM_MW5RrD2zyVLHF67ojsDu8Q_5 = {
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_6, "ident", 5);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_7, "identifier expected, but got \'$1\'", 33);
static NIM_CONST tySet_tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw TM_MW5RrD2zyVLHF67ojsDu8Q_8 = {
0xEC, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_9, "sons", 4);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_10, "expected: \'", 11);
extern NIM_CONST tyArray_rhDLCy9aNYBAIsWVh16bA0A TokTypeToStr_7y4sYGQdJmj2c4r0emPULw;
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_11, "\', but got: \'", 13);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_12, "\'", 1);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_13, "expression expected, but found \'$1\'", 35);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_14, "complex statement requires indentation", 38);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_15, "/Users/travis/build/nim-lang/nightlies/nim/e7471cebae2a404f3e42"
"39f199f5a0c422484aac/compiler/parser.nim(400, 9) `endTok in {tkC"
"urlyRi, tkCurlyDotRi, tkBracketRi, tkParRi}` ", 172);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_17, "expected \'.}\'", 13);
static NIM_CONST tySet_tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA TM_MW5RrD2zyVLHF67ojsDu8Q_19 = {
0x30, 0x00, 0x08, 0x00, 0x32, 0x68, 0x03, 0x03,
0x08, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00}
;
static NIM_CONST tySet_tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw TM_MW5RrD2zyVLHF67ojsDu8Q_20 = {
0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_21, "strVal", 6);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_22, "the syntax for tuple types is \'tuple[...]\', not \'tuple(...)\'", 60);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_23, "func keyword is not allowed in type descriptions, use proc with"
" {.noSideEffect.} pragma instead", 95);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_24, "type pragmas follow the type name; this form of writing pragmas"
" is deprecated", 77);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_25, "the \'concept\' keyword is only valid in \'type\' sections", 54);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_26, "with", 4);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_27, "without", 7);
static NIM_CONST tySet_tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw TM_MW5RrD2zyVLHF67ojsDu8Q_28 = {
0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_29, "intVal", 6);
static NIM_CONST tySet_tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw TM_MW5RrD2zyVLHF67ojsDu8Q_30 = {
0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_31, "floatVal", 8);
static NIM_CONST tySet_tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA TM_MW5RrD2zyVLHF67ojsDu8Q_32 = {
0x00, 0x25, 0x03, 0x9A, 0x84, 0x04, 0x00, 0x10,
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_37, "\':\' or \'=\' expected, but got \'$1\'", 33);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_38, "the syntax is \'parameter: var T\', not \'var parameter: T\'", 56);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_39, "expected closing \')\'", 20);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_40, "->", 2);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_41, "expected \':\'", 12);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_43, "expected \'except\'", 17);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_44, "the \'asm\' statement takes a string literal", 42);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_45, "in", 2);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_46, "out", 3);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_47, "pragma before generic parameter list is deprecated", 50);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_48, "pragma already present", 22);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_53, "*", 1);
STRING_LITERAL(TM_MW5RrD2zyVLHF67ojsDu8Q_54, "invalid indentation; an export marker \'*\' follows the declared "
"identifier", 73);

static N_INLINE(void, nimSetMem_JE6t4x7Z3v2iVz27Nx0MRAmemory)(void* a, int v, NI size) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memset(a, v, ((size_t) (size)));
}

static N_INLINE(void, nimZeroMem)(void* p, NI size) {
	nimSetMem_JE6t4x7Z3v2iVz27Nx0MRAmemory(p, ((int) 0), size);
}

N_LIB_PRIVATE N_NIMCALL(void, getTok_Xu4eHJ43ZFePtQEl7xNDtQ)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	rawGetTok_rwBXgYq6A9aRSWDrvp6B9cQg((&(*p).lex), (&(*p).tok));
	(*p).hasProgress = NIM_TRUE;
}

N_LIB_PRIVATE N_NIMCALL(void, openParser_FW7ShvhAki8F9b1PK9cXVItg)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NI32 fileIdx, tyObject_TLLStream_a5oZYQ9aTktYME2449ayEi6g* inputStream, tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache, tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* config) {
	initToken_EaKJR9ap6SPzmmvwWz9aMd1g((&(*p).tok));
	openLexer_EiqAU8uzJcXxIU5x2lB0bg((&(*p).lex), fileIdx, inputStream, cache, config);
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	(*p).firstTok = NIM_TRUE;
	unsureAsgnRef((void**) (&(*p).emptyNode), newNode_PMZ27S9ai4FB3gXOMDXvwsQ(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)));
}

N_LIB_PRIVATE N_NIMCALL(void, openParser_VZUcy9bQgXXeGGRhyp8109aA)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NimStringDesc* filename, tyObject_TLLStream_a5oZYQ9aTktYME2449ayEi6g* inputStream, tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache, tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* config) {
	NI32 T1_;
	T1_ = (NI32)0;
	T1_ = fileInfoIdx_3HRSVgYDcnQTolSZGx1zjA(config, filename);
	openParser_FW7ShvhAki8F9b1PK9cXVItg(p, T1_, inputStream, cache, config);
}

static N_INLINE(tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q, getLineInfo_lGlzs3oAU9bZxh6O9ctsjl5Qlexer)(tyObject_TLexer_PdyFIzn4patQ2zB5OFD9cjw* L, tyObject_TToken_kLaEEPwLj8cag79cbYQIkHQ* tok) {
	tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q result;
	nimZeroMem((void*)(&result), sizeof(tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q));
	result = newLineInfo_NPagzbOMpGo9aqJmfnDrITg((*L).fileIdx, (*tok).line, (*tok).col);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q, parLineInfo_MtiItYhm6aG5IoWBtYIaGg)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q result;
	nimZeroMem((void*)(&result), sizeof(tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q));
	result = getLineInfo_lGlzs3oAU9bZxh6O9ctsjl5Qlexer((&(*p).lex), (&(*p).tok));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNodeP_Op9ax6vrbzZMdkYtTvibBdg)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = parLineInfo_MtiItYhm6aG5IoWBtYIaGg(p);
	result = newNodeI_vokyXY9cZDshCSxFKChhG9bg(kind, T1_);
	return result;
}

static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memcpy(dest, source, ((size_t) (size)));
}

static N_INLINE(void, copyMem_M04YC71iJg1N7gBF3HZTngsystem)(void* dest, void* source, NI size) {
	nimCopyMem(dest, source, size);
}

static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
	{
		if (!!((src == NIM_NIL))) goto LA3_;
		copyMem_M04YC71iJg1N7gBF3HZTngsystem(((void*) ((&(*dest).data[(*dest).Sup.len]))), ((void*) ((*src).data)), ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
		(*dest).Sup.len += (*src).Sup.len;
	}
	LA3_: ;
}

static N_INLINE(void, incRef_AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c) {
	(*c).refcount = (NI)((NU32)((*c).refcount) + (NU32)(((NI) 8)));
}

static N_INLINE(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell_QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr) {
	tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* result;
	result = (tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
	result = ((tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*) ((NI)((NU32)(((NI) (ptrdiff_t) (usr))) - (NU32)(((NI) 8)))));
	return result;
}

static N_INLINE(void, rtlAddZCT_AT1eRuflKWyTTBdLjEDZbg_2system)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c) {
	addZCT_Y66tOYFjgwJ0k4aLz4bc0Q((&gch_IcYaEuuWivYAS86vFMTS3Q.zct), c);
}

static N_INLINE(void, decRef_AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c) {
	(*c).refcount = (NI)((NU32)((*c).refcount) - (NU32)(((NI) 8)));
	{
		if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA3_;
		rtlAddZCT_AT1eRuflKWyTTBdLjEDZbg_2system(c);
	}
	LA3_: ;
}

static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* T5_;
		if (!!((src == NIM_NIL))) goto LA3_;
		T5_ = (tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T5_ = usrToCell_QFQqcLB3lgOdwipkv9a60xwsystem(src);
		incRef_AT1eRuflKWyTTBdLjEDZbg_3system(T5_);
	}
	LA3_: ;
	{
		tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* T10_;
		if (!!(((*dest) == NIM_NIL))) goto LA8_;
		T10_ = (tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T10_ = usrToCell_QFQqcLB3lgOdwipkv9a60xwsystem((*dest));
		decRef_AT1eRuflKWyTTBdLjEDZbgsystem(T10_);
	}
	LA8_: ;
	(*dest) = src;
}

N_LIB_PRIVATE N_NIMCALL(void, parMessage_wjMY23FEyPmv9cffowHLsxA)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w msg, NimStringDesc* arg) {
	lexMessageTok_ZiZ2YCW3WVnv6CAJkbYW9cA((&(*p).lex), msg, (&(*p).tok), arg);
}

N_LIB_PRIVATE N_NIMCALL(void, rawSkipComment_4X69atLAOW9bH7XN7NtLQ15A_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* node) {
	{
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 110))) goto LA3_;
		{
			if (!!((node == NIM_NIL))) goto LA7_;
			asgnRef((void**) (&(*node).comment), resizeString((*node).comment, ((*p).tok.literal ? (*p).tok.literal->Sup.len : 0) + 0));
appendString((*node).comment, (*p).tok.literal);
		}
		goto LA5_;
		LA7_: ;
		{
			parMessage_wjMY23FEyPmv9cffowHLsxA((&(*p)), ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 1), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_3));
		}
		LA5_: ;
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	LA3_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, skipComment_4X69atLAOW9bH7XN7NtLQ15A)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* node) {
	{
		if (!((*p).tok.indent < ((NI) 0))) goto LA3_;
		rawSkipComment_4X69atLAOW9bH7XN7NtLQ15A_2(p, node);
	}
	LA3_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, parMessage_trqiH2WnOZXdRtAc0s4e7A)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NimStringDesc* arg) {
	lexMessageTok_ZiZ2YCW3WVnv6CAJkbYW9cA((&(*p).lex), ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), (&(*p).tok), arg);
}

N_LIB_PRIVATE N_NIMCALL(void, skipInd_Xu4eHJ43ZFePtQEl7xNDtQ_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	{
		if (!(((NI) 0) <= (*p).tok.indent)) goto LA3_;
		{
			if (!!(((*p).currInd < (*p).tok.indent))) goto LA7_;
			parMessage_trqiH2WnOZXdRtAc0s4e7A((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_4));
		}
		LA7_: ;
	}
	LA3_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, optInd_f29cj23F8gdIHggpJ4lkkNw)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, n);
	skipInd_Xu4eHJ43ZFePtQEl7xNDtQ_2(p);
}

N_LIB_PRIVATE N_NIMCALL(void, getTokNoInd_Xu4eHJ43ZFePtQEl7xNDtQ_3)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	{
		if (!(((NI) 0) <= (*p).tok.indent)) goto LA3_;
		parMessage_trqiH2WnOZXdRtAc0s4e7A((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_4));
	}
	LA3_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newIdentNodeP_gljI1VO9aaziQr60MYvmzCw)(tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* ident, tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2), p);
	if (!(((TM_MW5RrD2zyVLHF67ojsDu8Q_5[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_6));
	asgnRef((void**) (&(*result).ident), ident);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, parMessage_rXWbL6tbX9bTHhjIGAkRQhA)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NimStringDesc* msg, tyObject_TToken_kLaEEPwLj8cag79cbYQIkHQ* tok) {
	NimStringDesc* T1_;
	NimStringDesc* T2_;
	T1_ = (NimStringDesc*)0;
	T1_ = prettyTok_d3YnHm5OyfXf5tTfAaERTg(tok);
	T2_ = (NimStringDesc*)0;
	T2_ = nsuFormatSingleElem(msg, T1_);
	parMessage_wjMY23FEyPmv9cffowHLsxA(p, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), T2_);
}

static N_INLINE(NI, len_P89cqdlERShb9alU3iC0yj8wast)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NI result;
	NI T1_;
	result = (NI)0;
	if (((TM_MW5RrD2zyVLHF67ojsDu8Q_8[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_9));
	T1_ = ((*n).sons ? (*n).sons->Sup.len : 0);
	result = T1_;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, eat_lqpEdCtNNxv5ylRLl1vASw)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA tokType) {
	{
		if (!((*p).tok.tokType == tokType)) goto LA3_;
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	goto LA1_;
	LA3_: ;
	{
		NimStringDesc* T6_;
		NimStringDesc* T7_;
		T6_ = (NimStringDesc*)0;
		T7_ = (NimStringDesc*)0;
		T7_ = prettyTok_d3YnHm5OyfXf5tTfAaERTg((&(*p).tok));
		T6_ = rawNewString((TokTypeToStr_7y4sYGQdJmj2c4r0emPULw[(tokType)- 0] ? TokTypeToStr_7y4sYGQdJmj2c4r0emPULw[(tokType)- 0]->Sup.len : 0) + (T7_ ? T7_->Sup.len : 0) + 25);
appendString(T6_, ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_10));
appendString(T6_, TokTypeToStr_7y4sYGQdJmj2c4r0emPULw[(tokType)- 0]);
appendString(T6_, ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_11));
appendString(T6_, T7_);
appendString(T6_, ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_12));
		lexMessage_7sgxHfR2r4xBBAjZv1DqbQ((&(*p).lex), ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), T6_);
	}
	LA1_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseSymbol_N3GnkfhgYci4va8Az3kikA)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_SymbolMode_9aoP9cJZtqH9cYXp2xqhRfe4g mode) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	switch ((*p).tok.tokType) {
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 2):
	{
		result = newIdentNodeP_gljI1VO9aaziQr60MYvmzCw((*p).tok.ident, (&(*p)));
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 3) ... ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 68):
	{
		{
			NIM_BOOL T5_;
			T5_ = (NIM_BOOL)0;
			T5_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 62) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 58) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 3));
			if (T5_) goto LA6_;
			T5_ = (mode == ((tyEnum_SymbolMode_9aoP9cJZtqH9cYXp2xqhRfe4g) 2));
			LA6_: ;
			if (!T5_) goto LA7_;
			result = newIdentNodeP_gljI1VO9aaziQr60MYvmzCw((*p).tok.ident, (&(*p)));
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		}
		goto LA3_;
		LA7_: ;
		{
			NIM_BOOL T10_;
			T10_ = (NIM_BOOL)0;
			T10_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 44));
			if (!(T10_)) goto LA11_;
			T10_ = (mode == ((tyEnum_SymbolMode_9aoP9cJZtqH9cYXp2xqhRfe4g) 1));
			LA11_: ;
			if (!T10_) goto LA12_;
			result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23), (&(*p)));
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		}
		goto LA3_;
		LA12_: ;
		{
			parMessage_rXWbL6tbX9bTHhjIGAkRQhA((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_7), (&(*p).tok));
			result = (*p).emptyNode;
		}
		LA3_: ;
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 111):
	{
		result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 53), (&(*p)));
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		{
			while (1) {
				switch ((*p).tok.tokType) {
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 111):
				{
					{
						NI T21_;
						T21_ = (NI)0;
						T21_ = len_P89cqdlERShb9alU3iC0yj8wast(result);
						if (!(T21_ == ((NI) 0))) goto LA22_;
						parMessage_rXWbL6tbX9bTHhjIGAkRQhA((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_7), (&(*p).tok));
					}
					LA22_: ;
					goto LA16;
				}
				break;
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 109):
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 106):
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 107):
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 105):
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 89) ... ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 100):
				{
					tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q lineinfo;
					NimStringDesc* accm;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* node;
					lineinfo = parLineInfo_MtiItYhm6aG5IoWBtYIaGg((&(*p)));
					accm = ((NimStringDesc*) NIM_NIL);
					{
						while (1) {
							NimStringDesc* T27_;
							if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 109) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 106) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 107) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 105) || (*p).tok.tokType >= ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 89) && (*p).tok.tokType <= ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 100))) goto LA26;
							T27_ = (NimStringDesc*)0;
							T27_ = tokToStr_d3YnHm5OyfXf5tTfAaERTg_2((&(*p).tok));
							accm = resizeString(accm, (T27_ ? T27_->Sup.len : 0) + 0);
appendString(accm, T27_);
							getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
						} LA26: ;
					}
					node = newNodeI_vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2), lineinfo);
					if (!(((TM_MW5RrD2zyVLHF67ojsDu8Q_5[(NU)((*node).kind)>>3] &(1U<<((NU)((*node).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_6));
					asgnRef((void**) (&(*node).ident), getIdent_9coBOmdXN09be4rJvXK6fQGQ((*p).lex.cache, accm));
					add_P8dDSotTW25BkfbyspojGg(result, node);
				}
				break;
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 3) ... ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 68):
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 2):
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 69) ... ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 88):
				{
					NimStringDesc* T29_;
					tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T30_;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T31_;
					T29_ = (NimStringDesc*)0;
					T29_ = tokToStr_d3YnHm5OyfXf5tTfAaERTg_2((&(*p).tok));
					T30_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
					T30_ = getIdent_9coBOmdXN09be4rJvXK6fQGQ((*p).lex.cache, T29_);
					T31_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T31_ = newIdentNodeP_gljI1VO9aaziQr60MYvmzCw(T30_, (&(*p)));
					add_P8dDSotTW25BkfbyspojGg(result, T31_);
					getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
				}
				break;
				default:
				{
					parMessage_rXWbL6tbX9bTHhjIGAkRQhA((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_7), (&(*p).tok));
					goto LA16;
				}
				break;
				}
			}
		} LA16: ;
		eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 111));
	}
	break;
	default:
	{
		parMessage_rXWbL6tbX9bTHhjIGAkRQhA((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_7), (&(*p).tok));
		result = (*p).emptyNode;
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, colcom_f29cj23F8gdIHggpJ4lkkNw_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 103));
	skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, n);
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isExprStart_vR74cuHb1b42ISgxLPKFXw)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	switch ((*p).tok.tokType) {
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 2):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 111):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 109):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 45):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 44):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 11):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 31):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 28):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 51):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 30):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 38):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 7):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 3):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 89):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 91):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 93):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 69) ... ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 88):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 64):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 54):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 52):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 61):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 47):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 65):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 10):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 50):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 58):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 62):
	{
		result = NIM_TRUE;
	}
	break;
	default:
	{
		result = NIM_FALSE;
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, exprList_vNL1MotDDlqUCHIgY7Xasg)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA endTok, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result) {
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
	{
		while (1) {
			NIM_BOOL T3_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
			T3_ = (NIM_BOOL)0;
			T3_ = !(((*p).tok.tokType == endTok));
			if (!(T3_)) goto LA4_;
			T3_ = !(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 1)));
			LA4_: ;
			if (!T3_) goto LA2;
			a = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
			addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
			{
				if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101)))) goto LA7_;
				goto LA1;
			}
			LA7_: ;
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			optInd_f29cj23F8gdIHggpJ4lkkNw(p, a);
		} LA2: ;
	} LA1: ;
}

N_LIB_PRIVATE N_NIMCALL(void, flexComment_4X69atLAOW9bH7XN7NtLQ15A_3)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* node) {
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*p).tok.indent < ((NI) 0));
		if (T3_) goto LA4_;
		T3_ = ((*p).currInd < (*p).tok.indent);
		LA4_: ;
		if (!T3_) goto LA5_;
		rawSkipComment_4X69atLAOW9bH7XN7NtLQ15A_2(p, node);
	}
	LA5_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, optPar_Xu4eHJ43ZFePtQEl7xNDtQ_4)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	{
		if (!(((NI) 0) <= (*p).tok.indent)) goto LA3_;
		{
			if (!((*p).tok.indent < (*p).currInd)) goto LA7_;
			parMessage_trqiH2WnOZXdRtAc0s4e7A((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_4));
		}
		LA7_: ;
	}
	LA3_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, colonOrEquals_qidZGWvQrQ8JdLN3ZQrK5w_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T5_;
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 103))) goto LA3_;
		result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 34), (&(*p)));
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
		T5_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T5_ = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T5_);
	}
	goto LA1_;
	LA3_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T9_;
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 105))) goto LA7_;
		result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 33), (&(*p)));
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
		T9_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T9_ = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T9_);
	}
	goto LA1_;
	LA7_: ;
	{
		result = a;
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, exprColonEqExpr_x3UAdSvBfIIO33m4gWdOPg_7)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	a = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
	{
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 20))) goto LA3_;
		result = postExprBlocks_TghyduzCvNkQUONd4Z5lpA(p, a);
	}
	goto LA1_;
	LA3_: ;
	{
		result = colonOrEquals_qidZGWvQrQ8JdLN3ZQrK5w_2(p, a);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, exprColonEqExprListAux_vNL1MotDDlqUCHIgY7Xasg_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA endTok, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result) {
	{
		if (!!((endTok == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 94) || endTok == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 98) || endTok == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 92) || endTok == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 90)))) goto LA3_;
		failedAssertImpl_W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_15));
	}
	LA3_: ;
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	flexComment_4X69atLAOW9bH7XN7NtLQ15A_3(p, result);
	optPar_Xu4eHJ43ZFePtQEl7xNDtQ_4(p);
	{
		while (1) {
			NIM_BOOL T7_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
			T7_ = (NIM_BOOL)0;
			T7_ = !(((*p).tok.tokType == endTok));
			if (!(T7_)) goto LA8_;
			T7_ = !(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 1)));
			LA8_: ;
			if (!T7_) goto LA6;
			a = exprColonEqExpr_x3UAdSvBfIIO33m4gWdOPg_7(p);
			addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
			{
				if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101)))) goto LA11_;
				goto LA5;
			}
			LA11_: ;
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			{
				NIM_BOOL T15_;
				NIM_BOOL T16_;
				tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw T21_;
				T15_ = (NIM_BOOL)0;
				T16_ = (NIM_BOOL)0;
				T16_ = (endTok == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 90));
				if (!(T16_)) goto LA17_;
				T16_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 90));
				LA17_: ;
				T15_ = T16_;
				if (!(T15_)) goto LA18_;
				T15_ = ((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 37));
				LA18_: ;
				if (!T15_) goto LA19_;
				T21_ = (tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw)0;
				T21_ = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 160);
				FieldDiscriminantCheck((NI)(NU)((*result).kind), (NI)(NU)(T21_), NimDT__bROa11lyF5vxEN9aYNbHmhw_kind, 162);
				(*result).kind = T21_;
			}
			LA19_: ;
			skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, a);
		} LA6: ;
	} LA5: ;
	optPar_Xu4eHJ43ZFePtQEl7xNDtQ_4(p);
	eat_lqpEdCtNNxv5ylRLl1vASw(p, endTok);
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, dotExpr_qidZGWvQrQ8JdLN3ZQrK5w)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	info = parLineInfo_MtiItYhm6aG5IoWBtYIaGg((&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	result = newNodeI_vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45), info);
	optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
	addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = parseSymbol_N3GnkfhgYci4va8Az3kikA(p, ((tyEnum_SymbolMode_9aoP9cJZtqH9cYXp2xqhRfe4g) 2));
	addSon_P8dDSotTW25BkfbyspojGg_2(result, T1_);
	{
		NIM_BOOL T4_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
		tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T8_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* y;
		tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T9_;
		T4_ = (NIM_BOOL)0;
		T4_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 108));
		if (!(T4_)) goto LA5_;
		T4_ = ((*p).tok.strongSpaceA <= ((NI8) 0));
		LA5_: ;
		if (!T4_) goto LA6_;
		T8_ = parLineInfo_MtiItYhm6aG5IoWBtYIaGg((&(*p)));
		x = newNodeI_vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42), T8_);
		if (((TM_MW5RrD2zyVLHF67ojsDu8Q_8[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_9));
		if ((NU)(((NI) 1)) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(((NI) 1),((*result).sons ? (*result).sons->Sup.len : 0)-1);
		add_P8dDSotTW25BkfbyspojGg(x, (*result).sons->data[((NI) 1)]);
		exprList_vNL1MotDDlqUCHIgY7Xasg(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 92), x);
		eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 92));
		T9_ = parLineInfo_MtiItYhm6aG5IoWBtYIaGg((&(*p)));
		y = newNodeI_vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), T9_);
		add_P8dDSotTW25BkfbyspojGg(y, x);
		if (((TM_MW5RrD2zyVLHF67ojsDu8Q_8[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_9));
		if ((NU)(((NI) 0)) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*result).sons ? (*result).sons->Sup.len : 0)-1);
		add_P8dDSotTW25BkfbyspojGg(y, (*result).sons->data[((NI) 0)]);
		{
			NIM_BOOL T12_;
			T12_ = (NIM_BOOL)0;
			T12_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 89));
			if (!(T12_)) goto LA13_;
			T12_ = ((*p).tok.strongSpaceA <= ((NI8) 0));
			LA13_: ;
			if (!T12_) goto LA14_;
			exprColonEqExprListAux_vNL1MotDDlqUCHIgY7Xasg_2(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 90), y);
		}
		LA14_: ;
		result = y;
	}
	LA6_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, identVis_p8B2ZGnnV4OxW0KbdW69bBg_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NIM_BOOL allowDot) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	a = parseSymbol_N3GnkfhgYci4va8Az3kikA(p, ((tyEnum_SymbolMode_9aoP9cJZtqH9cYXp2xqhRfe4g) 0));
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T5_;
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 109))) goto LA3_;
		result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 31), (&(*p)));
		T5_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T5_ = newIdentNodeP_gljI1VO9aaziQr60MYvmzCw((*p).tok.ident, (&(*p)));
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T5_);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	goto LA1_;
	LA3_: ;
	{
		NIM_BOOL T7_;
		T7_ = (NIM_BOOL)0;
		T7_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 106));
		if (!(T7_)) goto LA8_;
		T7_ = allowDot;
		LA8_: ;
		if (!T7_) goto LA9_;
		result = dotExpr_qidZGWvQrQ8JdLN3ZQrK5w(p, a);
	}
	goto LA1_;
	LA9_: ;
	{
		result = a;
	}
	LA1_: ;
	return result;
}

static N_INLINE(NI, addInt)(NI a, NI b) {
	NI result;
{	result = (NI)0;
	result = (NI)((NU32)(a) + (NU32)(b));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (((NI) 0) <= (NI)(result ^ a));
		if (T3_) goto LA4_;
		T3_ = (((NI) 0) <= (NI)(result ^ b));
		LA4_: ;
		if (!T3_) goto LA5_;
		goto BeforeRet_;
	}
	LA5_: ;
	raiseOverflow();
	}BeforeRet_: ;
	return result;
}

static N_INLINE(NI, subInt)(NI a, NI b) {
	NI result;
{	result = (NI)0;
	result = (NI)((NU32)(a) - (NU32)(b));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (((NI) 0) <= (NI)(result ^ a));
		if (T3_) goto LA4_;
		T3_ = (((NI) 0) <= (NI)(result ^ (NI)((NU32) ~(b))));
		LA4_: ;
		if (!T3_) goto LA5_;
		goto BeforeRet_;
	}
	LA5_: ;
	raiseOverflow();
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parsePragma_x3UAdSvBfIIO33m4gWdOPg_8)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NI TM_MW5RrD2zyVLHF67ojsDu8Q_16;
	NI TM_MW5RrD2zyVLHF67ojsDu8Q_18;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 90), (&(*p)));
	TM_MW5RrD2zyVLHF67ojsDu8Q_16 = addInt((*p).inPragma, ((NI) 1));
	(*p).inPragma = (NI)(TM_MW5RrD2zyVLHF67ojsDu8Q_16);
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
	{
		while (1) {
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
			if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 98) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 94) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 1)))) goto LA2;
			(*p).hasProgress = NIM_FALSE;
			a = exprColonEqExpr_x3UAdSvBfIIO33m4gWdOPg_7(p);
			{
				if (!!((*p).hasProgress)) goto LA5_;
				goto LA1;
			}
			LA5_: ;
			addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
			{
				if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101))) goto LA9_;
				getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
				skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, a);
			}
			LA9_: ;
		} LA2: ;
	} LA1: ;
	optPar_Xu4eHJ43ZFePtQEl7xNDtQ_4(p);
	{
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 98) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 94))) goto LA13_;
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	goto LA11_;
	LA13_: ;
	{
		parMessage_trqiH2WnOZXdRtAc0s4e7A((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_17));
	}
	LA11_: ;
	TM_MW5RrD2zyVLHF67ojsDu8Q_18 = subInt((*p).inPragma, ((NI) 1));
	(*p).inPragma = (NI)(TM_MW5RrD2zyVLHF67ojsDu8Q_18);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, identWithPragma_p8B2ZGnnV4OxW0KbdW69bBg)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NIM_BOOL allowDot) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	a = identVis_p8B2ZGnnV4OxW0KbdW69bBg_2(p, allowDot);
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T5_;
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 97))) goto LA3_;
		result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 43), (&(*p)));
		addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
		T5_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T5_ = parsePragma_x3UAdSvBfIIO33m4gWdOPg_8(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T5_);
	}
	goto LA1_;
	LA3_: ;
	{
		result = a;
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isOperator_6uuOzScs0cnz0GgHAhmd6w)(tyObject_TToken_kLaEEPwLj8cag79cbYQIkHQ* tok) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = ((TM_MW5RrD2zyVLHF67ojsDu8Q_19[(NU)((*tok).tokType)>>3] &(1U<<((NU)((*tok).tokType)&7U)))!=0);
	return result;
}

static N_INLINE(NIM_BOOL, isSigilLike_SfnwiGITn60liGLbLMGJMQparser)(tyObject_TToken_kLaEEPwLj8cag79cbYQIkHQ* tok) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T1_ = ((*tok).tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 109));
	if (!(T1_)) goto LA2_;
	if ((NU)(((NI) 0)) >= (NU)((*(*tok).ident).s ? (*(*tok).ident).s->Sup.len : 0)) raiseIndexError2(((NI) 0),((*(*tok).ident).s ? (*(*tok).ident).s->Sup.len : 0)-1);
	T1_ = ((NU8)((*(*tok).ident).s->data[((NI) 0)]) == (NU8)(64));
	LA2_: ;
	result = T1_;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, commandParam_EiJ9aFLksR8ZZLfSZEews8w)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NIM_BOOL* isFirstParam, tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg mode) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (!(mode == ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 1))) goto LA3_;
		result = simpleExpr_kdOUXIZEhnaRyfX0iKDcHQ(p, mode);
	}
	goto LA1_;
	LA3_: ;
	{
		result = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
	}
	LA1_: ;
	{
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 20))) goto LA8_;
		result = postExprBlocks_TghyduzCvNkQUONd4Z5lpA(p, result);
	}
	goto LA6_;
	LA8_: ;
	{
		NIM_BOOL T11_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* lhs;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T15_;
		T11_ = (NIM_BOOL)0;
		T11_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 105));
		if (!(T11_)) goto LA12_;
		T11_ = !((*isFirstParam));
		LA12_: ;
		if (!T11_) goto LA13_;
		lhs = result;
		result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 33), (&(*p)));
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, lhs);
		T15_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T15_ = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T15_);
	}
	goto LA6_;
	LA13_: ;
	LA6_: ;
	(*isFirstParam) = NIM_FALSE;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, commandExpr_plq1N3PYSlIO37godpWqcg)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* r, tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg mode) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NIM_BOOL isFirstParam;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26), (&(*p)));
	addSon_P8dDSotTW25BkfbyspojGg_2(result, r);
	isFirstParam = NIM_TRUE;
	(*p).hasProgress = NIM_FALSE;
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = commandParam_EiJ9aFLksR8ZZLfSZEews8w(p, (&isFirstParam), mode);
	addSon_P8dDSotTW25BkfbyspojGg_2(result, T1_);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, namedParams_yk2BP49bt9clLb19a43z5bm1w)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* callee, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA endTok) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	a = callee;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(kind, (&(*p)));
	addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
	exprColonEqExprListAux_vNL1MotDDlqUCHIgY7Xasg_2(p, endTok, result);
	return result;
}

static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
	tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* T1_;
	T1_ = (tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
	T1_ = usrToCell_QFQqcLB3lgOdwipkv9a60xwsystem(p);
	decRef_AT1eRuflKWyTTBdLjEDZbgsystem(T1_);
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newStrNodeP_iNMN6i7eOmK9cJZaS8PW9bHQ)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, NimStringDesc* strVal, tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NimStringDesc* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(kind, p);
	if (!(((TM_MW5RrD2zyVLHF67ojsDu8Q_20[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_21));
	T1_ = (NimStringDesc*)0;
	T1_ = (*result).strVal; (*result).strVal = copyStringRC1(strVal);
	if (T1_) nimGCunrefNoCycle(T1_);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseGStrLit_qidZGWvQrQ8JdLN3ZQrK5w_3)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	switch ((*p).tok.tokType) {
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 86):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T2_;
		result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 28), (&(*p)));
		addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
		T2_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T2_ = newStrNodeP_iNMN6i7eOmK9cJZaS8PW9bHQ(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 21), (*p).tok.literal, (&(*p)));
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T2_);
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 87):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T4_;
		result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 28), (&(*p)));
		addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
		T4_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T4_ = newStrNodeP_iNMN6i7eOmK9cJZaS8PW9bHQ(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 22), (*p).tok.literal, (&(*p)));
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T4_);
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	break;
	default:
	{
		result = a;
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isUnary_vR74cuHb1b42ISgxLPKFXw_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	{
		NIM_BOOL T3_;
		NIM_BOOL T4_;
		T3_ = (NIM_BOOL)0;
		T4_ = (NIM_BOOL)0;
		T4_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 109) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 107));
		if (!(T4_)) goto LA5_;
		T4_ = ((*p).tok.strongSpaceB == ((NI8) 0));
		LA5_: ;
		T3_ = T4_;
		if (!(T3_)) goto LA6_;
		T3_ = (((NI8) 0) < (*p).tok.strongSpaceA);
		LA6_: ;
		if (!T3_) goto LA7_;
		result = NIM_TRUE;
	}
	LA7_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, primarySuffix_w6T1jA9cTSlFBXKmqZbMNPw)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* r, NI baseIndent, tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg mode) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = r;
	{
		while (1) {
			NIM_BOOL T3_;
			NIM_BOOL T5_;
			T3_ = (NIM_BOOL)0;
			T3_ = ((*p).tok.indent < ((NI) 0));
			if (T3_) goto LA4_;
			T5_ = (NIM_BOOL)0;
			T5_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 106));
			if (!(T5_)) goto LA6_;
			T5_ = (baseIndent <= (*p).tok.indent);
			LA6_: ;
			T3_ = T5_;
			LA4_: ;
			if (!T3_) goto LA2;
			switch ((*p).tok.tokType) {
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 89):
			{
				{
					if (!(((NI8) 0) < (*p).tok.strongSpaceA)) goto LA10_;
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T16_;
						if (!(mode == ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 2))) goto LA14_;
						result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26), (&(*p)));
						addSon_P8dDSotTW25BkfbyspojGg_2(result, r);
						T16_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T16_ = primary_kdOUXIZEhnaRyfX0iKDcHQ_2(p, ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 0));
						addSon_P8dDSotTW25BkfbyspojGg_2(result, T16_);
					}
					goto LA12_;
					LA14_: ;
					{
						result = commandExpr_plq1N3PYSlIO37godpWqcg(p, result, mode);
					}
					LA12_: ;
					goto LA1;
				}
				LA10_: ;
				result = namedParams_yk2BP49bt9clLb19a43z5bm1w(p, result, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 90));
				{
					NIM_BOOL T20_;
					NI T21_;
					tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw T25_;
					T20_ = (NIM_BOOL)0;
					T21_ = (NI)0;
					T21_ = len_P89cqdlERShb9alU3iC0yj8wast(result);
					T20_ = (((NI) 1) < T21_);
					if (!(T20_)) goto LA22_;
					if (((TM_MW5RrD2zyVLHF67ojsDu8Q_8[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_9));
					if ((NU)(((NI) 1)) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(((NI) 1),((*result).sons ? (*result).sons->Sup.len : 0)-1);
					T20_ = ((*(*result).sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 34));
					LA22_: ;
					if (!T20_) goto LA23_;
					T25_ = (tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw)0;
					T25_ = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 38);
					FieldDiscriminantCheck((NI)(NU)((*result).kind), (NI)(NU)(T25_), NimDT__bROa11lyF5vxEN9aYNbHmhw_kind, 162);
					(*result).kind = T25_;
				}
				LA23_: ;
			}
			break;
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 106):
			{
				result = dotExpr_qidZGWvQrQ8JdLN3ZQrK5w(p, result);
				result = parseGStrLit_qidZGWvQrQ8JdLN3ZQrK5w_3(p, result);
			}
			break;
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 91):
			{
				{
					if (!(((NI8) 0) < (*p).tok.strongSpaceA)) goto LA30_;
					result = commandExpr_plq1N3PYSlIO37godpWqcg(p, result, mode);
					goto LA1;
				}
				LA30_: ;
				result = namedParams_yk2BP49bt9clLb19a43z5bm1w(p, result, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42), ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 92));
			}
			break;
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 93):
			{
				{
					if (!(((NI8) 0) < (*p).tok.strongSpaceA)) goto LA35_;
					result = commandExpr_plq1N3PYSlIO37godpWqcg(p, result, mode);
					goto LA1;
				}
				LA35_: ;
				result = namedParams_yk2BP49bt9clLb19a43z5bm1w(p, result, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 40), ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 94));
			}
			break;
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 2):
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 111):
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 69) ... ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 88):
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 44):
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 11):
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 109):
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 107):
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 24):
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 47):
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 51):
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 58):
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 61) ... ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 62):
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 64):
			{
				{
					NIM_BOOL T40_;
					NIM_BOOL T42_;
					T40_ = (NIM_BOOL)0;
					T40_ = ((*p).inPragma == ((NI) 0));
					if (!(T40_)) goto LA41_;
					T42_ = (NIM_BOOL)0;
					T42_ = isUnary_vR74cuHb1b42ISgxLPKFXw_2((&(*p)));
					if (T42_) goto LA43_;
					T42_ = !(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 109) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 107)));
					LA43_: ;
					T40_ = T42_;
					LA41_: ;
					if (!T40_) goto LA44_;
					result = commandExpr_plq1N3PYSlIO37godpWqcg(p, result, mode);
				}
				LA44_: ;
				goto LA1;
			}
			break;
			default:
			{
				goto LA1;
			}
			break;
			}
		} LA2: ;
	} LA1: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseTuple_MDbQ9c4Rjwx4LC9b3UHzN86g)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NIM_BOOL indentAllowed) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 134), (&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	{
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 91))) goto LA3_;
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
				if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 2) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 111))) goto LA6;
				a = parseIdentColonEquals_Bcfm0z8pniFRTPJG3yq6Iw(p, 0);
				addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
				{
					if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 102)))) goto LA9_;
					goto LA5;
				}
				LA9_: ;
				getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
				skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, a);
			} LA6: ;
		} LA5: ;
		optPar_Xu4eHJ43ZFePtQEl7xNDtQ_4(p);
		eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 92));
	}
	goto LA1_;
	LA3_: ;
	{
		if (!indentAllowed) goto LA12_;
		skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, result);
		{
			NI oldInd;
			if (!((*p).currInd < (*p).tok.indent)) goto LA16_;
			oldInd = (*p).currInd;
			(*p).currInd = (*p).tok.indent;
			rawSkipComment_4X69atLAOW9bH7XN7NtLQ15A_2(p, result);
			{
				while (1) {
					switch ((*p).tok.tokType) {
					case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 2):
					case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 111):
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a_2;
						a_2 = parseIdentColonEquals_Bcfm0z8pniFRTPJG3yq6Iw(p, 0);
						{
							NIM_BOOL T23_;
							T23_ = (NIM_BOOL)0;
							T23_ = ((*p).tok.indent < ((NI) 0));
							if (T23_) goto LA24_;
							T23_ = ((*p).currInd <= (*p).tok.indent);
							LA24_: ;
							if (!T23_) goto LA25_;
							rawSkipComment_4X69atLAOW9bH7XN7NtLQ15A_2(p, a_2);
						}
						LA25_: ;
						addSon_P8dDSotTW25BkfbyspojGg_2(result, a_2);
					}
					break;
					case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 1):
					{
						goto LA18;
					}
					break;
					default:
					{
						parMessage_rXWbL6tbX9bTHhjIGAkRQhA((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_7), (&(*p).tok));
						goto LA18;
					}
					break;
					}
					{
						if (!!(((*p).tok.indent == (*p).currInd))) goto LA31_;
						goto LA18;
					}
					LA31_: ;
				}
			} LA18: ;
			(*p).currInd = oldInd;
		}
		LA16_: ;
	}
	goto LA1_;
	LA12_: ;
	{
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 89))) goto LA34_;
		parMessage_wjMY23FEyPmv9cffowHLsxA((&(*p)), ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_22));
	}
	goto LA1_;
	LA34_: ;
	{
		result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 135), (&(*p)));
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, optPragmas_x3UAdSvBfIIO33m4gWdOPg_10)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T3_;
		NIM_BOOL T5_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 97));
		if (!(T3_)) goto LA4_;
		T5_ = (NIM_BOOL)0;
		T5_ = ((*p).tok.indent < ((NI) 0));
		if (T5_) goto LA6_;
		T5_ = ((*p).currInd < (*p).tok.indent);
		LA6_: ;
		T3_ = T5_;
		LA4_: ;
		if (!T3_) goto LA7_;
		result = parsePragma_x3UAdSvBfIIO33m4gWdOPg_8(p);
	}
	goto LA1_;
	LA7_: ;
	{
		result = (*p).emptyNode;
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseProcExpr_wfNtjJMWUKpIuvPDpwaA3w)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NIM_BOOL isExpr, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info;
	NIM_BOOL hasSignature;
	NIM_BOOL T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* params;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* pragmas;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	info = parLineInfo_MtiItYhm6aG5IoWBtYIaGg((&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	T1_ = (NIM_BOOL)0;
	T1_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 89) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 103));
	if (!(T1_)) goto LA2_;
	T1_ = ((*p).tok.indent < ((NI) 0));
	LA2_: ;
	hasSignature = T1_;
	params = parseParamList_WcTv1Of1vVb82irmP9cU0EA(p, NIM_TRUE);
	pragmas = optPragmas_x3UAdSvBfIIO33m4gWdOPg_10(p);
	{
		NIM_BOOL T5_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T9_;
		T5_ = (NIM_BOOL)0;
		T5_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 105));
		if (!(T5_)) goto LA6_;
		T5_ = isExpr;
		LA6_: ;
		if (!T5_) goto LA7_;
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, result);
		T9_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T9_ = parseStmt_x3UAdSvBfIIO33m4gWdOPg_5(p);
		result = newProcNode_g5PEkYP0A0RT03uHbJ6wKQ(kind, info, T9_, params, (*p).emptyNode, (*p).emptyNode, (*p).emptyNode, pragmas, (*p).emptyNode);
	}
	goto LA3_;
	LA7_: ;
	{
		result = newNodeI_vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 147), info);
		{
			if (!hasSignature) goto LA13_;
			addSon_P8dDSotTW25BkfbyspojGg_2(result, params);
			{
				if (!(kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 159))) goto LA17_;
				parMessage_trqiH2WnOZXdRtAc0s4e7A((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_23));
			}
			LA17_: ;
			addSon_P8dDSotTW25BkfbyspojGg_2(result, pragmas);
		}
		LA13_: ;
	}
	LA3_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseEnum_x3UAdSvBfIIO33m4gWdOPg_11)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 150), (&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
	optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
	flexComment_4X69atLAOW9bH7XN7NtLQ15A_3(p, result);
	{
		while (1) {
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* symPragma;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* pragma;
			a = parseSymbol_N3GnkfhgYci4va8Az3kikA(p, ((tyEnum_SymbolMode_9aoP9cJZtqH9cYXp2xqhRfe4g) 0));
			{
				if (!((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1))) goto LA5_;
				goto BeforeRet_;
			}
			LA5_: ;
			symPragma = a;
			pragma = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			{
				if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 97))) goto LA9_;
				pragma = optPragmas_x3UAdSvBfIIO33m4gWdOPg_10(p);
				symPragma = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 43), (&(*p)));
				addSon_P8dDSotTW25BkfbyspojGg_2(symPragma, a);
				addSon_P8dDSotTW25BkfbyspojGg_2(symPragma, pragma);
			}
			LA9_: ;
			{
				NIM_BOOL T13_;
				T13_ = (NIM_BOOL)0;
				T13_ = (((NI) 0) <= (*p).tok.indent);
				if (!(T13_)) goto LA14_;
				T13_ = ((*p).tok.indent <= (*p).currInd);
				LA14_: ;
				if (!T13_) goto LA15_;
				add_P8dDSotTW25BkfbyspojGg(result, symPragma);
				goto LA1;
			}
			LA15_: ;
			{
				NIM_BOOL T19_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T23_;
				T19_ = (NIM_BOOL)0;
				T19_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 105));
				if (!(T19_)) goto LA20_;
				T19_ = ((*p).tok.indent < ((NI) 0));
				LA20_: ;
				if (!T19_) goto LA21_;
				getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
				optInd_f29cj23F8gdIHggpJ4lkkNw(p, symPragma);
				b = symPragma;
				symPragma = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 151), (&(*p)));
				addSon_P8dDSotTW25BkfbyspojGg_2(symPragma, b);
				T23_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T23_ = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
				addSon_P8dDSotTW25BkfbyspojGg_2(symPragma, T23_);
				{
					NIM_BOOL T26_;
					T26_ = (NIM_BOOL)0;
					T26_ = ((*p).tok.indent < ((NI) 0));
					if (T26_) goto LA27_;
					T26_ = ((*p).currInd <= (*p).tok.indent);
					LA27_: ;
					if (!T26_) goto LA28_;
					rawSkipComment_4X69atLAOW9bH7XN7NtLQ15A_2(p, symPragma);
				}
				LA28_: ;
			}
			LA21_: ;
			{
				NIM_BOOL T32_;
				T32_ = (NIM_BOOL)0;
				T32_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101));
				if (!(T32_)) goto LA33_;
				T32_ = ((*p).tok.indent < ((NI) 0));
				LA33_: ;
				if (!T32_) goto LA34_;
				getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
				rawSkipComment_4X69atLAOW9bH7XN7NtLQ15A_2(p, symPragma);
			}
			goto LA30_;
			LA34_: ;
			{
				{
					NIM_BOOL T39_;
					T39_ = (NIM_BOOL)0;
					T39_ = ((*p).tok.indent < ((NI) 0));
					if (T39_) goto LA40_;
					T39_ = ((*p).currInd <= (*p).tok.indent);
					LA40_: ;
					if (!T39_) goto LA41_;
					rawSkipComment_4X69atLAOW9bH7XN7NtLQ15A_2(p, symPragma);
				}
				LA41_: ;
			}
			LA30_: ;
			addSon_P8dDSotTW25BkfbyspojGg_2(result, symPragma);
			{
				NIM_BOOL T45_;
				NIM_BOOL T46_;
				T45_ = (NIM_BOOL)0;
				T46_ = (NIM_BOOL)0;
				T46_ = (((NI) 0) <= (*p).tok.indent);
				if (!(T46_)) goto LA47_;
				T46_ = ((*p).tok.indent <= (*p).currInd);
				LA47_: ;
				T45_ = T46_;
				if (T45_) goto LA48_;
				T45_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 1));
				LA48_: ;
				if (!T45_) goto LA49_;
				goto LA1;
			}
			LA49_: ;
		}
	} LA1: ;
	{
		NI T53_;
		T53_ = (NI)0;
		T53_ = len_P89cqdlERShb9alU3iC0yj8wast(result);
		if (!(T53_ <= ((NI) 1))) goto LA54_;
		parMessage_rXWbL6tbX9bTHhjIGAkRQhA((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_7), (&(*p).tok));
	}
	LA54_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, validInd_N407wi9cDx33ZxrNOz2oYtA)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T1_ = ((*p).tok.indent < ((NI) 0));
	if (T1_) goto LA2_;
	T1_ = ((*p).currInd < (*p).tok.indent);
	LA2_: ;
	result = T1_;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseObjectWhen_x3UAdSvBfIIO33m4gWdOPg_14)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 140), (&(*p)));
	{
		while (1) {
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T3_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T4_;
			if (!((*p).tok.indent == (*p).currInd)) goto LA2;
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			branch = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 86), (&(*p)));
			optInd_f29cj23F8gdIHggpJ4lkkNw(p, branch);
			T3_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T3_ = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
			addSon_P8dDSotTW25BkfbyspojGg_2(branch, T3_);
			colcom_f29cj23F8gdIHggpJ4lkkNw_2(p, branch);
			T4_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T4_ = parseObjectPart_x3UAdSvBfIIO33m4gWdOPg_13(p);
			addSon_P8dDSotTW25BkfbyspojGg_2(branch, T4_);
			flexComment_4X69atLAOW9bH7XN7NtLQ15A_3(p, branch);
			addSon_P8dDSotTW25BkfbyspojGg_2(result, branch);
			{
				if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 21)))) goto LA7_;
				goto LA1;
			}
			LA7_: ;
		} LA2: ;
	} LA1: ;
	{
		NIM_BOOL T11_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch_2;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T15_;
		T11_ = (NIM_BOOL)0;
		T11_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 22));
		if (!(T11_)) goto LA12_;
		T11_ = ((*p).tok.indent == (*p).currInd);
		LA12_: ;
		if (!T11_) goto LA13_;
		branch_2 = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88), (&(*p)));
		eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 22));
		colcom_f29cj23F8gdIHggpJ4lkkNw_2(p, branch_2);
		T15_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T15_ = parseObjectPart_x3UAdSvBfIIO33m4gWdOPg_13(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(branch_2, T15_);
		flexComment_4X69atLAOW9bH7XN7NtLQ15A_3(p, branch_2);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, branch_2);
	}
	LA13_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseObjectCase_x3UAdSvBfIIO33m4gWdOPg_15)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T2_;
	NIM_BOOL wasIndented;
	NI oldInd;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 139), (&(*p)));
	getTokNoInd_Xu4eHJ43ZFePtQEl7xNDtQ_3(p);
	a = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 35), (&(*p)));
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = identWithPragma_p8B2ZGnnV4OxW0KbdW69bBg(p, NIM_FALSE);
	addSon_P8dDSotTW25BkfbyspojGg_2(a, T1_);
	eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 103));
	T2_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T2_ = parseTypeDesc_x3UAdSvBfIIO33m4gWdOPg_9(p);
	addSon_P8dDSotTW25BkfbyspojGg_2(a, T2_);
	addSon_P8dDSotTW25BkfbyspojGg_2(a, (*p).emptyNode);
	addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
	{
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 103))) goto LA5_;
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	LA5_: ;
	flexComment_4X69atLAOW9bH7XN7NtLQ15A_3(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) {
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* fields;
			if (!((*p).tok.indent == (*p).currInd)) goto LA12;
			b = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			switch ((*p).tok.tokType) {
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 48):
			{
				b = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 85), (&(*p)));
				exprList_vNL1MotDDlqUCHIgY7Xasg(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 103), b);
			}
			break;
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 22):
			{
				b = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88), (&(*p)));
				getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			}
			break;
			default:
			{
				goto LA11;
			}
			break;
			}
			colcom_f29cj23F8gdIHggpJ4lkkNw_2(p, b);
			fields = parseObjectPart_x3UAdSvBfIIO33m4gWdOPg_13(p);
			{
				if (!((*fields).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1))) goto LA18_;
				parMessage_rXWbL6tbX9bTHhjIGAkRQhA((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_7), (&(*p).tok));
				fields = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23), (&(*p)));
			}
			LA18_: ;
			addSon_P8dDSotTW25BkfbyspojGg_2(b, fields);
			addSon_P8dDSotTW25BkfbyspojGg_2(result, b);
			{
				if (!((*b).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88))) goto LA22_;
				goto LA11;
			}
			LA22_: ;
		} LA12: ;
	} LA11: ;
	{
		if (!wasIndented) goto LA26_;
		(*p).currInd = oldInd;
	}
	LA26_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseObjectPart_x3UAdSvBfIIO33m4gWdOPg_13)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NI oldInd;
		if (!((*p).currInd < (*p).tok.indent)) goto LA3_;
		result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138), (&(*p)));
		oldInd = (*p).currInd;
		(*p).currInd = (*p).tok.indent;
		rawSkipComment_4X69atLAOW9bH7XN7NtLQ15A_2(p, result);
		{
			while (1) {
				if (!((*p).tok.indent == (*p).currInd)) goto LA6;
				switch ((*p).tok.tokType) {
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 10):
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 65):
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 2):
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 111):
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 44):
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 17):
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T8_;
					T8_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T8_ = parseObjectPart_x3UAdSvBfIIO33m4gWdOPg_13(p);
					addSon_P8dDSotTW25BkfbyspojGg_2(result, T8_);
				}
				break;
				default:
				{
					parMessage_rXWbL6tbX9bTHhjIGAkRQhA((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_7), (&(*p).tok));
					goto LA5;
				}
				break;
				}
			} LA6: ;
		} LA5: ;
		(*p).currInd = oldInd;
	}
	goto LA1_;
	LA3_: ;
	{
		switch ((*p).tok.tokType) {
		case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 65):
		{
			result = parseObjectWhen_x3UAdSvBfIIO33m4gWdOPg_14(p);
		}
		break;
		case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 10):
		{
			result = parseObjectCase_x3UAdSvBfIIO33m4gWdOPg_15(p);
		}
		break;
		case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 2):
		case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 111):
		{
			result = parseIdentColonEquals_Bcfm0z8pniFRTPJG3yq6Iw(p, 1);
			{
				NIM_BOOL T16_;
				T16_ = (NIM_BOOL)0;
				T16_ = ((*p).tok.indent < ((NI) 0));
				if (T16_) goto LA17_;
				T16_ = ((*p).currInd <= (*p).tok.indent);
				LA17_: ;
				if (!T16_) goto LA18_;
				rawSkipComment_4X69atLAOW9bH7XN7NtLQ15A_2(p, result);
			}
			LA18_: ;
		}
		break;
		case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 44):
		case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 17):
		{
			result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23), (&(*p)));
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		}
		break;
		default:
		{
			result = (*p).emptyNode;
		}
		break;
		}
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseObject_x3UAdSvBfIIO33m4gWdOPg_12)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T25_;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 133), (&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	{
		NIM_BOOL T3_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 97));
		if (!(T3_)) goto LA4_;
		T3_ = validInd_N407wi9cDx33ZxrNOz2oYtA(p);
		LA4_: ;
		if (!T3_) goto LA5_;
		parMessage_wjMY23FEyPmv9cffowHLsxA((&(*p)), ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 15), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_24));
		T7_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T7_ = parsePragma_x3UAdSvBfIIO33m4gWdOPg_8(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T7_);
	}
	goto LA1_;
	LA5_: ;
	{
		addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
	}
	LA1_: ;
	{
		NIM_BOOL T11_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T15_;
		T11_ = (NIM_BOOL)0;
		T11_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 48));
		if (!(T11_)) goto LA12_;
		T11_ = ((*p).tok.indent < ((NI) 0));
		LA12_: ;
		if (!T11_) goto LA13_;
		a = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 77), (&(*p)));
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		T15_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T15_ = parseTypeDesc_x3UAdSvBfIIO33m4gWdOPg_9(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(a, T15_);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
	}
	goto LA9_;
	LA13_: ;
	{
		addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
	}
	LA9_: ;
	{
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 110))) goto LA19_;
		skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, result);
	}
	LA19_: ;
	{
		if (!!(((*p).currInd < (*p).tok.indent))) goto LA23_;
		addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
		goto BeforeRet_;
	}
	LA23_: ;
	T25_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T25_ = parseObjectPart_x3UAdSvBfIIO33m4gWdOPg_13(p);
	addSon_P8dDSotTW25BkfbyspojGg_2(result, T25_);
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseTypeClassParam_x3UAdSvBfIIO33m4gWdOPg_17)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw modifier;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	switch ((*p).tok.tokType) {
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 50):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 64):
	{
		modifier = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 143);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 52):
	{
		modifier = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 142);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 54):
	{
		modifier = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 141);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 58):
	{
		modifier = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 137);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 62):
	{
		modifier = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 132);
	}
	break;
	default:
	{
		modifier = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1);
	}
	break;
	}
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T11_;
		if (!!((modifier == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA9_;
		result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(modifier, (&(*p)));
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		T11_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T11_ = parseSymbol_N3GnkfhgYci4va8Az3kikA(p, ((tyEnum_SymbolMode_9aoP9cJZtqH9cYXp2xqhRfe4g) 0));
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T11_);
	}
	goto LA7_;
	LA9_: ;
	{
		result = parseSymbol_N3GnkfhgYci4va8Az3kikA(p, ((tyEnum_SymbolMode_9aoP9cJZtqH9cYXp2xqhRfe4g) 0));
	}
	LA7_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseTypeClass_x3UAdSvBfIIO33m4gWdOPg_16)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* args;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 136), (&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	args = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 152), (&(*p)));
	addSon_P8dDSotTW25BkfbyspojGg_2(result, args);
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = parseTypeClassParam_x3UAdSvBfIIO33m4gWdOPg_17(p);
	addSon_P8dDSotTW25BkfbyspojGg_2(args, T1_);
	{
		while (1) {
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T4_;
			if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101))) goto LA3;
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			T4_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T4_ = parseTypeClassParam_x3UAdSvBfIIO33m4gWdOPg_17(p);
			addSon_P8dDSotTW25BkfbyspojGg_2(args, T4_);
		} LA3: ;
	}
	{
		NIM_BOOL T7_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T11_;
		T7_ = (NIM_BOOL)0;
		T7_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 97));
		if (!(T7_)) goto LA8_;
		T7_ = validInd_N407wi9cDx33ZxrNOz2oYtA(p);
		LA8_: ;
		if (!T7_) goto LA9_;
		T11_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T11_ = parsePragma_x3UAdSvBfIIO33m4gWdOPg_8(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T11_);
	}
	goto LA5_;
	LA9_: ;
	{
		addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
	}
	LA5_: ;
	{
		NIM_BOOL T15_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
		T15_ = (NIM_BOOL)0;
		T15_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 48));
		if (!(T15_)) goto LA16_;
		T15_ = ((*p).tok.indent < ((NI) 0));
		LA16_: ;
		if (!T15_) goto LA17_;
		a = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 77), (&(*p)));
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T21_;
				T21_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T21_ = parseTypeDesc_x3UAdSvBfIIO33m4gWdOPg_9(p);
				addSon_P8dDSotTW25BkfbyspojGg_2(a, T21_);
				{
					if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101)))) goto LA24_;
					goto LA19;
				}
				LA24_: ;
				getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			}
		} LA19: ;
		addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
	}
	goto LA13_;
	LA17_: ;
	{
		addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
	}
	LA13_: ;
	{
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 110))) goto LA29_;
		skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, result);
	}
	LA29_: ;
	{
		if (!!(((*p).currInd < (*p).tok.indent))) goto LA33_;
		addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
	}
	goto LA31_;
	LA33_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T36_;
		T36_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T36_ = parseStmt_x3UAdSvBfIIO33m4gWdOPg_5(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T36_);
	}
	LA31_: ;
	return result;
}

static N_INLINE(int, nimCmpMem)(void* a, void* b, NI size) {
	int result;
	result = (int)0;
	result = memcmp(a, b, ((size_t) (size)));
	return result;
}

static N_INLINE(NIM_BOOL, equalMem_Bj9c9cm9cBM9coLsuNsT5BvZ9awsystem)(void* a, void* b, NI size) {
	NIM_BOOL result;
	int T1_;
	result = (NIM_BOOL)0;
	T1_ = (int)0;
	T1_ = nimCmpMem(a, b, size);
	result = (T1_ == ((NI32) 0));
	return result;
}

static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b) {
	NIM_BOOL result;
	NI alen;
	NI blen;
{	result = (NIM_BOOL)0;
	alen = (a ? a->Sup.len : 0);
	blen = (b ? b->Sup.len : 0);
	{
		if (!(alen == blen)) goto LA3_;
		{
			if (!(alen == ((NI) 0))) goto LA7_;
			result = NIM_TRUE;
			goto BeforeRet_;
		}
		LA7_: ;
		result = equalMem_Bj9c9cm9cBM9coLsuNsT5BvZ9awsystem(((void*) ((&a->data[((NI) 0)]))), ((void*) ((&b->data[((NI) 0)]))), ((NI) (alen)));
		goto BeforeRet_;
	}
	LA3_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, parseSymbolList_Td5PM3IOFGbl8rUPZBSfWg)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result) {
	{
		while (1) {
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* s;
			s = parseSymbol_N3GnkfhgYci4va8Az3kikA(p, ((tyEnum_SymbolMode_9aoP9cJZtqH9cYXp2xqhRfe4g) 1));
			{
				if (!((*s).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1))) goto LA5_;
				goto LA1;
			}
			LA5_: ;
			addSon_P8dDSotTW25BkfbyspojGg_2(result, s);
			{
				if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101)))) goto LA9_;
				goto LA1;
			}
			LA9_: ;
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			optInd_f29cj23F8gdIHggpJ4lkkNw(p, s);
		}
	} LA1: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseTypeDescKAux_9bFw56lxI4F5g2fW9cn1Vs6w)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg mode) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(kind, (&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = !(((*p).tok.indent == ((NI) -1)));
		if (!(T3_)) goto LA4_;
		T3_ = ((*p).tok.indent <= (*p).currInd);
		LA4_: ;
		if (!T3_) goto LA5_;
		goto BeforeRet_;
	}
	LA5_: ;
	optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
	{
		NIM_BOOL T9_;
		NIM_BOOL T10_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T14_;
		T9_ = (NIM_BOOL)0;
		T10_ = (NIM_BOOL)0;
		T10_ = isOperator_6uuOzScs0cnz0GgHAhmd6w((&(*p).tok));
		T9_ = !(T10_);
		if (!(T9_)) goto LA11_;
		T9_ = isExprStart_vR74cuHb1b42ISgxLPKFXw((&(*p)));
		LA11_: ;
		if (!T9_) goto LA12_;
		T14_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T14_ = primary_kdOUXIZEhnaRyfX0iKDcHQ_2(p, mode);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T14_);
	}
	LA12_: ;
	{
		NIM_BOOL T17_;
		tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw nodeKind;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* list;
		T17_ = (NIM_BOOL)0;
		T17_ = (kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 146));
		if (!(T17_)) goto LA18_;
		T17_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 2));
		LA18_: ;
		if (!T17_) goto LA19_;
		nodeKind = (tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw)0;
		{
			if (!eqStrings((*(*p).tok.ident).s, ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_26))) goto LA23_;
			nodeKind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 130);
		}
		goto LA21_;
		LA23_: ;
		{
			if (!eqStrings((*(*p).tok.ident).s, ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_27))) goto LA26_;
			nodeKind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 131);
		}
		goto LA21_;
		LA26_: ;
		{
			goto BeforeRet_;
		}
		LA21_: ;
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		list = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(nodeKind, (&(*p)));
		addSon_P8dDSotTW25BkfbyspojGg_2(result, list);
		parseSymbolList_Td5PM3IOFGbl8rUPZBSfWg(p, list);
	}
	LA19_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newIntNodeP_hbyUqFVqPnpH2E5dcZ36Yg)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, NI64 intVal, tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(kind, p);
	if (!(((TM_MW5RrD2zyVLHF67ojsDu8Q_28[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_29));
	(*result).intVal = intVal;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, setBaseFlags_9bmmAhE51GY2H09bDpfhLbpA)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TNumericalBase_9cbxR9czWgoXwHHSzHtd9aV7Q base) {
	switch (base) {
	case ((tyEnum_TNumericalBase_9cbxR9czWgoXwHHSzHtd9aV7Q) 0):
	{
	}
	break;
	case ((tyEnum_TNumericalBase_9cbxR9czWgoXwHHSzHtd9aV7Q) 1):
	{
		(*n).flags |= ((NU32)1)<<((((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 1)) & 31);
	}
	break;
	case ((tyEnum_TNumericalBase_9cbxR9czWgoXwHHSzHtd9aV7Q) 2):
	{
		(*n).flags |= ((NU32)1)<<((((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 2)) & 31);
	}
	break;
	case ((tyEnum_TNumericalBase_9cbxR9czWgoXwHHSzHtd9aV7Q) 3):
	{
		(*n).flags |= ((NU32)1)<<((((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 3)) & 31);
	}
	break;
	}
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newFloatNodeP_T0XGfAYe4dADVSxKlk3frA)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, NF floatVal, tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(kind, p);
	if (!(((TM_MW5RrD2zyVLHF67ojsDu8Q_30[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_31));
	(*result).floatVal = floatVal;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, exprColonEqExprList_F0eTToKkYyarQzoxiW3vAw)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA endTok) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(kind, (&(*p)));
	exprColonEqExprListAux_vNL1MotDDlqUCHIgY7Xasg_2(p, endTok, result);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, semiStmtList_Td5PM3IOFGbl8rUPZBSfWg_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result) {
	NI TM_MW5RrD2zyVLHF67ojsDu8Q_33;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	NI TM_MW5RrD2zyVLHF67ojsDu8Q_34;
	tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw T5_;
	TM_MW5RrD2zyVLHF67ojsDu8Q_33 = addInt((*p).inSemiStmtList, ((NI) 1));
	(*p).inSemiStmtList = (NI)(TM_MW5RrD2zyVLHF67ojsDu8Q_33);
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = complexOrSimpleStmt_x3UAdSvBfIIO33m4gWdOPg_2(p);
	add_P8dDSotTW25BkfbyspojGg(result, T1_);
	{
		while (1) {
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T4_;
			if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 102))) goto LA3;
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
			T4_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T4_ = complexOrSimpleStmt_x3UAdSvBfIIO33m4gWdOPg_2(p);
			add_P8dDSotTW25BkfbyspojGg(result, T4_);
		} LA3: ;
	}
	TM_MW5RrD2zyVLHF67ojsDu8Q_34 = subInt((*p).inSemiStmtList, ((NI) 1));
	(*p).inSemiStmtList = (NI)(TM_MW5RrD2zyVLHF67ojsDu8Q_34);
	T5_ = (tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw)0;
	T5_ = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126);
	FieldDiscriminantCheck((NI)(NU)((*result).kind), (NI)(NU)(T5_), NimDT__bROa11lyF5vxEN9aYNbHmhw_kind, 162);
	(*result).kind = T5_;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseStmtPragma_x3UAdSvBfIIO33m4gWdOPg_19)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = parsePragma_x3UAdSvBfIIO33m4gWdOPg_8(p);
	{
		NIM_BOOL T3_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 103));
		if (!(T3_)) goto LA4_;
		T3_ = ((*p).tok.indent < ((NI) 0));
		LA4_: ;
		if (!T3_) goto LA5_;
		a = result;
		result = newNodeI_vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 91), (*a).info);
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, result);
		add_P8dDSotTW25BkfbyspojGg(result, a);
		T7_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T7_ = parseStmt_x3UAdSvBfIIO33m4gWdOPg_5(p);
		add_P8dDSotTW25BkfbyspojGg(result, T7_);
	}
	LA5_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parsePar_x3UAdSvBfIIO33m4gWdOPg_18)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 37), (&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
	flexComment_4X69atLAOW9bH7XN7NtLQ15A_3(p, result);
	{
		if (!((TM_MW5RrD2zyVLHF67ojsDu8Q_32[(NU)((*p).tok.tokType)>>3] &(1U<<((NU)((*p).tok.tokType)&7U)))!=0)) goto LA3_;
		semiStmtList_Td5PM3IOFGbl8rUPZBSfWg_2(p, result);
	}
	goto LA1_;
	LA3_: ;
	{
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 102))) goto LA6_;
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
		semiStmtList_Td5PM3IOFGbl8rUPZBSfWg_2(p, result);
	}
	goto LA1_;
	LA6_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T11_;
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 97))) goto LA9_;
		T11_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T11_ = parseStmtPragma_x3UAdSvBfIIO33m4gWdOPg_19(p);
		add_P8dDSotTW25BkfbyspojGg(result, T11_);
	}
	goto LA1_;
	LA9_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
		if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 90)))) goto LA13_;
		a = simpleExpr_kdOUXIZEhnaRyfX0iKDcHQ(p, ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 0));
		{
			if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 20))) goto LA17_;
			result = postExprBlocks_TghyduzCvNkQUONd4Z5lpA(p, a);
		}
		goto LA15_;
		LA17_: ;
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* asgn;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b;
			if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 105))) goto LA20_;
			asgn = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73), (&(*p)));
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
			b = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
			add_P8dDSotTW25BkfbyspojGg(asgn, a);
			add_P8dDSotTW25BkfbyspojGg(asgn, b);
			add_P8dDSotTW25BkfbyspojGg(result, asgn);
			{
				if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 102))) goto LA24_;
				semiStmtList_Td5PM3IOFGbl8rUPZBSfWg_2(p, result);
			}
			LA24_: ;
		}
		goto LA15_;
		LA20_: ;
		{
			if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 102))) goto LA27_;
			add_P8dDSotTW25BkfbyspojGg(result, a);
			semiStmtList_Td5PM3IOFGbl8rUPZBSfWg_2(p, result);
		}
		goto LA15_;
		LA27_: ;
		{
			a = colonOrEquals_qidZGWvQrQ8JdLN3ZQrK5w_2(p, a);
			add_P8dDSotTW25BkfbyspojGg(result, a);
			{
				if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101))) goto LA32_;
				getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
				skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, a);
				{
					tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw T38_;
					if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 90))) goto LA36_;
					T38_ = (tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw)0;
					T38_ = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 160);
					FieldDiscriminantCheck((NI)(NU)((*result).kind), (NI)(NU)(T38_), NimDT__bROa11lyF5vxEN9aYNbHmhw_kind, 162);
					(*result).kind = T38_;
				}
				LA36_: ;
				{
					while (1) {
						NIM_BOOL T41_;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a_2;
						T41_ = (NIM_BOOL)0;
						T41_ = !(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 90)));
						if (!(T41_)) goto LA42_;
						T41_ = !(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 1)));
						LA42_: ;
						if (!T41_) goto LA40;
						a_2 = exprColonEqExpr_x3UAdSvBfIIO33m4gWdOPg_7(p);
						addSon_P8dDSotTW25BkfbyspojGg_2(result, a_2);
						{
							if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101)))) goto LA45_;
							goto LA39;
						}
						LA45_: ;
						getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
						skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, a_2);
					} LA40: ;
				} LA39: ;
			}
			LA32_: ;
		}
		LA15_: ;
	}
	goto LA1_;
	LA13_: ;
	LA1_: ;
	optPar_Xu4eHJ43ZFePtQEl7xNDtQ_4(p);
	eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 90));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, setOrTableConstr_x3UAdSvBfIIO33m4gWdOPg_20)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 39), (&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
	{
		tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw T5_;
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 103))) goto LA3_;
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		T5_ = (tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw)0;
		T5_ = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 54);
		FieldDiscriminantCheck((NI)(NU)((*result).kind), (NI)(NU)(T5_), NimDT__bROa11lyF5vxEN9aYNbHmhw_kind, 162);
		(*result).kind = T5_;
	}
	goto LA1_;
	LA3_: ;
	{
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
				if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 94) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 1)))) goto LA8;
				a = exprColonEqExpr_x3UAdSvBfIIO33m4gWdOPg_7(p);
				{
					tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw T13_;
					if (!((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 34))) goto LA11_;
					T13_ = (tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw)0;
					T13_ = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 54);
					FieldDiscriminantCheck((NI)(NU)((*result).kind), (NI)(NU)(T13_), NimDT__bROa11lyF5vxEN9aYNbHmhw_kind, 162);
					(*result).kind = T13_;
				}
				LA11_: ;
				addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
				{
					if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101)))) goto LA16_;
					goto LA7;
				}
				LA16_: ;
				getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
				skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, a);
			} LA8: ;
		} LA7: ;
	}
	LA1_: ;
	optPar_Xu4eHJ43ZFePtQEl7xNDtQ_4(p);
	eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 94));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseCast_x3UAdSvBfIIO33m4gWdOPg_21)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T2_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 61), (&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 91));
	optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = parseTypeDesc_x3UAdSvBfIIO33m4gWdOPg_9(p);
	addSon_P8dDSotTW25BkfbyspojGg_2(result, T1_);
	optPar_Xu4eHJ43ZFePtQEl7xNDtQ_4(p);
	eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 92));
	eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 89));
	optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
	T2_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T2_ = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
	addSon_P8dDSotTW25BkfbyspojGg_2(result, T2_);
	optPar_Xu4eHJ43ZFePtQEl7xNDtQ_4(p);
	eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 90));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, identOrLiteral_kdOUXIZEhnaRyfX0iKDcHQ_3)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg mode) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	switch ((*p).tok.tokType) {
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 2):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 3):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 50):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 58):
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 62):
	{
		result = newIdentNodeP_gljI1VO9aaziQr60MYvmzCw((*p).tok.ident, (&(*p)));
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		result = parseGStrLit_qidZGWvQrQ8JdLN3ZQrK5w_3(p, result);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 111):
	{
		result = parseSymbol_N3GnkfhgYci4va8Az3kikA(p, ((tyEnum_SymbolMode_9aoP9cJZtqH9cYXp2xqhRfe4g) 0));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 69):
	{
		result = newIntNodeP_hbyUqFVqPnpH2E5dcZ36Yg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6), (*p).tok.iNumber, (&(*p)));
		setBaseFlags_9bmmAhE51GY2H09bDpfhLbpA(result, (*p).tok.base);
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 70):
	{
		result = newIntNodeP_hbyUqFVqPnpH2E5dcZ36Yg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 7), (*p).tok.iNumber, (&(*p)));
		setBaseFlags_9bmmAhE51GY2H09bDpfhLbpA(result, (*p).tok.base);
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 71):
	{
		result = newIntNodeP_hbyUqFVqPnpH2E5dcZ36Yg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 8), (*p).tok.iNumber, (&(*p)));
		setBaseFlags_9bmmAhE51GY2H09bDpfhLbpA(result, (*p).tok.base);
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 72):
	{
		result = newIntNodeP_hbyUqFVqPnpH2E5dcZ36Yg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 9), (*p).tok.iNumber, (&(*p)));
		setBaseFlags_9bmmAhE51GY2H09bDpfhLbpA(result, (*p).tok.base);
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 73):
	{
		result = newIntNodeP_hbyUqFVqPnpH2E5dcZ36Yg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 10), (*p).tok.iNumber, (&(*p)));
		setBaseFlags_9bmmAhE51GY2H09bDpfhLbpA(result, (*p).tok.base);
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 74):
	{
		result = newIntNodeP_hbyUqFVqPnpH2E5dcZ36Yg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 11), (*p).tok.iNumber, (&(*p)));
		setBaseFlags_9bmmAhE51GY2H09bDpfhLbpA(result, (*p).tok.base);
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 75):
	{
		result = newIntNodeP_hbyUqFVqPnpH2E5dcZ36Yg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 12), (*p).tok.iNumber, (&(*p)));
		setBaseFlags_9bmmAhE51GY2H09bDpfhLbpA(result, (*p).tok.base);
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 76):
	{
		result = newIntNodeP_hbyUqFVqPnpH2E5dcZ36Yg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 13), (*p).tok.iNumber, (&(*p)));
		setBaseFlags_9bmmAhE51GY2H09bDpfhLbpA(result, (*p).tok.base);
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 77):
	{
		result = newIntNodeP_hbyUqFVqPnpH2E5dcZ36Yg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 14), (*p).tok.iNumber, (&(*p)));
		setBaseFlags_9bmmAhE51GY2H09bDpfhLbpA(result, (*p).tok.base);
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 78):
	{
		result = newIntNodeP_hbyUqFVqPnpH2E5dcZ36Yg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 15), (*p).tok.iNumber, (&(*p)));
		setBaseFlags_9bmmAhE51GY2H09bDpfhLbpA(result, (*p).tok.base);
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 79):
	{
		result = newFloatNodeP_T0XGfAYe4dADVSxKlk3frA(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 16), (*p).tok.fNumber, (&(*p)));
		setBaseFlags_9bmmAhE51GY2H09bDpfhLbpA(result, (*p).tok.base);
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 80):
	{
		result = newFloatNodeP_T0XGfAYe4dADVSxKlk3frA(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 17), (*p).tok.fNumber, (&(*p)));
		setBaseFlags_9bmmAhE51GY2H09bDpfhLbpA(result, (*p).tok.base);
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 81):
	{
		result = newFloatNodeP_T0XGfAYe4dADVSxKlk3frA(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 18), (*p).tok.fNumber, (&(*p)));
		setBaseFlags_9bmmAhE51GY2H09bDpfhLbpA(result, (*p).tok.base);
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 82):
	{
		result = newFloatNodeP_T0XGfAYe4dADVSxKlk3frA(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 19), (*p).tok.fNumber, (&(*p)));
		setBaseFlags_9bmmAhE51GY2H09bDpfhLbpA(result, (*p).tok.base);
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 83):
	{
		result = newStrNodeP_iNMN6i7eOmK9cJZaS8PW9bHQ(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 20), (*p).tok.literal, (&(*p)));
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 84):
	{
		result = newStrNodeP_iNMN6i7eOmK9cJZaS8PW9bHQ(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 21), (*p).tok.literal, (&(*p)));
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 85):
	{
		result = newStrNodeP_iNMN6i7eOmK9cJZaS8PW9bHQ(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 22), (*p).tok.literal, (&(*p)));
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 88):
	{
		if ((NU)(((NI) 0)) >= (NU)((*p).tok.literal ? (*p).tok.literal->Sup.len : 0)) raiseIndexError2(((NI) 0),((*p).tok.literal ? (*p).tok.literal->Sup.len : 0)-1);
		result = newIntNodeP_hbyUqFVqPnpH2E5dcZ36Yg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 5), ((NI64) (((NU8)((*p).tok.literal->data[((NI) 0)])))), (&(*p)));
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 44):
	{
		result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23), (&(*p)));
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 89):
	{
		{
			if (!((6 &(1U<<((NU)(mode)&7U)))!=0)) goto LA25_;
			result = exprColonEqExprList_F0eTToKkYyarQzoxiW3vAw(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 37), ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 90));
		}
		goto LA23_;
		LA25_: ;
		{
			result = parsePar_x3UAdSvBfIIO33m4gWdOPg_18(p);
		}
		LA23_: ;
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 93):
	{
		result = setOrTableConstr_x3UAdSvBfIIO33m4gWdOPg_20(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 91):
	{
		result = exprColonEqExprList_F0eTToKkYyarQzoxiW3vAw(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 41), ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 92));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 11):
	{
		result = parseCast_x3UAdSvBfIIO33m4gWdOPg_21(p);
	}
	break;
	default:
	{
		parMessage_rXWbL6tbX9bTHhjIGAkRQhA((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_13), (&(*p).tok));
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		result = (*p).emptyNode;
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, primary_kdOUXIZEhnaRyfX0iKDcHQ_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg mode) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T3_;
		NIM_BOOL isSigil;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
		T3_ = (NIM_BOOL)0;
		T3_ = isOperator_6uuOzScs0cnz0GgHAhmd6w((&(*p).tok));
		if (!T3_) goto LA4_;
		isSigil = isSigilLike_SfnwiGITn60liGLbLMGJMQparser((&(*p).tok));
		result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 30), (&(*p)));
		a = newIdentNodeP_gljI1VO9aaziQr60MYvmzCw((*p).tok.ident, (&(*p)));
		addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		optInd_f29cj23F8gdIHggpJ4lkkNw(p, a);
		{
			NI baseInd;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T10_;
			if (!isSigil) goto LA8_;
			baseInd = (*p).lex.currLineIndent;
			T10_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T10_ = primary_kdOUXIZEhnaRyfX0iKDcHQ_2(p, ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 3));
			addSon_P8dDSotTW25BkfbyspojGg_2(result, T10_);
			result = primarySuffix_w6T1jA9cTSlFBXKmqZbMNPw(p, result, baseInd, mode);
		}
		goto LA6_;
		LA8_: ;
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T12_;
			T12_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T12_ = primary_kdOUXIZEhnaRyfX0iKDcHQ_2(p, ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 0));
			addSon_P8dDSotTW25BkfbyspojGg_2(result, T12_);
		}
		LA6_: ;
		goto BeforeRet_;
	}
	LA4_: ;
	switch ((*p).tok.tokType) {
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 61):
	{
		result = parseTuple_MDbQ9c4Rjwx4LC9b3UHzN86g(p, (mode == ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 2)));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 51):
	{
		result = parseProcExpr_wfNtjJMWUKpIuvPDpwaA3w(p, !(((6 &(1U<<((NU)(mode)&7U)))!=0)), ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 51));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 30):
	{
		result = parseProcExpr_wfNtjJMWUKpIuvPDpwaA3w(p, !(((6 &(1U<<((NU)(mode)&7U)))!=0)), ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 159));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 38):
	{
		result = parseProcExpr_wfNtjJMWUKpIuvPDpwaA3w(p, !(((6 &(1U<<((NU)(mode)&7U)))!=0)), ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 51));
		{
			tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw T21_;
			if (!((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 51))) goto LA19_;
			T21_ = (tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw)0;
			T21_ = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 84);
			FieldDiscriminantCheck((NI)(NU)((*result).kind), (NI)(NU)(T21_), NimDT__bROa11lyF5vxEN9aYNbHmhw_kind, 162);
			(*result).kind = T21_;
		}
		goto LA17_;
		LA19_: ;
		{
			tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw T23_;
			T23_ = (tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw)0;
			T23_ = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 148);
			FieldDiscriminantCheck((NI)(NU)((*result).kind), (NI)(NU)(T23_), NimDT__bROa11lyF5vxEN9aYNbHmhw_kind, 162);
			(*result).kind = T23_;
		}
		LA17_: ;
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 24):
	{
		{
			if (!(mode == ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 2))) goto LA27_;
			result = parseEnum_x3UAdSvBfIIO33m4gWdOPg_11(p);
		}
		goto LA25_;
		LA27_: ;
		{
			result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 150), (&(*p)));
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		}
		LA25_: ;
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 47):
	{
		{
			if (!(mode == ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 2))) goto LA33_;
			result = parseObject_x3UAdSvBfIIO33m4gWdOPg_12(p);
		}
		goto LA31_;
		LA33_: ;
		{
			result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 133), (&(*p)));
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		}
		LA31_: ;
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 12):
	{
		{
			if (!(mode == ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 2))) goto LA39_;
			result = parseTypeClass_x3UAdSvBfIIO33m4gWdOPg_16(p);
		}
		goto LA37_;
		LA39_: ;
		{
			parMessage_trqiH2WnOZXdRtAc0s4e7A((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_25));
		}
		LA37_: ;
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 7):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T43_;
		result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 55), (&(*p)));
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
		T43_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T43_ = primary_kdOUXIZEhnaRyfX0iKDcHQ_2(p, ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 0));
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T43_);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 64):
	{
		result = parseTypeDescKAux_9bFw56lxI4F5g2fW9cn1Vs6w(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 143), mode);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 54):
	{
		result = parseTypeDescKAux_9bFw56lxI4F5g2fW9cn1Vs6w(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 141), mode);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 52):
	{
		result = parseTypeDescKAux_9bFw56lxI4F5g2fW9cn1Vs6w(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 142), mode);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 18):
	{
		result = parseTypeDescKAux_9bFw56lxI4F5g2fW9cn1Vs6w(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 146), mode);
	}
	break;
	default:
	{
		NI baseInd_2;
		baseInd_2 = (*p).lex.currLineIndent;
		result = identOrLiteral_kdOUXIZEhnaRyfX0iKDcHQ_3(p, mode);
		{
			if (!!((mode == ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 3)))) goto LA51_;
			result = primarySuffix_w6T1jA9cTSlFBXKmqZbMNPw(p, result, baseInd_2, mode);
		}
		LA51_: ;
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}

static N_INLINE(void, checkBinary_pamOlpQ5rTULefRYTxyHugparser)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	{
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 109))) goto LA3_;
		{
			NIM_BOOL T7_;
			NimStringDesc* T11_;
			T7_ = (NIM_BOOL)0;
			T7_ = (((NI8) 0) < (*p).tok.strongSpaceB);
			if (!(T7_)) goto LA8_;
			T7_ = ((*p).tok.strongSpaceA == ((NI8) 0));
			LA8_: ;
			if (!T7_) goto LA9_;
			T11_ = (NimStringDesc*)0;
			T11_ = prettyTok_d3YnHm5OyfXf5tTfAaERTg((&(*p).tok));
			parMessage_wjMY23FEyPmv9cffowHLsxA(p, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 39), T11_);
		}
		LA9_: ;
	}
	LA3_: ;
}

static N_INLINE(NIM_BOOL, isRightAssociative_SfnwiGITn60liGLbLMGJMQ_2parser)(tyObject_TToken_kLaEEPwLj8cag79cbYQIkHQ* tok) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T1_ = ((*tok).tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 109));
	if (!(T1_)) goto LA2_;
	if ((NU)(((NI) 0)) >= (NU)((*(*tok).ident).s ? (*(*tok).ident).s->Sup.len : 0)) raiseIndexError2(((NI) 0),((*(*tok).ident).s ? (*(*tok).ident).s->Sup.len : 0)-1);
	T1_ = ((NU8)((*(*tok).ident).s->data[((NI) 0)]) == (NU8)(94));
	LA2_: ;
	result = T1_;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseOperators_lDjYBDeuaBffjeaA9bSrBGQ)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* headNode, NI limit, tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg mode) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NI opPrec;
	tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg modeB;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = headNode;
	opPrec = getPrecedence_rmSHwGA9b9aVN1lhr9bYn59czQ((&(*p).tok), NIM_FALSE);
	{
		if (!(mode == ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 2))) goto LA3_;
		modeB = ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 1);
	}
	goto LA1_;
	LA3_: ;
	{
		modeB = mode;
	}
	LA1_: ;
	{
		while (1) {
			NIM_BOOL T8_;
			NIM_BOOL T9_;
			NIM_BOOL T12_;
			NI leftAssoc;
			NIM_BOOL T13_;
			NI TM_MW5RrD2zyVLHF67ojsDu8Q_35;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* opNode;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b;
			NI TM_MW5RrD2zyVLHF67ojsDu8Q_36;
			T8_ = (NIM_BOOL)0;
			T9_ = (NIM_BOOL)0;
			T9_ = (limit <= opPrec);
			if (!(T9_)) goto LA10_;
			T9_ = ((*p).tok.indent < ((NI) 0));
			LA10_: ;
			T8_ = T9_;
			if (!(T8_)) goto LA11_;
			T12_ = (NIM_BOOL)0;
			T12_ = isUnary_vR74cuHb1b42ISgxLPKFXw_2((&(*p)));
			T8_ = !(T12_);
			LA11_: ;
			if (!T8_) goto LA7;
			checkBinary_pamOlpQ5rTULefRYTxyHugparser((&(*p)));
			T13_ = (NIM_BOOL)0;
			T13_ = isRightAssociative_SfnwiGITn60liGLbLMGJMQ_2parser((&(*p).tok));
			TM_MW5RrD2zyVLHF67ojsDu8Q_35 = subInt(((NI) 1), T13_);
			leftAssoc = (NI)(TM_MW5RrD2zyVLHF67ojsDu8Q_35);
			a = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 29), (&(*p)));
			opNode = newIdentNodeP_gljI1VO9aaziQr60MYvmzCw((*p).tok.ident, (&(*p)));
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			flexComment_4X69atLAOW9bH7XN7NtLQ15A_3(p, a);
			optPar_Xu4eHJ43ZFePtQEl7xNDtQ_4(p);
			TM_MW5RrD2zyVLHF67ojsDu8Q_36 = addInt(opPrec, leftAssoc);
			b = simpleExprAux_Q3jJxDCunbeS2rE10OxnZw(p, (NI)(TM_MW5RrD2zyVLHF67ojsDu8Q_36), modeB);
			addSon_P8dDSotTW25BkfbyspojGg_2(a, opNode);
			addSon_P8dDSotTW25BkfbyspojGg_2(a, result);
			addSon_P8dDSotTW25BkfbyspojGg_2(a, b);
			result = a;
			opPrec = getPrecedence_rmSHwGA9b9aVN1lhr9bYn59czQ((&(*p).tok), NIM_FALSE);
		} LA7: ;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, simpleExprAux_Q3jJxDCunbeS2rE10OxnZw)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NI limit, tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg mode) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = primary_kdOUXIZEhnaRyfX0iKDcHQ_2(p, mode);
	{
		NIM_BOOL T3_;
		NIM_BOOL T4_;
		NIM_BOOL T6_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* pragmaExp;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T11_;
		T3_ = (NIM_BOOL)0;
		T4_ = (NIM_BOOL)0;
		T4_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 97));
		if (!(T4_)) goto LA5_;
		T6_ = (NIM_BOOL)0;
		T6_ = ((*p).tok.indent < ((NI) 0));
		if (T6_) goto LA7_;
		T6_ = ((*p).currInd < (*p).tok.indent);
		LA7_: ;
		T4_ = T6_;
		LA5_: ;
		T3_ = T4_;
		if (!(T3_)) goto LA8_;
		T3_ = (mode == ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 0));
		LA8_: ;
		if (!T3_) goto LA9_;
		pragmaExp = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 43), (&(*p)));
		addSon_P8dDSotTW25BkfbyspojGg_2(pragmaExp, result);
		T11_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T11_ = parsePragma_x3UAdSvBfIIO33m4gWdOPg_8(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(pragmaExp, T11_);
		result = pragmaExp;
	}
	LA9_: ;
	result = parseOperators_lDjYBDeuaBffjeaA9bSrBGQ(p, result, limit, mode);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, simpleExpr_kdOUXIZEhnaRyfX0iKDcHQ)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg mode) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = simpleExprAux_Q3jJxDCunbeS2rE10OxnZw(p, ((NI) -1), mode);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, binaryNot_qidZGWvQrQ8JdLN3ZQrK5w_4)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* notOpr;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b;
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 45))) goto LA3_;
		notOpr = newIdentNodeP_gljI1VO9aaziQr60MYvmzCw((*p).tok.ident, (&(*p)));
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		optInd_f29cj23F8gdIHggpJ4lkkNw(p, notOpr);
		b = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
		result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 29), (&(*p)));
		add_P8dDSotTW25BkfbyspojGg(result, notOpr);
		add_P8dDSotTW25BkfbyspojGg(result, a);
		add_P8dDSotTW25BkfbyspojGg(result, b);
	}
	goto LA1_;
	LA3_: ;
	{
		result = a;
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseTypeDesc_x3UAdSvBfIIO33m4gWdOPg_9)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = simpleExpr_kdOUXIZEhnaRyfX0iKDcHQ(p, ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 1));
	result = binaryNot_qidZGWvQrQ8JdLN3ZQrK5w_4(p, result);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseIdentColonEquals_Bcfm0z8pniFRTPJG3yq6Iw)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tySet_tyEnum_TDeclaredIdentFlag_MzzaN6zqdToDXIyRutJEWg flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	a = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 35), (&(*p)));
	{
		while (1) {
			switch ((*p).tok.tokType) {
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 2):
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 111):
			{
				{
					if (!((flags &(1U<<((NU)(((tyEnum_TDeclaredIdentFlag_MzzaN6zqdToDXIyRutJEWg) 0))&7U)))!=0)) goto LA6_;
					a = identWithPragma_p8B2ZGnnV4OxW0KbdW69bBg(p, ((flags &(1U<<((NU)(((tyEnum_TDeclaredIdentFlag_MzzaN6zqdToDXIyRutJEWg) 2))&7U)))!=0));
				}
				goto LA4_;
				LA6_: ;
				{
					a = parseSymbol_N3GnkfhgYci4va8Az3kikA(p, ((tyEnum_SymbolMode_9aoP9cJZtqH9cYXp2xqhRfe4g) 0));
				}
				LA4_: ;
				{
					if (!((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1))) goto LA11_;
					goto BeforeRet_;
				}
				LA11_: ;
			}
			break;
			default:
			{
				goto LA1;
			}
			break;
			}
			addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
			{
				if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101)))) goto LA16_;
				goto LA1;
			}
			LA16_: ;
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			optInd_f29cj23F8gdIHggpJ4lkkNw(p, a);
		}
	} LA1: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T22_;
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 103))) goto LA20_;
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
		T22_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T22_ = parseTypeDesc_x3UAdSvBfIIO33m4gWdOPg_9(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T22_);
	}
	goto LA18_;
	LA20_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T24_;
		T24_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T24_ = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), (&(*p)));
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T24_);
		{
			NIM_BOOL T27_;
			T27_ = (NIM_BOOL)0;
			T27_ = !(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 105)));
			if (!(T27_)) goto LA28_;
			T27_ = !(((flags &(1U<<((NU)(((tyEnum_TDeclaredIdentFlag_MzzaN6zqdToDXIyRutJEWg) 1))&7U)))!=0));
			LA28_: ;
			if (!T27_) goto LA29_;
			parMessage_rXWbL6tbX9bTHhjIGAkRQhA((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_37), (&(*p).tok));
		}
		LA29_: ;
	}
	LA18_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T35_;
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 105))) goto LA33_;
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
		T35_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T35_ = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T35_);
	}
	goto LA31_;
	LA33_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T37_;
		T37_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T37_ = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), (&(*p)));
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T37_);
	}
	LA31_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseParamList_WcTv1Of1vVb82irmP9cU0EA)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NIM_BOOL retColon) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
	NIM_BOOL hasParLe;
	NIM_BOOL T1_;
	NIM_BOOL hasRet;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	a = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 76), (&(*p)));
	addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
	T1_ = (NIM_BOOL)0;
	T1_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 89));
	if (!(T1_)) goto LA2_;
	T1_ = ((*p).tok.indent < ((NI) 0));
	LA2_: ;
	hasParLe = T1_;
	{
		if (!hasParLe) goto LA5_;
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
		{
			while (1) {
				switch ((*p).tok.tokType) {
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 2):
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 111):
				{
					a = parseIdentColonEquals_Bcfm0z8pniFRTPJG3yq6Iw(p, 3);
				}
				break;
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 90):
				{
					goto LA7;
				}
				break;
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 64):
				{
					parMessage_wjMY23FEyPmv9cffowHLsxA((&(*p)), ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_38));
					goto LA7;
				}
				break;
				default:
				{
					parMessage_trqiH2WnOZXdRtAc0s4e7A((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_39));
					goto LA7;
				}
				break;
				}
				addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
				{
					if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 102)))) goto LA15_;
					goto LA7;
				}
				LA15_: ;
				getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
				skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, a);
			}
		} LA7: ;
		optPar_Xu4eHJ43ZFePtQEl7xNDtQ_4(p);
		eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 90));
	}
	LA5_: ;
	{
		if (!retColon) goto LA19_;
		hasRet = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 103));
	}
	goto LA17_;
	LA19_: ;
	{
		NIM_BOOL T22_;
		T22_ = (NIM_BOOL)0;
		T22_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 109));
		if (!(T22_)) goto LA23_;
		T22_ = eqStrings((*(*p).tok.ident).s, ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_40));
		LA23_: ;
		hasRet = T22_;
	}
	LA17_: ;
	{
		NIM_BOOL T26_;
		T26_ = (NIM_BOOL)0;
		T26_ = hasRet;
		if (!(T26_)) goto LA27_;
		T26_ = ((*p).tok.indent < ((NI) 0));
		LA27_: ;
		if (!T26_) goto LA28_;
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
		if (((TM_MW5RrD2zyVLHF67ojsDu8Q_8[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_9));
		if ((NU)(((NI) 0)) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*result).sons ? (*result).sons->Sup.len : 0)-1);
		asgnRef((void**) (&(*result).sons->data[((NI) 0)]), parseTypeDesc_x3UAdSvBfIIO33m4gWdOPg_9(p));
	}
	goto LA24_;
	LA28_: ;
	{
		NIM_BOOL T31_;
		T31_ = (NIM_BOOL)0;
		T31_ = !(retColon);
		if (!(T31_)) goto LA32_;
		T31_ = !(hasParLe);
		LA32_: ;
		if (!T31_) goto LA33_;
		result = (*p).emptyNode;
	}
	goto LA24_;
	LA33_: ;
	LA24_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, makeCall_Q0XtPtKhjDEfZ4UlFkHa0g)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (!((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 29) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 30) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 31) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 28) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32))) goto LA3_;
		result = n;
	}
	goto LA1_;
	LA3_: ;
	{
		result = newNodeI_vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info);
		add_P8dDSotTW25BkfbyspojGg(result, n);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseDoBlock_w9bgKT6NRtZ8K2dgxxPMfEg)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* params;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* pragmas;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	params = parseParamList_WcTv1Of1vVb82irmP9cU0EA(p, NIM_FALSE);
	pragmas = optPragmas_x3UAdSvBfIIO33m4gWdOPg_10(p);
	colcom_f29cj23F8gdIHggpJ4lkkNw_2(p, result);
	result = parseStmt_x3UAdSvBfIIO33m4gWdOPg_5(p);
	{
		if (!!(((*params).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA3_;
		result = newProcNode_g5PEkYP0A0RT03uHbJ6wKQ(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 52), info, result, params, (*p).emptyNode, (*p).emptyNode, (*p).emptyNode, pragmas, (*p).emptyNode);
	}
	LA3_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, postExprBlocks_TghyduzCvNkQUONd4Z5lpA)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* openingParams;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* openingPragmas;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = x;
	{
		if (!(((NI) 0) <= (*p).tok.indent)) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	openingParams = (*p).emptyNode;
	openingPragmas = (*p).emptyNode;
	{
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 20))) goto LA7_;
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		openingParams = parseParamList_WcTv1Of1vVb82irmP9cU0EA(p, NIM_FALSE);
		openingPragmas = optPragmas_x3UAdSvBfIIO33m4gWdOPg_10(p);
	}
	LA7_: ;
	{
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 103))) goto LA11_;
		result = makeCall_Q0XtPtKhjDEfZ4UlFkHa0g(result);
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, result);
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* stmtList;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T17_;
			if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 48) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 21) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 22) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 25)))) goto LA15_;
			stmtList = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (&(*p)));
			T17_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T17_ = parseStmt_x3UAdSvBfIIO33m4gWdOPg_5(p);
			add_P8dDSotTW25BkfbyspojGg(stmtList, T17_);
			{
				if (((TM_MW5RrD2zyVLHF67ojsDu8Q_8[(NU)((*stmtList).kind)>>3] &(1U<<((NU)((*stmtList).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_9));
				if ((NU)(((NI) 0)) >= (NU)((*stmtList).sons ? (*stmtList).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*stmtList).sons ? (*stmtList).sons->Sup.len : 0)-1);
				if (!((*(*stmtList).sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115))) goto LA20_;
				if (((TM_MW5RrD2zyVLHF67ojsDu8Q_8[(NU)((*stmtList).kind)>>3] &(1U<<((NU)((*stmtList).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_9));
				if ((NU)(((NI) 0)) >= (NU)((*stmtList).sons ? (*stmtList).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*stmtList).sons ? (*stmtList).sons->Sup.len : 0)-1);
				stmtList = (*stmtList).sons->data[((NI) 0)];
			}
			LA20_: ;
			(*stmtList).flags |= ((NU32)1)<<((((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 15)) & 31);
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T26_;
				if (!!(((*openingParams).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA24_;
				T26_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T26_ = newProcNode_g5PEkYP0A0RT03uHbJ6wKQ(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 52), (*stmtList).info, stmtList, openingParams, (*p).emptyNode, (*p).emptyNode, (*p).emptyNode, openingPragmas, (*p).emptyNode);
				add_P8dDSotTW25BkfbyspojGg(result, T26_);
			}
			goto LA22_;
			LA24_: ;
			{
				add_P8dDSotTW25BkfbyspojGg(result, stmtList);
			}
			LA22_: ;
		}
		LA15_: ;
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nextBlock;
				tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA nextToken;
				if (!((*p).tok.indent == (*p).currInd)) goto LA29;
				nextBlock = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				nextToken = (*p).tok.tokType;
				{
					tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info;
					if (!(nextToken == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 20))) goto LA32_;
					info = parLineInfo_MtiItYhm6aG5IoWBtYIaGg((&(*p)));
					getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
					nextBlock = parseDoBlock_w9bgKT6NRtZ8K2dgxxPMfEg(p, info);
				}
				goto LA30_;
				LA32_: ;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T41_;
					switch (nextToken) {
					case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 48):
					{
						nextBlock = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 85), (&(*p)));
						exprList_vNL1MotDDlqUCHIgY7Xasg(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 103), nextBlock);
					}
					break;
					case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 21):
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T37_;
						nextBlock = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 86), (&(*p)));
						getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
						optInd_f29cj23F8gdIHggpJ4lkkNw(p, nextBlock);
						T37_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T37_ = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
						addSon_P8dDSotTW25BkfbyspojGg_2(nextBlock, T37_);
					}
					break;
					case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 25):
					{
						nextBlock = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 87), (&(*p)));
						exprList_vNL1MotDDlqUCHIgY7Xasg(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 103), nextBlock);
					}
					break;
					case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 22):
					{
						nextBlock = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88), (&(*p)));
						getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
					}
					break;
					default:
					{
						goto LA28;
					}
					break;
					}
					eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 103));
					T41_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T41_ = parseStmt_x3UAdSvBfIIO33m4gWdOPg_5(p);
					addSon_P8dDSotTW25BkfbyspojGg_2(nextBlock, T41_);
				}
				LA30_: ;
				(*nextBlock).flags |= ((NU32)1)<<((((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 15)) & 31);
				add_P8dDSotTW25BkfbyspojGg(result, nextBlock);
				{
					if (!((*nextBlock).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88))) goto LA44_;
					goto LA28;
				}
				LA44_: ;
			} LA29: ;
		} LA28: ;
	}
	goto LA9_;
	LA11_: ;
	{
		{
			if (!!(((*openingParams).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA49_;
			parMessage_trqiH2WnOZXdRtAc0s4e7A((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_41));
		}
		LA49_: ;
	}
	LA9_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseReturnOrRaise_meuRB08PuMn59b2HR3aex4w_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(kind, (&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	{
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 110))) goto LA3_;
		skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, result);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
	}
	goto LA1_;
	LA3_: ;
	{
		NIM_BOOL T6_;
		NIM_BOOL T7_;
		NIM_BOOL T10_;
		T6_ = (NIM_BOOL)0;
		T7_ = (NIM_BOOL)0;
		T7_ = (((NI) 0) <= (*p).tok.indent);
		if (!(T7_)) goto LA8_;
		T7_ = ((*p).tok.indent <= (*p).currInd);
		LA8_: ;
		T6_ = T7_;
		if (T6_) goto LA9_;
		T10_ = (NIM_BOOL)0;
		T10_ = isExprStart_vR74cuHb1b42ISgxLPKFXw((&(*p)));
		T6_ = !(T10_);
		LA9_: ;
		if (!T6_) goto LA11_;
		addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
	}
	goto LA1_;
	LA11_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* e;
		e = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
		e = postExprBlocks_TghyduzCvNkQUONd4Z5lpA(p, e);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, e);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseModuleName_meuRB08PuMn59b2HR3aex4w_4)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseImport_meuRB08PuMn59b2HR3aex4w_3)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(kind, (&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
	a = parseModuleName_meuRB08PuMn59b2HR3aex4w_4(p, kind);
	addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
	{
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 25))) goto LA3_;
		{
			tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw T9_;
			NI TM_MW5RrD2zyVLHF67ojsDu8Q_42;
			if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 25))) goto LA7_;
			T9_ = (tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw)0;
			TM_MW5RrD2zyVLHF67ojsDu8Q_42 = addInt(kind, ((NI) 1));
			if (TM_MW5RrD2zyVLHF67ojsDu8Q_42 < 0 || TM_MW5RrD2zyVLHF67ojsDu8Q_42 > 160) raiseOverflow();
			T9_ = (tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw)(TM_MW5RrD2zyVLHF67ojsDu8Q_42);
			FieldDiscriminantCheck((NI)(NU)((*result).kind), (NI)(NU)(T9_), NimDT__bROa11lyF5vxEN9aYNbHmhw_kind, 162);
			(*result).kind = T9_;
		}
		LA7_: ;
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
		{
			while (1) {
				(*p).hasProgress = NIM_FALSE;
				a = parseModuleName_meuRB08PuMn59b2HR3aex4w_4(p, kind);
				{
					NIM_BOOL T14_;
					T14_ = (NIM_BOOL)0;
					T14_ = ((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1));
					if (T14_) goto LA15_;
					T14_ = !((*p).hasProgress);
					LA15_: ;
					if (!T14_) goto LA16_;
					goto LA10;
				}
				LA16_: ;
				addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
				{
					if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101)))) goto LA20_;
					goto LA10;
				}
				LA20_: ;
				getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
				optInd_f29cj23F8gdIHggpJ4lkkNw(p, a);
			}
		} LA10: ;
	}
	LA3_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseFromStmt_x3UAdSvBfIIO33m4gWdOPg_22)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 120), (&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
	a = parseModuleName_meuRB08PuMn59b2HR3aex4w_4(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 116));
	addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
	eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 32));
	optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
	{
		while (1) {
			(*p).hasProgress = NIM_FALSE;
			a = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
			{
				NIM_BOOL T5_;
				T5_ = (NIM_BOOL)0;
				T5_ = ((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1));
				if (T5_) goto LA6_;
				T5_ = !((*p).hasProgress);
				LA6_: ;
				if (!T5_) goto LA7_;
				goto LA1;
			}
			LA7_: ;
			addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
			{
				if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101)))) goto LA11_;
				goto LA1;
			}
			LA11_: ;
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			optInd_f29cj23F8gdIHggpJ4lkkNw(p, a);
		}
	} LA1: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseIncludeStmt_x3UAdSvBfIIO33m4gWdOPg_23)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 121), (&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
	{
		while (1) {
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
			(*p).hasProgress = NIM_FALSE;
			a = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
			{
				NIM_BOOL T5_;
				T5_ = (NIM_BOOL)0;
				T5_ = ((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1));
				if (T5_) goto LA6_;
				T5_ = !((*p).hasProgress);
				LA6_: ;
				if (!T5_) goto LA7_;
				goto LA1;
			}
			LA7_: ;
			addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
			{
				if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101)))) goto LA11_;
				goto LA1;
			}
			LA11_: ;
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			optInd_f29cj23F8gdIHggpJ4lkkNw(p, a);
		}
	} LA1: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newCommentStmt_x3UAdSvBfIIO33m4gWdOPg_24)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NimStringDesc* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125), (&(*p)));
	T1_ = (NimStringDesc*)0;
	T1_ = (*result).comment; (*result).comment = copyStringRC1((*p).tok.literal);
	if (T1_) nimGCunrefNoCycle(T1_);
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseExprStmt_x3UAdSvBfIIO33m4gWdOPg_25)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	a = simpleExpr_kdOUXIZEhnaRyfX0iKDcHQ(p, ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 0));
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b;
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 105))) goto LA3_;
		result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73), (&(*p)));
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
		b = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
		b = postExprBlocks_TghyduzCvNkQUONd4Z5lpA(p, b);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, b);
	}
	goto LA1_;
	LA3_: ;
	{
		NIM_BOOL isFirstParam;
		isFirstParam = NIM_FALSE;
		{
			NIM_BOOL T8_;
			NIM_BOOL T9_;
			T8_ = (NIM_BOOL)0;
			T9_ = (NIM_BOOL)0;
			T9_ = ((*p).tok.indent < ((NI) 0));
			if (!(T9_)) goto LA10_;
			T9_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101));
			LA10_: ;
			T8_ = T9_;
			if (!(T8_)) goto LA11_;
			T8_ = ((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26));
			LA11_: ;
			if (!T8_) goto LA12_;
			result = a;
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T16_;
					getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
					optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
					T16_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T16_ = commandParam_EiJ9aFLksR8ZZLfSZEews8w(p, (&isFirstParam), ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 0));
					addSon_P8dDSotTW25BkfbyspojGg_2(result, T16_);
					{
						if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101)))) goto LA19_;
						goto LA14;
					}
					LA19_: ;
				}
			} LA14: ;
		}
		goto LA6_;
		LA12_: ;
		{
			NIM_BOOL T22_;
			tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* T26_;
			T22_ = (NIM_BOOL)0;
			T22_ = ((*p).tok.indent < ((NI) 0));
			if (!(T22_)) goto LA23_;
			T22_ = isExprStart_vR74cuHb1b42ISgxLPKFXw((&(*p)));
			LA23_: ;
			if (!T22_) goto LA24_;
			T26_ = (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*)0;
			T26_ = (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*) newSeq((&NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ_), 1);
			asgnRef((void**) (&T26_->data[0]), a);
			result = newNode_duw0Uu9cIFXmCAaunQWIP0g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26), (*a).info, T26_, NIM_NIL);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T29_;
					T29_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T29_ = commandParam_EiJ9aFLksR8ZZLfSZEews8w(p, (&isFirstParam), ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 0));
					addSon_P8dDSotTW25BkfbyspojGg_2(result, T29_);
					{
						if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101)))) goto LA32_;
						goto LA27;
					}
					LA32_: ;
					getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
					optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
				}
			} LA27: ;
		}
		goto LA6_;
		LA24_: ;
		{
			result = a;
		}
		LA6_: ;
		result = postExprBlocks_TghyduzCvNkQUONd4Z5lpA(p, result);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, simpleStmt_x3UAdSvBfIIO33m4gWdOPg_6)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	switch ((*p).tok.tokType) {
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 55):
	{
		result = parseReturnOrRaise_meuRB08PuMn59b2HR3aex4w_2(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 109));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 53):
	{
		result = parseReturnOrRaise_meuRB08PuMn59b2HR3aex4w_2(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 108));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 68):
	{
		result = parseReturnOrRaise_meuRB08PuMn59b2HR3aex4w_2(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 104));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 17):
	{
		result = parseReturnOrRaise_meuRB08PuMn59b2HR3aex4w_2(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 114));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 9):
	{
		result = parseReturnOrRaise_meuRB08PuMn59b2HR3aex4w_2(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 110));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 14):
	{
		result = parseReturnOrRaise_meuRB08PuMn59b2HR3aex4w_2(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 111));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 97):
	{
		result = parseStmtPragma_x3UAdSvBfIIO33m4gWdOPg_19(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 32):
	{
		result = parseImport_meuRB08PuMn59b2HR3aex4w_3(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 116));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 26):
	{
		result = parseImport_meuRB08PuMn59b2HR3aex4w_3(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 118));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 29):
	{
		result = parseFromStmt_x3UAdSvBfIIO33m4gWdOPg_22(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 34):
	{
		result = parseIncludeStmt_x3UAdSvBfIIO33m4gWdOPg_23(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 110):
	{
		result = newCommentStmt_x3UAdSvBfIIO33m4gWdOPg_24(p);
	}
	break;
	default:
	{
		{
			NIM_BOOL T16_;
			T16_ = (NIM_BOOL)0;
			T16_ = isExprStart_vR74cuHb1b42ISgxLPKFXw((&(*p)));
			if (!T16_) goto LA17_;
			result = parseExprStmt_x3UAdSvBfIIO33m4gWdOPg_25(p);
		}
		goto LA14_;
		LA17_: ;
		{
			result = (*p).emptyNode;
		}
		LA14_: ;
	}
	break;
	}
	{
		if (!!(((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1) || (*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125)))) goto LA22_;
		skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, result);
	}
	LA22_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseStmt_x3UAdSvBfIIO33m4gWdOPg_5)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NI oldInd;
		if (!((*p).currInd < (*p).tok.indent)) goto LA3_;
		result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (&(*p)));
		oldInd = (*p).currInd;
		(*p).currInd = (*p).tok.indent;
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
				{
					if (!((*p).tok.indent == (*p).currInd)) goto LA9_;
				}
				goto LA7_;
				LA9_: ;
				{
					if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 102))) goto LA12_;
					getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
					{
						NIM_BOOL T16_;
						T16_ = (NIM_BOOL)0;
						T16_ = ((*p).tok.indent < ((NI) 0));
						if (T16_) goto LA17_;
						T16_ = ((*p).tok.indent == (*p).currInd);
						LA17_: ;
						if (!T16_) goto LA18_;
					}
					goto LA14_;
					LA18_: ;
					{
						goto LA5;
					}
					LA14_: ;
				}
				goto LA7_;
				LA12_: ;
				{
					{
						NIM_BOOL T24_;
						T24_ = (NIM_BOOL)0;
						T24_ = ((*p).currInd < (*p).tok.indent);
						if (!(T24_)) goto LA25_;
						T24_ = !(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 106)));
						LA25_: ;
						if (!T24_) goto LA26_;
						parMessage_trqiH2WnOZXdRtAc0s4e7A((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_4));
					}
					LA26_: ;
					goto LA5;
				}
				LA7_: ;
				{
					if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 94) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 90) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 98) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 92))) goto LA30_;
					goto LA5;
				}
				LA30_: ;
				(*p).hasProgress = NIM_FALSE;
				a = complexOrSimpleStmt_x3UAdSvBfIIO33m4gWdOPg_2(p);
				{
					if (!!(((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA34_;
					addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
				}
				goto LA32_;
				LA34_: ;
				{
					{
						if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 22) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 21)))) goto LA39_;
						parMessage_rXWbL6tbX9bTHhjIGAkRQhA((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_13), (&(*p).tok));
						getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
					}
					goto LA37_;
					LA39_: ;
					{
						goto LA5;
					}
					LA37_: ;
				}
				LA32_: ;
				{
					NIM_BOOL T44_;
					T44_ = (NIM_BOOL)0;
					T44_ = !((*p).hasProgress);
					if (!(T44_)) goto LA45_;
					T44_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 1));
					LA45_: ;
					if (!T44_) goto LA46_;
					goto LA5;
				}
				LA46_: ;
			}
		} LA5: ;
		(*p).currInd = oldInd;
	}
	goto LA1_;
	LA3_: ;
	{
		switch ((*p).tok.tokType) {
		case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 31):
		case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 66):
		case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 10):
		case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 60):
		case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 28):
		case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 8):
		case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 6):
		case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 51):
		case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 30):
		case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 38):
		case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 40):
		case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 62):
		case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 13):
		case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 65):
		case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 64):
		{
			parMessage_trqiH2WnOZXdRtAc0s4e7A((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_14));
			result = (*p).emptyNode;
		}
		break;
		default:
		{
			{
				if (!(((NI) 0) < (*p).inSemiStmtList)) goto LA53_;
				result = simpleStmt_x3UAdSvBfIIO33m4gWdOPg_6(p);
				{
					if (!((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1))) goto LA57_;
					parMessage_rXWbL6tbX9bTHhjIGAkRQhA((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_13), (&(*p).tok));
				}
				LA57_: ;
			}
			goto LA51_;
			LA53_: ;
			{
				result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (&(*p)));
				{
					while (1) {
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a_2;
						NIM_BOOL err;
						{
							if (!(((NI) 0) <= (*p).tok.indent)) goto LA64_;
							parMessage_trqiH2WnOZXdRtAc0s4e7A((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_4));
						}
						LA64_: ;
						(*p).hasProgress = NIM_FALSE;
						a_2 = simpleStmt_x3UAdSvBfIIO33m4gWdOPg_6(p);
						err = !((*p).hasProgress);
						{
							if (!((*a_2).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1))) goto LA68_;
							parMessage_rXWbL6tbX9bTHhjIGAkRQhA((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_13), (&(*p).tok));
						}
						LA68_: ;
						add_P8dDSotTW25BkfbyspojGg(result, a_2);
						{
							if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 102)))) goto LA72_;
							goto LA60;
						}
						LA72_: ;
						getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
						{
							NIM_BOOL T76_;
							T76_ = (NIM_BOOL)0;
							T76_ = err;
							if (!(T76_)) goto LA77_;
							T76_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 1));
							LA77_: ;
							if (!T76_) goto LA78_;
							goto LA60;
						}
						LA78_: ;
					}
				} LA60: ;
			}
			LA51_: ;
		}
		break;
		}
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseBlock_x3UAdSvBfIIO33m4gWdOPg_4)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T7_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 112), (&(*p)));
	getTokNoInd_Xu4eHJ43ZFePtQEl7xNDtQ_3(p);
	{
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 103))) goto LA3_;
		addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
	}
	goto LA1_;
	LA3_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T6_;
		T6_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T6_ = parseSymbol_N3GnkfhgYci4va8Az3kikA(p, ((tyEnum_SymbolMode_9aoP9cJZtqH9cYXp2xqhRfe4g) 0));
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T6_);
	}
	LA1_: ;
	colcom_f29cj23F8gdIHggpJ4lkkNw_2(p, result);
	T7_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T7_ = parseStmt_x3UAdSvBfIIO33m4gWdOPg_5(p);
	addSon_P8dDSotTW25BkfbyspojGg_2(result, T7_);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseIfExpr_meuRB08PuMn59b2HR3aex4w_5)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(kind, (&(*p)));
	{
		while (1) {
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T3_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T4_;
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			branch = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 49), (&(*p)));
			optInd_f29cj23F8gdIHggpJ4lkkNw(p, branch);
			T3_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T3_ = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
			addSon_P8dDSotTW25BkfbyspojGg_2(branch, T3_);
			colcom_f29cj23F8gdIHggpJ4lkkNw_2(p, branch);
			T4_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T4_ = parseStmt_x3UAdSvBfIIO33m4gWdOPg_5(p);
			addSon_P8dDSotTW25BkfbyspojGg_2(branch, T4_);
			skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, branch);
			addSon_P8dDSotTW25BkfbyspojGg_2(result, branch);
			{
				if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 21)))) goto LA7_;
				goto LA1;
			}
			LA7_: ;
		}
	} LA1: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch_2;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T13_;
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 22))) goto LA11_;
		branch_2 = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 50), (&(*p)));
		eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 22));
		colcom_f29cj23F8gdIHggpJ4lkkNw_2(p, branch_2);
		T13_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T13_ = parseStmt_x3UAdSvBfIIO33m4gWdOPg_5(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(branch_2, T13_);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, branch_2);
	}
	LA11_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseVarTuple_x3UAdSvBfIIO33m4gWdOPg_27)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 36), (&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
	{
		while (1) {
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
			if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 2) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 111))) goto LA2;
			a = identWithPragma_p8B2ZGnnV4OxW0KbdW69bBg(p, NIM_TRUE);
			addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
			{
				if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101)))) goto LA5_;
				goto LA1;
			}
			LA5_: ;
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, a);
		} LA2: ;
	} LA1: ;
	addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
	optPar_Xu4eHJ43ZFePtQEl7xNDtQ_4(p);
	eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 90));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseFor_x3UAdSvBfIIO33m4gWdOPg_26)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T14_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T15_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	getTokNoInd_Xu4eHJ43ZFePtQEl7xNDtQ_3(p);
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 94), (&(*p)));
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T5_;
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 89))) goto LA3_;
		T5_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T5_ = parseVarTuple_x3UAdSvBfIIO33m4gWdOPg_27(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T5_);
	}
	goto LA1_;
	LA3_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
		a = identWithPragma_p8B2ZGnnV4OxW0KbdW69bBg(p, NIM_FALSE);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
		{
			while (1) {
				if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101))) goto LA8;
				getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
				optInd_f29cj23F8gdIHggpJ4lkkNw(p, a);
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T13_;
					if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 89))) goto LA11_;
					T13_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T13_ = parseVarTuple_x3UAdSvBfIIO33m4gWdOPg_27(p);
					addSon_P8dDSotTW25BkfbyspojGg_2(result, T13_);
					goto LA7;
				}
				LA11_: ;
				a = identWithPragma_p8B2ZGnnV4OxW0KbdW69bBg(p, NIM_FALSE);
				addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
			} LA8: ;
		} LA7: ;
	}
	LA1_: ;
	eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 33));
	T14_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T14_ = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
	addSon_P8dDSotTW25BkfbyspojGg_2(result, T14_);
	colcom_f29cj23F8gdIHggpJ4lkkNw_2(p, result);
	T15_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T15_ = parseStmt_x3UAdSvBfIIO33m4gWdOPg_5(p);
	addSon_P8dDSotTW25BkfbyspojGg_2(result, T15_);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseCase_x3UAdSvBfIIO33m4gWdOPg_28)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b;
	NIM_BOOL inElif;
	NIM_BOOL wasIndented;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	NI oldInd;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	b = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	inElif = NIM_FALSE;
	wasIndented = NIM_FALSE;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 97), (&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
	addSon_P8dDSotTW25BkfbyspojGg_2(result, T1_);
	{
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 103))) goto LA4_;
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	LA4_: ;
	skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, result);
	oldInd = (*p).currInd;
	{
		if (!((*p).currInd < (*p).tok.indent)) goto LA8_;
		(*p).currInd = (*p).tok.indent;
		wasIndented = NIM_TRUE;
	}
	LA8_: ;
	{
		while (1) {
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T21_;
			if (!((*p).tok.indent == (*p).currInd)) goto LA11;
			switch ((*p).tok.tokType) {
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 48):
			{
				{
					if (!inElif) goto LA15_;
					goto LA10;
				}
				LA15_: ;
				b = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 85), (&(*p)));
				exprList_vNL1MotDDlqUCHIgY7Xasg(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 103), b);
			}
			break;
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 21):
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T18_;
				inElif = NIM_TRUE;
				b = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 86), (&(*p)));
				getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
				optInd_f29cj23F8gdIHggpJ4lkkNw(p, b);
				T18_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T18_ = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
				addSon_P8dDSotTW25BkfbyspojGg_2(b, T18_);
			}
			break;
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 22):
			{
				b = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88), (&(*p)));
				getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			}
			break;
			default:
			{
				goto LA10;
			}
			break;
			}
			colcom_f29cj23F8gdIHggpJ4lkkNw_2(p, b);
			T21_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T21_ = parseStmt_x3UAdSvBfIIO33m4gWdOPg_5(p);
			addSon_P8dDSotTW25BkfbyspojGg_2(b, T21_);
			addSon_P8dDSotTW25BkfbyspojGg_2(result, b);
			{
				if (!((*b).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88))) goto LA24_;
				goto LA10;
			}
			LA24_: ;
		} LA11: ;
	} LA10: ;
	{
		if (!wasIndented) goto LA28_;
		(*p).currInd = oldInd;
	}
	LA28_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseTry_ur2Ff8QkN8a3tOZBX9bKA2w)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, NIM_BOOL isExpr) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 106), (&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	colcom_f29cj23F8gdIHggpJ4lkkNw_2(p, result);
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = parseStmt_x3UAdSvBfIIO33m4gWdOPg_5(p);
	addSon_P8dDSotTW25BkfbyspojGg_2(result, T1_);
	b = NIM_NIL;
	{
		while (1) {
			NIM_BOOL T4_;
			NIM_BOOL T5_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T11_;
			T4_ = (NIM_BOOL)0;
			T5_ = (NIM_BOOL)0;
			T5_ = ((*p).tok.indent == (*p).currInd);
			if (T5_) goto LA6_;
			T5_ = ((*p).tok.indent < ((NI) 0));
			LA6_: ;
			T4_ = T5_;
			if (T4_) goto LA7_;
			T4_ = isExpr;
			LA7_: ;
			if (!T4_) goto LA3;
			switch ((*p).tok.tokType) {
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 25):
			{
				b = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 87), (&(*p)));
				exprList_vNL1MotDDlqUCHIgY7Xasg(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 103), b);
			}
			break;
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 27):
			{
				b = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 107), (&(*p)));
				getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			}
			break;
			default:
			{
				goto LA2;
			}
			break;
			}
			colcom_f29cj23F8gdIHggpJ4lkkNw_2(p, b);
			T11_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T11_ = parseStmt_x3UAdSvBfIIO33m4gWdOPg_5(p);
			addSon_P8dDSotTW25BkfbyspojGg_2(b, T11_);
			addSon_P8dDSotTW25BkfbyspojGg_2(result, b);
		} LA3: ;
	} LA2: ;
	{
		if (!(b == NIM_NIL)) goto LA14_;
		parMessage_trqiH2WnOZXdRtAc0s4e7A((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_43));
	}
	LA14_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseExpr_x3UAdSvBfIIO33m4gWdOPg_3)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	switch ((*p).tok.tokType) {
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 8):
	{
		result = parseBlock_x3UAdSvBfIIO33m4gWdOPg_4(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 31):
	{
		result = parseIfExpr_meuRB08PuMn59b2HR3aex4w_5(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 48));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 28):
	{
		result = parseFor_x3UAdSvBfIIO33m4gWdOPg_26(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 65):
	{
		result = parseIfExpr_meuRB08PuMn59b2HR3aex4w_5(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 93));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 10):
	{
		result = parseCase_x3UAdSvBfIIO33m4gWdOPg_28(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 60):
	{
		result = parseTry_ur2Ff8QkN8a3tOZBX9bKA2w(p, NIM_TRUE);
	}
	break;
	default:
	{
		result = simpleExpr_kdOUXIZEhnaRyfX0iKDcHQ(p, ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 0));
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseIfOrWhen_meuRB08PuMn59b2HR3aex4w)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(kind, (&(*p)));
	{
		while (1) {
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T3_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T4_;
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			branch = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 86), (&(*p)));
			optInd_f29cj23F8gdIHggpJ4lkkNw(p, branch);
			T3_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T3_ = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
			addSon_P8dDSotTW25BkfbyspojGg_2(branch, T3_);
			colcom_f29cj23F8gdIHggpJ4lkkNw_2(p, branch);
			T4_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T4_ = parseStmt_x3UAdSvBfIIO33m4gWdOPg_5(p);
			addSon_P8dDSotTW25BkfbyspojGg_2(branch, T4_);
			skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, branch);
			addSon_P8dDSotTW25BkfbyspojGg_2(result, branch);
			{
				NIM_BOOL T7_;
				NIM_BOOL T9_;
				T7_ = (NIM_BOOL)0;
				T7_ = !(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 21)));
				if (T7_) goto LA8_;
				T9_ = (NIM_BOOL)0;
				T9_ = ((*p).tok.indent == (*p).currInd);
				if (T9_) goto LA10_;
				T9_ = ((*p).tok.indent < ((NI) 0));
				LA10_: ;
				T7_ = !(T9_);
				LA8_: ;
				if (!T7_) goto LA11_;
				goto LA1;
			}
			LA11_: ;
		}
	} LA1: ;
	{
		NIM_BOOL T15_;
		NIM_BOOL T17_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch_2;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T21_;
		T15_ = (NIM_BOOL)0;
		T15_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 22));
		if (!(T15_)) goto LA16_;
		T17_ = (NIM_BOOL)0;
		T17_ = ((*p).tok.indent == (*p).currInd);
		if (T17_) goto LA18_;
		T17_ = ((*p).tok.indent < ((NI) 0));
		LA18_: ;
		T15_ = T17_;
		LA16_: ;
		if (!T15_) goto LA19_;
		branch_2 = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88), (&(*p)));
		eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 22));
		colcom_f29cj23F8gdIHggpJ4lkkNw_2(p, branch_2);
		T21_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T21_ = parseStmt_x3UAdSvBfIIO33m4gWdOPg_5(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(branch_2, T21_);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, branch_2);
	}
	LA19_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseWhile_x3UAdSvBfIIO33m4gWdOPg_29)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T2_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 96), (&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
	addSon_P8dDSotTW25BkfbyspojGg_2(result, T1_);
	colcom_f29cj23F8gdIHggpJ4lkkNw_2(p, result);
	T2_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T2_ = parseStmt_x3UAdSvBfIIO33m4gWdOPg_5(p);
	addSon_P8dDSotTW25BkfbyspojGg_2(result, T2_);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseExceptBlock_meuRB08PuMn59b2HR3aex4w_6)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(kind, (&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	colcom_f29cj23F8gdIHggpJ4lkkNw_2(p, result);
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = parseStmt_x3UAdSvBfIIO33m4gWdOPg_5(p);
	addSon_P8dDSotTW25BkfbyspojGg_2(result, T1_);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseStaticOrDefer_Tj3b9cenzlFv3pe7ECXccgw)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw k) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(k, (&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	colcom_f29cj23F8gdIHggpJ4lkkNw_2(p, result);
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = parseStmt_x3UAdSvBfIIO33m4gWdOPg_5(p);
	addSon_P8dDSotTW25BkfbyspojGg_2(result, T1_);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseAsm_x3UAdSvBfIIO33m4gWdOPg_30)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 89), (&(*p)));
	getTokNoInd_Xu4eHJ43ZFePtQEl7xNDtQ_3(p);
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T5_;
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 97))) goto LA3_;
		T5_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T5_ = parsePragma_x3UAdSvBfIIO33m4gWdOPg_8(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T5_);
	}
	goto LA1_;
	LA3_: ;
	{
		addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
	}
	LA1_: ;
	switch ((*p).tok.tokType) {
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 83):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T8_;
		T8_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T8_ = newStrNodeP_iNMN6i7eOmK9cJZaS8PW9bHQ(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 20), (*p).tok.literal, (&(*p)));
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T8_);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 84):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T10_;
		T10_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T10_ = newStrNodeP_iNMN6i7eOmK9cJZaS8PW9bHQ(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 21), (*p).tok.literal, (&(*p)));
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T10_);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 85):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T12_;
		T12_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T12_ = newStrNodeP_iNMN6i7eOmK9cJZaS8PW9bHQ(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 22), (*p).tok.literal, (&(*p)));
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T12_);
	}
	break;
	default:
	{
		parMessage_trqiH2WnOZXdRtAc0s4e7A((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_44));
		addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
		goto BeforeRet_;
	}
	break;
	}
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parsePattern_x3UAdSvBfIIO33m4gWdOPg_31)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 93));
	result = parseStmt_x3UAdSvBfIIO33m4gWdOPg_5(p);
	eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 94));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, expectIdent_y0Oo6oxiRSblBjHhhKpzMw)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	{
		NimStringDesc* T5_;
		NimStringDesc* T6_;
		if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 2)))) goto LA3_;
		T5_ = (NimStringDesc*)0;
		T5_ = prettyTok_d3YnHm5OyfXf5tTfAaERTg((&(*p).tok));
		T6_ = (NimStringDesc*)0;
		T6_ = nsuFormatSingleElem(((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_7), T5_);
		lexMessage_7sgxHfR2r4xBBAjZv1DqbQ((&(*p).lex), ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), T6_);
	}
	LA3_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseGenericParam_x3UAdSvBfIIO33m4gWdOPg_33)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	a = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 35), (&(*p)));
	{
		while (1) {
			switch ((*p).tok.tokType) {
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 33):
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 50):
			{
				tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* x;
				NimStringDesc* T4_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T10_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T11_;
				T4_ = (NimStringDesc*)0;
				{
					if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 33))) goto LA7_;
					T4_ = copyString(((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_45));
				}
				goto LA5_;
				LA7_: ;
				{
					T4_ = copyString(((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_46));
				}
				LA5_: ;
				x = getIdent_9coBOmdXN09be4rJvXK6fQGQ((*p).lex.cache, T4_);
				a = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 30), (&(*p)));
				T10_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T10_ = newIdentNodeP_gljI1VO9aaziQr60MYvmzCw(x, (&(*p)));
				addSon_P8dDSotTW25BkfbyspojGg_2(a, T10_);
				getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
				expectIdent_y0Oo6oxiRSblBjHhhKpzMw((&(*p)));
				T11_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T11_ = parseSymbol_N3GnkfhgYci4va8Az3kikA(p, ((tyEnum_SymbolMode_9aoP9cJZtqH9cYXp2xqhRfe4g) 0));
				addSon_P8dDSotTW25BkfbyspojGg_2(a, T11_);
			}
			break;
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 2):
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 111):
			{
				a = parseSymbol_N3GnkfhgYci4va8Az3kikA(p, ((tyEnum_SymbolMode_9aoP9cJZtqH9cYXp2xqhRfe4g) 0));
				{
					if (!((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1))) goto LA15_;
					goto BeforeRet_;
				}
				LA15_: ;
			}
			break;
			default:
			{
				goto LA1;
			}
			break;
			}
			addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
			{
				if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101)))) goto LA20_;
				goto LA1;
			}
			LA20_: ;
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			optInd_f29cj23F8gdIHggpJ4lkkNw(p, a);
		}
	} LA1: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T26_;
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 103))) goto LA24_;
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
		T26_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T26_ = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T26_);
	}
	goto LA22_;
	LA24_: ;
	{
		addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
	}
	LA22_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T32_;
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 105))) goto LA30_;
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
		T32_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T32_ = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T32_);
	}
	goto LA28_;
	LA30_: ;
	{
		addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
	}
	LA28_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseGenericParamList_x3UAdSvBfIIO33m4gWdOPg_32)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 75), (&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
	{
		while (1) {
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
			if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 2) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 111) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 33) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 50))) goto LA2;
			a = parseGenericParam_x3UAdSvBfIIO33m4gWdOPg_33(p);
			addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
			{
				if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 102)))) goto LA5_;
				goto LA1;
			}
			LA5_: ;
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, a);
		} LA2: ;
	} LA1: ;
	optPar_Xu4eHJ43ZFePtQEl7xNDtQ_4(p);
	eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 92));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, indAndComment_f29cj23F8gdIHggpJ4lkkNw_3)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	{
		if (!((*p).currInd < (*p).tok.indent)) goto LA3_;
		{
			if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 110))) goto LA7_;
			rawSkipComment_4X69atLAOW9bH7XN7NtLQ15A_2(p, n);
		}
		goto LA5_;
		LA7_: ;
		{
			parMessage_trqiH2WnOZXdRtAc0s4e7A((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_4));
		}
		LA5_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, n);
	}
	LA1_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseRoutine_meuRB08PuMn59b2HR3aex4w_7)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T18_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(kind, (&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = identVis_p8B2ZGnnV4OxW0KbdW69bBg_2(p, NIM_FALSE);
	addSon_P8dDSotTW25BkfbyspojGg_2(result, T1_);
	{
		NIM_BOOL T4_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T8_;
		T4_ = (NIM_BOOL)0;
		T4_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 93));
		if (!(T4_)) goto LA5_;
		T4_ = validInd_N407wi9cDx33ZxrNOz2oYtA(p);
		LA5_: ;
		if (!T4_) goto LA6_;
		T8_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T8_ = parsePattern_x3UAdSvBfIIO33m4gWdOPg_31(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T8_);
	}
	goto LA2_;
	LA6_: ;
	{
		addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
	}
	LA2_: ;
	{
		NIM_BOOL T12_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T16_;
		T12_ = (NIM_BOOL)0;
		T12_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 91));
		if (!(T12_)) goto LA13_;
		T12_ = validInd_N407wi9cDx33ZxrNOz2oYtA(p);
		LA13_: ;
		if (!T12_) goto LA14_;
		T16_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T16_ = parseGenericParamList_x3UAdSvBfIIO33m4gWdOPg_32(p);
		add_P8dDSotTW25BkfbyspojGg(result, T16_);
	}
	goto LA10_;
	LA14_: ;
	{
		addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
	}
	LA10_: ;
	T18_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T18_ = parseParamList_WcTv1Of1vVb82irmP9cU0EA(p, NIM_TRUE);
	addSon_P8dDSotTW25BkfbyspojGg_2(result, T18_);
	{
		NIM_BOOL T21_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T25_;
		T21_ = (NIM_BOOL)0;
		T21_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 97));
		if (!(T21_)) goto LA22_;
		T21_ = validInd_N407wi9cDx33ZxrNOz2oYtA(p);
		LA22_: ;
		if (!T21_) goto LA23_;
		T25_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T25_ = parsePragma_x3UAdSvBfIIO33m4gWdOPg_8(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T25_);
	}
	goto LA19_;
	LA23_: ;
	{
		addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
	}
	LA19_: ;
	addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
	{
		NIM_BOOL T29_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T33_;
		T29_ = (NIM_BOOL)0;
		T29_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 105));
		if (!(T29_)) goto LA30_;
		T29_ = validInd_N407wi9cDx33ZxrNOz2oYtA(p);
		LA30_: ;
		if (!T29_) goto LA31_;
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, result);
		T33_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T33_ = parseStmt_x3UAdSvBfIIO33m4gWdOPg_5(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T33_);
	}
	goto LA27_;
	LA31_: ;
	{
		addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
	}
	LA27_: ;
	indAndComment_f29cj23F8gdIHggpJ4lkkNw_3(p, result);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseSection_GrPHXcmCn9bme87RpTtABZQ)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyProc_s79bHuT8GEFwSamuAIHcACw defparser) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(kind, (&(*p)));
	{
		if (!!((kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 98)))) goto LA3_;
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	}
	LA3_: ;
	skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, result);
	{
		NI oldInd;
		if (!((*p).currInd < (*p).tok.indent)) goto LA7_;
		oldInd = (*p).currInd;
		(*p).currInd = (*p).tok.indent;
		skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, result);
		{
			while (1) {
				if (!((*p).tok.indent == (*p).currInd)) goto LA10;
				switch ((*p).tok.tokType) {
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 2):
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 111):
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 89):
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
					a = defparser(p);
					skipComment_4X69atLAOW9bH7XN7NtLQ15A(p, a);
					addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
				}
				break;
				case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 110):
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a_2;
					a_2 = newCommentStmt_x3UAdSvBfIIO33m4gWdOPg_24(p);
					addSon_P8dDSotTW25BkfbyspojGg_2(result, a_2);
				}
				break;
				default:
				{
					parMessage_rXWbL6tbX9bTHhjIGAkRQhA((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_7), (&(*p).tok));
					goto LA9;
				}
				break;
				}
			} LA10: ;
		} LA9: ;
		(*p).currInd = oldInd;
		{
			NI T16_;
			T16_ = (NI)0;
			T16_ = len_P89cqdlERShb9alU3iC0yj8wast(result);
			if (!(T16_ == ((NI) 0))) goto LA17_;
			parMessage_rXWbL6tbX9bTHhjIGAkRQhA((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_7), (&(*p).tok));
		}
		LA17_: ;
	}
	goto LA5_;
	LA7_: ;
	{
		NIM_BOOL T20_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T24_;
		T20_ = (NIM_BOOL)0;
		T20_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 2) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 111) || (*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 89));
		if (!(T20_)) goto LA21_;
		T20_ = ((*p).tok.indent < ((NI) 0));
		LA21_: ;
		if (!T20_) goto LA22_;
		T24_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T24_ = defparser(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T24_);
	}
	goto LA5_;
	LA22_: ;
	{
		parMessage_rXWbL6tbX9bTHhjIGAkRQhA((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_7), (&(*p).tok));
	}
	LA5_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseTypeDefAux_x3UAdSvBfIIO33m4gWdOPg_35)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = simpleExpr_kdOUXIZEhnaRyfX0iKDcHQ(p, ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 2));
	result = binaryNot_qidZGWvQrQ8JdLN3ZQrK5w_4(p, result);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseTypeDef_x3UAdSvBfIIO33m4gWdOPg_34)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* identifier;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* identPragma;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* pragma;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* genericParam;
	NIM_BOOL noPragmaYet;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 103), (&(*p)));
	identifier = identVis_p8B2ZGnnV4OxW0KbdW69bBg_2(p, NIM_TRUE);
	identPragma = identifier;
	pragma = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	genericParam = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	noPragmaYet = NIM_TRUE;
	{
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 97))) goto LA3_;
		pragma = optPragmas_x3UAdSvBfIIO33m4gWdOPg_10(p);
		identPragma = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 43), (&(*p)));
		addSon_P8dDSotTW25BkfbyspojGg_2(identPragma, identifier);
		addSon_P8dDSotTW25BkfbyspojGg_2(identPragma, pragma);
		noPragmaYet = NIM_FALSE;
	}
	LA3_: ;
	{
		NIM_BOOL T7_;
		T7_ = (NIM_BOOL)0;
		T7_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 91));
		if (!(T7_)) goto LA8_;
		T7_ = validInd_N407wi9cDx33ZxrNOz2oYtA(p);
		LA8_: ;
		if (!T7_) goto LA9_;
		{
			if (!!(noPragmaYet)) goto LA13_;
			parMessage_wjMY23FEyPmv9cffowHLsxA((&(*p)), ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 15), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_47));
		}
		LA13_: ;
		genericParam = parseGenericParamList_x3UAdSvBfIIO33m4gWdOPg_32(p);
	}
	goto LA5_;
	LA9_: ;
	{
		genericParam = (*p).emptyNode;
	}
	LA5_: ;
	{
		if (!noPragmaYet) goto LA18_;
		pragma = optPragmas_x3UAdSvBfIIO33m4gWdOPg_10(p);
		{
			if (!!(((*pragma).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA22_;
			identPragma = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 43), (&(*p)));
			addSon_P8dDSotTW25BkfbyspojGg_2(identPragma, identifier);
			addSon_P8dDSotTW25BkfbyspojGg_2(identPragma, pragma);
		}
		LA22_: ;
	}
	goto LA16_;
	LA18_: ;
	{
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 97))) goto LA25_;
		parMessage_wjMY23FEyPmv9cffowHLsxA((&(*p)), ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_48));
	}
	goto LA16_;
	LA25_: ;
	LA16_: ;
	addSon_P8dDSotTW25BkfbyspojGg_2(result, identPragma);
	addSon_P8dDSotTW25BkfbyspojGg_2(result, genericParam);
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T31_;
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 105))) goto LA29_;
		(*result).info = parLineInfo_MtiItYhm6aG5IoWBtYIaGg((&(*p)));
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
		T31_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T31_ = parseTypeDefAux_x3UAdSvBfIIO33m4gWdOPg_35(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T31_);
	}
	goto LA27_;
	LA29_: ;
	{
		addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
	}
	LA27_: ;
	indAndComment_f29cj23F8gdIHggpJ4lkkNw_3(p, result);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseConstant_x3UAdSvBfIIO33m4gWdOPg_36)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T13_;
	NI T14_;
	NI TM_MW5RrD2zyVLHF67ojsDu8Q_49;
	NI T15_;
	NI TM_MW5RrD2zyVLHF67ojsDu8Q_50;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 89))) goto LA3_;
		result = parseVarTuple_x3UAdSvBfIIO33m4gWdOPg_27(p);
	}
	goto LA1_;
	LA3_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T6_;
		result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 102), (&(*p)));
		T6_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T6_ = identWithPragma_p8B2ZGnnV4OxW0KbdW69bBg(p, NIM_FALSE);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T6_);
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T11_;
			if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 103))) goto LA9_;
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
			T11_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T11_ = parseTypeDesc_x3UAdSvBfIIO33m4gWdOPg_9(p);
			addSon_P8dDSotTW25BkfbyspojGg_2(result, T11_);
		}
		goto LA7_;
		LA9_: ;
		{
			addSon_P8dDSotTW25BkfbyspojGg_2(result, (*p).emptyNode);
		}
		LA7_: ;
	}
	LA1_: ;
	eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 105));
	optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
	T13_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T13_ = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
	addSon_P8dDSotTW25BkfbyspojGg_2(result, T13_);
	if (((TM_MW5RrD2zyVLHF67ojsDu8Q_8[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_9));
	T14_ = (NI)0;
	T14_ = len_P89cqdlERShb9alU3iC0yj8wast(result);
	TM_MW5RrD2zyVLHF67ojsDu8Q_49 = subInt(T14_, ((NI) 1));
	if ((NU)((NI)(TM_MW5RrD2zyVLHF67ojsDu8Q_49)) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2((NI)(TM_MW5RrD2zyVLHF67ojsDu8Q_49),((*result).sons ? (*result).sons->Sup.len : 0)-1);
	if (((TM_MW5RrD2zyVLHF67ojsDu8Q_8[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_9));
	T15_ = (NI)0;
	T15_ = len_P89cqdlERShb9alU3iC0yj8wast(result);
	TM_MW5RrD2zyVLHF67ojsDu8Q_50 = subInt(T15_, ((NI) 1));
	if ((NU)((NI)(TM_MW5RrD2zyVLHF67ojsDu8Q_50)) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2((NI)(TM_MW5RrD2zyVLHF67ojsDu8Q_50),((*result).sons ? (*result).sons->Sup.len : 0)-1);
	asgnRef((void**) (&(*result).sons->data[(NI)(TM_MW5RrD2zyVLHF67ojsDu8Q_49)]), postExprBlocks_TghyduzCvNkQUONd4Z5lpA(p, (*result).sons->data[(NI)(TM_MW5RrD2zyVLHF67ojsDu8Q_50)]));
	indAndComment_f29cj23F8gdIHggpJ4lkkNw_3(p, result);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseVariable_x3UAdSvBfIIO33m4gWdOPg_37)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NI T7_;
	NI TM_MW5RrD2zyVLHF67ojsDu8Q_51;
	NI T8_;
	NI TM_MW5RrD2zyVLHF67ojsDu8Q_52;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T5_;
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 89))) goto LA3_;
		result = parseVarTuple_x3UAdSvBfIIO33m4gWdOPg_27(p);
		eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 105));
		optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
		T5_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T5_ = parseExpr_x3UAdSvBfIIO33m4gWdOPg_3(p);
		addSon_P8dDSotTW25BkfbyspojGg_2(result, T5_);
	}
	goto LA1_;
	LA3_: ;
	{
		result = parseIdentColonEquals_Bcfm0z8pniFRTPJG3yq6Iw(p, 5);
	}
	LA1_: ;
	if (((TM_MW5RrD2zyVLHF67ojsDu8Q_8[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_9));
	T7_ = (NI)0;
	T7_ = len_P89cqdlERShb9alU3iC0yj8wast(result);
	TM_MW5RrD2zyVLHF67ojsDu8Q_51 = subInt(T7_, ((NI) 1));
	if ((NU)((NI)(TM_MW5RrD2zyVLHF67ojsDu8Q_51)) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2((NI)(TM_MW5RrD2zyVLHF67ojsDu8Q_51),((*result).sons ? (*result).sons->Sup.len : 0)-1);
	if (((TM_MW5RrD2zyVLHF67ojsDu8Q_8[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_9));
	T8_ = (NI)0;
	T8_ = len_P89cqdlERShb9alU3iC0yj8wast(result);
	TM_MW5RrD2zyVLHF67ojsDu8Q_52 = subInt(T8_, ((NI) 1));
	if ((NU)((NI)(TM_MW5RrD2zyVLHF67ojsDu8Q_52)) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2((NI)(TM_MW5RrD2zyVLHF67ojsDu8Q_52),((*result).sons ? (*result).sons->Sup.len : 0)-1);
	asgnRef((void**) (&(*result).sons->data[(NI)(TM_MW5RrD2zyVLHF67ojsDu8Q_51)]), postExprBlocks_TghyduzCvNkQUONd4Z5lpA(p, (*result).sons->data[(NI)(TM_MW5RrD2zyVLHF67ojsDu8Q_52)]));
	indAndComment_f29cj23F8gdIHggpJ4lkkNw_3(p, result);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, qualifiedIdent_x3UAdSvBfIIO33m4gWdOPg_38)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = parseSymbol_N3GnkfhgYci4va8Az3kikA(p, ((tyEnum_SymbolMode_9aoP9cJZtqH9cYXp2xqhRfe4g) 0));
	{
		if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 106))) goto LA3_;
		result = dotExpr_qidZGWvQrQ8JdLN3ZQrK5w(p, result);
	}
	LA3_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseBind_Tj3b9cenzlFv3pe7ECXccgw_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p, tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw k) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(k, (&(*p)));
	getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
	optInd_f29cj23F8gdIHggpJ4lkkNw(p, result);
	{
		while (1) {
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
			a = qualifiedIdent_x3UAdSvBfIIO33m4gWdOPg_38(p);
			addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
			{
				if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 101)))) goto LA5_;
				goto LA1;
			}
			LA5_: ;
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			optInd_f29cj23F8gdIHggpJ4lkkNw(p, a);
		}
	} LA1: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, complexOrSimpleStmt_x3UAdSvBfIIO33m4gWdOPg_2)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	switch ((*p).tok.tokType) {
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 31):
	{
		result = parseIfOrWhen_meuRB08PuMn59b2HR3aex4w(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 92));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 66):
	{
		result = parseWhile_x3UAdSvBfIIO33m4gWdOPg_29(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 10):
	{
		result = parseCase_x3UAdSvBfIIO33m4gWdOPg_28(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 60):
	{
		result = parseTry_ur2Ff8QkN8a3tOZBX9bKA2w(p, NIM_FALSE);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 27):
	{
		result = parseExceptBlock_meuRB08PuMn59b2HR3aex4w_6(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 107));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 25):
	{
		result = parseExceptBlock_meuRB08PuMn59b2HR3aex4w_6(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 87));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 28):
	{
		result = parseFor_x3UAdSvBfIIO33m4gWdOPg_26(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 8):
	{
		result = parseBlock_x3UAdSvBfIIO33m4gWdOPg_4(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 58):
	{
		result = parseStaticOrDefer_Tj3b9cenzlFv3pe7ECXccgw(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 113));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 16):
	{
		result = parseStaticOrDefer_Tj3b9cenzlFv3pe7ECXccgw(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 105));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 6):
	{
		result = parseAsm_x3UAdSvBfIIO33m4gWdOPg_30(p);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 51):
	{
		result = parseRoutine_meuRB08PuMn59b2HR3aex4w_7(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 79));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 30):
	{
		result = parseRoutine_meuRB08PuMn59b2HR3aex4w_7(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 159));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 41):
	{
		result = parseRoutine_meuRB08PuMn59b2HR3aex4w_7(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 80));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 38):
	{
		result = parseRoutine_meuRB08PuMn59b2HR3aex4w_7(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 84));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 40):
	{
		result = parseRoutine_meuRB08PuMn59b2HR3aex4w_7(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 82));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 59):
	{
		result = parseRoutine_meuRB08PuMn59b2HR3aex4w_7(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 83));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 15):
	{
		result = parseRoutine_meuRB08PuMn59b2HR3aex4w_7(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 81));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 62):
	{
		getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T24_;
			if (!((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 89))) goto LA22_;
			getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 132), (&(*p)));
			T24_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T24_ = primary_kdOUXIZEhnaRyfX0iKDcHQ_2(p, ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 1));
			addSon_P8dDSotTW25BkfbyspojGg_2(result, T24_);
			eat_lqpEdCtNNxv5ylRLl1vASw(p, ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 90));
			result = parseOperators_lDjYBDeuaBffjeaA9bSrBGQ(p, result, ((NI) -1), ((tyEnum_TPrimaryMode_v9acncylbnY9bBWr8IxfUXpg) 0));
		}
		goto LA20_;
		LA22_: ;
		{
			result = parseSection_GrPHXcmCn9bme87RpTtABZQ(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 98), parseTypeDef_x3UAdSvBfIIO33m4gWdOPg_34);
		}
		LA20_: ;
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 13):
	{
		result = parseSection_GrPHXcmCn9bme87RpTtABZQ(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 101), parseConstant_x3UAdSvBfIIO33m4gWdOPg_36);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 39):
	{
		result = parseSection_GrPHXcmCn9bme87RpTtABZQ(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 100), parseVariable_x3UAdSvBfIIO33m4gWdOPg_37);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 65):
	{
		result = parseIfOrWhen_meuRB08PuMn59b2HR3aex4w(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 93));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 64):
	{
		result = parseSection_GrPHXcmCn9bme87RpTtABZQ(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 99), parseVariable_x3UAdSvBfIIO33m4gWdOPg_37);
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 7):
	{
		result = parseBind_Tj3b9cenzlFv3pe7ECXccgw_2(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 122));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 42):
	{
		result = parseBind_Tj3b9cenzlFv3pe7ECXccgw_2(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 123));
	}
	break;
	case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 63):
	{
		result = parseSection_GrPHXcmCn9bme87RpTtABZQ(p, ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 124), parseVariable_x3UAdSvBfIIO33m4gWdOPg_37);
	}
	break;
	default:
	{
		result = simpleStmt_x3UAdSvBfIIO33m4gWdOPg_6(p);
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseAll_x3UAdSvBfIIO33m4gWdOPg)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeP_Op9ax6vrbzZMdkYtTvibBdg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (&(*p)));
	{
		while (1) {
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
			if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 1)))) goto LA2;
			(*p).hasProgress = NIM_FALSE;
			a = complexOrSimpleStmt_x3UAdSvBfIIO33m4gWdOPg_2(p);
			{
				NIM_BOOL T5_;
				T5_ = (NIM_BOOL)0;
				T5_ = !(((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)));
				if (!(T5_)) goto LA6_;
				T5_ = (*p).hasProgress;
				LA6_: ;
				if (!T5_) goto LA7_;
				addSon_P8dDSotTW25BkfbyspojGg_2(result, a);
			}
			goto LA3_;
			LA7_: ;
			{
				parMessage_rXWbL6tbX9bTHhjIGAkRQhA((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_13), (&(*p).tok));
				getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
			}
			LA3_: ;
			{
				if (!!(((*p).tok.indent == ((NI) 0)))) goto LA12_;
				parMessage_trqiH2WnOZXdRtAc0s4e7A((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_4));
			}
			LA12_: ;
		} LA2: ;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, closeParser_Xu4eHJ43ZFePtQEl7xNDtQ_5)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	closeLexer_ukE4jLLltKtD9aVT9bIEv6Gg((&(*p).lex));
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseString_ZXKKi17aCgkDjL5WP5iEUQ)(NimStringDesc* s, tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache, tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* config, NimStringDesc* filename, NI line, tyProc_eADjAhqPI0ogAK7A2xrf0A errorHandler) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TLLStream_a5oZYQ9aTktYME2449ayEi6g* stream;
	tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw parser;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	stream = llStreamOpen_jzv9bBGhVSDMwEPDegAAa2w(s);
	(*stream).lineOffset = line;
	nimZeroMem((void*)(&parser), sizeof(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw));
	objectInit((&parser), (&NTI_c38t9cDVS8o9b29cOovKwkANw_));
	parser.lex.errorHandler.ClE_0 = errorHandler.ClE_0;
	parser.lex.errorHandler.ClP_0 = errorHandler.ClP_0;
	openParser_VZUcy9bQgXXeGGRhyp8109aA((&parser), filename, stream, cache, config);
	result = parseAll_x3UAdSvBfIIO33m4gWdOPg((&parser));
	closeParser_Xu4eHJ43ZFePtQEl7xNDtQ_5((&parser));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, parseTopLevelStmt_x3UAdSvBfIIO33m4gWdOPg_39)(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw* p) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = (*p).emptyNode;
	{
		while (1) {
			{
				if (!!(((*p).tok.indent == ((NI) 0)))) goto LA5_;
				{
					NIM_BOOL T9_;
					T9_ = (NIM_BOOL)0;
					T9_ = (*p).firstTok;
					if (!(T9_)) goto LA10_;
					T9_ = ((*p).tok.indent < ((NI) 0));
					LA10_: ;
					if (!T9_) goto LA11_;
				}
				goto LA7_;
				LA11_: ;
				{
					if (!!(((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 102)))) goto LA14_;
					{
						NIM_BOOL T18_;
						T18_ = (NIM_BOOL)0;
						T18_ = ((*p).tok.tokType == ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 109));
						if (!(T18_)) goto LA19_;
						T18_ = eqStrings((*(*p).tok.ident).s, ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_53));
						LA19_: ;
						if (!T18_) goto LA20_;
						parMessage_wjMY23FEyPmv9cffowHLsxA((&(*p)), ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_54));
					}
					goto LA16_;
					LA20_: ;
					{
						parMessage_trqiH2WnOZXdRtAc0s4e7A((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_4));
					}
					LA16_: ;
				}
				goto LA7_;
				LA14_: ;
				LA7_: ;
			}
			LA5_: ;
			(*p).firstTok = NIM_FALSE;
			switch ((*p).tok.tokType) {
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 102):
			{
				getTok_Xu4eHJ43ZFePtQEl7xNDtQ(p);
				{
					if (!((*p).tok.indent <= ((NI) 0))) goto LA26_;
				}
				goto LA24_;
				LA26_: ;
				{
					parMessage_trqiH2WnOZXdRtAc0s4e7A((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_4));
				}
				LA24_: ;
				(*p).firstTok = NIM_TRUE;
			}
			break;
			case ((tyEnum_TTokType_vw8YkgaVtNadqP8v5OpXKA) 1):
			{
				goto LA1;
			}
			break;
			default:
			{
				result = complexOrSimpleStmt_x3UAdSvBfIIO33m4gWdOPg_2(p);
				{
					if (!((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1))) goto LA33_;
					parMessage_rXWbL6tbX9bTHhjIGAkRQhA((&(*p)), ((NimStringDesc*) &TM_MW5RrD2zyVLHF67ojsDu8Q_13), (&(*p).tok));
				}
				LA33_: ;
				goto LA1;
			}
			break;
			}
		}
	} LA1: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, compiler_parserDatInit000)(void) {
static TNimNode* TM_MW5RrD2zyVLHF67ojsDu8Q_2_8[8];
static TNimNode TM_MW5RrD2zyVLHF67ojsDu8Q_0[9];
NTI_c38t9cDVS8o9b29cOovKwkANw_.size = sizeof(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw);
NTI_c38t9cDVS8o9b29cOovKwkANw_.kind = 18;
NTI_c38t9cDVS8o9b29cOovKwkANw_.base = 0;
TM_MW5RrD2zyVLHF67ojsDu8Q_2_8[0] = &TM_MW5RrD2zyVLHF67ojsDu8Q_0[1];
TM_MW5RrD2zyVLHF67ojsDu8Q_0[1].kind = 1;
TM_MW5RrD2zyVLHF67ojsDu8Q_0[1].offset = offsetof(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw, currInd);
TM_MW5RrD2zyVLHF67ojsDu8Q_0[1].typ = (&NTI_rR5Bzr1D5krxoo1NcNyeMA_);
TM_MW5RrD2zyVLHF67ojsDu8Q_0[1].name = "currInd";
TM_MW5RrD2zyVLHF67ojsDu8Q_2_8[1] = &TM_MW5RrD2zyVLHF67ojsDu8Q_0[2];
TM_MW5RrD2zyVLHF67ojsDu8Q_0[2].kind = 1;
TM_MW5RrD2zyVLHF67ojsDu8Q_0[2].offset = offsetof(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw, firstTok);
TM_MW5RrD2zyVLHF67ojsDu8Q_0[2].typ = (&NTI_VaVACK0bpYmqIQ0mKcHfQQ_);
TM_MW5RrD2zyVLHF67ojsDu8Q_0[2].name = "firstTok";
TM_MW5RrD2zyVLHF67ojsDu8Q_2_8[2] = &TM_MW5RrD2zyVLHF67ojsDu8Q_0[3];
TM_MW5RrD2zyVLHF67ojsDu8Q_0[3].kind = 1;
TM_MW5RrD2zyVLHF67ojsDu8Q_0[3].offset = offsetof(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw, hasProgress);
TM_MW5RrD2zyVLHF67ojsDu8Q_0[3].typ = (&NTI_VaVACK0bpYmqIQ0mKcHfQQ_);
TM_MW5RrD2zyVLHF67ojsDu8Q_0[3].name = "hasProgress";
TM_MW5RrD2zyVLHF67ojsDu8Q_2_8[3] = &TM_MW5RrD2zyVLHF67ojsDu8Q_0[4];
TM_MW5RrD2zyVLHF67ojsDu8Q_0[4].kind = 1;
TM_MW5RrD2zyVLHF67ojsDu8Q_0[4].offset = offsetof(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw, lex);
TM_MW5RrD2zyVLHF67ojsDu8Q_0[4].typ = (&NTI_PdyFIzn4patQ2zB5OFD9cjw_);
TM_MW5RrD2zyVLHF67ojsDu8Q_0[4].name = "lex";
TM_MW5RrD2zyVLHF67ojsDu8Q_2_8[4] = &TM_MW5RrD2zyVLHF67ojsDu8Q_0[5];
TM_MW5RrD2zyVLHF67ojsDu8Q_0[5].kind = 1;
TM_MW5RrD2zyVLHF67ojsDu8Q_0[5].offset = offsetof(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw, tok);
TM_MW5RrD2zyVLHF67ojsDu8Q_0[5].typ = (&NTI_kLaEEPwLj8cag79cbYQIkHQ_);
TM_MW5RrD2zyVLHF67ojsDu8Q_0[5].name = "tok";
TM_MW5RrD2zyVLHF67ojsDu8Q_2_8[5] = &TM_MW5RrD2zyVLHF67ojsDu8Q_0[6];
TM_MW5RrD2zyVLHF67ojsDu8Q_0[6].kind = 1;
TM_MW5RrD2zyVLHF67ojsDu8Q_0[6].offset = offsetof(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw, inPragma);
TM_MW5RrD2zyVLHF67ojsDu8Q_0[6].typ = (&NTI_rR5Bzr1D5krxoo1NcNyeMA_);
TM_MW5RrD2zyVLHF67ojsDu8Q_0[6].name = "inPragma";
TM_MW5RrD2zyVLHF67ojsDu8Q_2_8[6] = &TM_MW5RrD2zyVLHF67ojsDu8Q_0[7];
TM_MW5RrD2zyVLHF67ojsDu8Q_0[7].kind = 1;
TM_MW5RrD2zyVLHF67ojsDu8Q_0[7].offset = offsetof(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw, inSemiStmtList);
TM_MW5RrD2zyVLHF67ojsDu8Q_0[7].typ = (&NTI_rR5Bzr1D5krxoo1NcNyeMA_);
TM_MW5RrD2zyVLHF67ojsDu8Q_0[7].name = "inSemiStmtList";
TM_MW5RrD2zyVLHF67ojsDu8Q_2_8[7] = &TM_MW5RrD2zyVLHF67ojsDu8Q_0[8];
TM_MW5RrD2zyVLHF67ojsDu8Q_0[8].kind = 1;
TM_MW5RrD2zyVLHF67ojsDu8Q_0[8].offset = offsetof(tyObject_TParser_c38t9cDVS8o9b29cOovKwkANw, emptyNode);
TM_MW5RrD2zyVLHF67ojsDu8Q_0[8].typ = (&NTI_fKfcLzXYiz5jNu3NH3Tv8Q_);
TM_MW5RrD2zyVLHF67ojsDu8Q_0[8].name = "emptyNode";
TM_MW5RrD2zyVLHF67ojsDu8Q_0[0].len = 8; TM_MW5RrD2zyVLHF67ojsDu8Q_0[0].kind = 2; TM_MW5RrD2zyVLHF67ojsDu8Q_0[0].sons = &TM_MW5RrD2zyVLHF67ojsDu8Q_2_8[0];
NTI_c38t9cDVS8o9b29cOovKwkANw_.node = &TM_MW5RrD2zyVLHF67ojsDu8Q_0[0];
}

