From 3af03988547fd9748a79bd8dcd286fb56a87ab1b Mon Sep 17 00:00:00 2001 From: hm19 <hm19@inf.ufpr.br> Date: Tue, 3 Dec 2024 16:05:38 -0300 Subject: [PATCH] funcao espera parametros certos --- MEPA | 54 ++++++++++++---- compilador | Bin 54640 -> 54640 bytes compilador.tab.c | 159 +++++++++++++++++++++++------------------------ compilador.y | 35 +++++------ 4 files changed, 138 insertions(+), 110 deletions(-) diff --git a/MEPA b/MEPA index a8c5494..474ac52 100644 --- a/MEPA +++ b/MEPA @@ -2,22 +2,52 @@ AMEM 1 DSVS R00 R01: ENPR 1 - AMEM 1 + AMEM 2 DSVS R02 R02: NADA - CRVI 1,-5 - ARMZ 1,0 + CRVL 1,-5 + CRCT 2 + CMME + DSVF R03 + CRVL 1,-5 + ARMZ 1,-6 + CRCT 0 + ARMI 1,-4 + DSVS R04 +R03: NADA + AMEM 1 + CRVL 1,-5 CRCT 1 - ARMI 1,-5 - DMEM 1 - RTPR 1,2 -R00: NADA - CRCT 8 - ARMZ 0,0 - CREN 0,0 + SUBT + CREN 1,0 + CHPR R01,1 + AMEM 1 + CRVL 1,-5 CRCT 2 - CRCT 3 + SUBT + CREN 1,1 + CHPR R01,1 SOMA - CHPR R01,0 + ARMZ 1,-6 + CRVL 1,0 + CRVL 1,1 + SOMA + CRCT 1 + SOMA + ARMI 1,-4 +R04: NADA + CRVL 1,-5 + IMPR + CRVI 1,-4 + IMPR + DMEM 2 +R00: NADA + AMEM 1 + CRCT 3 + CREN 0,0 + CHPR R01,-1 + IMPR + CRVL 0,0 + IMPR DMEM 1 PARA diff --git a/compilador b/compilador index 4dbcf1715206b3c6730c7da8132228ccd1f1e9f4..9ab823f80184abcdeaecd79c98b052f8d40dbdf9 100755 GIT binary patch delta 6758 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 V$rmr`bAm>LLF#sF=Dd{73;^ilr?&tA delta 6649 zcmeyciuuDT<_#Q-oJ&&}z+mZSLB_+3B0_K5yuZ2rT35fxv?u3d>h*u^yt6mIVDjVV z4@+WT@aW~ep9rFCQ#ZQ`*$Xm8Y;INN<6-pNJVjrKkMYvv<+gE*Wt-XT0vP#)BpDc* z_wM-h|35Q-%NL2wsrFrrj2)9dI0P^%Om=iMmvN9}V0igT7-XDjULXU*evms}Xn{np zOrGLs$!InCoTH!B90>-7mu?_s-J*BuK&o30{QLjkqw|_a=kXVD1_+T})2#sv3?R`A zkRGAQVNUvDzhoI0I$29W8oODoKvd`P7pErAc9LXdnY`6WUG%jw1H;QUAqIxyth{v~ zConL)ET8<*$%JjPI0M5=+sWF_`iw^=M>`uTPm*U~c+KO{YuoS7!0;jnWOX;Ib}htC zIgmL!C$D#oW!yHI*F~Jsd9tcYtfYfD1A|BN5ruBnk{Skv<^znKtl2dT3@^`4p6#-p zv0}2ft0d#%$*HcEdQzec3?ALA>eUeQq!bw#UT)<FiHS;s#CnnaeRlF0R|&==lb^b_ zYWazP6tPBEK{URW0QtBP#Or2t15usFUsx(IFuc4nd5YUk#?r}t?vjiPCTF-?CWwQ> zl~tt@qE%d;f#KyQUQk$ARx&U!GB7Z_T+GYB(9Nn<$-vP3g0YiTv66w|Wj|QSqY7wn zHSmHQAo{EV5f_lynK7BsLzeO3WO)w>(F>X&MXY@wMV-fAG|DkByp);j;~~MwJUP`v zN$LR)$l7$Mna5cRp{$q3ColAnU|ctOmq)tJLLo?KzO>~5n>M=~<nUu2y|y3A85mw< zfP%1-b!j;R!%OMOzMkUj9a;<wFaL2*&h|`YoId%Yr!r&l<gcE}LjK$!x7zl4GBCV2 zp~=AT(r&VrS00;!00YCzQ<LX;iPxKJGBCWh^5|yOD`Q~jcHn6K!C1oY(akCk<1&}Z zcyx>YC<Qx&vkXKrKvSidI*7;mr4*`@xm3`j*YvLkERiqg2l;hnDKz}txxmVg!jv<X z2z%6bvu=a&nfY54AxfG-wsjtVQ6>%2AzB0C_O>=4@`E1OX3=O22~|)`cd{mdB)VBa z^4$R<-K<)r3=Ecs_*<qhfDB}HhFQtTSUP!&w|PCI1_Q%uPmgZaA0=?VSatIrDgi5h z3=#|w@qi}HUeizRp!hhx1LUz6OOO8l50mOV{$iUt14Fmy4v5Z`AgZ@Ozysp?&Wj$M zpFDa^zai^SJ^DWpWB|l_#~|f{Egu8J%f}ob>qULRh9GB)|EgdK9Sn(Yf*^;n8iORd zS;6w%4iep>zb4=J5v_;tMc)>K5(Tn(e5wo#FEcqnIp9DsH2ZEZ21VZ2Vvrvh7+!iq z+_DivZ!*L!6EGyAAa0oslIUigP|U!=-~o0_9M~~n4c(%FAZcj8LUL1)3aH#*2RTLs z<``+PV<KUWS<epgf$1DKSW0^j$tQn`K;8%Clb~V-h8HIVKwMTfkQLpm|BDzHx;;cZ zx>>&#F)-A32k^jRt=IIbD@Y|YLbo4Aicn~L^z$$<ytIT^s|~ld5+te&5fz1tCWAzI zA)+jBQD2bgcQ&xYKf5y2Ln{Jvknlr@@FQ24e-uHYry-&j;iB9i(X9~C18~u=+zbpa z=R-u-!$t3dL_66)p{P;Bz|j1I5tKP?r?@gOy!fudz)=4(7ouekT+3RJmT<6^Z-odg zNgyppL6Kq&(a{grQ4P|e3K6Y?i>87^`5~gYa8XcE^ztVwDB-e(7c$f{cyxjyYHc9{ z!wVHq`QOQ!SO}JN0#RVe2_VTdB?g9<2f-Re)j?7yspX~;NRKERhQtLvP?WOrf+V_G z!SbyKz+rITg@NHk{Z~*$mc<GRATEe+`CIoviicYT;6kAFK&gjEH|rS?51eiefmq1N zX1xo@4rsDzIf$8TVz?L>Ub2GS&e{Uf4Ju%nK*rXymV)?TbF)D#WOE~s&DF(XE-T2~ zbu6I7WNQoZjt0m#b3p>#tTG_uAQpvtbhGk;xe}lh0P@bid~h~U^5|y$0%9WDYlv*` zw#kiw!p?o13=A*LAqH;)sdwOjhRX^N5A6PVAQrMY&zzCMB>`lPhXu%-hs>bJVod<4 z2Ro3z^&CXV7bFBW%o)T&Hmn=jFjkOZ^>;ZyjTvT8+^OX=Fti>hRe|SaQImX7u$TrS zYdf(2|9^0k#@(5L;l(9IkP2u42+iPKAR|pcMv7j~LrC|UZg4>IOU3^G|2?|vMOPvz zfs|Ua<Uy{Pn+GjDrywclH7$mi@j?w`$pt1*1yKx9050@<O?@B=AQg%T*b-4!Boz=l z%)oY7=5atRF_`={NSkrPWW``%%Ngtp3@@FSK;bKTBNyxeu-OouQSxAk{Sb*7L`CW- zKUpqRi_sEfM!h1q%!1Ujy`~ZNV2{7x2ARB-5o~}r!~mq0=~+3jU0{)3Qx&M5>ud}R zFB=&_9#w&80o&PY`qvI@D8!>j_ku!G^ji+th#Dz`v!2U>Li1G))T0k4yM$=hCxVp2 zGCwrhJVC{k=xm4yU=R12mLS_<1Jcwjnv0|Y5+re8D-vN=MC33qyj%s&|Dp~M#b75x z6d#ghU@-9L7FCDHfGvW^tds=@3?D=SNy~p3P{`_a?7=J*3P1${q($J-Yr5PP93(HI zSQ!{5SBAzi+D^V6D#s`{`CF(n<FCn9VOojnEf^U1x3e(KcrDT0dgIss{~j|udPNvK zdRf1kLuEQ!L4A;yr=I=)KjAaK+^=rdxGYc^{;$NWn>9EKlu0U7yIDQ67#M6d85tPr zCAwK{vKSaZCW-b>J{qPO`7{$6+;=iT5n{W@j)CC?gDj|jvj^0_DYffn1*vI0P|x4Z zdOH(jW~tW8I8ZdVo&dS3SM*^f0|U6|E&^!|eER?Yan`ky-NO|bwI^qWyD+v*UKcLI z=sEdxxS4E_B?ANhHWmT?eFr?cr~df$|36qKC_G-2OqPo<lir^J3fxw(lt6du0gw`i zKVMDGkI;5Bv1MR*ks{5&aJ==%umAs<7(l7UBLm{^&~8@S43HZ^{x;4)^0yku*cl$Z zqLq_xM=0=1WI)|~+lGPRMaN{WNP9UhP>5r?Z7xWK&g04Q5t5S|B2{GOZ~Onh8*H~n zx9^V>4`Uux4F(2=64n=@+b180)OI^!%fJ9h?C-Yy|G(q^|NsAAo&%>c*9RWW2RJ;s z89aJTcR`cDs_md2pX(2g=Gq?&rD7hvwu?YM44!NlC0y?hmSmlg1_~3_i6E-;_=_k; zP%~|L8l;(aoOLCXwO@dNf#HQTM9&<M;%?TdAgc5Di)?X_o_-XSAGd+5W_1E7>1MSC zQJu$MID)!$-L5}8I$7Bkq%ttP_&E7wlw$qGR0al*)&r$d9=)dTZNQ1;6)0p5LJZji zk_LOhz@wXW35eGn`oW{u^b|;KC$zp)0V(cgZ3Rhp9)FR#?f?JRMjqX)B_M%r-wz($ zp+7u&P3I%)`LGpKV)(NLg4A>#e_^=o|NjXm4}%hXs7L2hkLEW59-Xy6x<%)tfJ5mZ znDPaglZb52%B}zZ?*~Q33;S*V|4;r~s5|*-w2EvO$oNjz7arZNH$WZiRa^f5_h>%A z2x8|=R*R8m)SK)U6TozL^W=50l8lcgZ;CNvTs`?^%wfjklh?*dF`k)xBG!y?>gNBk z%#4hVlbPd9n0Pi#wv6A*7(V%JybPb!29Wzf;d%Up-iFC166GeFCR}5*n9P%?!Nk9Q zvRR^>-1~L^|G!T0=yv@9?v62+Mu6C$gwlEZ#ihwbi5iS6C(lll=j~jFFsyd+@x*tG zeUrB(IdLnS!qVKs&CJRB7@01unS3Wzaq^QCJI2Dv%BkBKcTT>Yn!p$_*(U9IeS#qa z!;9#Z|Np<-2I_qE+O~oOyjFsWE!)W;wjGGw{D#A$msQ7zfg!-Bm-n0@1A|X5D~R&w z<vn8vN&=#%!IbGKFlBqe5ax<Fu>K<g9=*2CAoJd>0J*zW0#w|0%QJX%wrc$Q|No^N z*m~B>Anl#41|Zp9*3+90rn@sTwoc~ER8~v@4MlXeTKxO}|FyhFFKY}EpWmaGHDt1H zrlPL70RzK6E>IqWrL^MZ|Np<d53bx;WgvQ>#(&&AJClb|m_?s~Vc#@lEmo6vWyK3m z(_>(GE#T41S_fjVd-Sq)PS(jb<qC&!gC=KZYbfjLF)-|tL)PxM6cl`|6F{EmJpO`z z>EvzM@{E3yuVpJMoLch#|E{SZ)tZMqdLe3hO?T=-Y5|_5lO=Ps6dJH9DugOJv}E$b z0u^CbT?U4ICqO2_d>S=*R*tTM2!^=SlK=l-wt-r4y{xRdlesdLl-hMb79s+(9*GYM z%yON{ewhlfQ99_MIc+gG`ap5k?I6*5pp?_2m$h1lf#EeMfGR-7^zJqI4=PR$di07G zgA4#U5>gCCEdKxh<q=S$ua`A-@`_w##iQD&4%v&u2RUTx<TtsB!ZWnd-En2JLLMul zWSbUx-0fNT|Nrq;mB|OPBq!J8i%x!*B`~=rUs^;$3mTgYAO^^>+**@Y=bLcd1dV}! z_*W*s%-2v}uZbR=7Z#vI=fnlz=)5pFq(E8TX92e8wAKW9>iCPk$<qq7<(aUm`K$p^ z<1+a{fvWIv4fM#oGg+cgOJ*j9`26|*|G(z*=w;QI99QVgouvWGXa<wF6lzI*Rbyay zv0xr3l3YPm5(}(Kx-<Dlp|@<nd{E4|{_yB_eE}-h3P38MWt_?6gd%yyFOwUJrpw37 zg_r;>cw}MR&f_lx=l=gcd0mm%<O%VD-hv*zwy!`|f>gY02BpScTSj#Th8H{_ExopX zL6Qt$wy6tf+@{yoNgd{753soHO^}*9lUEeW^6<gsMCMMuSS-Oe2_!dl&j0@>5A(}2 zOe&EMcJyIjc=2Wq$bF`!J`4=|LAm_}_uT*g4G(xUAK^I6FYmwrsuLW;eR^#ddoVCK zhIw{ga}4$D{OTCu*!d^aqgQu|2LnT}kLF*G<~JNK)^E-$nZ!N$0gu9_hCiaL8T<eL z&zQ_OO}rk=0`YL*muvq2|FP!(e~>z(wg3NbTl@dN&N>JmB!-L^t^5Cf*LsND><$0_ z@7?(S|Cx;t{)3JG|G$T_k@VF658m|uf6k`=|NA%n|G#1rL@`LgK_oVaPYgENjL;8K zAF}!Xf5R>R|1aJ0|G&mogj~nA|Nq&x|NpPDz5f6IMcWY)AWa9Le6t<@|NHFt|37KR z|Nj*`{{QdW@&Esl9smFD+VTJYg&hz*&vyL(FR>HC_S*UXe*%<Uw)6l0bvyt6f3X`P zXT9hD|M`3V|JU97|NpMN5HXNl?^yQ!|9^Dz%<1(k^$+*`|IfqD!0=)J|NlDd3=Go_ z{QvL6&cJZ>!2ka_><kRQ4*dV$!_L6);PC(d8`v2bDv$jCe}SEWVa}2N|39!ZFl;~i z|GxkS14HKV|Njj*7#PA%{Qn=o!N6dC^8fz=4hDw*r~m(-!ok2Gb^ZVUEgTFC_SgUa zzrw-5aN+v@|6e#5lo%pz{Qob)$-p3T^Z$PnP6h^*oB#j&a56B2-2DGPg_D8d$mX4M zxLIY{Wf>S4T=@jrn4EdpnE%P}uyZiTFfcI4ure^5o&0d2Jma3pjEm$MohB<Tl4neu z?6^ptF>P|<B4tL6$*qgz85d4ox=5aJ$>gJp<QeBre!57W(Qq>BVtJ;2`zNa{mSfyM z*>$lpWAfz8#qx}ClRFp7GbT@7xmcd@%H)%a<r!@zzg#RYdE@;5|7?&3A(#|lU|@)0 zXJEK6S#gOt(~I+yt(Lek3T$p%($2v+V>9R4^(>4tHt*bcosDtA<cT}P8J}%lxr3dN zF=_I~o%)R2lOOKXXEdEGxJ#dL&Sb}3<&1kK@7(3is4|&xw>#5^;>ljS<rvu~XYN*K zoUwW0?(IyBYbJZ{yUuuQvf}=JMy1Ic_v<q%On$ikIwSMsod?_**G^_UD9*TWvgAR1 z$>s#G`xrKXhTs_(7~ZfmFbFa5F`S;9c(7d3H69|X451hdIUuqbn?D|8XJmR%y!qFm YYkZ8QlP_M>=bTXjQ8i;T=cROJ0ImXmivR!s diff --git a/compilador.tab.c b/compilador.tab.c index 3499d0d..8072349 100644 --- a/compilador.tab.c +++ b/compilador.tab.c @@ -567,11 +567,11 @@ static const yytype_int16 yyrline[] = 234, 238, 210, 246, 247, 245, 255, 258, 259, 263, 262, 272, 272, 280, 281, 284, 294, 297, 298, 299, 302, 303, 306, 307, 308, 309, 310, 311, 314, 314, - 318, 319, 322, 322, 353, 353, 396, 399, 403, 402, - 415, 415, 429, 432, 433, 436, 445, 448, 451, 456, - 459, 462, 465, 468, 471, 474, 477, 483, 489, 492, - 495, 498, 501, 501, 543, 554, 556, 563, 556, 589, - 596, 598, 601, 601 + 318, 319, 322, 322, 353, 353, 395, 398, 402, 401, + 414, 414, 428, 431, 432, 435, 444, 447, 450, 455, + 458, 461, 464, 467, 470, 473, 476, 482, 488, 491, + 494, 497, 500, 500, 542, 553, 555, 562, 555, 588, + 595, 597, 600, 600 }; #endif @@ -1811,38 +1811,37 @@ yyreduce: { if (l_elem == NULL){ yyerror("Procedimento não declarado"); - } else if (l_elem->categ == PR || l_elem->categ == FUN) { + } else{ // Gera código para chamar o procedimento empilha(l_elem->ident, proc); } if (l_elem->categ == FUN) geraCodigo(NULL, "AMEM 1"); - num_param = 0; // Reinicia a contagem de parâmetros reais + if (l_elem->categ == PR || l_elem->categ == FUN) + num_param = 0; // Reinicia a contagem de parâmetros reais } -#line 1823 "compilador.tab.c" +#line 1824 "compilador.tab.c" break; case 65: -#line 367 "compilador.y" +#line 368 "compilador.y" { - if (l_elem->categ == PR || l_elem->categ ==FUN) { - char buffer[50]; - mostra_ts(ts); - desempilha(buffer, proc); - l_elem = busca(buffer, ts); + char buffer[50]; + mostra_ts(ts); + desempilha(buffer, proc); + l_elem = busca(buffer, ts); + if (l_elem->categ == PR || l_elem->categ ==FUN) { // Verifica se o número de parâmetros reais bate com os formais - if (num_param != l_elem->info.pr.quant) { - char error_msg[100]; - if(l_elem->categ == PR){ - sprintf(error_msg, "Erro: número de parâmetros incorreto. Esperado: %d, recebido: %d.", - l_elem->info.pr.quant, num_param); - yyerror(error_msg); - } else if(l_elem->categ == FUN){ - sprintf(error_msg, "Erro: número de parâmetros incorreto. Esperado: %d, recebido: %d.", - l_elem->info.fun.quant, num_param); - yyerror(error_msg); - } + char error_msg[100]; + if (l_elem->categ == PR && num_param != l_elem->info.pr.quant) { + sprintf(error_msg, "Erro: número de parâmetros incorreto. Esperado: %d, recebido: %d.", + l_elem->info.pr.quant, num_param); + yyerror(error_msg); + } else if(l_elem->categ == FUN && num_param != l_elem->info.fun.quant){ + sprintf(error_msg, "Erro: número de parâmetros incorreto. Esperado: %d, recebido: %d.", + l_elem->info.fun.quant, num_param); + yyerror(error_msg); } // Gera o código de chamada do procedimento @@ -1851,11 +1850,11 @@ yyreduce: geraCodigo(NULL, buffer); } } -#line 1855 "compilador.tab.c" +#line 1854 "compilador.tab.c" break; case 68: -#line 403 "compilador.y" +#line 402 "compilador.y" { char buffer[50]; desempilha(buffer,proc); @@ -1863,20 +1862,20 @@ yyreduce: val_ou_ref = l_elem->info.pr.param[num_param][1]; empilha(buffer,proc); } -#line 1867 "compilador.tab.c" +#line 1866 "compilador.tab.c" break; case 69: -#line 411 "compilador.y" +#line 410 "compilador.y" { num_param++; // Incrementa para cada parâmetro real val_ou_ref = VLR; } -#line 1876 "compilador.tab.c" +#line 1875 "compilador.tab.c" break; case 70: -#line 415 "compilador.y" +#line 414 "compilador.y" { char buffer[50]; desempilha(buffer,proc); @@ -1884,20 +1883,20 @@ yyreduce: val_ou_ref = l_elem->info.pr.param[num_param][1]; empilha(buffer,proc); } -#line 1888 "compilador.tab.c" +#line 1887 "compilador.tab.c" break; case 71: -#line 423 "compilador.y" +#line 422 "compilador.y" { num_param++; // Conta o primeiro parâmetro real val_ou_ref = VLR; } -#line 1897 "compilador.tab.c" +#line 1896 "compilador.tab.c" break; case 75: -#line 436 "compilador.y" +#line 435 "compilador.y" { geraCodigo(NULL, "LEIT"); l_elem = busca(token,ts); @@ -1905,123 +1904,123 @@ yyreduce: sprintf(buffer,"ARMZ %d,%d",l_elem->nivel,l_elem->info.vs.desloc); geraCodigo(NULL,buffer); } -#line 1909 "compilador.tab.c" +#line 1908 "compilador.tab.c" break; case 77: -#line 448 "compilador.y" +#line 447 "compilador.y" { geraCodigo(NULL,"IMPR"); } -#line 1917 "compilador.tab.c" +#line 1916 "compilador.tab.c" break; case 78: -#line 451 "compilador.y" +#line 450 "compilador.y" { geraCodigo(NULL,"IMPR"); } -#line 1925 "compilador.tab.c" +#line 1924 "compilador.tab.c" break; case 79: -#line 456 "compilador.y" +#line 455 "compilador.y" { geraCodigo(NULL, "CMIG"); // Adiciona operação de cmig } -#line 1933 "compilador.tab.c" +#line 1932 "compilador.tab.c" break; case 80: -#line 459 "compilador.y" +#line 458 "compilador.y" { geraCodigo(NULL, "CMDG"); // Adiciona operação de cmdg } -#line 1941 "compilador.tab.c" +#line 1940 "compilador.tab.c" break; case 81: -#line 462 "compilador.y" +#line 461 "compilador.y" { geraCodigo(NULL, "CMME"); // Adiciona operação de cmme } -#line 1949 "compilador.tab.c" +#line 1948 "compilador.tab.c" break; case 82: -#line 465 "compilador.y" +#line 464 "compilador.y" { geraCodigo(NULL, "CMEG"); // Adiciona operação de cmeg } -#line 1957 "compilador.tab.c" +#line 1956 "compilador.tab.c" break; case 83: -#line 468 "compilador.y" +#line 467 "compilador.y" { geraCodigo(NULL, "CMMA"); // Adiciona operação de cmma } -#line 1965 "compilador.tab.c" +#line 1964 "compilador.tab.c" break; case 84: -#line 471 "compilador.y" +#line 470 "compilador.y" { geraCodigo(NULL, "CMAG"); // Adiciona operação de cmag } -#line 1973 "compilador.tab.c" +#line 1972 "compilador.tab.c" break; case 86: -#line 477 "compilador.y" +#line 476 "compilador.y" { if (val_ou_ref == REF) yyerror("Erro: tentativa de EXPRESSAO em passagem por REFERENCIA\n"); else geraCodigo(NULL, "SOMA"); // Adiciona operação de soma } -#line 1984 "compilador.tab.c" +#line 1983 "compilador.tab.c" break; case 87: -#line 483 "compilador.y" +#line 482 "compilador.y" { if (val_ou_ref == REF) yyerror("Erro: tentativa de EXPRESSAO em passagem por REFERENCIA\n"); else geraCodigo(NULL, "SUBT"); // Adiciona operação de subt } -#line 1995 "compilador.tab.c" +#line 1994 "compilador.tab.c" break; case 89: -#line 492 "compilador.y" +#line 491 "compilador.y" { geraCodigo(NULL, "MULT"); // Adiciona operação de mult } -#line 2003 "compilador.tab.c" +#line 2002 "compilador.tab.c" break; case 90: -#line 495 "compilador.y" +#line 494 "compilador.y" { geraCodigo(NULL, "DIVI"); // Adiciona operação de divi } -#line 2011 "compilador.tab.c" +#line 2010 "compilador.tab.c" break; case 92: -#line 501 "compilador.y" +#line 500 "compilador.y" { // Carrega variável l_elem = busca(token, ts); empilha(token, proc); } -#line 2021 "compilador.tab.c" +#line 2020 "compilador.tab.c" break; case 93: -#line 507 "compilador.y" +#line 506 "compilador.y" { char buffer[50]; desempilha(buffer, proc); @@ -2058,11 +2057,11 @@ yyreduce: } } } -#line 2062 "compilador.tab.c" +#line 2061 "compilador.tab.c" break; case 94: -#line 543 "compilador.y" +#line 542 "compilador.y" { // Empilha constante char buffer[50]; @@ -2073,11 +2072,11 @@ yyreduce: } geraCodigo(NULL, buffer); } -#line 2077 "compilador.tab.c" +#line 2076 "compilador.tab.c" break; case 96: -#line 556 "compilador.y" +#line 555 "compilador.y" { char r_ini[4]; sprintf(r_ini, "R%02d", rot_id); @@ -2085,11 +2084,11 @@ yyreduce: rot_id += 1; geraCodigo(r_ini,"NADA"); } -#line 2089 "compilador.tab.c" +#line 2088 "compilador.tab.c" break; case 97: -#line 563 "compilador.y" +#line 562 "compilador.y" { char r_fim[4]; sprintf(r_fim, "R%02d", rot_id); @@ -2100,11 +2099,11 @@ yyreduce: strcat(buffer,r_fim); geraCodigo(NULL,buffer); } -#line 2104 "compilador.tab.c" +#line 2103 "compilador.tab.c" break; case 98: -#line 573 "compilador.y" +#line 572 "compilador.y" { char r_ini[4]; char r_fim[4]; @@ -2119,21 +2118,21 @@ yyreduce: geraCodigo(r_fim,"NADA"); } -#line 2123 "compilador.tab.c" +#line 2122 "compilador.tab.c" break; case 99: -#line 589 "compilador.y" +#line 588 "compilador.y" { char r_fim[4]; desempilha(r_fim,rot); geraCodigo(r_fim,"NADA"); } -#line 2133 "compilador.tab.c" +#line 2132 "compilador.tab.c" break; case 102: -#line 601 "compilador.y" +#line 600 "compilador.y" { char r_else[4]; sprintf(r_else,"R%02d",rot_id); @@ -2149,11 +2148,11 @@ yyreduce: empilha(r_fim, rot); rot_id += 1; } -#line 2153 "compilador.tab.c" +#line 2152 "compilador.tab.c" break; case 103: -#line 616 "compilador.y" +#line 615 "compilador.y" { char r_fim[4]; desempilha(r_fim,rot); @@ -2168,11 +2167,11 @@ yyreduce: geraCodigo(r_else,"NADA"); } -#line 2172 "compilador.tab.c" +#line 2171 "compilador.tab.c" break; -#line 2176 "compilador.tab.c" +#line 2175 "compilador.tab.c" default: break; } @@ -2404,7 +2403,7 @@ yyreturn: #endif return yyresult; } -#line 633 "compilador.y" +#line 632 "compilador.y" int main (int argc, char** argv) { diff --git a/compilador.y b/compilador.y index 1821ddd..805631e 100644 --- a/compilador.y +++ b/compilador.y @@ -353,36 +353,35 @@ chamada_procedimento: { if (l_elem == NULL){ yyerror("Procedimento não declarado"); - } else if (l_elem->categ == PR || l_elem->categ == FUN) { + } else{ // Gera código para chamar o procedimento empilha(l_elem->ident, proc); } if (l_elem->categ == FUN) geraCodigo(NULL, "AMEM 1"); - num_param = 0; // Reinicia a contagem de parâmetros reais + if (l_elem->categ == PR || l_elem->categ == FUN) + num_param = 0; // Reinicia a contagem de parâmetros reais } lista_parametros { - if (l_elem->categ == PR || l_elem->categ ==FUN) { - char buffer[50]; - mostra_ts(ts); - desempilha(buffer, proc); - l_elem = busca(buffer, ts); + char buffer[50]; + mostra_ts(ts); + desempilha(buffer, proc); + l_elem = busca(buffer, ts); + if (l_elem->categ == PR || l_elem->categ ==FUN) { // Verifica se o número de parâmetros reais bate com os formais - if (num_param != l_elem->info.pr.quant) { - char error_msg[100]; - if(l_elem->categ == PR){ - sprintf(error_msg, "Erro: número de parâmetros incorreto. Esperado: %d, recebido: %d.", - l_elem->info.pr.quant, num_param); - yyerror(error_msg); - } else if(l_elem->categ == FUN){ - sprintf(error_msg, "Erro: número de parâmetros incorreto. Esperado: %d, recebido: %d.", - l_elem->info.fun.quant, num_param); - yyerror(error_msg); - } + char error_msg[100]; + if (l_elem->categ == PR && num_param != l_elem->info.pr.quant) { + sprintf(error_msg, "Erro: número de parâmetros incorreto. Esperado: %d, recebido: %d.", + l_elem->info.pr.quant, num_param); + yyerror(error_msg); + } else if(l_elem->categ == FUN && num_param != l_elem->info.fun.quant){ + sprintf(error_msg, "Erro: número de parâmetros incorreto. Esperado: %d, recebido: %d.", + l_elem->info.fun.quant, num_param); + yyerror(error_msg); } // Gera o código de chamada do procedimento -- GitLab