Exemple #1
0
N_NIMCALL(NIM_BOOL, matchnodekinds_WRbpWXbxOP9c3ULW5bbDujw)(Tnode_bROa11lyF5vxEN9aYNbHmhw* p0, Tnode_bROa11lyF5vxEN9aYNbHmhw* n0) {
	NIM_BOOL result0;
	TY_zl3qUQvo0CT9bJi9b5H7mRkw stack0;
	NI sp0;
	NimStringDesc* code0;
	NI pc0;
	result0 = (NIM_BOOL)0;
	stack0[(((NI) 0))- 0] = NIM_TRUE;
	sp0 = ((NI) 1);
	code0 = (*p0).kindU.S3.strval;
	pc0 = ((NI) 1);
	{
		while (1) {
			switch (((Topcode_cKhgukabZvDBOVLlPOrptA) (((NU8)(code0->data[pc0]))))) {
			case ((Topcode_cKhgukabZvDBOVLlPOrptA) 1):
			{
				goto LA1;
			}
			break;
			case ((Topcode_cKhgukabZvDBOVLlPOrptA) 2):
			{
				NIM_BOOL LOC5;
				LOC5 = (NIM_BOOL)0;
				LOC5 = stack0[((NI)(sp0 - ((NI) 1)))- 0];
				if (LOC5) goto LA6;
				LOC5 = stack0[((NI)(sp0 - ((NI) 2)))- 0];
				LA6: ;
				stack0[((NI)(sp0 - ((NI) 2)))- 0] = LOC5;
				sp0 -= ((NI) 1);
			}
			break;
			case ((Topcode_cKhgukabZvDBOVLlPOrptA) 3):
			{
				NIM_BOOL LOC8;
				LOC8 = (NIM_BOOL)0;
				LOC8 = stack0[((NI)(sp0 - ((NI) 1)))- 0];
				if (!(LOC8)) goto LA9;
				LOC8 = stack0[((NI)(sp0 - ((NI) 2)))- 0];
				LA9: ;
				stack0[((NI)(sp0 - ((NI) 2)))- 0] = LOC8;
				sp0 -= ((NI) 1);
			}
			break;
			case ((Topcode_cKhgukabZvDBOVLlPOrptA) 4):
			{
				stack0[((NI)(sp0 - ((NI) 1)))- 0] = !(stack0[((NI)(sp0 - ((NI) 1)))- 0]);
			}
			break;
			case ((Topcode_cKhgukabZvDBOVLlPOrptA) 5):
			{
				stack0[(sp0)- 0] = ((*n0).kind == ((Tnodekind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
				sp0 += ((NI) 1);
			}
			break;
			case ((Topcode_cKhgukabZvDBOVLlPOrptA) 6):
			{
				stack0[(sp0)- 0] = isatom_NyXYMHACmbtWJZnWqE9cJCAparampatterns(n0);
				sp0 += ((NI) 1);
			}
			break;
			case ((Topcode_cKhgukabZvDBOVLlPOrptA) 7):
			{
				stack0[(sp0)- 0] = ((*n0).kind >= ((Tnodekind_G4E4Gxe7oI2Cm03rkiOzQw) 5) && (*n0).kind <= ((Tnodekind_G4E4Gxe7oI2Cm03rkiOzQw) 23));
				sp0 += ((NI) 1);
			}
			break;
			case ((Topcode_cKhgukabZvDBOVLlPOrptA) 8):
			{
				stack0[(sp0)- 0] = ((*n0).kind == ((Tnodekind_G4E4Gxe7oI2Cm03rkiOzQw) 2));
				sp0 += ((NI) 1);
			}
			break;
			case ((Topcode_cKhgukabZvDBOVLlPOrptA) 9):
			{
				stack0[(sp0)- 0] = ((*n0).kind == ((Tnodekind_G4E4Gxe7oI2Cm03rkiOzQw) 27) || (*n0).kind == ((Tnodekind_G4E4Gxe7oI2Cm03rkiOzQw) 29) || (*n0).kind == ((Tnodekind_G4E4Gxe7oI2Cm03rkiOzQw) 30) || (*n0).kind == ((Tnodekind_G4E4Gxe7oI2Cm03rkiOzQw) 31) || (*n0).kind == ((Tnodekind_G4E4Gxe7oI2Cm03rkiOzQw) 26) || (*n0).kind == ((Tnodekind_G4E4Gxe7oI2Cm03rkiOzQw) 28) || (*n0).kind == ((Tnodekind_G4E4Gxe7oI2Cm03rkiOzQw) 32));
				sp0 += ((NI) 1);
			}
			break;
			case ((Topcode_cKhgukabZvDBOVLlPOrptA) 10):
			{
				Tsymkind_cNCW9acsSznmEccl1fgQwkw kind0;
				NIM_BOOL LOC17;
				kind0 = ((Tsymkind_cNCW9acsSznmEccl1fgQwkw) (((NU8)(code0->data[(NI)(pc0 + ((NI) 1))]))));
				LOC17 = (NIM_BOOL)0;
				LOC17 = ((*n0).kind == ((Tnodekind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
				if (!(LOC17)) goto LA18;
				LOC17 = ((*(*n0).kindU.S4.sym).kind == kind0);
				LA18: ;
				stack0[(sp0)- 0] = LOC17;
				sp0 += ((NI) 1);
				pc0 += ((NI) 1);
			}
			break;
			case ((Topcode_cKhgukabZvDBOVLlPOrptA) 11):
			{
				Tnodekind_G4E4Gxe7oI2Cm03rkiOzQw kind0;
				kind0 = ((Tnodekind_G4E4Gxe7oI2Cm03rkiOzQw) (((NU8)(code0->data[(NI)(pc0 + ((NI) 1))]))));
				stack0[(sp0)- 0] = ((*n0).kind == kind0);
				sp0 += ((NI) 1);
				pc0 += ((NI) 1);
			}
			break;
			case ((Topcode_cKhgukabZvDBOVLlPOrptA) 12):
			{
				Tassignableresult_JFgO3TudAWntzWI8Fmx4Ag LOC21;
				LOC21 = (Tassignableresult_JFgO3TudAWntzWI8Fmx4Ag)0;
				LOC21 = isassignable_KOwAOGLDd1pP23MT9bwF88w(NIM_NIL, n0, NIM_FALSE);
				stack0[(sp0)- 0] = ((6 &(1U<<((NU)(LOC21)&7U)))!=0);
				sp0 += ((NI) 1);
			}
			break;
			case ((Topcode_cKhgukabZvDBOVLlPOrptA) 13):
			{
				Tassignableresult_JFgO3TudAWntzWI8Fmx4Ag LOC23;
				LOC23 = (Tassignableresult_JFgO3TudAWntzWI8Fmx4Ag)0;
				LOC23 = isassignable_KOwAOGLDd1pP23MT9bwF88w(NIM_NIL, n0, NIM_FALSE);
				stack0[(sp0)- 0] = (LOC23 == ((Tassignableresult_JFgO3TudAWntzWI8Fmx4Ag) 2));
				sp0 += ((NI) 1);
			}
			break;
			case ((Topcode_cKhgukabZvDBOVLlPOrptA) 14):
			{
				Tsideeffectanalysis_39b55cGxMJkG5uRuPt6svRw LOC25;
				LOC25 = (Tsideeffectanalysis_39b55cGxMJkG5uRuPt6svRw)0;
				LOC25 = checkforsideeffects_jZznHOk1Ngn1sF9cFDMhw5A(n0);
				stack0[(sp0)- 0] = (LOC25 == ((Tsideeffectanalysis_39b55cGxMJkG5uRuPt6svRw) 1));
				sp0 += ((NI) 1);
			}
			break;
			case ((Topcode_cKhgukabZvDBOVLlPOrptA) 15):
			{
				Tsideeffectanalysis_39b55cGxMJkG5uRuPt6svRw LOC27;
				LOC27 = (Tsideeffectanalysis_39b55cGxMJkG5uRuPt6svRw)0;
				LOC27 = checkforsideeffects_jZznHOk1Ngn1sF9cFDMhw5A(n0);
				stack0[(sp0)- 0] = !((LOC27 == ((Tsideeffectanalysis_39b55cGxMJkG5uRuPt6svRw) 1)));
				sp0 += ((NI) 1);
			}
			break;
			}
			pc0 += ((NI) 1);
		}
	} LA1: ;
	result0 = stack0[((NI)(sp0 - ((NI) 1)))- 0];
	return result0;
}
N_NIMCALL(Tnode_bROa11lyF5vxEN9aYNbHmhw*, evaltemplate_xOup9aA9cJdjuapy5rkGnHBQ)(Tnode_bROa11lyF5vxEN9aYNbHmhw* n0, Tsym_AXG7xcvKqaxY6koRX1xkCw* tmpl0, Tsym_AXG7xcvKqaxY6koRX1xkCw* gensymowner0, NIM_BOOL fromhlo0) {
	Tnode_bROa11lyF5vxEN9aYNbHmhw* result0;
	Tnode_bROa11lyF5vxEN9aYNbHmhw* args0;
	Templctx_og0XwfDLUlsX2HzoVx0s3Q ctx0;
	Tnode_bROa11lyF5vxEN9aYNbHmhw* body0;
	result0 = (Tnode_bROa11lyF5vxEN9aYNbHmhw*)0;
	evaltemplatecounter_jPNQnHnAL0wozxUYkowWUA += ((NI) 1);
	{
		if (!(((NI) 100) < evaltemplatecounter_jPNQnHnAL0wozxUYkowWUA)) goto LA3;
		globalerror_VpilfPWbplGz6ny7O9cfr2g_3((*n0).info, ((Tmsgkind_IGAWgv9aR2KqPKJfPZPEWaw) 187), ((NimStringDesc*) &T_N0xGjswvcjwwH43PvVNJAg_2));
		result0 = n0;
	}
	LA3: ;
	args0 = evaltemplateargs_dw0jfqH3BrkE5IDOxRZp9cw(n0, tmpl0, fromhlo0);
	memset((void*)(&ctx0), 0, sizeof(ctx0));
	ctx0.owner = tmpl0;
	ctx0.gensymowner = gensymowner0;
	initidtable_9cUS2oaKn1IFXKjLdglPZHQ((&ctx0.mapping));
	body0 = getbody_eMf5HLowckpW9cDxAV9bNIZw(tmpl0);
	{
		NIM_BOOL LOC7;
		LOC7 = (NIM_BOOL)0;
		LOC7 = isatom_NyXYMHACmbtWJZnWqE9cJCAparampatterns(body0);
		if (!LOC7) goto LA8;
		result0 = newnodei_PIqgSH9b0m7nFpOyXf9cpz5w(((Tnodekind_G4E4Gxe7oI2Cm03rkiOzQw) 37), (*body0).info);
		evaltemplateaux_AHGrgjfRCGeqRF8aKpZ9apw(body0, args0, (&ctx0), result0);
		{
			NI LOC12;
			LOC12 = (NI)0;
			LOC12 = len_CdME9baJhvveuPEDZE9bXoxAlambdalifting(result0);
			if (!(LOC12 == ((NI) 1))) goto LA13;
			result0 = (*result0).kindU.S6.sons->data[((NI) 0)];
		}
		goto LA10;
		LA13: ;
		{
			NimStringDesc* LOC16;
			LOC16 = (NimStringDesc*)0;
			LOC16 = rendertree_ppjdh9aQ5L0SGPF8yz1gZ9cA(result0, 4);
			localerror_VpilfPWbplGz6ny7O9cfr2g((*result0).info, ((Tmsgkind_IGAWgv9aR2KqPKJfPZPEWaw) 1), LOC16);
		}
		LA10: ;
	}
	goto LA5;
	LA8: ;
	{
		result0 = copynode_lz8T1F9c0YwEOpUnrAUYgjg(body0);
		{
			NI i_SNYOzy7RzNR8C5fM3A5wWQ;
			NI HEX3Atmp_nYz53CxK4Lv8EpLGchkEWg;
			NI LOC19;
			NI res_yGU1MAzLpa1QBpOBXdb9aQw;
			i_SNYOzy7RzNR8C5fM3A5wWQ = (NI)0;
			HEX3Atmp_nYz53CxK4Lv8EpLGchkEWg = (NI)0;
			LOC19 = (NI)0;
			LOC19 = safelen_CdME9baJhvveuPEDZE9bXoxAsigmatch(body0);
			HEX3Atmp_nYz53CxK4Lv8EpLGchkEWg = (NI)(LOC19 - ((NI) 1));
			res_yGU1MAzLpa1QBpOBXdb9aQw = ((NI) 0);
			{
				while (1) {
					if (!(res_yGU1MAzLpa1QBpOBXdb9aQw <= HEX3Atmp_nYz53CxK4Lv8EpLGchkEWg)) goto LA21;
					i_SNYOzy7RzNR8C5fM3A5wWQ = res_yGU1MAzLpa1QBpOBXdb9aQw;
					evaltemplateaux_AHGrgjfRCGeqRF8aKpZ9apw((*body0).kindU.S6.sons->data[i_SNYOzy7RzNR8C5fM3A5wWQ], args0, (&ctx0), result0);
					res_yGU1MAzLpa1QBpOBXdb9aQw += ((NI) 1);
				} LA21: ;
			}
		}
	}
	LA5: ;
	result0 = wrapincomesfrom_YbfXH27kQZj5oIysAn7Rfg((*n0).info, result0);
	evaltemplatecounter_jPNQnHnAL0wozxUYkowWUA -= ((NI) 1);
	return result0;
}