From 5ddc99bfd1e223ca365577192950bcffd7fcdfc2 Mon Sep 17 00:00:00 2001 From: HENRIQUE MARGOTTE <hm19@inf.ufpr.br> Date: Tue, 3 Dec 2024 19:22:15 -0300 Subject: [PATCH] boa sorte --- ALTERADO/MEPA | 49 +- ALTERADO/compilador | Bin 0 -> 54240 bytes ALTERADO/compilador.h | 2 +- ALTERADO/compilador.l | 6 + ALTERADO/compilador.o | Bin 1736 -> 2424 bytes ALTERADO/compilador.output | 2563 ++++++++++++++++++----------------- ALTERADO/compilador.tab.c | 2569 +++++++++++++++++------------------- ALTERADO/compilador.tab.h | 181 ++- ALTERADO/compilador.y | 88 +- ALTERADO/forward2.pas | 18 + ALTERADO/lex.yy.c | 300 +++-- ALTERADO/stack/stack.o | Bin 2056 -> 2896 bytes ALTERADO/ts/ts.c | 3 +- ALTERADO/ts/ts.o | Bin 11248 -> 11240 bytes AvaliaTrabs/MEPA | 16 +- AvaliaTrabs/compilador | Bin 54640 -> 54240 bytes AvaliaTrabs/forward2.pas | 12 +- ORIGNAL/compilador | Bin 54640 -> 54344 bytes ORIGNAL/compilador.o | Bin 2736 -> 2424 bytes ORIGNAL/compilador.output | 2150 +++++++++++++++--------------- ORIGNAL/compilador.tab.c | 1016 ++++++-------- ORIGNAL/compilador.tab.h | 100 +- 22 files changed, 4426 insertions(+), 4647 deletions(-) create mode 100755 ALTERADO/compilador create mode 100644 ALTERADO/forward2.pas diff --git a/ALTERADO/MEPA b/ALTERADO/MEPA index fff6568..5d41183 100644 --- a/ALTERADO/MEPA +++ b/ALTERADO/MEPA @@ -2,53 +2,24 @@ AMEM 1 DSVS R00 R01: ENPR 1 - AMEM 2 + AMEM 1 DSVS R02 R02: NADA - 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 + CRVI 1, -5 + ARMZ 1, 0 CRCT 1 - SUBT - CREN 1, 0 - CHPR R01, 1 - AMEM 1 - CRVL 1, -5 - CRCT 2 - SUBT - CREN 1, 1 - CHPR R01, 1 - SOMA + ARMI 1, -5 + CRVI 1, -5 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 + DMEM 1 RTPR 1, 2 R00: NADA AMEM 1 - CRCT 3 CREN 0, 0 + CRCT 2 + CRCT 3 + SOMA CHPR R01, 0 - IMPR - CRVL 0, 0 - IMPR + ARMZ 0, 0 DMEM 1 PARA diff --git a/ALTERADO/compilador b/ALTERADO/compilador new file mode 100755 index 0000000000000000000000000000000000000000..f0a4fa320f79e0c0bfcfb12b4dc4b945e5afe584 GIT binary patch literal 54240 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 literal 0 HcmV?d00001 diff --git a/ALTERADO/compilador.h b/ALTERADO/compilador.h index 5e8d4e8..ddd0d4f 100644 --- a/ALTERADO/compilador.h +++ b/ALTERADO/compilador.h @@ -16,7 +16,7 @@ typedef enum simbolos { simb_program, simb_var, simb_begin, simb_end, simb_identificador, simb_numero, - simb_ponto, simb_virgula, simb_ponto_e_virgula, simb_dois_pontos, simb_read, simb_write, + simb_ponto, simb_virgula, simb_ponto_e_virgula, simb_dois_pontos, simb_read, simb_write, simb_forward, simb_atribuicao, simb_abre_parenteses, simb_fecha_parenteses, simb_label, simb_type, simb_array, simb_procedure, simb_function, simb_goto, simb_if, simb_then, simb_else, simb_while, simb_do, simb_or, simb_div, simb_and, simb_not, simb_igual, simb_diferente, simb_menor_igual, simb_maior_igual, simb_menor, simb_maior, simb_mais, simb_menos, simb_asterisco } simbolos; diff --git a/ALTERADO/compilador.l b/ALTERADO/compilador.l index 0629b8c..ff7b256 100644 --- a/ALTERADO/compilador.l +++ b/ALTERADO/compilador.l @@ -155,6 +155,12 @@ function { simbolo = simb_function; return FUNCTION; } +forward { simbolo = simb_forward; + strncpy (token, yytext, TAM_TOKEN); + IMPRIME("forward "); + return FORWARD; + } + goto { simbolo = simb_goto; strncpy (token, yytext, TAM_TOKEN); IMPRIME("goto "); diff --git a/ALTERADO/compilador.o b/ALTERADO/compilador.o index 1de430514a29f2c3cac0f71bd10f5c6e8454f918..9543fbd891966276d2f63ea3267eff5c5b203fca 100644 GIT binary patch literal 2424 zcmb<-^>JfjWMqH=Mg}_u1P><4z+l0KU^{@B4h*~uJPe^8oliZQ-w1eg*8cG5EdAio z%?gtBXgyG>;L!_VcOHYYj=uoQc0weYYkx458pE`7hko$r<%P(f^XNRj1H^==hZ@=m z(f-;9uEqC*M|bECk6u%dT6}sYoIH%|)NWC*2B^8+zF3Xe|NsC0|6m7z6hm-1gRg6V zBZC46s1|cEs1{o(s1_@5F}M~L<tyYRD&%D5Wh5%7rYPttfaDq6ot>=|G+a`XG86L@ z42|@R^bB+jO*ElQ1`&v{42)Gl42%^5jM6;p91|EB7-SeA7$m(KL^$#Zv@tpJvN0{= zVdsFz*?`0u7#OTUG)x}E#)Cm|%fj&SKQ<-ISYw`nftdjuT_{@k85kG@8Cc+AFqSw} z9L9&y@=$RBs16vd3Kds?igQ3|4F(1VAtd*J!+?Q-!I*)80j3wK6iiv-5O>5O?g2F) zW-d4k85kHsaHtQ*As&ZAoFO?sw;(eoF(tpqO)r_DI5RgXKPR7|C^aWBIWeE1BtJVf zk0GsqAw9Jy(K$aQGd-UnEx!OPR+O1nlE#phmQz}s!H}6-P?VXQ3QAoJc{vQlB`K*z zMGUDGnI&LvGYCT{1||ju26hGphCiS*`~UxcP<Vr+K;q0u;+h~q1_rQtkoZ5SdPAr< zD84w6)LTHsLFOQv?}kG>5J?<lJ_v(^5<vt5131NSA(@{66-PI}04ff04>ywfN~k!x z`VJ&<kexhG{!}OpG6&h-IZ$zQbCy8GLF$q1-3b*3sRxx&uy8(rB+iHA&eKTZAoqaF z8wLi38&GkO`N-~hgd`5iTQKus`2u7w2t$=IK+0f9Jc7hw>6k&UxH7jSF^NI1xTFX| zXTVsX#HUx1T2aEFmy%eL$e@>0T+E<Xln>z~=jZ08=9Mt$<>i;8>bd)c>K2zICTBC~ zfwiS(#HSS{=BC2zr<4Zy3se>%RV!d4Vg7ms<{=1>S_F@QK^mHtVCrFV2S9<%z`*bT zssR+nASSF_k$@^xV_*Q6E>PuAQ3eJzkYYFw!9W+*VPIeYnTf970ICpFej#*YmRX?u z22u)&J7je*{RYT_P`4rrfyz6OespySAVCHO22l7StA`4M{R|R!!eS;!yaA>V#6iO7 z!l3dHB!=#OnEnVPy&xtitUxpj2jPgn1<<Mn<}XnEf%JkfNG~k@u-OfgzX6h9U|@i` x1C)nBc@14ZsEk98JCObes9-XPgM^{R!bJobK=mS=3ujz_x*t~F!6eZ20|1K$N&)}? literal 1736 zcmX^A>+L@t1_nk31_;5zz`(%4#K6Fy01{zfkYr$B=m5(?_~_&csGJ5!4+8_k0w|xI zfq?;pLFR$<#K)JUR+NBP5F8&L;u;YGVIz||Q2ikDKt`TmW?+y9DPUn}08ua;AD^6` zo1349;JY}6IKp@ccW@wt7?_dRP;1~K@$t#UB}JKe=}-}L_rcs{0F@6xHjIIR0pwPw z6qo|LuOKnGB)&ASJTosPKHkR#ECD4Fpbl_=@;jIr!0tQ10yhiANFxRY1_@{!F);8m zFfj6ib%GRu#4oTgFo=Spjg5g}1p@;EHv<Dh09XYB11AFngPhC*WkaQirv5WCUi@3l zyz=j1hKUQB<$o+>mjA)Qz%YS>(cvctBg4lR?DM5O7#YkN85l$u7#JonFfdGHWMG(} z$iOg>fq`KPNG$^+!%vX>istwqFg-7zdO-3o_!)jOFgpBP!5shNB{RcB4TyTU887%9 z!15sT1Q-}Zz<RhLdR8^Z|A6V!Vr2NK!3wqup_dz>7vzS&)y^ybGc!&+z#M<=|6zuU zf2)~R{%wZ%4P-9JUm&-@*c^-wJ6|z#tOB_m<Th+}FfcR-f!yZn8sNxK&Y%DSs>NIk zs>N0cs>KRi46a2*`3iZ73OSj18Hoz2DGIs@AbI3SxC7z9vJHgCz`y_%hs7y|yapo! z11|%Et^y+ig8&1At_&js11kfAj|7Ca{lmb(AjrUw^8-T1eqdl=;9+3Mc>|$iPcSer z@G&sx9)Y9}pFIo^b9OK=Ft9K%_-ujDwsWBJQy{c$4^&?Vgzp2&q#*li7{KY-rvgIT zW<cc=AhazgGjK96_<+(sCj*164Ffn;>smnal8*_5wgu%kMg|5S9Z1@@1*LV6K2Rb9 z=>rv0j0_BHpnw9=3qkII<}HvIs0`v`W?+Ej-x(lzW(EdBsG3eF-x$iTg7R&k{A?)S z70RCk;xi%2mu3(j$$U@|$H&6J0L$N?@{=D)y)nq2P_sbplZEnO@yiGCCrAp6K}taw z%wb?)h(eS1K;tK&@x##g_7FZ3ECFeu@%<ruP#S_*8J}8_S;CMLuUA}B#1J1JUtE%s zT2xfP5T91S5TBV_P?VXQ3QE@u@x__BN%=YX4DsoyMTyS&DVgc{4Dm&&If==M`3&)C z`30$Y4DluT*&r$}hao;KEvK|N17uK9W?o4e)DArphMbbz0%I807|b<-agD%SLm1Z( J%r#(O007xl=tlqm diff --git a/ALTERADO/compilador.output b/ALTERADO/compilador.output index a8dc1fb..12513b9 100644 --- a/ALTERADO/compilador.output +++ b/ALTERADO/compilador.output @@ -1,48 +1,48 @@ -Terminals which are not used +Terminais sem uso na gramática - TYPE - ARRAY - GOTO - OR - AND - NOT + TYPE + ARRAY + GOTO + OR + AND + NOT -State 79 conflicts: 1 reduce/reduce +Estado 88 conflitos: 1 de redução/redução -Grammar +Gramática 0 $accept: programa $end - 1 @1: /* empty */ + 1 $@1: ε - 2 programa: @1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO + 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO - 3 @2: /* empty */ + 3 $@2: ε - 4 @3: /* empty */ + 4 $@3: ε - 5 bloco: parte_declara_rotulos parte_declara_vars @2 parte_declara_subrotinas @3 comando_composto + 5 bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas $@3 comando_composto 6 parte_declara_rotulos: LABEL VIRGULA - 7 | /* empty */ + 7 | ε 8 parte_declara_vars: var - 9 @4: /* empty */ + 9 $@4: ε - 10 var: @4 VAR declara_vars - 11 | /* empty */ + 10 var: $@4 VAR declara_vars + 11 | ε 12 declara_vars: declara_vars declara_var 13 | declara_var - 14 @5: /* empty */ + 14 $@5: ε - 15 @6: /* empty */ + 15 $@6: ε - 16 declara_var: @5 lista_id_var DOIS_PONTOS tipo @6 PONTO_E_VIRGULA + 16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo $@6 PONTO_E_VIRGULA 17 tipo: IDENT @@ -52,2039 +52,2192 @@ Grammar 20 lista_idents: lista_idents VIRGULA IDENT 21 | IDENT - 22 parte_declara_subrotinas: parte_declara_subrotinas declaracao_procedimento - 23 | declaracao_funcao - 24 | /* empty */ + 22 parte_declara_subrotinas: declaracao_procedimento inicializa_procedimento parte_declara_subrotinas + 23 | declaracao_funcao parte_declara_subrotinas + 24 | ε - 25 @7: /* empty */ + 25 $@7: ε - 26 @8: /* empty */ + 26 $@8: ε - 27 declaracao_procedimento: PROCEDURE IDENT @7 parametros_ou_nada PONTO_E_VIRGULA bloco @8 PONTO_E_VIRGULA + 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada $@8 PONTO_E_VIRGULA - 28 @9: /* empty */ + 28 inicializa_procedimento: FORWARD PONTO_E_VIRGULA - 29 @10: /* empty */ + 29 $@9: ε - 30 @11: /* empty */ + 30 $@10: ε - 31 declaracao_funcao: FUNCTION IDENT @9 parametros_ou_nada DOIS_PONTOS @10 tipo PONTO_E_VIRGULA bloco @11 PONTO_E_VIRGULA + 31 inicializa_procedimento: $@9 bloco $@10 PONTO_E_VIRGULA - 32 @12: /* empty */ + 32 $@11: ε - 33 @13: /* empty */ + 33 $@12: ε - 34 parametros_ou_nada: ABRE_PARENTESES @12 paramentros_formais @13 FECHA_PARENTESES - 35 | /* empty */ + 34 $@13: ε - 36 paramentros_formais: secao_pfs - 37 | paramentros_formais PONTO_E_VIRGULA secao_pfs + 35 declaracao_funcao: FUNCTION IDENT $@11 parametros_ou_nada DOIS_PONTOS $@12 tipo PONTO_E_VIRGULA bloco $@13 PONTO_E_VIRGULA - 38 @14: /* empty */ + 36 $@14: ε - 39 secao_pfs: VAR @14 lista_id_pf DOIS_PONTOS tipo + 37 $@15: ε - 40 @15: /* empty */ + 38 parametros_ou_nada: ABRE_PARENTESES $@14 paramentros_formais $@15 FECHA_PARENTESES + 39 | ε - 41 secao_pfs: @15 lista_id_pf DOIS_PONTOS tipo + 40 paramentros_formais: secao_pfs + 41 | paramentros_formais PONTO_E_VIRGULA secao_pfs - 42 lista_id_pf: parametro VIRGULA lista_id_pf - 43 | parametro + 42 $@16: ε - 44 parametro: IDENT + 43 secao_pfs: VAR $@16 lista_id_pf DOIS_PONTOS tipo - 45 comando_composto: T_BEGIN comandos T_END + 44 $@17: ε - 46 comandos: comando PONTO_E_VIRGULA comandos - 47 | comando PONTO_E_VIRGULA - 48 | /* empty */ + 45 secao_pfs: $@17 lista_id_pf DOIS_PONTOS tipo - 49 comando: numero DOIS_PONTOS comando_sem_rotulo - 50 | comando_sem_rotulo + 46 lista_id_pf: parametro VIRGULA lista_id_pf + 47 | parametro - 51 comando_sem_rotulo: atribuicao_ou_procedimento - 52 | comando_composto - 53 | comando_condicional - 54 | comando_repetitivo - 55 | leitura - 56 | escrita + 48 parametro: IDENT - 57 @16: /* empty */ + 49 comando_composto: T_BEGIN comandos T_END - 58 atribuicao_ou_procedimento: IDENT @16 atribuicao_ou_procedimento_token + 50 comandos: comando PONTO_E_VIRGULA comandos + 51 | comando PONTO_E_VIRGULA + 52 | ε - 59 atribuicao_ou_procedimento_token: atribuicao - 60 | chamada_procedimento + 53 comando: numero DOIS_PONTOS comando_sem_rotulo + 54 | comando_sem_rotulo - 61 @17: /* empty */ + 55 comando_sem_rotulo: atribuicao_ou_procedimento + 56 | comando_composto + 57 | comando_condicional + 58 | comando_repetitivo + 59 | leitura + 60 | escrita - 62 atribuicao: @17 ATRIBUICAO expressao_simples + 61 $@18: ε - 63 @18: /* empty */ + 62 atribuicao_ou_procedimento: IDENT $@18 atribuicao_ou_procedimento_token - 64 chamada_procedimento: @18 lista_parametros + 63 atribuicao_ou_procedimento_token: atribuicao + 64 | chamada_procedimento - 65 lista_parametros: ABRE_PARENTESES lista_parametros_parenteses FECHA_PARENTESES - 66 | /* empty */ + 65 $@19: ε - 67 @19: /* empty */ + 66 atribuicao: $@19 ATRIBUICAO expressao_simples - 68 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA @19 expressao_simples + 67 $@20: ε - 69 @20: /* empty */ + 68 chamada_procedimento: $@20 lista_parametros - 70 lista_parametros_parenteses: @20 expressao_simples + 69 lista_parametros: ABRE_PARENTESES lista_parametros_parenteses FECHA_PARENTESES + 70 | ε - 71 leitura: READ ABRE_PARENTESES lista_leituras FECHA_PARENTESES + 71 $@21: ε - 72 lista_leituras: lista_leituras VIRGULA simb_leitura - 73 | simb_leitura + 72 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA $@21 expressao_simples - 74 simb_leitura: IDENT + 73 $@22: ε - 75 escrita: WRITE ABRE_PARENTESES lista_escritas FECHA_PARENTESES + 74 lista_parametros_parenteses: $@22 expressao_simples - 76 lista_escritas: lista_escritas VIRGULA expressao_simples - 77 | expressao_simples + 75 leitura: READ ABRE_PARENTESES lista_leituras FECHA_PARENTESES - 78 expressao: expressao IGUAL expressao_simples - 79 | expressao DIFERENTE expressao_simples - 80 | expressao MENOR expressao_simples - 81 | expressao MENOR_IGUAL expressao_simples - 82 | expressao MAIOR expressao_simples - 83 | expressao MAIOR_IGUAL expressao_simples - 84 | expressao_simples + 76 lista_leituras: lista_leituras VIRGULA simb_leitura + 77 | simb_leitura - 85 expressao_simples: expressao_simples MAIS termo - 86 | expressao_simples MENOS termo - 87 | termo + 78 simb_leitura: IDENT - 88 termo: termo ASTERISCO fator - 89 | termo DIV fator - 90 | fator + 79 escrita: WRITE ABRE_PARENTESES lista_escritas FECHA_PARENTESES - 91 @21: /* empty */ + 80 lista_escritas: lista_escritas VIRGULA expressao_simples + 81 | expressao_simples - 92 fator: IDENT @21 chamada_procedimento - 93 | NUMERO - 94 | ABRE_PARENTESES expressao FECHA_PARENTESES + 82 expressao: expressao_simples IGUAL expressao_simples + 83 | expressao_simples DIFERENTE expressao_simples + 84 | expressao_simples MENOR expressao_simples + 85 | expressao_simples MENOR_IGUAL expressao_simples + 86 | expressao_simples MAIOR expressao_simples + 87 | expressao_simples MAIOR_IGUAL expressao_simples - 95 numero: NUMERO - - 96 @22: /* empty */ - - 97 @23: /* empty */ - - 98 comando_repetitivo: @22 WHILE expressao DO @23 comando_sem_rotulo - - 99 comando_condicional: if_then cond_else - - 100 cond_else: ELSE comando_sem_rotulo - 101 | /* empty */ - - 102 @24: /* empty */ - - 103 if_then: IF expressao @24 THEN comando_sem_rotulo - - -Terminals, with rules where they appear - -$end (0) 0 -error (256) -PROGRAM (258) 2 -ABRE_PARENTESES (259) 2 34 65 71 75 94 -FECHA_PARENTESES (260) 2 34 65 71 75 94 -VIRGULA (261) 6 18 20 42 68 72 76 -PONTO_E_VIRGULA (262) 2 16 27 31 37 46 47 -DOIS_PONTOS (263) 16 31 39 41 49 -PONTO (264) 2 -T_BEGIN (265) 45 -T_END (266) 45 -VAR (267) 10 39 -IDENT (268) 2 17 18 19 20 21 27 31 44 58 74 92 -ATRIBUICAO (269) 62 -LABEL (270) 6 -TYPE (271) -ARRAY (272) -PROCEDURE (273) 27 -FUNCTION (274) 31 -GOTO (275) -IF (276) 103 -THEN (277) 103 -ELSE (278) 100 -WHILE (279) 98 -DO (280) 98 -OR (281) -DIV (282) 89 -AND (283) -NOT (284) -IGUAL (285) 78 -DIFERENTE (286) 79 -MENOR_IGUAL (287) 81 -MAIOR_IGUAL (288) 83 -MENOR (289) 80 -MAIOR (290) 82 -MAIS (291) 85 -MENOS (292) 86 -ASTERISCO (293) 88 -NUMERO (294) 93 95 -READ (295) 71 -WRITE (296) 75 -LOWER_THAN_ELSE (297) - - -Nonterminals, with rules where they appear - -$accept (43) - on left: 0 -programa (44) - on left: 2, on right: 0 -@1 (45) - on left: 1, on right: 2 -bloco (46) - on left: 5, on right: 2 27 31 -@2 (47) - on left: 3, on right: 5 -@3 (48) - on left: 4, on right: 5 -parte_declara_rotulos (49) - on left: 6 7, on right: 5 -parte_declara_vars (50) - on left: 8, on right: 5 -var (51) - on left: 10 11, on right: 8 -@4 (52) - on left: 9, on right: 10 -declara_vars (53) - on left: 12 13, on right: 10 12 -declara_var (54) - on left: 16, on right: 12 13 -@5 (55) - on left: 14, on right: 16 -@6 (56) - on left: 15, on right: 16 -tipo (57) - on left: 17, on right: 16 31 39 41 -lista_id_var (58) - on left: 18 19, on right: 16 18 -lista_idents (59) - on left: 20 21, on right: 2 20 -parte_declara_subrotinas (60) - on left: 22 23 24, on right: 5 22 -declaracao_procedimento (61) - on left: 27, on right: 22 -@7 (62) - on left: 25, on right: 27 -@8 (63) - on left: 26, on right: 27 -declaracao_funcao (64) - on left: 31, on right: 23 -@9 (65) - on left: 28, on right: 31 -@10 (66) - on left: 29, on right: 31 -@11 (67) - on left: 30, on right: 31 -parametros_ou_nada (68) - on left: 34 35, on right: 27 31 -@12 (69) - on left: 32, on right: 34 -@13 (70) - on left: 33, on right: 34 -paramentros_formais (71) - on left: 36 37, on right: 34 37 -secao_pfs (72) - on left: 39 41, on right: 36 37 -@14 (73) - on left: 38, on right: 39 -@15 (74) - on left: 40, on right: 41 -lista_id_pf (75) - on left: 42 43, on right: 39 41 42 -parametro (76) - on left: 44, on right: 42 43 -comando_composto (77) - on left: 45, on right: 5 52 -comandos (78) - on left: 46 47 48, on right: 45 46 -comando (79) - on left: 49 50, on right: 46 47 -comando_sem_rotulo (80) - on left: 51 52 53 54 55 56, on right: 49 50 98 100 103 -atribuicao_ou_procedimento (81) - on left: 58, on right: 51 -@16 (82) - on left: 57, on right: 58 -atribuicao_ou_procedimento_token (83) - on left: 59 60, on right: 58 -atribuicao (84) - on left: 62, on right: 59 -@17 (85) - on left: 61, on right: 62 -chamada_procedimento (86) - on left: 64, on right: 60 92 -@18 (87) - on left: 63, on right: 64 -lista_parametros (88) - on left: 65 66, on right: 64 -lista_parametros_parenteses (89) - on left: 68 70, on right: 65 68 -@19 (90) - on left: 67, on right: 68 -@20 (91) - on left: 69, on right: 70 -leitura (92) - on left: 71, on right: 55 -lista_leituras (93) - on left: 72 73, on right: 71 72 -simb_leitura (94) - on left: 74, on right: 72 73 -escrita (95) - on left: 75, on right: 56 -lista_escritas (96) - on left: 76 77, on right: 75 76 -expressao (97) - on left: 78 79 80 81 82 83 84, on right: 78 79 80 81 82 83 94 98 - 103 -expressao_simples (98) - on left: 85 86 87, on right: 62 68 70 76 77 78 79 80 81 82 83 84 - 85 86 -termo (99) - on left: 88 89 90, on right: 85 86 87 88 89 -fator (100) - on left: 92 93 94, on right: 88 89 90 -@21 (101) - on left: 91, on right: 92 -numero (102) - on left: 95, on right: 49 -comando_repetitivo (103) - on left: 98, on right: 54 -@22 (104) - on left: 96, on right: 98 -@23 (105) - on left: 97, on right: 98 -comando_condicional (106) - on left: 99, on right: 53 -cond_else (107) - on left: 100 101, on right: 99 -if_then (108) - on left: 103, on right: 99 -@24 (109) - on left: 102, on right: 103 + 88 expressao_simples: expressao_simples MAIS termo + 89 | expressao_simples MENOS termo + 90 | termo + 91 termo: termo ASTERISCO fator + 92 | termo DIV fator + 93 | fator -state 0 + 94 $@23: ε - 0 $accept: . programa $end + 95 fator: IDENT $@23 chamada_procedimento + 96 | NUMERO + 97 | ABRE_PARENTESES expressao FECHA_PARENTESES + 98 | ABRE_PARENTESES expressao_simples FECHA_PARENTESES - $default reduce using rule 1 (@1) + 99 numero: NUMERO + + 100 $@24: ε + + 101 $@25: ε + + 102 comando_repetitivo: $@24 WHILE expressao DO $@25 comando_sem_rotulo + + 103 comando_condicional: if_then cond_else + + 104 cond_else: ELSE comando_sem_rotulo + 105 | ε + + 106 $@26: ε + + 107 if_then: IF expressao $@26 THEN comando_sem_rotulo + + +Terminais, com as regras onde eles aparecem + + $end (0) 0 + error (256) + PROGRAM (258) 2 + ABRE_PARENTESES (259) 2 38 69 75 79 97 98 + FECHA_PARENTESES (260) 2 38 69 75 79 97 98 + VIRGULA (261) 6 18 20 46 72 76 80 + PONTO_E_VIRGULA (262) 2 16 27 28 31 35 41 50 51 + DOIS_PONTOS (263) 16 35 43 45 53 + PONTO (264) 2 + T_BEGIN (265) 49 + T_END (266) 49 + VAR (267) 10 43 + IDENT (268) 2 17 18 19 20 21 27 35 48 62 78 95 + ATRIBUICAO (269) 66 + LABEL (270) 6 + TYPE (271) + ARRAY (272) + PROCEDURE (273) 27 + FUNCTION (274) 35 + GOTO (275) + IF (276) 107 + THEN (277) 107 + ELSE (278) 104 + WHILE (279) 102 + DO (280) 102 + OR (281) + DIV (282) 92 + AND (283) + NOT (284) + IGUAL (285) 82 + DIFERENTE (286) 83 + MENOR_IGUAL (287) 85 + MAIOR_IGUAL (288) 87 + MENOR (289) 84 + MAIOR (290) 86 + MAIS (291) 88 + MENOS (292) 89 + ASTERISCO (293) 91 + NUMERO (294) 96 99 + READ (295) 75 + WRITE (296) 79 + FORWARD (297) 28 + LOWER_THAN_ELSE (298) + + +Não terminais com as regras onde eles aparecem + + $accept (44) + à esquerda: 0 + programa (45) + à esquerda: 2 + à direita: 0 + $@1 (46) + à esquerda: 1 + à direita: 2 + bloco (47) + à esquerda: 5 + à direita: 2 31 35 + $@2 (48) + à esquerda: 3 + à direita: 5 + $@3 (49) + à esquerda: 4 + à direita: 5 + parte_declara_rotulos (50) + à esquerda: 6 7 + à direita: 5 + parte_declara_vars (51) + à esquerda: 8 + à direita: 5 + var (52) + à esquerda: 10 11 + à direita: 8 + $@4 (53) + à esquerda: 9 + à direita: 10 + declara_vars (54) + à esquerda: 12 13 + à direita: 10 12 + declara_var (55) + à esquerda: 16 + à direita: 12 13 + $@5 (56) + à esquerda: 14 + à direita: 16 + $@6 (57) + à esquerda: 15 + à direita: 16 + tipo (58) + à esquerda: 17 + à direita: 16 35 43 45 + lista_id_var (59) + à esquerda: 18 19 + à direita: 16 18 + lista_idents (60) + à esquerda: 20 21 + à direita: 2 20 + parte_declara_subrotinas (61) + à esquerda: 22 23 24 + à direita: 5 22 23 + declaracao_procedimento (62) + à esquerda: 27 + à direita: 22 + $@7 (63) + à esquerda: 25 + à direita: 27 + $@8 (64) + à esquerda: 26 + à direita: 27 + inicializa_procedimento (65) + à esquerda: 28 31 + à direita: 22 + $@9 (66) + à esquerda: 29 + à direita: 31 + $@10 (67) + à esquerda: 30 + à direita: 31 + declaracao_funcao (68) + à esquerda: 35 + à direita: 23 + $@11 (69) + à esquerda: 32 + à direita: 35 + $@12 (70) + à esquerda: 33 + à direita: 35 + $@13 (71) + à esquerda: 34 + à direita: 35 + parametros_ou_nada (72) + à esquerda: 38 39 + à direita: 27 35 + $@14 (73) + à esquerda: 36 + à direita: 38 + $@15 (74) + à esquerda: 37 + à direita: 38 + paramentros_formais (75) + à esquerda: 40 41 + à direita: 38 41 + secao_pfs (76) + à esquerda: 43 45 + à direita: 40 41 + $@16 (77) + à esquerda: 42 + à direita: 43 + $@17 (78) + à esquerda: 44 + à direita: 45 + lista_id_pf (79) + à esquerda: 46 47 + à direita: 43 45 46 + parametro (80) + à esquerda: 48 + à direita: 46 47 + comando_composto (81) + à esquerda: 49 + à direita: 5 56 + comandos (82) + à esquerda: 50 51 52 + à direita: 49 50 + comando (83) + à esquerda: 53 54 + à direita: 50 51 + comando_sem_rotulo (84) + à esquerda: 55 56 57 58 59 60 + à direita: 53 54 102 104 107 + atribuicao_ou_procedimento (85) + à esquerda: 62 + à direita: 55 + $@18 (86) + à esquerda: 61 + à direita: 62 + atribuicao_ou_procedimento_token (87) + à esquerda: 63 64 + à direita: 62 + atribuicao (88) + à esquerda: 66 + à direita: 63 + $@19 (89) + à esquerda: 65 + à direita: 66 + chamada_procedimento (90) + à esquerda: 68 + à direita: 64 95 + $@20 (91) + à esquerda: 67 + à direita: 68 + lista_parametros (92) + à esquerda: 69 70 + à direita: 68 + lista_parametros_parenteses (93) + à esquerda: 72 74 + à direita: 69 72 + $@21 (94) + à esquerda: 71 + à direita: 72 + $@22 (95) + à esquerda: 73 + à direita: 74 + leitura (96) + à esquerda: 75 + à direita: 59 + lista_leituras (97) + à esquerda: 76 77 + à direita: 75 76 + simb_leitura (98) + à esquerda: 78 + à direita: 76 77 + escrita (99) + à esquerda: 79 + à direita: 60 + lista_escritas (100) + à esquerda: 80 81 + à direita: 79 80 + expressao (101) + à esquerda: 82 83 84 85 86 87 + à direita: 97 102 107 + expressao_simples (102) + à esquerda: 88 89 90 + à direita: 66 72 74 80 81 82 83 84 85 86 87 88 89 98 + termo (103) + à esquerda: 91 92 93 + à direita: 88 89 90 91 92 + fator (104) + à esquerda: 95 96 97 98 + à direita: 91 92 93 + $@23 (105) + à esquerda: 94 + à direita: 95 + numero (106) + à esquerda: 99 + à direita: 53 + comando_repetitivo (107) + à esquerda: 102 + à direita: 58 + $@24 (108) + à esquerda: 100 + à direita: 102 + $@25 (109) + à esquerda: 101 + à direita: 102 + comando_condicional (110) + à esquerda: 103 + à direita: 57 + cond_else (111) + à esquerda: 104 105 + à direita: 103 + if_then (112) + à esquerda: 107 + à direita: 103 + $@26 (113) + à esquerda: 106 + à direita: 107 - programa go to state 1 - @1 go to state 2 +Estado 0 -state 1 + 0 $accept: • programa $end - 0 $accept: programa . $end + $padrão reduzir usando a regra 1 ($@1) - $end shift, and go to state 3 + programa ir ao estado 1 + $@1 ir ao estado 2 -state 2 +Estado 1 - 2 programa: @1 . PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO + 0 $accept: programa • $end - PROGRAM shift, and go to state 4 + $end deslocar, e ir ao estado 3 -state 3 +Estado 2 - 0 $accept: programa $end . + 2 programa: $@1 • PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO - $default accept + PROGRAM deslocar, e ir ao estado 4 -state 4 +Estado 3 - 2 programa: @1 PROGRAM . IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO + 0 $accept: programa $end • - IDENT shift, and go to state 5 + $padrão aceitar -state 5 +Estado 4 - 2 programa: @1 PROGRAM IDENT . ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO + 2 programa: $@1 PROGRAM • IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO - ABRE_PARENTESES shift, and go to state 6 + IDENT deslocar, e ir ao estado 5 -state 6 +Estado 5 - 2 programa: @1 PROGRAM IDENT ABRE_PARENTESES . lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO + 2 programa: $@1 PROGRAM IDENT • ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO - IDENT shift, and go to state 7 + ABRE_PARENTESES deslocar, e ir ao estado 6 - lista_idents go to state 8 +Estado 6 -state 7 + 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES • lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO - 21 lista_idents: IDENT . + IDENT deslocar, e ir ao estado 7 - $default reduce using rule 21 (lista_idents) + lista_idents ir ao estado 8 -state 8 +Estado 7 - 2 programa: @1 PROGRAM IDENT ABRE_PARENTESES lista_idents . FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO - 20 lista_idents: lista_idents . VIRGULA IDENT + 21 lista_idents: IDENT • - FECHA_PARENTESES shift, and go to state 9 - VIRGULA shift, and go to state 10 + $padrão reduzir usando a regra 21 (lista_idents) -state 9 +Estado 8 - 2 programa: @1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES . PONTO_E_VIRGULA bloco PONTO + 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents • FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO + 20 lista_idents: lista_idents • VIRGULA IDENT - PONTO_E_VIRGULA shift, and go to state 11 + FECHA_PARENTESES deslocar, e ir ao estado 9 + VIRGULA deslocar, e ir ao estado 10 -state 10 +Estado 9 - 20 lista_idents: lista_idents VIRGULA . IDENT + 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES • PONTO_E_VIRGULA bloco PONTO - IDENT shift, and go to state 12 + PONTO_E_VIRGULA deslocar, e ir ao estado 11 -state 11 +Estado 10 - 2 programa: @1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA . bloco PONTO + 20 lista_idents: lista_idents VIRGULA • IDENT - LABEL shift, and go to state 13 + IDENT deslocar, e ir ao estado 12 - $default reduce using rule 7 (parte_declara_rotulos) - bloco go to state 14 - parte_declara_rotulos go to state 15 +Estado 11 + 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA • bloco PONTO -state 12 + LABEL deslocar, e ir ao estado 13 - 20 lista_idents: lista_idents VIRGULA IDENT . + $padrão reduzir usando a regra 7 (parte_declara_rotulos) - $default reduce using rule 20 (lista_idents) + bloco ir ao estado 14 + parte_declara_rotulos ir ao estado 15 -state 13 +Estado 12 - 6 parte_declara_rotulos: LABEL . VIRGULA + 20 lista_idents: lista_idents VIRGULA IDENT • - VIRGULA shift, and go to state 16 + $padrão reduzir usando a regra 20 (lista_idents) -state 14 +Estado 13 - 2 programa: @1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco . PONTO + 6 parte_declara_rotulos: LABEL • VIRGULA - PONTO shift, and go to state 17 + VIRGULA deslocar, e ir ao estado 16 -state 15 +Estado 14 - 5 bloco: parte_declara_rotulos . parte_declara_vars @2 parte_declara_subrotinas @3 comando_composto + 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco • PONTO - VAR reduce using rule 9 (@4) - $default reduce using rule 11 (var) + PONTO deslocar, e ir ao estado 17 - parte_declara_vars go to state 18 - var go to state 19 - @4 go to state 20 +Estado 15 -state 16 + 5 bloco: parte_declara_rotulos • parte_declara_vars $@2 parte_declara_subrotinas $@3 comando_composto - 6 parte_declara_rotulos: LABEL VIRGULA . + VAR reduzir usando a regra 9 ($@4) + $padrão reduzir usando a regra 11 (var) - $default reduce using rule 6 (parte_declara_rotulos) + parte_declara_vars ir ao estado 18 + var ir ao estado 19 + $@4 ir ao estado 20 -state 17 +Estado 16 - 2 programa: @1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO . + 6 parte_declara_rotulos: LABEL VIRGULA • - $default reduce using rule 2 (programa) + $padrão reduzir usando a regra 6 (parte_declara_rotulos) -state 18 +Estado 17 - 5 bloco: parte_declara_rotulos parte_declara_vars . @2 parte_declara_subrotinas @3 comando_composto + 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO • - $default reduce using rule 3 (@2) + $padrão reduzir usando a regra 2 (programa) - @2 go to state 21 +Estado 18 -state 19 + 5 bloco: parte_declara_rotulos parte_declara_vars • $@2 parte_declara_subrotinas $@3 comando_composto - 8 parte_declara_vars: var . + $padrão reduzir usando a regra 3 ($@2) - $default reduce using rule 8 (parte_declara_vars) + $@2 ir ao estado 21 -state 20 +Estado 19 - 10 var: @4 . VAR declara_vars + 8 parte_declara_vars: var • - VAR shift, and go to state 22 + $padrão reduzir usando a regra 8 (parte_declara_vars) -state 21 +Estado 20 - 5 bloco: parte_declara_rotulos parte_declara_vars @2 . parte_declara_subrotinas @3 comando_composto + 10 var: $@4 • VAR declara_vars - FUNCTION shift, and go to state 23 + VAR deslocar, e ir ao estado 22 - $default reduce using rule 24 (parte_declara_subrotinas) - parte_declara_subrotinas go to state 24 - declaracao_funcao go to state 25 +Estado 21 + 5 bloco: parte_declara_rotulos parte_declara_vars $@2 • parte_declara_subrotinas $@3 comando_composto -state 22 + PROCEDURE deslocar, e ir ao estado 23 + FUNCTION deslocar, e ir ao estado 24 - 10 var: @4 VAR . declara_vars + $padrão reduzir usando a regra 24 (parte_declara_subrotinas) - $default reduce using rule 14 (@5) + parte_declara_subrotinas ir ao estado 25 + declaracao_procedimento ir ao estado 26 + declaracao_funcao ir ao estado 27 - declara_vars go to state 26 - declara_var go to state 27 - @5 go to state 28 +Estado 22 -state 23 + 10 var: $@4 VAR • declara_vars - 31 declaracao_funcao: FUNCTION . IDENT @9 parametros_ou_nada DOIS_PONTOS @10 tipo PONTO_E_VIRGULA bloco @11 PONTO_E_VIRGULA + $padrão reduzir usando a regra 14 ($@5) - IDENT shift, and go to state 29 + declara_vars ir ao estado 28 + declara_var ir ao estado 29 + $@5 ir ao estado 30 -state 24 +Estado 23 - 5 bloco: parte_declara_rotulos parte_declara_vars @2 parte_declara_subrotinas . @3 comando_composto - 22 parte_declara_subrotinas: parte_declara_subrotinas . declaracao_procedimento + 27 declaracao_procedimento: PROCEDURE • IDENT $@7 parametros_ou_nada $@8 PONTO_E_VIRGULA - PROCEDURE shift, and go to state 30 + IDENT deslocar, e ir ao estado 31 - $default reduce using rule 4 (@3) - @3 go to state 31 - declaracao_procedimento go to state 32 +Estado 24 + 35 declaracao_funcao: FUNCTION • IDENT $@11 parametros_ou_nada DOIS_PONTOS $@12 tipo PONTO_E_VIRGULA bloco $@13 PONTO_E_VIRGULA -state 25 + IDENT deslocar, e ir ao estado 32 - 23 parte_declara_subrotinas: declaracao_funcao . - $default reduce using rule 23 (parte_declara_subrotinas) +Estado 25 + 5 bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas • $@3 comando_composto -state 26 + $padrão reduzir usando a regra 4 ($@3) - 10 var: @4 VAR declara_vars . - 12 declara_vars: declara_vars . declara_var + $@3 ir ao estado 33 - IDENT reduce using rule 14 (@5) - $default reduce using rule 10 (var) - declara_var go to state 33 - @5 go to state 28 +Estado 26 + 22 parte_declara_subrotinas: declaracao_procedimento • inicializa_procedimento parte_declara_subrotinas -state 27 + FORWARD deslocar, e ir ao estado 34 - 13 declara_vars: declara_var . + $padrão reduzir usando a regra 29 ($@9) - $default reduce using rule 13 (declara_vars) + inicializa_procedimento ir ao estado 35 + $@9 ir ao estado 36 -state 28 +Estado 27 - 16 declara_var: @5 . lista_id_var DOIS_PONTOS tipo @6 PONTO_E_VIRGULA + 23 parte_declara_subrotinas: declaracao_funcao • parte_declara_subrotinas - IDENT shift, and go to state 34 + PROCEDURE deslocar, e ir ao estado 23 + FUNCTION deslocar, e ir ao estado 24 - lista_id_var go to state 35 + $padrão reduzir usando a regra 24 (parte_declara_subrotinas) + parte_declara_subrotinas ir ao estado 37 + declaracao_procedimento ir ao estado 26 + declaracao_funcao ir ao estado 27 -state 29 - 31 declaracao_funcao: FUNCTION IDENT . @9 parametros_ou_nada DOIS_PONTOS @10 tipo PONTO_E_VIRGULA bloco @11 PONTO_E_VIRGULA +Estado 28 - $default reduce using rule 28 (@9) + 10 var: $@4 VAR declara_vars • + 12 declara_vars: declara_vars • declara_var - @9 go to state 36 + IDENT reduzir usando a regra 14 ($@5) + $padrão reduzir usando a regra 10 (var) + declara_var ir ao estado 38 + $@5 ir ao estado 30 -state 30 - 27 declaracao_procedimento: PROCEDURE . IDENT @7 parametros_ou_nada PONTO_E_VIRGULA bloco @8 PONTO_E_VIRGULA +Estado 29 - IDENT shift, and go to state 37 + 13 declara_vars: declara_var • + $padrão reduzir usando a regra 13 (declara_vars) -state 31 - 5 bloco: parte_declara_rotulos parte_declara_vars @2 parte_declara_subrotinas @3 . comando_composto +Estado 30 - T_BEGIN shift, and go to state 38 + 16 declara_var: $@5 • lista_id_var DOIS_PONTOS tipo $@6 PONTO_E_VIRGULA - comando_composto go to state 39 + IDENT deslocar, e ir ao estado 39 + lista_id_var ir ao estado 40 -state 32 - 22 parte_declara_subrotinas: parte_declara_subrotinas declaracao_procedimento . +Estado 31 - $default reduce using rule 22 (parte_declara_subrotinas) + 27 declaracao_procedimento: PROCEDURE IDENT • $@7 parametros_ou_nada $@8 PONTO_E_VIRGULA + $padrão reduzir usando a regra 25 ($@7) -state 33 + $@7 ir ao estado 41 - 12 declara_vars: declara_vars declara_var . - $default reduce using rule 12 (declara_vars) +Estado 32 + 35 declaracao_funcao: FUNCTION IDENT • $@11 parametros_ou_nada DOIS_PONTOS $@12 tipo PONTO_E_VIRGULA bloco $@13 PONTO_E_VIRGULA -state 34 + $padrão reduzir usando a regra 32 ($@11) - 19 lista_id_var: IDENT . + $@11 ir ao estado 42 - $default reduce using rule 19 (lista_id_var) +Estado 33 -state 35 + 5 bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas $@3 • comando_composto - 16 declara_var: @5 lista_id_var . DOIS_PONTOS tipo @6 PONTO_E_VIRGULA - 18 lista_id_var: lista_id_var . VIRGULA IDENT + T_BEGIN deslocar, e ir ao estado 43 - VIRGULA shift, and go to state 40 - DOIS_PONTOS shift, and go to state 41 + comando_composto ir ao estado 44 -state 36 +Estado 34 - 31 declaracao_funcao: FUNCTION IDENT @9 . parametros_ou_nada DOIS_PONTOS @10 tipo PONTO_E_VIRGULA bloco @11 PONTO_E_VIRGULA + 28 inicializa_procedimento: FORWARD • PONTO_E_VIRGULA - ABRE_PARENTESES shift, and go to state 42 + PONTO_E_VIRGULA deslocar, e ir ao estado 45 - $default reduce using rule 35 (parametros_ou_nada) - parametros_ou_nada go to state 43 +Estado 35 + 22 parte_declara_subrotinas: declaracao_procedimento inicializa_procedimento • parte_declara_subrotinas -state 37 + PROCEDURE deslocar, e ir ao estado 23 + FUNCTION deslocar, e ir ao estado 24 - 27 declaracao_procedimento: PROCEDURE IDENT . @7 parametros_ou_nada PONTO_E_VIRGULA bloco @8 PONTO_E_VIRGULA + $padrão reduzir usando a regra 24 (parte_declara_subrotinas) - $default reduce using rule 25 (@7) + parte_declara_subrotinas ir ao estado 46 + declaracao_procedimento ir ao estado 26 + declaracao_funcao ir ao estado 27 - @7 go to state 44 +Estado 36 -state 38 + 31 inicializa_procedimento: $@9 • bloco $@10 PONTO_E_VIRGULA - 45 comando_composto: T_BEGIN . comandos T_END + LABEL deslocar, e ir ao estado 13 - T_BEGIN shift, and go to state 38 - IDENT shift, and go to state 45 - IF shift, and go to state 46 - NUMERO shift, and go to state 47 - READ shift, and go to state 48 - WRITE shift, and go to state 49 + $padrão reduzir usando a regra 7 (parte_declara_rotulos) - WHILE reduce using rule 96 (@22) - $default reduce using rule 48 (comandos) + bloco ir ao estado 47 + parte_declara_rotulos ir ao estado 15 - comando_composto go to state 50 - comandos go to state 51 - comando go to state 52 - comando_sem_rotulo go to state 53 - atribuicao_ou_procedimento go to state 54 - leitura go to state 55 - escrita go to state 56 - numero go to state 57 - comando_repetitivo go to state 58 - @22 go to state 59 - comando_condicional go to state 60 - if_then go to state 61 +Estado 37 -state 39 + 23 parte_declara_subrotinas: declaracao_funcao parte_declara_subrotinas • - 5 bloco: parte_declara_rotulos parte_declara_vars @2 parte_declara_subrotinas @3 comando_composto . + $padrão reduzir usando a regra 23 (parte_declara_subrotinas) - $default reduce using rule 5 (bloco) +Estado 38 -state 40 + 12 declara_vars: declara_vars declara_var • - 18 lista_id_var: lista_id_var VIRGULA . IDENT + $padrão reduzir usando a regra 12 (declara_vars) - IDENT shift, and go to state 62 +Estado 39 -state 41 + 19 lista_id_var: IDENT • - 16 declara_var: @5 lista_id_var DOIS_PONTOS . tipo @6 PONTO_E_VIRGULA + $padrão reduzir usando a regra 19 (lista_id_var) - IDENT shift, and go to state 63 - tipo go to state 64 +Estado 40 + 16 declara_var: $@5 lista_id_var • DOIS_PONTOS tipo $@6 PONTO_E_VIRGULA + 18 lista_id_var: lista_id_var • VIRGULA IDENT -state 42 + VIRGULA deslocar, e ir ao estado 48 + DOIS_PONTOS deslocar, e ir ao estado 49 - 34 parametros_ou_nada: ABRE_PARENTESES . @12 paramentros_formais @13 FECHA_PARENTESES - $default reduce using rule 32 (@12) +Estado 41 - @12 go to state 65 + 27 declaracao_procedimento: PROCEDURE IDENT $@7 • parametros_ou_nada $@8 PONTO_E_VIRGULA + ABRE_PARENTESES deslocar, e ir ao estado 50 -state 43 + $padrão reduzir usando a regra 39 (parametros_ou_nada) - 31 declaracao_funcao: FUNCTION IDENT @9 parametros_ou_nada . DOIS_PONTOS @10 tipo PONTO_E_VIRGULA bloco @11 PONTO_E_VIRGULA + parametros_ou_nada ir ao estado 51 - DOIS_PONTOS shift, and go to state 66 +Estado 42 -state 44 + 35 declaracao_funcao: FUNCTION IDENT $@11 • parametros_ou_nada DOIS_PONTOS $@12 tipo PONTO_E_VIRGULA bloco $@13 PONTO_E_VIRGULA - 27 declaracao_procedimento: PROCEDURE IDENT @7 . parametros_ou_nada PONTO_E_VIRGULA bloco @8 PONTO_E_VIRGULA + ABRE_PARENTESES deslocar, e ir ao estado 50 - ABRE_PARENTESES shift, and go to state 42 + $padrão reduzir usando a regra 39 (parametros_ou_nada) - $default reduce using rule 35 (parametros_ou_nada) + parametros_ou_nada ir ao estado 52 - parametros_ou_nada go to state 67 +Estado 43 -state 45 + 49 comando_composto: T_BEGIN • comandos T_END - 58 atribuicao_ou_procedimento: IDENT . @16 atribuicao_ou_procedimento_token + T_BEGIN deslocar, e ir ao estado 43 + IDENT deslocar, e ir ao estado 53 + IF deslocar, e ir ao estado 54 + NUMERO deslocar, e ir ao estado 55 + READ deslocar, e ir ao estado 56 + WRITE deslocar, e ir ao estado 57 - $default reduce using rule 57 (@16) + WHILE reduzir usando a regra 100 ($@24) + $padrão reduzir usando a regra 52 (comandos) - @16 go to state 68 + comando_composto ir ao estado 58 + comandos ir ao estado 59 + comando ir ao estado 60 + comando_sem_rotulo ir ao estado 61 + atribuicao_ou_procedimento ir ao estado 62 + leitura ir ao estado 63 + escrita ir ao estado 64 + numero ir ao estado 65 + comando_repetitivo ir ao estado 66 + $@24 ir ao estado 67 + comando_condicional ir ao estado 68 + if_then ir ao estado 69 -state 46 +Estado 44 - 103 if_then: IF . expressao @24 THEN comando_sem_rotulo + 5 bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas $@3 comando_composto • - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + $padrão reduzir usando a regra 5 (bloco) - expressao go to state 72 - expressao_simples go to state 73 - termo go to state 74 - fator go to state 75 +Estado 45 -state 47 + 28 inicializa_procedimento: FORWARD PONTO_E_VIRGULA • - 95 numero: NUMERO . + $padrão reduzir usando a regra 28 (inicializa_procedimento) - $default reduce using rule 95 (numero) +Estado 46 -state 48 + 22 parte_declara_subrotinas: declaracao_procedimento inicializa_procedimento parte_declara_subrotinas • - 71 leitura: READ . ABRE_PARENTESES lista_leituras FECHA_PARENTESES + $padrão reduzir usando a regra 22 (parte_declara_subrotinas) - ABRE_PARENTESES shift, and go to state 76 +Estado 47 -state 49 + 31 inicializa_procedimento: $@9 bloco • $@10 PONTO_E_VIRGULA - 75 escrita: WRITE . ABRE_PARENTESES lista_escritas FECHA_PARENTESES + $padrão reduzir usando a regra 30 ($@10) - ABRE_PARENTESES shift, and go to state 77 + $@10 ir ao estado 70 -state 50 +Estado 48 - 52 comando_sem_rotulo: comando_composto . + 18 lista_id_var: lista_id_var VIRGULA • IDENT - $default reduce using rule 52 (comando_sem_rotulo) + IDENT deslocar, e ir ao estado 71 -state 51 +Estado 49 - 45 comando_composto: T_BEGIN comandos . T_END + 16 declara_var: $@5 lista_id_var DOIS_PONTOS • tipo $@6 PONTO_E_VIRGULA - T_END shift, and go to state 78 + IDENT deslocar, e ir ao estado 72 + tipo ir ao estado 73 -state 52 - 46 comandos: comando . PONTO_E_VIRGULA comandos - 47 | comando . PONTO_E_VIRGULA +Estado 50 - PONTO_E_VIRGULA shift, and go to state 79 + 38 parametros_ou_nada: ABRE_PARENTESES • $@14 paramentros_formais $@15 FECHA_PARENTESES + $padrão reduzir usando a regra 36 ($@14) -state 53 + $@14 ir ao estado 74 - 50 comando: comando_sem_rotulo . - $default reduce using rule 50 (comando) +Estado 51 + 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada • $@8 PONTO_E_VIRGULA -state 54 + $padrão reduzir usando a regra 26 ($@8) - 51 comando_sem_rotulo: atribuicao_ou_procedimento . + $@8 ir ao estado 75 - $default reduce using rule 51 (comando_sem_rotulo) +Estado 52 -state 55 + 35 declaracao_funcao: FUNCTION IDENT $@11 parametros_ou_nada • DOIS_PONTOS $@12 tipo PONTO_E_VIRGULA bloco $@13 PONTO_E_VIRGULA - 55 comando_sem_rotulo: leitura . + DOIS_PONTOS deslocar, e ir ao estado 76 - $default reduce using rule 55 (comando_sem_rotulo) +Estado 53 -state 56 + 62 atribuicao_ou_procedimento: IDENT • $@18 atribuicao_ou_procedimento_token - 56 comando_sem_rotulo: escrita . + $padrão reduzir usando a regra 61 ($@18) - $default reduce using rule 56 (comando_sem_rotulo) + $@18 ir ao estado 77 -state 57 +Estado 54 - 49 comando: numero . DOIS_PONTOS comando_sem_rotulo + 107 if_then: IF • expressao $@26 THEN comando_sem_rotulo - DOIS_PONTOS shift, and go to state 80 + ABRE_PARENTESES deslocar, e ir ao estado 78 + IDENT deslocar, e ir ao estado 79 + NUMERO deslocar, e ir ao estado 80 + expressao ir ao estado 81 + expressao_simples ir ao estado 82 + termo ir ao estado 83 + fator ir ao estado 84 -state 58 - 54 comando_sem_rotulo: comando_repetitivo . +Estado 55 - $default reduce using rule 54 (comando_sem_rotulo) + 99 numero: NUMERO • + $padrão reduzir usando a regra 99 (numero) -state 59 - 98 comando_repetitivo: @22 . WHILE expressao DO @23 comando_sem_rotulo +Estado 56 - WHILE shift, and go to state 81 + 75 leitura: READ • ABRE_PARENTESES lista_leituras FECHA_PARENTESES + ABRE_PARENTESES deslocar, e ir ao estado 85 -state 60 - 53 comando_sem_rotulo: comando_condicional . +Estado 57 - $default reduce using rule 53 (comando_sem_rotulo) + 79 escrita: WRITE • ABRE_PARENTESES lista_escritas FECHA_PARENTESES + ABRE_PARENTESES deslocar, e ir ao estado 86 -state 61 - 99 comando_condicional: if_then . cond_else +Estado 58 - ELSE shift, and go to state 82 + 56 comando_sem_rotulo: comando_composto • - $default reduce using rule 101 (cond_else) + $padrão reduzir usando a regra 56 (comando_sem_rotulo) - cond_else go to state 83 +Estado 59 -state 62 + 49 comando_composto: T_BEGIN comandos • T_END - 18 lista_id_var: lista_id_var VIRGULA IDENT . + T_END deslocar, e ir ao estado 87 - $default reduce using rule 18 (lista_id_var) +Estado 60 -state 63 + 50 comandos: comando • PONTO_E_VIRGULA comandos + 51 | comando • PONTO_E_VIRGULA - 17 tipo: IDENT . + PONTO_E_VIRGULA deslocar, e ir ao estado 88 - $default reduce using rule 17 (tipo) +Estado 61 -state 64 + 54 comando: comando_sem_rotulo • - 16 declara_var: @5 lista_id_var DOIS_PONTOS tipo . @6 PONTO_E_VIRGULA + $padrão reduzir usando a regra 54 (comando) - $default reduce using rule 15 (@6) - @6 go to state 84 +Estado 62 + 55 comando_sem_rotulo: atribuicao_ou_procedimento • -state 65 + $padrão reduzir usando a regra 55 (comando_sem_rotulo) - 34 parametros_ou_nada: ABRE_PARENTESES @12 . paramentros_formais @13 FECHA_PARENTESES - VAR shift, and go to state 85 +Estado 63 - $default reduce using rule 40 (@15) + 59 comando_sem_rotulo: leitura • - paramentros_formais go to state 86 - secao_pfs go to state 87 - @15 go to state 88 + $padrão reduzir usando a regra 59 (comando_sem_rotulo) -state 66 +Estado 64 - 31 declaracao_funcao: FUNCTION IDENT @9 parametros_ou_nada DOIS_PONTOS . @10 tipo PONTO_E_VIRGULA bloco @11 PONTO_E_VIRGULA + 60 comando_sem_rotulo: escrita • - $default reduce using rule 29 (@10) + $padrão reduzir usando a regra 60 (comando_sem_rotulo) - @10 go to state 89 +Estado 65 -state 67 + 53 comando: numero • DOIS_PONTOS comando_sem_rotulo - 27 declaracao_procedimento: PROCEDURE IDENT @7 parametros_ou_nada . PONTO_E_VIRGULA bloco @8 PONTO_E_VIRGULA + DOIS_PONTOS deslocar, e ir ao estado 89 - PONTO_E_VIRGULA shift, and go to state 90 +Estado 66 -state 68 + 58 comando_sem_rotulo: comando_repetitivo • - 58 atribuicao_ou_procedimento: IDENT @16 . atribuicao_ou_procedimento_token + $padrão reduzir usando a regra 58 (comando_sem_rotulo) - ATRIBUICAO reduce using rule 61 (@17) - $default reduce using rule 63 (@18) - atribuicao_ou_procedimento_token go to state 91 - atribuicao go to state 92 - @17 go to state 93 - chamada_procedimento go to state 94 - @18 go to state 95 +Estado 67 + 102 comando_repetitivo: $@24 • WHILE expressao DO $@25 comando_sem_rotulo -state 69 + WHILE deslocar, e ir ao estado 90 - 94 fator: ABRE_PARENTESES . expressao FECHA_PARENTESES - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 +Estado 68 - expressao go to state 96 - expressao_simples go to state 73 - termo go to state 74 - fator go to state 75 + 57 comando_sem_rotulo: comando_condicional • + $padrão reduzir usando a regra 57 (comando_sem_rotulo) -state 70 - 92 fator: IDENT . @21 chamada_procedimento +Estado 69 - $default reduce using rule 91 (@21) + 103 comando_condicional: if_then • cond_else - @21 go to state 97 + ELSE deslocar, e ir ao estado 91 + $padrão reduzir usando a regra 105 (cond_else) -state 71 + cond_else ir ao estado 92 - 93 fator: NUMERO . - $default reduce using rule 93 (fator) +Estado 70 + 31 inicializa_procedimento: $@9 bloco $@10 • PONTO_E_VIRGULA -state 72 + PONTO_E_VIRGULA deslocar, e ir ao estado 93 - 78 expressao: expressao . IGUAL expressao_simples - 79 | expressao . DIFERENTE expressao_simples - 80 | expressao . MENOR expressao_simples - 81 | expressao . MENOR_IGUAL expressao_simples - 82 | expressao . MAIOR expressao_simples - 83 | expressao . MAIOR_IGUAL expressao_simples - 103 if_then: IF expressao . @24 THEN comando_sem_rotulo - IGUAL shift, and go to state 98 - DIFERENTE shift, and go to state 99 - MENOR_IGUAL shift, and go to state 100 - MAIOR_IGUAL shift, and go to state 101 - MENOR shift, and go to state 102 - MAIOR shift, and go to state 103 +Estado 71 - $default reduce using rule 102 (@24) + 18 lista_id_var: lista_id_var VIRGULA IDENT • - @24 go to state 104 + $padrão reduzir usando a regra 18 (lista_id_var) -state 73 +Estado 72 - 84 expressao: expressao_simples . - 85 expressao_simples: expressao_simples . MAIS termo - 86 | expressao_simples . MENOS termo + 17 tipo: IDENT • - MAIS shift, and go to state 105 - MENOS shift, and go to state 106 + $padrão reduzir usando a regra 17 (tipo) - $default reduce using rule 84 (expressao) +Estado 73 -state 74 + 16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo • $@6 PONTO_E_VIRGULA - 87 expressao_simples: termo . - 88 termo: termo . ASTERISCO fator - 89 | termo . DIV fator + $padrão reduzir usando a regra 15 ($@6) - DIV shift, and go to state 107 - ASTERISCO shift, and go to state 108 + $@6 ir ao estado 94 - $default reduce using rule 87 (expressao_simples) +Estado 74 -state 75 + 38 parametros_ou_nada: ABRE_PARENTESES $@14 • paramentros_formais $@15 FECHA_PARENTESES - 90 termo: fator . + VAR deslocar, e ir ao estado 95 - $default reduce using rule 90 (termo) + $padrão reduzir usando a regra 44 ($@17) + paramentros_formais ir ao estado 96 + secao_pfs ir ao estado 97 + $@17 ir ao estado 98 -state 76 - 71 leitura: READ ABRE_PARENTESES . lista_leituras FECHA_PARENTESES +Estado 75 - IDENT shift, and go to state 109 + 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada $@8 • PONTO_E_VIRGULA - lista_leituras go to state 110 - simb_leitura go to state 111 + PONTO_E_VIRGULA deslocar, e ir ao estado 99 -state 77 +Estado 76 - 75 escrita: WRITE ABRE_PARENTESES . lista_escritas FECHA_PARENTESES + 35 declaracao_funcao: FUNCTION IDENT $@11 parametros_ou_nada DOIS_PONTOS • $@12 tipo PONTO_E_VIRGULA bloco $@13 PONTO_E_VIRGULA - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + $padrão reduzir usando a regra 33 ($@12) - lista_escritas go to state 112 - expressao_simples go to state 113 - termo go to state 74 - fator go to state 75 + $@12 ir ao estado 100 -state 78 +Estado 77 - 45 comando_composto: T_BEGIN comandos T_END . + 62 atribuicao_ou_procedimento: IDENT $@18 • atribuicao_ou_procedimento_token - $default reduce using rule 45 (comando_composto) + ATRIBUICAO reduzir usando a regra 65 ($@19) + $padrão reduzir usando a regra 67 ($@20) + atribuicao_ou_procedimento_token ir ao estado 101 + atribuicao ir ao estado 102 + $@19 ir ao estado 103 + chamada_procedimento ir ao estado 104 + $@20 ir ao estado 105 -state 79 - 46 comandos: comando PONTO_E_VIRGULA . comandos - 47 | comando PONTO_E_VIRGULA . +Estado 78 - T_BEGIN shift, and go to state 38 - IDENT shift, and go to state 45 - IF shift, and go to state 46 - NUMERO shift, and go to state 47 - READ shift, and go to state 48 - WRITE shift, and go to state 49 + 97 fator: ABRE_PARENTESES • expressao FECHA_PARENTESES + 98 | ABRE_PARENTESES • expressao_simples FECHA_PARENTESES - T_END reduce using rule 47 (comandos) - T_END [reduce using rule 48 (comandos)] - WHILE reduce using rule 96 (@22) - $default reduce using rule 47 (comandos) + ABRE_PARENTESES deslocar, e ir ao estado 78 + IDENT deslocar, e ir ao estado 79 + NUMERO deslocar, e ir ao estado 80 - comando_composto go to state 50 - comandos go to state 114 - comando go to state 52 - comando_sem_rotulo go to state 53 - atribuicao_ou_procedimento go to state 54 - leitura go to state 55 - escrita go to state 56 - numero go to state 57 - comando_repetitivo go to state 58 - @22 go to state 59 - comando_condicional go to state 60 - if_then go to state 61 + expressao ir ao estado 106 + expressao_simples ir ao estado 107 + termo ir ao estado 83 + fator ir ao estado 84 -state 80 +Estado 79 - 49 comando: numero DOIS_PONTOS . comando_sem_rotulo + 95 fator: IDENT • $@23 chamada_procedimento - T_BEGIN shift, and go to state 38 - IDENT shift, and go to state 45 - IF shift, and go to state 46 - READ shift, and go to state 48 - WRITE shift, and go to state 49 + $padrão reduzir usando a regra 94 ($@23) - $default reduce using rule 96 (@22) + $@23 ir ao estado 108 - comando_composto go to state 50 - comando_sem_rotulo go to state 115 - atribuicao_ou_procedimento go to state 54 - leitura go to state 55 - escrita go to state 56 - comando_repetitivo go to state 58 - @22 go to state 59 - comando_condicional go to state 60 - if_then go to state 61 +Estado 80 -state 81 + 96 fator: NUMERO • - 98 comando_repetitivo: @22 WHILE . expressao DO @23 comando_sem_rotulo + $padrão reduzir usando a regra 96 (fator) - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 - expressao go to state 116 - expressao_simples go to state 73 - termo go to state 74 - fator go to state 75 +Estado 81 + 107 if_then: IF expressao • $@26 THEN comando_sem_rotulo -state 82 + $padrão reduzir usando a regra 106 ($@26) - 100 cond_else: ELSE . comando_sem_rotulo + $@26 ir ao estado 109 - T_BEGIN shift, and go to state 38 - IDENT shift, and go to state 45 - IF shift, and go to state 46 - READ shift, and go to state 48 - WRITE shift, and go to state 49 - $default reduce using rule 96 (@22) +Estado 82 - comando_composto go to state 50 - comando_sem_rotulo go to state 117 - atribuicao_ou_procedimento go to state 54 - leitura go to state 55 - escrita go to state 56 - comando_repetitivo go to state 58 - @22 go to state 59 - comando_condicional go to state 60 - if_then go to state 61 + 82 expressao: expressao_simples • IGUAL expressao_simples + 83 | expressao_simples • DIFERENTE expressao_simples + 84 | expressao_simples • MENOR expressao_simples + 85 | expressao_simples • MENOR_IGUAL expressao_simples + 86 | expressao_simples • MAIOR expressao_simples + 87 | expressao_simples • MAIOR_IGUAL expressao_simples + 88 expressao_simples: expressao_simples • MAIS termo + 89 | expressao_simples • MENOS termo + IGUAL deslocar, e ir ao estado 110 + DIFERENTE deslocar, e ir ao estado 111 + MENOR_IGUAL deslocar, e ir ao estado 112 + MAIOR_IGUAL deslocar, e ir ao estado 113 + MENOR deslocar, e ir ao estado 114 + MAIOR deslocar, e ir ao estado 115 + MAIS deslocar, e ir ao estado 116 + MENOS deslocar, e ir ao estado 117 -state 83 - 99 comando_condicional: if_then cond_else . +Estado 83 - $default reduce using rule 99 (comando_condicional) + 90 expressao_simples: termo • + 91 termo: termo • ASTERISCO fator + 92 | termo • DIV fator + DIV deslocar, e ir ao estado 118 + ASTERISCO deslocar, e ir ao estado 119 -state 84 + $padrão reduzir usando a regra 90 (expressao_simples) - 16 declara_var: @5 lista_id_var DOIS_PONTOS tipo @6 . PONTO_E_VIRGULA - PONTO_E_VIRGULA shift, and go to state 118 +Estado 84 + 93 termo: fator • -state 85 + $padrão reduzir usando a regra 93 (termo) - 39 secao_pfs: VAR . @14 lista_id_pf DOIS_PONTOS tipo - $default reduce using rule 38 (@14) +Estado 85 - @14 go to state 119 + 75 leitura: READ ABRE_PARENTESES • lista_leituras FECHA_PARENTESES + IDENT deslocar, e ir ao estado 120 -state 86 + lista_leituras ir ao estado 121 + simb_leitura ir ao estado 122 - 34 parametros_ou_nada: ABRE_PARENTESES @12 paramentros_formais . @13 FECHA_PARENTESES - 37 paramentros_formais: paramentros_formais . PONTO_E_VIRGULA secao_pfs - PONTO_E_VIRGULA shift, and go to state 120 +Estado 86 - $default reduce using rule 33 (@13) + 79 escrita: WRITE ABRE_PARENTESES • lista_escritas FECHA_PARENTESES - @13 go to state 121 + ABRE_PARENTESES deslocar, e ir ao estado 78 + IDENT deslocar, e ir ao estado 79 + NUMERO deslocar, e ir ao estado 80 + lista_escritas ir ao estado 123 + expressao_simples ir ao estado 124 + termo ir ao estado 83 + fator ir ao estado 84 -state 87 - 36 paramentros_formais: secao_pfs . +Estado 87 - $default reduce using rule 36 (paramentros_formais) + 49 comando_composto: T_BEGIN comandos T_END • + $padrão reduzir usando a regra 49 (comando_composto) -state 88 - 41 secao_pfs: @15 . lista_id_pf DOIS_PONTOS tipo +Estado 88 - IDENT shift, and go to state 122 + 50 comandos: comando PONTO_E_VIRGULA • comandos + 51 | comando PONTO_E_VIRGULA • - lista_id_pf go to state 123 - parametro go to state 124 + T_BEGIN deslocar, e ir ao estado 43 + IDENT deslocar, e ir ao estado 53 + IF deslocar, e ir ao estado 54 + NUMERO deslocar, e ir ao estado 55 + READ deslocar, e ir ao estado 56 + WRITE deslocar, e ir ao estado 57 + T_END reduzir usando a regra 51 (comandos) + T_END [reduzir usando a regra 52 (comandos)] + WHILE reduzir usando a regra 100 ($@24) + $padrão reduzir usando a regra 51 (comandos) -state 89 + comando_composto ir ao estado 58 + comandos ir ao estado 125 + comando ir ao estado 60 + comando_sem_rotulo ir ao estado 61 + atribuicao_ou_procedimento ir ao estado 62 + leitura ir ao estado 63 + escrita ir ao estado 64 + numero ir ao estado 65 + comando_repetitivo ir ao estado 66 + $@24 ir ao estado 67 + comando_condicional ir ao estado 68 + if_then ir ao estado 69 - 31 declaracao_funcao: FUNCTION IDENT @9 parametros_ou_nada DOIS_PONTOS @10 . tipo PONTO_E_VIRGULA bloco @11 PONTO_E_VIRGULA - IDENT shift, and go to state 63 +Estado 89 - tipo go to state 125 + 53 comando: numero DOIS_PONTOS • comando_sem_rotulo + T_BEGIN deslocar, e ir ao estado 43 + IDENT deslocar, e ir ao estado 53 + IF deslocar, e ir ao estado 54 + READ deslocar, e ir ao estado 56 + WRITE deslocar, e ir ao estado 57 -state 90 + $padrão reduzir usando a regra 100 ($@24) - 27 declaracao_procedimento: PROCEDURE IDENT @7 parametros_ou_nada PONTO_E_VIRGULA . bloco @8 PONTO_E_VIRGULA + comando_composto ir ao estado 58 + comando_sem_rotulo ir ao estado 126 + atribuicao_ou_procedimento ir ao estado 62 + leitura ir ao estado 63 + escrita ir ao estado 64 + comando_repetitivo ir ao estado 66 + $@24 ir ao estado 67 + comando_condicional ir ao estado 68 + if_then ir ao estado 69 - LABEL shift, and go to state 13 - $default reduce using rule 7 (parte_declara_rotulos) +Estado 90 - bloco go to state 126 - parte_declara_rotulos go to state 15 + 102 comando_repetitivo: $@24 WHILE • expressao DO $@25 comando_sem_rotulo + ABRE_PARENTESES deslocar, e ir ao estado 78 + IDENT deslocar, e ir ao estado 79 + NUMERO deslocar, e ir ao estado 80 -state 91 + expressao ir ao estado 127 + expressao_simples ir ao estado 82 + termo ir ao estado 83 + fator ir ao estado 84 - 58 atribuicao_ou_procedimento: IDENT @16 atribuicao_ou_procedimento_token . - $default reduce using rule 58 (atribuicao_ou_procedimento) +Estado 91 + 104 cond_else: ELSE • comando_sem_rotulo -state 92 + T_BEGIN deslocar, e ir ao estado 43 + IDENT deslocar, e ir ao estado 53 + IF deslocar, e ir ao estado 54 + READ deslocar, e ir ao estado 56 + WRITE deslocar, e ir ao estado 57 - 59 atribuicao_ou_procedimento_token: atribuicao . + $padrão reduzir usando a regra 100 ($@24) - $default reduce using rule 59 (atribuicao_ou_procedimento_token) + comando_composto ir ao estado 58 + comando_sem_rotulo ir ao estado 128 + atribuicao_ou_procedimento ir ao estado 62 + leitura ir ao estado 63 + escrita ir ao estado 64 + comando_repetitivo ir ao estado 66 + $@24 ir ao estado 67 + comando_condicional ir ao estado 68 + if_then ir ao estado 69 -state 93 +Estado 92 - 62 atribuicao: @17 . ATRIBUICAO expressao_simples + 103 comando_condicional: if_then cond_else • - ATRIBUICAO shift, and go to state 127 + $padrão reduzir usando a regra 103 (comando_condicional) -state 94 +Estado 93 - 60 atribuicao_ou_procedimento_token: chamada_procedimento . + 31 inicializa_procedimento: $@9 bloco $@10 PONTO_E_VIRGULA • - $default reduce using rule 60 (atribuicao_ou_procedimento_token) + $padrão reduzir usando a regra 31 (inicializa_procedimento) -state 95 +Estado 94 - 64 chamada_procedimento: @18 . lista_parametros + 16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo $@6 • PONTO_E_VIRGULA - ABRE_PARENTESES shift, and go to state 128 + PONTO_E_VIRGULA deslocar, e ir ao estado 129 - $default reduce using rule 66 (lista_parametros) - lista_parametros go to state 129 +Estado 95 + 43 secao_pfs: VAR • $@16 lista_id_pf DOIS_PONTOS tipo -state 96 + $padrão reduzir usando a regra 42 ($@16) - 78 expressao: expressao . IGUAL expressao_simples - 79 | expressao . DIFERENTE expressao_simples - 80 | expressao . MENOR expressao_simples - 81 | expressao . MENOR_IGUAL expressao_simples - 82 | expressao . MAIOR expressao_simples - 83 | expressao . MAIOR_IGUAL expressao_simples - 94 fator: ABRE_PARENTESES expressao . FECHA_PARENTESES + $@16 ir ao estado 130 - FECHA_PARENTESES shift, and go to state 130 - IGUAL shift, and go to state 98 - DIFERENTE shift, and go to state 99 - MENOR_IGUAL shift, and go to state 100 - MAIOR_IGUAL shift, and go to state 101 - MENOR shift, and go to state 102 - MAIOR shift, and go to state 103 +Estado 96 -state 97 + 38 parametros_ou_nada: ABRE_PARENTESES $@14 paramentros_formais • $@15 FECHA_PARENTESES + 41 paramentros_formais: paramentros_formais • PONTO_E_VIRGULA secao_pfs - 92 fator: IDENT @21 . chamada_procedimento + PONTO_E_VIRGULA deslocar, e ir ao estado 131 - $default reduce using rule 63 (@18) + $padrão reduzir usando a regra 37 ($@15) - chamada_procedimento go to state 131 - @18 go to state 95 + $@15 ir ao estado 132 -state 98 +Estado 97 - 78 expressao: expressao IGUAL . expressao_simples + 40 paramentros_formais: secao_pfs • - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + $padrão reduzir usando a regra 40 (paramentros_formais) - expressao_simples go to state 132 - termo go to state 74 - fator go to state 75 +Estado 98 -state 99 + 45 secao_pfs: $@17 • lista_id_pf DOIS_PONTOS tipo - 79 expressao: expressao DIFERENTE . expressao_simples + IDENT deslocar, e ir ao estado 133 - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + lista_id_pf ir ao estado 134 + parametro ir ao estado 135 - expressao_simples go to state 133 - termo go to state 74 - fator go to state 75 +Estado 99 -state 100 + 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada $@8 PONTO_E_VIRGULA • - 81 expressao: expressao MENOR_IGUAL . expressao_simples + $padrão reduzir usando a regra 27 (declaracao_procedimento) - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 - expressao_simples go to state 134 - termo go to state 74 - fator go to state 75 +Estado 100 + 35 declaracao_funcao: FUNCTION IDENT $@11 parametros_ou_nada DOIS_PONTOS $@12 • tipo PONTO_E_VIRGULA bloco $@13 PONTO_E_VIRGULA -state 101 + IDENT deslocar, e ir ao estado 72 - 83 expressao: expressao MAIOR_IGUAL . expressao_simples + tipo ir ao estado 136 - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 - expressao_simples go to state 135 - termo go to state 74 - fator go to state 75 +Estado 101 + 62 atribuicao_ou_procedimento: IDENT $@18 atribuicao_ou_procedimento_token • -state 102 + $padrão reduzir usando a regra 62 (atribuicao_ou_procedimento) - 80 expressao: expressao MENOR . expressao_simples - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 +Estado 102 - expressao_simples go to state 136 - termo go to state 74 - fator go to state 75 + 63 atribuicao_ou_procedimento_token: atribuicao • + $padrão reduzir usando a regra 63 (atribuicao_ou_procedimento_token) -state 103 - 82 expressao: expressao MAIOR . expressao_simples +Estado 103 - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + 66 atribuicao: $@19 • ATRIBUICAO expressao_simples - expressao_simples go to state 137 - termo go to state 74 - fator go to state 75 + ATRIBUICAO deslocar, e ir ao estado 137 -state 104 +Estado 104 - 103 if_then: IF expressao @24 . THEN comando_sem_rotulo + 64 atribuicao_ou_procedimento_token: chamada_procedimento • - THEN shift, and go to state 138 + $padrão reduzir usando a regra 64 (atribuicao_ou_procedimento_token) -state 105 +Estado 105 - 85 expressao_simples: expressao_simples MAIS . termo + 68 chamada_procedimento: $@20 • lista_parametros - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + ABRE_PARENTESES deslocar, e ir ao estado 138 - termo go to state 139 - fator go to state 75 + $padrão reduzir usando a regra 70 (lista_parametros) + lista_parametros ir ao estado 139 -state 106 - 86 expressao_simples: expressao_simples MENOS . termo +Estado 106 - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + 97 fator: ABRE_PARENTESES expressao • FECHA_PARENTESES - termo go to state 140 - fator go to state 75 + FECHA_PARENTESES deslocar, e ir ao estado 140 -state 107 +Estado 107 - 89 termo: termo DIV . fator + 82 expressao: expressao_simples • IGUAL expressao_simples + 83 | expressao_simples • DIFERENTE expressao_simples + 84 | expressao_simples • MENOR expressao_simples + 85 | expressao_simples • MENOR_IGUAL expressao_simples + 86 | expressao_simples • MAIOR expressao_simples + 87 | expressao_simples • MAIOR_IGUAL expressao_simples + 88 expressao_simples: expressao_simples • MAIS termo + 89 | expressao_simples • MENOS termo + 98 fator: ABRE_PARENTESES expressao_simples • FECHA_PARENTESES - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + FECHA_PARENTESES deslocar, e ir ao estado 141 + IGUAL deslocar, e ir ao estado 110 + DIFERENTE deslocar, e ir ao estado 111 + MENOR_IGUAL deslocar, e ir ao estado 112 + MAIOR_IGUAL deslocar, e ir ao estado 113 + MENOR deslocar, e ir ao estado 114 + MAIOR deslocar, e ir ao estado 115 + MAIS deslocar, e ir ao estado 116 + MENOS deslocar, e ir ao estado 117 - fator go to state 141 +Estado 108 -state 108 + 95 fator: IDENT $@23 • chamada_procedimento - 88 termo: termo ASTERISCO . fator + $padrão reduzir usando a regra 67 ($@20) - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + chamada_procedimento ir ao estado 142 + $@20 ir ao estado 105 - fator go to state 142 +Estado 109 -state 109 + 107 if_then: IF expressao $@26 • THEN comando_sem_rotulo - 74 simb_leitura: IDENT . + THEN deslocar, e ir ao estado 143 - $default reduce using rule 74 (simb_leitura) +Estado 110 -state 110 + 82 expressao: expressao_simples IGUAL • expressao_simples - 71 leitura: READ ABRE_PARENTESES lista_leituras . FECHA_PARENTESES - 72 lista_leituras: lista_leituras . VIRGULA simb_leitura + ABRE_PARENTESES deslocar, e ir ao estado 78 + IDENT deslocar, e ir ao estado 79 + NUMERO deslocar, e ir ao estado 80 - FECHA_PARENTESES shift, and go to state 143 - VIRGULA shift, and go to state 144 + expressao_simples ir ao estado 144 + termo ir ao estado 83 + fator ir ao estado 84 -state 111 +Estado 111 - 73 lista_leituras: simb_leitura . + 83 expressao: expressao_simples DIFERENTE • expressao_simples - $default reduce using rule 73 (lista_leituras) + ABRE_PARENTESES deslocar, e ir ao estado 78 + IDENT deslocar, e ir ao estado 79 + NUMERO deslocar, e ir ao estado 80 + expressao_simples ir ao estado 145 + termo ir ao estado 83 + fator ir ao estado 84 -state 112 - 75 escrita: WRITE ABRE_PARENTESES lista_escritas . FECHA_PARENTESES - 76 lista_escritas: lista_escritas . VIRGULA expressao_simples +Estado 112 - FECHA_PARENTESES shift, and go to state 145 - VIRGULA shift, and go to state 146 + 85 expressao: expressao_simples MENOR_IGUAL • expressao_simples + ABRE_PARENTESES deslocar, e ir ao estado 78 + IDENT deslocar, e ir ao estado 79 + NUMERO deslocar, e ir ao estado 80 -state 113 + expressao_simples ir ao estado 146 + termo ir ao estado 83 + fator ir ao estado 84 - 77 lista_escritas: expressao_simples . - 85 expressao_simples: expressao_simples . MAIS termo - 86 | expressao_simples . MENOS termo - MAIS shift, and go to state 105 - MENOS shift, and go to state 106 +Estado 113 - $default reduce using rule 77 (lista_escritas) + 87 expressao: expressao_simples MAIOR_IGUAL • expressao_simples + ABRE_PARENTESES deslocar, e ir ao estado 78 + IDENT deslocar, e ir ao estado 79 + NUMERO deslocar, e ir ao estado 80 -state 114 + expressao_simples ir ao estado 147 + termo ir ao estado 83 + fator ir ao estado 84 - 46 comandos: comando PONTO_E_VIRGULA comandos . - $default reduce using rule 46 (comandos) +Estado 114 + 84 expressao: expressao_simples MENOR • expressao_simples -state 115 + ABRE_PARENTESES deslocar, e ir ao estado 78 + IDENT deslocar, e ir ao estado 79 + NUMERO deslocar, e ir ao estado 80 - 49 comando: numero DOIS_PONTOS comando_sem_rotulo . + expressao_simples ir ao estado 148 + termo ir ao estado 83 + fator ir ao estado 84 - $default reduce using rule 49 (comando) +Estado 115 -state 116 + 86 expressao: expressao_simples MAIOR • expressao_simples - 78 expressao: expressao . IGUAL expressao_simples - 79 | expressao . DIFERENTE expressao_simples - 80 | expressao . MENOR expressao_simples - 81 | expressao . MENOR_IGUAL expressao_simples - 82 | expressao . MAIOR expressao_simples - 83 | expressao . MAIOR_IGUAL expressao_simples - 98 comando_repetitivo: @22 WHILE expressao . DO @23 comando_sem_rotulo + ABRE_PARENTESES deslocar, e ir ao estado 78 + IDENT deslocar, e ir ao estado 79 + NUMERO deslocar, e ir ao estado 80 - DO shift, and go to state 147 - IGUAL shift, and go to state 98 - DIFERENTE shift, and go to state 99 - MENOR_IGUAL shift, and go to state 100 - MAIOR_IGUAL shift, and go to state 101 - MENOR shift, and go to state 102 - MAIOR shift, and go to state 103 + expressao_simples ir ao estado 149 + termo ir ao estado 83 + fator ir ao estado 84 -state 117 +Estado 116 - 100 cond_else: ELSE comando_sem_rotulo . + 88 expressao_simples: expressao_simples MAIS • termo - $default reduce using rule 100 (cond_else) + ABRE_PARENTESES deslocar, e ir ao estado 78 + IDENT deslocar, e ir ao estado 79 + NUMERO deslocar, e ir ao estado 80 + termo ir ao estado 150 + fator ir ao estado 84 -state 118 - 16 declara_var: @5 lista_id_var DOIS_PONTOS tipo @6 PONTO_E_VIRGULA . +Estado 117 - $default reduce using rule 16 (declara_var) + 89 expressao_simples: expressao_simples MENOS • termo + ABRE_PARENTESES deslocar, e ir ao estado 78 + IDENT deslocar, e ir ao estado 79 + NUMERO deslocar, e ir ao estado 80 -state 119 + termo ir ao estado 151 + fator ir ao estado 84 - 39 secao_pfs: VAR @14 . lista_id_pf DOIS_PONTOS tipo - IDENT shift, and go to state 122 +Estado 118 - lista_id_pf go to state 148 - parametro go to state 124 + 92 termo: termo DIV • fator + ABRE_PARENTESES deslocar, e ir ao estado 78 + IDENT deslocar, e ir ao estado 79 + NUMERO deslocar, e ir ao estado 80 -state 120 + fator ir ao estado 152 - 37 paramentros_formais: paramentros_formais PONTO_E_VIRGULA . secao_pfs - VAR shift, and go to state 85 +Estado 119 - $default reduce using rule 40 (@15) + 91 termo: termo ASTERISCO • fator - secao_pfs go to state 149 - @15 go to state 88 + ABRE_PARENTESES deslocar, e ir ao estado 78 + IDENT deslocar, e ir ao estado 79 + NUMERO deslocar, e ir ao estado 80 + fator ir ao estado 153 -state 121 - 34 parametros_ou_nada: ABRE_PARENTESES @12 paramentros_formais @13 . FECHA_PARENTESES +Estado 120 - FECHA_PARENTESES shift, and go to state 150 + 78 simb_leitura: IDENT • + $padrão reduzir usando a regra 78 (simb_leitura) -state 122 - 44 parametro: IDENT . +Estado 121 - $default reduce using rule 44 (parametro) + 75 leitura: READ ABRE_PARENTESES lista_leituras • FECHA_PARENTESES + 76 lista_leituras: lista_leituras • VIRGULA simb_leitura + FECHA_PARENTESES deslocar, e ir ao estado 154 + VIRGULA deslocar, e ir ao estado 155 -state 123 - 41 secao_pfs: @15 lista_id_pf . DOIS_PONTOS tipo +Estado 122 - DOIS_PONTOS shift, and go to state 151 + 77 lista_leituras: simb_leitura • + $padrão reduzir usando a regra 77 (lista_leituras) -state 124 - 42 lista_id_pf: parametro . VIRGULA lista_id_pf - 43 | parametro . +Estado 123 - VIRGULA shift, and go to state 152 + 79 escrita: WRITE ABRE_PARENTESES lista_escritas • FECHA_PARENTESES + 80 lista_escritas: lista_escritas • VIRGULA expressao_simples - $default reduce using rule 43 (lista_id_pf) + FECHA_PARENTESES deslocar, e ir ao estado 156 + VIRGULA deslocar, e ir ao estado 157 -state 125 +Estado 124 - 31 declaracao_funcao: FUNCTION IDENT @9 parametros_ou_nada DOIS_PONTOS @10 tipo . PONTO_E_VIRGULA bloco @11 PONTO_E_VIRGULA + 81 lista_escritas: expressao_simples • + 88 expressao_simples: expressao_simples • MAIS termo + 89 | expressao_simples • MENOS termo - PONTO_E_VIRGULA shift, and go to state 153 + MAIS deslocar, e ir ao estado 116 + MENOS deslocar, e ir ao estado 117 + $padrão reduzir usando a regra 81 (lista_escritas) -state 126 - 27 declaracao_procedimento: PROCEDURE IDENT @7 parametros_ou_nada PONTO_E_VIRGULA bloco . @8 PONTO_E_VIRGULA +Estado 125 - $default reduce using rule 26 (@8) + 50 comandos: comando PONTO_E_VIRGULA comandos • - @8 go to state 154 + $padrão reduzir usando a regra 50 (comandos) -state 127 +Estado 126 - 62 atribuicao: @17 ATRIBUICAO . expressao_simples + 53 comando: numero DOIS_PONTOS comando_sem_rotulo • - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + $padrão reduzir usando a regra 53 (comando) - expressao_simples go to state 155 - termo go to state 74 - fator go to state 75 +Estado 127 -state 128 + 102 comando_repetitivo: $@24 WHILE expressao • DO $@25 comando_sem_rotulo - 65 lista_parametros: ABRE_PARENTESES . lista_parametros_parenteses FECHA_PARENTESES + DO deslocar, e ir ao estado 158 - $default reduce using rule 69 (@20) - lista_parametros_parenteses go to state 156 - @20 go to state 157 +Estado 128 + 104 cond_else: ELSE comando_sem_rotulo • -state 129 + $padrão reduzir usando a regra 104 (cond_else) - 64 chamada_procedimento: @18 lista_parametros . - $default reduce using rule 64 (chamada_procedimento) +Estado 129 + 16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo $@6 PONTO_E_VIRGULA • -state 130 + $padrão reduzir usando a regra 16 (declara_var) - 94 fator: ABRE_PARENTESES expressao FECHA_PARENTESES . - $default reduce using rule 94 (fator) +Estado 130 + 43 secao_pfs: VAR $@16 • lista_id_pf DOIS_PONTOS tipo -state 131 + IDENT deslocar, e ir ao estado 133 - 92 fator: IDENT @21 chamada_procedimento . + lista_id_pf ir ao estado 159 + parametro ir ao estado 135 - $default reduce using rule 92 (fator) +Estado 131 -state 132 + 41 paramentros_formais: paramentros_formais PONTO_E_VIRGULA • secao_pfs - 78 expressao: expressao IGUAL expressao_simples . - 85 expressao_simples: expressao_simples . MAIS termo - 86 | expressao_simples . MENOS termo + VAR deslocar, e ir ao estado 95 - MAIS shift, and go to state 105 - MENOS shift, and go to state 106 + $padrão reduzir usando a regra 44 ($@17) - $default reduce using rule 78 (expressao) + secao_pfs ir ao estado 160 + $@17 ir ao estado 98 -state 133 +Estado 132 - 79 expressao: expressao DIFERENTE expressao_simples . - 85 expressao_simples: expressao_simples . MAIS termo - 86 | expressao_simples . MENOS termo + 38 parametros_ou_nada: ABRE_PARENTESES $@14 paramentros_formais $@15 • FECHA_PARENTESES - MAIS shift, and go to state 105 - MENOS shift, and go to state 106 + FECHA_PARENTESES deslocar, e ir ao estado 161 - $default reduce using rule 79 (expressao) +Estado 133 -state 134 + 48 parametro: IDENT • - 81 expressao: expressao MENOR_IGUAL expressao_simples . - 85 expressao_simples: expressao_simples . MAIS termo - 86 | expressao_simples . MENOS termo + $padrão reduzir usando a regra 48 (parametro) - MAIS shift, and go to state 105 - MENOS shift, and go to state 106 - $default reduce using rule 81 (expressao) +Estado 134 + 45 secao_pfs: $@17 lista_id_pf • DOIS_PONTOS tipo -state 135 + DOIS_PONTOS deslocar, e ir ao estado 162 - 83 expressao: expressao MAIOR_IGUAL expressao_simples . - 85 expressao_simples: expressao_simples . MAIS termo - 86 | expressao_simples . MENOS termo - MAIS shift, and go to state 105 - MENOS shift, and go to state 106 +Estado 135 - $default reduce using rule 83 (expressao) + 46 lista_id_pf: parametro • VIRGULA lista_id_pf + 47 | parametro • + VIRGULA deslocar, e ir ao estado 163 -state 136 + $padrão reduzir usando a regra 47 (lista_id_pf) - 80 expressao: expressao MENOR expressao_simples . - 85 expressao_simples: expressao_simples . MAIS termo - 86 | expressao_simples . MENOS termo - MAIS shift, and go to state 105 - MENOS shift, and go to state 106 +Estado 136 - $default reduce using rule 80 (expressao) + 35 declaracao_funcao: FUNCTION IDENT $@11 parametros_ou_nada DOIS_PONTOS $@12 tipo • PONTO_E_VIRGULA bloco $@13 PONTO_E_VIRGULA + PONTO_E_VIRGULA deslocar, e ir ao estado 164 -state 137 - 82 expressao: expressao MAIOR expressao_simples . - 85 expressao_simples: expressao_simples . MAIS termo - 86 | expressao_simples . MENOS termo +Estado 137 - MAIS shift, and go to state 105 - MENOS shift, and go to state 106 + 66 atribuicao: $@19 ATRIBUICAO • expressao_simples - $default reduce using rule 82 (expressao) + ABRE_PARENTESES deslocar, e ir ao estado 78 + IDENT deslocar, e ir ao estado 79 + NUMERO deslocar, e ir ao estado 80 + expressao_simples ir ao estado 165 + termo ir ao estado 83 + fator ir ao estado 84 -state 138 - 103 if_then: IF expressao @24 THEN . comando_sem_rotulo +Estado 138 - T_BEGIN shift, and go to state 38 - IDENT shift, and go to state 45 - IF shift, and go to state 46 - READ shift, and go to state 48 - WRITE shift, and go to state 49 + 69 lista_parametros: ABRE_PARENTESES • lista_parametros_parenteses FECHA_PARENTESES - $default reduce using rule 96 (@22) + $padrão reduzir usando a regra 73 ($@22) - comando_composto go to state 50 - comando_sem_rotulo go to state 158 - atribuicao_ou_procedimento go to state 54 - leitura go to state 55 - escrita go to state 56 - comando_repetitivo go to state 58 - @22 go to state 59 - comando_condicional go to state 60 - if_then go to state 61 + lista_parametros_parenteses ir ao estado 166 + $@22 ir ao estado 167 -state 139 +Estado 139 - 85 expressao_simples: expressao_simples MAIS termo . - 88 termo: termo . ASTERISCO fator - 89 | termo . DIV fator + 68 chamada_procedimento: $@20 lista_parametros • - DIV shift, and go to state 107 - ASTERISCO shift, and go to state 108 + $padrão reduzir usando a regra 68 (chamada_procedimento) - $default reduce using rule 85 (expressao_simples) +Estado 140 -state 140 + 97 fator: ABRE_PARENTESES expressao FECHA_PARENTESES • - 86 expressao_simples: expressao_simples MENOS termo . - 88 termo: termo . ASTERISCO fator - 89 | termo . DIV fator + $padrão reduzir usando a regra 97 (fator) - DIV shift, and go to state 107 - ASTERISCO shift, and go to state 108 - $default reduce using rule 86 (expressao_simples) +Estado 141 + 98 fator: ABRE_PARENTESES expressao_simples FECHA_PARENTESES • -state 141 + $padrão reduzir usando a regra 98 (fator) - 89 termo: termo DIV fator . - $default reduce using rule 89 (termo) +Estado 142 + 95 fator: IDENT $@23 chamada_procedimento • -state 142 + $padrão reduzir usando a regra 95 (fator) - 88 termo: termo ASTERISCO fator . - $default reduce using rule 88 (termo) +Estado 143 + 107 if_then: IF expressao $@26 THEN • comando_sem_rotulo -state 143 + T_BEGIN deslocar, e ir ao estado 43 + IDENT deslocar, e ir ao estado 53 + IF deslocar, e ir ao estado 54 + READ deslocar, e ir ao estado 56 + WRITE deslocar, e ir ao estado 57 - 71 leitura: READ ABRE_PARENTESES lista_leituras FECHA_PARENTESES . + $padrão reduzir usando a regra 100 ($@24) - $default reduce using rule 71 (leitura) + comando_composto ir ao estado 58 + comando_sem_rotulo ir ao estado 168 + atribuicao_ou_procedimento ir ao estado 62 + leitura ir ao estado 63 + escrita ir ao estado 64 + comando_repetitivo ir ao estado 66 + $@24 ir ao estado 67 + comando_condicional ir ao estado 68 + if_then ir ao estado 69 -state 144 +Estado 144 - 72 lista_leituras: lista_leituras VIRGULA . simb_leitura + 82 expressao: expressao_simples IGUAL expressao_simples • + 88 expressao_simples: expressao_simples • MAIS termo + 89 | expressao_simples • MENOS termo - IDENT shift, and go to state 109 + MAIS deslocar, e ir ao estado 116 + MENOS deslocar, e ir ao estado 117 - simb_leitura go to state 159 + $padrão reduzir usando a regra 82 (expressao) -state 145 +Estado 145 - 75 escrita: WRITE ABRE_PARENTESES lista_escritas FECHA_PARENTESES . + 83 expressao: expressao_simples DIFERENTE expressao_simples • + 88 expressao_simples: expressao_simples • MAIS termo + 89 | expressao_simples • MENOS termo - $default reduce using rule 75 (escrita) + MAIS deslocar, e ir ao estado 116 + MENOS deslocar, e ir ao estado 117 + $padrão reduzir usando a regra 83 (expressao) -state 146 - 76 lista_escritas: lista_escritas VIRGULA . expressao_simples +Estado 146 - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + 85 expressao: expressao_simples MENOR_IGUAL expressao_simples • + 88 expressao_simples: expressao_simples • MAIS termo + 89 | expressao_simples • MENOS termo - expressao_simples go to state 160 - termo go to state 74 - fator go to state 75 + MAIS deslocar, e ir ao estado 116 + MENOS deslocar, e ir ao estado 117 + $padrão reduzir usando a regra 85 (expressao) -state 147 - 98 comando_repetitivo: @22 WHILE expressao DO . @23 comando_sem_rotulo +Estado 147 - $default reduce using rule 97 (@23) + 87 expressao: expressao_simples MAIOR_IGUAL expressao_simples • + 88 expressao_simples: expressao_simples • MAIS termo + 89 | expressao_simples • MENOS termo - @23 go to state 161 + MAIS deslocar, e ir ao estado 116 + MENOS deslocar, e ir ao estado 117 + $padrão reduzir usando a regra 87 (expressao) -state 148 - 39 secao_pfs: VAR @14 lista_id_pf . DOIS_PONTOS tipo +Estado 148 - DOIS_PONTOS shift, and go to state 162 + 84 expressao: expressao_simples MENOR expressao_simples • + 88 expressao_simples: expressao_simples • MAIS termo + 89 | expressao_simples • MENOS termo + MAIS deslocar, e ir ao estado 116 + MENOS deslocar, e ir ao estado 117 -state 149 + $padrão reduzir usando a regra 84 (expressao) - 37 paramentros_formais: paramentros_formais PONTO_E_VIRGULA secao_pfs . - $default reduce using rule 37 (paramentros_formais) +Estado 149 + 86 expressao: expressao_simples MAIOR expressao_simples • + 88 expressao_simples: expressao_simples • MAIS termo + 89 | expressao_simples • MENOS termo -state 150 + MAIS deslocar, e ir ao estado 116 + MENOS deslocar, e ir ao estado 117 - 34 parametros_ou_nada: ABRE_PARENTESES @12 paramentros_formais @13 FECHA_PARENTESES . + $padrão reduzir usando a regra 86 (expressao) - $default reduce using rule 34 (parametros_ou_nada) +Estado 150 -state 151 + 88 expressao_simples: expressao_simples MAIS termo • + 91 termo: termo • ASTERISCO fator + 92 | termo • DIV fator - 41 secao_pfs: @15 lista_id_pf DOIS_PONTOS . tipo + DIV deslocar, e ir ao estado 118 + ASTERISCO deslocar, e ir ao estado 119 - IDENT shift, and go to state 63 + $padrão reduzir usando a regra 88 (expressao_simples) - tipo go to state 163 +Estado 151 -state 152 + 89 expressao_simples: expressao_simples MENOS termo • + 91 termo: termo • ASTERISCO fator + 92 | termo • DIV fator - 42 lista_id_pf: parametro VIRGULA . lista_id_pf + DIV deslocar, e ir ao estado 118 + ASTERISCO deslocar, e ir ao estado 119 - IDENT shift, and go to state 122 + $padrão reduzir usando a regra 89 (expressao_simples) - lista_id_pf go to state 164 - parametro go to state 124 +Estado 152 -state 153 + 92 termo: termo DIV fator • - 31 declaracao_funcao: FUNCTION IDENT @9 parametros_ou_nada DOIS_PONTOS @10 tipo PONTO_E_VIRGULA . bloco @11 PONTO_E_VIRGULA + $padrão reduzir usando a regra 92 (termo) - LABEL shift, and go to state 13 - $default reduce using rule 7 (parte_declara_rotulos) +Estado 153 - bloco go to state 165 - parte_declara_rotulos go to state 15 + 91 termo: termo ASTERISCO fator • + $padrão reduzir usando a regra 91 (termo) -state 154 - 27 declaracao_procedimento: PROCEDURE IDENT @7 parametros_ou_nada PONTO_E_VIRGULA bloco @8 . PONTO_E_VIRGULA +Estado 154 - PONTO_E_VIRGULA shift, and go to state 166 + 75 leitura: READ ABRE_PARENTESES lista_leituras FECHA_PARENTESES • + $padrão reduzir usando a regra 75 (leitura) -state 155 - 62 atribuicao: @17 ATRIBUICAO expressao_simples . - 85 expressao_simples: expressao_simples . MAIS termo - 86 | expressao_simples . MENOS termo +Estado 155 - MAIS shift, and go to state 105 - MENOS shift, and go to state 106 + 76 lista_leituras: lista_leituras VIRGULA • simb_leitura - $default reduce using rule 62 (atribuicao) + IDENT deslocar, e ir ao estado 120 + simb_leitura ir ao estado 169 -state 156 - 65 lista_parametros: ABRE_PARENTESES lista_parametros_parenteses . FECHA_PARENTESES - 68 lista_parametros_parenteses: lista_parametros_parenteses . VIRGULA @19 expressao_simples +Estado 156 - FECHA_PARENTESES shift, and go to state 167 - VIRGULA shift, and go to state 168 + 79 escrita: WRITE ABRE_PARENTESES lista_escritas FECHA_PARENTESES • + $padrão reduzir usando a regra 79 (escrita) -state 157 - 70 lista_parametros_parenteses: @20 . expressao_simples +Estado 157 - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + 80 lista_escritas: lista_escritas VIRGULA • expressao_simples - expressao_simples go to state 169 - termo go to state 74 - fator go to state 75 + ABRE_PARENTESES deslocar, e ir ao estado 78 + IDENT deslocar, e ir ao estado 79 + NUMERO deslocar, e ir ao estado 80 + expressao_simples ir ao estado 170 + termo ir ao estado 83 + fator ir ao estado 84 -state 158 - 103 if_then: IF expressao @24 THEN comando_sem_rotulo . +Estado 158 - $default reduce using rule 103 (if_then) + 102 comando_repetitivo: $@24 WHILE expressao DO • $@25 comando_sem_rotulo + $padrão reduzir usando a regra 101 ($@25) -state 159 + $@25 ir ao estado 171 - 72 lista_leituras: lista_leituras VIRGULA simb_leitura . - $default reduce using rule 72 (lista_leituras) +Estado 159 + 43 secao_pfs: VAR $@16 lista_id_pf • DOIS_PONTOS tipo -state 160 + DOIS_PONTOS deslocar, e ir ao estado 172 - 76 lista_escritas: lista_escritas VIRGULA expressao_simples . - 85 expressao_simples: expressao_simples . MAIS termo - 86 | expressao_simples . MENOS termo - MAIS shift, and go to state 105 - MENOS shift, and go to state 106 +Estado 160 - $default reduce using rule 76 (lista_escritas) + 41 paramentros_formais: paramentros_formais PONTO_E_VIRGULA secao_pfs • + $padrão reduzir usando a regra 41 (paramentros_formais) -state 161 - 98 comando_repetitivo: @22 WHILE expressao DO @23 . comando_sem_rotulo +Estado 161 - T_BEGIN shift, and go to state 38 - IDENT shift, and go to state 45 - IF shift, and go to state 46 - READ shift, and go to state 48 - WRITE shift, and go to state 49 + 38 parametros_ou_nada: ABRE_PARENTESES $@14 paramentros_formais $@15 FECHA_PARENTESES • - $default reduce using rule 96 (@22) + $padrão reduzir usando a regra 38 (parametros_ou_nada) - comando_composto go to state 50 - comando_sem_rotulo go to state 170 - atribuicao_ou_procedimento go to state 54 - leitura go to state 55 - escrita go to state 56 - comando_repetitivo go to state 58 - @22 go to state 59 - comando_condicional go to state 60 - if_then go to state 61 +Estado 162 -state 162 + 45 secao_pfs: $@17 lista_id_pf DOIS_PONTOS • tipo - 39 secao_pfs: VAR @14 lista_id_pf DOIS_PONTOS . tipo + IDENT deslocar, e ir ao estado 72 - IDENT shift, and go to state 63 + tipo ir ao estado 173 - tipo go to state 171 +Estado 163 -state 163 + 46 lista_id_pf: parametro VIRGULA • lista_id_pf - 41 secao_pfs: @15 lista_id_pf DOIS_PONTOS tipo . + IDENT deslocar, e ir ao estado 133 - $default reduce using rule 41 (secao_pfs) + lista_id_pf ir ao estado 174 + parametro ir ao estado 135 -state 164 +Estado 164 - 42 lista_id_pf: parametro VIRGULA lista_id_pf . + 35 declaracao_funcao: FUNCTION IDENT $@11 parametros_ou_nada DOIS_PONTOS $@12 tipo PONTO_E_VIRGULA • bloco $@13 PONTO_E_VIRGULA - $default reduce using rule 42 (lista_id_pf) + LABEL deslocar, e ir ao estado 13 + $padrão reduzir usando a regra 7 (parte_declara_rotulos) -state 165 + bloco ir ao estado 175 + parte_declara_rotulos ir ao estado 15 - 31 declaracao_funcao: FUNCTION IDENT @9 parametros_ou_nada DOIS_PONTOS @10 tipo PONTO_E_VIRGULA bloco . @11 PONTO_E_VIRGULA - $default reduce using rule 30 (@11) +Estado 165 - @11 go to state 172 + 66 atribuicao: $@19 ATRIBUICAO expressao_simples • + 88 expressao_simples: expressao_simples • MAIS termo + 89 | expressao_simples • MENOS termo + MAIS deslocar, e ir ao estado 116 + MENOS deslocar, e ir ao estado 117 -state 166 + $padrão reduzir usando a regra 66 (atribuicao) - 27 declaracao_procedimento: PROCEDURE IDENT @7 parametros_ou_nada PONTO_E_VIRGULA bloco @8 PONTO_E_VIRGULA . - $default reduce using rule 27 (declaracao_procedimento) +Estado 166 + 69 lista_parametros: ABRE_PARENTESES lista_parametros_parenteses • FECHA_PARENTESES + 72 lista_parametros_parenteses: lista_parametros_parenteses • VIRGULA $@21 expressao_simples -state 167 + FECHA_PARENTESES deslocar, e ir ao estado 176 + VIRGULA deslocar, e ir ao estado 177 - 65 lista_parametros: ABRE_PARENTESES lista_parametros_parenteses FECHA_PARENTESES . - $default reduce using rule 65 (lista_parametros) +Estado 167 + 74 lista_parametros_parenteses: $@22 • expressao_simples -state 168 + ABRE_PARENTESES deslocar, e ir ao estado 78 + IDENT deslocar, e ir ao estado 79 + NUMERO deslocar, e ir ao estado 80 - 68 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA . @19 expressao_simples + expressao_simples ir ao estado 178 + termo ir ao estado 83 + fator ir ao estado 84 - $default reduce using rule 67 (@19) - @19 go to state 173 +Estado 168 + 107 if_then: IF expressao $@26 THEN comando_sem_rotulo • -state 169 + $padrão reduzir usando a regra 107 (if_then) - 70 lista_parametros_parenteses: @20 expressao_simples . - 85 expressao_simples: expressao_simples . MAIS termo - 86 | expressao_simples . MENOS termo - MAIS shift, and go to state 105 - MENOS shift, and go to state 106 +Estado 169 - $default reduce using rule 70 (lista_parametros_parenteses) + 76 lista_leituras: lista_leituras VIRGULA simb_leitura • + $padrão reduzir usando a regra 76 (lista_leituras) -state 170 - 98 comando_repetitivo: @22 WHILE expressao DO @23 comando_sem_rotulo . +Estado 170 - $default reduce using rule 98 (comando_repetitivo) + 80 lista_escritas: lista_escritas VIRGULA expressao_simples • + 88 expressao_simples: expressao_simples • MAIS termo + 89 | expressao_simples • MENOS termo + MAIS deslocar, e ir ao estado 116 + MENOS deslocar, e ir ao estado 117 -state 171 + $padrão reduzir usando a regra 80 (lista_escritas) - 39 secao_pfs: VAR @14 lista_id_pf DOIS_PONTOS tipo . - $default reduce using rule 39 (secao_pfs) +Estado 171 + 102 comando_repetitivo: $@24 WHILE expressao DO $@25 • comando_sem_rotulo -state 172 + T_BEGIN deslocar, e ir ao estado 43 + IDENT deslocar, e ir ao estado 53 + IF deslocar, e ir ao estado 54 + READ deslocar, e ir ao estado 56 + WRITE deslocar, e ir ao estado 57 - 31 declaracao_funcao: FUNCTION IDENT @9 parametros_ou_nada DOIS_PONTOS @10 tipo PONTO_E_VIRGULA bloco @11 . PONTO_E_VIRGULA + $padrão reduzir usando a regra 100 ($@24) - PONTO_E_VIRGULA shift, and go to state 174 + comando_composto ir ao estado 58 + comando_sem_rotulo ir ao estado 179 + atribuicao_ou_procedimento ir ao estado 62 + leitura ir ao estado 63 + escrita ir ao estado 64 + comando_repetitivo ir ao estado 66 + $@24 ir ao estado 67 + comando_condicional ir ao estado 68 + if_then ir ao estado 69 -state 173 +Estado 172 - 68 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA @19 . expressao_simples + 43 secao_pfs: VAR $@16 lista_id_pf DOIS_PONTOS • tipo - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + IDENT deslocar, e ir ao estado 72 - expressao_simples go to state 175 - termo go to state 74 - fator go to state 75 + tipo ir ao estado 180 -state 174 +Estado 173 - 31 declaracao_funcao: FUNCTION IDENT @9 parametros_ou_nada DOIS_PONTOS @10 tipo PONTO_E_VIRGULA bloco @11 PONTO_E_VIRGULA . + 45 secao_pfs: $@17 lista_id_pf DOIS_PONTOS tipo • - $default reduce using rule 31 (declaracao_funcao) + $padrão reduzir usando a regra 45 (secao_pfs) -state 175 +Estado 174 - 68 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA @19 expressao_simples . - 85 expressao_simples: expressao_simples . MAIS termo - 86 | expressao_simples . MENOS termo + 46 lista_id_pf: parametro VIRGULA lista_id_pf • - MAIS shift, and go to state 105 - MENOS shift, and go to state 106 + $padrão reduzir usando a regra 46 (lista_id_pf) - $default reduce using rule 68 (lista_parametros_parenteses) + +Estado 175 + + 35 declaracao_funcao: FUNCTION IDENT $@11 parametros_ou_nada DOIS_PONTOS $@12 tipo PONTO_E_VIRGULA bloco • $@13 PONTO_E_VIRGULA + + $padrão reduzir usando a regra 34 ($@13) + + $@13 ir ao estado 181 + + +Estado 176 + + 69 lista_parametros: ABRE_PARENTESES lista_parametros_parenteses FECHA_PARENTESES • + + $padrão reduzir usando a regra 69 (lista_parametros) + + +Estado 177 + + 72 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA • $@21 expressao_simples + + $padrão reduzir usando a regra 71 ($@21) + + $@21 ir ao estado 182 + + +Estado 178 + + 74 lista_parametros_parenteses: $@22 expressao_simples • + 88 expressao_simples: expressao_simples • MAIS termo + 89 | expressao_simples • MENOS termo + + MAIS deslocar, e ir ao estado 116 + MENOS deslocar, e ir ao estado 117 + + $padrão reduzir usando a regra 74 (lista_parametros_parenteses) + + +Estado 179 + + 102 comando_repetitivo: $@24 WHILE expressao DO $@25 comando_sem_rotulo • + + $padrão reduzir usando a regra 102 (comando_repetitivo) + + +Estado 180 + + 43 secao_pfs: VAR $@16 lista_id_pf DOIS_PONTOS tipo • + + $padrão reduzir usando a regra 43 (secao_pfs) + + +Estado 181 + + 35 declaracao_funcao: FUNCTION IDENT $@11 parametros_ou_nada DOIS_PONTOS $@12 tipo PONTO_E_VIRGULA bloco $@13 • PONTO_E_VIRGULA + + PONTO_E_VIRGULA deslocar, e ir ao estado 183 + + +Estado 182 + + 72 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA $@21 • expressao_simples + + ABRE_PARENTESES deslocar, e ir ao estado 78 + IDENT deslocar, e ir ao estado 79 + NUMERO deslocar, e ir ao estado 80 + + expressao_simples ir ao estado 184 + termo ir ao estado 83 + fator ir ao estado 84 + + +Estado 183 + + 35 declaracao_funcao: FUNCTION IDENT $@11 parametros_ou_nada DOIS_PONTOS $@12 tipo PONTO_E_VIRGULA bloco $@13 PONTO_E_VIRGULA • + + $padrão reduzir usando a regra 35 (declaracao_funcao) + + +Estado 184 + + 72 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA $@21 expressao_simples • + 88 expressao_simples: expressao_simples • MAIS termo + 89 | expressao_simples • MENOS termo + + MAIS deslocar, e ir ao estado 116 + MENOS deslocar, e ir ao estado 117 + + $padrão reduzir usando a regra 72 (lista_parametros_parenteses) diff --git a/ALTERADO/compilador.tab.c b/ALTERADO/compilador.tab.c index 98a160e..6f95354 100644 --- a/ALTERADO/compilador.tab.c +++ b/ALTERADO/compilador.tab.c @@ -1,14 +1,14 @@ -/* A Bison parser, made by GNU Bison 2.3. */ +/* A Bison parser, made by GNU Bison 3.8.2. */ -/* Skeleton implementation for Bison's Yacc-like parsers in C +/* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, + Inc. - This program is free software; you can redistribute it and/or modify + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -16,9 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -36,6 +34,10 @@ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. @@ -43,11 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Identify Bison output. */ -#define YYBISON 1 +/* Identify Bison output, and Bison version. */ +#define YYBISON 30802 -/* Bison version. */ -#define YYBISON_VERSION "2.3" +/* Bison version string. */ +#define YYBISON_VERSION "3.8.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -55,105 +57,16 @@ /* Pure parsers. */ #define YYPURE 0 -/* Using locations. */ -#define YYLSP_NEEDED 0 - - - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - PROGRAM = 258, - ABRE_PARENTESES = 259, - FECHA_PARENTESES = 260, - VIRGULA = 261, - PONTO_E_VIRGULA = 262, - DOIS_PONTOS = 263, - PONTO = 264, - T_BEGIN = 265, - T_END = 266, - VAR = 267, - IDENT = 268, - ATRIBUICAO = 269, - LABEL = 270, - TYPE = 271, - ARRAY = 272, - PROCEDURE = 273, - FUNCTION = 274, - GOTO = 275, - IF = 276, - THEN = 277, - ELSE = 278, - WHILE = 279, - DO = 280, - OR = 281, - DIV = 282, - AND = 283, - NOT = 284, - IGUAL = 285, - DIFERENTE = 286, - MENOR_IGUAL = 287, - MAIOR_IGUAL = 288, - MENOR = 289, - MAIOR = 290, - MAIS = 291, - MENOS = 292, - ASTERISCO = 293, - NUMERO = 294, - READ = 295, - WRITE = 296, - LOWER_THAN_ELSE = 297 - }; -#endif -/* Tokens. */ -#define PROGRAM 258 -#define ABRE_PARENTESES 259 -#define FECHA_PARENTESES 260 -#define VIRGULA 261 -#define PONTO_E_VIRGULA 262 -#define DOIS_PONTOS 263 -#define PONTO 264 -#define T_BEGIN 265 -#define T_END 266 -#define VAR 267 -#define IDENT 268 -#define ATRIBUICAO 269 -#define LABEL 270 -#define TYPE 271 -#define ARRAY 272 -#define PROCEDURE 273 -#define FUNCTION 274 -#define GOTO 275 -#define IF 276 -#define THEN 277 -#define ELSE 278 -#define WHILE 279 -#define DO 280 -#define OR 281 -#define DIV 282 -#define AND 283 -#define NOT 284 -#define IGUAL 285 -#define DIFERENTE 286 -#define MENOR_IGUAL 287 -#define MAIOR_IGUAL 288 -#define MENOR 289 -#define MAIOR 290 -#define MAIS 291 -#define MENOS 292 -#define ASTERISCO 293 -#define NUMERO 294 -#define READ 295 -#define WRITE 296 -#define LOWER_THAN_ELSE 297 - - - - -/* Copy the first part of user declarations. */ +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + + + +/* First part of user prologue. */ #line 6 "compilador.y" #include <stdio.h> @@ -180,69 +93,239 @@ int val_ou_ref; int atr_indireto; +#line 97 "compilador.tab.c" -/* Enabling traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif +# ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast<Type> (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val) +# else +# define YY_CAST(Type, Val) ((Type) (Val)) +# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +# endif +# ifndef YY_NULLPTR +# if defined __cplusplus +# if 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif +# else +# define YY_NULLPTR ((void*)0) +# endif +# endif -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif +#include "compilador.tab.h" +/* Symbol kind. */ +enum yysymbol_kind_t +{ + YYSYMBOL_YYEMPTY = -2, + YYSYMBOL_YYEOF = 0, /* "end of file" */ + YYSYMBOL_YYerror = 1, /* error */ + YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ + YYSYMBOL_PROGRAM = 3, /* PROGRAM */ + YYSYMBOL_ABRE_PARENTESES = 4, /* ABRE_PARENTESES */ + YYSYMBOL_FECHA_PARENTESES = 5, /* FECHA_PARENTESES */ + YYSYMBOL_VIRGULA = 6, /* VIRGULA */ + YYSYMBOL_PONTO_E_VIRGULA = 7, /* PONTO_E_VIRGULA */ + YYSYMBOL_DOIS_PONTOS = 8, /* DOIS_PONTOS */ + YYSYMBOL_PONTO = 9, /* PONTO */ + YYSYMBOL_T_BEGIN = 10, /* T_BEGIN */ + YYSYMBOL_T_END = 11, /* T_END */ + YYSYMBOL_VAR = 12, /* VAR */ + YYSYMBOL_IDENT = 13, /* IDENT */ + YYSYMBOL_ATRIBUICAO = 14, /* ATRIBUICAO */ + YYSYMBOL_LABEL = 15, /* LABEL */ + YYSYMBOL_TYPE = 16, /* TYPE */ + YYSYMBOL_ARRAY = 17, /* ARRAY */ + YYSYMBOL_PROCEDURE = 18, /* PROCEDURE */ + YYSYMBOL_FUNCTION = 19, /* FUNCTION */ + YYSYMBOL_GOTO = 20, /* GOTO */ + YYSYMBOL_IF = 21, /* IF */ + YYSYMBOL_THEN = 22, /* THEN */ + YYSYMBOL_ELSE = 23, /* ELSE */ + YYSYMBOL_WHILE = 24, /* WHILE */ + YYSYMBOL_DO = 25, /* DO */ + YYSYMBOL_OR = 26, /* OR */ + YYSYMBOL_DIV = 27, /* DIV */ + YYSYMBOL_AND = 28, /* AND */ + YYSYMBOL_NOT = 29, /* NOT */ + YYSYMBOL_IGUAL = 30, /* IGUAL */ + YYSYMBOL_DIFERENTE = 31, /* DIFERENTE */ + YYSYMBOL_MENOR_IGUAL = 32, /* MENOR_IGUAL */ + YYSYMBOL_MAIOR_IGUAL = 33, /* MAIOR_IGUAL */ + YYSYMBOL_MENOR = 34, /* MENOR */ + YYSYMBOL_MAIOR = 35, /* MAIOR */ + YYSYMBOL_MAIS = 36, /* MAIS */ + YYSYMBOL_MENOS = 37, /* MENOS */ + YYSYMBOL_ASTERISCO = 38, /* ASTERISCO */ + YYSYMBOL_NUMERO = 39, /* NUMERO */ + YYSYMBOL_READ = 40, /* READ */ + YYSYMBOL_WRITE = 41, /* WRITE */ + YYSYMBOL_FORWARD = 42, /* FORWARD */ + YYSYMBOL_LOWER_THAN_ELSE = 43, /* LOWER_THAN_ELSE */ + YYSYMBOL_YYACCEPT = 44, /* $accept */ + YYSYMBOL_programa = 45, /* programa */ + YYSYMBOL_46_1 = 46, /* $@1 */ + YYSYMBOL_bloco = 47, /* bloco */ + YYSYMBOL_48_2 = 48, /* $@2 */ + YYSYMBOL_49_3 = 49, /* $@3 */ + YYSYMBOL_parte_declara_rotulos = 50, /* parte_declara_rotulos */ + YYSYMBOL_parte_declara_vars = 51, /* parte_declara_vars */ + YYSYMBOL_var = 52, /* var */ + YYSYMBOL_53_4 = 53, /* $@4 */ + YYSYMBOL_declara_vars = 54, /* declara_vars */ + YYSYMBOL_declara_var = 55, /* declara_var */ + YYSYMBOL_56_5 = 56, /* $@5 */ + YYSYMBOL_57_6 = 57, /* $@6 */ + YYSYMBOL_tipo = 58, /* tipo */ + YYSYMBOL_lista_id_var = 59, /* lista_id_var */ + YYSYMBOL_lista_idents = 60, /* lista_idents */ + YYSYMBOL_parte_declara_subrotinas = 61, /* parte_declara_subrotinas */ + YYSYMBOL_declaracao_procedimento = 62, /* declaracao_procedimento */ + YYSYMBOL_63_7 = 63, /* $@7 */ + YYSYMBOL_64_8 = 64, /* $@8 */ + YYSYMBOL_inicializa_procedimento = 65, /* inicializa_procedimento */ + YYSYMBOL_66_9 = 66, /* $@9 */ + YYSYMBOL_67_10 = 67, /* $@10 */ + YYSYMBOL_declaracao_funcao = 68, /* declaracao_funcao */ + YYSYMBOL_69_11 = 69, /* $@11 */ + YYSYMBOL_70_12 = 70, /* $@12 */ + YYSYMBOL_71_13 = 71, /* $@13 */ + YYSYMBOL_parametros_ou_nada = 72, /* parametros_ou_nada */ + YYSYMBOL_73_14 = 73, /* $@14 */ + YYSYMBOL_74_15 = 74, /* $@15 */ + YYSYMBOL_paramentros_formais = 75, /* paramentros_formais */ + YYSYMBOL_secao_pfs = 76, /* secao_pfs */ + YYSYMBOL_77_16 = 77, /* $@16 */ + YYSYMBOL_78_17 = 78, /* $@17 */ + YYSYMBOL_lista_id_pf = 79, /* lista_id_pf */ + YYSYMBOL_parametro = 80, /* parametro */ + YYSYMBOL_comando_composto = 81, /* comando_composto */ + YYSYMBOL_comandos = 82, /* comandos */ + YYSYMBOL_comando = 83, /* comando */ + YYSYMBOL_comando_sem_rotulo = 84, /* comando_sem_rotulo */ + YYSYMBOL_atribuicao_ou_procedimento = 85, /* atribuicao_ou_procedimento */ + YYSYMBOL_86_18 = 86, /* $@18 */ + YYSYMBOL_atribuicao_ou_procedimento_token = 87, /* atribuicao_ou_procedimento_token */ + YYSYMBOL_atribuicao = 88, /* atribuicao */ + YYSYMBOL_89_19 = 89, /* $@19 */ + YYSYMBOL_chamada_procedimento = 90, /* chamada_procedimento */ + YYSYMBOL_91_20 = 91, /* $@20 */ + YYSYMBOL_lista_parametros = 92, /* lista_parametros */ + YYSYMBOL_lista_parametros_parenteses = 93, /* lista_parametros_parenteses */ + YYSYMBOL_94_21 = 94, /* $@21 */ + YYSYMBOL_95_22 = 95, /* $@22 */ + YYSYMBOL_leitura = 96, /* leitura */ + YYSYMBOL_lista_leituras = 97, /* lista_leituras */ + YYSYMBOL_simb_leitura = 98, /* simb_leitura */ + YYSYMBOL_escrita = 99, /* escrita */ + YYSYMBOL_lista_escritas = 100, /* lista_escritas */ + YYSYMBOL_expressao = 101, /* expressao */ + YYSYMBOL_expressao_simples = 102, /* expressao_simples */ + YYSYMBOL_termo = 103, /* termo */ + YYSYMBOL_fator = 104, /* fator */ + YYSYMBOL_105_23 = 105, /* $@23 */ + YYSYMBOL_numero = 106, /* numero */ + YYSYMBOL_comando_repetitivo = 107, /* comando_repetitivo */ + YYSYMBOL_108_24 = 108, /* $@24 */ + YYSYMBOL_109_25 = 109, /* $@25 */ + YYSYMBOL_comando_condicional = 110, /* comando_condicional */ + YYSYMBOL_cond_else = 111, /* cond_else */ + YYSYMBOL_if_then = 112, /* if_then */ + YYSYMBOL_113_26 = 113 /* $@26 */ +}; +typedef enum yysymbol_kind_t yysymbol_kind_t; -/* Enabling the token table. */ -#ifndef YYTOKEN_TABLE -# define YYTOKEN_TABLE 0 -#endif -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef int YYSTYPE; -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 -#endif +#ifdef short +# undef short +#endif -/* Copy the second part of user declarations. */ +/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure + <limits.h> and (if available) <stdint.h> are included + so that the code can choose integer types of a good width. */ +#ifndef __PTRDIFF_MAX__ +# include <limits.h> /* INFRINGES ON USER NAME SPACE */ +# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include <stdint.h> /* INFRINGES ON USER NAME SPACE */ +# define YY_STDINT_H +# endif +#endif -/* Line 216 of yacc.c. */ -#line 216 "compilador.tab.c" +/* Narrow types that promote to a signed type and that can represent a + signed or unsigned integer of at least N bits. In tables they can + save space and decrease cache pressure. Promoting to a signed type + helps avoid bugs in integer arithmetic. */ -#ifdef short -# undef short +#ifdef __INT_LEAST8_MAX__ +typedef __INT_LEAST8_TYPE__ yytype_int8; +#elif defined YY_STDINT_H +typedef int_least8_t yytype_int8; +#else +typedef signed char yytype_int8; #endif -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; +#ifdef __INT_LEAST16_MAX__ +typedef __INT_LEAST16_TYPE__ yytype_int16; +#elif defined YY_STDINT_H +typedef int_least16_t yytype_int16; #else -typedef unsigned char yytype_uint8; +typedef short yytype_int16; #endif -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; -#elif (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -typedef signed char yytype_int8; -#else -typedef short int yytype_int8; +/* Work around bug in HP-UX 11.23, which defines these macros + incorrectly for preprocessor constants. This workaround can likely + be removed in 2023, as HPE has promised support for HP-UX 11.23 + (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of + <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */ +#ifdef __hpux +# undef UINT_LEAST8_MAX +# undef UINT_LEAST16_MAX +# define UINT_LEAST8_MAX 255 +# define UINT_LEAST16_MAX 65535 #endif -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; +#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST8_TYPE__ yytype_uint8; +#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST8_MAX <= INT_MAX) +typedef uint_least8_t yytype_uint8; +#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX +typedef unsigned char yytype_uint8; #else -typedef unsigned short int yytype_uint16; +typedef short yytype_uint8; #endif -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; +#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST16_TYPE__ yytype_uint16; +#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST16_MAX <= INT_MAX) +typedef uint_least16_t yytype_uint16; +#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX +typedef unsigned short yytype_uint16; #else -typedef short int yytype_int16; +typedef int yytype_uint16; +#endif + +#ifndef YYPTRDIFF_T +# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ +# define YYPTRDIFF_T __PTRDIFF_TYPE__ +# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ +# elif defined PTRDIFF_MAX +# ifndef ptrdiff_t +# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ +# endif +# define YYPTRDIFF_T ptrdiff_t +# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX +# else +# define YYPTRDIFF_T long +# define YYPTRDIFF_MAXIMUM LONG_MAX +# endif #endif #ifndef YYSIZE_T @@ -250,55 +333,106 @@ typedef short int yytype_int16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else -# define YYSIZE_T unsigned int +# define YYSIZE_T unsigned # endif #endif -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) +#define YYSIZE_MAXIMUM \ + YY_CAST (YYPTRDIFF_T, \ + (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ + ? YYPTRDIFF_MAXIMUM \ + : YY_CAST (YYSIZE_T, -1))) + +#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + + +/* Stored state numbers (used for stacks). */ +typedef yytype_uint8 yy_state_t; + +/* State numbers in computations. */ +typedef int yy_state_fast_t; #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ -# define YY_(msgid) dgettext ("bison-runtime", msgid) +# define YY_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef YY_ -# define YY_(msgid) msgid +# define YY_(Msgid) Msgid +# endif +#endif + + +#ifndef YY_ATTRIBUTE_PURE +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define YY_ATTRIBUTE_PURE +# endif +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define YY_ATTRIBUTE_UNUSED # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YYUSE(e) ((void) (e)) +# define YY_USE(E) ((void) (E)) #else -# define YYUSE(e) /* empty */ +# define YY_USE(E) /* empty */ #endif -/* Identity function, used to suppress warnings about constant conditions. */ -#ifndef lint -# define YYID(n) (n) -#else -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static int -YYID (int i) +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ +# if __GNUC__ * 100 + __GNUC_MINOR__ < 407 +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") +# else +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# endif +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") #else -static int -YYID (i) - int i; +# define YY_INITIAL_VALUE(Value) Value #endif -{ - return i; -} +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END #endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + +#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ +# define YY_IGNORE_USELESS_CAST_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") +# define YY_IGNORE_USELESS_CAST_END \ + _Pragma ("GCC diagnostic pop") +#endif +#ifndef YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_END +#endif + + +#define YY_ASSERT(E) ((void) (0 && (E))) -#if ! defined yyoverflow || YYERROR_VERBOSE +#if !defined yyoverflow /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -315,11 +449,11 @@ YYID (i) # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 # endif # endif # endif @@ -327,8 +461,8 @@ YYID (i) # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely @@ -342,111 +476,117 @@ YYID (i) # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif -# if (defined __cplusplus && ! defined _STDLIB_H \ +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif -#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ - +#endif /* !defined yyoverflow */ #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { - yytype_int16 yyss; - YYSTYPE yyvs; - }; + yy_state_t yyss_alloc; + YYSTYPE yyvs_alloc; +}; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) +# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) -/* Copy COUNT objects from FROM to TO. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -# else -# define YYCOPY(To, From, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ - while (YYID (0)) -# endif -# endif +# define YYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack, Stack, yysize); \ - Stack = &yyptr->Stack; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (YYID (0)) +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYPTRDIFF_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / YYSIZEOF (*yyptr); \ + } \ + while (0) #endif +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYPTRDIFF_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + /* YYFINAL -- State number of the termination state. */ #define YYFINAL 3 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 140 +#define YYLAST 141 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 43 +#define YYNTOKENS 44 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 67 +#define YYNNTS 70 /* YYNRULES -- Number of rules. */ -#define YYNRULES 104 -/* YYNRULES -- Number of states. */ -#define YYNSTATES 176 +#define YYNRULES 108 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 185 + +/* YYMAXUTOK -- Last valid token kind. */ +#define YYMAXUTOK 298 -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ -#define YYUNDEFTOK 2 -#define YYMAXUTOK 297 -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) +/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, with out-of-bounds checking. */ +#define YYTRANSLATE(YYX) \ + (0 <= (YYX) && (YYX) <= YYMAXUTOK \ + ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ + : YYSYMBOL_YYUNDEF) -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const yytype_uint8 yytranslate[] = +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex. */ +static const yytype_int8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -477,383 +617,289 @@ static const yytype_uint8 yytranslate[] = 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42 + 35, 36, 37, 38, 39, 40, 41, 42, 43 }; #if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const yytype_uint16 yyprhs[] = -{ - 0, 0, 3, 4, 14, 15, 16, 23, 26, 27, - 29, 30, 34, 35, 38, 40, 41, 42, 49, 51, - 55, 57, 61, 63, 66, 68, 69, 70, 71, 80, - 81, 82, 83, 95, 96, 97, 103, 104, 106, 110, - 111, 117, 118, 123, 127, 129, 131, 135, 139, 142, - 143, 147, 149, 151, 153, 155, 157, 159, 161, 162, - 166, 168, 170, 171, 175, 176, 179, 183, 184, 185, - 190, 191, 194, 199, 203, 205, 207, 212, 216, 218, - 222, 226, 230, 234, 238, 242, 244, 248, 252, 254, - 258, 262, 264, 265, 269, 271, 275, 277, 278, 279, - 286, 289, 292, 293, 294 -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const yytype_int8 yyrhs[] = -{ - 44, 0, -1, -1, 45, 3, 13, 4, 59, 5, - 7, 46, 9, -1, -1, -1, 49, 50, 47, 60, - 48, 77, -1, 15, 6, -1, -1, 51, -1, -1, - 52, 12, 53, -1, -1, 53, 54, -1, 54, -1, - -1, -1, 55, 58, 8, 57, 56, 7, -1, 13, - -1, 58, 6, 13, -1, 13, -1, 59, 6, 13, - -1, 13, -1, 60, 61, -1, 64, -1, -1, -1, - -1, 18, 13, 62, 68, 7, 46, 63, 7, -1, - -1, -1, -1, 19, 13, 65, 68, 8, 66, 57, - 7, 46, 67, 7, -1, -1, -1, 4, 69, 71, - 70, 5, -1, -1, 72, -1, 71, 7, 72, -1, - -1, 12, 73, 75, 8, 57, -1, -1, 74, 75, - 8, 57, -1, 76, 6, 75, -1, 76, -1, 13, - -1, 10, 78, 11, -1, 79, 7, 78, -1, 79, - 7, -1, -1, 102, 8, 80, -1, 80, -1, 81, - -1, 77, -1, 106, -1, 103, -1, 92, -1, 95, - -1, -1, 13, 82, 83, -1, 84, -1, 86, -1, - -1, 85, 14, 98, -1, -1, 87, 88, -1, 4, - 89, 5, -1, -1, -1, 89, 6, 90, 98, -1, - -1, 91, 98, -1, 40, 4, 93, 5, -1, 93, - 6, 94, -1, 94, -1, 13, -1, 41, 4, 96, - 5, -1, 96, 6, 98, -1, 98, -1, 97, 30, - 98, -1, 97, 31, 98, -1, 97, 34, 98, -1, - 97, 32, 98, -1, 97, 35, 98, -1, 97, 33, - 98, -1, 98, -1, 98, 36, 99, -1, 98, 37, - 99, -1, 99, -1, 99, 38, 100, -1, 99, 27, - 100, -1, 100, -1, -1, 13, 101, 86, -1, 39, - -1, 4, 97, 5, -1, 39, -1, -1, -1, 104, - 24, 97, 25, 105, 80, -1, 108, 107, -1, 23, - 80, -1, -1, -1, 21, 97, 109, 22, 80, -1 -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = +/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +static const yytype_int16 yyrline[] = { 0, 47, 47, 47, 63, 74, 60, 93, 94, 97, 101, 101, 102, 105, 106, 110, 113, 110, 121, 134, - 143, 154, 155, 159, 161, 162, 167, 191, 167, 205, - 229, 233, 205, 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, 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, 552, 555, 557, 564, 557, - 590, 597, 599, 602, 602 + 143, 154, 155, 159, 160, 161, 166, 193, 166, 203, + 204, 217, 204, 232, 256, 260, 232, 273, 274, 272, + 282, 285, 286, 290, 289, 299, 299, 307, 308, 311, + 321, 324, 325, 326, 329, 330, 333, 334, 335, 336, + 337, 338, 341, 341, 345, 346, 349, 349, 380, 380, + 422, 425, 429, 428, 441, 441, 455, 458, 459, 462, + 471, 474, 477, 482, 485, 488, 491, 494, 497, 502, + 508, 514, 517, 520, 523, 526, 526, 571, 581, 582, + 585, 587, 594, 587, 620, 627, 629, 632, 632 }; #endif -#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/** Accessing symbol of state STATE. */ +#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) + +#if YYDEBUG || 0 +/* The user-facing name of the symbol whose (internal) number is + YYSYMBOL. No bounds checking. */ +static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; + /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "PROGRAM", "ABRE_PARENTESES", - "FECHA_PARENTESES", "VIRGULA", "PONTO_E_VIRGULA", "DOIS_PONTOS", "PONTO", - "T_BEGIN", "T_END", "VAR", "IDENT", "ATRIBUICAO", "LABEL", "TYPE", - "ARRAY", "PROCEDURE", "FUNCTION", "GOTO", "IF", "THEN", "ELSE", "WHILE", - "DO", "OR", "DIV", "AND", "NOT", "IGUAL", "DIFERENTE", "MENOR_IGUAL", - "MAIOR_IGUAL", "MENOR", "MAIOR", "MAIS", "MENOS", "ASTERISCO", "NUMERO", - "READ", "WRITE", "LOWER_THAN_ELSE", "$accept", "programa", "@1", "bloco", - "@2", "@3", "parte_declara_rotulos", "parte_declara_vars", "var", "@4", - "declara_vars", "declara_var", "@5", "@6", "tipo", "lista_id_var", + "\"end of file\"", "error", "\"invalid token\"", "PROGRAM", + "ABRE_PARENTESES", "FECHA_PARENTESES", "VIRGULA", "PONTO_E_VIRGULA", + "DOIS_PONTOS", "PONTO", "T_BEGIN", "T_END", "VAR", "IDENT", "ATRIBUICAO", + "LABEL", "TYPE", "ARRAY", "PROCEDURE", "FUNCTION", "GOTO", "IF", "THEN", + "ELSE", "WHILE", "DO", "OR", "DIV", "AND", "NOT", "IGUAL", "DIFERENTE", + "MENOR_IGUAL", "MAIOR_IGUAL", "MENOR", "MAIOR", "MAIS", "MENOS", + "ASTERISCO", "NUMERO", "READ", "WRITE", "FORWARD", "LOWER_THAN_ELSE", + "$accept", "programa", "$@1", "bloco", "$@2", "$@3", + "parte_declara_rotulos", "parte_declara_vars", "var", "$@4", + "declara_vars", "declara_var", "$@5", "$@6", "tipo", "lista_id_var", "lista_idents", "parte_declara_subrotinas", "declaracao_procedimento", - "@7", "@8", "declaracao_funcao", "@9", "@10", "@11", - "parametros_ou_nada", "@12", "@13", "paramentros_formais", "secao_pfs", - "@14", "@15", "lista_id_pf", "parametro", "comando_composto", "comandos", - "comando", "comando_sem_rotulo", "atribuicao_ou_procedimento", "@16", - "atribuicao_ou_procedimento_token", "atribuicao", "@17", - "chamada_procedimento", "@18", "lista_parametros", - "lista_parametros_parenteses", "@19", "@20", "leitura", "lista_leituras", - "simb_leitura", "escrita", "lista_escritas", "expressao", - "expressao_simples", "termo", "fator", "@21", "numero", - "comando_repetitivo", "@22", "@23", "comando_condicional", "cond_else", - "if_then", "@24", 0 + "$@7", "$@8", "inicializa_procedimento", "$@9", "$@10", + "declaracao_funcao", "$@11", "$@12", "$@13", "parametros_ou_nada", + "$@14", "$@15", "paramentros_formais", "secao_pfs", "$@16", "$@17", + "lista_id_pf", "parametro", "comando_composto", "comandos", "comando", + "comando_sem_rotulo", "atribuicao_ou_procedimento", "$@18", + "atribuicao_ou_procedimento_token", "atribuicao", "$@19", + "chamada_procedimento", "$@20", "lista_parametros", + "lista_parametros_parenteses", "$@21", "$@22", "leitura", + "lista_leituras", "simb_leitura", "escrita", "lista_escritas", + "expressao", "expressao_simples", "termo", "fator", "$@23", "numero", + "comando_repetitivo", "$@24", "$@25", "comando_condicional", "cond_else", + "if_then", "$@26", YY_NULLPTR }; -#endif -# ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ -static const yytype_uint16 yytoknum[] = +static const char * +yysymbol_name (yysymbol_kind_t yysymbol) { - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297 -}; -# endif + return yytname[yysymbol]; +} +#endif -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = -{ - 0, 43, 45, 44, 47, 48, 46, 49, 49, 50, - 52, 51, 51, 53, 53, 55, 56, 54, 57, 58, - 58, 59, 59, 60, 60, 60, 62, 63, 61, 65, - 66, 67, 64, 69, 70, 68, 68, 71, 71, 73, - 72, 74, 72, 75, 75, 76, 77, 78, 78, 78, - 79, 79, 80, 80, 80, 80, 80, 80, 82, 81, - 83, 83, 85, 84, 87, 86, 88, 88, 90, 89, - 91, 89, 92, 93, 93, 94, 95, 96, 96, 97, - 97, 97, 97, 97, 97, 97, 98, 98, 98, 99, - 99, 99, 101, 100, 100, 100, 102, 104, 105, 103, - 106, 107, 107, 109, 108 -}; +#define YYPACT_NINF (-125) + +#define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) + +#define YYTABLE_NINF (-102) + +#define yytable_value_is_error(Yyn) \ + 0 -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +static const yytype_int8 yypact[] = { - 0, 2, 0, 9, 0, 0, 6, 2, 0, 1, - 0, 3, 0, 2, 1, 0, 0, 6, 1, 3, - 1, 3, 1, 2, 1, 0, 0, 0, 8, 0, - 0, 0, 11, 0, 0, 5, 0, 1, 3, 0, - 5, 0, 4, 3, 1, 1, 3, 3, 2, 0, - 3, 1, 1, 1, 1, 1, 1, 1, 0, 3, - 1, 1, 0, 3, 0, 2, 3, 0, 0, 4, - 0, 2, 4, 3, 1, 1, 4, 3, 1, 3, - 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, - 3, 1, 0, 3, 1, 3, 1, 0, 0, 6, - 2, 2, 0, 0, 5 + -125, 15, 8, -125, 16, 13, 38, -125, 18, 57, + 46, 63, -125, 73, 76, 74, -125, -125, -125, -125, + 75, 7, -125, 78, 79, -125, 47, 7, 80, -125, + 81, -125, -125, 85, 89, 7, 63, -125, -125, -125, + 4, 84, 84, 42, -125, -125, -125, -125, 86, 87, + -125, -125, 90, -125, 1, -125, 93, 97, -125, 91, + 96, -125, -125, -125, -125, 98, -125, 83, -125, 88, + 101, -125, -125, -125, 92, 102, -125, 99, 1, -125, + -125, -125, 37, -20, -125, 103, 1, -125, 42, 9, + 1, 9, -125, -125, 105, -125, 107, -125, 104, -125, + 87, -125, -125, 106, -125, 111, 113, 11, -125, 100, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + -125, 22, -125, 26, 17, -125, -125, 94, -125, -125, + 104, 92, 116, -125, 115, 118, 119, 1, -125, -125, + -125, -125, -125, 9, 17, 17, 17, 17, 17, 17, + -20, -20, -125, -125, -125, 103, -125, 1, -125, 117, + -125, -125, 87, 104, 63, 17, 52, 1, -125, -125, + 17, 9, 87, -125, -125, -125, -125, -125, 17, -125, + -125, 120, 1, -125, 17 }; -/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state - STATE-NUM when YYTABLE doesn't specify something else to do. Zero +/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ -static const yytype_uint8 yydefact[] = +static const yytype_int8 yydefact[] = { 2, 0, 0, 1, 0, 0, 0, 22, 0, 0, 0, 8, 21, 0, 0, 12, 7, 3, 4, 9, - 0, 25, 15, 0, 5, 24, 11, 14, 0, 29, - 0, 0, 23, 13, 20, 0, 36, 26, 49, 6, - 0, 0, 33, 0, 36, 58, 0, 96, 0, 0, - 53, 0, 0, 51, 52, 56, 57, 0, 55, 0, - 54, 102, 19, 18, 16, 41, 30, 0, 64, 0, - 92, 94, 103, 85, 88, 91, 0, 0, 46, 48, - 97, 0, 97, 100, 0, 39, 34, 37, 0, 0, - 8, 59, 60, 0, 61, 67, 0, 64, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, - 0, 74, 0, 78, 47, 50, 0, 101, 17, 0, - 41, 0, 45, 0, 44, 0, 27, 0, 70, 65, - 95, 93, 79, 80, 82, 84, 81, 83, 97, 86, - 87, 90, 89, 72, 0, 76, 0, 98, 0, 38, - 35, 0, 0, 8, 0, 63, 0, 0, 104, 73, - 77, 97, 0, 42, 43, 31, 28, 66, 68, 71, - 99, 40, 0, 0, 32, 69 + 0, 25, 15, 0, 0, 5, 30, 25, 11, 14, + 0, 26, 33, 0, 0, 25, 8, 24, 13, 20, + 0, 40, 40, 53, 6, 29, 23, 31, 0, 0, + 37, 27, 0, 62, 0, 100, 0, 0, 57, 0, + 0, 55, 56, 60, 61, 0, 59, 0, 58, 106, + 0, 19, 18, 16, 45, 0, 34, 68, 0, 95, + 97, 107, 0, 91, 94, 0, 0, 50, 52, 101, + 0, 101, 104, 32, 0, 43, 38, 41, 0, 28, + 0, 63, 64, 0, 65, 71, 0, 0, 68, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 0, 78, 0, 82, 51, 54, 0, 105, 17, + 0, 45, 0, 49, 0, 48, 0, 0, 74, 69, + 98, 99, 96, 101, 83, 84, 86, 88, 85, 87, + 89, 90, 93, 92, 76, 0, 80, 0, 102, 0, + 42, 39, 0, 0, 8, 67, 0, 0, 108, 77, + 81, 101, 0, 46, 47, 35, 70, 72, 75, 103, + 44, 0, 0, 36, 73 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int8 yypgoto[] = +{ + -125, -125, -125, -36, -125, -125, -125, -125, -125, -125, + -125, 82, -125, -125, -97, -125, -125, -14, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, 95, -125, + -125, -125, -2, -125, -125, -124, -125, 108, 43, -125, + -87, -125, -125, -125, -125, -125, 24, -125, -125, -125, + -125, -125, -125, -125, -25, -125, -125, -70, -77, -55, + -42, -125, -125, -125, -125, -125, -125, -125, -125, -125 }; /* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = +static const yytype_uint8 yydefgoto[] = { - -1, 1, 2, 14, 21, 31, 15, 18, 19, 20, - 26, 27, 28, 84, 64, 35, 8, 24, 32, 44, - 154, 25, 36, 89, 172, 43, 65, 121, 86, 87, - 119, 88, 123, 124, 50, 51, 52, 53, 54, 68, - 91, 92, 93, 94, 95, 129, 156, 173, 157, 55, - 110, 111, 56, 112, 72, 73, 74, 75, 97, 57, - 58, 59, 161, 60, 83, 61, 104 + 0, 1, 2, 14, 21, 33, 15, 18, 19, 20, + 28, 29, 30, 94, 73, 40, 8, 25, 26, 41, + 75, 35, 36, 70, 27, 42, 100, 181, 51, 74, + 132, 96, 97, 130, 98, 134, 135, 58, 59, 60, + 61, 62, 77, 101, 102, 103, 104, 105, 139, 166, + 182, 167, 63, 121, 122, 64, 123, 81, 82, 83, + 84, 108, 65, 66, 67, 171, 68, 92, 69, 109 }; -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF -114 -static const yytype_int8 yypact[] = +/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ +static const yytype_int16 yytable[] = { - -114, 15, 14, -114, 16, 32, 28, -114, 7, 55, - 50, 51, -114, 62, 56, 58, -114, -114, -114, -114, - 60, 52, -114, 61, 63, -114, 64, -114, 66, -114, - 82, 87, -114, -114, -114, 3, 69, -114, 6, -114, - 85, 86, -114, 68, 69, -114, 1, -114, 96, 97, - -114, 91, 98, -114, -114, -114, -114, 95, -114, 80, - -114, 83, -114, -114, -114, 99, -114, 100, 94, 1, - -114, -114, 59, -4, 4, -114, 101, 1, -114, 6, - -3, 1, -3, -114, 102, -114, 103, -114, 104, 86, - 51, -114, -114, 105, -114, 108, 23, -114, 1, 1, - 1, 1, 1, 1, 93, 1, 1, 1, 1, -114, - 29, -114, 38, -4, -114, -114, 53, -114, -114, 104, - 99, 111, -114, 110, 107, 113, -114, 1, -114, -114, - -114, -114, -4, -4, -4, -4, -4, -4, -3, 4, - 4, -114, -114, -114, 101, -114, 1, -114, 114, -114, - -114, 86, 104, 51, 116, -4, 43, 1, -114, -114, - -4, -3, 86, -114, -114, -114, -114, -114, -114, -4, - -114, -114, 117, 1, -114, -4 + 47, 107, 126, 136, 128, 78, 159, 118, 106, 124, + 48, 4, 49, 37, 79, 3, 141, 6, 119, 43, + 127, 46, 53, 9, 10, 23, 24, 154, 155, 5, + 54, 156, 157, 144, 145, 146, 147, 148, 149, 174, + 80, 110, 111, 112, 113, 114, 115, 116, 117, 56, + 57, 7, 43, 116, 117, 53, 168, 176, 177, 12, + 165, 150, 151, 54, 11, 173, -101, 110, 111, 112, + 113, 114, 115, 116, 117, 180, 152, 153, 13, 16, + 170, 55, 56, 57, 179, 17, -10, 22, 50, 34, + 178, 31, 32, -15, 39, 43, 45, 85, 76, 71, + 72, 86, 87, 88, 95, 184, 89, 90, 93, 99, + 38, 91, 129, -66, 131, 138, 120, 133, 140, 158, + 137, 161, 143, 162, 163, 172, 164, 183, 175, 160, + 169, 125, 142, 0, 0, 0, 0, 52, 0, 0, + 0, 44 }; -/* YYPGOTO[NTERM-NUM]. */ -static const yytype_int8 yypgoto[] = +static const yytype_int16 yycheck[] = { - -114, -114, -114, -86, -114, -114, -114, -114, -114, -114, - -114, 106, -114, -114, -87, -114, -114, -114, -114, -114, - -114, -114, -114, -114, -114, 77, -114, -114, -114, 5, - -114, -114, -113, -114, 109, 47, -114, -79, -114, -114, - -114, -114, -114, 30, -114, -114, -114, -114, -114, -114, - -114, -16, -114, -114, -61, -77, -54, -47, -114, -114, - -114, -114, -114, -114, -114, -114, -114 + 36, 78, 89, 100, 91, 4, 130, 27, 78, 86, + 6, 3, 8, 27, 13, 0, 5, 4, 38, 10, + 90, 35, 13, 5, 6, 18, 19, 5, 6, 13, + 21, 5, 6, 110, 111, 112, 113, 114, 115, 163, + 39, 30, 31, 32, 33, 34, 35, 36, 37, 40, + 41, 13, 10, 36, 37, 13, 143, 5, 6, 13, + 137, 116, 117, 21, 7, 162, 24, 30, 31, 32, + 33, 34, 35, 36, 37, 172, 118, 119, 15, 6, + 157, 39, 40, 41, 171, 9, 12, 12, 4, 42, + 167, 13, 13, 13, 13, 10, 7, 4, 8, 13, + 13, 4, 11, 7, 12, 182, 8, 24, 7, 7, + 28, 23, 7, 14, 7, 4, 13, 13, 5, 25, + 14, 5, 22, 8, 6, 8, 7, 7, 164, 131, + 155, 88, 108, -1, -1, -1, -1, 42, -1, -1, + -1, 33 }; -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If zero, do what YYDEFACT says. - If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -98 -static const yytype_int16 yytable[] = +/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of + state STATE-NUM. */ +static const yytype_int8 yystos[] = { - 113, 115, 125, 117, 126, 69, 148, 38, 96, 40, - 45, 41, 9, 10, 70, 3, 38, 4, 46, 45, - 116, 132, 133, 134, 135, 136, 137, 46, 130, 5, - -97, 107, 105, 106, 143, 144, 6, 48, 49, 164, - 71, 7, 108, 145, 146, 47, 48, 49, 167, 168, - 155, 139, 140, 98, 99, 100, 101, 102, 103, 158, - 141, 142, 11, 12, 163, 17, 13, 165, 16, 160, - -10, 23, 22, 42, 29, 171, 66, -15, 147, 34, - 169, 30, 170, 98, 99, 100, 101, 102, 103, 98, - 99, 100, 101, 102, 103, 37, 175, 38, 62, 63, - 76, 77, 78, 80, 81, 79, 82, 90, -62, 118, - 120, 85, 128, 152, 109, 138, 150, 122, 151, 127, - 153, 67, 162, 166, 174, 149, 114, 131, 159, 0, - 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, - 39 + 0, 45, 46, 0, 3, 13, 4, 13, 60, 5, + 6, 7, 13, 15, 47, 50, 6, 9, 51, 52, + 53, 48, 12, 18, 19, 61, 62, 68, 54, 55, + 56, 13, 13, 49, 42, 65, 66, 61, 55, 13, + 59, 63, 69, 10, 81, 7, 61, 47, 6, 8, + 4, 72, 72, 13, 21, 39, 40, 41, 81, 82, + 83, 84, 85, 96, 99, 106, 107, 108, 110, 112, + 67, 13, 13, 58, 73, 64, 8, 86, 4, 13, + 39, 101, 102, 103, 104, 4, 4, 11, 7, 8, + 24, 23, 111, 7, 57, 12, 75, 76, 78, 7, + 70, 87, 88, 89, 90, 91, 101, 102, 105, 113, + 30, 31, 32, 33, 34, 35, 36, 37, 27, 38, + 13, 97, 98, 100, 102, 82, 84, 101, 84, 7, + 77, 7, 74, 13, 79, 80, 58, 14, 4, 92, + 5, 5, 90, 22, 102, 102, 102, 102, 102, 102, + 103, 103, 104, 104, 5, 6, 5, 6, 25, 79, + 76, 5, 8, 6, 7, 102, 93, 95, 84, 98, + 102, 109, 8, 58, 79, 47, 5, 6, 102, 84, + 58, 71, 94, 7, 102 }; -static const yytype_int16 yycheck[] = +/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ +static const yytype_int8 yyr1[] = { - 77, 80, 89, 82, 90, 4, 119, 10, 69, 6, - 13, 8, 5, 6, 13, 0, 10, 3, 21, 13, - 81, 98, 99, 100, 101, 102, 103, 21, 5, 13, - 24, 27, 36, 37, 5, 6, 4, 40, 41, 152, - 39, 13, 38, 5, 6, 39, 40, 41, 5, 6, - 127, 105, 106, 30, 31, 32, 33, 34, 35, 138, - 107, 108, 7, 13, 151, 9, 15, 153, 6, 146, - 12, 19, 12, 4, 13, 162, 8, 13, 25, 13, - 157, 18, 161, 30, 31, 32, 33, 34, 35, 30, - 31, 32, 33, 34, 35, 13, 173, 10, 13, 13, - 4, 4, 11, 8, 24, 7, 23, 7, 14, 7, - 7, 12, 4, 6, 13, 22, 5, 13, 8, 14, - 7, 44, 8, 7, 7, 120, 79, 97, 144, -1, - -1, -1, 26, -1, -1, -1, -1, -1, -1, -1, - 31 + 0, 44, 46, 45, 48, 49, 47, 50, 50, 51, + 53, 52, 52, 54, 54, 56, 57, 55, 58, 59, + 59, 60, 60, 61, 61, 61, 63, 64, 62, 65, + 66, 67, 65, 69, 70, 71, 68, 73, 74, 72, + 72, 75, 75, 77, 76, 78, 76, 79, 79, 80, + 81, 82, 82, 82, 83, 83, 84, 84, 84, 84, + 84, 84, 86, 85, 87, 87, 89, 88, 91, 90, + 92, 92, 94, 93, 95, 93, 96, 97, 97, 98, + 99, 100, 100, 101, 101, 101, 101, 101, 101, 102, + 102, 102, 103, 103, 103, 105, 104, 104, 104, 104, + 106, 108, 109, 107, 110, 111, 111, 113, 112 }; -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_uint8 yystos[] = +/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ +static const yytype_int8 yyr2[] = { - 0, 44, 45, 0, 3, 13, 4, 13, 59, 5, - 6, 7, 13, 15, 46, 49, 6, 9, 50, 51, - 52, 47, 12, 19, 60, 64, 53, 54, 55, 13, - 18, 48, 61, 54, 13, 58, 65, 13, 10, 77, - 6, 8, 4, 68, 62, 13, 21, 39, 40, 41, - 77, 78, 79, 80, 81, 92, 95, 102, 103, 104, - 106, 108, 13, 13, 57, 69, 8, 68, 82, 4, - 13, 39, 97, 98, 99, 100, 4, 4, 11, 7, - 8, 24, 23, 107, 56, 12, 71, 72, 74, 66, - 7, 83, 84, 85, 86, 87, 97, 101, 30, 31, - 32, 33, 34, 35, 109, 36, 37, 27, 38, 13, - 93, 94, 96, 98, 78, 80, 97, 80, 7, 73, - 7, 70, 13, 75, 76, 57, 46, 14, 4, 88, - 5, 86, 98, 98, 98, 98, 98, 98, 22, 99, - 99, 100, 100, 5, 6, 5, 6, 25, 75, 72, - 5, 8, 6, 7, 63, 98, 89, 91, 80, 94, - 98, 105, 8, 57, 75, 46, 7, 5, 6, 98, - 80, 57, 67, 90, 7, 98 + 0, 2, 0, 9, 0, 0, 6, 2, 0, 1, + 0, 3, 0, 2, 1, 0, 0, 6, 1, 3, + 1, 3, 1, 3, 2, 0, 0, 0, 6, 2, + 0, 0, 4, 0, 0, 0, 11, 0, 0, 5, + 0, 1, 3, 0, 5, 0, 4, 3, 1, 1, + 3, 3, 2, 0, 3, 1, 1, 1, 1, 1, + 1, 1, 0, 3, 1, 1, 0, 3, 0, 2, + 3, 0, 0, 4, 0, 2, 4, 3, 1, 1, + 4, 3, 1, 3, 3, 3, 3, 3, 3, 3, + 3, 1, 3, 3, 1, 0, 3, 1, 3, 3, + 1, 0, 0, 6, 2, 2, 0, 0, 5 }; -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab +enum { YYENOMEM = -2 }; +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab +#define YYNOMEM goto yyexhaustedlab -#define YYFAIL goto yyerrlab #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - yytoken = YYTRANSLATE (yychar); \ - YYPOPSTACK (1); \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (YYID (0)) - - -#define YYTERROR 1 -#define YYERRCODE 256 - - -/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. - If N is 0, then set CURRENT to the empty location which ends - the previous symbol: RHS[0] (always defined). */ - -#define YYRHSLOC(Rhs, K) ((Rhs)[K]) -#ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - do \ - if (YYID (N)) \ - { \ - (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ - (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ - (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ - (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ - } \ - else \ - { \ - (Current).first_line = (Current).last_line = \ - YYRHSLOC (Rhs, 0).last_line; \ - (Current).first_column = (Current).last_column = \ - YYRHSLOC (Rhs, 0).last_column; \ - } \ - while (YYID (0)) -#endif - - -/* YY_LOCATION_PRINT -- Print the location on the stream. - This macro was not mandated originally: define only if we know - we won't break user code: when these are the locations we know. */ - -#ifndef YY_LOCATION_PRINT -# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL -# define YY_LOCATION_PRINT(File, Loc) \ - fprintf (File, "%d.%d-%d.%d", \ - (Loc).first_line, (Loc).first_column, \ - (Loc).last_line, (Loc).last_column) -# else -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -# endif -#endif - +#define YYBACKUP(Token, Value) \ + do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ + while (0) + +/* Backward compatibility with an undocumented macro. + Use YYerror or YYUNDEF. */ +#define YYERRCODE YYUNDEF -/* YYLEX -- calling `yylex' with the right arguments. */ - -#ifdef YYLEX_PARAM -# define YYLEX yylex (YYLEX_PARAM) -#else -# define YYLEX yylex () -#endif /* Enable debugging if requested. */ #if YYDEBUG @@ -863,80 +909,58 @@ while (YYID (0)) # define YYFPRINTF fprintf # endif -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (YYID (0)) - -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (YYID (0)) - - -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -#else +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + + + + +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Kind, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) + + +/*-----------------------------------. +| Print this symbol's value on YYO. | +`-----------------------------------*/ + static void -yy_symbol_value_print (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; -#endif +yy_symbol_value_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) { + FILE *yyoutput = yyo; + YY_USE (yyoutput); if (!yyvaluep) return; -# ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# else - YYUSE (yyoutput); -# endif - switch (yytype) - { - default: - break; - } + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YY_USE (yykind); + YY_IGNORE_MAYBE_UNINITIALIZED_END } -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ +/*---------------------------. +| Print this symbol on YYO. | +`---------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -#else static void -yy_symbol_print (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; -#endif +yy_symbol_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) { - if (yytype < YYNTOKENS) - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + YYFPRINTF (yyo, "%s %s (", + yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); - yy_symbol_value_print (yyoutput, yytype, yyvaluep); - YYFPRINTF (yyoutput, ")"); + yy_symbol_value_print (yyo, yykind, yyvaluep); + YYFPRINTF (yyo, ")"); } /*------------------------------------------------------------------. @@ -944,80 +968,68 @@ yy_symbol_print (yyoutput, yytype, yyvaluep) | TOP (included). | `------------------------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void -yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) -#else -static void -yy_stack_print (bottom, top) - yytype_int16 *bottom; - yytype_int16 *top; -#endif +yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) { YYFPRINTF (stderr, "Stack now"); - for (; bottom <= top; ++bottom) - YYFPRINTF (stderr, " %d", *bottom); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } YYFPRINTF (stderr, "\n"); } -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (YYID (0)) +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void -yy_reduce_print (YYSTYPE *yyvsp, int yyrule) -#else -static void -yy_reduce_print (yyvsp, yyrule) - YYSTYPE *yyvsp; - int yyrule; -#endif +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, + int yyrule) { + int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - unsigned long int yylno = yyrline[yyrule]; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); + YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", + yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { - fprintf (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], - &(yyvsp[(yyi + 1) - (yynrhs)]) - ); - fprintf (stderr, "\n"); + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), + &yyvsp[(yyi + 1) - (yynrhs)]); + YYFPRINTF (stderr, "\n"); } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyvsp, Rule); \ -} while (YYID (0)) +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YYDPRINTF(Args) ((void) 0) +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -1032,478 +1044,219 @@ int yydebug; # define YYMAXDEPTH 10000 #endif - -#if YYERROR_VERBOSE -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static YYSIZE_T -yystrlen (const char *yystr) -#else -static YYSIZE_T -yystrlen (yystr) - const char *yystr; -#endif -{ - YYSIZE_T yylen; - for (yylen = 0; yystr[yylen]; yylen++) - continue; - return yylen; -} -# endif -# endif - -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static char * -yystpcpy (char *yydest, const char *yysrc) -#else -static char * -yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; -#endif -{ - char *yyd = yydest; - const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif -# ifndef yytnamerr -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). YYSTR is taken from yytname. If YYRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static YYSIZE_T -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - YYSIZE_T yyn = 0; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - if (! yyres) - return yystrlen (yystr); - - return yystpcpy (yyres, yystr) - yyres; -} -# endif - -/* Copy into YYRESULT an error message about the unexpected token - YYCHAR while in state YYSTATE. Return the number of bytes copied, - including the terminating null byte. If YYRESULT is null, do not - copy anything; just return the number of bytes that would be - copied. As a special case, return 0 if an ordinary "syntax error" - message will do. Return YYSIZE_MAXIMUM if overflow occurs during - size calculation. */ -static YYSIZE_T -yysyntax_error (char *yyresult, int yystate, int yychar) -{ - int yyn = yypact[yystate]; - - if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) - return 0; - else - { - int yytype = YYTRANSLATE (yychar); - YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); - YYSIZE_T yysize = yysize0; - YYSIZE_T yysize1; - int yysize_overflow = 0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - int yyx; - -# if 0 - /* This is so xgettext sees the translatable formats that are - constructed on the fly. */ - YY_("syntax error, unexpected %s"); - YY_("syntax error, unexpected %s, expecting %s"); - YY_("syntax error, unexpected %s, expecting %s or %s"); - YY_("syntax error, unexpected %s, expecting %s or %s or %s"); - YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); -# endif - char *yyfmt; - char const *yyf; - static char const yyunexpected[] = "syntax error, unexpected %s"; - static char const yyexpecting[] = ", expecting %s"; - static char const yyor[] = " or %s"; - char yyformat[sizeof yyunexpected - + sizeof yyexpecting - 1 - + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) - * (sizeof yyor - 1))]; - char const *yyprefix = yyexpecting; - - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yycount = 1; - - yyarg[0] = yytname[yytype]; - yyfmt = yystpcpy (yyformat, yyunexpected); - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - yyformat[sizeof yyunexpected - 1] = '\0'; - break; - } - yyarg[yycount++] = yytname[yyx]; - yysize1 = yysize + yytnamerr (0, yytname[yyx]); - yysize_overflow |= (yysize1 < yysize); - yysize = yysize1; - yyfmt = yystpcpy (yyfmt, yyprefix); - yyprefix = yyor; - } - - yyf = YY_(yyformat); - yysize1 = yysize + yystrlen (yyf); - yysize_overflow |= (yysize1 < yysize); - yysize = yysize1; - - if (yysize_overflow) - return YYSIZE_MAXIMUM; - - if (yyresult) - { - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - char *yyp = yyresult; - int yyi = 0; - while ((*yyp = *yyf) != '\0') - { - if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyf += 2; - } - else - { - yyp++; - yyf++; - } - } - } - return yysize; - } -} -#endif /* YYERROR_VERBOSE */ - /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) -#else -static void -yydestruct (yymsg, yytype, yyvaluep) - const char *yymsg; - int yytype; - YYSTYPE *yyvaluep; -#endif +yydestruct (const char *yymsg, + yysymbol_kind_t yykind, YYSTYPE *yyvaluep) { - YYUSE (yyvaluep); - + YY_USE (yyvaluep); if (!yymsg) yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - - switch (yytype) - { + YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); - default: - break; - } + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YY_USE (yykind); + YY_IGNORE_MAYBE_UNINITIALIZED_END } - - -/* Prevent warnings from -Wmissing-prototypes. */ -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int yyparse (void *YYPARSE_PARAM); -#else -int yyparse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus -int yyparse (void); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ - - -/* The look-ahead symbol. */ +/* Lookahead token kind. */ int yychar; -/* The semantic value of the look-ahead symbol. */ +/* The semantic value of the lookahead symbol. */ YYSTYPE yylval; - /* Number of syntax errors so far. */ int yynerrs; + /*----------. | yyparse. | `----------*/ -#ifdef YYPARSE_PARAM -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -int -yyparse (void *YYPARSE_PARAM) -#else -int -yyparse (YYPARSE_PARAM) - void *YYPARSE_PARAM; -#endif -#else /* ! YYPARSE_PARAM */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) int yyparse (void) -#else -int -yyparse () - -#endif -#endif { - - int yystate; - int yyn; - int yyresult; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Look-ahead token as an internal (translated) token number. */ - int yytoken = 0; -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif - - /* Three stacks and their tools: - `yyss': related to states, - `yyvs': related to semantic values, - `yyls': related to locations. + yy_state_fast_t yystate = 0; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus = 0; - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ + /* Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss = yyssa; - yytype_int16 *yyssp; + /* Their size. */ + YYPTRDIFF_T yystacksize = YYINITDEPTH; - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - YYSTYPE *yyvsp; + /* The state stack: array, bottom, top. */ + yy_state_t yyssa[YYINITDEPTH]; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; + /* The semantic value stack: array, bottom, top. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; - -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) - - YYSIZE_T yystacksize = YYINITDEPTH; - + int yyn; + /* The return value of yyparse. */ + int yyresult; + /* Lookahead symbol kind. */ + yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; YYDPRINTF ((stderr, "Starting parse\n")); - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - - yyssp = yyss; - yyvsp = yyvs; + yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; + /*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | +| yynewstate -- push a new state, which is found in yystate. | `------------------------------------------------------------*/ - yynewstate: +yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; - yysetstate: - *yyssp = yystate; + +/*--------------------------------------------------------------------. +| yysetstate -- set current state (the top of the stack) to yystate. | +`--------------------------------------------------------------------*/ +yysetstate: + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + YY_ASSERT (0 <= yystate && yystate < YYNSTATES); + YY_IGNORE_USELESS_CAST_BEGIN + *yyssp = YY_CAST (yy_state_t, yystate); + YY_IGNORE_USELESS_CAST_END + YY_STACK_PRINT (yyss, yyssp); if (yyss + yystacksize - 1 <= yyssp) +#if !defined yyoverflow && !defined YYSTACK_RELOCATE + YYNOMEM; +#else { /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; + YYPTRDIFF_T yysize = yyssp - yyss + 1; -#ifdef yyoverflow +# if defined yyoverflow { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - - &yystacksize); - - yyss = yyss1; - yyvs = yyvs1; + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + yy_state_t *yyss1 = yyss; + YYSTYPE *yyvs1 = yyvs; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * YYSIZEOF (*yyssp), + &yyvs1, yysize * YYSIZEOF (*yyvsp), + &yystacksize); + yyss = yyss1; + yyvs = yyvs1; } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyexhaustedlab; -# else +# else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + YYNOMEM; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss); - YYSTACK_RELOCATE (yyvs); - + yy_state_t *yyss1 = yyss; + union yyalloc *yyptr = + YY_CAST (union yyalloc *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); + if (! yyptr) + YYNOMEM; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); } # endif -#endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + YY_IGNORE_USELESS_CAST_BEGIN + YYDPRINTF ((stderr, "Stack size increased to %ld\n", + YY_CAST (long, yystacksize))); + YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + YYABORT; } +#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + if (yystate == YYFINAL) + YYACCEPT; goto yybackup; + /*-----------. | yybackup. | `-----------*/ yybackup: - /* Do appropriate processing given the current state. Read a - look-ahead token if we need one and don't already have one. */ + lookahead token if we need one and don't already have one. */ - /* First try to decide what to do without reference to look-ahead token. */ + /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; - if (yyn == YYPACT_NINF) + if (yypact_value_is_default (yyn)) goto yydefault; - /* Not known => get a look-ahead token if don't already have one. */ + /* Not known => get a lookahead token if don't already have one. */ - /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ if (yychar == YYEMPTY) { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; + YYDPRINTF ((stderr, "Reading a token\n")); + yychar = yylex (); } if (yychar <= YYEOF) { - yychar = yytoken = YYEOF; + yychar = YYEOF; + yytoken = YYSYMBOL_YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } + else if (yychar == YYerror) + { + /* The scanner already issued an error message, process directly + to error recovery. But do not keep the error token as + lookahead, it is too special and may lead us to an endless + loop in error recovery. */ + yychar = YYUNDEF; + yytoken = YYSYMBOL_YYerror; + goto yyerrlab1; + } else { yytoken = YYTRANSLATE (yychar); @@ -1518,30 +1271,26 @@ yybackup: yyn = yytable[yyn]; if (yyn <= 0) { - if (yyn == 0 || yyn == YYTABLE_NINF) - goto yyerrlab; + if (yytable_value_is_error (yyn)) + goto yyerrlab; yyn = -yyn; goto yyreduce; } - if (yyn == YYFINAL) - YYACCEPT; - /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; - /* Shift the look-ahead token. */ + /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + /* Discard the shifted token. */ + yychar = YYEMPTY; goto yynewstate; @@ -1556,14 +1305,14 @@ yydefault: /*-----------------------------. -| yyreduce -- Do a reduction. | +| yyreduce -- do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. + '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison @@ -1576,23 +1325,25 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 2: + case 2: /* $@1: %empty */ #line 47 "compilador.y" - { + { geraCodigo (NULL, "INPP"); - ;} + } +#line 1334 "compilador.tab.c" break; - case 3: + case 3: /* programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO */ #line 53 "compilador.y" - { + { geraCodigo (NULL, "PARA"); - ;} + } +#line 1342 "compilador.tab.c" break; - case 4: + case 4: /* $@2: %empty */ #line 63 "compilador.y" - { + { char r_main[4]; sprintf(r_main, "R%02d", rot_id); empilha(r_main, rot); @@ -1601,21 +1352,23 @@ yyreduce: strcpy(buffer,"DSVS "); strcat(buffer,r_main); geraCodigo(NULL,buffer); - ;} + } +#line 1357 "compilador.tab.c" break; - case 5: + case 5: /* $@3: %empty */ #line 74 "compilador.y" - { + { char r_main[4]; desempilha(r_main,rot); geraCodigo(r_main,"NADA"); - ;} + } +#line 1367 "compilador.tab.c" break; - case 6: + case 6: /* bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas $@3 comando_composto */ #line 80 "compilador.y" - { + { char buffer[50]; sprintf(buffer,"DMEM %d",desloc); desloc = retira_pr_fun(ts); @@ -1624,31 +1377,35 @@ yyreduce: if (nivel_lexico > 0) nivel_lexico -= 1; mostra_ts(ts); - ;} + } +#line 1382 "compilador.tab.c" break; - case 10: + case 10: /* $@4: %empty */ #line 101 "compilador.y" - { ;} + { } +#line 1388 "compilador.tab.c" break; - case 15: + case 15: /* $@5: %empty */ #line 110 "compilador.y" - { num_vars = 0; ;} + { num_vars = 0; } +#line 1394 "compilador.tab.c" break; - case 16: + case 16: /* $@6: %empty */ #line 113 "compilador.y" - { + { char buffer[50]; sprintf(buffer, "AMEM %d", num_vars); geraCodigo(NULL, buffer); - ;} + } +#line 1404 "compilador.tab.c" break; - case 18: + case 18: /* tipo: IDENT */ #line 122 "compilador.y" - { + { if (strcmp(token, "integer") == 0) { atualiza_tipo(num_vars, INTEIRO, ts); } else if (strcmp(token, "boolean") == 0) { @@ -1657,24 +1414,26 @@ yyreduce: yyerror("ERRO: Tipo não reconhecido. Somente 'integer' ou 'boolean' são permitidos."); } mostra_ts(ts); // Mostra a tabela após a inserção - ;} + } +#line 1419 "compilador.tab.c" break; - case 19: + case 19: /* lista_id_var: lista_id_var VIRGULA IDENT */ #line 135 "compilador.y" - { /* insere �ltima vars na tabela de s�mbolos */ + { /* insere �ltima vars na tabela de s�mbolos */ num_vars += 1; info_t info; info.vs.tipo = NSEI; info.vs.desloc = desloc; insere_ts(token,VS,nivel_lexico,info,ts); desloc += 1; - ;} + } +#line 1432 "compilador.tab.c" break; - case 20: + case 20: /* lista_id_var: IDENT */ #line 143 "compilador.y" - { + { num_vars += 1; info_t info; info.vs.tipo = NSEI; @@ -1682,38 +1441,73 @@ yyreduce: insere_ts(token,VS,nivel_lexico,info,ts); desloc += 1; /* insere vars na tabela de s�mbolos */ - ;} + } +#line 1446 "compilador.tab.c" break; - case 26: -#line 167 "compilador.y" - { - // Insere o procedimento na tabela de símbolos - info_t info; - char r_proc[4]; - sprintf(r_proc, "R%02d", rot_id); - rot_id += 1; - strcpy(info.pr.rot,r_proc); - info.pr.quant = 0; - info.pr.param = NULL; + case 26: /* $@7: %empty */ +#line 166 "compilador.y" + { + l_elem = busca(token,ts); + if(l_elem == NULL){ + + // Insere o procedimento na tabela de símbolos + info_t info; + char r_proc[4]; + sprintf(r_proc, "R%02d", rot_id); + rot_id += 1; + strcpy(info.pr.rot,r_proc); + info.pr.quant = 0; + info.pr.param = NULL; + + // Incrementa o nível léxico + nivel_lexico += 1; + desloc = 0; // Reinicia deslocamento para variáveis locais do novo nível + + insere_ts(token, PR, nivel_lexico, info, ts); + empilha(token,proc); + } else { + // Incrementa o nível léxico + nivel_lexico += 1; + desloc = 0; // Reinicia deslocamento para variáveis locais do novo nível + empilha(token,proc); + } + } +#line 1477 "compilador.tab.c" + break; - // Incrementa o nível léxico - nivel_lexico += 1; - desloc = 0; // Reinicia deslocamento para variáveis locais do novo nível + case 27: /* $@8: %empty */ +#line 193 "compilador.y" + { + nivel_lexico -= 1; + desloc = retira_vs_pf(ts); + mostra_ts(ts); - insere_ts(token, PR, nivel_lexico, info, ts); - empilha(token,proc); + } +#line 1488 "compilador.tab.c" + break; + case 30: /* $@9: %empty */ +#line 204 "compilador.y" + { char buffer[50]; + desempilha(buffer,proc); + l_elem = busca(buffer,ts); + empilha(buffer,proc); + sprintf(buffer,"ENPR %d",nivel_lexico); + + char r_proc[4]; + strcpy(r_proc,l_elem->info.pr.rot); geraCodigo(r_proc,buffer); mostra_ts(ts); - ;} + } +#line 1506 "compilador.tab.c" break; - case 27: -#line 191 "compilador.y" - { + case 31: /* $@10: %empty */ +#line 217 "compilador.y" + { char buffer[50]; desempilha(buffer,proc); l_elem = busca(buffer,ts); @@ -1721,12 +1515,14 @@ yyreduce: geraCodigo(NULL,buffer); desloc = retira_vs_pf(ts); mostra_ts(ts); - ;} + printf("aqui"); + } +#line 1521 "compilador.tab.c" break; - case 29: -#line 205 "compilador.y" - { + case 33: /* $@11: %empty */ +#line 232 "compilador.y" + { // Insere o funcao na tabela de símbolos info_t info; char r_func[4]; @@ -1748,19 +1544,21 @@ yyreduce: sprintf(buffer,"ENPR %d",nivel_lexico); geraCodigo(r_func,buffer); mostra_ts(ts); - ;} + } +#line 1549 "compilador.tab.c" break; - case 30: -#line 229 "compilador.y" - { + case 34: /* $@12: %empty */ +#line 256 "compilador.y" + { num_vars = 1; - ;} + } +#line 1557 "compilador.tab.c" break; - case 31: -#line 233 "compilador.y" - { + case 35: /* $@13: %empty */ +#line 260 "compilador.y" + { char buffer[50]; desempilha(buffer,proc); l_elem = busca(buffer,ts); @@ -1768,74 +1566,83 @@ yyreduce: geraCodigo(NULL,buffer); desloc = retira_vs_pf(ts); mostra_ts(ts); - ;} + } +#line 1571 "compilador.tab.c" break; - case 33: -#line 246 "compilador.y" - {num_param = 0;;} + case 37: /* $@14: %empty */ +#line 273 "compilador.y" + {num_param = 0;} +#line 1577 "compilador.tab.c" break; - case 34: -#line 247 "compilador.y" - { + case 38: /* $@15: %empty */ +#line 274 "compilador.y" + { char proc_ident[50]; desempilha(proc_ident,proc); adiciona_param(proc_ident,num_param,ts); empilha(proc_ident,proc); mostra_ts(ts); - ;} + } +#line 1589 "compilador.tab.c" break; - case 39: -#line 263 "compilador.y" - { + case 43: /* $@16: %empty */ +#line 290 "compilador.y" + { num_vars = 0; val_ou_ref = REF; - ;} + } +#line 1598 "compilador.tab.c" break; - case 40: -#line 268 "compilador.y" - { + case 44: /* secao_pfs: VAR $@16 lista_id_pf DOIS_PONTOS tipo */ +#line 295 "compilador.y" + { num_param += num_vars; val_ou_ref = VLR; - ;} + } +#line 1607 "compilador.tab.c" break; - case 41: -#line 272 "compilador.y" - { + case 45: /* $@17: %empty */ +#line 299 "compilador.y" + { num_vars = 0; val_ou_ref = VLR; - ;} + } +#line 1616 "compilador.tab.c" break; - case 42: -#line 277 "compilador.y" - {num_param += num_vars;;} + case 46: /* secao_pfs: $@17 lista_id_pf DOIS_PONTOS tipo */ +#line 304 "compilador.y" + {num_param += num_vars;} +#line 1622 "compilador.tab.c" break; - case 45: -#line 284 "compilador.y" - { + case 49: /* parametro: IDENT */ +#line 311 "compilador.y" + { num_vars += 1; info_t info; info.pf.tipo = NSEI; info.pf.desloc = NSEI; info.pf.passagem = val_ou_ref; insere_ts(token,PF,nivel_lexico,info,ts); - ;} + } +#line 1635 "compilador.tab.c" break; - case 58: -#line 314 "compilador.y" - {l_elem = busca(token, ts);;} + case 62: /* $@18: %empty */ +#line 341 "compilador.y" + {l_elem = busca(token, ts);} +#line 1641 "compilador.tab.c" break; - case 62: -#line 322 "compilador.y" - { + case 66: /* $@19: %empty */ +#line 349 "compilador.y" + { if (l_elem == NULL) { yyerror("ERRO: Variável de destino não declarada"); } else { @@ -1853,12 +1660,13 @@ yyreduce: yyerror("ERRO: Tentativa de atribuir em procedimento"); } -;} +} +#line 1665 "compilador.tab.c" break; - case 63: -#line 340 "compilador.y" - { + case 67: /* atribuicao: $@19 ATRIBUICAO expressao_simples */ +#line 367 "compilador.y" + { // Gera código ARMZ para armazenar valor char buffer[50]; if (atr_indireto == REF) { @@ -1867,12 +1675,13 @@ yyreduce: sprintf(buffer, "ARMZ %d, %d", destino_nivel, destino_desloc); } geraCodigo(NULL, buffer); -;} +} +#line 1680 "compilador.tab.c" break; - case 64: -#line 353 "compilador.y" - { + case 68: /* $@20: %empty */ +#line 380 "compilador.y" + { if (l_elem == NULL){ yyerror("ERRO: Procedimento não declarado"); } else{ @@ -1883,12 +1692,13 @@ yyreduce: geraCodigo(NULL, "AMEM 1"); if (l_elem->categ == PR || l_elem->categ == FUN) num_param = 0; // Reinicia a contagem de parâmetros reais - ;} + } +#line 1697 "compilador.tab.c" break; - case 65: -#line 368 "compilador.y" - { + case 69: /* chamada_procedimento: $@20 lista_parametros */ +#line 395 "compilador.y" + { char buffer[50]; mostra_ts(ts); desempilha(buffer, proc); @@ -1912,160 +1722,179 @@ yyreduce: sprintf(buffer, "CHPR %s, %d", l_elem->info.pr.rot, nivel_lexico); geraCodigo(NULL, buffer); } - ;} + } +#line 1727 "compilador.tab.c" break; - case 68: -#line 402 "compilador.y" - { + case 72: /* $@21: %empty */ +#line 429 "compilador.y" + { char buffer[50]; desempilha(buffer,proc); l_elem = busca(buffer,ts); val_ou_ref = l_elem->info.pr.param[num_param][1]; empilha(buffer,proc); - ;} + } +#line 1739 "compilador.tab.c" break; - case 69: -#line 410 "compilador.y" - { + case 73: /* lista_parametros_parenteses: lista_parametros_parenteses VIRGULA $@21 expressao_simples */ +#line 437 "compilador.y" + { num_param++; // Incrementa para cada parâmetro real val_ou_ref = VLR; - ;} + } +#line 1748 "compilador.tab.c" break; - case 70: -#line 414 "compilador.y" - { + case 74: /* $@22: %empty */ +#line 441 "compilador.y" + { char buffer[50]; desempilha(buffer,proc); l_elem = busca(buffer,ts); val_ou_ref = l_elem->info.pr.param[num_param][1]; empilha(buffer,proc); - ;} + } +#line 1760 "compilador.tab.c" break; - case 71: -#line 422 "compilador.y" - { + case 75: /* lista_parametros_parenteses: $@22 expressao_simples */ +#line 449 "compilador.y" + { num_param++; // Conta o primeiro parâmetro real val_ou_ref = VLR; - ;} + } +#line 1769 "compilador.tab.c" break; - case 75: -#line 435 "compilador.y" - { + case 79: /* simb_leitura: IDENT */ +#line 462 "compilador.y" + { geraCodigo(NULL, "LEIT"); l_elem = busca(token,ts); char buffer[50]; sprintf(buffer,"ARMZ %d, %d",l_elem->nivel,l_elem->info.vs.desloc); geraCodigo(NULL,buffer); - ;} + } +#line 1781 "compilador.tab.c" break; - case 77: -#line 447 "compilador.y" - { + case 81: /* lista_escritas: lista_escritas VIRGULA expressao_simples */ +#line 474 "compilador.y" + { geraCodigo(NULL,"IMPR"); - ;} + } +#line 1789 "compilador.tab.c" break; - case 78: -#line 450 "compilador.y" - { + case 82: /* lista_escritas: expressao_simples */ +#line 477 "compilador.y" + { geraCodigo(NULL,"IMPR"); - ;} + } +#line 1797 "compilador.tab.c" break; - case 79: -#line 455 "compilador.y" - { + case 83: /* expressao: expressao_simples IGUAL expressao_simples */ +#line 482 "compilador.y" + { geraCodigo(NULL, "CMIG"); // Adiciona operação de cmig - ;} + } +#line 1805 "compilador.tab.c" break; - case 80: -#line 458 "compilador.y" - { + case 84: /* expressao: expressao_simples DIFERENTE expressao_simples */ +#line 485 "compilador.y" + { geraCodigo(NULL, "CMDG"); // Adiciona operação de cmdg - ;} + } +#line 1813 "compilador.tab.c" break; - case 81: -#line 461 "compilador.y" - { + case 85: /* expressao: expressao_simples MENOR expressao_simples */ +#line 488 "compilador.y" + { geraCodigo(NULL, "CMME"); // Adiciona operação de cmme - ;} + } +#line 1821 "compilador.tab.c" break; - case 82: -#line 464 "compilador.y" - { + case 86: /* expressao: expressao_simples MENOR_IGUAL expressao_simples */ +#line 491 "compilador.y" + { geraCodigo(NULL, "CMEG"); // Adiciona operação de cmeg - ;} + } +#line 1829 "compilador.tab.c" break; - case 83: -#line 467 "compilador.y" - { + case 87: /* expressao: expressao_simples MAIOR expressao_simples */ +#line 494 "compilador.y" + { geraCodigo(NULL, "CMMA"); // Adiciona operação de cmma - ;} + } +#line 1837 "compilador.tab.c" break; - case 84: -#line 470 "compilador.y" - { + case 88: /* expressao: expressao_simples MAIOR_IGUAL expressao_simples */ +#line 497 "compilador.y" + { geraCodigo(NULL, "CMAG"); // Adiciona operação de cmag - ;} + } +#line 1845 "compilador.tab.c" break; - case 86: -#line 476 "compilador.y" - { + case 89: /* expressao_simples: expressao_simples MAIS termo */ +#line 502 "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 1856 "compilador.tab.c" break; - case 87: -#line 482 "compilador.y" - { + case 90: /* expressao_simples: expressao_simples MENOS termo */ +#line 508 "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 1867 "compilador.tab.c" break; - case 89: -#line 491 "compilador.y" - { + case 92: /* termo: termo ASTERISCO fator */ +#line 517 "compilador.y" + { geraCodigo(NULL, "MULT"); // Adiciona operação de mult - ;} + } +#line 1875 "compilador.tab.c" break; - case 90: -#line 494 "compilador.y" - { + case 93: /* termo: termo DIV fator */ +#line 520 "compilador.y" + { geraCodigo(NULL, "DIVI"); // Adiciona operação de divi - ;} + } +#line 1883 "compilador.tab.c" break; - case 92: -#line 500 "compilador.y" - { + case 95: /* $@23: %empty */ +#line 526 "compilador.y" + { // Carrega variável l_elem = busca(token, ts); empilha(token, proc); - ;} + } +#line 1893 "compilador.tab.c" break; - case 93: -#line 506 "compilador.y" - { + case 96: /* fator: IDENT $@23 chamada_procedimento */ +#line 532 "compilador.y" + { char buffer[50]; desempilha(buffer, proc); l_elem = busca(buffer, ts); @@ -2078,7 +1907,10 @@ yyreduce: geraCodigo(NULL, buffer); } else if (l_elem->categ == PF){ - sprintf(buffer, "CREN %d, %d", l_elem->nivel, l_elem->info.pf.desloc); + if(l_elem->info.pf.passagem == VLR) + sprintf(buffer, "CREN %d, %d", l_elem->nivel, l_elem->info.pf.desloc); + else + sprintf(buffer, "CRVL %d, %d", l_elem->nivel, l_elem->info.pf.desloc); geraCodigo(NULL, buffer); } else @@ -2100,12 +1932,13 @@ yyreduce: } } } - ;} + } +#line 1937 "compilador.tab.c" break; - case 94: -#line 542 "compilador.y" - { + case 97: /* fator: NUMERO */ +#line 571 "compilador.y" + { // Empilha constante char buffer[50]; if (val_ou_ref == VLR) @@ -2114,23 +1947,25 @@ yyreduce: yyerror("ERRO: passagem de constante por REFERENCIA.\n"); } geraCodigo(NULL, buffer); -;} +} +#line 1952 "compilador.tab.c" break; - case 97: -#line 557 "compilador.y" - { + case 101: /* $@24: %empty */ +#line 587 "compilador.y" + { char r_ini[4]; sprintf(r_ini, "R%02d", rot_id); empilha(r_ini, rot); rot_id += 1; geraCodigo(r_ini,"NADA"); - ;} + } +#line 1964 "compilador.tab.c" break; - case 98: -#line 564 "compilador.y" - { + case 102: /* $@25: %empty */ +#line 594 "compilador.y" + { char r_fim[4]; sprintf(r_fim, "R%02d", rot_id); empilha(r_fim, rot); @@ -2139,12 +1974,13 @@ yyreduce: strcpy(buffer, "DSVF "); strcat(buffer,r_fim); geraCodigo(NULL,buffer); - ;} + } +#line 1979 "compilador.tab.c" break; - case 99: -#line 574 "compilador.y" - { + case 103: /* comando_repetitivo: $@24 WHILE expressao DO $@25 comando_sem_rotulo */ +#line 604 "compilador.y" + { char r_ini[4]; char r_fim[4]; @@ -2157,21 +1993,23 @@ yyreduce: geraCodigo(NULL,buffer); geraCodigo(r_fim,"NADA"); - ;} + } +#line 1998 "compilador.tab.c" break; - case 100: -#line 590 "compilador.y" - { + case 104: /* comando_condicional: if_then cond_else */ +#line 620 "compilador.y" + { char r_fim[4]; desempilha(r_fim,rot); geraCodigo(r_fim,"NADA"); - ;} + } +#line 2008 "compilador.tab.c" break; - case 103: -#line 602 "compilador.y" - { + case 107: /* $@26: %empty */ +#line 632 "compilador.y" + { char r_else[4]; sprintf(r_else,"R%02d",rot_id); empilha(r_else,rot); @@ -2185,12 +2023,13 @@ yyreduce: sprintf(r_fim, "R%02d", rot_id); empilha(r_fim, rot); rot_id += 1; - ;} + } +#line 2028 "compilador.tab.c" break; - case 104: -#line 617 "compilador.y" - { + case 108: /* if_then: IF expressao $@26 THEN comando_sem_rotulo */ +#line 647 "compilador.y" + { char r_fim[4]; desempilha(r_fim,rot); char r_else[4]; @@ -2203,105 +2042,81 @@ yyreduce: geraCodigo(NULL,buffer); geraCodigo(r_else,"NADA"); - ;} + } +#line 2047 "compilador.tab.c" break; -/* Line 1267 of yacc.c. */ -#line 2212 "compilador.tab.c" +#line 2051 "compilador.tab.c" + default: break; } - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; - YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; - - /* Now `shift' the result of the reduction. Determine what state + /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; + { + const int yylhs = yyr1[yyn] - YYNTOKENS; + const int yyi = yypgoto[yylhs] + *yyssp; + yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp + ? yytable[yyi] + : yydefgoto[yylhs]); + } goto yynewstate; -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ +/*--------------------------------------. +| yyerrlab -- here on detecting error. | +`--------------------------------------*/ yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; -#if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); -#else - { - YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); - if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) - { - YYSIZE_T yyalloc = 2 * yysize; - if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) - yyalloc = YYSTACK_ALLOC_MAXIMUM; - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yyalloc); - if (yymsg) - yymsg_alloc = yyalloc; - else - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - } - } - - if (0 < yysize && yysize <= yymsg_alloc) - { - (void) yysyntax_error (yymsg, yystate, yychar); - yyerror (yymsg); - } - else - { - yyerror (YY_("syntax error")); - if (yysize != 0) - goto yyexhaustedlab; - } - } -#endif } - - if (yyerrstatus == 3) { - /* If just tried and failed to reuse look-ahead token after an - error, discard it. */ + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } } - /* Else will try to reuse look-ahead token after shifting the error + /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; @@ -2310,14 +2125,13 @@ yyerrlab: | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: + /* Pacify compilers when the user code never invokes YYERROR and the + label yyerrorlab therefore never appears in user code. */ + if (0) + YYERROR; + ++yynerrs; - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (/*CONSTCOND*/ 0) - goto yyerrorlab; - - /* Do not reclaim the symbols of the rule which action triggered + /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; @@ -2330,42 +2144,42 @@ yyerrorlab: | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ + yyerrstatus = 3; /* Each real token shifted decrements this. */ + /* Pop stack until we find a state that shifts the error token. */ for (;;) { yyn = yypact[yystate]; - if (yyn != YYPACT_NINF) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } + if (!yypact_value_is_default (yyn)) + { + yyn += YYSYMBOL_YYerror; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) - YYABORT; + YYABORT; yydestruct ("Error: popping", - yystos[yystate], yyvsp); + YY_ACCESSING_SYMBOL (yystate), yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } - if (yyn == YYFINAL) - YYACCEPT; - + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); yystate = yyn; goto yynewstate; @@ -2376,53 +2190,57 @@ yyerrlab1: `-------------------------------------*/ yyacceptlab: yyresult = 0; - goto yyreturn; + goto yyreturnlab; + /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; - goto yyreturn; + goto yyreturnlab; -#ifndef yyoverflow -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ + +/*-----------------------------------------------------------. +| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | +`-----------------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; - /* Fall through. */ -#endif + goto yyreturnlab; -yyreturn: - if (yychar != YYEOF && yychar != YYEMPTY) - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); - /* Do not reclaim the symbols of the rule which action triggered + +/*----------------------------------------------------------. +| yyreturnlab -- parsing is finished, clean up and return. | +`----------------------------------------------------------*/ +yyreturnlab: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); + YY_ACCESSING_SYMBOL (+*yyssp), yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif -#if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); -#endif - /* Make sure YYID is used. */ - return YYID (yyresult); -} + return yyresult; +} -#line 634 "compilador.y" +#line 664 "compilador.y" int main (int argc, char** argv) { @@ -2462,4 +2280,3 @@ int main (int argc, char** argv) { return 0; } - diff --git a/ALTERADO/compilador.tab.h b/ALTERADO/compilador.tab.h index ec880d5..6f90250 100644 --- a/ALTERADO/compilador.tab.h +++ b/ALTERADO/compilador.tab.h @@ -1,14 +1,14 @@ -/* A Bison parser, made by GNU Bison 2.3. */ +/* A Bison parser, made by GNU Bison 3.8.2. */ -/* Skeleton interface for Bison's Yacc-like parsers in C +/* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, + Inc. - This program is free software; you can redistribute it and/or modify + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -16,9 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -33,105 +31,86 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* Tokens. */ +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + +#ifndef YY_YY_COMPILADOR_TAB_H_INCLUDED +# define YY_YY_COMPILADOR_TAB_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token kinds. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - PROGRAM = 258, - ABRE_PARENTESES = 259, - FECHA_PARENTESES = 260, - VIRGULA = 261, - PONTO_E_VIRGULA = 262, - DOIS_PONTOS = 263, - PONTO = 264, - T_BEGIN = 265, - T_END = 266, - VAR = 267, - IDENT = 268, - ATRIBUICAO = 269, - LABEL = 270, - TYPE = 271, - ARRAY = 272, - PROCEDURE = 273, - FUNCTION = 274, - GOTO = 275, - IF = 276, - THEN = 277, - ELSE = 278, - WHILE = 279, - DO = 280, - OR = 281, - DIV = 282, - AND = 283, - NOT = 284, - IGUAL = 285, - DIFERENTE = 286, - MENOR_IGUAL = 287, - MAIOR_IGUAL = 288, - MENOR = 289, - MAIOR = 290, - MAIS = 291, - MENOS = 292, - ASTERISCO = 293, - NUMERO = 294, - READ = 295, - WRITE = 296, - LOWER_THAN_ELSE = 297 - }; + enum yytokentype + { + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + PROGRAM = 258, /* PROGRAM */ + ABRE_PARENTESES = 259, /* ABRE_PARENTESES */ + FECHA_PARENTESES = 260, /* FECHA_PARENTESES */ + VIRGULA = 261, /* VIRGULA */ + PONTO_E_VIRGULA = 262, /* PONTO_E_VIRGULA */ + DOIS_PONTOS = 263, /* DOIS_PONTOS */ + PONTO = 264, /* PONTO */ + T_BEGIN = 265, /* T_BEGIN */ + T_END = 266, /* T_END */ + VAR = 267, /* VAR */ + IDENT = 268, /* IDENT */ + ATRIBUICAO = 269, /* ATRIBUICAO */ + LABEL = 270, /* LABEL */ + TYPE = 271, /* TYPE */ + ARRAY = 272, /* ARRAY */ + PROCEDURE = 273, /* PROCEDURE */ + FUNCTION = 274, /* FUNCTION */ + GOTO = 275, /* GOTO */ + IF = 276, /* IF */ + THEN = 277, /* THEN */ + ELSE = 278, /* ELSE */ + WHILE = 279, /* WHILE */ + DO = 280, /* DO */ + OR = 281, /* OR */ + DIV = 282, /* DIV */ + AND = 283, /* AND */ + NOT = 284, /* NOT */ + IGUAL = 285, /* IGUAL */ + DIFERENTE = 286, /* DIFERENTE */ + MENOR_IGUAL = 287, /* MENOR_IGUAL */ + MAIOR_IGUAL = 288, /* MAIOR_IGUAL */ + MENOR = 289, /* MENOR */ + MAIOR = 290, /* MAIOR */ + MAIS = 291, /* MAIS */ + MENOS = 292, /* MENOS */ + ASTERISCO = 293, /* ASTERISCO */ + NUMERO = 294, /* NUMERO */ + READ = 295, /* READ */ + WRITE = 296, /* WRITE */ + FORWARD = 297, /* FORWARD */ + LOWER_THAN_ELSE = 298 /* LOWER_THAN_ELSE */ + }; + typedef enum yytokentype yytoken_kind_t; #endif -/* Tokens. */ -#define PROGRAM 258 -#define ABRE_PARENTESES 259 -#define FECHA_PARENTESES 260 -#define VIRGULA 261 -#define PONTO_E_VIRGULA 262 -#define DOIS_PONTOS 263 -#define PONTO 264 -#define T_BEGIN 265 -#define T_END 266 -#define VAR 267 -#define IDENT 268 -#define ATRIBUICAO 269 -#define LABEL 270 -#define TYPE 271 -#define ARRAY 272 -#define PROCEDURE 273 -#define FUNCTION 274 -#define GOTO 275 -#define IF 276 -#define THEN 277 -#define ELSE 278 -#define WHILE 279 -#define DO 280 -#define OR 281 -#define DIV 282 -#define AND 283 -#define NOT 284 -#define IGUAL 285 -#define DIFERENTE 286 -#define MENOR_IGUAL 287 -#define MAIOR_IGUAL 288 -#define MENOR 289 -#define MAIOR 290 -#define MAIS 291 -#define MENOS 292 -#define ASTERISCO 293 -#define NUMERO 294 -#define READ 295 -#define WRITE 296 -#define LOWER_THAN_ELSE 297 - - - +/* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef int YYSTYPE; -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 #endif + extern YYSTYPE yylval; + +int yyparse (void); + + +#endif /* !YY_YY_COMPILADOR_TAB_H_INCLUDED */ diff --git a/ALTERADO/compilador.y b/ALTERADO/compilador.y index 4e02b27..a585592 100644 --- a/ALTERADO/compilador.y +++ b/ALTERADO/compilador.y @@ -36,7 +36,7 @@ int atr_indireto; %token GOTO IF THEN ELSE WHILE DO OR DIV %token AND NOT IGUAL DIFERENTE MENOR_IGUAL %token MAIOR_IGUAL MENOR MAIOR MAIS MENOS -%token ASTERISCO NUMERO READ WRITE +%token ASTERISCO NUMERO READ WRITE FORWARD %nonassoc LOWER_THAN_ELSE %nonassoc ELSE @@ -156,38 +156,64 @@ lista_idents: lista_idents VIRGULA IDENT ; // REGRA 11 -parte_declara_subrotinas: parte_declara_subrotinas - declaracao_procedimento - | declaracao_funcao +parte_declara_subrotinas: declaracao_procedimento inicializa_procedimento parte_declara_subrotinas + | declaracao_funcao parte_declara_subrotinas | ; // REGRA 12 // Regra ajustada para declaração de procedimento declaracao_procedimento: PROCEDURE IDENT { - // Insere o procedimento na tabela de símbolos - info_t info; - char r_proc[4]; - sprintf(r_proc, "R%02d", rot_id); - rot_id += 1; - strcpy(info.pr.rot,r_proc); - info.pr.quant = 0; - info.pr.param = NULL; - - // Incrementa o nível léxico - nivel_lexico += 1; - desloc = 0; // Reinicia deslocamento para variáveis locais do novo nível + l_elem = busca(token,ts); + if(l_elem == NULL){ + + // Insere o procedimento na tabela de símbolos + info_t info; + char r_proc[4]; + sprintf(r_proc, "R%02d", rot_id); + rot_id += 1; + strcpy(info.pr.rot,r_proc); + info.pr.quant = 0; + info.pr.param = NULL; + + // Incrementa o nível léxico + nivel_lexico += 1; + desloc = 0; // Reinicia deslocamento para variáveis locais do novo nível + + insere_ts(token, PR, nivel_lexico, info, ts); + empilha(token,proc); + } else { + // Incrementa o nível léxico + nivel_lexico += 1; + desloc = 0; // Reinicia deslocamento para variáveis locais do novo nível + empilha(token,proc); + } + } + parametros_ou_nada + { + nivel_lexico -= 1; + desloc = retira_vs_pf(ts); + mostra_ts(ts); - insere_ts(token, PR, nivel_lexico, info, ts); - empilha(token,proc); + } + PONTO_E_VIRGULA +; +inicializa_procedimento: + FORWARD PONTO_E_VIRGULA + |{ char buffer[50]; + desempilha(buffer,proc); + l_elem = busca(buffer,ts); + empilha(buffer,proc); + sprintf(buffer,"ENPR %d",nivel_lexico); + + char r_proc[4]; + strcpy(r_proc,l_elem->info.pr.rot); geraCodigo(r_proc,buffer); mostra_ts(ts); - } - parametros_ou_nada - PONTO_E_VIRGULA bloco + } bloco { char buffer[50]; desempilha(buffer,proc); @@ -196,6 +222,7 @@ declaracao_procedimento: PROCEDURE IDENT { geraCodigo(NULL,buffer); desloc = retira_vs_pf(ts); mostra_ts(ts); + printf("aqui"); } PONTO_E_VIRGULA ; @@ -452,25 +479,24 @@ lista_escritas: lista_escritas VIRGULA expressao_simples { } ; -expressao: expressao IGUAL expressao_simples { +expressao: expressao_simples IGUAL expressao_simples { geraCodigo(NULL, "CMIG"); // Adiciona operação de cmig } - | expressao DIFERENTE expressao_simples{ + | expressao_simples DIFERENTE expressao_simples{ geraCodigo(NULL, "CMDG"); // Adiciona operação de cmdg } - | expressao MENOR expressao_simples { + | expressao_simples MENOR expressao_simples { geraCodigo(NULL, "CMME"); // Adiciona operação de cmme } - | expressao MENOR_IGUAL expressao_simples { + | expressao_simples MENOR_IGUAL expressao_simples { geraCodigo(NULL, "CMEG"); // Adiciona operação de cmeg } - | expressao MAIOR expressao_simples { + | expressao_simples MAIOR expressao_simples { geraCodigo(NULL, "CMMA"); // Adiciona operação de cmma } - | expressao MAIOR_IGUAL expressao_simples { + | expressao_simples MAIOR_IGUAL expressao_simples { geraCodigo(NULL, "CMAG"); // Adiciona operação de cmag } - | expressao_simples ; expressao_simples: expressao_simples MAIS termo { @@ -516,7 +542,10 @@ fator: IDENT { geraCodigo(NULL, buffer); } else if (l_elem->categ == PF){ - sprintf(buffer, "CREN %d, %d", l_elem->nivel, l_elem->info.pf.desloc); + if(l_elem->info.pf.passagem == VLR) + sprintf(buffer, "CREN %d, %d", l_elem->nivel, l_elem->info.pf.desloc); + else + sprintf(buffer, "CRVL %d, %d", l_elem->nivel, l_elem->info.pf.desloc); geraCodigo(NULL, buffer); } else @@ -550,6 +579,7 @@ fator: IDENT { geraCodigo(NULL, buffer); } | ABRE_PARENTESES expressao FECHA_PARENTESES +| ABRE_PARENTESES expressao_simples FECHA_PARENTESES ; numero: NUMERO; diff --git a/ALTERADO/forward2.pas b/ALTERADO/forward2.pas new file mode 100644 index 0000000..b0149a3 --- /dev/null +++ b/ALTERADO/forward2.pas @@ -0,0 +1,18 @@ +program OutputLines(output); + +procedure fun1; forward; + +procedure fun2; +begin + write(0); + fun1; +end; + +procedure fun1; +begin + write(1); +end; + +begin + fun2; +end. diff --git a/ALTERADO/lex.yy.c b/ALTERADO/lex.yy.c index d3651db..7738f96 100644 --- a/ALTERADO/lex.yy.c +++ b/ALTERADO/lex.yy.c @@ -1,5 +1,5 @@ -#line 2 "lex.yy.c" +#line 3 "lex.yy.c" #define YY_INT_ALIGNED short int @@ -46,7 +46,6 @@ typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; -typedef uint64_t flex_uint64_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; @@ -155,7 +154,7 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE; typedef size_t yy_size_t; #endif -extern yy_size_t yyleng; +extern int yyleng; extern FILE *yyin, *yyout; @@ -198,7 +197,7 @@ struct yy_buffer_state /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - yy_size_t yy_n_chars; + int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -267,8 +266,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; -static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ -yy_size_t yyleng; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = NULL; @@ -295,7 +294,7 @@ static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, yy_size_t len ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); void *yyalloc ( yy_size_t ); void *yyrealloc ( void *, yy_size_t ); @@ -348,12 +347,12 @@ static void yynoreturn yy_fatal_error ( const char* msg ); */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ - yyleng = (yy_size_t) (yy_cp - yy_bp); \ + yyleng = (int) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 43 -#define YY_END_OF_BUFFER 44 +#define YY_NUM_RULES 44 +#define YY_END_OF_BUFFER 45 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -361,21 +360,21 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[115] = +static const flex_int16_t yy_accept[121] = { 0, - 0, 0, 44, 43, 2, 1, 15, 16, 40, 38, - 13, 39, 14, 41, 12, 11, 36, 32, 37, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 2, 0, 41, 10, 34, - 33, 35, 42, 42, 42, 42, 42, 27, 42, 42, - 42, 42, 23, 42, 42, 28, 42, 42, 42, 42, - 42, 42, 42, 0, 0, 30, 42, 42, 29, 42, - 7, 42, 42, 42, 31, 42, 42, 42, 42, 5, - 42, 42, 3, 42, 42, 25, 42, 22, 42, 42, - 42, 8, 24, 18, 42, 42, 19, 6, 42, 17, - - 42, 42, 26, 9, 42, 42, 42, 42, 42, 4, - 21, 42, 20, 0 + 0, 0, 45, 44, 2, 1, 15, 16, 41, 39, + 13, 40, 14, 42, 12, 11, 37, 33, 38, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 2, 0, 42, 10, 35, + 34, 36, 43, 43, 43, 43, 43, 28, 43, 43, + 43, 43, 43, 24, 43, 43, 29, 43, 43, 43, + 43, 43, 43, 43, 0, 0, 31, 43, 43, 30, + 43, 7, 43, 43, 43, 43, 32, 43, 43, 43, + 43, 5, 43, 43, 3, 43, 43, 26, 43, 43, + 23, 43, 43, 43, 8, 25, 18, 43, 43, 19, + + 6, 43, 43, 17, 43, 43, 27, 9, 43, 43, + 43, 43, 22, 43, 43, 4, 21, 43, 20, 0 } ; static const YY_CHAR yy_ec[256] = @@ -418,82 +417,84 @@ static const YY_CHAR yy_meta[39] = 3, 3, 3, 3, 3, 3, 3, 3 } ; -static const flex_int16_t yy_base[117] = +static const flex_int16_t yy_base[123] = { 0, - 0, 0, 123, 124, 120, 124, 115, 124, 124, 124, - 124, 124, 124, 109, 104, 124, 24, 124, 103, 0, - 12, 95, 16, 16, 81, 85, 91, 95, 82, 79, - 78, 87, 22, 90, 23, 105, 100, 94, 124, 124, - 124, 124, 0, 83, 71, 78, 65, 0, 67, 78, - 69, 63, 0, 77, 61, 0, 64, 75, 70, 60, - 58, 63, 62, 81, 44, 0, 68, 59, 0, 62, - 0, 63, 52, 59, 0, 32, 59, 50, 56, 0, - 50, 42, 69, 36, 44, 0, 38, 0, 44, 48, - 37, 0, 0, 0, 46, 45, 0, 0, 40, 0, - - 44, 46, 0, 0, 32, 24, 30, 28, 22, 0, - 0, 31, 0, 124, 48, 60 + 0, 0, 129, 130, 126, 130, 121, 130, 130, 130, + 130, 130, 130, 115, 110, 130, 24, 130, 109, 0, + 12, 101, 16, 16, 17, 92, 98, 102, 89, 86, + 85, 94, 23, 97, 24, 112, 107, 101, 130, 130, + 130, 130, 0, 90, 78, 85, 72, 0, 74, 85, + 73, 75, 69, 0, 83, 67, 0, 70, 81, 76, + 66, 64, 69, 68, 87, 45, 0, 74, 65, 0, + 68, 0, 52, 68, 57, 64, 0, 33, 64, 55, + 61, 0, 55, 47, 74, 41, 49, 0, 59, 42, + 0, 48, 52, 41, 0, 0, 0, 50, 49, 0, + + 0, 38, 43, 0, 47, 49, 0, 0, 45, 35, + 28, 32, 0, 30, 26, 0, 0, 33, 0, 130, + 51, 61 } ; -static const flex_int16_t yy_def[117] = +static const flex_int16_t yy_def[123] = { 0, - 114, 1, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, 114, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 114, 116, 114, 114, 114, - 114, 114, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 116, 116, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 116, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 0, 114, 114 + 120, 1, 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, 120, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 120, 122, 120, 120, 120, + 120, 120, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 122, 122, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 122, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 0, + 120, 120 } ; -static const flex_int16_t yy_nxt[163] = +static const flex_int16_t yy_nxt[169] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 20, 23, 24, 25, 26, 20, 27, 28, 20, 29, 30, 31, 32, 20, 33, 20, 34, 35, 20, 40, 41, - 44, 47, 49, 45, 50, 48, 59, 62, 83, 65, - 43, 90, 113, 112, 63, 91, 111, 110, 109, 60, - 64, 108, 64, 107, 106, 105, 104, 103, 102, 101, - 100, 99, 98, 97, 65, 96, 95, 94, 93, 92, - 89, 88, 87, 86, 85, 84, 65, 82, 81, 80, - 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, - - 69, 68, 67, 66, 38, 65, 36, 61, 58, 57, - 56, 55, 54, 53, 52, 51, 46, 42, 39, 38, - 37, 36, 114, 3, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114 + 44, 47, 49, 45, 50, 48, 51, 60, 63, 85, + 66, 52, 93, 43, 119, 64, 94, 118, 117, 116, + 61, 65, 115, 65, 114, 113, 112, 111, 110, 109, + 108, 107, 106, 105, 104, 103, 102, 101, 100, 66, + 99, 98, 97, 96, 95, 92, 91, 90, 89, 88, + 87, 86, 66, 84, 83, 82, 81, 80, 79, 78, + + 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, + 67, 38, 66, 36, 62, 59, 58, 57, 56, 55, + 54, 53, 46, 42, 39, 38, 37, 36, 120, 3, + 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120 } ; -static const flex_int16_t yy_chk[163] = +static const flex_int16_t yy_chk[169] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 17, - 21, 23, 24, 21, 24, 23, 33, 35, 65, 65, - 115, 76, 112, 109, 35, 76, 108, 107, 106, 33, - 116, 105, 116, 102, 101, 99, 96, 95, 91, 90, - 89, 87, 85, 84, 83, 82, 81, 79, 78, 77, - 74, 73, 72, 70, 68, 67, 64, 63, 62, 61, - 60, 59, 58, 57, 55, 54, 52, 51, 50, 49, - - 47, 46, 45, 44, 38, 37, 36, 34, 32, 31, - 30, 29, 28, 27, 26, 25, 22, 19, 15, 14, - 7, 5, 3, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114 + 21, 23, 24, 21, 24, 23, 25, 33, 35, 66, + 66, 25, 78, 121, 118, 35, 78, 115, 114, 112, + 33, 122, 111, 122, 110, 109, 106, 105, 103, 102, + 99, 98, 94, 93, 92, 90, 89, 87, 86, 85, + 84, 83, 81, 80, 79, 76, 75, 74, 73, 71, + 69, 68, 65, 64, 63, 62, 61, 60, 59, 58, + + 56, 55, 53, 52, 51, 50, 49, 47, 46, 45, + 44, 38, 37, 36, 34, 32, 31, 30, 29, 28, + 27, 26, 22, 19, 15, 14, 7, 5, 3, 120, + 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120 } ; static yy_state_type yy_last_accepting_state; @@ -537,8 +538,8 @@ char *yytext; int nl = 1; -#line 540 "lex.yy.c" -#line 541 "lex.yy.c" +#line 542 "lex.yy.c" +#line 543 "lex.yy.c" #define INITIAL 0 @@ -577,7 +578,7 @@ FILE *yyget_out ( void ); void yyset_out ( FILE * _out_str ); - yy_size_t yyget_leng ( void ); + int yyget_leng ( void ); char *yyget_text ( void ); @@ -646,7 +647,7 @@ static int input ( void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - yy_size_t n; \ + int n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -758,7 +759,7 @@ YY_DECL #line 41 "compilador.l" -#line 761 "lex.yy.c" +#line 763 "lex.yy.c" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -785,13 +786,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 115 ) + if ( yy_current_state >= 121 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 124 ); + while ( yy_base[yy_current_state] != 130 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -996,198 +997,207 @@ YY_RULE_SETUP case 22: YY_RULE_SETUP #line 158 "compilador.l" +{ simbolo = simb_forward; + strncpy (token, yytext, TAM_TOKEN); + IMPRIME("forward "); + return FORWARD; + } + YY_BREAK +case 23: +YY_RULE_SETUP +#line 164 "compilador.l" { simbolo = simb_goto; strncpy (token, yytext, TAM_TOKEN); IMPRIME("goto "); return GOTO; } YY_BREAK -case 23: +case 24: YY_RULE_SETUP -#line 164 "compilador.l" +#line 170 "compilador.l" { simbolo = simb_if; strncpy (token, yytext, TAM_TOKEN); IMPRIME("if "); return IF; } YY_BREAK -case 24: +case 25: YY_RULE_SETUP -#line 170 "compilador.l" +#line 176 "compilador.l" { simbolo = simb_then; strncpy (token, yytext, TAM_TOKEN); IMPRIME(" then "); return THEN; } YY_BREAK -case 25: +case 26: YY_RULE_SETUP -#line 176 "compilador.l" +#line 182 "compilador.l" { simbolo = simb_else; strncpy (token, yytext, TAM_TOKEN); IMPRIME(" else "); return ELSE; } YY_BREAK -case 26: +case 27: YY_RULE_SETUP -#line 182 "compilador.l" +#line 188 "compilador.l" { simbolo = simb_while; strncpy (token, yytext, TAM_TOKEN); IMPRIME("while "); return WHILE; } YY_BREAK -case 27: +case 28: YY_RULE_SETUP -#line 188 "compilador.l" +#line 194 "compilador.l" { simbolo = simb_do; strncpy (token, yytext, TAM_TOKEN); IMPRIME(" do "); return DO; } YY_BREAK -case 28: +case 29: YY_RULE_SETUP -#line 194 "compilador.l" +#line 200 "compilador.l" { simbolo = simb_or; strncpy (token, yytext, TAM_TOKEN); IMPRIME(" or "); return OR; } YY_BREAK -case 29: +case 30: YY_RULE_SETUP -#line 200 "compilador.l" +#line 206 "compilador.l" { simbolo = simb_div; strncpy (token, yytext, TAM_TOKEN); IMPRIME(" div "); return DIV; } YY_BREAK -case 30: +case 31: YY_RULE_SETUP -#line 206 "compilador.l" +#line 212 "compilador.l" { simbolo = simb_and; strncpy (token, yytext, TAM_TOKEN); IMPRIME(" and "); return AND; } YY_BREAK -case 31: +case 32: YY_RULE_SETUP -#line 212 "compilador.l" +#line 218 "compilador.l" { simbolo = simb_not; strncpy (token, yytext, TAM_TOKEN); IMPRIME(" not "); return NOT; } YY_BREAK -case 32: +case 33: YY_RULE_SETUP -#line 218 "compilador.l" +#line 224 "compilador.l" { simbolo = simb_igual; strncpy (token, yytext, TAM_TOKEN); IMPRIME(" igual "); return IGUAL; } YY_BREAK -case 33: +case 34: YY_RULE_SETUP -#line 224 "compilador.l" +#line 230 "compilador.l" { simbolo = simb_diferente; strncpy (token, yytext, TAM_TOKEN); IMPRIME(" diferente "); return DIFERENTE; } YY_BREAK -case 34: +case 35: YY_RULE_SETUP -#line 230 "compilador.l" +#line 236 "compilador.l" { simbolo = simb_menor_igual; strncpy (token, yytext, TAM_TOKEN); IMPRIME(" menor_igual "); return MENOR_IGUAL; } YY_BREAK -case 35: +case 36: YY_RULE_SETUP -#line 236 "compilador.l" +#line 242 "compilador.l" { simbolo = simb_maior_igual; strncpy (token, yytext, TAM_TOKEN); IMPRIME(" maior_igual "); return MAIOR_IGUAL; } YY_BREAK -case 36: +case 37: YY_RULE_SETUP -#line 242 "compilador.l" +#line 248 "compilador.l" { simbolo = simb_menor; strncpy (token, yytext, TAM_TOKEN); IMPRIME(" menor "); return MENOR; } YY_BREAK -case 37: +case 38: YY_RULE_SETUP -#line 248 "compilador.l" +#line 254 "compilador.l" { simbolo = simb_maior; strncpy (token, yytext, TAM_TOKEN); IMPRIME(" maior "); return MAIOR; } YY_BREAK -case 38: +case 39: YY_RULE_SETUP -#line 254 "compilador.l" +#line 260 "compilador.l" { simbolo = simb_mais; strncpy (token, yytext, TAM_TOKEN); IMPRIME(" mais "); return MAIS; } YY_BREAK -case 39: +case 40: YY_RULE_SETUP -#line 260 "compilador.l" +#line 266 "compilador.l" { simbolo = simb_menos; strncpy (token, yytext, TAM_TOKEN); IMPRIME(" menos "); return MENOS; } YY_BREAK -case 40: +case 41: YY_RULE_SETUP -#line 266 "compilador.l" +#line 272 "compilador.l" { simbolo = simb_asterisco; strncpy (token, yytext, TAM_TOKEN); IMPRIME(" asterisco "); return ASTERISCO; } YY_BREAK -case 41: +case 42: YY_RULE_SETUP -#line 272 "compilador.l" +#line 278 "compilador.l" { simbolo = simb_numero; strncpy (token, yytext,TAM_TOKEN); IMPRIME(" numero "); return NUMERO; } YY_BREAK -case 42: +case 43: YY_RULE_SETUP -#line 278 "compilador.l" +#line 284 "compilador.l" { simbolo = simb_identificador; strncpy (token, yytext, TAM_TOKEN); IMPRIME(" ident "); return IDENT; } YY_BREAK -case 43: +case 44: YY_RULE_SETUP -#line 284 "compilador.l" +#line 290 "compilador.l" ECHO; YY_BREAK -#line 1190 "lex.yy.c" +#line 1201 "lex.yy.c" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -1374,7 +1384,7 @@ static int yy_get_next_buffer (void) else { - yy_size_t num_to_read = + int num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) @@ -1388,7 +1398,7 @@ static int yy_get_next_buffer (void) if ( b->yy_is_our_buffer ) { - yy_size_t new_size = b->yy_buf_size * 2; + int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -1446,7 +1456,7 @@ static int yy_get_next_buffer (void) if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ - yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) @@ -1484,7 +1494,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 115 ) + if ( yy_current_state >= 121 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -1512,11 +1522,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 115 ) + if ( yy_current_state >= 121 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 114); + yy_is_jam = (yy_current_state == 120); return yy_is_jam ? 0 : yy_current_state; } @@ -1535,7 +1545,7 @@ static int yy_get_next_buffer (void) if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ - yy_size_t number_to_move = (yy_n_chars) + 2; + int number_to_move = (yy_n_chars) + 2; char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; char *source = @@ -1586,7 +1596,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); + int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -1955,12 +1965,12 @@ YY_BUFFER_STATE yy_scan_string (const char * yystr ) * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, yy_size_t _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; - yy_size_t i; + int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); @@ -2002,7 +2012,7 @@ static void yynoreturn yy_fatal_error (const char* msg ) do \ { \ /* Undo effects of setting up yytext. */ \ - yy_size_t yyless_macro_arg = (n); \ + int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ @@ -2042,7 +2052,7 @@ FILE *yyget_out (void) /** Get the length of the current token. * */ -yy_size_t yyget_leng (void) +int yyget_leng (void) { return yyleng; } @@ -2192,6 +2202,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 284 "compilador.l" +#line 290 "compilador.l" diff --git a/ALTERADO/stack/stack.o b/ALTERADO/stack/stack.o index c24c7e8e435160fb879533b12b2971f9415cf5a4..42c993bda65f8ed39ae898d367099f06e6aaf026 100644 GIT binary patch literal 2896 zcmb<-^>JfjWMqH=Mg}_u1P><4z#zbZU^{@B4h*~uJPe^8oliYFYkzojyZ-Pv4we8h zk2`?XPl!DXR?z%L!K1VGg-2)U1CQp~2Mi^}`vn*n7+!$Xdvv;jbieTEJPzSEA7F&D zI}d?O^XL=+Q{4<6-Jvf$I<LXyyImi6bVDRN12{au+|VBo^$)roIC=vZL4utD9IqKC zoW$XnERYh9ZU&Fm10``VHpEpwJi4LAf}H>{@;^uo#JV34+tJ+g17sM?JD`ApvN7Gz zT>FBdgvX=X^#w>v>w!`ck6u<ts6ayF<qQS}1~f5T++zrd9UwCx!HH@f%&Jb;AFs7w zf!c{(C&=a94jkYJYOejkP<kF=0od%5hZzDgb21VYQj1FtFH|T?tjbJO$S+mMJG?kw zAu}&CIWsXQvnnwqQICNOtk8-<m+FAQvm`Z_p+-Sf*U+F?p@xfr!QI)}N<qUVH7PSO zPr=Yg&q&We*U&^0$^?ZB1A_>JVqmNaVqmNgV3g)z=a|6Az#zi_!60cx5aGxt(8lD< z%NE1K4ocD>c^i;80|P@Zh=$2Cb$}Is<YPeM3=9k{AQ~=T50|e2i8C-ToCVQv`4eDy zkPtQu%9AV%AOB;MW5$|e85o!uz)1;33nv2ugAkH>upb#17>uCeFh1CC3=9lX3=9mQ ztcqd?0|Ns{9X4?d9P0I<=C6Yq1P&Vp1_mn}>g}QGjX)lUg%tw>gAWe%fjGn&ic1oc zv-Of05XmtfEX0tTn3I#A%urlXl#`kVqLK?L8B$V<Q*#SIX__IeC^eNKH@~=~C=sfo zptPizp`a);uOyAZ4(bmU1_lN;1_p*d{~^E+Nt_)?JPJu1S$!3fI4FI=%;AIj8)QDR zxGa)57n1p!IK)Gs;!F&n^nh?@3{)IsJ`a*P8BlSUdKIYq3ZUZX>dT?xF!ef6_4QD3 zboFgeahUpgsCrP|12JLZu=Ft(svcwxFOoZ#K*eF|VfL<pii6Z6`|A``9Ht&-{&lE0 zNIkOoAEDwf^)T~)Ld8Mqk<C{CIi7)m0i+&;p<D(?U5O9}<r|P(0*F9T56c$~XyUN+ z&!AUanOl;W#GqGPQUswhV639loJ75n)QS=Yy_Cd~L<YU2;$jB9qI?J^IX^cyHLrw0 zFE76&RnOfoR2P!|^}yOvGvd>V5_40b)>2G?!T}USpfrwb7%UwAgCvn8(6|iJ3=9mQ zu!X6IDYbwWWdhK^1*LtEUQpfusgVE?3=9lv3=H7XjTy>^QT9-MFg}b1nE_*iXiz+Z z%p_O8A=G|!>l~m0lR=gsVUS%&Tn0<1egkAd1_p-9Q2n6rMV5lOA4WSt^&_hRu|Grg zgV@LzrVl0-4%LsY{0CG3)Et4S1<~m455f_D9-zXIfq?;*?m_Vf(hI^Mb71iYau3uh zkT4uifJR6FNC5)_12@zjbp4?E4XPBb7sPk~N>mIC3=tp>5{4QF7ZHS(lW+kjV+GXx LiBLX_Le~!fA{^FD literal 2056 zcmX^A>+L@t1_nk31_;5zz`(Er#8Uu?Ffd3mFfdqv_z*4z*}x1Dx&c)K<Fhj`Fn};r znjt>EB(<Uhq83EP$A`E^gn(G6IE4wq2bl+AMzAt4$bf`c7#ctn49CYO7nc-e=A}ag z(9MIHGYu+l1M(P@4WdA1gJ>9zk5A6eEl5l*i7(A7&&*4SkN0tb$$@F8M_`V)!NR}* z60%@pV1OEpVx$oR1A_!KOc@yX85kJ(!N!0Tfy5)&7#IW@7#K3x85kBYFfed4Ffasw zRWLAcFhDTKTpk7n23DvzDb#;whKmo_8GgQCclasK2&Fk0cK&x}n0SCW{@VY;3>W`a zGp+pF%rJ35v;2>T+zdZoa6A0uU}X6Cf_=VJ1_OgRBLjno3<HA*15?8#1_p*HAoCV9 z$NvDaIanAbGW>P83}S=qV1U}e!07OEVRQTsCWeMdU^%dv4nJSAJN(pOg}CD-x5G~j zMuwkYn$uw?2P=c11}DQ#kbQrvomT!oOoSW7=Sy)gLfi;(H>TUg85l%haxb7^!NKYP zu@}|;LXiC+zk&S1$msAB?tXTMpCCVh{PF<AW?+~?$ek;i<9~p|5y_1ZF@zgWK*N`T zfnfpz1H(j+`I?}xM&iTdK;aIOf62@+k%NI@0tX|*L{Rv_<Uw*Ux54ar!Oid!<W7kH z89u%cpD(onExbVHp_>C%&+70Kr2pgp|KiAYfXqXVpMcDqj6{Xh;*!G)70ME;G7}Z@ zOBM1CFV0uU%*#y9Ow7rwN=!-A<6__ftF+=`(4{)yVyID2)ipFIR;b}(@GMEqMav}M zVoZPml<iPtz~T%H3`-!QpsWUALCGUfdIf~Wkk5gZcc9F`051X{ia}%m6FArF`Y?gZ z2_Fv#ZEFG*H(&ziYabm5ZTp20qW%q(e!&Qle*&Rx?=XTb@d1^KEDQ{`7oh4+Fha~f z0-<dWK*jekGJrho11igz7#M6fK*iTEg3EcI6%g7sf{}rNmw`by07|<sGBEHkFzB{0 zK<Eqx1_nL`2HhA21_l9;Iw(H@Qns-<Kxt5TGBPl*f&31lXM)s0!w4$Iz{kYE04tY4 zi5|r7g~m)HNIeq+!!#&A6UzSz<rhKuub})cC?95CHHZ%?kU^M%fdN#t@G~+nz~T|) zUJxJTPLO-#7#J8pd=MLi4WN8jyb3`41(E_|H#EKv8s83$4=TfvywAXp6R%fXQp6Bn zTvC*in#T|y4`L-3RK_P~WHZDgGE97NNn&y~Lws(2aY<1kj8{;UnOBm=5T90*n#vHL zo0yZ6pUe=Sl3JXaTL8+14Dm1q#2!5psD*mQ3^^sa1x7Hg5twTT;~Ijw1`G@Uk%)AN diff --git a/ALTERADO/ts/ts.c b/ALTERADO/ts/ts.c index 97491ea..d7f397f 100644 --- a/ALTERADO/ts/ts.c +++ b/ALTERADO/ts/ts.c @@ -51,7 +51,7 @@ void insere_ts(char *ident, int categ, int nivel, info_t info, ts_t *ts){ } simb_t *busca(char *ident, ts_t *ts){ - if(ts == NULL) return NULL; + if(ts == NULL || ts->tam == 0) return NULL; simb_t *p = ts->topo; //ponteiro? if (strcmp(p->ident, ident) == 0) return p; //str compare @@ -88,6 +88,7 @@ int retira_vs_pf(ts_t *ts) { } //retorna novo deslocamento + temp = ts->topo; while (temp != NULL) { if (temp->categ == VS || temp->categ == PF) { return temp->info.vs.desloc + 1; diff --git a/ALTERADO/ts/ts.o b/ALTERADO/ts/ts.o index bd69dcebf38579ca43f07d9c463a8aa80489343e..c46d86d045327bbcbe66ae8f0e1ef0fb35de61c6 100644 GIT binary patch literal 11240 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 literal 11248 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 MWdvs#8Za;b00X}O-2eap diff --git a/AvaliaTrabs/MEPA b/AvaliaTrabs/MEPA index 5b78212..219b60d 100644 --- a/AvaliaTrabs/MEPA +++ b/AvaliaTrabs/MEPA @@ -1,11 +1,9 @@ INPP - AMEM 2 DSVS R00 -R00: NADA - LEIT - ARMZ 0, 0 - LEIT - ARMZ 0, 1 - CRVL 0, 0 - CRCT 1 - SOMA +R02: ENPR 0 + DSVS R03 +R03: NADA + CRCT 0 + IMPR + CHPR R01, 0 + DMEM 0 diff --git a/AvaliaTrabs/compilador b/AvaliaTrabs/compilador index ee427a95eb2852f72843c33cef74c5830b950ce3..203a4ac2e55297b39f2f569bb738809d4f1c2261 100755 GIT binary patch literal 54240 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 T?ZL#r^l323Acdv@jmrQ4{|S5( literal 54640 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 T-$8sB);|kj{ew_&5?wz4xvl}L diff --git a/AvaliaTrabs/forward2.pas b/AvaliaTrabs/forward2.pas index f465869..b0149a3 100644 --- a/AvaliaTrabs/forward2.pas +++ b/AvaliaTrabs/forward2.pas @@ -1,18 +1,18 @@ -Program OutputLines(output); +program OutputLines(output); -procedure fun1() ; forward; +procedure fun1; forward; -procedure fun2(); +procedure fun2; begin write(0); - fun1(); + fun1; end; -procedure fun1(); +procedure fun1; begin write(1); end; begin - fun2(); + fun2; end. diff --git a/ORIGNAL/compilador b/ORIGNAL/compilador index ee427a95eb2852f72843c33cef74c5830b950ce3..9aaef70964f7a3178989a5dfccd6e99ba0192ba6 100755 GIT binary patch literal 54344 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 literal 54640 zcmb<-^>JfjWMqH=W(GS35Kln}BH{p{7!1xq84L^z4h$9y+zbv3vJ5f|YzzzxEMPH+ zJWM@|&R~Lw!)Oi&mw_3oZv|8yotA;BgV7*2frLOb$UYDo8@|8;5rxqV0uVk(A1jCn z<-^2bbZ9C_l7Rt6!^A=Q!1gsj<QdTD11b=47>%qC6gC&uK;$p%L8U!F0l>h(PyjZZ zfdQru6dWLZ51{%UK=r}s4<H9IFfhPqSa^br0pTMc0~i<>&}kQl^$ai?q!uI;@U$ca z#Qrl2#A9GUr@uh$gV7+hAeDhnOHx4Y1hI+1uwV~@+J`G#44~lxqoLL_=;vf6nVIP4 zr0C{k=9O0HR#=$nnwjVo=j$1P)1L?f12|2&`-L)C@=wk$s1@3M;^Y2z>MHw>{Cnc& z401Qf4IuMCYCvuVSp^L)uwG>b25{O3`-^cQLj$7#6G%)Iq?mz$K|{7j=3?r(+_ca{ z0n1O_u%ro<MWuuo85p2h2t^{70lT;%4si=c1_lKb6CfOM9O|dy5NE>So(LT3&)^V` z$02TsL;NxhaZViWnSw)o8V>PoIK=yKh=0H#{t}1yB^=@*IO3%ahk8)<!j>NP;ZVO2 zhd3w=V>8DKhk9)s;wx~7gVH-T^W|`;KZ-*<8AteV<51tuz`!8LAi<z;0Fu68<=QO< z1_mXF5DFOtRd0Z%emzv&0Zp7CCo?G-R9u)bq^Fi7Go+>Elon?&6qghw7gRE&R%Dhi z6c-d_=9Q!|q~#Z+=7D7LKvMDX#U+W!+40F4+3{(KnK=wasfjr``N<5$B`KMC44K7= zB_)+0)j6qo47sVf#i=C>@$soeMS1!0Ir+(nC7Jno49PjEiAAYJMIcT2r6mk$1*IT2 z6qJ?}gY<yx$%UC(l$=-sQU_69ln3IbW#**j<ujy}7iE^DGNcuyCZ;f?L7f{PpIng` zpO%@In3GwR3UWzuZUIAlJjlZ!w-=Sf=O$+6F{Gsy73CK(6z4(pr4^;7GPwJAIyuK1 z=^2{9nFyAVo+(4TXNYfnN@`JRdS-D+YEg)<b54F<YDi*IPAWrue0pwv9@LI_h*GQy z85kItzz{}5c+6li2pdL%RIuO>N2mdn)6C$q8k8SE31iB{X>6dDh&UspDiz7h<OS6T zN>F~OR3<0LY#mSqz`(!&tB+ynj6oP=3IoFpXnhM4KLE`P9BAnY#=o&2q7PJOfa(|s zkAdL<k~q`|u+$4AaZ#`cg!q6Yt_TqVlRuEep-m02I4qxl+BBd%3l?NxV1VTZkT|T~ z0?EPh14vvABml)PKm`y30|Ps>?t=<5d_WS1)sY~%A4uY$`V%Au#!z>H%mLW}7Gq#w z;6M@wg%M0#07)FA2PQ6oBo2!MkemXNI44K|iZzhLxu9Yo$^c0mROW!hK-dCF9NJU_ z2{Sk#iSvR*AcO~!I3Gj^Oa>r{^MgeoL<EvJENy~h5|G3NK>|>mfg}!1f?$~fBymvN z1}w<Hz)*oCE(Q~1U|?uK5(l*nU{W1O;u0`H1_p)+NaB)6;xmxMrI5rIAc;#OiLXEs zM{W>pKoXZlQojR998{;kqz)j7%fkd27#L0<i6ggzE+C0xs~?bz7-f!zz-S2I2!YT1 za=$#9-*9+zv))|Kz~Iq(poHoF1&`(<9EZU={+n)E$H4Gkb;~*i27Y-5hX1M{eg;VH z<%9qK|NmEAwT^)y15~TNya47e0`Wmr#>)d>{wxq5R8_p(0On5u@j+GP%LQP57l;q4 zGG0yq^P50?P*w4=0nD!g@j+F@%K|XJ2*d|f4KEYG{45Y3R3*F&0P~YTd{9;J(gDnm z0`Wmrz)J%#KM2GJ75y(2z<e(dA5`SO6ae#`KzvY9|B?aBw*v7&Mf}ST|3LmV0`Wmb z`^yJlz7~iND$-wG0P~eVd{CAD@&K4G1>%E>_Lm#Ld?64YRHVOL0OoUn_@Ji1%L!mU z6NnEg+Fv$+`M=gOFl2y=^p^!-{wEM0RFuC=0P|mg_@E;EWdNA}2*d{!-7g)${97PC zsK|b40Onr;@j*rPO9e3h6o?NhqF)Mt`5^si6F?CR!l3kF_|~)YVw^|kBah}M9|A&r zdRf_$85lfzdHa(<l&y#d1H*sONoyGxzD)4wwLQ2NB+9xAL|OhQ5%uV1%>%Jp50r5J zf50yf9zi(_r9FCWCxRq<O}jvp=0A_l4;}~K*?S!P!R*0!%;Vy}5)qGXR#%W@>wyxE z{}0mm<y{yUVERGsYp|_d%fP@;svYXlY^wxfdUQT5;qmCURa?uz@Iv$d|Nk#i{{R1f zj5TyE0|R61VSafO{V&V^|Njp%DAc3#X|PB08;fq%lC=yBtq1s9H!(0U9A`}e>0@AE z=w?j-i<fd8XAOdid33X~LtIzN=h4l2dkq7FM<?qS5Y^546-2cj0LyFyu{&8Gfv9fQ z-yo{>K#8nJH|u*4yIb@Ih&uR)*@N+dM>i-dmKwd#RAylC=w@9ClIj*c2Bvt|gQ$ZK znLT=Cxb`tPfGj-zqFoL|Gr#yC3)Zn3q^8sL0sl7986al2>w^vfk8alo9-Xc)x>-SD zovs&NGfn`B@o!_`-*&)bhDWa`cP;}1|27tZ4%hSDt`|T;A`BkAtY5Mj82GodFr~E~ zDDmiaz0k=T2Q}5BlQnz|1H)@0WaX^+5alyET`x4(UMQ*);os(Z9%P#6D(n_q1_^Ix zVdCF^0i=`>VYOr-)GSNa3#GG=ZJCc#Pb-rB9?h-~7?HJQK((bc|ES?_{r&I%{|U&_ zoKUaM=ybi(TziF~RL7&6wPZCYbX^~Gv!<<PVCZzcfUM(s7Sx5Eu2(#|U0--~vW9@v zgF;)|^+hMEAC$+xjiG~;6UsRTiYHKfu>N1gz|dTKMVG(*G9Lp&x9b&;UXfN%?(^tn z<u7Jn=w@L82OV=U1A_<S1-t*CSUt1~q8}8itXDytPLT7CuL3*orPlxd|GQZYK_(wy z>}1tg#lY~ggAbILHCKa-25Dwpw~B#b7pN@r=sf1pYb(E+f#HSKumAr&dPRjnuIx2^ zQ~=7%woeKe7<PcPy_o&$|NkAJ(WIC5VAF1|0(Hi~rX`@7c5xL0!;3dR!KNJrxv$rB z6~we@aMOH2rg1YeFueT83vyfUDo`g4Y?=_NY0V(h=0Qv=hnSWGG0g*R+W(*b|L*{e zEWKO|HqCw&s0#=-?Z`?LpPGV93xJrW2{BC?V%o2Km`^u?OydH%Efj3p$CV5WpnAol zo3#wpwC5`s7+x?zOuM}j6kw*8^FfsD8n|i6Ak)-Arm=%fTfCBi0aPn_bhB!pnl=+; z+Lj;SaO;Jb)&nsu4sMz#$TSU*X*+p9;TF1*fdN#fd33YhT7lwIZ;)we5Yy}-rnx~( z6M&m`{Kx<QJ9t5+WrIy)U&+7#s$o64S$j}T`@4dH;e`amw2v!5UNmKcn06=+7H*Xw z)7U_!$%0MWxq^WKR6l!kv)ZAWwjN~KsqbK)E{2$PEDvO;Z3)~oZIEf~Ak)rsgM6C3 z0@7La=w|(}9L1-JAk%6friDUGYlE1k1~={Q_y7NQu!2l$1e+$if&n~*;nB^y2-P%U zkZF1l)7T-VIYUglkqh%_Kgcu=kZHzX)6OqvU;wowJi1v!P)$3!oPpuRgKuD;?pzM? zqUpa}5M|p1H_Z`b8Z*eWr(7VPHZEsi0JTFrx>?y!O)CePHVI-{HpH~U5YuenrhWeQ z|NjmakZIGwrWr41U;wpZJi1wTEJF!5O^|6W5YuEKrgcC}dzS<A=~9qsd?3?2!KOW3 z1{r4Y=w{7AHSP8?28I{kzJh&vei_J%rj8KP7Qjsl2bsnXGVM1f$fwhnfd>D;`BVng zv|f;DD<GydLQMOa12WV$2yPlD$TR_vX=}lzc`kztv3qp0o?D9IQ+tqUQ4rINA*OAD zn8pG(ZTHvz|91$2Op6Db_IoJ<cx=d{o3#Pew2w;}7+&x|OnbT%<S5g8h-urhVd0hw zG7U5r@KO+L+S;WI44}53M>nexs%eWsrtSLz4!7wL)3hO`Wx!372bm@ea@%1JP`Je} zWncic96h>OpDaP~X(-6F0*Gmz5YrxKgPdq91vl;Dm;e8Fh=5Eh1)C<glz{=%?)2zp zorY=}JIFL8h-tr<fQ&Jn2{G+V7R;y3Ak#!arm2HXJG_K}0n}>s=w|gmHErh-28I_` zK7)O_7Ghcu#I!oNX{I34#6YIqWC!`QbO{3ksLkuq&H8IGichmarnNy#i-(xT4Kd9C zZrbzD|Nrj*jSRl*2Aih7gn<FnV)p1}U4v?xEXXtqh-rcl(~e|;JZ$?Y6Xw&IAk!p3 zZnFiOc5^WU1E{_2(ajo%YTEh53=A(`eFFRR@M4fLrqvMBroc_}2AL)aGVMJZ$fw<l z85lsVb&qaV0aVi(L8i@tm{tlg%?M(e8{D+NpZ@>fAq6sRA=otA#S9Ffw!TL<>!C#` z;bsgn%@1OlI>fYBnII?H{>Xs&bUny4X^?5bVAI|&VqgIE6hQ4ERMVa=Vqkc|05R?6 zB9Jkriy)@0f}55IGED|#8Y|eeg^L&%Ktn(t-K=V;rcDQ#w&^1{+`1vAML|r9ftw}_ zGEEj_+ICh@xCJj_U;qsqd33YhScu|NPmpOT5YucSrinsK<Aa-a^yB~kJLEv7Wr9s( zT?CnS^XO*nLN)F8LI#ExVi42bF9iGaN(P9sJ&+Cyw{nna@*vZs!KQ6r$iM&^)b;3Q zwLvv)Ey%PJAHY6c2r+Fc#Iz!~X__F@6hNk(WdZp#b0K6(#G{+_-2xP!#)C|&f|wQz zF)a*YnhM;s+aLb_-=PRHtsZQe^g;#(&;YVWH|qja(*!}L=|D_lg_tG?G3{C!%%{B| z(?DbFFAc$_on64d02-$D=w=N<HSO>M28I{+-h+L*eE}%IOwXi)DBBLWY4#w~ltFHL z%nb5r{Q?FCRR(aqz=CR8Daf=55YsXtrnNy#vx1xU@%{h*J5)fXO$D1~xPXBHH1zG! z&AM$qO1P<mOml*mCJiyo5n|e#RG3c}gG^HendS~Q?eTmD2GFR5M>lH*s%bapGcdgP z@(%3Nv-3e-G-ZI8HV<xED9AK5kZC`eKt7#1A2fLZ_Nf%AY26^xmO)IbhnTiI4P>Zo z0NgZokZC+1(^fNq%n+@c2kNWdn8(22k^I4<oAnro)p>CjXqd*M^Z1Kz@BjaQS;YkP z+sjh0F4hGgRo$TvJTwn^bY5tF!Px0~gMXW7Bv=^IePne3b3}DP6uhh2?O@S*pft&& zn^hGg-Yv=pqL8FzI$6a*Lfxz^U`q7uTm}XYxB`!E(IX&%P63Z@)<+;#x9DjQ1y^z0 z0W=W~>IokPiFb>x0a0*ikM01DZq_Xzu^AqWhd|{zh;4bOsKldN^u%0Hr|O2s3{c0q zlXc=;28I{c*}>f;P*3*wi=P}I&K-|#*0~^UovtsMYws|WXn1t9rho*R4={RkvPOcK z-K;?%3e?qdz0>J>;pJXX2I*$Cfr`Ea6<aT~85tOwe=za4fTklsjDAq;v>qtQZ2rN> z-})ass31BQ)S+Tvc)<|}8fz%g_ULAn1slWqZVo8^zRY1@0L8+ggRkTnFI@c5d_cF; z^~%djA3;64+jBsg_*>^e@<+=YQ2+G!3lAO!hL>GnG0_VkQ(WQxo;ins;l+J6kXJ8& z$~CYK*9RWmtji(H7cW16@<2ChJc!>d>H(tA!Z-jV1`SA%{EI%gftDbtPOyPt5ax@Q zOFsPnKjF2IN3X4L3IoH7X`&1a6JEx>|Nno&%LtHN%||SvV-F*by?A(Zv)-Q#PQ@oc z6q5Z893GvnH$1vozk?(oHf;ehyG7@MC={jLqDw(y$(KBu4>3a0#0-#t<)LC8k6zmn zkaO5YLH4i~fW*5+BS940jBW>$)&r$_9^ImeAn|V2CJ+VA86M3)7)!Z!fHKp|4ps(+ z9pKT<I#!TjqQ)R)-K-%X3alCwgRUozyKVu+_G?8CPzLLDV)OvJ-}Qz^uLq+?r|%8^ zZ9*La&8}M*yIr?fyPl}I?$OP9eHPfr10V{?VHV9lm`V+fvx3AyhI(|ft_3OS7M%v7 z5Gq9%&0=8a43K##%M3DzwH+kgEm{Dg5ULy`v|UetUAgBas2L4v$ADCHi@Jj-xI)mt zkw>>^5J(U-$kFY<0VyduUC)3<J-QtfS`U;ILYNYa2OvW~4D~8tkpKxW<si}P!QOg+ z-{auHAIzYf>iVKHK;pF^Oj3ja#Oj2rZa%=|k$eFp<^i&=^BSo5ss+be=nIcdCyv)V zV9DbSpbjfoGgx8kfl^R3A5CIlc%dK+^1bT|a4F$>238Jq&IAdw7J(_zXb=VWYd2D$ zG}rE7;O~3(@BjbC+C8AfICbpDUBL{GZdMbJwr){b5QU^$rS$-R%RNvwcRip5rjCGO z>b1E?H!CAZZMW#F8K^~|14no036JDc-JwT3k}r8Mp7LP4&>eaJlqilccDo+2cHL7e z=h4kN3#6~}_zS03|NnQo9%!yT@V|tux%L28>0&Tx;nB@H52U7Bv>imjUFFg3!O`t{ z!Xx=Zx9gGK0LISHBcP!8;K6tTVo&XX|E2OC-K-WMZJozoB)s_lzx6-~C>&QNGBCWj zAqXl*k94wn&tPD930gt&;_vhS|Br)w#_-zc#fRtr|93Mq|6l=YDFbO)DhSdCR|Fa# zoen9eF2DHy-=kaf%yf{Mdpu@%bo0IdNp+iE1W^Z{F?%q6^yudF=q}{w_C4W|eA1)W zhR>t(qDSYUeW0xO;^FiE|2tXtgA8EZIUQ6QmWq3HvsQt$cOHMS=sC#s{H>|~K^C!g zgM_<9OF$GnNV-KErh{`xH)}b>1h?ke6AYyi$6dkM+oPLR8>FH0_zO_${I&jZS8!(c z=w`JBiFb>tfGD_m#~my{Wx;Fq<F4S*vTjiYkn>zm^ztx)#)(0SyG1`tLyq}w2MNoA z{C%LBqFeOiG*EDyU_8{#`fM5l!^Izr7dl<9fJOvCnSk{eNM|?idJqK~|7AP@8Yl*3 zjBeglAi-|a$sh_AdXgTH4C5mN3Up`CEKf5?zFRa0M8VySoMj%xGcde(%MZ>QVIWoA zqV^yPuDCn&O7knG&H#ySQ75Q#FLbh+gVc1hs(>j`UJwP>0nT`=q98F))d3#(Wc@W2 zWQFKs5QU`DfumdWHAoCra$kTbKMfM=7Tp4(P?URgvOb>*3bh>`%||?tYLjl(%~L^@ z-4~B;)}tV8ovuG#{s32vu0Qy<F|-^gk@V;WGhu_@d|{Bm@7Jv0=<jg--0k`WH1rA{ z1OE^L8RmtKfq&^_jRG0l?fS!`lQnoMWDFdkoG}8Td`741m*(0pkTLMjAk##bLG3}a z;5<keJ_i07X$)L63Tl?6>le@%IKr0MIQ29l+3(Tp`h(G<n|10G1_lpH*B|^%-~avp z-|hMZQTcY(z5(^?Knglte;jlD%-HSv2IN|>-@gPy902wEn@-j^kV=T(!>2&}j!@1T z4pBa%)Adbr?HgpjuL^~PG1%`29hX7ESp6;;2{p^o^$p1H2tD(0>S;x@pMS~${%r>! z5y4Q(+U@%0H7huWBK+^s{KlZO_KrtqDX4XnGZ~a)Twj3NzaVC}>kIHey9<~jstck} zlOd?4vUGjH-|Wl?YP_jWW?*POz|`sb#G{*)52U<X^!p^_j1S5c9^I^;K!V-8w?Py< zPj@>=c+Bts8OeCTqtg}ChCc;T&@H+dL?PK6z|rmc1XPZL)ctrZ?$Mn4gVCco_X8s& zZG+}~K7gIx3DVguS_Gny3~=B8C5ZCl9^I}VJhWYZfXo8bl}J2LfOvznb&HySD7fx! z2Z>HrTaZvUs}`6N6$ViV1)}nkzy+*FH!CMdrd#yWMASfV-~jv6()9(nVKzCMf#F3S zHv@x5bM6bqZr3}Vhd>oP$Oo<$JUUr_gS2;pB8H)Zbsv=D(aE}dA_K#OlkldbNAnv{ zXJY9@P+}9EHj#k=WCH6{FrT620DtQpa7n;g3^qbE21LP~4T_p>))bH!v_Aosw>(tF z@6pW~Fp+`b7z4x0*<cey9YM;vS(88%xW(7$`op7}RSU$2^c>_TGBCUl|N8%b^ADyH zf#x4f^~tRVO5B=%FqR0ujsW$~CV*1g@fV<m`-`70pt`Jt9h^R2S9G&}m;e$e1z9~8 zsxXm(f#C&cz8a)m^!Wr(`3H_UP!MgHz`y{W*kfHb0pxwq++L^aAJDko1hC6N<N6?j zAg*f!F}qo-AZj~UGr^|)L4+k}N>sw5v-X8YH>(RsF?8C}0>thXRRmFppldx)YV@Lr z4OF<ZzUv23qWmBg-Ml|QJWvuxp0>Qe2=Y3!M>p$BkaX*T5-E>v*1I5fx9Bkt1veU+ zWj(q<EkAHWa2FE;!wXPvYJx}e5ecNS9~}LiwLf0G1h>jrdqD<4&29v-yG64=6o%Q> zu0Qx&R)HgyH3Fmp(xhee0kOM9O+ge~6KJ(Wh(|Z8eLpCeMGg9)sZ1WEs#}x;L?IM+ zi;9B;Is-rn^G_c*WS)X3xRP$skA1M*avLPmEqVk*ffazV!4Hp4rWc@5{Nt?G`ylgf zuNje3eK+f3kcMv29uNiA2bxRnc97|0oeC1_W^DpfqS+t{uE3+)LBOMvwG1TK&6*FQ zI$0-xsBYFkFePdQqL4IzX1V!5V%@CveIWlcbg=66F)&O(DN+?c>87*v$$rp=kQd81 zL6PnH!=t(O2Lrf)ek7cM;YB?=C@@@qbca5HwETZ`J4k>EzZsy`ej!LxcjymLYadjm zAvab)<@^f=sP^Ly3ZRA|IDLRCCU6>=298YEABgk}OB`TVl$3$iC-g#=zJQWm5{TU` z>J6gc-i0MSYu6v8G9KNmwjkMVQ8f?+RRn1UgB%Fy2!RUTA7Hn39)IzL1L8xFe_n8a zvnPssz`^9vS^D6`>N}uDG&sAuz5pqQlro?aIrM=CXoSS|#c>A{h(}qs_8=U-62$Hn zodlwwZt7-0IQ&J47^omU?f_l_3t<|7n(iLWwGS9d<Us2HK=wu5{r|u7_>1B@pyqQO zJ9y0KHR~?0%5G3^P2~kU$c>?YIt7rE9%vC!XDuXZ`CFQyp?=%}H2e(emx03q+?E3s zkKj_D5zY<Z00o=}IB&TAIPL(N+5~Gl?qC72ne|jR!mIm0>~7KJAPS3Df0S~(c=_l5 zf7HAIsu2(ld<7~&PlF1dZq|H|Ina!r3}SbS`hY07(Xfmj)(uMNqVC<$jBW-})h#Ly zq7aI^MfE@eV9&4$gP7f-f4Y!sy>3yCZdgYD1d?ezP@?bA&H4<)?iM`{q7de_9w-s= z=w{ss5``4m>p;wI*6m<QbODG0D~Fd6uYdplf1Gu57xpru9;5-(Lp=eGCDwcpzgsi{ zM1jo#l^Gr&1<N4{{6I3$;?oJl?iSSsQE<huWY&57#k4=*{+2XIzFU+9L_w9oatQ1D zPDoUOeDxT_Zhiq8V7mcgcC$VNQP2Rn3SxJQ?gLR!Q@|@@N`zi;fW3I36YfQnatBn# z&H(9ZJy2TYaoqI>B*VD=@HqH@8I;UHBl8}etR)~d-K@DF3OZ(x7z|ps03H%`{o&Co z0@~sL8hP~WWMBZVeg<hjaueiBaLZp4r1v<hSSKi<GBCUZEwAwCW)%Vn_Xhm;=w|)j z0cv$0;%^5ntMWMR`T;an;n6Mn9wZKGc7YptKfqZ4Vc$)VETsR|!vZQdS&xH6x>*l^ zD5zt%1TiqYu!lJI1CnFsfYfyJ_JSx-mCJYn?sQIs)AKqQ7_gT^phAJMOb1*j^alI` z6&D_i7r?!yQcyYazys_x*B3C+5-xCi<t1qO6{N7=2^w?)wT0k?y*<dWlfZe-^+EFs zCUDd42eils7u%iCf}k5pgYyumKmf1(1qTo;6}kTC29FZ`=nRknNgQ_oO*}vg4W#nJ z1Qab01<;}d6l=#{Tm;SScVn#=z?H}G7Za}k{||K{xF!L0?NLI@z@xMFMrSFge-5p! zK*cnq*xn6_6Hv>&x%LC3sw)g+V0Z!A-*nvd3CK;al|e0cP`}>w26(LJiAVA&kM7V9 z9*n0z3x$}PU7s*^yFRgYy;5@(Gz2iiqc;H5s{i1@2<jAfhh9O`01iS>dV-`Hm4E;L zd!R&sILHa0wTh7NfL52-!+=$>4OC}^{_yBE{Tl#Ef5*Ww{DSlP|Nr|zVew-Ab;P>4 zZq|dX3=Bwlu$%P*y1;W3fo@jwHZ&b_C<2|ef4W`&bh2i&qP8kPg*Z5hSo?6w)S$|A zvlgS+4Kq3xRhh?e)_Cy3D+UIS<E$<SrXzys2W1{-^?|e8pe&E$tlwKeaSPV}1<C{m z8zN+0gPM$gS|CLrsKxOC#O@Zo38LVI98!tu0#2!{CqeSvqMJYzR2d{Myif!!+3IFp z0g{2X&F6sF-J-1^3aS`faF#ZEbhFljL_3eahy#`G$60fr?tJm}-~az;j)k|CzyW^z zh0oRh|55UQfCnf#I!ix*Q!ZE)II}ooR|r;c{KeMG|NkR59y)7(be4Yc=nQ=UZj_aB zd-Sq;g@F>C>ks4xW#gLwRtAO?k8T!K4UpqIU4IxJINo~Z*MCqifZ=%S1t`m-w-vP9 z*Q2xb0XT3VRA=i85U;m2;5R61w0;2bx*=3&>kkm`cq_y2|NlW1<MGx#P{WS59)Ph} z+d(ZG(1<SU!e#~r(2CjD93IVJa~ZqAIzUARm=Ef4f=z>zl@KQ|UhuF4%knqf0+)nf zj)yix7F@lzf~q!;#=Rhi@T)U0@b@=LGcb5uTnZ9^iVLVSFw}8-KwJyrcyvQd=xh}L z`K@~@SaIhCkAn}GK=WSB2f)={&t<U3B|vJL_kt(}{uWh`@!b$>yL&-`9^F&H;RY&5 z4taE*e_;aB*WC)1gNG^D3b4Vg3Lpc!AyjVwvq$Rz4}OnB9tVFgK^y?l3ALk_2b^C# zx~GE8gGIn~kIqvboyT6BxCE+OAv!uCk<$$cN0472_Gv)u15>!|gC+t?aF~?vdvt>t zp!(b7BG?XaNP}xKNa%qoVn~EQoeHwCH{g#4)Qw<ya5{my2vsjMW}6R6GB7mn1tlM5 z{+7j(3=9)MQ(Tbb0UA;hW%UI$Bv}Ob_Z{eLJ@V`S|K`0QvX8&T5IlP1*$A3I{8uUf z&W<nQFN21<O&UQ1OL~o<(SUjhM5^xwr~gh?kwylF*H+!EJYW?Ss@<$ijSLL7nv4t# z^%C8zUmF-0z?OS>!!3W!3Leky1e*XchY`s=4E!BS7#J8D!HxrM(d6$3Rbbs<B_Ojz zKx>0<_`?S1z{Zr8pvlkhgUTa&m7$*F`&^KpUl%m*1!u1k_U5%91|vj!Cpa^CG=sAx zOSfnc$obu1UZ=ouR^<jr?t5AP2Q<aVH~}ei(|zC`M6r^;#axVmVFJW_kn=@r1CdmM z$`0_juQs?C0V#kk!-ZH2s-zh@Td%;QD}%rNj0gh*)I7wR-OC|}HM_?{U~6_gdQBSw z85qDDmtMS=WMFtXQv@`TZ<-Gmy$KR+1{o<@UJsIM1?>Uw=rs)t1eJx*3RvO-DD8@R zBB=o7)8j8*8h{drZ9Qn@k+GB21fl@64dFP0OK@0l+HnUK1qP4asSs0JK{C)8f-UDk z>lL6P#~^O>2D#=dc=Am2P94}eNIG~85hA^&+aN837vdm22Zb3Jx<!{FY3Vhc1yKM= z&tV|jx>@}}Dmst9SSiQA(8*c~;&roHfvC>oFDhk0f(amAFRHsXOMtuyQrCK*j=!7L zpbj!m&Z-Vl+|Bx<793bFW~neRyfhUCt*_t(?aO9hV0ftpb{Z2%A=K1fQ+8yh?LLPY z5Ka;d3@_h+=1_V~ANhm4ZTqE`f#Jpbv!Fh5skBG8XiF`~O{;1d7{HTLpboSG1H)@O zk6zOq5FLj=I`$%T1c7x_fOLQwQ=P|OID&M5X50GxLF<V@;oHrs4fV`fWd??q8A2di zTxy{aY+cL1aJ<#vH>C3GW;L#5VCZZ$0T+#;pK3sAML^n{-*Eij>hSyj|NmPpz$8eE zN9V=PLy%5EudOP`aj6oZQP(31-K?)_pf)_LVPJUq2{iA=dJZObv<B7Iy){U-)_`rD zR|7JMpsnj`K!GR@QVX)R1ZG1v$krN=t)c}WlX_v<z{?LDvyen2cowt{!XKu|4XhHD zv>`qOw?ryW|Nnm+94erenaA-~P#A!i-K^iLq5gbZ4N4{Nt3kq`R<G!mYEbB1s|L9Z zw?Dw0%3j;&)eH<T)S><WwXZ<hz$@y{f@FepLD``TBnVG)KYfvW;(i8{=B9!(7u2ti z41E$j(aow3(%O0a#Ysg5hL<S<U<XQr#GuAO6xZm2C4N<b5-2psfCHdd5@Z)EBS=R# zD@eZE1GK5;Llpx<cL0wE)RbP+9ArmrIt_9Z)EsDuU<q;0bdVLD$6s8N1ZB~^AYM0X z6Nu_O{z3)h$o>2vFK-43K|R!K+Uo;y2DA(dISq=uNmbDB?*yyF5_x-0;)uNCt)K)A zimz@~eV8$7RiJ3pr~(Ot1LJKaC>r@ersK&3pxtR6y|xNf3=A(4KwfM<q5xVaT?uk9 zXk!E$NTypG<fp?RL3oH6A^WM}6ez^7L?aWZobP5$0BP+!{(?z?f#Ky`@a~DyO33iV z%RWA^dtE_Fpr%7&b(uC;LIp!&E-1ZqvTB1Qx>-T;kXV%hc^NrYr+I_C0S)&%CqZsR zjn!mu5zl(C0<7)@XrXN<>vIsVn{^F{>OB6!Po9C{<xB9+h29EC@V>mo3wGK>kP;L( zf6@X=6jU%Ubn_-5q&v@nnqJm2VA&{yIJ6GZ0&8Qn1W9xre{oxmf#GEt*h)XBmB(2l zDxd)t%L|GPR*)5}#vs89ovh!>LD6ptRs7NltXBxiJ<civWxZ4c>pfWxN*f?Oj2Ajt zcb79TyyO5$us$h=rpntO^Wfzxq73O~y;=?`^FRfON4IDP*q~MA_{$1VA@9*^3$o|M zZ%|#*d_>{pbRJMxu)2Ztf(wi}<qQlj4uR5OCu;!6Nu>}KE+7@H2TBD!dTnobGBCV& zti{0aG6Ev04sw742WVN4v`06q1ehxUTBXEuob_KBB*b2G9cTSi28lY4Zr0Cb3=G{4 zJe{n!%D_%|4CZsR9w-HE*t-hmiFC3qC<E=y0ZqqsvmO8of~^6m*$C!}bh6ff)SQK= znFAK&X#T+rHm4WNRq14n0I69CQqybe0dl`G$o(_8K~a!U25RgwmTGqM8iLe|x`Uhq zO;Nq3uAbm@2`Thtj{pDvTD_Z>1FTREMWF_=!q3Mr6MB^Z1H(%dkR!TTKbL|#;H7*X zy|({77#Lnm(qv$GE#uKGdJrVj&3Xw;F+kI1pE@{{_LhP|4eUKZk6zOk9<cVDJh)V5 zoePs^ED`qTX6=J<nfY6nf;UbCltN<Q<uop^fj%HxI*-422kwH2x`MdS5)+#L!4`|E zU`Wgb<=ReGZIDDaD@eW@lms9aiy~R953z{}Cd6180E+(-P~k7q&3dSWfx+@niA^`} zjuNnwZbD=b)q;QrQUuICiWIKLU&LrIFuacS=w@9E(gkt=bE%(4H|rD-H$bGDH5p>O zRX1-W#P}+R48r)0?nuVlpc?;I9hA%cAvzsERBwTR2PA+%OMyOl^qOu(*8k@S*m>Xv zZYQ+XYUX2Lc&Q1VMG}1i+Cm3ST95#CRRj52^e~2m4Jea#vYrA-bhCoxyB#FDMJIv; zk}n~auXa1IbVB7tTR@U1=7*><FuYvP0ZQoM#n6JquNYKN^%O(X!bA?R6Fe~Vu2cm} zsAEVh5Cnx8s~$+An-we%cH7q?(2`$tw?X7ZUw|Z0+_nSMLKX(QZFdpWZJUZfZu?LK zb=z0a<XW$3j2kSan}SPy*2y5lz(v-}A_j&R{16At1&MaEPAg(yfYe4kAQp0M)a(j! zIkYzNI}DC3aKi@{TUS9VSiv)by{4~SVYcoEiDp9FauqJR5+oW75j_GIoeUBM?alD$ zHQfvstp$myL)0#Ui>8A_1tFpn;i7>c(chps>|WCbxTrNq^eIF%A1<m25<Slbir@W( zkb(?UNC&$zFubq>#r<Z8j%v7$&)lH;AFQJnNrxgx2M<U`BSeQET*pC>j%<jiEnIXp zNHi28ssk6D3KF#kiFUKT1MO)9N0Lh+1H+3f(5kLZ)*m3zZq}P13M{D(l3b(2!0?hC ztWR_wND3vT$b<JGi_XQ65QCVx1SHYT3YLdfQwv=f7+%<bQrHGoQ0Ocy0EZ5LE9kgE zk8ak&0&rQ{dY}}v<~JF{12;<}K`i7XQ|^M4WTX#bCYeQC3=A*5Av67;ZJgkOkcqz) zG-Bb=&B_5X&_Sa0K&c^U|4=?GZGHf;kS*dvwrJCV|NmcuCgo0ol!0BgAH+h|@X{H{ zWsL_gUB&@&*+$UpO|R`qX9k8BI-qXc0+2vAYXQhOP?5=08t&1}nh55Ct8Gw#1cA6< zYdt_LWNQy2Tg!#T+KHSD3@@!9ws3)TJAf*7kg0$2V7~tZVj-I<gKX-S{g|Gy2ATQ< zG^^9ix&@>g>~{Xvix8oOAR(}Wr-N9?Mjv!S3a3acMnB+SV0hWd3`!<dd7$yFQWbaw zA=&}ncWHVP*$|Qa|Np-R^_5RMF)+Nirij$%ftLEcAS2B|Mv7{K4S+Oydres(8|ESH zi8K4aV<~^ZTNEKGAl1TLd5~j1=0Z!w7f1?vO;6Z^{qsT-WXEMDP#tv~q5xd+^qMY& zD1g|J0kLByk_w0&mS8)2VRp1Y6o5)Y@OX_Ip79zMkeRR?3ia`9b_Rx*uAq6RZc!bG zSzzZtEQ^%~*CoObi5l?S5V(8j0+N6j1-2G3OaxX0k%2aYdiP=`3l(tb3G1S-wSxo= zAILGF(KL^4(fQzwjL4yT0d!aa)Z|{%N~oS&Yzz!9TR;P#q7@J=5EqyRK@>oOQxfEc zZc#5J6%Zf3k_APXT@EzLOd$%e1SiB)WcO^{gXu3HPzf#i9=w?l=DU-&VBbL;G6AHi zTl6533W!4z!4BD)4Ry$xYz7AKyr@UF=oE-zunQoHkAlx@5UqwtAVt_3h(r=Z0!arG zNCFag1S9OuZcL9AgGx$B8_J{C^p6eLOD|$s85mx3O?b^d;Wf*I*P!uK(0HiF4Dk5< z_ZuFJ;Gx%U*w83g1T>q1H0J^xtMz~kmv&DDjg)o@K!-;`hfDNX!-rd&Uubu>-uU(Z ze>a!}4YrEro5Q3pcyxn@;UNc8Fka|vy#pR~1(6IDfsK1X3{df2@7fKP0_g`2MtfUA z2Alc!qncrPs8k9~DT4(>>5SJB2uFYoaRWJII}6hc$RPAf>1Y4{Lx%8K*Jpxiv416I z-K<M8K_wMvoPAa%(l~oBXmcURw-1bA-Z}7^2RzRHnso<g#t1Up4juL`mF{LW0~rcB zra>2^x7SwLj)CC?qbz6=0W>1cTxthV(|VwuznfJDY;UR7%Q#S00gt(R^okl~GBAK^ z^Ut;n3@;Wv0WARemjM|h2fH0Iiv=3%KpHBqF@d`gd8oXvB%v8R$j=Cwm|&;~KuiME zyC9+z99-9-!IcK;a;l?A&N73BGP3y$_36+U_OJ%eyzsYx)<z&XY%wTuwt;6zJi4cX zrd+_D(*Swy=;QzYJ(|~o1X(<q*Md?ZBh)xZf`LYx$p8QUCm?1J1VFnNA!!qqDxnIk zpFrdHc<Tx1Oy6rQP$q!zLBo8nr9ga-UfZoU3=A()r9oq$Ahn=weK+gObV#ZQ?Pl#u zhoy>^bfi>K4%z|;N)@LJ;USJ?_Qj)DG&3C<kue~fZaxBK5#qAqYbTUY0ObkMXi(f> zhNB$F?Ak{-!x0)SrR!i5sg~eq0?(mAW(JSH_^=h^G*BRTbo>5D@i68APs*0CzDV1K zHcPAkT3y~*`k=Y?4PzZ!bL|_ZI)!f6H{dAsw1w_Nd||)s|NkAJLziBHPMZd=J!w9` z0ovlwYibWEd0+hA2AaTxEg=;1=(SY`C5a_lVOl3MFfi;F0Ilv?09MNSG8I(uu|5J( zoyT89F@pLxKcMG5A7}jqWkK}hK=ix?Deh){2BJETzsME`>3M*n(g~t+GDt}`YY&J5 zjp2hv<-n8NtRF#J%$y!Vr_^yxnzJf_bhaKSmGbB{EdiCqy|($F$Pt2=&kT|Vub?sT z=w|(z0`g1f2ajG;e~{WvXh*7aE2tU6dJQDqdHlt;t^fbOHUjN?010&ae((UTpX@bN zLDu64(X$Aor1SWTrmd(`^3dgS-J)+nhdp((3W3yh`+}B(JhKK@8IW4=*OveP_k$ws z#e}Vh<sjfy0ibYzEKz{0HvuhsLS7#VT3BoWT|?6udcmX9_k;&%{|$c&sI=S<TAldf z_7-q_zwqdGy#X3M{Jj~JW)Coe*!#h9pha&lperLmX{9^#2DG(O4^rFh`l37Z3S?o? zi|)`1odG<}pi_M$yF)=sG+%TE2y};vcz~BSio6tJVgMb*!^q$I7_`0sw9l>ifPhDD zsQ}1Az0LpsBNTVLih!#}@Wi??vReWqj=Mepb)aANz)S&k&qE)8c6Nc5WAw@h><5L$ zi$5SIb~1Z(yGnpI1|khBfF0)n(&qaBwEGFNip!&$p<AdEB!{k^0kZlhNTM4_{V9)b zA&=%mETAC@CdfHRB9^WX_<J(`|Ns9Iw4J%R_6k#}GPbbj4h3)7>kN>1`G)}<D$M+? zpJ4t$3KfY>I73Ai>^*1<fkFkm@(C?eo?wK^vrV8#hlUDV8gwic$mcI0q4ESrsGz7v z3KfKUv`_)9vJ$a$eF6!U?ob6tVo>M~1#eyK3;<ClJh~xvcLr#9fVR<rSD}N1PINnP zKo(}5=nUWhExbqF)#}mw2EM!(w5*Py6uPv(6kNh}Gl17<f$~Z>#I=xi;iQe=$wf9$ z)_Lu9+!cHR`)dOb*Q47(1G}bJWKE*Yu3tdw#U6A!a9Fy2sW}49ut)_FXyp#LXn{J2 z9bz~GVyzO~?aj3>7(hp=ffl%dk0ygI_j?0N4-jv>25<ia<wDT9Gf?gU`3W3i&@B3+ z8{8KKZTS2FR(JfxiuM2hzm^8s4e7Xpb~=F82s41PT=#lV$p%@nR}W#o00;PgNGyRC z4!-~y)Ow&K3?u}~As{RGTMEHD|G+MW7|h=i_aD-!cZE0u>?05pG;|KyNcyAOL8SQr z<7-gL2Q65J1T#2{PN9b$ELw2|O*43T57>H8WW59(#shUAh!10SqlXTt5fudr4Un%o zkH6?#_y7NKSJ1)b46i{c5#%lj&@w@!!U7yr3G4p<Z+3-j{ONWOv2^`V1KK$YRu2kF zhjst|zfJ*}3=R(F(g+Y6YKt=1mM@?}3)z-0u)GP%d|+FCtp(WvPFSGO0wpXITW+mI zMA$h98)t-tLjwWq9!CC_yP#evB-Mb0nE6{y{iAA(LE9nVd<c&H2O$5q9w>#T=iQL> z3>NKl{c+qC5+Zh}Srse|i8$z*{2!nIzP|?Sbx?i-uM2X0&>6r1%7opnU#wl<)PhnN zSZnKn(sfWV$8O&*-JxG#jiDtbu*Q(l+W-GwD}!PPl4C%cK>>~<d0s<Ho}IOCI!j-8 zbcQ|v`<1`tAd=5OOS?CM%k(!4{C$u`-k^>9;GziT=Q@Pl(99{&dY}|k;{E6j1y!3M zpS|{hssiO8Jjztz%9u;RyDq_-BtYjPg0_9U=nPN*nFdk>FWf-6u7n>FO#D6hpq$G% z0Z}x88V?a3owYkUOSgD*hOY2vu3f>v-!cU}{^7a;60Q6#E#L}$3j=>2=)4P$?$8w; z-L5-4AZ2VMXvJTrD`?T-3kLp{Xoy}=a&7*>SOW4Ygw4#~3SDCj;WP5Lf{vL3rQU7_ z5zsl2%Ai3Y*DZ+lfHEj8fR+M+mIH$qD!=Fs-O?EVYH5HS*Xeqr+jR?g-~EZ>uAuuC z7+!*I2>>;8z=@x!v<hSaxUvK742O*B!&?rAR>SH@NPUP<0?De~p*OmN1i(!N><W4V zSRi&ubTaMu^Z);UZPznk2j76W@&+^}ZZzkfU~G0h!w7Dgb=ZQ6wdUFz4E(Kuphko) zh!1LHfkp$F`CCC}@_^h84H(d|a^1)Q!v%IXyh#97iWV>rU;%UCxa$>Ai3AH6P|gA+ zG^BvJ04t#20kd)yTEM`Szyjt0TEL(wfCS8gZU;obTmc8n14zI;fCkKi=G+U6&8}A% zn`<vHRB%J`S!?M3|No)E3DNbUGe8A-V8x^PNCfg$wZ=D~%UnD<_e%Wx{~v8>t4A|f zlmXoD0?9*?HFz5Mp#cNKi#03$|9`m+G{e_x%Vx;H@M87~(14Gv2#DPeVuSYO^s=rs zWMByJ>E-n|WMJ^=Wd%_ly}Z7lHAcOnK48k!8%)^-8p4X8^<e!+1U!0ekAN(*2l2aG zVeaT`)%f@S|4TWr?W`dn-JPwVLuNgCS;0njwpxG+^y95*|Nj5iWnf@PJKmc2542jz z<2ZPEE=UZtAm=|w476st6?A4VD8@aGw|XE%K_~k{MI#WRp!0vBqM+t1lnFW|7|N`G zt91n*I_q)VwF4sM3L0%-@Hp-|1Ik|jr9r0}fW$XI`QTF3<G3sM_<xV%uAqg%Ao&YW z`5RCg+}igz?)n1C2Uph~-QW-c=VoU9mNP7%K>}v}{z?uIgNeW82Q!4xpUwdqG$`Q% z9S_q2+DP&;6f`H;%gSZ|>S{qk6=s?MsBmHj?Ijg@t>Dqi`cxmR1{Bt><vn^??;`Q} zJ$hNMBKQ+vP6`n5=mkeh=S7cR(H;5>4Ew-mTf#b&N0$Bn|MEU~WS4a=L_aiUiy%CZ zZ7{<eL_qHDdj%>!kGF!3F@}Uf>kM#YgCiDn*fCUe1ws^bBr;SKG%^Ndf`)9N%o7N; zpyQRHqBjttphK9UqAw7lpre|hqCXI#4Dj^O%7I{lw$Vb>N<c-Aw}Q@w1_`DeZ&d*c z!u$#jIFJ{?0oSU>z_1Uz!w?p5-Ah3WmOw`<gS5X41DB5AWB@M6r-Ec)MHaX`0-cz_ zSYi$}ACDrYQcjOvR&hNBhSvffy{w=N^_tzImz7Ho9Q~lvpYa>w(R_fVo1ygp*qj@> z3=ClHmqE+MI$I+^IkmeNLQMr5*4qj?aoV%<1nAU_UeR^B3=I3g2e!fdI)4eMtN}+j zsQHty<p2L&pbLmV$HMgXf;4;dLS?}#f57TtsaT}>1*2svC^%|$;mVG`kVY{CqPy4B z3hc<^FJhPc|KAMO1RC%I6+fVcE?9uSX9~y*Fbj{rxVRYEIWUtx>3~A(_zPi>+aYf8 z=nW9?=<NkXDs;39?&o7V3=I1~dENu&=hch<|9^Q5JhcXnRq!-7m<2HgT&_97!fYyr z{%nx`Hjw^a);6$P@Mmrgh#F9K17~gqBt9r}{{XEIgA}wlGWTt5^vwNy5vZLCc62v* zUKEtD{%AuJ#7~fky?Y_sCk}e_ihcnZ015<fVfbR@qW}M29s$ky^|C$#sf8B$kihJA zP(Ul5+#qV;KCnaLgM46y;3Iqhn*IaT8sJ<e3332R@uZ6E14!xfeB_lr>{{rh5AQ-y z=>yvMg}w9v$q+1kuquL-J~Kg!q(G%lBZvVieR?!O`Kc9j);vn-gJB3t=@SLh9tzR! z0m{1Fy%1_D*f6xx$3PRk^if=ZQu;iakDT4Hls;hfutW+eeL#*xDShUm7y>IZ_Gp0o zc>Klv`JmDVqzR?;0SRD~KEYT`DuJ3bbv`@?LW&KnrH_XOdg-G(|NsBj-q3)?U-U>} zX#Ozo|Nqx~9=)t9L2JrTbFBvt)KHIZ1|LYvz@vLFD9?IyPX*Wf;CAFzP^l2++j-El z^9SV2@Ym|F)?(v4(8%l&0k}b+K`L+|<I%hqR8%wYw_X7smup+5#=!96<6KY}xPm4Q zAiKFrSYPPQLzy@L4N!pw#_$ay!-uFkOCep|l48hE{z8y@V8c+I$6p)-*$3WWb^Jvu zSPs+)`2iU@29HI7hxEX6;;taIpyS)YgML3eAj8KGz{BX^E)}RJ0vYrJ_3_a+nxl^Q zm1Mz24_XhD#KG7Qm;C@8H3AkwG8Qzn1u_=W9R_zpp&iz>b0A>`>IQTke~|~{b{>C` zGzW9TJH#Cr15}{(N!g$%0O@}T+R*0FYuf}8hy@wgYg-3m2ZGtAM?vf3dTkG@!Qy!) zSll)Wq(&FSh78z%#<X6mL!8V2NgMreJ*g0NprI(xA%2ik0!lA|&IJS+^K3RK+Cle= zfL07J98S~YmxpXh1nrxG+)rXU(Hpd$2yBpPt2YC~eo&3@B6`mM|Aq&^7nXqZgVZ~Q z`}Ep=c4uI44D;-~<{0YP`PDJRvGY%;N3ZS^cLs)FAI-lYGhh6l_5Z)e!N1HU@`kse z_fhzCe)8#j=hFGy@xRD@kLJUS9+r1YUxAE|j&+Q2jCG82j6a-)>ORm-DIj}6W`b0L z_@Lr<6px0$Xb6mkz-S1JhQMeDjE2By2#kinU<(082G9aFLax$b&}Lv_U}WHD5Ma<? zP-Ea_P-oy{&}86Y;AT)^P+(AH&>{dqwrDbNF(@%8GAJXdm4>s$!7Ldti7*Z1GC8oA zEQ1yUJD8=#AP=Rr7+Aq9W-uwqpv52tW@#~SFi0>6f!V?gYz$fqf?&2311Fe<n9sr> z%Af_ljs;{34$KGzOw3RQD#ZllvaqtTb8vDoa>D@+FCV`EBcmWr0MRKVEFvl<E+Hu; zC@3u>D<?0gps1v*qAI8+2$3IPl7W#C=0!*VFk=Nc0uLr!%}~Qo!BE3c%us^_a~U!i zY8WIKYCzW`Fz_(MGYBvUFa$D$GDI`PGXydCGx#xtGl(%nF^Dr{GNdrX!SymQ1T(lZ z_%S##FfceX_%XOL*fTIN_%hfsFfceUcr&;$*f3Zz*fZEM1cJs(8C)2w85kJs7#JAr z8BD-z1qN#dBhUh11|tS723H0ZusYE75IPJ7;7cb!Zr5V~%}_BgfX<rHVbB8!F(@!d zFvu~;fUnAdTscz1V8CDlmcvFAF)%U|5roAI_+b%436dH3)gsH5Fq9B58KjyRH6V4^ zF$36T*!&I>V_{%rU}Ios;9%fn;9}rr;9=lp-~*Q=f($|o!VDq|q6}gTA`IdT5)6_I zQVb#t(hM>TA`G$&at!he3Jf9)iVPwQN({;jA`BV~nhZJ&`V58)x(r4P1`O5=b_~G` zjttriQ4EC)1q}8K(G2+vc?`J>HVh67ISdXA*$i0>nG6{W=?rNMsSGI$$qY#hi42Ym z2@LTJaSX8xF$|Fm5e(rBVGN-RAq<WTK@5Qm0pOJ9%izP{&EUo0$>71@&fv!2%HYD_ z%;3bJ#^A`H!eGl_#bC)`!C=l{#$d`|!eGpx$DqZa&Y;Gi%Amqf#J~&=6T<OMoC;7l z;=+s!)PsTyf()YIm=I-<U=RnF)s75~48;sS3<V6i49W~X3_0L1Rb(h($Ydx1hiWo7 zG@}`!7$O<M!QmJT4o6V_^@WC@8#weFz<JV^!G^&a9DbnC1BIOtgCT=H11PuYKtoW8 zL4iS@L5@L|L54w^L5e|=L5x9|fuDhoft`Vs%As4tP*9YgUX+-tz@S>JprD|jte{$~ zz{OCOSfrr9kd&I9nWw;znwO%Wz)+N$2%^f1GD}hw6c`i|ONug+N;8ua^Fh3VlK8UB zqV&?7L=Z0}KeJe&AV04pzgU4m0Z9TZ22zojRFoQDkXV$OSCU$sS_~3OOHIy5L>6Pn zNlZ%3QD7*kEJ#&gNGvK!tW*HGH#s$>v?x`9A+0noxg;|`Pk|vlza(FQAu~;ZL7^lg zHBW&-AvLEsRe_;ABQqyefk7c9Ux7g(zX-(2ECabcFGYbtAuqo~fk7cNy)-cgWPeI# zS}NE*AWm*-UVc$LTrM{;6NL+s1uFxILm6OCfb@YGiNz(UMVZCP;Lyn{%}p%=xgj$p zHLpZL0i2-I5=#<u6w-21D-?>86Z7&?ixe{RN>YpR5_1$%i;D7#banIc6%rv{Ov^9L zOJQJO?*0E?v-ki1eX}9hw)g-4?%x0ZZ}$HGuip3ne`(+U|A+hj{}=54|3AL}|Npi9 z|NsB)|Nq}}!vFu%C;b2abi)7t#uNYlZ=Cr5|M`jk|I1GL|37=u|NlED{r}HC`TzgW z$^ZW^p8Ws+$I1Wy+fVubzjw<2|F@_7|F1dq|Nru-|NkGI`v1T1wEzDTr~UuGe%k;4 zf2aNb?>+th|C!VO|9?LH|9{gN|Nl47`2YXnjQ{`TXa4^mI`jX3@0pM#4n+7Dl+yCk z6p~8Q(o%~Qax;sIQ&Siq`oJNgpo<h#1*Ii0mHB0<MQJ(t<qVm5AkoY`)L>0Z%*;tm z0S7t*14Djki9&vwLP}*`Vs2)#LT+kqeo>`DW}ZT2Wqf*SNqk;vMM*rw2^yN9l^e)0 zR8U%+p_`PLoUH)26Q6m>MX8A;smP|`wLdklxU>kSJifRjF*zIT1hCWb*#k;IsJ7s> zCmy1{vLv-wLz5vXF$ETokWfI8RV@Y$HiKP&Mlg+Rz{tc5ZTfP98@z(>_AIzH3u(-% zscUG0Zb3l{IuN&yTd0qLU$u`*T-Tt_%G$iIudmO>xX;eC&%V#G&&{E)uaCvGPqWX% zv(MkPkFhT#v@aqSq$sY>w=bZtuP>%ADW0*fug~^fUm|0lrU0WrUrJwUU$Un`Utd~Z zb`DQp0-_1sC)g+ay{|8_uP-?!uP?W-s1KyIuTS7R7`%Je*VmWW$JkfU*XNmRQ2bqy zv9IsDfG5blzP|5$eI<;2-$AZMU?#}n8lZa<IYb#4c-Wa)I2k1Q8CWH_`9OE&iSvpu zs7M*Ifi8ekv0_MIU@&E1FgCHU1hpK}goOk&<ro|oqGQt;!lM`%^b8Ui5>pt|l~frR zIIL|LY@I>vS%ht%_K2Up5ksmVgC>J6gARi<gPUVqd`zN$Ku}0vaA;U$ga?BULlT3U zGUx_Zdj^IKPv1laEp2%jCl~i*4F(1USA=OGR$pJ=Dv0;`();>WLYaMieSv*_eawA* z{e2nweH+2TvS6~W??YeT!QH1WKzV(AAY*Xi|NlWfOg;ut26+a4XnRiz+`<cCa9~gd z_tO*@bQtC^NHVA}L^7;n&}MLCsA33X2xq8Zh+wE;sAVu>FlI1eFl8`faAAmMh+&9j zh+~LnXkwVhu%2N)gE>P!Lji*YLm`6)gC~O*gEvDGgC&C%gEhlq1{;Q823v+?oUUVF zNMtBssADK&sAq6xNMM-8P{feKpuxb*pvl0>;0A87wlI`3urcH^urN$yn8YxdVG4s9 zLl#3egDwL%LpwtULnlKQLpMVYgC4_5hE)vi49gf&7*ZM17}6Os7&5^s*%{OrdKvl{ zbQu;f7%&(z@G#6}=x3O~pvS<=AiyyH|5Ao;{{<PAGl(<DF@XB7Y7DXrAOEjqP-0lb zpbyre%CLsPj=`S6iNS}#mti%A4So#%;C5>eLnuQO!$yX3hDwG*|MM6c8LAnY8KyGK zU}#{N$<W3yi(v`FY=#vK8yKcDI5QM8fR15QWLO9fA9Xkj#&Bf_V2ET0Vu)g3VQ^)r zVDM#-249%V!NAMF3vSu7G6XWPFsLywLwRfrTns7<stmjg>?rOO1<R{5%!0P-6~S$K zh)OPSIPo&Hfm`^z3=Ir947m)V4Ezji3=#}88F&~t8D=vGGYB#8Ft9Lif$d(xz{@a& zK^>}NF<6X)frWvEVLpZp+zjjt5)2#+;tV_t><sG}*csRv_!xK@SipXeWMF0BW8h#A zV_;+80L!s6R5Iu=_%kFi{Qob-FbTA7479`PKj?x<Sja$W9bE=yUKU<!RyKBCemz4r zP9tLzeI8*O2U9b1ULgZpGhQo4UM^oY4i*<XUQu-oO<zC%fWVmewDgRu99~{aR}PmT z7GCwlq~sJ97H)P93Gr+T9(NBfC-&fw(6I2tq|{tFc}OuTt;QQ0myqNakQl)3$?nGM z?PICO#}dKH8YY$m2Fb}ODXeU)Y?9s{tQ>6Y_DPY^0dYy09G2dC?5u1_0hZ2D>`72} z!zgWC9eo2mLqj7IV`EcOa|<&|D=TYj8yg!tds{~*X9rg|7Z-PTPY*8-Z*L!8KR-Wz z{{S!u3JeYo4G9m6h=_`ej*N+ojf+o6NCbnVq@?8J<kXaul$5lL%=E16?A#ofedsh3 z=x%5>(BKj?1L#_DHb!PfW=0STd<8W(0|P4qBPeaLFf%eTGcz$jh9MXkK@0|F1}0|E z&52APSr%qS*x&>sGc!m5h-6@6Vq#!mbxF-hEy>JFXYlk32w(_s402=$QZ+D2VeoTw zab$4ub@f$HO<{0^(x5hIdTJ3vQht6;YGNJ(gKJQbzm-BrW<kC}-r>dh3Pq{O`FR<s z$(bqndJ4h$xu7Pzf;v>2x<Y=bf;v>Mx<WBXLqTd$Ze~elN`A2(gR5Ua5XiQm5HPI+ zVnf3PVoz9NQRd-=WvMv|DX9u6sl_Fkc~E;(Qj>EMixN{n7l44YK-7n%=9MItWR@j@ z)I<9uMGC383I#>^$*C!sAm`;XI0pH8DyXJ_t#b_Wje@Ze<^&)qhxij_Up^#g3_)r^ z7-DbU;a%W1eM+iAL1NM2MY*XZMft@FnR&_iMMbG4`FaYj#RaKFi7EM3V9Sb9lT(v2 zAv`?>XAh9~i^1;karF#g@bnD`VsQ5LbZ2n(bpa8+t_;q;u3(lUgR`%rJ2W0jkp1f# z5fJ1W9PH>1_Hbfxabh~i=lMknL9TADL9Twzo{n4$!T!FE48fsJAq>8uJ|PS)o?)H{ ze;~pe9Jw%0Co(t(x%z=!uA0K&92DjQV?*7667B^st5Z@Hic-PdsN_s=j3CDXC~1KD zY>D|G1L5)E9ON9Lpjr$y7ul%f{Ji3l#JrMJg#r{W>2Wa>SLT%@RzUhm46dNwl9fVA zW^r<2Q3@!fLq!Vm3kpD7Xd6GZA|tW1xFj`&!5NgaOAC<oDCFelXD4Q)CL+ng^fNr! z|NlP-+pqrrKXmo~|Jkem|NpuA|9{;z5OI(kF1&Ni|NkeT>X_F4|KGOu|NlR0vFj^Z z_y2#_dWf9<hX4NqH~#;huo1#%-Sq#z$R-FI*{+IB|Nl?i^#A{sP5=L&MUn^YBt%w6 z3_E-?s`-_h|Njr$^8f#-E&u-qZbir)-1h&!{r3O=W4HhRe|tMZ9Aw8&C_jJ4|NpH! z{{Nr7<NyDSJO2MazT^M@yF32>|GeY>f6kr%|I6?E|37diL~rxX|Nmz~+3R=y|NngF z|Nkj_AaWoxL3sO~|No`;{{O#n@Bja1`w((j`~LrT-2eZ7DJb<TB<JTAWacEM<QFN} zBo-CgB`T<<a4{4yV3$o|C};3>4RB-tjeRJ9x;m=GR*)eOP!dweOH|0o%*y~7qM!?w zXJBwF%Ph{fQb5T7MX9-<{-8o`VrH>IW=U#Zv4VzbiY92_p|CVnAyJ_qGbbZap&-Aw zxHJ<irKb=C(gP|L6%q?l^Ad{{R8t^Y^&lOt5YXrcI1>dQUYnbgpOas#kXl@Fc%edB zVpV1$C^vz#Y-V0&a%N&qW>sQJq8<Ym7Hw9b?9QM|b->_~TAY)g%mAtz82mEJQgaxb z6H8Ll89YJ59AHZs7#M04RCNsviWNY#1quZdh0#VJRa^`%sU?Xy8L7n#{-q^F`3$-Y zVZjWZc_pctMfnU)&|1ka*wvFkHH9G{h(R@_8Y~P_!w}{Z#1Q1_#t^MqtfN{S%b>$h z%b;4UqY#i-l$Z;ST2yWdLx3AYSYl3o5knBD;5xi2FF7-jAplySfzkqlTc{t%FCh2B zTnh6?3fNaLQ5X&N2S^hG1495f>WPRsutF<Z#FJ-9YAzxkxEL51rJ1ckTW>(K1}dfh z|En-DFo=}@|L?=Zz@Sq8|342C0|Rfx|NkjW3=Ex}|NnO|F)&>3|Nnmt69WU=#Q*=# zfapp8|G!~kV7M~*|9>841_p(x|NrYSGca79`u~3bGXuk^Y5)HhFf%YjPXGUZ0y6`{ zhw1<SZ(wF%XqfT;{{?0S2G^PY|9@a+V0bq3|9=4%28MUD{{J^%VPLp8`~Uv{76t~6 zx&QwcfarPu|4(3HU@)8a|NjOS1_qw_|NmcLVPJ5b|Ns9R76yjU`Tzg(ure^D&Hw*j zhn0b$eE$FcKCBE3?eqWt&tYX?m@)tV{~lHbhV}FR|6jw(z;JT@|Nm!L85kae^s_QB zd<N-fV_@J~@c+LK8v{fBg8%<P2jIvo{Qp0Pje)^x;s5_VYzz#^3;+LL!^XhSwDAA` zGi(eDs}}zM|Avi$Az}aj|2*sr4EYEC|JPw>U=Tg{|Gy7A14GEc|NnE?85k-L{{P>@ z&cG0V<p2K-><kP)j{N_Bft`Ut`sn}vAJ`cf%#Qv4FTlaT@Z$LY{{|ck3|CM5{~y4? zz_9J)|NjLX3=DN={{NrC!N4%{`v3o1I2aiAUH||83I_v&|Be6uL6<9Czw!US2qy!> zl$-zmn{YBPEV=przYiw^!<C!=|EF*=Fu2_M|9=f91AMlRu_}mxu|j}RnuncZ0wY8m zbW@Q)>Hq)wpfu~k4mv{ue3?1u29X~{|Nn#13Im^j8=r(1KX*At1B1PkwU)7p5=glS z0|P@00|Uc>lK=lf8~Z_GAPgGiEMZ_^SXlc1Kj=hb23J0THYR6YHrHlm<~%_jb`Hoz z^Pqi5KimHQ_hVyVKvCns237-d+a3l62Ib!W|MfxVk-*GhR$~My0Lg=Hv@`1a|DOR_ zp6NSCngJva+Ql!_|Ns9vWO?SJaQ!lj3=9V*{QvKRBJT{A2l>N>k%8gO#Q*;{gFFVa z-?f>UX(`wWupJ4E3=Gwi{{IILlfcw4y#p%%xuJoPfgxz}|Ns5SW-ztE<rgqAFdUrx z|NnFp`98S(0Y(M}iz)yAgZFR2&2NXxKVW2FSTW`QfAFO}aQQuOdC+vX@6`YQ!F^u1 z{0z9f0uuwnxvBsEb0CKS(|@?U0}}(owrT(WgHDHl#}m^nxO@T=14HHX|NqUA^)u^% z!w~F$CI*HHGjPYz0wxBAf|>vSgXbDy?n?z54-Vf0ObiTlGyng;h7vw!!3rc87#JQf zF)*0S`v2b&S)PFbtoIKS14H1f|Np@W8)mjUSSwgwhM9rEan}F;pbKK)e)B-c+b}aQ z7~zqRVP;@Z#$$dBGXsM#9{qDbUAbBR|BEBL-49{^9%crH-!nlya-=*Gh>*X-%)sy! zkNh8I28Q>bau(TqWdE};Fx;Ps+kP7s28L@h|NjRc0|N^`rWmjTKye$x!oVOs>;Hey z6-e;#V_E{2uVG<eSTXDWf6yK(xO^yB8XW#}SQr?V&HDczG~N!EPe91;VPRlcKkGka z6ar>{7()II3j@QtS^xiQAp0*KA^(SkfnnRM|NpniB84CGT3L_^ko#p=85n$a{Qu97 zl6KkPY1f98fx&v`|NqO7&1aem(hhci3@Zb}!JYsAgXZGl?gy!broS3i28IVa|NmD7 ziNV|t2|m!Z+6;4885o}K{Qv(MXt4-P9#l@=V1nCmfR%w^`JVs(XCj-yGyyLEfR%wk zVekL{%E<CjU}>-$L4#Myd;kBJM)9K%+>Z)u3=DGn{{P>EBEJ$Y@4&{uuwnoI|8J4a zXL<s*02GD^Yzz#w2mb$mh$4RjEDtI}8`u~a><<3_e*)c)yAXa{!p6Yx=<xsl(%i`L zB*YCe1Z2k%HU@^f=dgz(Nd5^(|GEGFC!)Ba1Ed`s1}y9h48iCBgKi~5)HO`?aCy*y ze!I{A|GyJO{|2x;sGf6SXJCl9@c%!kssbqiVUTzXI|D<&h5!F`Kms0o0?B+F3@!`| z3?=Lg3>g=o`NoY;pr6T;Poj_6l~19U#g$K^ht-A8ppDIg&!U;#ozEeU&%%+<z>!bG ziBG|aPr`{$z=@B80aRw~VP{~NaN+-dR*?Clcr*k?Ltr!nMnhmU1V%$(Gz4HFAPiv~ z5Q5O4W*mqGqj^9a5C%0U7#J9ML2S^;NTm>lB!ptPum{4BhEU+SC=gQ$L@+Qg+<?l1 z+FKwYSfBsvzyJAQKIoiP2GHach{wS20@_%DQVb4IdB`Xy14Av;f!q+~pgUN=EKx9t zAfVb9E`V=tVgPk#!IBq1?MVj6I0i_79YioNFo63~AU4z@nD`H<gP{}yxWCK50Gf;g zsfODR?yE3>788JlK{x(^{l^Fu`u88=-yKkc{zLgt?=XCT^3$O5KcRe>KOm-3k9+`) z7jzTNpz-YnrNf|f8k8=B(rr+B8kAlJrME%pV^I1Ulzs-Kzd>m>aOatUK@3W(L1{B6 z?FOa8pmZ9PE`!o-P<k4aUIwMNLFr>q`Wlpe2Bp72X*OuONB2J=J_q=K8^~f7P~5pY zJ6kDegeH~dm6R%2>Y3;n=o*%Sd4_dH26_f2dPbTMaY80DFfcPPGOU26Ph{213``71 zu!=J?yud2X!oYzg;ecj`VfhKwd^UK#LltLdfTc%NaSjGpIz|=eWPs%tRB<i_257!Q z73XFEcUX`G89?E{!=M07C&*IFpmiWv;*FVsk3j*eI6s32w7fz!M}UC=e9#fHD9Bzx zhCiUA#ZZMAm>Gl^KFmQA1iMohUj8A=GBb$4%RN+aQ3h=Jj+sFWUQVH^7iVCArZ-e^ z2?hnM;;>Q~p&FD%Sr|ToZ+%6GGBAM3cP0ith5)p1<6{7om3#~hXyS@caaer;Gs~O- zlouozJfQ9Y*$0wy1B+vZLoU=D259{QQVYVBVD*^c2^#Ok=6=w)BqM_aLk84dXtBw# z6>N?KLjjujNvL=Qn)pqqcmq@%=Kg0;@fN5!3&@cS3=AKk;vG<Nn7yDeV~~3$K*eF| zSr{SVGX+f?ble+A{R}j5&?Tgd3<3-a(DVs%2gqt;usH$@3XLEh*b!icB}}{t%w>SB zOmc*ZCqTttL8KWxVdBjY0ho9IOuPjm?gkBraH#kJ&=M#H1_qdT99Ud}VGf%6%b?;5 zpyIIb>1BkZtFvYh^TFf33=9m5q2kA&D<;6>-3$y2pz{qt>GLvlJtTN6pMik^G$s!c zX95qNAj083)SOoE<>m|w;Q0Xt28K^iaSq6|CIfi97o?2|;vOc*#uc!+AeV7M#V>#d zmKhkpWBd#Z4E#{>8e@<u1_toBIRgWO98{bQv~h-kfdM?`$-uy%#{^n#gPHF@$0LH` z*P$C?juteWy}=741sEDY2O%>sFl>TIGXz1!9eN=GFmcckj39FupvwxKA<_)VQ1uB= z@iwS<E>xTW8o&ZjdrP6>3gC$X1_qdTEmYhAJUE7M59pXku)UKY24_MjhEAyZ1~l<L zX!z7YH~xUfTp1V`X5t8+<v7GabBWl>0gyMaiEjbBM~Gn$=w4o^8(|bS^@qUqs4zyk z4Z5_1kpZ*Zz5`VcYyZN`eh(JMtVcl0uNbkE^Oo$Obck6GN-#4p2r=+6oCh85&A`9_ zo+n~pU;xdTg2Wx5^%`u94>ach5}yjaj|x0?4BG1jHAe<&4tP$Afq@|$EDm!ug3e@S zU=U=GU^oEHzp!$w5GsBIO}qhzIrG5cd<;p@d<SiIF{}WKBkY5*_JZbwVH_m-Ce&V7 zeFrN~-h;-kL9KSEdth4Lg3ae+5Cly!g7>jOWPXChA#7w)i3JkQyP)9)P3{c5ERb+m z0W}|HFKF%=6wXhe>jS~#+o1jfRJ{V|_*e!|-iO#C4>jK#dWRYKTtx;31}(69aRw2n z`LJ--V+FYfq8FLe1)GB`0%1Gi5Dx{5^D$&cL)3xiA{ZDL62RgRF=VnB>>ddQ1E_mo z{so=D2J-J^sQbZV-3$y2lcDNQK-I(CKbHm6q!VY5fQrNHSOT_}k6{65k{6VYp%QDL z;>)1r19;Abfq`KQ)cgRbIWYH_f#Q(~vt73nY!1{=B<d^<@t0t6K8E|y^a*Qjeudh* z0nJ{}oDe7+%%JWB&pk0PFgUVdk1sZGJn}Jw8bKTbo~H$+6R<c$44Kr$A@0BmN{8YM z0#NtB!r2onF2Rt1CjOZnq+WvI0#qCpZs9o0&&DC%02b$CXoiLlEdO>x#U-HO0PFWo zhKk2S#bGOeXF<iMK+S>mvzLR#kwXB&-USxtV_>m>@WFHR3=9k>q5i#r=C5;L^-#4) z)LT|aIz(?j|ALzH0BQ~_JUMX0qYN7)JR_j$Vd1F+R?o-40&P%0n+pt}9Sop!vKs1N z*f@w4RDE<j#F5~6InXX#usB2vnFL)|2QtS9YCd=#n}LBLnGLcI0$DAHT?96VkHHaY zFDyORgWS&~&H(GTg4BXAXpIV56CWhZun1~SF`7AR!Qx;gD8vD<I3GhPw7dn+Nir}n zoC4Vk>fAxwv9NHy3040Hv{(c*UIMDX85kJeg4IhfJb{KYO#K(IdK4?c91dtYS3xUp z1=vCPk&odbbTb2Zei778gNna_=0|9Ahe01IegRr8!P;;3Q1f4)xd*gX2V1x$fXx9r z4TS*B>4ECg4^VSp>8Bd3o{!;`DMUGVodl?T%LGcd5)2Mde?ep!82X^@*#R{N7CxWB z=^xSm1+U3rU|^UEHGdOyCmVPkm4Sg_30NFvDuUk04zU-#+&&6c&&LoG1yKv0^9IE) zR6GD0@38j94X8LLw0{R)%frCHa1SbO1YM8~o;PM-V0Z%+uS$oQ51z|qU|{$L^{)Xm z9AN4B4^;dIS~zfWK;qpInyx_oLy(D*U~v!&73+Y-`53-H^CNg3oPmMC5GpR708tN~ z{|4=e=YW(0f6(l8hl(>m-3f~qKd?CvGmyz7us9z>AT)o$%GGSJII>Czy8(yzBpl+E z(Do7wntPUk+{uJlFK>dbtAf~uAkTo!=VO=v%@?ro*vnAy_fYr4%JchB@uN_2Sh@ES zWG`q>3DiBX^#7KFfdRZA3}Gdh#mNbZM=%qGkmiJhzW~%6SU9VJ)$=iAL;GLgH6;uT z44}1bpnNBSrXF-RBS_o<8jmpdFeDe16ql5yrRgOzq@)(5re}h-<i?le#wX|G=cN`i z#K))P$EWAyCne^@r<CLu6~`x*Rxp4T5a*<pq^9Uu7?>GiR}`O?nU@(4-jN)inpaX( z$&gl*n421(Qkt7v$q*lp#EZ|&%Pc`rnv+_gS6Qi-%urbg-LeVU=^0;=Uw|Q&n^=J^ z2I6Pr=cL3ZXCxMZIC)@JF^HKAGBF-(49H%PP;p6OQ3;5Vl9>XMO-n6`FD}n4NzRDR z&x=pZPXoy%CMTyBfK{b}-IbeKk_Zw{N-RzV(J855WqB1~HOU#-Ai<o(;*xlX&dj`Y zkS9vOiqXWA3-Up3!?L#(Y)F10!dWGW5EDS#a0`l3%QEvzixK9Q6jjFih5E#o6eZ?? zOhn(U3o;J8SvWowv>||@va%Gk9T>7H7$gY_5@-;>xsdoT21h$&-MC&!ViGuZ!1m-o zoK%pQ4DxzPY8r%50NQfSP+6Ihng(T+Bqrs6yq}zrnhXk_;*xxjBZ~|fDl3bOz)Fit zib|79kgRgkOJ*o3)=OppZ}rtnW{8h>3v%>zjd%5PiH~Q9M@>8_4Dl|JevZDL&Zshw z7><v3_X~}8^?;h-;S$6U@9yL8<meOc@8%Zl8WJDk=;Y%X5Ar!Q{!8*<p%EXSlbMtp zpIlrDPTCBJHRYh-2m7Ze6=F|XQEIA#gS(HXlXJY0o{^p@LuF-NYEe-!19Z1ed<tY$ zcswW?^77+z@{<!m+w{>jfg(A-w1lC!q$n@Bpb}L&-ZR8E9+7K9e4RmgHUu2T#U&~E zr6s89Gjj`yGILWwi}pbVVwjg!z)+N0l3A3<P?VaJn4Fjoa&0PTt3XB~LtYL;8aT<I znOU4zQiA5L^wgq6=lqn+^n8Xi(1{4BI*LnDGV@S{a`THziV~rrm{*z$I^ZBNmmxki zB@vv(!1gj!Ru&`{fwNj>9?1PUsc6Q;LrjQI&d81jZD&VVV!}{a2@1-T)TGjMhRVv4 zRB$FON=?iGt<A5jj7Qmo&QP3JP?VWhl7=t=6o+XAr6t9vLY0*{nR%&s`Je;?I;9{U zVnc3fZgDDF=!2s$5ls-{EU0r}jsc|}hRVv~)RK6p=^&ev(QSrqPzRp_06y}80h&U= zX)r!F5j~jW<3ZsG3Z$YEP}G99jm77Iw<Hvo6eZ^tpxXdSd6ktAdx}enK)Zw>&dSVV zNGdH(PGm^K7EUlNNua&+4Ds>lx%qhzTjN1F3ltGhf5peA6z9ihB<7{$q%tJuq$U=n z78Rkp0<1nYFP$MbH5Vn#8k#U<<`t(FrN);OGsJuP$Agnrd}(oN3MjFZ7H2@SF356l zp$V=H(lT>W^YT$`Db56M9$`o<DFyEmi7&}407q&HXkTC|)Erm<gNgu9ImwV%QWT$= zmy!wE%*K!ljz3g$)6#NEi!)Hga^h2SQgcBr%rAf%40m7-$e)QRnaP>?dEj$C5_3U^ zihxonsv+_5NyXq|zo>)(6w}D1Q3<F_%}K3*=H~c<qWHAZJO*ekD=B6u$<I#BV*tl| zd`@abW-{2TV5dSI#E_O>fS$cd@(c1|MwS)F7o;(OvT9jk5!kx2#2iqjOvawVK{*y% zQc11IM9UFr;KNhUJsaZd3@h(Jg&wS-f>PvFR+bkff~s{;#)0HRNNNQo<D&c$hWPm8 zibPP^4T@s4@;N=V1TBM=CFaEEm&O-?YxSJe3Q&<<Qj}lGP?TR1pP9l?T#|y3SQ+$+ zD|1T{lNj`hONt<L28;#T{8?1MpqH0llB$=USE`p(nwgWLo0$R?a&+?4ElEsg0Lx`0 z7H2T%rBvn>SLQ<Kk|KyqS!z*nW_}(DC%%Y54^(7>G(cGeIVB8w;54dNkW-?Uo?pVC z2QFsxK+Q4+y`p?jS-_x|ngMNyWuz1#co40S78wIr2aF9p5rjbxqCKg&m_aW&KNqxv z6s6%xCI_^h0@O7I4<|D)z~_Zw^TV+96fomKYGG^;4eHN;)-b^I!{(1+G<2E-q!f%{ z?P)NFfq?-uO@pi-HqQ*BL2GnjYC$x*e$aZ>Z~y=2!|aF6N5g1nH;n-{ehqJjgA8L} zU;u5R0<H0Y>4(i*!)VYrGDs<?Ujp(wOh0ICKS(?bJU<H>TL<wF>q=njOJM6rAhMu2 zIv5K=$1yN~cC*9X51R*v(IEGMRKna3b0>_>W&qzP4A&2vFNe_%Ak7R6pk>zJAugEv zp~4JR&@p6~d9ZnP7!6y80<#~cALf71G#)5UoL~mR=HH<-Y#j_pzZhs72C5FGA2fXg z3Rh70f~8;`a3~E*pI~t)0kR9q1XG~9d64zP=JR1Rc#jZRC4_()3mP#33rqpc(Luup zBp?7Cbb-+@|AOQ|7{-UubJ6s})(607Rp|H-NG}M(><6(ycrluO*g66j4O<TdQVYW9 z{$B~z4~swedIRWq*l$<|8Kjv3b4+g|nts^21Q-pz<r1nFM4{WiA5A}O{Q`^z?I{E4 zgJD>>!T6y0a?n};*fJ8>JlBOa5Eba^VSE^U6*OlG&4VBvuytTJh|~`nw*#d;nEkMI z6Az&JVd)2?24p_WURXSW)(wEtA51@N9oU6+Ak_>E1|UfY6HLPN!)VaFI7kUhKLd2U zfMEkzIegt0ga=*Z1>-O<Fo5p00+|KV51YS|fa+HO8IGhLy*&L2jX&tL9b6?$zcyS1 z!hjivOvBS2L<yMmfZ9I;Iz9)=$KhD=KPOV$fi*&j2hc<N{Xq(#Vjv1;FNh7opm8mj T-$8sB);|kj{ew_&5?wz4xvl}L diff --git a/ORIGNAL/compilador.o b/ORIGNAL/compilador.o index 5d54ba2ec447c88f824aa9d112807c77cff6b70d..9543fbd891966276d2f63ea3267eff5c5b203fca 100644 GIT binary patch literal 2424 zcmb<-^>JfjWMqH=Mg}_u1P><4z+l0KU^{@B4h*~uJPe^8oliZQ-w1eg*8cG5EdAio z%?gtBXgyG>;L!_VcOHYYj=uoQc0weYYkx458pE`7hko$r<%P(f^XNRj1H^==hZ@=m z(f-;9uEqC*M|bECk6u%dT6}sYoIH%|)NWC*2B^8+zF3Xe|NsC0|6m7z6hm-1gRg6V zBZC46s1|cEs1{o(s1_@5F}M~L<tyYRD&%D5Wh5%7rYPttfaDq6ot>=|G+a`XG86L@ z42|@R^bB+jO*ElQ1`&v{42)Gl42%^5jM6;p91|EB7-SeA7$m(KL^$#Zv@tpJvN0{= zVdsFz*?`0u7#OTUG)x}E#)Cm|%fj&SKQ<-ISYw`nftdjuT_{@k85kG@8Cc+AFqSw} z9L9&y@=$RBs16vd3Kds?igQ3|4F(1VAtd*J!+?Q-!I*)80j3wK6iiv-5O>5O?g2F) zW-d4k85kHsaHtQ*As&ZAoFO?sw;(eoF(tpqO)r_DI5RgXKPR7|C^aWBIWeE1BtJVf zk0GsqAw9Jy(K$aQGd-UnEx!OPR+O1nlE#phmQz}s!H}6-P?VXQ3QAoJc{vQlB`K*z zMGUDGnI&LvGYCT{1||ju26hGphCiS*`~UxcP<Vr+K;q0u;+h~q1_rQtkoZ5SdPAr< zD84w6)LTHsLFOQv?}kG>5J?<lJ_v(^5<vt5131NSA(@{66-PI}04ff04>ywfN~k!x z`VJ&<kexhG{!}OpG6&h-IZ$zQbCy8GLF$q1-3b*3sRxx&uy8(rB+iHA&eKTZAoqaF z8wLi38&GkO`N-~hgd`5iTQKus`2u7w2t$=IK+0f9Jc7hw>6k&UxH7jSF^NI1xTFX| zXTVsX#HUx1T2aEFmy%eL$e@>0T+E<Xln>z~=jZ08=9Mt$<>i;8>bd)c>K2zICTBC~ zfwiS(#HSS{=BC2zr<4Zy3se>%RV!d4Vg7ms<{=1>S_F@QK^mHtVCrFV2S9<%z`*bT zssR+nASSF_k$@^xV_*Q6E>PuAQ3eJzkYYFw!9W+*VPIeYnTf970ICpFej#*YmRX?u z22u)&J7je*{RYT_P`4rrfyz6OespySAVCHO22l7StA`4M{R|R!!eS;!yaA>V#6iO7 z!l3dHB!=#OnEnVPy&xtitUxpj2jPgn1<<Mn<}XnEf%JkfNG~k@u-OfgzX6h9U|@i` x1C)nBc@14ZsEk98JCObes9-XPgM^{R!bJobK=mS=3ujz_x*t~F!6eZ20|1K$N&)}? literal 2736 zcmb<-^>JfjWMqH=Mg}_u1P><4z+k|RU^{@B4h(z@ybPcD<$i^FbUyWHek0(~S^LAI zv-E>UH!DbmN9%!7DUV)LFuT_lM7;nJ9-R>B=Gq?&r3Ns?-Ju^~YCDhb0I7p0hMLuR z9L#-f1Xu6-!J|9$2N8NEoIH%~%5G7R1qh?C8ngfZ|NsBNwlXj<lr#9c1~@V(fPiW- z7lUfCm4a%q0vCg8QBl4^UZO%yW?n|3f@+F_t^!D&!QI)}N<kwusWh*oRKZfuM9)Ci zuoTQQtTQsuGceIJ(u9bEoWj7uz`!8Dz`y_s8h5`?1||lE10XSGuq*?E2$W{53SwZa z5MY$%Vdt2@$iN`O0Kp*XWgx<pPoRy-nU{@eE)P2gM9u~z&cMK6529i6AT}NhN&_qm zAOB-h!i+VAFfcGPz+8)}iy7=YR51{b8SGmS3l%dnASE^=DP{%^Bp!mv%)p7@AhDPk z*pPS-CO-oMgCN7F|Ddo1iNI)a9OCj&aZucV)Wc|1usBRN1KedA3=9lHNZ|vH69xtb zV`%(>%s|GTIK=&Nh==14kAvC^vkx5C3=9leIMnCj5HG<Y&XAm+TacNPn37-QrkBi6 zoSB=HpOeo}l$w*6oS4s0lAoQL$B<UQke*tU=$xODnV!!O@9yL8<meOc@8%Zl8WJDk z=;Y%X&ybd109IL)nOBm=kd~HHTAaa<nOjhlnVSmAOAL8A48<iWsYOK$sTG+Z=YWF? z6h9ya69WSSF9QR^A5iA}|Np--NRWX6lwZK92_~+ECjJkqULPtBiaAhR!ql5V#nH`o z!66QcACMGCJt)t@Qhp3bkbwc5;suf1nG6*NsYiByHdGws9w8+4Fps0FZ-%M|iG%Fr zf$}FnX^=U{_D+Y2gVZD2J0B_zQjcsexa5U~C#cMUh0lJddXPDw!V@Nb3P~K~9*`VJ z=sJkN5)KcM#Kn;Os{j=TnGeEHE(4^lfy6IJ9G1Qr^olEUOA?b9^omQ0Aan+d1xl29 zC8-r940<VvC5a4rNyWtsdPVsVPI7*3Zfaf$gI->KNvfW^U#M<zNn&y~l%Jkgs#j2y zUyxc<QpunPHYqhDKCLJ*Hx=e2ifE8OL1im?$prJ~Q#8{-YLSJcp<xPB50hH~ibw_q zh6hj$+zbrhQV3RJN<bB=LB(O|6)Mc23e^YW!)SD29R^5Qhpt}(st{%$Og}o`5Nbat zE@5gwG)%t%h=YWo#==D`q59F)ML-pT+y_?-RSV)nr5T)%#6aRO+yYYo6M)j_!a)oS z;Mxh@{T)z+p!kJq1ykt$2bISlrRe%sfCL#B7$U&B5Cpn@P$~pPHG2GaKob-!TtM*; zsuf}SVet>L2HkG3ZBRiCC=DuCxS(+jl85OBnTa0vAbAatqZk+%DnT4146+Z2%K$2y Ru<73cbw8}!gXuxn4**=#WG?^! diff --git a/ORIGNAL/compilador.output b/ORIGNAL/compilador.output index 987a2ab..8605752 100644 --- a/ORIGNAL/compilador.output +++ b/ORIGNAL/compilador.output @@ -1,4 +1,4 @@ -Terminals unused in grammar +Terminais sem uso na gramática TYPE ARRAY @@ -8,39 +8,39 @@ Terminals unused in grammar NOT -State 79 conflicts: 1 reduce/reduce +Estado 79 conflitos: 1 de redução/redução -Grammar +Gramática 0 $accept: programa $end - 1 $@1: %empty + 1 $@1: ε 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO - 3 $@2: %empty + 3 $@2: ε - 4 $@3: %empty + 4 $@3: ε 5 bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas $@3 comando_composto 6 parte_declara_rotulos: LABEL VIRGULA - 7 | %empty + 7 | ε 8 parte_declara_vars: var - 9 $@4: %empty + 9 $@4: ε 10 var: $@4 VAR declara_vars - 11 | %empty + 11 | ε 12 declara_vars: declara_vars declara_var 13 | declara_var - 14 $@5: %empty + 14 $@5: ε - 15 $@6: %empty + 15 $@6: ε 16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo $@6 PONTO_E_VIRGULA @@ -54,37 +54,37 @@ Grammar 22 parte_declara_subrotinas: parte_declara_subrotinas declaracao_procedimento 23 | declaracao_funcao - 24 | %empty + 24 | ε - 25 $@7: %empty + 25 $@7: ε - 26 $@8: %empty + 26 $@8: ε 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada PONTO_E_VIRGULA bloco $@8 PONTO_E_VIRGULA - 28 $@9: %empty + 28 $@9: ε - 29 $@10: %empty + 29 $@10: ε - 30 $@11: %empty + 30 $@11: ε 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA bloco $@11 PONTO_E_VIRGULA - 32 $@12: %empty + 32 $@12: ε - 33 $@13: %empty + 33 $@13: ε 34 parametros_ou_nada: ABRE_PARENTESES $@12 paramentros_formais $@13 FECHA_PARENTESES - 35 | %empty + 35 | ε 36 paramentros_formais: secao_pfs 37 | paramentros_formais PONTO_E_VIRGULA secao_pfs - 38 $@14: %empty + 38 $@14: ε 39 secao_pfs: VAR $@14 lista_id_pf DOIS_PONTOS tipo - 40 $@15: %empty + 40 $@15: ε 41 secao_pfs: $@15 lista_id_pf DOIS_PONTOS tipo @@ -97,7 +97,7 @@ Grammar 46 comandos: comando PONTO_E_VIRGULA comandos 47 | comando PONTO_E_VIRGULA - 48 | %empty + 48 | ε 49 comando: numero DOIS_PONTOS comando_sem_rotulo 50 | comando_sem_rotulo @@ -109,29 +109,29 @@ Grammar 55 | leitura 56 | escrita - 57 $@16: %empty + 57 $@16: ε 58 atribuicao_ou_procedimento: IDENT $@16 atribuicao_ou_procedimento_token 59 atribuicao_ou_procedimento_token: atribuicao 60 | chamada_procedimento - 61 $@17: %empty + 61 $@17: ε 62 atribuicao: $@17 ATRIBUICAO expressao_simples - 63 $@18: %empty + 63 $@18: ε 64 chamada_procedimento: $@18 lista_parametros 65 lista_parametros: ABRE_PARENTESES lista_parametros_parenteses FECHA_PARENTESES - 66 | %empty + 66 | ε - 67 $@19: %empty + 67 $@19: ε 68 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA $@19 expressao_simples - 69 $@20: %empty + 69 $@20: ε 70 lista_parametros_parenteses: $@20 expressao_simples @@ -162,7 +162,7 @@ Grammar 88 | termo DIV fator 89 | fator - 90 $@21: %empty + 90 $@21: ε 91 fator: IDENT $@21 chamada_procedimento 92 | NUMERO @@ -171,23 +171,23 @@ Grammar 95 numero: NUMERO - 96 $@22: %empty + 96 $@22: ε - 97 $@23: %empty + 97 $@23: ε 98 comando_repetitivo: $@22 WHILE expressao DO $@23 comando_sem_rotulo 99 comando_condicional: if_then cond_else 100 cond_else: ELSE comando_sem_rotulo - 101 | %empty + 101 | ε - 102 $@24: %empty + 102 $@24: ε 103 if_then: IF expressao $@24 THEN comando_sem_rotulo -Terminals, with rules where they appear +Terminais, com as regras onde eles aparecem $end (0) 0 error (256) @@ -233,1925 +233,1925 @@ Terminals, with rules where they appear LOWER_THAN_ELSE (297) -Nonterminals, with rules where they appear +Não terminais com as regras onde eles aparecem $accept (43) - on left: 0 + à esquerda: 0 programa (44) - on left: 2 - on right: 0 + à esquerda: 2 + à direita: 0 $@1 (45) - on left: 1 - on right: 2 + à esquerda: 1 + à direita: 2 bloco (46) - on left: 5 - on right: 2 27 31 + à esquerda: 5 + à direita: 2 27 31 $@2 (47) - on left: 3 - on right: 5 + à esquerda: 3 + à direita: 5 $@3 (48) - on left: 4 - on right: 5 + à esquerda: 4 + à direita: 5 parte_declara_rotulos (49) - on left: 6 7 - on right: 5 + à esquerda: 6 7 + à direita: 5 parte_declara_vars (50) - on left: 8 - on right: 5 + à esquerda: 8 + à direita: 5 var (51) - on left: 10 11 - on right: 8 + à esquerda: 10 11 + à direita: 8 $@4 (52) - on left: 9 - on right: 10 + à esquerda: 9 + à direita: 10 declara_vars (53) - on left: 12 13 - on right: 10 12 + à esquerda: 12 13 + à direita: 10 12 declara_var (54) - on left: 16 - on right: 12 13 + à esquerda: 16 + à direita: 12 13 $@5 (55) - on left: 14 - on right: 16 + à esquerda: 14 + à direita: 16 $@6 (56) - on left: 15 - on right: 16 + à esquerda: 15 + à direita: 16 tipo (57) - on left: 17 - on right: 16 31 39 41 + à esquerda: 17 + à direita: 16 31 39 41 lista_id_var (58) - on left: 18 19 - on right: 16 18 + à esquerda: 18 19 + à direita: 16 18 lista_idents (59) - on left: 20 21 - on right: 2 20 + à esquerda: 20 21 + à direita: 2 20 parte_declara_subrotinas (60) - on left: 22 23 24 - on right: 5 22 + à esquerda: 22 23 24 + à direita: 5 22 declaracao_procedimento (61) - on left: 27 - on right: 22 + à esquerda: 27 + à direita: 22 $@7 (62) - on left: 25 - on right: 27 + à esquerda: 25 + à direita: 27 $@8 (63) - on left: 26 - on right: 27 + à esquerda: 26 + à direita: 27 declaracao_funcao (64) - on left: 31 - on right: 23 + à esquerda: 31 + à direita: 23 $@9 (65) - on left: 28 - on right: 31 + à esquerda: 28 + à direita: 31 $@10 (66) - on left: 29 - on right: 31 + à esquerda: 29 + à direita: 31 $@11 (67) - on left: 30 - on right: 31 + à esquerda: 30 + à direita: 31 parametros_ou_nada (68) - on left: 34 35 - on right: 27 31 + à esquerda: 34 35 + à direita: 27 31 $@12 (69) - on left: 32 - on right: 34 + à esquerda: 32 + à direita: 34 $@13 (70) - on left: 33 - on right: 34 + à esquerda: 33 + à direita: 34 paramentros_formais (71) - on left: 36 37 - on right: 34 37 + à esquerda: 36 37 + à direita: 34 37 secao_pfs (72) - on left: 39 41 - on right: 36 37 + à esquerda: 39 41 + à direita: 36 37 $@14 (73) - on left: 38 - on right: 39 + à esquerda: 38 + à direita: 39 $@15 (74) - on left: 40 - on right: 41 + à esquerda: 40 + à direita: 41 lista_id_pf (75) - on left: 42 43 - on right: 39 41 42 + à esquerda: 42 43 + à direita: 39 41 42 parametro (76) - on left: 44 - on right: 42 43 + à esquerda: 44 + à direita: 42 43 comando_composto (77) - on left: 45 - on right: 5 52 + à esquerda: 45 + à direita: 5 52 comandos (78) - on left: 46 47 48 - on right: 45 46 + à esquerda: 46 47 48 + à direita: 45 46 comando (79) - on left: 49 50 - on right: 46 47 + à esquerda: 49 50 + à direita: 46 47 comando_sem_rotulo (80) - on left: 51 52 53 54 55 56 - on right: 49 50 98 100 103 + à esquerda: 51 52 53 54 55 56 + à direita: 49 50 98 100 103 atribuicao_ou_procedimento (81) - on left: 58 - on right: 51 + à esquerda: 58 + à direita: 51 $@16 (82) - on left: 57 - on right: 58 + à esquerda: 57 + à direita: 58 atribuicao_ou_procedimento_token (83) - on left: 59 60 - on right: 58 + à esquerda: 59 60 + à direita: 58 atribuicao (84) - on left: 62 - on right: 59 + à esquerda: 62 + à direita: 59 $@17 (85) - on left: 61 - on right: 62 + à esquerda: 61 + à direita: 62 chamada_procedimento (86) - on left: 64 - on right: 60 91 + à esquerda: 64 + à direita: 60 91 $@18 (87) - on left: 63 - on right: 64 + à esquerda: 63 + à direita: 64 lista_parametros (88) - on left: 65 66 - on right: 64 + à esquerda: 65 66 + à direita: 64 lista_parametros_parenteses (89) - on left: 68 70 - on right: 65 68 + à esquerda: 68 70 + à direita: 65 68 $@19 (90) - on left: 67 - on right: 68 + à esquerda: 67 + à direita: 68 $@20 (91) - on left: 69 - on right: 70 + à esquerda: 69 + à direita: 70 leitura (92) - on left: 71 - on right: 55 + à esquerda: 71 + à direita: 55 lista_leituras (93) - on left: 72 73 - on right: 71 72 + à esquerda: 72 73 + à direita: 71 72 simb_leitura (94) - on left: 74 - on right: 72 73 + à esquerda: 74 + à direita: 72 73 escrita (95) - on left: 75 - on right: 56 + à esquerda: 75 + à direita: 56 lista_escritas (96) - on left: 76 77 - on right: 75 76 + à esquerda: 76 77 + à direita: 75 76 expressao (97) - on left: 78 79 80 81 82 83 - on right: 93 98 103 + à esquerda: 78 79 80 81 82 83 + à direita: 93 98 103 expressao_simples (98) - on left: 84 85 86 - on right: 62 68 70 76 77 78 79 80 81 82 83 84 85 94 + à esquerda: 84 85 86 + à direita: 62 68 70 76 77 78 79 80 81 82 83 84 85 94 termo (99) - on left: 87 88 89 - on right: 84 85 86 87 88 + à esquerda: 87 88 89 + à direita: 84 85 86 87 88 fator (100) - on left: 91 92 93 94 - on right: 87 88 89 + à esquerda: 91 92 93 94 + à direita: 87 88 89 $@21 (101) - on left: 90 - on right: 91 + à esquerda: 90 + à direita: 91 numero (102) - on left: 95 - on right: 49 + à esquerda: 95 + à direita: 49 comando_repetitivo (103) - on left: 98 - on right: 54 + à esquerda: 98 + à direita: 54 $@22 (104) - on left: 96 - on right: 98 + à esquerda: 96 + à direita: 98 $@23 (105) - on left: 97 - on right: 98 + à esquerda: 97 + à direita: 98 comando_condicional (106) - on left: 99 - on right: 53 + à esquerda: 99 + à direita: 53 cond_else (107) - on left: 100 101 - on right: 99 + à esquerda: 100 101 + à direita: 99 if_then (108) - on left: 103 - on right: 99 + à esquerda: 103 + à direita: 99 $@24 (109) - on left: 102 - on right: 103 + à esquerda: 102 + à direita: 103 -State 0 +Estado 0 - 0 $accept: . programa $end + 0 $accept: • programa $end - $default reduce using rule 1 ($@1) + $padrão reduzir usando a regra 1 ($@1) - programa go to state 1 - $@1 go to state 2 + programa ir ao estado 1 + $@1 ir ao estado 2 -State 1 +Estado 1 - 0 $accept: programa . $end + 0 $accept: programa • $end - $end shift, and go to state 3 + $end deslocar, e ir ao estado 3 -State 2 +Estado 2 - 2 programa: $@1 . PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO + 2 programa: $@1 • PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO - PROGRAM shift, and go to state 4 + PROGRAM deslocar, e ir ao estado 4 -State 3 +Estado 3 - 0 $accept: programa $end . + 0 $accept: programa $end • - $default accept + $padrão aceitar -State 4 +Estado 4 - 2 programa: $@1 PROGRAM . IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO + 2 programa: $@1 PROGRAM • IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO - IDENT shift, and go to state 5 + IDENT deslocar, e ir ao estado 5 -State 5 +Estado 5 - 2 programa: $@1 PROGRAM IDENT . ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO + 2 programa: $@1 PROGRAM IDENT • ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO - ABRE_PARENTESES shift, and go to state 6 + ABRE_PARENTESES deslocar, e ir ao estado 6 -State 6 +Estado 6 - 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES . lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO + 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES • lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO - IDENT shift, and go to state 7 + IDENT deslocar, e ir ao estado 7 - lista_idents go to state 8 + lista_idents ir ao estado 8 -State 7 +Estado 7 - 21 lista_idents: IDENT . + 21 lista_idents: IDENT • - $default reduce using rule 21 (lista_idents) + $padrão reduzir usando a regra 21 (lista_idents) -State 8 +Estado 8 - 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents . FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO - 20 lista_idents: lista_idents . VIRGULA IDENT + 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents • FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO + 20 lista_idents: lista_idents • VIRGULA IDENT - FECHA_PARENTESES shift, and go to state 9 - VIRGULA shift, and go to state 10 + FECHA_PARENTESES deslocar, e ir ao estado 9 + VIRGULA deslocar, e ir ao estado 10 -State 9 +Estado 9 - 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES . PONTO_E_VIRGULA bloco PONTO + 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES • PONTO_E_VIRGULA bloco PONTO - PONTO_E_VIRGULA shift, and go to state 11 + PONTO_E_VIRGULA deslocar, e ir ao estado 11 -State 10 +Estado 10 - 20 lista_idents: lista_idents VIRGULA . IDENT + 20 lista_idents: lista_idents VIRGULA • IDENT - IDENT shift, and go to state 12 + IDENT deslocar, e ir ao estado 12 -State 11 +Estado 11 - 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA . bloco PONTO + 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA • bloco PONTO - LABEL shift, and go to state 13 + LABEL deslocar, e ir ao estado 13 - $default reduce using rule 7 (parte_declara_rotulos) + $padrão reduzir usando a regra 7 (parte_declara_rotulos) - bloco go to state 14 - parte_declara_rotulos go to state 15 + bloco ir ao estado 14 + parte_declara_rotulos ir ao estado 15 -State 12 +Estado 12 - 20 lista_idents: lista_idents VIRGULA IDENT . + 20 lista_idents: lista_idents VIRGULA IDENT • - $default reduce using rule 20 (lista_idents) + $padrão reduzir usando a regra 20 (lista_idents) -State 13 +Estado 13 - 6 parte_declara_rotulos: LABEL . VIRGULA + 6 parte_declara_rotulos: LABEL • VIRGULA - VIRGULA shift, and go to state 16 + VIRGULA deslocar, e ir ao estado 16 -State 14 +Estado 14 - 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco . PONTO + 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco • PONTO - PONTO shift, and go to state 17 + PONTO deslocar, e ir ao estado 17 -State 15 +Estado 15 - 5 bloco: parte_declara_rotulos . parte_declara_vars $@2 parte_declara_subrotinas $@3 comando_composto + 5 bloco: parte_declara_rotulos • parte_declara_vars $@2 parte_declara_subrotinas $@3 comando_composto - VAR reduce using rule 9 ($@4) - $default reduce using rule 11 (var) + VAR reduzir usando a regra 9 ($@4) + $padrão reduzir usando a regra 11 (var) - parte_declara_vars go to state 18 - var go to state 19 - $@4 go to state 20 + parte_declara_vars ir ao estado 18 + var ir ao estado 19 + $@4 ir ao estado 20 -State 16 +Estado 16 - 6 parte_declara_rotulos: LABEL VIRGULA . + 6 parte_declara_rotulos: LABEL VIRGULA • - $default reduce using rule 6 (parte_declara_rotulos) + $padrão reduzir usando a regra 6 (parte_declara_rotulos) -State 17 +Estado 17 - 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO . + 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO • - $default reduce using rule 2 (programa) + $padrão reduzir usando a regra 2 (programa) -State 18 +Estado 18 - 5 bloco: parte_declara_rotulos parte_declara_vars . $@2 parte_declara_subrotinas $@3 comando_composto + 5 bloco: parte_declara_rotulos parte_declara_vars • $@2 parte_declara_subrotinas $@3 comando_composto - $default reduce using rule 3 ($@2) + $padrão reduzir usando a regra 3 ($@2) - $@2 go to state 21 + $@2 ir ao estado 21 -State 19 +Estado 19 - 8 parte_declara_vars: var . + 8 parte_declara_vars: var • - $default reduce using rule 8 (parte_declara_vars) + $padrão reduzir usando a regra 8 (parte_declara_vars) -State 20 +Estado 20 - 10 var: $@4 . VAR declara_vars + 10 var: $@4 • VAR declara_vars - VAR shift, and go to state 22 + VAR deslocar, e ir ao estado 22 -State 21 +Estado 21 - 5 bloco: parte_declara_rotulos parte_declara_vars $@2 . parte_declara_subrotinas $@3 comando_composto + 5 bloco: parte_declara_rotulos parte_declara_vars $@2 • parte_declara_subrotinas $@3 comando_composto - FUNCTION shift, and go to state 23 + FUNCTION deslocar, e ir ao estado 23 - $default reduce using rule 24 (parte_declara_subrotinas) + $padrão reduzir usando a regra 24 (parte_declara_subrotinas) - parte_declara_subrotinas go to state 24 - declaracao_funcao go to state 25 + parte_declara_subrotinas ir ao estado 24 + declaracao_funcao ir ao estado 25 -State 22 +Estado 22 - 10 var: $@4 VAR . declara_vars + 10 var: $@4 VAR • declara_vars - $default reduce using rule 14 ($@5) + $padrão reduzir usando a regra 14 ($@5) - declara_vars go to state 26 - declara_var go to state 27 - $@5 go to state 28 + declara_vars ir ao estado 26 + declara_var ir ao estado 27 + $@5 ir ao estado 28 -State 23 +Estado 23 - 31 declaracao_funcao: FUNCTION . IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA bloco $@11 PONTO_E_VIRGULA + 31 declaracao_funcao: FUNCTION • IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA bloco $@11 PONTO_E_VIRGULA - IDENT shift, and go to state 29 + IDENT deslocar, e ir ao estado 29 -State 24 +Estado 24 - 5 bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas . $@3 comando_composto - 22 parte_declara_subrotinas: parte_declara_subrotinas . declaracao_procedimento + 5 bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas • $@3 comando_composto + 22 parte_declara_subrotinas: parte_declara_subrotinas • declaracao_procedimento - PROCEDURE shift, and go to state 30 + PROCEDURE deslocar, e ir ao estado 30 - $default reduce using rule 4 ($@3) + $padrão reduzir usando a regra 4 ($@3) - $@3 go to state 31 - declaracao_procedimento go to state 32 + $@3 ir ao estado 31 + declaracao_procedimento ir ao estado 32 -State 25 +Estado 25 - 23 parte_declara_subrotinas: declaracao_funcao . + 23 parte_declara_subrotinas: declaracao_funcao • - $default reduce using rule 23 (parte_declara_subrotinas) + $padrão reduzir usando a regra 23 (parte_declara_subrotinas) -State 26 +Estado 26 - 10 var: $@4 VAR declara_vars . - 12 declara_vars: declara_vars . declara_var + 10 var: $@4 VAR declara_vars • + 12 declara_vars: declara_vars • declara_var - IDENT reduce using rule 14 ($@5) - $default reduce using rule 10 (var) + IDENT reduzir usando a regra 14 ($@5) + $padrão reduzir usando a regra 10 (var) - declara_var go to state 33 - $@5 go to state 28 + declara_var ir ao estado 33 + $@5 ir ao estado 28 -State 27 +Estado 27 - 13 declara_vars: declara_var . + 13 declara_vars: declara_var • - $default reduce using rule 13 (declara_vars) + $padrão reduzir usando a regra 13 (declara_vars) -State 28 +Estado 28 - 16 declara_var: $@5 . lista_id_var DOIS_PONTOS tipo $@6 PONTO_E_VIRGULA + 16 declara_var: $@5 • lista_id_var DOIS_PONTOS tipo $@6 PONTO_E_VIRGULA - IDENT shift, and go to state 34 + IDENT deslocar, e ir ao estado 34 - lista_id_var go to state 35 + lista_id_var ir ao estado 35 -State 29 +Estado 29 - 31 declaracao_funcao: FUNCTION IDENT . $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA bloco $@11 PONTO_E_VIRGULA + 31 declaracao_funcao: FUNCTION IDENT • $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA bloco $@11 PONTO_E_VIRGULA - $default reduce using rule 28 ($@9) + $padrão reduzir usando a regra 28 ($@9) - $@9 go to state 36 + $@9 ir ao estado 36 -State 30 +Estado 30 - 27 declaracao_procedimento: PROCEDURE . IDENT $@7 parametros_ou_nada PONTO_E_VIRGULA bloco $@8 PONTO_E_VIRGULA + 27 declaracao_procedimento: PROCEDURE • IDENT $@7 parametros_ou_nada PONTO_E_VIRGULA bloco $@8 PONTO_E_VIRGULA - IDENT shift, and go to state 37 + IDENT deslocar, e ir ao estado 37 -State 31 +Estado 31 - 5 bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas $@3 . comando_composto + 5 bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas $@3 • comando_composto - T_BEGIN shift, and go to state 38 + T_BEGIN deslocar, e ir ao estado 38 - comando_composto go to state 39 + comando_composto ir ao estado 39 -State 32 +Estado 32 - 22 parte_declara_subrotinas: parte_declara_subrotinas declaracao_procedimento . + 22 parte_declara_subrotinas: parte_declara_subrotinas declaracao_procedimento • - $default reduce using rule 22 (parte_declara_subrotinas) + $padrão reduzir usando a regra 22 (parte_declara_subrotinas) -State 33 +Estado 33 - 12 declara_vars: declara_vars declara_var . + 12 declara_vars: declara_vars declara_var • - $default reduce using rule 12 (declara_vars) + $padrão reduzir usando a regra 12 (declara_vars) -State 34 +Estado 34 - 19 lista_id_var: IDENT . + 19 lista_id_var: IDENT • - $default reduce using rule 19 (lista_id_var) + $padrão reduzir usando a regra 19 (lista_id_var) -State 35 +Estado 35 - 16 declara_var: $@5 lista_id_var . DOIS_PONTOS tipo $@6 PONTO_E_VIRGULA - 18 lista_id_var: lista_id_var . VIRGULA IDENT + 16 declara_var: $@5 lista_id_var • DOIS_PONTOS tipo $@6 PONTO_E_VIRGULA + 18 lista_id_var: lista_id_var • VIRGULA IDENT - VIRGULA shift, and go to state 40 - DOIS_PONTOS shift, and go to state 41 + VIRGULA deslocar, e ir ao estado 40 + DOIS_PONTOS deslocar, e ir ao estado 41 -State 36 +Estado 36 - 31 declaracao_funcao: FUNCTION IDENT $@9 . parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA bloco $@11 PONTO_E_VIRGULA + 31 declaracao_funcao: FUNCTION IDENT $@9 • parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA bloco $@11 PONTO_E_VIRGULA - ABRE_PARENTESES shift, and go to state 42 + ABRE_PARENTESES deslocar, e ir ao estado 42 - $default reduce using rule 35 (parametros_ou_nada) + $padrão reduzir usando a regra 35 (parametros_ou_nada) - parametros_ou_nada go to state 43 + parametros_ou_nada ir ao estado 43 -State 37 +Estado 37 - 27 declaracao_procedimento: PROCEDURE IDENT . $@7 parametros_ou_nada PONTO_E_VIRGULA bloco $@8 PONTO_E_VIRGULA + 27 declaracao_procedimento: PROCEDURE IDENT • $@7 parametros_ou_nada PONTO_E_VIRGULA bloco $@8 PONTO_E_VIRGULA - $default reduce using rule 25 ($@7) + $padrão reduzir usando a regra 25 ($@7) - $@7 go to state 44 + $@7 ir ao estado 44 -State 38 +Estado 38 - 45 comando_composto: T_BEGIN . comandos T_END + 45 comando_composto: T_BEGIN • comandos T_END - T_BEGIN shift, and go to state 38 - IDENT shift, and go to state 45 - IF shift, and go to state 46 - NUMERO shift, and go to state 47 - READ shift, and go to state 48 - WRITE shift, and go to state 49 + T_BEGIN deslocar, e ir ao estado 38 + IDENT deslocar, e ir ao estado 45 + IF deslocar, e ir ao estado 46 + NUMERO deslocar, e ir ao estado 47 + READ deslocar, e ir ao estado 48 + WRITE deslocar, e ir ao estado 49 - WHILE reduce using rule 96 ($@22) - $default reduce using rule 48 (comandos) + WHILE reduzir usando a regra 96 ($@22) + $padrão reduzir usando a regra 48 (comandos) - comando_composto go to state 50 - comandos go to state 51 - comando go to state 52 - comando_sem_rotulo go to state 53 - atribuicao_ou_procedimento go to state 54 - leitura go to state 55 - escrita go to state 56 - numero go to state 57 - comando_repetitivo go to state 58 - $@22 go to state 59 - comando_condicional go to state 60 - if_then go to state 61 + comando_composto ir ao estado 50 + comandos ir ao estado 51 + comando ir ao estado 52 + comando_sem_rotulo ir ao estado 53 + atribuicao_ou_procedimento ir ao estado 54 + leitura ir ao estado 55 + escrita ir ao estado 56 + numero ir ao estado 57 + comando_repetitivo ir ao estado 58 + $@22 ir ao estado 59 + comando_condicional ir ao estado 60 + if_then ir ao estado 61 -State 39 +Estado 39 - 5 bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas $@3 comando_composto . + 5 bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas $@3 comando_composto • - $default reduce using rule 5 (bloco) + $padrão reduzir usando a regra 5 (bloco) -State 40 +Estado 40 - 18 lista_id_var: lista_id_var VIRGULA . IDENT + 18 lista_id_var: lista_id_var VIRGULA • IDENT - IDENT shift, and go to state 62 + IDENT deslocar, e ir ao estado 62 -State 41 +Estado 41 - 16 declara_var: $@5 lista_id_var DOIS_PONTOS . tipo $@6 PONTO_E_VIRGULA + 16 declara_var: $@5 lista_id_var DOIS_PONTOS • tipo $@6 PONTO_E_VIRGULA - IDENT shift, and go to state 63 + IDENT deslocar, e ir ao estado 63 - tipo go to state 64 + tipo ir ao estado 64 -State 42 +Estado 42 - 34 parametros_ou_nada: ABRE_PARENTESES . $@12 paramentros_formais $@13 FECHA_PARENTESES + 34 parametros_ou_nada: ABRE_PARENTESES • $@12 paramentros_formais $@13 FECHA_PARENTESES - $default reduce using rule 32 ($@12) + $padrão reduzir usando a regra 32 ($@12) - $@12 go to state 65 + $@12 ir ao estado 65 -State 43 +Estado 43 - 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada . DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA bloco $@11 PONTO_E_VIRGULA + 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada • DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA bloco $@11 PONTO_E_VIRGULA - DOIS_PONTOS shift, and go to state 66 + DOIS_PONTOS deslocar, e ir ao estado 66 -State 44 +Estado 44 - 27 declaracao_procedimento: PROCEDURE IDENT $@7 . parametros_ou_nada PONTO_E_VIRGULA bloco $@8 PONTO_E_VIRGULA + 27 declaracao_procedimento: PROCEDURE IDENT $@7 • parametros_ou_nada PONTO_E_VIRGULA bloco $@8 PONTO_E_VIRGULA - ABRE_PARENTESES shift, and go to state 42 + ABRE_PARENTESES deslocar, e ir ao estado 42 - $default reduce using rule 35 (parametros_ou_nada) + $padrão reduzir usando a regra 35 (parametros_ou_nada) - parametros_ou_nada go to state 67 + parametros_ou_nada ir ao estado 67 -State 45 +Estado 45 - 58 atribuicao_ou_procedimento: IDENT . $@16 atribuicao_ou_procedimento_token + 58 atribuicao_ou_procedimento: IDENT • $@16 atribuicao_ou_procedimento_token - $default reduce using rule 57 ($@16) + $padrão reduzir usando a regra 57 ($@16) - $@16 go to state 68 + $@16 ir ao estado 68 -State 46 +Estado 46 - 103 if_then: IF . expressao $@24 THEN comando_sem_rotulo + 103 if_then: IF • expressao $@24 THEN comando_sem_rotulo - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + ABRE_PARENTESES deslocar, e ir ao estado 69 + IDENT deslocar, e ir ao estado 70 + NUMERO deslocar, e ir ao estado 71 - expressao go to state 72 - expressao_simples go to state 73 - termo go to state 74 - fator go to state 75 + expressao ir ao estado 72 + expressao_simples ir ao estado 73 + termo ir ao estado 74 + fator ir ao estado 75 -State 47 +Estado 47 - 95 numero: NUMERO . + 95 numero: NUMERO • - $default reduce using rule 95 (numero) + $padrão reduzir usando a regra 95 (numero) -State 48 +Estado 48 - 71 leitura: READ . ABRE_PARENTESES lista_leituras FECHA_PARENTESES + 71 leitura: READ • ABRE_PARENTESES lista_leituras FECHA_PARENTESES - ABRE_PARENTESES shift, and go to state 76 + ABRE_PARENTESES deslocar, e ir ao estado 76 -State 49 +Estado 49 - 75 escrita: WRITE . ABRE_PARENTESES lista_escritas FECHA_PARENTESES + 75 escrita: WRITE • ABRE_PARENTESES lista_escritas FECHA_PARENTESES - ABRE_PARENTESES shift, and go to state 77 + ABRE_PARENTESES deslocar, e ir ao estado 77 -State 50 +Estado 50 - 52 comando_sem_rotulo: comando_composto . + 52 comando_sem_rotulo: comando_composto • - $default reduce using rule 52 (comando_sem_rotulo) + $padrão reduzir usando a regra 52 (comando_sem_rotulo) -State 51 +Estado 51 - 45 comando_composto: T_BEGIN comandos . T_END + 45 comando_composto: T_BEGIN comandos • T_END - T_END shift, and go to state 78 + T_END deslocar, e ir ao estado 78 -State 52 +Estado 52 - 46 comandos: comando . PONTO_E_VIRGULA comandos - 47 | comando . PONTO_E_VIRGULA + 46 comandos: comando • PONTO_E_VIRGULA comandos + 47 | comando • PONTO_E_VIRGULA - PONTO_E_VIRGULA shift, and go to state 79 + PONTO_E_VIRGULA deslocar, e ir ao estado 79 -State 53 +Estado 53 - 50 comando: comando_sem_rotulo . + 50 comando: comando_sem_rotulo • - $default reduce using rule 50 (comando) + $padrão reduzir usando a regra 50 (comando) -State 54 +Estado 54 - 51 comando_sem_rotulo: atribuicao_ou_procedimento . + 51 comando_sem_rotulo: atribuicao_ou_procedimento • - $default reduce using rule 51 (comando_sem_rotulo) + $padrão reduzir usando a regra 51 (comando_sem_rotulo) -State 55 +Estado 55 - 55 comando_sem_rotulo: leitura . + 55 comando_sem_rotulo: leitura • - $default reduce using rule 55 (comando_sem_rotulo) + $padrão reduzir usando a regra 55 (comando_sem_rotulo) -State 56 +Estado 56 - 56 comando_sem_rotulo: escrita . + 56 comando_sem_rotulo: escrita • - $default reduce using rule 56 (comando_sem_rotulo) + $padrão reduzir usando a regra 56 (comando_sem_rotulo) -State 57 +Estado 57 - 49 comando: numero . DOIS_PONTOS comando_sem_rotulo + 49 comando: numero • DOIS_PONTOS comando_sem_rotulo - DOIS_PONTOS shift, and go to state 80 + DOIS_PONTOS deslocar, e ir ao estado 80 -State 58 +Estado 58 - 54 comando_sem_rotulo: comando_repetitivo . + 54 comando_sem_rotulo: comando_repetitivo • - $default reduce using rule 54 (comando_sem_rotulo) + $padrão reduzir usando a regra 54 (comando_sem_rotulo) -State 59 +Estado 59 - 98 comando_repetitivo: $@22 . WHILE expressao DO $@23 comando_sem_rotulo + 98 comando_repetitivo: $@22 • WHILE expressao DO $@23 comando_sem_rotulo - WHILE shift, and go to state 81 + WHILE deslocar, e ir ao estado 81 -State 60 +Estado 60 - 53 comando_sem_rotulo: comando_condicional . + 53 comando_sem_rotulo: comando_condicional • - $default reduce using rule 53 (comando_sem_rotulo) + $padrão reduzir usando a regra 53 (comando_sem_rotulo) -State 61 +Estado 61 - 99 comando_condicional: if_then . cond_else + 99 comando_condicional: if_then • cond_else - ELSE shift, and go to state 82 + ELSE deslocar, e ir ao estado 82 - $default reduce using rule 101 (cond_else) + $padrão reduzir usando a regra 101 (cond_else) - cond_else go to state 83 + cond_else ir ao estado 83 -State 62 +Estado 62 - 18 lista_id_var: lista_id_var VIRGULA IDENT . + 18 lista_id_var: lista_id_var VIRGULA IDENT • - $default reduce using rule 18 (lista_id_var) + $padrão reduzir usando a regra 18 (lista_id_var) -State 63 +Estado 63 - 17 tipo: IDENT . + 17 tipo: IDENT • - $default reduce using rule 17 (tipo) + $padrão reduzir usando a regra 17 (tipo) -State 64 +Estado 64 - 16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo . $@6 PONTO_E_VIRGULA + 16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo • $@6 PONTO_E_VIRGULA - $default reduce using rule 15 ($@6) + $padrão reduzir usando a regra 15 ($@6) - $@6 go to state 84 + $@6 ir ao estado 84 -State 65 +Estado 65 - 34 parametros_ou_nada: ABRE_PARENTESES $@12 . paramentros_formais $@13 FECHA_PARENTESES + 34 parametros_ou_nada: ABRE_PARENTESES $@12 • paramentros_formais $@13 FECHA_PARENTESES - VAR shift, and go to state 85 + VAR deslocar, e ir ao estado 85 - $default reduce using rule 40 ($@15) + $padrão reduzir usando a regra 40 ($@15) - paramentros_formais go to state 86 - secao_pfs go to state 87 - $@15 go to state 88 + paramentros_formais ir ao estado 86 + secao_pfs ir ao estado 87 + $@15 ir ao estado 88 -State 66 +Estado 66 - 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS . $@10 tipo PONTO_E_VIRGULA bloco $@11 PONTO_E_VIRGULA + 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS • $@10 tipo PONTO_E_VIRGULA bloco $@11 PONTO_E_VIRGULA - $default reduce using rule 29 ($@10) + $padrão reduzir usando a regra 29 ($@10) - $@10 go to state 89 + $@10 ir ao estado 89 -State 67 +Estado 67 - 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada . PONTO_E_VIRGULA bloco $@8 PONTO_E_VIRGULA + 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada • PONTO_E_VIRGULA bloco $@8 PONTO_E_VIRGULA - PONTO_E_VIRGULA shift, and go to state 90 + PONTO_E_VIRGULA deslocar, e ir ao estado 90 -State 68 +Estado 68 - 58 atribuicao_ou_procedimento: IDENT $@16 . atribuicao_ou_procedimento_token + 58 atribuicao_ou_procedimento: IDENT $@16 • atribuicao_ou_procedimento_token - ATRIBUICAO reduce using rule 61 ($@17) - $default reduce using rule 63 ($@18) + ATRIBUICAO reduzir usando a regra 61 ($@17) + $padrão reduzir usando a regra 63 ($@18) - atribuicao_ou_procedimento_token go to state 91 - atribuicao go to state 92 - $@17 go to state 93 - chamada_procedimento go to state 94 - $@18 go to state 95 + atribuicao_ou_procedimento_token ir ao estado 91 + atribuicao ir ao estado 92 + $@17 ir ao estado 93 + chamada_procedimento ir ao estado 94 + $@18 ir ao estado 95 -State 69 +Estado 69 - 93 fator: ABRE_PARENTESES . expressao FECHA_PARENTESES - 94 | ABRE_PARENTESES . expressao_simples FECHA_PARENTESES + 93 fator: ABRE_PARENTESES • expressao FECHA_PARENTESES + 94 | ABRE_PARENTESES • expressao_simples FECHA_PARENTESES - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + ABRE_PARENTESES deslocar, e ir ao estado 69 + IDENT deslocar, e ir ao estado 70 + NUMERO deslocar, e ir ao estado 71 - expressao go to state 96 - expressao_simples go to state 97 - termo go to state 74 - fator go to state 75 + expressao ir ao estado 96 + expressao_simples ir ao estado 97 + termo ir ao estado 74 + fator ir ao estado 75 -State 70 +Estado 70 - 91 fator: IDENT . $@21 chamada_procedimento + 91 fator: IDENT • $@21 chamada_procedimento - $default reduce using rule 90 ($@21) + $padrão reduzir usando a regra 90 ($@21) - $@21 go to state 98 + $@21 ir ao estado 98 -State 71 +Estado 71 - 92 fator: NUMERO . + 92 fator: NUMERO • - $default reduce using rule 92 (fator) + $padrão reduzir usando a regra 92 (fator) -State 72 +Estado 72 - 103 if_then: IF expressao . $@24 THEN comando_sem_rotulo + 103 if_then: IF expressao • $@24 THEN comando_sem_rotulo - $default reduce using rule 102 ($@24) + $padrão reduzir usando a regra 102 ($@24) - $@24 go to state 99 + $@24 ir ao estado 99 -State 73 +Estado 73 - 78 expressao: expressao_simples . IGUAL expressao_simples - 79 | expressao_simples . DIFERENTE expressao_simples - 80 | expressao_simples . MENOR expressao_simples - 81 | expressao_simples . MENOR_IGUAL expressao_simples - 82 | expressao_simples . MAIOR expressao_simples - 83 | expressao_simples . MAIOR_IGUAL expressao_simples - 84 expressao_simples: expressao_simples . MAIS termo - 85 | expressao_simples . MENOS termo + 78 expressao: expressao_simples • IGUAL expressao_simples + 79 | expressao_simples • DIFERENTE expressao_simples + 80 | expressao_simples • MENOR expressao_simples + 81 | expressao_simples • MENOR_IGUAL expressao_simples + 82 | expressao_simples • MAIOR expressao_simples + 83 | expressao_simples • MAIOR_IGUAL expressao_simples + 84 expressao_simples: expressao_simples • MAIS termo + 85 | expressao_simples • MENOS termo - IGUAL shift, and go to state 100 - DIFERENTE shift, and go to state 101 - MENOR_IGUAL shift, and go to state 102 - MAIOR_IGUAL shift, and go to state 103 - MENOR shift, and go to state 104 - MAIOR shift, and go to state 105 - MAIS shift, and go to state 106 - MENOS shift, and go to state 107 + IGUAL deslocar, e ir ao estado 100 + DIFERENTE deslocar, e ir ao estado 101 + MENOR_IGUAL deslocar, e ir ao estado 102 + MAIOR_IGUAL deslocar, e ir ao estado 103 + MENOR deslocar, e ir ao estado 104 + MAIOR deslocar, e ir ao estado 105 + MAIS deslocar, e ir ao estado 106 + MENOS deslocar, e ir ao estado 107 -State 74 +Estado 74 - 86 expressao_simples: termo . - 87 termo: termo . ASTERISCO fator - 88 | termo . DIV fator + 86 expressao_simples: termo • + 87 termo: termo • ASTERISCO fator + 88 | termo • DIV fator - DIV shift, and go to state 108 - ASTERISCO shift, and go to state 109 + DIV deslocar, e ir ao estado 108 + ASTERISCO deslocar, e ir ao estado 109 - $default reduce using rule 86 (expressao_simples) + $padrão reduzir usando a regra 86 (expressao_simples) -State 75 +Estado 75 - 89 termo: fator . + 89 termo: fator • - $default reduce using rule 89 (termo) + $padrão reduzir usando a regra 89 (termo) -State 76 +Estado 76 - 71 leitura: READ ABRE_PARENTESES . lista_leituras FECHA_PARENTESES + 71 leitura: READ ABRE_PARENTESES • lista_leituras FECHA_PARENTESES - IDENT shift, and go to state 110 + IDENT deslocar, e ir ao estado 110 - lista_leituras go to state 111 - simb_leitura go to state 112 + lista_leituras ir ao estado 111 + simb_leitura ir ao estado 112 -State 77 +Estado 77 - 75 escrita: WRITE ABRE_PARENTESES . lista_escritas FECHA_PARENTESES + 75 escrita: WRITE ABRE_PARENTESES • lista_escritas FECHA_PARENTESES - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + ABRE_PARENTESES deslocar, e ir ao estado 69 + IDENT deslocar, e ir ao estado 70 + NUMERO deslocar, e ir ao estado 71 - lista_escritas go to state 113 - expressao_simples go to state 114 - termo go to state 74 - fator go to state 75 + lista_escritas ir ao estado 113 + expressao_simples ir ao estado 114 + termo ir ao estado 74 + fator ir ao estado 75 -State 78 +Estado 78 - 45 comando_composto: T_BEGIN comandos T_END . + 45 comando_composto: T_BEGIN comandos T_END • - $default reduce using rule 45 (comando_composto) + $padrão reduzir usando a regra 45 (comando_composto) -State 79 +Estado 79 - 46 comandos: comando PONTO_E_VIRGULA . comandos - 47 | comando PONTO_E_VIRGULA . + 46 comandos: comando PONTO_E_VIRGULA • comandos + 47 | comando PONTO_E_VIRGULA • - T_BEGIN shift, and go to state 38 - IDENT shift, and go to state 45 - IF shift, and go to state 46 - NUMERO shift, and go to state 47 - READ shift, and go to state 48 - WRITE shift, and go to state 49 + T_BEGIN deslocar, e ir ao estado 38 + IDENT deslocar, e ir ao estado 45 + IF deslocar, e ir ao estado 46 + NUMERO deslocar, e ir ao estado 47 + READ deslocar, e ir ao estado 48 + WRITE deslocar, e ir ao estado 49 - T_END reduce using rule 47 (comandos) - T_END [reduce using rule 48 (comandos)] - WHILE reduce using rule 96 ($@22) - $default reduce using rule 47 (comandos) + T_END reduzir usando a regra 47 (comandos) + T_END [reduzir usando a regra 48 (comandos)] + WHILE reduzir usando a regra 96 ($@22) + $padrão reduzir usando a regra 47 (comandos) - comando_composto go to state 50 - comandos go to state 115 - comando go to state 52 - comando_sem_rotulo go to state 53 - atribuicao_ou_procedimento go to state 54 - leitura go to state 55 - escrita go to state 56 - numero go to state 57 - comando_repetitivo go to state 58 - $@22 go to state 59 - comando_condicional go to state 60 - if_then go to state 61 + comando_composto ir ao estado 50 + comandos ir ao estado 115 + comando ir ao estado 52 + comando_sem_rotulo ir ao estado 53 + atribuicao_ou_procedimento ir ao estado 54 + leitura ir ao estado 55 + escrita ir ao estado 56 + numero ir ao estado 57 + comando_repetitivo ir ao estado 58 + $@22 ir ao estado 59 + comando_condicional ir ao estado 60 + if_then ir ao estado 61 -State 80 +Estado 80 - 49 comando: numero DOIS_PONTOS . comando_sem_rotulo + 49 comando: numero DOIS_PONTOS • comando_sem_rotulo - T_BEGIN shift, and go to state 38 - IDENT shift, and go to state 45 - IF shift, and go to state 46 - READ shift, and go to state 48 - WRITE shift, and go to state 49 + T_BEGIN deslocar, e ir ao estado 38 + IDENT deslocar, e ir ao estado 45 + IF deslocar, e ir ao estado 46 + READ deslocar, e ir ao estado 48 + WRITE deslocar, e ir ao estado 49 - $default reduce using rule 96 ($@22) + $padrão reduzir usando a regra 96 ($@22) - comando_composto go to state 50 - comando_sem_rotulo go to state 116 - atribuicao_ou_procedimento go to state 54 - leitura go to state 55 - escrita go to state 56 - comando_repetitivo go to state 58 - $@22 go to state 59 - comando_condicional go to state 60 - if_then go to state 61 + comando_composto ir ao estado 50 + comando_sem_rotulo ir ao estado 116 + atribuicao_ou_procedimento ir ao estado 54 + leitura ir ao estado 55 + escrita ir ao estado 56 + comando_repetitivo ir ao estado 58 + $@22 ir ao estado 59 + comando_condicional ir ao estado 60 + if_then ir ao estado 61 -State 81 +Estado 81 - 98 comando_repetitivo: $@22 WHILE . expressao DO $@23 comando_sem_rotulo + 98 comando_repetitivo: $@22 WHILE • expressao DO $@23 comando_sem_rotulo - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + ABRE_PARENTESES deslocar, e ir ao estado 69 + IDENT deslocar, e ir ao estado 70 + NUMERO deslocar, e ir ao estado 71 - expressao go to state 117 - expressao_simples go to state 73 - termo go to state 74 - fator go to state 75 + expressao ir ao estado 117 + expressao_simples ir ao estado 73 + termo ir ao estado 74 + fator ir ao estado 75 -State 82 +Estado 82 - 100 cond_else: ELSE . comando_sem_rotulo + 100 cond_else: ELSE • comando_sem_rotulo - T_BEGIN shift, and go to state 38 - IDENT shift, and go to state 45 - IF shift, and go to state 46 - READ shift, and go to state 48 - WRITE shift, and go to state 49 + T_BEGIN deslocar, e ir ao estado 38 + IDENT deslocar, e ir ao estado 45 + IF deslocar, e ir ao estado 46 + READ deslocar, e ir ao estado 48 + WRITE deslocar, e ir ao estado 49 - $default reduce using rule 96 ($@22) + $padrão reduzir usando a regra 96 ($@22) - comando_composto go to state 50 - comando_sem_rotulo go to state 118 - atribuicao_ou_procedimento go to state 54 - leitura go to state 55 - escrita go to state 56 - comando_repetitivo go to state 58 - $@22 go to state 59 - comando_condicional go to state 60 - if_then go to state 61 + comando_composto ir ao estado 50 + comando_sem_rotulo ir ao estado 118 + atribuicao_ou_procedimento ir ao estado 54 + leitura ir ao estado 55 + escrita ir ao estado 56 + comando_repetitivo ir ao estado 58 + $@22 ir ao estado 59 + comando_condicional ir ao estado 60 + if_then ir ao estado 61 -State 83 +Estado 83 - 99 comando_condicional: if_then cond_else . + 99 comando_condicional: if_then cond_else • - $default reduce using rule 99 (comando_condicional) + $padrão reduzir usando a regra 99 (comando_condicional) -State 84 +Estado 84 - 16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo $@6 . PONTO_E_VIRGULA + 16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo $@6 • PONTO_E_VIRGULA - PONTO_E_VIRGULA shift, and go to state 119 + PONTO_E_VIRGULA deslocar, e ir ao estado 119 -State 85 +Estado 85 - 39 secao_pfs: VAR . $@14 lista_id_pf DOIS_PONTOS tipo + 39 secao_pfs: VAR • $@14 lista_id_pf DOIS_PONTOS tipo - $default reduce using rule 38 ($@14) + $padrão reduzir usando a regra 38 ($@14) - $@14 go to state 120 + $@14 ir ao estado 120 -State 86 +Estado 86 - 34 parametros_ou_nada: ABRE_PARENTESES $@12 paramentros_formais . $@13 FECHA_PARENTESES - 37 paramentros_formais: paramentros_formais . PONTO_E_VIRGULA secao_pfs + 34 parametros_ou_nada: ABRE_PARENTESES $@12 paramentros_formais • $@13 FECHA_PARENTESES + 37 paramentros_formais: paramentros_formais • PONTO_E_VIRGULA secao_pfs - PONTO_E_VIRGULA shift, and go to state 121 + PONTO_E_VIRGULA deslocar, e ir ao estado 121 - $default reduce using rule 33 ($@13) + $padrão reduzir usando a regra 33 ($@13) - $@13 go to state 122 + $@13 ir ao estado 122 -State 87 +Estado 87 - 36 paramentros_formais: secao_pfs . + 36 paramentros_formais: secao_pfs • - $default reduce using rule 36 (paramentros_formais) + $padrão reduzir usando a regra 36 (paramentros_formais) -State 88 +Estado 88 - 41 secao_pfs: $@15 . lista_id_pf DOIS_PONTOS tipo + 41 secao_pfs: $@15 • lista_id_pf DOIS_PONTOS tipo - IDENT shift, and go to state 123 + IDENT deslocar, e ir ao estado 123 - lista_id_pf go to state 124 - parametro go to state 125 + lista_id_pf ir ao estado 124 + parametro ir ao estado 125 -State 89 +Estado 89 - 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 . tipo PONTO_E_VIRGULA bloco $@11 PONTO_E_VIRGULA + 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 • tipo PONTO_E_VIRGULA bloco $@11 PONTO_E_VIRGULA - IDENT shift, and go to state 63 + IDENT deslocar, e ir ao estado 63 - tipo go to state 126 + tipo ir ao estado 126 -State 90 +Estado 90 - 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada PONTO_E_VIRGULA . bloco $@8 PONTO_E_VIRGULA + 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada PONTO_E_VIRGULA • bloco $@8 PONTO_E_VIRGULA - LABEL shift, and go to state 13 + LABEL deslocar, e ir ao estado 13 - $default reduce using rule 7 (parte_declara_rotulos) + $padrão reduzir usando a regra 7 (parte_declara_rotulos) - bloco go to state 127 - parte_declara_rotulos go to state 15 + bloco ir ao estado 127 + parte_declara_rotulos ir ao estado 15 -State 91 +Estado 91 - 58 atribuicao_ou_procedimento: IDENT $@16 atribuicao_ou_procedimento_token . + 58 atribuicao_ou_procedimento: IDENT $@16 atribuicao_ou_procedimento_token • - $default reduce using rule 58 (atribuicao_ou_procedimento) + $padrão reduzir usando a regra 58 (atribuicao_ou_procedimento) -State 92 +Estado 92 - 59 atribuicao_ou_procedimento_token: atribuicao . + 59 atribuicao_ou_procedimento_token: atribuicao • - $default reduce using rule 59 (atribuicao_ou_procedimento_token) + $padrão reduzir usando a regra 59 (atribuicao_ou_procedimento_token) -State 93 +Estado 93 - 62 atribuicao: $@17 . ATRIBUICAO expressao_simples + 62 atribuicao: $@17 • ATRIBUICAO expressao_simples - ATRIBUICAO shift, and go to state 128 + ATRIBUICAO deslocar, e ir ao estado 128 -State 94 +Estado 94 - 60 atribuicao_ou_procedimento_token: chamada_procedimento . + 60 atribuicao_ou_procedimento_token: chamada_procedimento • - $default reduce using rule 60 (atribuicao_ou_procedimento_token) + $padrão reduzir usando a regra 60 (atribuicao_ou_procedimento_token) -State 95 +Estado 95 - 64 chamada_procedimento: $@18 . lista_parametros + 64 chamada_procedimento: $@18 • lista_parametros - ABRE_PARENTESES shift, and go to state 129 + ABRE_PARENTESES deslocar, e ir ao estado 129 - $default reduce using rule 66 (lista_parametros) + $padrão reduzir usando a regra 66 (lista_parametros) - lista_parametros go to state 130 + lista_parametros ir ao estado 130 -State 96 +Estado 96 - 93 fator: ABRE_PARENTESES expressao . FECHA_PARENTESES + 93 fator: ABRE_PARENTESES expressao • FECHA_PARENTESES - FECHA_PARENTESES shift, and go to state 131 + FECHA_PARENTESES deslocar, e ir ao estado 131 -State 97 +Estado 97 - 78 expressao: expressao_simples . IGUAL expressao_simples - 79 | expressao_simples . DIFERENTE expressao_simples - 80 | expressao_simples . MENOR expressao_simples - 81 | expressao_simples . MENOR_IGUAL expressao_simples - 82 | expressao_simples . MAIOR expressao_simples - 83 | expressao_simples . MAIOR_IGUAL expressao_simples - 84 expressao_simples: expressao_simples . MAIS termo - 85 | expressao_simples . MENOS termo - 94 fator: ABRE_PARENTESES expressao_simples . FECHA_PARENTESES + 78 expressao: expressao_simples • IGUAL expressao_simples + 79 | expressao_simples • DIFERENTE expressao_simples + 80 | expressao_simples • MENOR expressao_simples + 81 | expressao_simples • MENOR_IGUAL expressao_simples + 82 | expressao_simples • MAIOR expressao_simples + 83 | expressao_simples • MAIOR_IGUAL expressao_simples + 84 expressao_simples: expressao_simples • MAIS termo + 85 | expressao_simples • MENOS termo + 94 fator: ABRE_PARENTESES expressao_simples • FECHA_PARENTESES - FECHA_PARENTESES shift, and go to state 132 - IGUAL shift, and go to state 100 - DIFERENTE shift, and go to state 101 - MENOR_IGUAL shift, and go to state 102 - MAIOR_IGUAL shift, and go to state 103 - MENOR shift, and go to state 104 - MAIOR shift, and go to state 105 - MAIS shift, and go to state 106 - MENOS shift, and go to state 107 + FECHA_PARENTESES deslocar, e ir ao estado 132 + IGUAL deslocar, e ir ao estado 100 + DIFERENTE deslocar, e ir ao estado 101 + MENOR_IGUAL deslocar, e ir ao estado 102 + MAIOR_IGUAL deslocar, e ir ao estado 103 + MENOR deslocar, e ir ao estado 104 + MAIOR deslocar, e ir ao estado 105 + MAIS deslocar, e ir ao estado 106 + MENOS deslocar, e ir ao estado 107 -State 98 +Estado 98 - 91 fator: IDENT $@21 . chamada_procedimento + 91 fator: IDENT $@21 • chamada_procedimento - $default reduce using rule 63 ($@18) + $padrão reduzir usando a regra 63 ($@18) - chamada_procedimento go to state 133 - $@18 go to state 95 + chamada_procedimento ir ao estado 133 + $@18 ir ao estado 95 -State 99 +Estado 99 - 103 if_then: IF expressao $@24 . THEN comando_sem_rotulo + 103 if_then: IF expressao $@24 • THEN comando_sem_rotulo - THEN shift, and go to state 134 + THEN deslocar, e ir ao estado 134 -State 100 +Estado 100 - 78 expressao: expressao_simples IGUAL . expressao_simples + 78 expressao: expressao_simples IGUAL • expressao_simples - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + ABRE_PARENTESES deslocar, e ir ao estado 69 + IDENT deslocar, e ir ao estado 70 + NUMERO deslocar, e ir ao estado 71 - expressao_simples go to state 135 - termo go to state 74 - fator go to state 75 + expressao_simples ir ao estado 135 + termo ir ao estado 74 + fator ir ao estado 75 -State 101 +Estado 101 - 79 expressao: expressao_simples DIFERENTE . expressao_simples + 79 expressao: expressao_simples DIFERENTE • expressao_simples - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + ABRE_PARENTESES deslocar, e ir ao estado 69 + IDENT deslocar, e ir ao estado 70 + NUMERO deslocar, e ir ao estado 71 - expressao_simples go to state 136 - termo go to state 74 - fator go to state 75 + expressao_simples ir ao estado 136 + termo ir ao estado 74 + fator ir ao estado 75 -State 102 +Estado 102 - 81 expressao: expressao_simples MENOR_IGUAL . expressao_simples + 81 expressao: expressao_simples MENOR_IGUAL • expressao_simples - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + ABRE_PARENTESES deslocar, e ir ao estado 69 + IDENT deslocar, e ir ao estado 70 + NUMERO deslocar, e ir ao estado 71 - expressao_simples go to state 137 - termo go to state 74 - fator go to state 75 + expressao_simples ir ao estado 137 + termo ir ao estado 74 + fator ir ao estado 75 -State 103 +Estado 103 - 83 expressao: expressao_simples MAIOR_IGUAL . expressao_simples + 83 expressao: expressao_simples MAIOR_IGUAL • expressao_simples - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + ABRE_PARENTESES deslocar, e ir ao estado 69 + IDENT deslocar, e ir ao estado 70 + NUMERO deslocar, e ir ao estado 71 - expressao_simples go to state 138 - termo go to state 74 - fator go to state 75 + expressao_simples ir ao estado 138 + termo ir ao estado 74 + fator ir ao estado 75 -State 104 +Estado 104 - 80 expressao: expressao_simples MENOR . expressao_simples + 80 expressao: expressao_simples MENOR • expressao_simples - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + ABRE_PARENTESES deslocar, e ir ao estado 69 + IDENT deslocar, e ir ao estado 70 + NUMERO deslocar, e ir ao estado 71 - expressao_simples go to state 139 - termo go to state 74 - fator go to state 75 + expressao_simples ir ao estado 139 + termo ir ao estado 74 + fator ir ao estado 75 -State 105 +Estado 105 - 82 expressao: expressao_simples MAIOR . expressao_simples + 82 expressao: expressao_simples MAIOR • expressao_simples - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + ABRE_PARENTESES deslocar, e ir ao estado 69 + IDENT deslocar, e ir ao estado 70 + NUMERO deslocar, e ir ao estado 71 - expressao_simples go to state 140 - termo go to state 74 - fator go to state 75 + expressao_simples ir ao estado 140 + termo ir ao estado 74 + fator ir ao estado 75 -State 106 +Estado 106 - 84 expressao_simples: expressao_simples MAIS . termo + 84 expressao_simples: expressao_simples MAIS • termo - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + ABRE_PARENTESES deslocar, e ir ao estado 69 + IDENT deslocar, e ir ao estado 70 + NUMERO deslocar, e ir ao estado 71 - termo go to state 141 - fator go to state 75 + termo ir ao estado 141 + fator ir ao estado 75 -State 107 +Estado 107 - 85 expressao_simples: expressao_simples MENOS . termo + 85 expressao_simples: expressao_simples MENOS • termo - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + ABRE_PARENTESES deslocar, e ir ao estado 69 + IDENT deslocar, e ir ao estado 70 + NUMERO deslocar, e ir ao estado 71 - termo go to state 142 - fator go to state 75 + termo ir ao estado 142 + fator ir ao estado 75 -State 108 +Estado 108 - 88 termo: termo DIV . fator + 88 termo: termo DIV • fator - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + ABRE_PARENTESES deslocar, e ir ao estado 69 + IDENT deslocar, e ir ao estado 70 + NUMERO deslocar, e ir ao estado 71 - fator go to state 143 + fator ir ao estado 143 -State 109 +Estado 109 - 87 termo: termo ASTERISCO . fator + 87 termo: termo ASTERISCO • fator - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + ABRE_PARENTESES deslocar, e ir ao estado 69 + IDENT deslocar, e ir ao estado 70 + NUMERO deslocar, e ir ao estado 71 - fator go to state 144 + fator ir ao estado 144 -State 110 +Estado 110 - 74 simb_leitura: IDENT . + 74 simb_leitura: IDENT • - $default reduce using rule 74 (simb_leitura) + $padrão reduzir usando a regra 74 (simb_leitura) -State 111 +Estado 111 - 71 leitura: READ ABRE_PARENTESES lista_leituras . FECHA_PARENTESES - 72 lista_leituras: lista_leituras . VIRGULA simb_leitura + 71 leitura: READ ABRE_PARENTESES lista_leituras • FECHA_PARENTESES + 72 lista_leituras: lista_leituras • VIRGULA simb_leitura - FECHA_PARENTESES shift, and go to state 145 - VIRGULA shift, and go to state 146 + FECHA_PARENTESES deslocar, e ir ao estado 145 + VIRGULA deslocar, e ir ao estado 146 -State 112 +Estado 112 - 73 lista_leituras: simb_leitura . + 73 lista_leituras: simb_leitura • - $default reduce using rule 73 (lista_leituras) + $padrão reduzir usando a regra 73 (lista_leituras) -State 113 +Estado 113 - 75 escrita: WRITE ABRE_PARENTESES lista_escritas . FECHA_PARENTESES - 76 lista_escritas: lista_escritas . VIRGULA expressao_simples + 75 escrita: WRITE ABRE_PARENTESES lista_escritas • FECHA_PARENTESES + 76 lista_escritas: lista_escritas • VIRGULA expressao_simples - FECHA_PARENTESES shift, and go to state 147 - VIRGULA shift, and go to state 148 + FECHA_PARENTESES deslocar, e ir ao estado 147 + VIRGULA deslocar, e ir ao estado 148 -State 114 +Estado 114 - 77 lista_escritas: expressao_simples . - 84 expressao_simples: expressao_simples . MAIS termo - 85 | expressao_simples . MENOS termo + 77 lista_escritas: expressao_simples • + 84 expressao_simples: expressao_simples • MAIS termo + 85 | expressao_simples • MENOS termo - MAIS shift, and go to state 106 - MENOS shift, and go to state 107 + MAIS deslocar, e ir ao estado 106 + MENOS deslocar, e ir ao estado 107 - $default reduce using rule 77 (lista_escritas) + $padrão reduzir usando a regra 77 (lista_escritas) -State 115 +Estado 115 - 46 comandos: comando PONTO_E_VIRGULA comandos . + 46 comandos: comando PONTO_E_VIRGULA comandos • - $default reduce using rule 46 (comandos) + $padrão reduzir usando a regra 46 (comandos) -State 116 +Estado 116 - 49 comando: numero DOIS_PONTOS comando_sem_rotulo . + 49 comando: numero DOIS_PONTOS comando_sem_rotulo • - $default reduce using rule 49 (comando) + $padrão reduzir usando a regra 49 (comando) -State 117 +Estado 117 - 98 comando_repetitivo: $@22 WHILE expressao . DO $@23 comando_sem_rotulo + 98 comando_repetitivo: $@22 WHILE expressao • DO $@23 comando_sem_rotulo - DO shift, and go to state 149 + DO deslocar, e ir ao estado 149 -State 118 +Estado 118 - 100 cond_else: ELSE comando_sem_rotulo . + 100 cond_else: ELSE comando_sem_rotulo • - $default reduce using rule 100 (cond_else) + $padrão reduzir usando a regra 100 (cond_else) -State 119 +Estado 119 - 16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo $@6 PONTO_E_VIRGULA . + 16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo $@6 PONTO_E_VIRGULA • - $default reduce using rule 16 (declara_var) + $padrão reduzir usando a regra 16 (declara_var) -State 120 +Estado 120 - 39 secao_pfs: VAR $@14 . lista_id_pf DOIS_PONTOS tipo + 39 secao_pfs: VAR $@14 • lista_id_pf DOIS_PONTOS tipo - IDENT shift, and go to state 123 + IDENT deslocar, e ir ao estado 123 - lista_id_pf go to state 150 - parametro go to state 125 + lista_id_pf ir ao estado 150 + parametro ir ao estado 125 -State 121 +Estado 121 - 37 paramentros_formais: paramentros_formais PONTO_E_VIRGULA . secao_pfs + 37 paramentros_formais: paramentros_formais PONTO_E_VIRGULA • secao_pfs - VAR shift, and go to state 85 + VAR deslocar, e ir ao estado 85 - $default reduce using rule 40 ($@15) + $padrão reduzir usando a regra 40 ($@15) - secao_pfs go to state 151 - $@15 go to state 88 + secao_pfs ir ao estado 151 + $@15 ir ao estado 88 -State 122 +Estado 122 - 34 parametros_ou_nada: ABRE_PARENTESES $@12 paramentros_formais $@13 . FECHA_PARENTESES + 34 parametros_ou_nada: ABRE_PARENTESES $@12 paramentros_formais $@13 • FECHA_PARENTESES - FECHA_PARENTESES shift, and go to state 152 + FECHA_PARENTESES deslocar, e ir ao estado 152 -State 123 +Estado 123 - 44 parametro: IDENT . + 44 parametro: IDENT • - $default reduce using rule 44 (parametro) + $padrão reduzir usando a regra 44 (parametro) -State 124 +Estado 124 - 41 secao_pfs: $@15 lista_id_pf . DOIS_PONTOS tipo + 41 secao_pfs: $@15 lista_id_pf • DOIS_PONTOS tipo - DOIS_PONTOS shift, and go to state 153 + DOIS_PONTOS deslocar, e ir ao estado 153 -State 125 +Estado 125 - 42 lista_id_pf: parametro . VIRGULA lista_id_pf - 43 | parametro . + 42 lista_id_pf: parametro • VIRGULA lista_id_pf + 43 | parametro • - VIRGULA shift, and go to state 154 + VIRGULA deslocar, e ir ao estado 154 - $default reduce using rule 43 (lista_id_pf) + $padrão reduzir usando a regra 43 (lista_id_pf) -State 126 +Estado 126 - 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo . PONTO_E_VIRGULA bloco $@11 PONTO_E_VIRGULA + 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo • PONTO_E_VIRGULA bloco $@11 PONTO_E_VIRGULA - PONTO_E_VIRGULA shift, and go to state 155 + PONTO_E_VIRGULA deslocar, e ir ao estado 155 -State 127 +Estado 127 - 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada PONTO_E_VIRGULA bloco . $@8 PONTO_E_VIRGULA + 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada PONTO_E_VIRGULA bloco • $@8 PONTO_E_VIRGULA - $default reduce using rule 26 ($@8) + $padrão reduzir usando a regra 26 ($@8) - $@8 go to state 156 + $@8 ir ao estado 156 -State 128 +Estado 128 - 62 atribuicao: $@17 ATRIBUICAO . expressao_simples + 62 atribuicao: $@17 ATRIBUICAO • expressao_simples - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + ABRE_PARENTESES deslocar, e ir ao estado 69 + IDENT deslocar, e ir ao estado 70 + NUMERO deslocar, e ir ao estado 71 - expressao_simples go to state 157 - termo go to state 74 - fator go to state 75 + expressao_simples ir ao estado 157 + termo ir ao estado 74 + fator ir ao estado 75 -State 129 +Estado 129 - 65 lista_parametros: ABRE_PARENTESES . lista_parametros_parenteses FECHA_PARENTESES + 65 lista_parametros: ABRE_PARENTESES • lista_parametros_parenteses FECHA_PARENTESES - $default reduce using rule 69 ($@20) + $padrão reduzir usando a regra 69 ($@20) - lista_parametros_parenteses go to state 158 - $@20 go to state 159 + lista_parametros_parenteses ir ao estado 158 + $@20 ir ao estado 159 -State 130 +Estado 130 - 64 chamada_procedimento: $@18 lista_parametros . + 64 chamada_procedimento: $@18 lista_parametros • - $default reduce using rule 64 (chamada_procedimento) + $padrão reduzir usando a regra 64 (chamada_procedimento) -State 131 +Estado 131 - 93 fator: ABRE_PARENTESES expressao FECHA_PARENTESES . + 93 fator: ABRE_PARENTESES expressao FECHA_PARENTESES • - $default reduce using rule 93 (fator) + $padrão reduzir usando a regra 93 (fator) -State 132 +Estado 132 - 94 fator: ABRE_PARENTESES expressao_simples FECHA_PARENTESES . + 94 fator: ABRE_PARENTESES expressao_simples FECHA_PARENTESES • - $default reduce using rule 94 (fator) + $padrão reduzir usando a regra 94 (fator) -State 133 +Estado 133 - 91 fator: IDENT $@21 chamada_procedimento . + 91 fator: IDENT $@21 chamada_procedimento • - $default reduce using rule 91 (fator) + $padrão reduzir usando a regra 91 (fator) -State 134 +Estado 134 - 103 if_then: IF expressao $@24 THEN . comando_sem_rotulo + 103 if_then: IF expressao $@24 THEN • comando_sem_rotulo - T_BEGIN shift, and go to state 38 - IDENT shift, and go to state 45 - IF shift, and go to state 46 - READ shift, and go to state 48 - WRITE shift, and go to state 49 + T_BEGIN deslocar, e ir ao estado 38 + IDENT deslocar, e ir ao estado 45 + IF deslocar, e ir ao estado 46 + READ deslocar, e ir ao estado 48 + WRITE deslocar, e ir ao estado 49 - $default reduce using rule 96 ($@22) + $padrão reduzir usando a regra 96 ($@22) - comando_composto go to state 50 - comando_sem_rotulo go to state 160 - atribuicao_ou_procedimento go to state 54 - leitura go to state 55 - escrita go to state 56 - comando_repetitivo go to state 58 - $@22 go to state 59 - comando_condicional go to state 60 - if_then go to state 61 + comando_composto ir ao estado 50 + comando_sem_rotulo ir ao estado 160 + atribuicao_ou_procedimento ir ao estado 54 + leitura ir ao estado 55 + escrita ir ao estado 56 + comando_repetitivo ir ao estado 58 + $@22 ir ao estado 59 + comando_condicional ir ao estado 60 + if_then ir ao estado 61 -State 135 +Estado 135 - 78 expressao: expressao_simples IGUAL expressao_simples . - 84 expressao_simples: expressao_simples . MAIS termo - 85 | expressao_simples . MENOS termo + 78 expressao: expressao_simples IGUAL expressao_simples • + 84 expressao_simples: expressao_simples • MAIS termo + 85 | expressao_simples • MENOS termo - MAIS shift, and go to state 106 - MENOS shift, and go to state 107 + MAIS deslocar, e ir ao estado 106 + MENOS deslocar, e ir ao estado 107 - $default reduce using rule 78 (expressao) + $padrão reduzir usando a regra 78 (expressao) -State 136 +Estado 136 - 79 expressao: expressao_simples DIFERENTE expressao_simples . - 84 expressao_simples: expressao_simples . MAIS termo - 85 | expressao_simples . MENOS termo + 79 expressao: expressao_simples DIFERENTE expressao_simples • + 84 expressao_simples: expressao_simples • MAIS termo + 85 | expressao_simples • MENOS termo - MAIS shift, and go to state 106 - MENOS shift, and go to state 107 + MAIS deslocar, e ir ao estado 106 + MENOS deslocar, e ir ao estado 107 - $default reduce using rule 79 (expressao) + $padrão reduzir usando a regra 79 (expressao) -State 137 +Estado 137 - 81 expressao: expressao_simples MENOR_IGUAL expressao_simples . - 84 expressao_simples: expressao_simples . MAIS termo - 85 | expressao_simples . MENOS termo + 81 expressao: expressao_simples MENOR_IGUAL expressao_simples • + 84 expressao_simples: expressao_simples • MAIS termo + 85 | expressao_simples • MENOS termo - MAIS shift, and go to state 106 - MENOS shift, and go to state 107 + MAIS deslocar, e ir ao estado 106 + MENOS deslocar, e ir ao estado 107 - $default reduce using rule 81 (expressao) + $padrão reduzir usando a regra 81 (expressao) -State 138 +Estado 138 - 83 expressao: expressao_simples MAIOR_IGUAL expressao_simples . - 84 expressao_simples: expressao_simples . MAIS termo - 85 | expressao_simples . MENOS termo + 83 expressao: expressao_simples MAIOR_IGUAL expressao_simples • + 84 expressao_simples: expressao_simples • MAIS termo + 85 | expressao_simples • MENOS termo - MAIS shift, and go to state 106 - MENOS shift, and go to state 107 + MAIS deslocar, e ir ao estado 106 + MENOS deslocar, e ir ao estado 107 - $default reduce using rule 83 (expressao) + $padrão reduzir usando a regra 83 (expressao) -State 139 +Estado 139 - 80 expressao: expressao_simples MENOR expressao_simples . - 84 expressao_simples: expressao_simples . MAIS termo - 85 | expressao_simples . MENOS termo + 80 expressao: expressao_simples MENOR expressao_simples • + 84 expressao_simples: expressao_simples • MAIS termo + 85 | expressao_simples • MENOS termo - MAIS shift, and go to state 106 - MENOS shift, and go to state 107 + MAIS deslocar, e ir ao estado 106 + MENOS deslocar, e ir ao estado 107 - $default reduce using rule 80 (expressao) + $padrão reduzir usando a regra 80 (expressao) -State 140 +Estado 140 - 82 expressao: expressao_simples MAIOR expressao_simples . - 84 expressao_simples: expressao_simples . MAIS termo - 85 | expressao_simples . MENOS termo + 82 expressao: expressao_simples MAIOR expressao_simples • + 84 expressao_simples: expressao_simples • MAIS termo + 85 | expressao_simples • MENOS termo - MAIS shift, and go to state 106 - MENOS shift, and go to state 107 + MAIS deslocar, e ir ao estado 106 + MENOS deslocar, e ir ao estado 107 - $default reduce using rule 82 (expressao) + $padrão reduzir usando a regra 82 (expressao) -State 141 +Estado 141 - 84 expressao_simples: expressao_simples MAIS termo . - 87 termo: termo . ASTERISCO fator - 88 | termo . DIV fator + 84 expressao_simples: expressao_simples MAIS termo • + 87 termo: termo • ASTERISCO fator + 88 | termo • DIV fator - DIV shift, and go to state 108 - ASTERISCO shift, and go to state 109 + DIV deslocar, e ir ao estado 108 + ASTERISCO deslocar, e ir ao estado 109 - $default reduce using rule 84 (expressao_simples) + $padrão reduzir usando a regra 84 (expressao_simples) -State 142 +Estado 142 - 85 expressao_simples: expressao_simples MENOS termo . - 87 termo: termo . ASTERISCO fator - 88 | termo . DIV fator + 85 expressao_simples: expressao_simples MENOS termo • + 87 termo: termo • ASTERISCO fator + 88 | termo • DIV fator - DIV shift, and go to state 108 - ASTERISCO shift, and go to state 109 + DIV deslocar, e ir ao estado 108 + ASTERISCO deslocar, e ir ao estado 109 - $default reduce using rule 85 (expressao_simples) + $padrão reduzir usando a regra 85 (expressao_simples) -State 143 +Estado 143 - 88 termo: termo DIV fator . + 88 termo: termo DIV fator • - $default reduce using rule 88 (termo) + $padrão reduzir usando a regra 88 (termo) -State 144 +Estado 144 - 87 termo: termo ASTERISCO fator . + 87 termo: termo ASTERISCO fator • - $default reduce using rule 87 (termo) + $padrão reduzir usando a regra 87 (termo) -State 145 +Estado 145 - 71 leitura: READ ABRE_PARENTESES lista_leituras FECHA_PARENTESES . + 71 leitura: READ ABRE_PARENTESES lista_leituras FECHA_PARENTESES • - $default reduce using rule 71 (leitura) + $padrão reduzir usando a regra 71 (leitura) -State 146 +Estado 146 - 72 lista_leituras: lista_leituras VIRGULA . simb_leitura + 72 lista_leituras: lista_leituras VIRGULA • simb_leitura - IDENT shift, and go to state 110 + IDENT deslocar, e ir ao estado 110 - simb_leitura go to state 161 + simb_leitura ir ao estado 161 -State 147 +Estado 147 - 75 escrita: WRITE ABRE_PARENTESES lista_escritas FECHA_PARENTESES . + 75 escrita: WRITE ABRE_PARENTESES lista_escritas FECHA_PARENTESES • - $default reduce using rule 75 (escrita) + $padrão reduzir usando a regra 75 (escrita) -State 148 +Estado 148 - 76 lista_escritas: lista_escritas VIRGULA . expressao_simples + 76 lista_escritas: lista_escritas VIRGULA • expressao_simples - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + ABRE_PARENTESES deslocar, e ir ao estado 69 + IDENT deslocar, e ir ao estado 70 + NUMERO deslocar, e ir ao estado 71 - expressao_simples go to state 162 - termo go to state 74 - fator go to state 75 + expressao_simples ir ao estado 162 + termo ir ao estado 74 + fator ir ao estado 75 -State 149 +Estado 149 - 98 comando_repetitivo: $@22 WHILE expressao DO . $@23 comando_sem_rotulo + 98 comando_repetitivo: $@22 WHILE expressao DO • $@23 comando_sem_rotulo - $default reduce using rule 97 ($@23) + $padrão reduzir usando a regra 97 ($@23) - $@23 go to state 163 + $@23 ir ao estado 163 -State 150 +Estado 150 - 39 secao_pfs: VAR $@14 lista_id_pf . DOIS_PONTOS tipo + 39 secao_pfs: VAR $@14 lista_id_pf • DOIS_PONTOS tipo - DOIS_PONTOS shift, and go to state 164 + DOIS_PONTOS deslocar, e ir ao estado 164 -State 151 +Estado 151 - 37 paramentros_formais: paramentros_formais PONTO_E_VIRGULA secao_pfs . + 37 paramentros_formais: paramentros_formais PONTO_E_VIRGULA secao_pfs • - $default reduce using rule 37 (paramentros_formais) + $padrão reduzir usando a regra 37 (paramentros_formais) -State 152 +Estado 152 - 34 parametros_ou_nada: ABRE_PARENTESES $@12 paramentros_formais $@13 FECHA_PARENTESES . + 34 parametros_ou_nada: ABRE_PARENTESES $@12 paramentros_formais $@13 FECHA_PARENTESES • - $default reduce using rule 34 (parametros_ou_nada) + $padrão reduzir usando a regra 34 (parametros_ou_nada) -State 153 +Estado 153 - 41 secao_pfs: $@15 lista_id_pf DOIS_PONTOS . tipo + 41 secao_pfs: $@15 lista_id_pf DOIS_PONTOS • tipo - IDENT shift, and go to state 63 + IDENT deslocar, e ir ao estado 63 - tipo go to state 165 + tipo ir ao estado 165 -State 154 +Estado 154 - 42 lista_id_pf: parametro VIRGULA . lista_id_pf + 42 lista_id_pf: parametro VIRGULA • lista_id_pf - IDENT shift, and go to state 123 + IDENT deslocar, e ir ao estado 123 - lista_id_pf go to state 166 - parametro go to state 125 + lista_id_pf ir ao estado 166 + parametro ir ao estado 125 -State 155 +Estado 155 - 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA . bloco $@11 PONTO_E_VIRGULA + 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA • bloco $@11 PONTO_E_VIRGULA - LABEL shift, and go to state 13 + LABEL deslocar, e ir ao estado 13 - $default reduce using rule 7 (parte_declara_rotulos) + $padrão reduzir usando a regra 7 (parte_declara_rotulos) - bloco go to state 167 - parte_declara_rotulos go to state 15 + bloco ir ao estado 167 + parte_declara_rotulos ir ao estado 15 -State 156 +Estado 156 - 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada PONTO_E_VIRGULA bloco $@8 . PONTO_E_VIRGULA + 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada PONTO_E_VIRGULA bloco $@8 • PONTO_E_VIRGULA - PONTO_E_VIRGULA shift, and go to state 168 + PONTO_E_VIRGULA deslocar, e ir ao estado 168 -State 157 +Estado 157 - 62 atribuicao: $@17 ATRIBUICAO expressao_simples . - 84 expressao_simples: expressao_simples . MAIS termo - 85 | expressao_simples . MENOS termo + 62 atribuicao: $@17 ATRIBUICAO expressao_simples • + 84 expressao_simples: expressao_simples • MAIS termo + 85 | expressao_simples • MENOS termo - MAIS shift, and go to state 106 - MENOS shift, and go to state 107 + MAIS deslocar, e ir ao estado 106 + MENOS deslocar, e ir ao estado 107 - $default reduce using rule 62 (atribuicao) + $padrão reduzir usando a regra 62 (atribuicao) -State 158 +Estado 158 - 65 lista_parametros: ABRE_PARENTESES lista_parametros_parenteses . FECHA_PARENTESES - 68 lista_parametros_parenteses: lista_parametros_parenteses . VIRGULA $@19 expressao_simples + 65 lista_parametros: ABRE_PARENTESES lista_parametros_parenteses • FECHA_PARENTESES + 68 lista_parametros_parenteses: lista_parametros_parenteses • VIRGULA $@19 expressao_simples - FECHA_PARENTESES shift, and go to state 169 - VIRGULA shift, and go to state 170 + FECHA_PARENTESES deslocar, e ir ao estado 169 + VIRGULA deslocar, e ir ao estado 170 -State 159 +Estado 159 - 70 lista_parametros_parenteses: $@20 . expressao_simples + 70 lista_parametros_parenteses: $@20 • expressao_simples - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + ABRE_PARENTESES deslocar, e ir ao estado 69 + IDENT deslocar, e ir ao estado 70 + NUMERO deslocar, e ir ao estado 71 - expressao_simples go to state 171 - termo go to state 74 - fator go to state 75 + expressao_simples ir ao estado 171 + termo ir ao estado 74 + fator ir ao estado 75 -State 160 +Estado 160 - 103 if_then: IF expressao $@24 THEN comando_sem_rotulo . + 103 if_then: IF expressao $@24 THEN comando_sem_rotulo • - $default reduce using rule 103 (if_then) + $padrão reduzir usando a regra 103 (if_then) -State 161 +Estado 161 - 72 lista_leituras: lista_leituras VIRGULA simb_leitura . + 72 lista_leituras: lista_leituras VIRGULA simb_leitura • - $default reduce using rule 72 (lista_leituras) + $padrão reduzir usando a regra 72 (lista_leituras) -State 162 +Estado 162 - 76 lista_escritas: lista_escritas VIRGULA expressao_simples . - 84 expressao_simples: expressao_simples . MAIS termo - 85 | expressao_simples . MENOS termo + 76 lista_escritas: lista_escritas VIRGULA expressao_simples • + 84 expressao_simples: expressao_simples • MAIS termo + 85 | expressao_simples • MENOS termo - MAIS shift, and go to state 106 - MENOS shift, and go to state 107 + MAIS deslocar, e ir ao estado 106 + MENOS deslocar, e ir ao estado 107 - $default reduce using rule 76 (lista_escritas) + $padrão reduzir usando a regra 76 (lista_escritas) -State 163 +Estado 163 - 98 comando_repetitivo: $@22 WHILE expressao DO $@23 . comando_sem_rotulo + 98 comando_repetitivo: $@22 WHILE expressao DO $@23 • comando_sem_rotulo - T_BEGIN shift, and go to state 38 - IDENT shift, and go to state 45 - IF shift, and go to state 46 - READ shift, and go to state 48 - WRITE shift, and go to state 49 + T_BEGIN deslocar, e ir ao estado 38 + IDENT deslocar, e ir ao estado 45 + IF deslocar, e ir ao estado 46 + READ deslocar, e ir ao estado 48 + WRITE deslocar, e ir ao estado 49 - $default reduce using rule 96 ($@22) + $padrão reduzir usando a regra 96 ($@22) - comando_composto go to state 50 - comando_sem_rotulo go to state 172 - atribuicao_ou_procedimento go to state 54 - leitura go to state 55 - escrita go to state 56 - comando_repetitivo go to state 58 - $@22 go to state 59 - comando_condicional go to state 60 - if_then go to state 61 + comando_composto ir ao estado 50 + comando_sem_rotulo ir ao estado 172 + atribuicao_ou_procedimento ir ao estado 54 + leitura ir ao estado 55 + escrita ir ao estado 56 + comando_repetitivo ir ao estado 58 + $@22 ir ao estado 59 + comando_condicional ir ao estado 60 + if_then ir ao estado 61 -State 164 +Estado 164 - 39 secao_pfs: VAR $@14 lista_id_pf DOIS_PONTOS . tipo + 39 secao_pfs: VAR $@14 lista_id_pf DOIS_PONTOS • tipo - IDENT shift, and go to state 63 + IDENT deslocar, e ir ao estado 63 - tipo go to state 173 + tipo ir ao estado 173 -State 165 +Estado 165 - 41 secao_pfs: $@15 lista_id_pf DOIS_PONTOS tipo . + 41 secao_pfs: $@15 lista_id_pf DOIS_PONTOS tipo • - $default reduce using rule 41 (secao_pfs) + $padrão reduzir usando a regra 41 (secao_pfs) -State 166 +Estado 166 - 42 lista_id_pf: parametro VIRGULA lista_id_pf . + 42 lista_id_pf: parametro VIRGULA lista_id_pf • - $default reduce using rule 42 (lista_id_pf) + $padrão reduzir usando a regra 42 (lista_id_pf) -State 167 +Estado 167 - 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA bloco . $@11 PONTO_E_VIRGULA + 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA bloco • $@11 PONTO_E_VIRGULA - $default reduce using rule 30 ($@11) + $padrão reduzir usando a regra 30 ($@11) - $@11 go to state 174 + $@11 ir ao estado 174 -State 168 +Estado 168 - 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada PONTO_E_VIRGULA bloco $@8 PONTO_E_VIRGULA . + 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada PONTO_E_VIRGULA bloco $@8 PONTO_E_VIRGULA • - $default reduce using rule 27 (declaracao_procedimento) + $padrão reduzir usando a regra 27 (declaracao_procedimento) -State 169 +Estado 169 - 65 lista_parametros: ABRE_PARENTESES lista_parametros_parenteses FECHA_PARENTESES . + 65 lista_parametros: ABRE_PARENTESES lista_parametros_parenteses FECHA_PARENTESES • - $default reduce using rule 65 (lista_parametros) + $padrão reduzir usando a regra 65 (lista_parametros) -State 170 +Estado 170 - 68 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA . $@19 expressao_simples + 68 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA • $@19 expressao_simples - $default reduce using rule 67 ($@19) + $padrão reduzir usando a regra 67 ($@19) - $@19 go to state 175 + $@19 ir ao estado 175 -State 171 +Estado 171 - 70 lista_parametros_parenteses: $@20 expressao_simples . - 84 expressao_simples: expressao_simples . MAIS termo - 85 | expressao_simples . MENOS termo + 70 lista_parametros_parenteses: $@20 expressao_simples • + 84 expressao_simples: expressao_simples • MAIS termo + 85 | expressao_simples • MENOS termo - MAIS shift, and go to state 106 - MENOS shift, and go to state 107 + MAIS deslocar, e ir ao estado 106 + MENOS deslocar, e ir ao estado 107 - $default reduce using rule 70 (lista_parametros_parenteses) + $padrão reduzir usando a regra 70 (lista_parametros_parenteses) -State 172 +Estado 172 - 98 comando_repetitivo: $@22 WHILE expressao DO $@23 comando_sem_rotulo . + 98 comando_repetitivo: $@22 WHILE expressao DO $@23 comando_sem_rotulo • - $default reduce using rule 98 (comando_repetitivo) + $padrão reduzir usando a regra 98 (comando_repetitivo) -State 173 +Estado 173 - 39 secao_pfs: VAR $@14 lista_id_pf DOIS_PONTOS tipo . + 39 secao_pfs: VAR $@14 lista_id_pf DOIS_PONTOS tipo • - $default reduce using rule 39 (secao_pfs) + $padrão reduzir usando a regra 39 (secao_pfs) -State 174 +Estado 174 - 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA bloco $@11 . PONTO_E_VIRGULA + 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA bloco $@11 • PONTO_E_VIRGULA - PONTO_E_VIRGULA shift, and go to state 176 + PONTO_E_VIRGULA deslocar, e ir ao estado 176 -State 175 +Estado 175 - 68 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA $@19 . expressao_simples + 68 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA $@19 • expressao_simples - ABRE_PARENTESES shift, and go to state 69 - IDENT shift, and go to state 70 - NUMERO shift, and go to state 71 + ABRE_PARENTESES deslocar, e ir ao estado 69 + IDENT deslocar, e ir ao estado 70 + NUMERO deslocar, e ir ao estado 71 - expressao_simples go to state 177 - termo go to state 74 - fator go to state 75 + expressao_simples ir ao estado 177 + termo ir ao estado 74 + fator ir ao estado 75 -State 176 +Estado 176 - 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA bloco $@11 PONTO_E_VIRGULA . + 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA bloco $@11 PONTO_E_VIRGULA • - $default reduce using rule 31 (declaracao_funcao) + $padrão reduzir usando a regra 31 (declaracao_funcao) -State 177 +Estado 177 - 68 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA $@19 expressao_simples . - 84 expressao_simples: expressao_simples . MAIS termo - 85 | expressao_simples . MENOS termo + 68 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA $@19 expressao_simples • + 84 expressao_simples: expressao_simples • MAIS termo + 85 | expressao_simples • MENOS termo - MAIS shift, and go to state 106 - MENOS shift, and go to state 107 + MAIS deslocar, e ir ao estado 106 + MENOS deslocar, e ir ao estado 107 - $default reduce using rule 68 (lista_parametros_parenteses) + $padrão reduzir usando a regra 68 (lista_parametros_parenteses) diff --git a/ORIGNAL/compilador.tab.c b/ORIGNAL/compilador.tab.c index c25b2f4..78e7507 100644 --- a/ORIGNAL/compilador.tab.c +++ b/ORIGNAL/compilador.tab.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.5.1. */ +/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ + along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -34,6 +34,10 @@ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. @@ -41,14 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - -/* Identify Bison output. */ -#define YYBISON 1 +/* Identify Bison output, and Bison version. */ +#define YYBISON 30802 -/* Bison version. */ -#define YYBISON_VERSION "3.5.1" +/* Bison version string. */ +#define YYBISON_VERSION "3.8.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -92,7 +93,7 @@ int val_ou_ref; int atr_indireto; -#line 96 "compilador.tab.c" +#line 97 "compilador.tab.c" # ifndef YY_CAST # ifdef __cplusplus @@ -115,87 +116,124 @@ int atr_indireto; # endif # endif -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - -/* Use api.header.include to #include this header - instead of duplicating it here. */ -#ifndef YY_YY_COMPILADOR_TAB_H_INCLUDED -# define YY_YY_COMPILADOR_TAB_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token type. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - PROGRAM = 258, - ABRE_PARENTESES = 259, - FECHA_PARENTESES = 260, - VIRGULA = 261, - PONTO_E_VIRGULA = 262, - DOIS_PONTOS = 263, - PONTO = 264, - T_BEGIN = 265, - T_END = 266, - VAR = 267, - IDENT = 268, - ATRIBUICAO = 269, - LABEL = 270, - TYPE = 271, - ARRAY = 272, - PROCEDURE = 273, - FUNCTION = 274, - GOTO = 275, - IF = 276, - THEN = 277, - ELSE = 278, - WHILE = 279, - DO = 280, - OR = 281, - DIV = 282, - AND = 283, - NOT = 284, - IGUAL = 285, - DIFERENTE = 286, - MENOR_IGUAL = 287, - MAIOR_IGUAL = 288, - MENOR = 289, - MAIOR = 290, - MAIS = 291, - MENOS = 292, - ASTERISCO = 293, - NUMERO = 294, - READ = 295, - WRITE = 296, - LOWER_THAN_ELSE = 297 - }; -#endif - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef int YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - - -extern YYSTYPE yylval; - -int yyparse (void); +#include "compilador.tab.h" +/* Symbol kind. */ +enum yysymbol_kind_t +{ + YYSYMBOL_YYEMPTY = -2, + YYSYMBOL_YYEOF = 0, /* "end of file" */ + YYSYMBOL_YYerror = 1, /* error */ + YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ + YYSYMBOL_PROGRAM = 3, /* PROGRAM */ + YYSYMBOL_ABRE_PARENTESES = 4, /* ABRE_PARENTESES */ + YYSYMBOL_FECHA_PARENTESES = 5, /* FECHA_PARENTESES */ + YYSYMBOL_VIRGULA = 6, /* VIRGULA */ + YYSYMBOL_PONTO_E_VIRGULA = 7, /* PONTO_E_VIRGULA */ + YYSYMBOL_DOIS_PONTOS = 8, /* DOIS_PONTOS */ + YYSYMBOL_PONTO = 9, /* PONTO */ + YYSYMBOL_T_BEGIN = 10, /* T_BEGIN */ + YYSYMBOL_T_END = 11, /* T_END */ + YYSYMBOL_VAR = 12, /* VAR */ + YYSYMBOL_IDENT = 13, /* IDENT */ + YYSYMBOL_ATRIBUICAO = 14, /* ATRIBUICAO */ + YYSYMBOL_LABEL = 15, /* LABEL */ + YYSYMBOL_TYPE = 16, /* TYPE */ + YYSYMBOL_ARRAY = 17, /* ARRAY */ + YYSYMBOL_PROCEDURE = 18, /* PROCEDURE */ + YYSYMBOL_FUNCTION = 19, /* FUNCTION */ + YYSYMBOL_GOTO = 20, /* GOTO */ + YYSYMBOL_IF = 21, /* IF */ + YYSYMBOL_THEN = 22, /* THEN */ + YYSYMBOL_ELSE = 23, /* ELSE */ + YYSYMBOL_WHILE = 24, /* WHILE */ + YYSYMBOL_DO = 25, /* DO */ + YYSYMBOL_OR = 26, /* OR */ + YYSYMBOL_DIV = 27, /* DIV */ + YYSYMBOL_AND = 28, /* AND */ + YYSYMBOL_NOT = 29, /* NOT */ + YYSYMBOL_IGUAL = 30, /* IGUAL */ + YYSYMBOL_DIFERENTE = 31, /* DIFERENTE */ + YYSYMBOL_MENOR_IGUAL = 32, /* MENOR_IGUAL */ + YYSYMBOL_MAIOR_IGUAL = 33, /* MAIOR_IGUAL */ + YYSYMBOL_MENOR = 34, /* MENOR */ + YYSYMBOL_MAIOR = 35, /* MAIOR */ + YYSYMBOL_MAIS = 36, /* MAIS */ + YYSYMBOL_MENOS = 37, /* MENOS */ + YYSYMBOL_ASTERISCO = 38, /* ASTERISCO */ + YYSYMBOL_NUMERO = 39, /* NUMERO */ + YYSYMBOL_READ = 40, /* READ */ + YYSYMBOL_WRITE = 41, /* WRITE */ + YYSYMBOL_LOWER_THAN_ELSE = 42, /* LOWER_THAN_ELSE */ + YYSYMBOL_YYACCEPT = 43, /* $accept */ + YYSYMBOL_programa = 44, /* programa */ + YYSYMBOL_45_1 = 45, /* $@1 */ + YYSYMBOL_bloco = 46, /* bloco */ + YYSYMBOL_47_2 = 47, /* $@2 */ + YYSYMBOL_48_3 = 48, /* $@3 */ + YYSYMBOL_parte_declara_rotulos = 49, /* parte_declara_rotulos */ + YYSYMBOL_parte_declara_vars = 50, /* parte_declara_vars */ + YYSYMBOL_var = 51, /* var */ + YYSYMBOL_52_4 = 52, /* $@4 */ + YYSYMBOL_declara_vars = 53, /* declara_vars */ + YYSYMBOL_declara_var = 54, /* declara_var */ + YYSYMBOL_55_5 = 55, /* $@5 */ + YYSYMBOL_56_6 = 56, /* $@6 */ + YYSYMBOL_tipo = 57, /* tipo */ + YYSYMBOL_lista_id_var = 58, /* lista_id_var */ + YYSYMBOL_lista_idents = 59, /* lista_idents */ + YYSYMBOL_parte_declara_subrotinas = 60, /* parte_declara_subrotinas */ + YYSYMBOL_declaracao_procedimento = 61, /* declaracao_procedimento */ + YYSYMBOL_62_7 = 62, /* $@7 */ + YYSYMBOL_63_8 = 63, /* $@8 */ + YYSYMBOL_declaracao_funcao = 64, /* declaracao_funcao */ + YYSYMBOL_65_9 = 65, /* $@9 */ + YYSYMBOL_66_10 = 66, /* $@10 */ + YYSYMBOL_67_11 = 67, /* $@11 */ + YYSYMBOL_parametros_ou_nada = 68, /* parametros_ou_nada */ + YYSYMBOL_69_12 = 69, /* $@12 */ + YYSYMBOL_70_13 = 70, /* $@13 */ + YYSYMBOL_paramentros_formais = 71, /* paramentros_formais */ + YYSYMBOL_secao_pfs = 72, /* secao_pfs */ + YYSYMBOL_73_14 = 73, /* $@14 */ + YYSYMBOL_74_15 = 74, /* $@15 */ + YYSYMBOL_lista_id_pf = 75, /* lista_id_pf */ + YYSYMBOL_parametro = 76, /* parametro */ + YYSYMBOL_comando_composto = 77, /* comando_composto */ + YYSYMBOL_comandos = 78, /* comandos */ + YYSYMBOL_comando = 79, /* comando */ + YYSYMBOL_comando_sem_rotulo = 80, /* comando_sem_rotulo */ + YYSYMBOL_atribuicao_ou_procedimento = 81, /* atribuicao_ou_procedimento */ + YYSYMBOL_82_16 = 82, /* $@16 */ + YYSYMBOL_atribuicao_ou_procedimento_token = 83, /* atribuicao_ou_procedimento_token */ + YYSYMBOL_atribuicao = 84, /* atribuicao */ + YYSYMBOL_85_17 = 85, /* $@17 */ + YYSYMBOL_chamada_procedimento = 86, /* chamada_procedimento */ + YYSYMBOL_87_18 = 87, /* $@18 */ + YYSYMBOL_lista_parametros = 88, /* lista_parametros */ + YYSYMBOL_lista_parametros_parenteses = 89, /* lista_parametros_parenteses */ + YYSYMBOL_90_19 = 90, /* $@19 */ + YYSYMBOL_91_20 = 91, /* $@20 */ + YYSYMBOL_leitura = 92, /* leitura */ + YYSYMBOL_lista_leituras = 93, /* lista_leituras */ + YYSYMBOL_simb_leitura = 94, /* simb_leitura */ + YYSYMBOL_escrita = 95, /* escrita */ + YYSYMBOL_lista_escritas = 96, /* lista_escritas */ + YYSYMBOL_expressao = 97, /* expressao */ + YYSYMBOL_expressao_simples = 98, /* expressao_simples */ + YYSYMBOL_termo = 99, /* termo */ + YYSYMBOL_fator = 100, /* fator */ + YYSYMBOL_101_21 = 101, /* $@21 */ + YYSYMBOL_numero = 102, /* numero */ + YYSYMBOL_comando_repetitivo = 103, /* comando_repetitivo */ + YYSYMBOL_104_22 = 104, /* $@22 */ + YYSYMBOL_105_23 = 105, /* $@23 */ + YYSYMBOL_comando_condicional = 106, /* comando_condicional */ + YYSYMBOL_cond_else = 107, /* cond_else */ + YYSYMBOL_if_then = 108, /* if_then */ + YYSYMBOL_109_24 = 109 /* $@24 */ +}; +typedef enum yysymbol_kind_t yysymbol_kind_t; -#endif /* !YY_YY_COMPILADOR_TAB_H_INCLUDED */ @@ -236,6 +274,18 @@ typedef int_least16_t yytype_int16; typedef short yytype_int16; #endif +/* Work around bug in HP-UX 11.23, which defines these macros + incorrectly for preprocessor constants. This workaround can likely + be removed in 2023, as HPE has promised support for HP-UX 11.23 + (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of + <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */ +#ifdef __hpux +# undef UINT_LEAST8_MAX +# undef UINT_LEAST16_MAX +# define UINT_LEAST8_MAX 255 +# define UINT_LEAST16_MAX 65535 +#endif + #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ typedef __UINT_LEAST8_TYPE__ yytype_uint8; #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ @@ -295,6 +345,7 @@ typedef int yytype_uint16; #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + /* Stored state numbers (used for stacks). */ typedef yytype_uint8 yy_state_t; @@ -313,6 +364,7 @@ typedef int yy_state_fast_t; # endif #endif + #ifndef YY_ATTRIBUTE_PURE # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) @@ -331,17 +383,23 @@ typedef int yy_state_fast_t; /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) +# define YY_USE(E) ((void) (E)) #else -# define YYUSE(E) /* empty */ +# define YY_USE(E) /* empty */ #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ +#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ +# if __GNUC__ * 100 + __GNUC_MINOR__ < 407 +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") +# else +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# endif # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else @@ -370,7 +428,7 @@ typedef int yy_state_fast_t; #define YY_ASSERT(E) ((void) (0 && (E))) -#if ! defined yyoverflow || YYERROR_VERBOSE +#if !defined yyoverflow /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -435,8 +493,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif -#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ - +#endif /* !defined yyoverflow */ #if (! defined yyoverflow \ && (! defined __cplusplus \ @@ -512,14 +569,16 @@ union yyalloc /* YYNSTATES -- Number of states. */ #define YYNSTATES 178 -#define YYUNDEFTOK 2 +/* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 297 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ -#define YYTRANSLATE(YYX) \ - (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) +#define YYTRANSLATE(YYX) \ + (0 <= (YYX) && (YYX) <= YYMAXUTOK \ + ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ + : YYSYMBOL_YYUNDEF) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ @@ -558,7 +617,7 @@ static const yytype_int8 yytranslate[] = }; #if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { 0, 47, 47, 47, 63, 74, 60, 93, 94, 97, @@ -575,25 +634,32 @@ static const yytype_int16 yyrline[] = }; #endif -#if YYDEBUG || YYERROR_VERBOSE || 0 +/** Accessing symbol of state STATE. */ +#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) + +#if YYDEBUG || 0 +/* The user-facing name of the symbol whose (internal) number is + YYSYMBOL. No bounds checking. */ +static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; + /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "PROGRAM", "ABRE_PARENTESES", - "FECHA_PARENTESES", "VIRGULA", "PONTO_E_VIRGULA", "DOIS_PONTOS", "PONTO", - "T_BEGIN", "T_END", "VAR", "IDENT", "ATRIBUICAO", "LABEL", "TYPE", - "ARRAY", "PROCEDURE", "FUNCTION", "GOTO", "IF", "THEN", "ELSE", "WHILE", - "DO", "OR", "DIV", "AND", "NOT", "IGUAL", "DIFERENTE", "MENOR_IGUAL", - "MAIOR_IGUAL", "MENOR", "MAIOR", "MAIS", "MENOS", "ASTERISCO", "NUMERO", - "READ", "WRITE", "LOWER_THAN_ELSE", "$accept", "programa", "$@1", - "bloco", "$@2", "$@3", "parte_declara_rotulos", "parte_declara_vars", - "var", "$@4", "declara_vars", "declara_var", "$@5", "$@6", "tipo", - "lista_id_var", "lista_idents", "parte_declara_subrotinas", - "declaracao_procedimento", "$@7", "$@8", "declaracao_funcao", "$@9", - "$@10", "$@11", "parametros_ou_nada", "$@12", "$@13", - "paramentros_formais", "secao_pfs", "$@14", "$@15", "lista_id_pf", - "parametro", "comando_composto", "comandos", "comando", + "\"end of file\"", "error", "\"invalid token\"", "PROGRAM", + "ABRE_PARENTESES", "FECHA_PARENTESES", "VIRGULA", "PONTO_E_VIRGULA", + "DOIS_PONTOS", "PONTO", "T_BEGIN", "T_END", "VAR", "IDENT", "ATRIBUICAO", + "LABEL", "TYPE", "ARRAY", "PROCEDURE", "FUNCTION", "GOTO", "IF", "THEN", + "ELSE", "WHILE", "DO", "OR", "DIV", "AND", "NOT", "IGUAL", "DIFERENTE", + "MENOR_IGUAL", "MAIOR_IGUAL", "MENOR", "MAIOR", "MAIS", "MENOS", + "ASTERISCO", "NUMERO", "READ", "WRITE", "LOWER_THAN_ELSE", "$accept", + "programa", "$@1", "bloco", "$@2", "$@3", "parte_declara_rotulos", + "parte_declara_vars", "var", "$@4", "declara_vars", "declara_var", "$@5", + "$@6", "tipo", "lista_id_var", "lista_idents", + "parte_declara_subrotinas", "declaracao_procedimento", "$@7", "$@8", + "declaracao_funcao", "$@9", "$@10", "$@11", "parametros_ou_nada", "$@12", + "$@13", "paramentros_formais", "secao_pfs", "$@14", "$@15", + "lista_id_pf", "parametro", "comando_composto", "comandos", "comando", "comando_sem_rotulo", "atribuicao_ou_procedimento", "$@16", "atribuicao_ou_procedimento_token", "atribuicao", "$@17", "chamada_procedimento", "$@18", "lista_parametros", @@ -603,20 +669,13 @@ static const char *const yytname[] = "comando_repetitivo", "$@22", "$@23", "comando_condicional", "cond_else", "if_then", "$@24", YY_NULLPTR }; -#endif -# ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ -static const yytype_int16 yytoknum[] = +static const char * +yysymbol_name (yysymbol_kind_t yysymbol) { - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297 -}; -# endif + return yytname[yysymbol]; +} +#endif #define YYPACT_NINF (-114) @@ -628,8 +687,8 @@ static const yytype_int16 yytoknum[] = #define yytable_value_is_error(Yyn) \ 0 - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ static const yytype_int8 yypact[] = { -114, 11, 18, -114, 0, 15, 37, -114, 10, 23, @@ -652,9 +711,9 @@ static const yytype_int8 yypact[] = -114, -9, -114, -114, 116, 1, -114, -9 }; - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ +/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ static const yytype_int8 yydefact[] = { 2, 0, 0, 1, 0, 0, 0, 22, 0, 0, @@ -677,7 +736,7 @@ static const yytype_int8 yydefact[] = 68, 71, 99, 40, 0, 0, 32, 69 }; - /* YYPGOTO[NTERM-NUM]. */ +/* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { -114, -114, -114, -86, -114, -114, -114, -114, -114, -114, @@ -689,10 +748,10 @@ static const yytype_int8 yypgoto[] = -114, -114, -114, -114, -114, -114, -114 }; - /* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_uint8 yydefgoto[] = { - -1, 1, 2, 14, 21, 31, 15, 18, 19, 20, + 0, 1, 2, 14, 21, 31, 15, 18, 19, 20, 26, 27, 28, 84, 64, 35, 8, 24, 32, 44, 156, 25, 36, 89, 174, 43, 65, 122, 86, 87, 120, 88, 124, 125, 50, 51, 52, 53, 54, 68, @@ -701,9 +760,9 @@ static const yytype_int16 yydefgoto[] = 58, 59, 163, 60, 83, 61, 99 }; - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ +/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { 97, 116, 126, 118, 127, 69, 96, 150, 114, 108, @@ -740,8 +799,8 @@ static const yytype_int16 yycheck[] = 146, -1, -1, -1, -1, 31 }; - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ +/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of + state STATE-NUM. */ static const yytype_int8 yystos[] = { 0, 44, 45, 0, 3, 13, 4, 13, 59, 5, @@ -764,7 +823,7 @@ static const yytype_int8 yystos[] = 6, 98, 80, 57, 67, 90, 7, 98 }; - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int8 yyr1[] = { 0, 43, 45, 44, 47, 48, 46, 49, 49, 50, @@ -780,7 +839,7 @@ static const yytype_int8 yyr1[] = 106, 107, 107, 109, 108 }; - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ static const yytype_int8 yyr2[] = { 0, 2, 0, 9, 0, 0, 6, 2, 0, 1, @@ -797,14 +856,15 @@ static const yytype_int8 yyr2[] = }; +enum { YYENOMEM = -2 }; + #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab +#define YYNOMEM goto yyexhaustedlab #define YYRECOVERING() (!!yyerrstatus) @@ -826,10 +886,9 @@ static const yytype_int8 yyr2[] = } \ while (0) -/* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 - +/* Backward compatibility with an undocumented macro. + Use YYerror or YYUNDEF. */ +#define YYERRCODE YYUNDEF /* Enable debugging if requested. */ @@ -846,19 +905,16 @@ do { \ YYFPRINTF Args; \ } while (0) -/* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ + +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ - Type, Value); \ + Kind, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) @@ -869,18 +925,15 @@ do { \ `-----------------------------------*/ static void -yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_value_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) { FILE *yyoutput = yyo; - YYUSE (yyoutput); + YY_USE (yyoutput); if (!yyvaluep) return; -# ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyo, yytoknum[yytype], *yyvaluep); -# endif YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); + YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -890,12 +943,13 @@ yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) `---------------------------*/ static void -yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) { YYFPRINTF (yyo, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); + yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); - yy_symbol_value_print (yyo, yytype, yyvaluep); + yy_symbol_value_print (yyo, yykind, yyvaluep); YYFPRINTF (yyo, ")"); } @@ -928,7 +982,8 @@ do { \ `------------------------------------------------*/ static void -yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule) +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, + int yyrule) { int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; @@ -940,9 +995,8 @@ yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, - yystos[+yyssp[yyi + 1 - yynrhs]], - &yyvsp[(yyi + 1) - (yynrhs)] - ); + YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), + &yyvsp[(yyi + 1) - (yynrhs)]); YYFPRINTF (stderr, "\n"); } } @@ -957,8 +1011,8 @@ do { \ multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YYDPRINTF(Args) ((void) 0) +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ @@ -981,259 +1035,30 @@ int yydebug; #endif -#if YYERROR_VERBOSE -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) -# else -/* Return the length of YYSTR. */ -static YYPTRDIFF_T -yystrlen (const char *yystr) -{ - YYPTRDIFF_T yylen; - for (yylen = 0; yystr[yylen]; yylen++) - continue; - return yylen; -} -# endif -# endif -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -yystpcpy (char *yydest, const char *yysrc) -{ - char *yyd = yydest; - const char *yys = yysrc; - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -# ifndef yytnamerr -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). YYSTR is taken from yytname. If YYRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static YYPTRDIFF_T -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - YYPTRDIFF_T yyn = 0; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - else - goto append; - - append: - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - - if (yyres) - return yystpcpy (yyres, yystr) - yyres; - else - return yystrlen (yystr); -} -# endif - -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP. - - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store. */ -static int -yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, - yy_state_t *yyssp, int yytoken) -{ - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat: reported tokens (one for the "unexpected", - one per "expected"). */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Actual size of YYARG. */ - int yycount = 0; - /* Cumulated lengths of YYARG. */ - YYPTRDIFF_T yysize = 0; - - /* There are many possibilities here to consider: - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[+*yyssp]; - YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - yysize = yysize0; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - { - YYPTRDIFF_T yysize1 - = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; - } - } - } - } - - switch (yycount) - { -# define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - default: /* Avoid compiler warnings. */ - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ - } - - { - /* Don't count the "%s"s in the final size, but reserve room for - the terminator. */ - YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1; - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; - } - - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } - - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - char *yyp = *yymsg; - int yyi = 0; - while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - ++yyp; - ++yyformat; - } - } - return 0; -} -#endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +yydestruct (const char *yymsg, + yysymbol_kind_t yykind, YYSTYPE *yyvaluep) { - YYUSE (yyvaluep); + YY_USE (yyvaluep); if (!yymsg) yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); + YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } - - -/* The lookahead symbol. */ +/* Lookahead token kind. */ int yychar; /* The semantic value of the lookahead symbol. */ @@ -1242,6 +1067,8 @@ YYSTYPE yylval; int yynerrs; + + /*----------. | yyparse. | `----------*/ @@ -1249,43 +1076,36 @@ int yynerrs; int yyparse (void) { - yy_state_fast_t yystate; + yy_state_fast_t yystate = 0; /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. + int yyerrstatus = 0; - Refer to the stacks through separate pointers, to allow yyoverflow + /* Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ - /* The state stack. */ + /* Their size. */ + YYPTRDIFF_T yystacksize = YYINITDEPTH; + + /* The state stack: array, bottom, top. */ yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss; - yy_state_t *yyssp; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; - /* The semantic value stack. */ + /* The semantic value stack: array, bottom, top. */ YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; - - YYPTRDIFF_T yystacksize; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; int yyn; + /* The return value of yyparse. */ int yyresult; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; + /* Lookahead symbol kind. */ + yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; -#endif + #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) @@ -1293,16 +1113,10 @@ yyparse (void) Keep to zero when no symbol should be popped. */ int yylen = 0; - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - yystacksize = YYINITDEPTH; - YYDPRINTF ((stderr, "Starting parse\n")); - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ + goto yysetstate; @@ -1324,10 +1138,11 @@ yysetstate: YY_IGNORE_USELESS_CAST_BEGIN *yyssp = YY_CAST (yy_state_t, yystate); YY_IGNORE_USELESS_CAST_END + YY_STACK_PRINT (yyss, yyssp); if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE - goto yyexhaustedlab; + YYNOMEM; #else { /* Get the current used size of the three stacks, in elements. */ @@ -1355,7 +1170,7 @@ yysetstate: # else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + YYNOMEM; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; @@ -1366,10 +1181,10 @@ yysetstate: YY_CAST (union yyalloc *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) - goto yyexhaustedlab; + YYNOMEM; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE +# undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } @@ -1388,6 +1203,7 @@ yysetstate: } #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ + if (yystate == YYFINAL) YYACCEPT; @@ -1408,18 +1224,29 @@ yybackup: /* Not known => get a lookahead token if don't already have one. */ - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ if (yychar == YYEMPTY) { - YYDPRINTF ((stderr, "Reading a token: ")); + YYDPRINTF ((stderr, "Reading a token\n")); yychar = yylex (); } if (yychar <= YYEOF) { - yychar = yytoken = YYEOF; + yychar = YYEOF; + yytoken = YYSYMBOL_YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } + else if (yychar == YYerror) + { + /* The scanner already issued an error message, process directly + to error recovery. But do not keep the error token as + lookahead, it is too special and may lead us to an endless + loop in error recovery. */ + yychar = YYUNDEF; + yytoken = YYSYMBOL_YYerror; + goto yyerrlab1; + } else { yytoken = YYTRANSLATE (yychar); @@ -1488,23 +1315,23 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 2: + case 2: /* $@1: %empty */ #line 47 "compilador.y" { geraCodigo (NULL, "INPP"); } -#line 1497 "compilador.tab.c" +#line 1324 "compilador.tab.c" break; - case 3: + case 3: /* programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO */ #line 53 "compilador.y" { geraCodigo (NULL, "PARA"); } -#line 1505 "compilador.tab.c" +#line 1332 "compilador.tab.c" break; - case 4: + case 4: /* $@2: %empty */ #line 63 "compilador.y" { char r_main[4]; @@ -1516,20 +1343,20 @@ yyreduce: strcat(buffer,r_main); geraCodigo(NULL,buffer); } -#line 1520 "compilador.tab.c" +#line 1347 "compilador.tab.c" break; - case 5: + case 5: /* $@3: %empty */ #line 74 "compilador.y" { char r_main[4]; desempilha(r_main,rot); geraCodigo(r_main,"NADA"); } -#line 1530 "compilador.tab.c" +#line 1357 "compilador.tab.c" break; - case 6: + case 6: /* bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas $@3 comando_composto */ #line 80 "compilador.y" { char buffer[50]; @@ -1541,32 +1368,32 @@ yyreduce: nivel_lexico -= 1; mostra_ts(ts); } -#line 1545 "compilador.tab.c" +#line 1372 "compilador.tab.c" break; - case 10: + case 10: /* $@4: %empty */ #line 101 "compilador.y" { } -#line 1551 "compilador.tab.c" +#line 1378 "compilador.tab.c" break; - case 15: + case 15: /* $@5: %empty */ #line 110 "compilador.y" { num_vars = 0; } -#line 1557 "compilador.tab.c" +#line 1384 "compilador.tab.c" break; - case 16: + case 16: /* $@6: %empty */ #line 113 "compilador.y" { char buffer[50]; sprintf(buffer, "AMEM %d", num_vars); geraCodigo(NULL, buffer); } -#line 1567 "compilador.tab.c" +#line 1394 "compilador.tab.c" break; - case 18: + case 18: /* tipo: IDENT */ #line 122 "compilador.y" { if (strcmp(token, "integer") == 0) { @@ -1578,10 +1405,10 @@ yyreduce: } mostra_ts(ts); // Mostra a tabela após a inserção } -#line 1582 "compilador.tab.c" +#line 1409 "compilador.tab.c" break; - case 19: + case 19: /* lista_id_var: lista_id_var VIRGULA IDENT */ #line 135 "compilador.y" { /* insere �ltima vars na tabela de s�mbolos */ num_vars += 1; @@ -1591,10 +1418,10 @@ yyreduce: insere_ts(token,VS,nivel_lexico,info,ts); desloc += 1; } -#line 1595 "compilador.tab.c" +#line 1422 "compilador.tab.c" break; - case 20: + case 20: /* lista_id_var: IDENT */ #line 143 "compilador.y" { num_vars += 1; @@ -1605,10 +1432,10 @@ yyreduce: desloc += 1; /* insere vars na tabela de s�mbolos */ } -#line 1609 "compilador.tab.c" +#line 1436 "compilador.tab.c" break; - case 26: + case 26: /* $@7: %empty */ #line 167 "compilador.y" { // Insere o procedimento na tabela de símbolos @@ -1632,10 +1459,10 @@ yyreduce: geraCodigo(r_proc,buffer); mostra_ts(ts); } -#line 1636 "compilador.tab.c" +#line 1463 "compilador.tab.c" break; - case 27: + case 27: /* $@8: %empty */ #line 191 "compilador.y" { char buffer[50]; @@ -1646,10 +1473,10 @@ yyreduce: desloc = retira_vs_pf(ts); mostra_ts(ts); } -#line 1650 "compilador.tab.c" +#line 1477 "compilador.tab.c" break; - case 29: + case 29: /* $@9: %empty */ #line 205 "compilador.y" { // Insere o funcao na tabela de símbolos @@ -1674,18 +1501,18 @@ yyreduce: geraCodigo(r_func,buffer); mostra_ts(ts); } -#line 1678 "compilador.tab.c" +#line 1505 "compilador.tab.c" break; - case 30: + case 30: /* $@10: %empty */ #line 229 "compilador.y" { num_vars = 1; } -#line 1686 "compilador.tab.c" +#line 1513 "compilador.tab.c" break; - case 31: + case 31: /* $@11: %empty */ #line 233 "compilador.y" { char buffer[50]; @@ -1696,16 +1523,16 @@ yyreduce: desloc = retira_vs_pf(ts); mostra_ts(ts); } -#line 1700 "compilador.tab.c" +#line 1527 "compilador.tab.c" break; - case 33: + case 33: /* $@12: %empty */ #line 246 "compilador.y" {num_param = 0;} -#line 1706 "compilador.tab.c" +#line 1533 "compilador.tab.c" break; - case 34: + case 34: /* $@13: %empty */ #line 247 "compilador.y" { char proc_ident[50]; @@ -1714,43 +1541,43 @@ yyreduce: empilha(proc_ident,proc); mostra_ts(ts); } -#line 1718 "compilador.tab.c" +#line 1545 "compilador.tab.c" break; - case 39: + case 39: /* $@14: %empty */ #line 263 "compilador.y" { num_vars = 0; val_ou_ref = REF; } -#line 1727 "compilador.tab.c" +#line 1554 "compilador.tab.c" break; - case 40: + case 40: /* secao_pfs: VAR $@14 lista_id_pf DOIS_PONTOS tipo */ #line 268 "compilador.y" { num_param += num_vars; val_ou_ref = VLR; } -#line 1736 "compilador.tab.c" +#line 1563 "compilador.tab.c" break; - case 41: + case 41: /* $@15: %empty */ #line 272 "compilador.y" { num_vars = 0; val_ou_ref = VLR; } -#line 1745 "compilador.tab.c" +#line 1572 "compilador.tab.c" break; - case 42: + case 42: /* secao_pfs: $@15 lista_id_pf DOIS_PONTOS tipo */ #line 277 "compilador.y" {num_param += num_vars;} -#line 1751 "compilador.tab.c" +#line 1578 "compilador.tab.c" break; - case 45: + case 45: /* parametro: IDENT */ #line 284 "compilador.y" { num_vars += 1; @@ -1760,16 +1587,16 @@ yyreduce: info.pf.passagem = val_ou_ref; insere_ts(token,PF,nivel_lexico,info,ts); } -#line 1764 "compilador.tab.c" +#line 1591 "compilador.tab.c" break; - case 58: + case 58: /* $@16: %empty */ #line 314 "compilador.y" {l_elem = busca(token, ts);} -#line 1770 "compilador.tab.c" +#line 1597 "compilador.tab.c" break; - case 62: + case 62: /* $@17: %empty */ #line 322 "compilador.y" { if (l_elem == NULL) { @@ -1790,10 +1617,10 @@ yyreduce: } } -#line 1794 "compilador.tab.c" +#line 1621 "compilador.tab.c" break; - case 63: + case 63: /* atribuicao: $@17 ATRIBUICAO expressao_simples */ #line 340 "compilador.y" { // Gera código ARMZ para armazenar valor @@ -1805,10 +1632,10 @@ yyreduce: } geraCodigo(NULL, buffer); } -#line 1809 "compilador.tab.c" +#line 1636 "compilador.tab.c" break; - case 64: + case 64: /* $@18: %empty */ #line 353 "compilador.y" { if (l_elem == NULL){ @@ -1822,10 +1649,10 @@ yyreduce: if (l_elem->categ == PR || l_elem->categ == FUN) num_param = 0; // Reinicia a contagem de parâmetros reais } -#line 1826 "compilador.tab.c" +#line 1653 "compilador.tab.c" break; - case 65: + case 65: /* chamada_procedimento: $@18 lista_parametros */ #line 368 "compilador.y" { char buffer[50]; @@ -1852,10 +1679,10 @@ yyreduce: geraCodigo(NULL, buffer); } } -#line 1856 "compilador.tab.c" +#line 1683 "compilador.tab.c" break; - case 68: + case 68: /* $@19: %empty */ #line 402 "compilador.y" { char buffer[50]; @@ -1864,19 +1691,19 @@ yyreduce: val_ou_ref = l_elem->info.pr.param[num_param][1]; empilha(buffer,proc); } -#line 1868 "compilador.tab.c" +#line 1695 "compilador.tab.c" break; - case 69: + case 69: /* lista_parametros_parenteses: lista_parametros_parenteses VIRGULA $@19 expressao_simples */ #line 410 "compilador.y" { num_param++; // Incrementa para cada parâmetro real val_ou_ref = VLR; } -#line 1877 "compilador.tab.c" +#line 1704 "compilador.tab.c" break; - case 70: + case 70: /* $@20: %empty */ #line 414 "compilador.y" { char buffer[50]; @@ -1885,19 +1712,19 @@ yyreduce: val_ou_ref = l_elem->info.pr.param[num_param][1]; empilha(buffer,proc); } -#line 1889 "compilador.tab.c" +#line 1716 "compilador.tab.c" break; - case 71: + case 71: /* lista_parametros_parenteses: $@20 expressao_simples */ #line 422 "compilador.y" { num_param++; // Conta o primeiro parâmetro real val_ou_ref = VLR; } -#line 1898 "compilador.tab.c" +#line 1725 "compilador.tab.c" break; - case 75: + case 75: /* simb_leitura: IDENT */ #line 435 "compilador.y" { geraCodigo(NULL, "LEIT"); @@ -1906,74 +1733,74 @@ yyreduce: sprintf(buffer,"ARMZ %d, %d",l_elem->nivel,l_elem->info.vs.desloc); geraCodigo(NULL,buffer); } -#line 1910 "compilador.tab.c" +#line 1737 "compilador.tab.c" break; - case 77: + case 77: /* lista_escritas: lista_escritas VIRGULA expressao_simples */ #line 447 "compilador.y" { geraCodigo(NULL,"IMPR"); } -#line 1918 "compilador.tab.c" +#line 1745 "compilador.tab.c" break; - case 78: + case 78: /* lista_escritas: expressao_simples */ #line 450 "compilador.y" { geraCodigo(NULL,"IMPR"); } -#line 1926 "compilador.tab.c" +#line 1753 "compilador.tab.c" break; - case 79: + case 79: /* expressao: expressao_simples IGUAL expressao_simples */ #line 455 "compilador.y" { geraCodigo(NULL, "CMIG"); // Adiciona operação de cmig } -#line 1934 "compilador.tab.c" +#line 1761 "compilador.tab.c" break; - case 80: + case 80: /* expressao: expressao_simples DIFERENTE expressao_simples */ #line 458 "compilador.y" { geraCodigo(NULL, "CMDG"); // Adiciona operação de cmdg } -#line 1942 "compilador.tab.c" +#line 1769 "compilador.tab.c" break; - case 81: + case 81: /* expressao: expressao_simples MENOR expressao_simples */ #line 461 "compilador.y" { geraCodigo(NULL, "CMME"); // Adiciona operação de cmme } -#line 1950 "compilador.tab.c" +#line 1777 "compilador.tab.c" break; - case 82: + case 82: /* expressao: expressao_simples MENOR_IGUAL expressao_simples */ #line 464 "compilador.y" { geraCodigo(NULL, "CMEG"); // Adiciona operação de cmeg } -#line 1958 "compilador.tab.c" +#line 1785 "compilador.tab.c" break; - case 83: + case 83: /* expressao: expressao_simples MAIOR expressao_simples */ #line 467 "compilador.y" { geraCodigo(NULL, "CMMA"); // Adiciona operação de cmma } -#line 1966 "compilador.tab.c" +#line 1793 "compilador.tab.c" break; - case 84: + case 84: /* expressao: expressao_simples MAIOR_IGUAL expressao_simples */ #line 470 "compilador.y" { geraCodigo(NULL, "CMAG"); // Adiciona operação de cmag } -#line 1974 "compilador.tab.c" +#line 1801 "compilador.tab.c" break; - case 85: + case 85: /* expressao_simples: expressao_simples MAIS termo */ #line 475 "compilador.y" { if (val_ou_ref == REF) @@ -1981,10 +1808,10 @@ yyreduce: else geraCodigo(NULL, "SOMA"); // Adiciona operação de soma } -#line 1985 "compilador.tab.c" +#line 1812 "compilador.tab.c" break; - case 86: + case 86: /* expressao_simples: expressao_simples MENOS termo */ #line 481 "compilador.y" { if (val_ou_ref == REF) @@ -1992,36 +1819,36 @@ yyreduce: else geraCodigo(NULL, "SUBT"); // Adiciona operação de subt } -#line 1996 "compilador.tab.c" +#line 1823 "compilador.tab.c" break; - case 88: + case 88: /* termo: termo ASTERISCO fator */ #line 490 "compilador.y" { geraCodigo(NULL, "MULT"); // Adiciona operação de mult } -#line 2004 "compilador.tab.c" +#line 1831 "compilador.tab.c" break; - case 89: + case 89: /* termo: termo DIV fator */ #line 493 "compilador.y" { geraCodigo(NULL, "DIVI"); // Adiciona operação de divi } -#line 2012 "compilador.tab.c" +#line 1839 "compilador.tab.c" break; - case 91: + case 91: /* $@21: %empty */ #line 499 "compilador.y" { // Carrega variável l_elem = busca(token, ts); empilha(token, proc); } -#line 2022 "compilador.tab.c" +#line 1849 "compilador.tab.c" break; - case 92: + case 92: /* fator: IDENT $@21 chamada_procedimento */ #line 505 "compilador.y" { char buffer[50]; @@ -2062,10 +1889,10 @@ yyreduce: } } } -#line 2066 "compilador.tab.c" +#line 1893 "compilador.tab.c" break; - case 93: + case 93: /* fator: NUMERO */ #line 544 "compilador.y" { // Empilha constante @@ -2077,10 +1904,10 @@ yyreduce: } geraCodigo(NULL, buffer); } -#line 2081 "compilador.tab.c" +#line 1908 "compilador.tab.c" break; - case 97: + case 97: /* $@22: %empty */ #line 560 "compilador.y" { char r_ini[4]; @@ -2089,10 +1916,10 @@ yyreduce: rot_id += 1; geraCodigo(r_ini,"NADA"); } -#line 2093 "compilador.tab.c" +#line 1920 "compilador.tab.c" break; - case 98: + case 98: /* $@23: %empty */ #line 567 "compilador.y" { char r_fim[4]; @@ -2104,10 +1931,10 @@ yyreduce: strcat(buffer,r_fim); geraCodigo(NULL,buffer); } -#line 2108 "compilador.tab.c" +#line 1935 "compilador.tab.c" break; - case 99: + case 99: /* comando_repetitivo: $@22 WHILE expressao DO $@23 comando_sem_rotulo */ #line 577 "compilador.y" { char r_ini[4]; @@ -2123,20 +1950,20 @@ yyreduce: geraCodigo(r_fim,"NADA"); } -#line 2127 "compilador.tab.c" +#line 1954 "compilador.tab.c" break; - case 100: + case 100: /* comando_condicional: if_then cond_else */ #line 593 "compilador.y" { char r_fim[4]; desempilha(r_fim,rot); geraCodigo(r_fim,"NADA"); } -#line 2137 "compilador.tab.c" +#line 1964 "compilador.tab.c" break; - case 103: + case 103: /* $@24: %empty */ #line 605 "compilador.y" { char r_else[4]; @@ -2153,10 +1980,10 @@ yyreduce: empilha(r_fim, rot); rot_id += 1; } -#line 2157 "compilador.tab.c" +#line 1984 "compilador.tab.c" break; - case 104: + case 104: /* if_then: IF expressao $@24 THEN comando_sem_rotulo */ #line 620 "compilador.y" { char r_fim[4]; @@ -2172,11 +1999,11 @@ yyreduce: geraCodigo(r_else,"NADA"); } -#line 2176 "compilador.tab.c" +#line 2003 "compilador.tab.c" break; -#line 2180 "compilador.tab.c" +#line 2007 "compilador.tab.c" default: break; } @@ -2191,11 +2018,10 @@ yyreduce: case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; - YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; @@ -2219,50 +2045,14 @@ yyreduce: yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - + yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; -#if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); -#else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ - yyssp, yytoken) - { - char const *yymsgp = YY_("syntax error"); - int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; - if (yysyntax_error_status == 0) - yymsgp = yymsg; - else if (yysyntax_error_status == 1) - { - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); - if (!yymsg) - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } - else - { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; - } - } - yyerror (yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; - } -# undef YYSYNTAX_ERROR -#endif } - - if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an @@ -2295,6 +2085,7 @@ yyerrorlab: label yyerrorlab therefore never appears in user code. */ if (0) YYERROR; + ++yynerrs; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ @@ -2311,13 +2102,14 @@ yyerrorlab: yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ + /* Pop stack until we find a state that shifts the error token. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + yyn += YYSYMBOL_YYerror; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) { yyn = yytable[yyn]; if (0 < yyn) @@ -2331,7 +2123,7 @@ yyerrlab1: yydestruct ("Error: popping", - yystos[yystate], yyvsp); + YY_ACCESSING_SYMBOL (yystate), yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -2343,7 +2135,7 @@ yyerrlab1: /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); yystate = yyn; goto yynewstate; @@ -2354,7 +2146,7 @@ yyerrlab1: `-------------------------------------*/ yyacceptlab: yyresult = 0; - goto yyreturn; + goto yyreturnlab; /*-----------------------------------. @@ -2362,24 +2154,22 @@ yyacceptlab: `-----------------------------------*/ yyabortlab: yyresult = 1; - goto yyreturn; + goto yyreturnlab; -#if !defined yyoverflow || YYERROR_VERBOSE -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ +/*-----------------------------------------------------------. +| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | +`-----------------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; - /* Fall through. */ -#endif + goto yyreturnlab; -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ -yyreturn: +/*----------------------------------------------------------. +| yyreturnlab -- parsing is finished, clean up and return. | +`----------------------------------------------------------*/ +yyreturnlab: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at @@ -2395,19 +2185,17 @@ yyreturn: while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[+*yyssp], yyvsp); + YY_ACCESSING_SYMBOL (+*yyssp), yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif -#if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); -#endif + return yyresult; } + #line 637 "compilador.y" diff --git a/ORIGNAL/compilador.tab.h b/ORIGNAL/compilador.tab.h index 2be6c98..98da8d5 100644 --- a/ORIGNAL/compilador.tab.h +++ b/ORIGNAL/compilador.tab.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.5.1. */ +/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ + along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -31,8 +31,9 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ #ifndef YY_YY_COMPILADOR_TAB_H_INCLUDED # define YY_YY_COMPILADOR_TAB_H_INCLUDED @@ -44,52 +45,57 @@ extern int yydebug; #endif -/* Token type. */ +/* Token kinds. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { - PROGRAM = 258, - ABRE_PARENTESES = 259, - FECHA_PARENTESES = 260, - VIRGULA = 261, - PONTO_E_VIRGULA = 262, - DOIS_PONTOS = 263, - PONTO = 264, - T_BEGIN = 265, - T_END = 266, - VAR = 267, - IDENT = 268, - ATRIBUICAO = 269, - LABEL = 270, - TYPE = 271, - ARRAY = 272, - PROCEDURE = 273, - FUNCTION = 274, - GOTO = 275, - IF = 276, - THEN = 277, - ELSE = 278, - WHILE = 279, - DO = 280, - OR = 281, - DIV = 282, - AND = 283, - NOT = 284, - IGUAL = 285, - DIFERENTE = 286, - MENOR_IGUAL = 287, - MAIOR_IGUAL = 288, - MENOR = 289, - MAIOR = 290, - MAIS = 291, - MENOS = 292, - ASTERISCO = 293, - NUMERO = 294, - READ = 295, - WRITE = 296, - LOWER_THAN_ELSE = 297 + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + PROGRAM = 258, /* PROGRAM */ + ABRE_PARENTESES = 259, /* ABRE_PARENTESES */ + FECHA_PARENTESES = 260, /* FECHA_PARENTESES */ + VIRGULA = 261, /* VIRGULA */ + PONTO_E_VIRGULA = 262, /* PONTO_E_VIRGULA */ + DOIS_PONTOS = 263, /* DOIS_PONTOS */ + PONTO = 264, /* PONTO */ + T_BEGIN = 265, /* T_BEGIN */ + T_END = 266, /* T_END */ + VAR = 267, /* VAR */ + IDENT = 268, /* IDENT */ + ATRIBUICAO = 269, /* ATRIBUICAO */ + LABEL = 270, /* LABEL */ + TYPE = 271, /* TYPE */ + ARRAY = 272, /* ARRAY */ + PROCEDURE = 273, /* PROCEDURE */ + FUNCTION = 274, /* FUNCTION */ + GOTO = 275, /* GOTO */ + IF = 276, /* IF */ + THEN = 277, /* THEN */ + ELSE = 278, /* ELSE */ + WHILE = 279, /* WHILE */ + DO = 280, /* DO */ + OR = 281, /* OR */ + DIV = 282, /* DIV */ + AND = 283, /* AND */ + NOT = 284, /* NOT */ + IGUAL = 285, /* IGUAL */ + DIFERENTE = 286, /* DIFERENTE */ + MENOR_IGUAL = 287, /* MENOR_IGUAL */ + MAIOR_IGUAL = 288, /* MAIOR_IGUAL */ + MENOR = 289, /* MENOR */ + MAIOR = 290, /* MAIOR */ + MAIS = 291, /* MAIS */ + MENOS = 292, /* MENOS */ + ASTERISCO = 293, /* ASTERISCO */ + NUMERO = 294, /* NUMERO */ + READ = 295, /* READ */ + WRITE = 296, /* WRITE */ + LOWER_THAN_ELSE = 297 /* LOWER_THAN_ELSE */ }; + typedef enum yytokentype yytoken_kind_t; #endif /* Value type. */ @@ -102,6 +108,8 @@ typedef int YYSTYPE; extern YYSTYPE yylval; + int yyparse (void); + #endif /* !YY_YY_COMPILADOR_TAB_H_INCLUDED */ -- GitLab