From b1c4f520d6fa96846a66832c2c5277654d595daa Mon Sep 17 00:00:00 2001 From: HENRIQUE MARGOTTE <hm19@inf.ufpr.br> Date: Tue, 3 Dec 2024 21:31:29 -0300 Subject: [PATCH] proc foward tambem --- ALTERADO/MEPA | 23 +- ALTERADO/compilador | Bin 54240 -> 54240 bytes ALTERADO/compilador.output | 1968 ++++++++++++++++++------------------ ALTERADO/compilador.tab.c | 716 +++++++------ ALTERADO/compilador.y | 65 +- ALTERADO/ts/ts.c | 8 +- ALTERADO/ts/ts.h | 4 +- ALTERADO/ts/ts.o | Bin 11240 -> 11272 bytes AvaliaTrabs/forward1.pas | 4 +- 9 files changed, 1358 insertions(+), 1430 deletions(-) diff --git a/ALTERADO/MEPA b/ALTERADO/MEPA index 8a02281..fd7c695 100644 --- a/ALTERADO/MEPA +++ b/ALTERADO/MEPA @@ -7,21 +7,36 @@ R03: ENPR 1 AMEM 1 DSVS R04 R04: NADA - AMEM 1 CRVL 1, -5 CRVL 1, -4 - CHPR R02, 1 + CMMA + DSVF R05 + CRVL 1, -4 + ARMZ 1, 0 + DSVS R06 +R05: NADA + CRVL 1, -5 ARMZ 1, 0 +R06: NADA CRVL 1, 0 ARMZ 1, -6 DMEM 1 RTPR 1, 2 R02: ENPR 1 AMEM 1 - DSVS R05 -R05: NADA + DSVS R07 +R07: NADA + CRVL 1, 0 + CRVL 1, 0 + CMMA + DSVF R08 + CRVL 1, 0 + ARMZ 1, 0 + DSVS R09 +R08: NADA CRVL 1, 0 ARMZ 1, 0 +R09: NADA CRVL 1, 0 ARMZ 1, -6 DMEM 1 diff --git a/ALTERADO/compilador b/ALTERADO/compilador index f0dd322374d57337529cf6d397b4541943d98d06..002f1ce68424cd2eb5f7c1480fd3cc271f171a47 100755 GIT binary patch delta 13101 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 delta 13056 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 KZ2o!SITHXt!~6IE diff --git a/ALTERADO/compilador.output b/ALTERADO/compilador.output index 67e8cee..b8cf7c1 100644 --- a/ALTERADO/compilador.output +++ b/ALTERADO/compilador.output @@ -8,7 +8,8 @@ Terminais sem uso na gramática NOT -Estado 88 conflitos: 1 de redução/redução +Estado 82 conflitos: 1 de redução/redução +Estado 138 conflitos: 1 de redução/redução Gramática @@ -52,7 +53,7 @@ Gramática 20 lista_idents: lista_idents VIRGULA IDENT 21 | IDENT - 22 parte_declara_subrotinas: declaracao_procedimento inicializa_procedimento parte_declara_subrotinas + 22 parte_declara_subrotinas: declaracao_procedimento parte_declara_subrotinas 23 | declaracao_funcao parte_declara_subrotinas 24 | ε @@ -60,145 +61,137 @@ Gramática 26 $@8: ε - 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada $@8 PONTO_E_VIRGULA + 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada PONTO_E_VIRGULA corpo_funcao $@8 PONTO_E_VIRGULA 28 $@9: ε 29 $@10: ε - 30 inicializa_procedimento: $@9 corpo_procedimento $@10 PONTO_E_VIRGULA + 30 $@11: ε - 31 corpo_procedimento: bloco - 32 | FORWARD + 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA corpo_funcao $@11 PONTO_E_VIRGULA - 33 $@11: ε + 32 corpo_funcao: forward + 33 | bloco - 34 $@12: ε + 34 forward: FORWARD - 35 $@13: ε + 35 $@12: ε - 36 declaracao_funcao: FUNCTION IDENT $@11 parametros_ou_nada DOIS_PONTOS $@12 tipo PONTO_E_VIRGULA corpo_funcao $@13 PONTO_E_VIRGULA + 36 $@13: ε - 37 corpo_funcao: forward - 38 | bloco + 37 parametros_ou_nada: ABRE_PARENTESES $@12 paramentros_formais $@13 FECHA_PARENTESES + 38 | ε - 39 forward: FORWARD + 39 paramentros_formais: secao_pfs + 40 | paramentros_formais PONTO_E_VIRGULA secao_pfs - 40 $@14: ε + 41 $@14: ε - 41 $@15: ε + 42 secao_pfs: VAR $@14 lista_id_pf DOIS_PONTOS tipo - 42 parametros_ou_nada: ABRE_PARENTESES $@14 paramentros_formais $@15 FECHA_PARENTESES - 43 | ε + 43 $@15: ε - 44 paramentros_formais: secao_pfs - 45 | paramentros_formais PONTO_E_VIRGULA secao_pfs + 44 secao_pfs: $@15 lista_id_pf DOIS_PONTOS tipo - 46 $@16: ε + 45 lista_id_pf: parametro VIRGULA lista_id_pf + 46 | parametro - 47 secao_pfs: VAR $@16 lista_id_pf DOIS_PONTOS tipo + 47 parametro: IDENT - 48 $@17: ε + 48 comando_composto: T_BEGIN comandos T_END - 49 secao_pfs: $@17 lista_id_pf DOIS_PONTOS tipo + 49 comandos: comando PONTO_E_VIRGULA comandos + 50 | comando PONTO_E_VIRGULA + 51 | ε - 50 lista_id_pf: parametro VIRGULA lista_id_pf - 51 | parametro + 52 comando: numero DOIS_PONTOS comando_sem_rotulo + 53 | comando_sem_rotulo - 52 parametro: IDENT + 54 comando_sem_rotulo: atribuicao_ou_procedimento + 55 | comando_composto + 56 | comando_condicional + 57 | comando_repetitivo + 58 | leitura + 59 | escrita - 53 comando_composto: T_BEGIN comandos T_END + 60 $@16: ε - 54 comandos: comando PONTO_E_VIRGULA comandos - 55 | comando PONTO_E_VIRGULA - 56 | ε + 61 atribuicao_ou_procedimento: IDENT $@16 atribuicao_ou_procedimento_token - 57 comando: numero DOIS_PONTOS comando_sem_rotulo - 58 | comando_sem_rotulo + 62 atribuicao_ou_procedimento_token: atribuicao + 63 | chamada_procedimento - 59 comando_sem_rotulo: atribuicao_ou_procedimento - 60 | comando_composto - 61 | comando_condicional - 62 | comando_repetitivo - 63 | leitura - 64 | escrita + 64 $@17: ε - 65 $@18: ε + 65 atribuicao: $@17 ATRIBUICAO expressao_simples - 66 atribuicao_ou_procedimento: IDENT $@18 atribuicao_ou_procedimento_token + 66 $@18: ε - 67 atribuicao_ou_procedimento_token: atribuicao - 68 | chamada_procedimento + 67 chamada_procedimento: $@18 lista_parametros - 69 $@19: ε + 68 lista_parametros: ABRE_PARENTESES lista_parametros_parenteses FECHA_PARENTESES + 69 | ε - 70 atribuicao: $@19 ATRIBUICAO expressao_simples + 70 $@19: ε - 71 $@20: ε + 71 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA $@19 expressao_simples - 72 chamada_procedimento: $@20 lista_parametros + 72 $@20: ε - 73 lista_parametros: ABRE_PARENTESES lista_parametros_parenteses FECHA_PARENTESES - 74 | ε + 73 lista_parametros_parenteses: $@20 expressao_simples - 75 $@21: ε + 74 leitura: READ ABRE_PARENTESES lista_leituras FECHA_PARENTESES - 76 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA $@21 expressao_simples + 75 lista_leituras: lista_leituras VIRGULA simb_leitura + 76 | simb_leitura - 77 $@22: ε + 77 simb_leitura: IDENT - 78 lista_parametros_parenteses: $@22 expressao_simples + 78 escrita: WRITE ABRE_PARENTESES lista_escritas FECHA_PARENTESES - 79 leitura: READ ABRE_PARENTESES lista_leituras FECHA_PARENTESES + 79 lista_escritas: lista_escritas VIRGULA expressao_simples + 80 | expressao_simples - 80 lista_leituras: lista_leituras VIRGULA simb_leitura - 81 | simb_leitura + 81 expressao: expressao_simples IGUAL expressao_simples + 82 | expressao_simples DIFERENTE expressao_simples + 83 | expressao_simples MENOR expressao_simples + 84 | expressao_simples MENOR_IGUAL expressao_simples + 85 | expressao_simples MAIOR expressao_simples + 86 | expressao_simples MAIOR_IGUAL expressao_simples + 87 | ABRE_PARENTESES expressao FECHA_PARENTESES - 82 simb_leitura: IDENT + 88 expressao_simples: expressao_simples MAIS termo + 89 | expressao_simples MENOS termo + 90 | termo - 83 escrita: WRITE ABRE_PARENTESES lista_escritas FECHA_PARENTESES + 91 termo: termo ASTERISCO fator + 92 | termo DIV fator + 93 | fator - 84 lista_escritas: lista_escritas VIRGULA expressao_simples - 85 | expressao_simples + 94 $@21: ε - 86 expressao: expressao_simples IGUAL expressao_simples - 87 | expressao_simples DIFERENTE expressao_simples - 88 | expressao_simples MENOR expressao_simples - 89 | expressao_simples MENOR_IGUAL expressao_simples - 90 | expressao_simples MAIOR expressao_simples - 91 | expressao_simples MAIOR_IGUAL expressao_simples + 95 fator: IDENT $@21 chamada_procedimento + 96 | NUMERO + 97 | ABRE_PARENTESES expressao FECHA_PARENTESES + 98 | ABRE_PARENTESES expressao_simples FECHA_PARENTESES - 92 expressao_simples: expressao_simples MAIS termo - 93 | expressao_simples MENOS termo - 94 | termo + 99 numero: NUMERO - 95 termo: termo ASTERISCO fator - 96 | termo DIV fator - 97 | fator + 100 $@22: ε - 98 $@23: ε + 101 $@23: ε - 99 fator: IDENT $@23 chamada_procedimento - 100 | NUMERO - 101 | ABRE_PARENTESES expressao FECHA_PARENTESES - 102 | ABRE_PARENTESES expressao_simples FECHA_PARENTESES + 102 comando_repetitivo: $@22 WHILE expressao DO $@23 comando_sem_rotulo - 103 numero: NUMERO + 103 comando_condicional: if_then cond_else - 104 $@24: ε + 104 cond_else: ELSE comando_sem_rotulo + 105 | ε - 105 $@25: ε + 106 $@24: ε - 106 comando_repetitivo: $@24 WHILE expressao DO $@25 comando_sem_rotulo - - 107 comando_condicional: if_then cond_else - - 108 cond_else: ELSE comando_sem_rotulo - 109 | ε - - 110 $@26: ε - - 111 if_then: IF expressao $@26 THEN comando_sem_rotulo + 107 if_then: IF expressao $@24 THEN comando_sem_rotulo Terminais, com as regras onde eles aparecem @@ -206,45 +199,45 @@ Terminais, com as regras onde eles aparecem $end (0) 0 error (256) PROGRAM (258) 2 - ABRE_PARENTESES (259) 2 42 73 79 83 101 102 - FECHA_PARENTESES (260) 2 42 73 79 83 101 102 - VIRGULA (261) 6 18 20 50 76 80 84 - PONTO_E_VIRGULA (262) 2 16 27 30 36 45 54 55 - DOIS_PONTOS (263) 16 36 47 49 57 + ABRE_PARENTESES (259) 2 37 68 74 78 87 97 98 + FECHA_PARENTESES (260) 2 37 68 74 78 87 97 98 + VIRGULA (261) 6 18 20 45 71 75 79 + PONTO_E_VIRGULA (262) 2 16 27 31 40 49 50 + DOIS_PONTOS (263) 16 31 42 44 52 PONTO (264) 2 - T_BEGIN (265) 53 - T_END (266) 53 - VAR (267) 10 47 - IDENT (268) 2 17 18 19 20 21 27 36 52 66 82 99 - ATRIBUICAO (269) 70 + T_BEGIN (265) 48 + T_END (266) 48 + VAR (267) 10 42 + IDENT (268) 2 17 18 19 20 21 27 31 47 61 77 95 + ATRIBUICAO (269) 65 LABEL (270) 6 TYPE (271) ARRAY (272) PROCEDURE (273) 27 - FUNCTION (274) 36 + FUNCTION (274) 31 GOTO (275) - IF (276) 111 - THEN (277) 111 - ELSE (278) 108 - WHILE (279) 106 - DO (280) 106 + IF (276) 107 + THEN (277) 107 + ELSE (278) 104 + WHILE (279) 102 + DO (280) 102 OR (281) - DIV (282) 96 + DIV (282) 92 AND (283) NOT (284) - IGUAL (285) 86 - DIFERENTE (286) 87 - MENOR_IGUAL (287) 89 - MAIOR_IGUAL (288) 91 - MENOR (289) 88 - MAIOR (290) 90 - MAIS (291) 92 - MENOS (292) 93 - ASTERISCO (293) 95 - NUMERO (294) 100 103 - READ (295) 79 - WRITE (296) 83 - FORWARD (297) 32 39 + IGUAL (285) 81 + DIFERENTE (286) 82 + MENOR_IGUAL (287) 84 + MAIOR_IGUAL (288) 86 + MENOR (289) 83 + MAIOR (290) 85 + MAIS (291) 88 + MENOS (292) 89 + ASTERISCO (293) 91 + NUMERO (294) 96 99 + READ (295) 74 + WRITE (296) 78 + FORWARD (297) 34 LOWER_THAN_ELSE (298) @@ -260,7 +253,7 @@ Não terminais com as regras onde eles aparecem à direita: 2 bloco (47) à esquerda: 5 - à direita: 2 31 38 + à direita: 2 33 $@2 (48) à esquerda: 3 à direita: 5 @@ -293,7 +286,7 @@ Não terminais com as regras onde eles aparecem à direita: 16 tipo (58) à esquerda: 17 - à direita: 16 36 47 49 + à direita: 16 31 42 44 lista_id_var (59) à esquerda: 18 19 à direita: 16 18 @@ -312,162 +305,150 @@ Não terminais com as regras onde eles aparecem $@8 (64) à esquerda: 26 à direita: 27 - inicializa_procedimento (65) - à esquerda: 30 - à direita: 22 + declaracao_funcao (65) + à esquerda: 31 + à direita: 23 $@9 (66) à esquerda: 28 - à direita: 30 + à direita: 31 $@10 (67) à esquerda: 29 - à direita: 30 - corpo_procedimento (68) - à esquerda: 31 32 - à direita: 30 - declaracao_funcao (69) - à esquerda: 36 - à direita: 23 - $@11 (70) - à esquerda: 33 - à direita: 36 - $@12 (71) + à direita: 31 + $@11 (68) + à esquerda: 30 + à direita: 31 + corpo_funcao (69) + à esquerda: 32 33 + à direita: 27 31 + forward (70) à esquerda: 34 - à direita: 36 - $@13 (72) - à esquerda: 35 - à direita: 36 - corpo_funcao (73) + à direita: 32 + parametros_ou_nada (71) à esquerda: 37 38 - à direita: 36 - forward (74) - à esquerda: 39 + à direita: 27 31 + $@12 (72) + à esquerda: 35 à direita: 37 - parametros_ou_nada (75) - à esquerda: 42 43 - à direita: 27 36 + $@13 (73) + à esquerda: 36 + à direita: 37 + paramentros_formais (74) + à esquerda: 39 40 + à direita: 37 40 + secao_pfs (75) + à esquerda: 42 44 + à direita: 39 40 $@14 (76) - à esquerda: 40 - à direita: 42 - $@15 (77) à esquerda: 41 à direita: 42 - paramentros_formais (78) - à esquerda: 44 45 - à direita: 42 45 - secao_pfs (79) - à esquerda: 47 49 - à direita: 44 45 - $@16 (80) - à esquerda: 46 - à direita: 47 - $@17 (81) + $@15 (77) + à esquerda: 43 + à direita: 44 + lista_id_pf (78) + à esquerda: 45 46 + à direita: 42 44 45 + parametro (79) + à esquerda: 47 + à direita: 45 46 + comando_composto (80) à esquerda: 48 - à direita: 49 - lista_id_pf (82) - à esquerda: 50 51 - à direita: 47 49 50 - parametro (83) - à esquerda: 52 - à direita: 50 51 - comando_composto (84) - à esquerda: 53 - à direita: 5 60 - comandos (85) - à esquerda: 54 55 56 - à direita: 53 54 - comando (86) - à esquerda: 57 58 - à direita: 54 55 - comando_sem_rotulo (87) - à esquerda: 59 60 61 62 63 64 - à direita: 57 58 106 108 111 - atribuicao_ou_procedimento (88) - à esquerda: 66 - à direita: 59 - $@18 (89) + à direita: 5 55 + comandos (81) + à esquerda: 49 50 51 + à direita: 48 49 + comando (82) + à esquerda: 52 53 + à direita: 49 50 + comando_sem_rotulo (83) + à esquerda: 54 55 56 57 58 59 + à direita: 52 53 102 104 107 + atribuicao_ou_procedimento (84) + à esquerda: 61 + à direita: 54 + $@16 (85) + à esquerda: 60 + à direita: 61 + atribuicao_ou_procedimento_token (86) + à esquerda: 62 63 + à direita: 61 + atribuicao (87) à esquerda: 65 - à direita: 66 - atribuicao_ou_procedimento_token (90) - à esquerda: 67 68 - à direita: 66 - atribuicao (91) - à esquerda: 70 + à direita: 62 + $@17 (88) + à esquerda: 64 + à direita: 65 + chamada_procedimento (89) + à esquerda: 67 + à direita: 63 95 + $@18 (90) + à esquerda: 66 à direita: 67 - $@19 (92) - à esquerda: 69 - à direita: 70 - chamada_procedimento (93) - à esquerda: 72 - à direita: 68 99 + lista_parametros (91) + à esquerda: 68 69 + à direita: 67 + lista_parametros_parenteses (92) + à esquerda: 71 73 + à direita: 68 71 + $@19 (93) + à esquerda: 70 + à direita: 71 $@20 (94) - à esquerda: 71 - à direita: 72 - lista_parametros (95) - à esquerda: 73 74 - à direita: 72 - lista_parametros_parenteses (96) - à esquerda: 76 78 - à direita: 73 76 - $@21 (97) - à esquerda: 75 - à direita: 76 - $@22 (98) + à esquerda: 72 + à direita: 73 + leitura (95) + à esquerda: 74 + à direita: 58 + lista_leituras (96) + à esquerda: 75 76 + à direita: 74 75 + simb_leitura (97) à esquerda: 77 - à direita: 78 - leitura (99) - à esquerda: 79 - à direita: 63 - lista_leituras (100) - à esquerda: 80 81 - à direita: 79 80 - simb_leitura (101) - à esquerda: 82 - à direita: 80 81 - escrita (102) - à esquerda: 83 - à direita: 64 - lista_escritas (103) - à esquerda: 84 85 - à direita: 83 84 - expressao (104) - à esquerda: 86 87 88 89 90 91 - à direita: 101 106 111 - expressao_simples (105) - à esquerda: 92 93 94 - à direita: 70 76 78 84 85 86 87 88 89 90 91 92 93 102 - termo (106) - à esquerda: 95 96 97 - à direita: 92 93 94 95 96 - fator (107) - à esquerda: 99 100 101 102 - à direita: 95 96 97 + à direita: 75 76 + escrita (98) + à esquerda: 78 + à direita: 59 + lista_escritas (99) + à esquerda: 79 80 + à direita: 78 79 + expressao (100) + à esquerda: 81 82 83 84 85 86 87 + à direita: 87 97 102 107 + expressao_simples (101) + à esquerda: 88 89 90 + à direita: 65 71 73 79 80 81 82 83 84 85 86 88 89 98 + termo (102) + à esquerda: 91 92 93 + à direita: 88 89 90 91 92 + fator (103) + à esquerda: 95 96 97 98 + à direita: 91 92 93 + $@21 (104) + à esquerda: 94 + à direita: 95 + numero (105) + à esquerda: 99 + à direita: 52 + comando_repetitivo (106) + à esquerda: 102 + à direita: 57 + $@22 (107) + à esquerda: 100 + à direita: 102 $@23 (108) - à esquerda: 98 - à direita: 99 - numero (109) + à esquerda: 101 + à direita: 102 + comando_condicional (109) à esquerda: 103 - à direita: 57 - comando_repetitivo (110) - à esquerda: 106 - à direita: 62 - $@24 (111) - à esquerda: 104 - à direita: 106 - $@25 (112) - à esquerda: 105 - à direita: 106 - comando_condicional (113) + à direita: 56 + cond_else (110) + à esquerda: 104 105 + à direita: 103 + if_then (111) à esquerda: 107 - à direita: 61 - cond_else (114) - à esquerda: 108 109 - à direita: 107 - if_then (115) - à esquerda: 111 + à direita: 103 + $@24 (112) + à esquerda: 106 à direita: 107 - $@26 (116) - à esquerda: 110 - à direita: 111 Estado 0 @@ -663,14 +644,14 @@ Estado 22 Estado 23 - 27 declaracao_procedimento: PROCEDURE • IDENT $@7 parametros_ou_nada $@8 PONTO_E_VIRGULA + 27 declaracao_procedimento: PROCEDURE • IDENT $@7 parametros_ou_nada PONTO_E_VIRGULA corpo_funcao $@8 PONTO_E_VIRGULA IDENT deslocar, e ir ao estado 31 Estado 24 - 36 declaracao_funcao: FUNCTION • IDENT $@11 parametros_ou_nada DOIS_PONTOS $@12 tipo PONTO_E_VIRGULA corpo_funcao $@13 PONTO_E_VIRGULA + 31 declaracao_funcao: FUNCTION • IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA corpo_funcao $@11 PONTO_E_VIRGULA IDENT deslocar, e ir ao estado 32 @@ -686,12 +667,16 @@ Estado 25 Estado 26 - 22 parte_declara_subrotinas: declaracao_procedimento • inicializa_procedimento parte_declara_subrotinas + 22 parte_declara_subrotinas: declaracao_procedimento • parte_declara_subrotinas - $padrão reduzir usando a regra 28 ($@9) + PROCEDURE deslocar, e ir ao estado 23 + FUNCTION deslocar, e ir ao estado 24 - inicializa_procedimento ir ao estado 34 - $@9 ir ao estado 35 + $padrão reduzir usando a regra 24 (parte_declara_subrotinas) + + parte_declara_subrotinas ir ao estado 34 + declaracao_procedimento ir ao estado 26 + declaracao_funcao ir ao estado 27 Estado 27 @@ -703,7 +688,7 @@ Estado 27 $padrão reduzir usando a regra 24 (parte_declara_subrotinas) - parte_declara_subrotinas ir ao estado 36 + parte_declara_subrotinas ir ao estado 35 declaracao_procedimento ir ao estado 26 declaracao_funcao ir ao estado 27 @@ -716,7 +701,7 @@ Estado 28 IDENT reduzir usando a regra 14 ($@5) $padrão reduzir usando a regra 10 (var) - declara_var ir ao estado 37 + declara_var ir ao estado 36 $@5 ir ao estado 30 @@ -731,1552 +716,1545 @@ Estado 30 16 declara_var: $@5 • lista_id_var DOIS_PONTOS tipo $@6 PONTO_E_VIRGULA - IDENT deslocar, e ir ao estado 38 + IDENT deslocar, e ir ao estado 37 - lista_id_var ir ao estado 39 + lista_id_var ir ao estado 38 Estado 31 - 27 declaracao_procedimento: PROCEDURE IDENT • $@7 parametros_ou_nada $@8 PONTO_E_VIRGULA + 27 declaracao_procedimento: PROCEDURE IDENT • $@7 parametros_ou_nada PONTO_E_VIRGULA corpo_funcao $@8 PONTO_E_VIRGULA $padrão reduzir usando a regra 25 ($@7) - $@7 ir ao estado 40 + $@7 ir ao estado 39 Estado 32 - 36 declaracao_funcao: FUNCTION IDENT • $@11 parametros_ou_nada DOIS_PONTOS $@12 tipo PONTO_E_VIRGULA corpo_funcao $@13 PONTO_E_VIRGULA + 31 declaracao_funcao: FUNCTION IDENT • $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA corpo_funcao $@11 PONTO_E_VIRGULA - $padrão reduzir usando a regra 33 ($@11) + $padrão reduzir usando a regra 28 ($@9) - $@11 ir ao estado 41 + $@9 ir ao estado 40 Estado 33 5 bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas $@3 • comando_composto - T_BEGIN deslocar, e ir ao estado 42 + T_BEGIN deslocar, e ir ao estado 41 - comando_composto ir ao estado 43 + comando_composto ir ao estado 42 Estado 34 - 22 parte_declara_subrotinas: declaracao_procedimento inicializa_procedimento • parte_declara_subrotinas + 22 parte_declara_subrotinas: declaracao_procedimento parte_declara_subrotinas • - PROCEDURE deslocar, e ir ao estado 23 - FUNCTION deslocar, e ir ao estado 24 - - $padrão reduzir usando a regra 24 (parte_declara_subrotinas) - - parte_declara_subrotinas ir ao estado 44 - declaracao_procedimento ir ao estado 26 - declaracao_funcao ir ao estado 27 + $padrão reduzir usando a regra 22 (parte_declara_subrotinas) Estado 35 - 30 inicializa_procedimento: $@9 • corpo_procedimento $@10 PONTO_E_VIRGULA - - LABEL deslocar, e ir ao estado 13 - FORWARD deslocar, e ir ao estado 45 - - $padrão reduzir usando a regra 7 (parte_declara_rotulos) - - bloco ir ao estado 46 - parte_declara_rotulos ir ao estado 15 - corpo_procedimento ir ao estado 47 - - -Estado 36 - 23 parte_declara_subrotinas: declaracao_funcao parte_declara_subrotinas • $padrão reduzir usando a regra 23 (parte_declara_subrotinas) -Estado 37 +Estado 36 12 declara_vars: declara_vars declara_var • $padrão reduzir usando a regra 12 (declara_vars) -Estado 38 +Estado 37 19 lista_id_var: IDENT • $padrão reduzir usando a regra 19 (lista_id_var) -Estado 39 +Estado 38 16 declara_var: $@5 lista_id_var • DOIS_PONTOS tipo $@6 PONTO_E_VIRGULA 18 lista_id_var: lista_id_var • VIRGULA IDENT - VIRGULA deslocar, e ir ao estado 48 - DOIS_PONTOS deslocar, e ir ao estado 49 + VIRGULA deslocar, e ir ao estado 43 + DOIS_PONTOS deslocar, e ir ao estado 44 -Estado 40 +Estado 39 - 27 declaracao_procedimento: PROCEDURE IDENT $@7 • parametros_ou_nada $@8 PONTO_E_VIRGULA + 27 declaracao_procedimento: PROCEDURE IDENT $@7 • parametros_ou_nada PONTO_E_VIRGULA corpo_funcao $@8 PONTO_E_VIRGULA - ABRE_PARENTESES deslocar, e ir ao estado 50 + ABRE_PARENTESES deslocar, e ir ao estado 45 - $padrão reduzir usando a regra 43 (parametros_ou_nada) + $padrão reduzir usando a regra 38 (parametros_ou_nada) - parametros_ou_nada ir ao estado 51 + parametros_ou_nada ir ao estado 46 -Estado 41 +Estado 40 - 36 declaracao_funcao: FUNCTION IDENT $@11 • parametros_ou_nada DOIS_PONTOS $@12 tipo PONTO_E_VIRGULA corpo_funcao $@13 PONTO_E_VIRGULA + 31 declaracao_funcao: FUNCTION IDENT $@9 • parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA corpo_funcao $@11 PONTO_E_VIRGULA - ABRE_PARENTESES deslocar, e ir ao estado 50 + ABRE_PARENTESES deslocar, e ir ao estado 45 - $padrão reduzir usando a regra 43 (parametros_ou_nada) + $padrão reduzir usando a regra 38 (parametros_ou_nada) - parametros_ou_nada ir ao estado 52 + parametros_ou_nada ir ao estado 47 -Estado 42 +Estado 41 - 53 comando_composto: T_BEGIN • comandos T_END + 48 comando_composto: T_BEGIN • comandos T_END - T_BEGIN deslocar, e ir ao estado 42 - 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_BEGIN deslocar, e ir ao estado 41 + IDENT deslocar, e ir ao estado 48 + IF deslocar, e ir ao estado 49 + NUMERO deslocar, e ir ao estado 50 + READ deslocar, e ir ao estado 51 + WRITE deslocar, e ir ao estado 52 - WHILE reduzir usando a regra 104 ($@24) - $padrão reduzir usando a regra 56 (comandos) + WHILE reduzir usando a regra 100 ($@22) + $padrão reduzir usando a regra 51 (comandos) - 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 + comando_composto ir ao estado 53 + comandos ir ao estado 54 + comando ir ao estado 55 + comando_sem_rotulo ir ao estado 56 + atribuicao_ou_procedimento ir ao estado 57 + leitura ir ao estado 58 + escrita ir ao estado 59 + numero ir ao estado 60 + comando_repetitivo ir ao estado 61 + $@22 ir ao estado 62 + comando_condicional ir ao estado 63 + if_then ir ao estado 64 -Estado 43 +Estado 42 5 bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas $@3 comando_composto • $padrão reduzir usando a regra 5 (bloco) +Estado 43 + + 18 lista_id_var: lista_id_var VIRGULA • IDENT + + IDENT deslocar, e ir ao estado 65 + + Estado 44 - 22 parte_declara_subrotinas: declaracao_procedimento inicializa_procedimento parte_declara_subrotinas • + 16 declara_var: $@5 lista_id_var DOIS_PONTOS • tipo $@6 PONTO_E_VIRGULA - $padrão reduzir usando a regra 22 (parte_declara_subrotinas) + IDENT deslocar, e ir ao estado 66 + + tipo ir ao estado 67 Estado 45 - 32 corpo_procedimento: FORWARD • + 37 parametros_ou_nada: ABRE_PARENTESES • $@12 paramentros_formais $@13 FECHA_PARENTESES + + $padrão reduzir usando a regra 35 ($@12) - $padrão reduzir usando a regra 32 (corpo_procedimento) + $@12 ir ao estado 68 Estado 46 - 31 corpo_procedimento: bloco • + 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada • PONTO_E_VIRGULA corpo_funcao $@8 PONTO_E_VIRGULA - $padrão reduzir usando a regra 31 (corpo_procedimento) + PONTO_E_VIRGULA deslocar, e ir ao estado 69 Estado 47 - 30 inicializa_procedimento: $@9 corpo_procedimento • $@10 PONTO_E_VIRGULA + 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada • DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA corpo_funcao $@11 PONTO_E_VIRGULA - $padrão reduzir usando a regra 29 ($@10) - - $@10 ir ao estado 70 + DOIS_PONTOS deslocar, e ir ao estado 70 Estado 48 - 18 lista_id_var: lista_id_var VIRGULA • IDENT + 61 atribuicao_ou_procedimento: IDENT • $@16 atribuicao_ou_procedimento_token - IDENT deslocar, e ir ao estado 71 + $padrão reduzir usando a regra 60 ($@16) + + $@16 ir ao estado 71 Estado 49 - 16 declara_var: $@5 lista_id_var DOIS_PONTOS • tipo $@6 PONTO_E_VIRGULA + 107 if_then: IF • expressao $@24 THEN comando_sem_rotulo - IDENT deslocar, e ir ao estado 72 + ABRE_PARENTESES deslocar, e ir ao estado 72 + IDENT deslocar, e ir ao estado 73 + NUMERO deslocar, e ir ao estado 74 - tipo ir ao estado 73 + expressao ir ao estado 75 + expressao_simples ir ao estado 76 + termo ir ao estado 77 + fator ir ao estado 78 Estado 50 - 42 parametros_ou_nada: ABRE_PARENTESES • $@14 paramentros_formais $@15 FECHA_PARENTESES + 99 numero: NUMERO • - $padrão reduzir usando a regra 40 ($@14) - - $@14 ir ao estado 74 + $padrão reduzir usando a regra 99 (numero) Estado 51 - 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada • $@8 PONTO_E_VIRGULA - - $padrão reduzir usando a regra 26 ($@8) + 74 leitura: READ • ABRE_PARENTESES lista_leituras FECHA_PARENTESES - $@8 ir ao estado 75 + ABRE_PARENTESES deslocar, e ir ao estado 79 Estado 52 - 36 declaracao_funcao: FUNCTION IDENT $@11 parametros_ou_nada • DOIS_PONTOS $@12 tipo PONTO_E_VIRGULA corpo_funcao $@13 PONTO_E_VIRGULA + 78 escrita: WRITE • ABRE_PARENTESES lista_escritas FECHA_PARENTESES - DOIS_PONTOS deslocar, e ir ao estado 76 + ABRE_PARENTESES deslocar, e ir ao estado 80 Estado 53 - 66 atribuicao_ou_procedimento: IDENT • $@18 atribuicao_ou_procedimento_token + 55 comando_sem_rotulo: comando_composto • - $padrão reduzir usando a regra 65 ($@18) - - $@18 ir ao estado 77 + $padrão reduzir usando a regra 55 (comando_sem_rotulo) Estado 54 - 111 if_then: IF • expressao $@26 THEN 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 + 48 comando_composto: T_BEGIN comandos • T_END - expressao ir ao estado 81 - expressao_simples ir ao estado 82 - termo ir ao estado 83 - fator ir ao estado 84 + T_END deslocar, e ir ao estado 81 Estado 55 - 103 numero: NUMERO • + 49 comandos: comando • PONTO_E_VIRGULA comandos + 50 | comando • PONTO_E_VIRGULA - $padrão reduzir usando a regra 103 (numero) + PONTO_E_VIRGULA deslocar, e ir ao estado 82 Estado 56 - 79 leitura: READ • ABRE_PARENTESES lista_leituras FECHA_PARENTESES + 53 comando: comando_sem_rotulo • - ABRE_PARENTESES deslocar, e ir ao estado 85 + $padrão reduzir usando a regra 53 (comando) Estado 57 - 83 escrita: WRITE • ABRE_PARENTESES lista_escritas FECHA_PARENTESES + 54 comando_sem_rotulo: atribuicao_ou_procedimento • - ABRE_PARENTESES deslocar, e ir ao estado 86 + $padrão reduzir usando a regra 54 (comando_sem_rotulo) Estado 58 - 60 comando_sem_rotulo: comando_composto • + 58 comando_sem_rotulo: leitura • - $padrão reduzir usando a regra 60 (comando_sem_rotulo) + $padrão reduzir usando a regra 58 (comando_sem_rotulo) Estado 59 - 53 comando_composto: T_BEGIN comandos • T_END + 59 comando_sem_rotulo: escrita • - T_END deslocar, e ir ao estado 87 + $padrão reduzir usando a regra 59 (comando_sem_rotulo) Estado 60 - 54 comandos: comando • PONTO_E_VIRGULA comandos - 55 | comando • PONTO_E_VIRGULA + 52 comando: numero • DOIS_PONTOS comando_sem_rotulo - PONTO_E_VIRGULA deslocar, e ir ao estado 88 + DOIS_PONTOS deslocar, e ir ao estado 83 Estado 61 - 58 comando: comando_sem_rotulo • + 57 comando_sem_rotulo: comando_repetitivo • - $padrão reduzir usando a regra 58 (comando) + $padrão reduzir usando a regra 57 (comando_sem_rotulo) Estado 62 - 59 comando_sem_rotulo: atribuicao_ou_procedimento • + 102 comando_repetitivo: $@22 • WHILE expressao DO $@23 comando_sem_rotulo - $padrão reduzir usando a regra 59 (comando_sem_rotulo) + WHILE deslocar, e ir ao estado 84 Estado 63 - 63 comando_sem_rotulo: leitura • + 56 comando_sem_rotulo: comando_condicional • - $padrão reduzir usando a regra 63 (comando_sem_rotulo) + $padrão reduzir usando a regra 56 (comando_sem_rotulo) Estado 64 - 64 comando_sem_rotulo: escrita • + 103 comando_condicional: if_then • cond_else - $padrão reduzir usando a regra 64 (comando_sem_rotulo) + ELSE deslocar, e ir ao estado 85 + + $padrão reduzir usando a regra 105 (cond_else) + + cond_else ir ao estado 86 Estado 65 - 57 comando: numero • DOIS_PONTOS comando_sem_rotulo + 18 lista_id_var: lista_id_var VIRGULA IDENT • - DOIS_PONTOS deslocar, e ir ao estado 89 + $padrão reduzir usando a regra 18 (lista_id_var) Estado 66 - 62 comando_sem_rotulo: comando_repetitivo • + 17 tipo: IDENT • - $padrão reduzir usando a regra 62 (comando_sem_rotulo) + $padrão reduzir usando a regra 17 (tipo) Estado 67 - 106 comando_repetitivo: $@24 • WHILE expressao DO $@25 comando_sem_rotulo + 16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo • $@6 PONTO_E_VIRGULA - WHILE deslocar, e ir ao estado 90 + $padrão reduzir usando a regra 15 ($@6) + + $@6 ir ao estado 87 Estado 68 - 61 comando_sem_rotulo: comando_condicional • + 37 parametros_ou_nada: ABRE_PARENTESES $@12 • paramentros_formais $@13 FECHA_PARENTESES + + VAR deslocar, e ir ao estado 88 - $padrão reduzir usando a regra 61 (comando_sem_rotulo) + $padrão reduzir usando a regra 43 ($@15) + + paramentros_formais ir ao estado 89 + secao_pfs ir ao estado 90 + $@15 ir ao estado 91 Estado 69 - 107 comando_condicional: if_then • cond_else + 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada PONTO_E_VIRGULA • corpo_funcao $@8 PONTO_E_VIRGULA - ELSE deslocar, e ir ao estado 91 + LABEL deslocar, e ir ao estado 13 + FORWARD deslocar, e ir ao estado 92 - $padrão reduzir usando a regra 109 (cond_else) + $padrão reduzir usando a regra 7 (parte_declara_rotulos) - cond_else ir ao estado 92 + bloco ir ao estado 93 + parte_declara_rotulos ir ao estado 15 + corpo_funcao ir ao estado 94 + forward ir ao estado 95 Estado 70 - 30 inicializa_procedimento: $@9 corpo_procedimento $@10 • PONTO_E_VIRGULA + 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS • $@10 tipo PONTO_E_VIRGULA corpo_funcao $@11 PONTO_E_VIRGULA - PONTO_E_VIRGULA deslocar, e ir ao estado 93 + $padrão reduzir usando a regra 29 ($@10) + + $@10 ir ao estado 96 Estado 71 - 18 lista_id_var: lista_id_var VIRGULA IDENT • + 61 atribuicao_ou_procedimento: IDENT $@16 • atribuicao_ou_procedimento_token - $padrão reduzir usando a regra 18 (lista_id_var) + ATRIBUICAO reduzir usando a regra 64 ($@17) + $padrão reduzir usando a regra 66 ($@18) + + atribuicao_ou_procedimento_token ir ao estado 97 + atribuicao ir ao estado 98 + $@17 ir ao estado 99 + chamada_procedimento ir ao estado 100 + $@18 ir ao estado 101 Estado 72 - 17 tipo: IDENT • + 87 expressao: ABRE_PARENTESES • expressao FECHA_PARENTESES + 97 fator: ABRE_PARENTESES • expressao FECHA_PARENTESES + 98 | ABRE_PARENTESES • expressao_simples FECHA_PARENTESES - $padrão reduzir usando a regra 17 (tipo) + ABRE_PARENTESES deslocar, e ir ao estado 72 + IDENT deslocar, e ir ao estado 73 + NUMERO deslocar, e ir ao estado 74 + + expressao ir ao estado 102 + expressao_simples ir ao estado 103 + termo ir ao estado 77 + fator ir ao estado 78 Estado 73 - 16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo • $@6 PONTO_E_VIRGULA + 95 fator: IDENT • $@21 chamada_procedimento - $padrão reduzir usando a regra 15 ($@6) + $padrão reduzir usando a regra 94 ($@21) - $@6 ir ao estado 94 + $@21 ir ao estado 104 Estado 74 - 42 parametros_ou_nada: ABRE_PARENTESES $@14 • paramentros_formais $@15 FECHA_PARENTESES - - VAR deslocar, e ir ao estado 95 + 96 fator: NUMERO • - $padrão reduzir usando a regra 48 ($@17) - - paramentros_formais ir ao estado 96 - secao_pfs ir ao estado 97 - $@17 ir ao estado 98 + $padrão reduzir usando a regra 96 (fator) Estado 75 - 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada $@8 • PONTO_E_VIRGULA - - PONTO_E_VIRGULA deslocar, e ir ao estado 99 + 107 if_then: IF expressao • $@24 THEN comando_sem_rotulo + $padrão reduzir usando a regra 106 ($@24) -Estado 76 + $@24 ir ao estado 105 - 36 declaracao_funcao: FUNCTION IDENT $@11 parametros_ou_nada DOIS_PONTOS • $@12 tipo PONTO_E_VIRGULA corpo_funcao $@13 PONTO_E_VIRGULA - $padrão reduzir usando a regra 34 ($@12) +Estado 76 - $@12 ir ao estado 100 + 81 expressao: expressao_simples • IGUAL expressao_simples + 82 | expressao_simples • DIFERENTE expressao_simples + 83 | expressao_simples • MENOR expressao_simples + 84 | expressao_simples • MENOR_IGUAL expressao_simples + 85 | expressao_simples • MAIOR expressao_simples + 86 | expressao_simples • MAIOR_IGUAL expressao_simples + 88 expressao_simples: expressao_simples • MAIS termo + 89 | expressao_simples • MENOS termo + + IGUAL deslocar, e ir ao estado 106 + DIFERENTE deslocar, e ir ao estado 107 + MENOR_IGUAL deslocar, e ir ao estado 108 + MAIOR_IGUAL deslocar, e ir ao estado 109 + MENOR deslocar, e ir ao estado 110 + MAIOR deslocar, e ir ao estado 111 + MAIS deslocar, e ir ao estado 112 + MENOS deslocar, e ir ao estado 113 Estado 77 - 66 atribuicao_ou_procedimento: IDENT $@18 • atribuicao_ou_procedimento_token + 90 expressao_simples: termo • + 91 termo: termo • ASTERISCO fator + 92 | termo • DIV fator - ATRIBUICAO reduzir usando a regra 69 ($@19) - $padrão reduzir usando a regra 71 ($@20) + DIV deslocar, e ir ao estado 114 + ASTERISCO deslocar, e ir ao estado 115 - 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 + $padrão reduzir usando a regra 90 (expressao_simples) Estado 78 - 101 fator: ABRE_PARENTESES • expressao FECHA_PARENTESES - 102 | ABRE_PARENTESES • expressao_simples FECHA_PARENTESES + 93 termo: fator • - 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 106 - expressao_simples ir ao estado 107 - termo ir ao estado 83 - fator ir ao estado 84 + $padrão reduzir usando a regra 93 (termo) Estado 79 - 99 fator: IDENT • $@23 chamada_procedimento + 74 leitura: READ ABRE_PARENTESES • lista_leituras FECHA_PARENTESES - $padrão reduzir usando a regra 98 ($@23) + IDENT deslocar, e ir ao estado 116 - $@23 ir ao estado 108 + lista_leituras ir ao estado 117 + simb_leitura ir ao estado 118 Estado 80 - 100 fator: NUMERO • + 78 escrita: WRITE ABRE_PARENTESES • lista_escritas FECHA_PARENTESES - $padrão reduzir usando a regra 100 (fator) + ABRE_PARENTESES deslocar, e ir ao estado 119 + IDENT deslocar, e ir ao estado 73 + NUMERO deslocar, e ir ao estado 74 + lista_escritas ir ao estado 120 + expressao_simples ir ao estado 121 + termo ir ao estado 77 + fator ir ao estado 78 -Estado 81 - 111 if_then: IF expressao • $@26 THEN comando_sem_rotulo +Estado 81 - $padrão reduzir usando a regra 110 ($@26) + 48 comando_composto: T_BEGIN comandos T_END • - $@26 ir ao estado 109 + $padrão reduzir usando a regra 48 (comando_composto) Estado 82 - 86 expressao: expressao_simples • IGUAL expressao_simples - 87 | expressao_simples • DIFERENTE expressao_simples - 88 | expressao_simples • MENOR expressao_simples - 89 | expressao_simples • MENOR_IGUAL expressao_simples - 90 | expressao_simples • MAIOR expressao_simples - 91 | expressao_simples • MAIOR_IGUAL expressao_simples - 92 expressao_simples: expressao_simples • MAIS termo - 93 | 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 + 49 comandos: comando PONTO_E_VIRGULA • comandos + 50 | comando PONTO_E_VIRGULA • + + T_BEGIN deslocar, e ir ao estado 41 + IDENT deslocar, e ir ao estado 48 + IF deslocar, e ir ao estado 49 + NUMERO deslocar, e ir ao estado 50 + READ deslocar, e ir ao estado 51 + WRITE deslocar, e ir ao estado 52 + + T_END reduzir usando a regra 50 (comandos) + T_END [reduzir usando a regra 51 (comandos)] + WHILE reduzir usando a regra 100 ($@22) + $padrão reduzir usando a regra 50 (comandos) + + comando_composto ir ao estado 53 + comandos ir ao estado 122 + comando ir ao estado 55 + comando_sem_rotulo ir ao estado 56 + atribuicao_ou_procedimento ir ao estado 57 + leitura ir ao estado 58 + escrita ir ao estado 59 + numero ir ao estado 60 + comando_repetitivo ir ao estado 61 + $@22 ir ao estado 62 + comando_condicional ir ao estado 63 + if_then ir ao estado 64 Estado 83 - 94 expressao_simples: termo • - 95 termo: termo • ASTERISCO fator - 96 | termo • DIV fator + 52 comando: numero DOIS_PONTOS • comando_sem_rotulo - DIV deslocar, e ir ao estado 118 - ASTERISCO deslocar, e ir ao estado 119 + T_BEGIN deslocar, e ir ao estado 41 + IDENT deslocar, e ir ao estado 48 + IF deslocar, e ir ao estado 49 + READ deslocar, e ir ao estado 51 + WRITE deslocar, e ir ao estado 52 - $padrão reduzir usando a regra 94 (expressao_simples) + $padrão reduzir usando a regra 100 ($@22) + + comando_composto ir ao estado 53 + comando_sem_rotulo ir ao estado 123 + atribuicao_ou_procedimento ir ao estado 57 + leitura ir ao estado 58 + escrita ir ao estado 59 + comando_repetitivo ir ao estado 61 + $@22 ir ao estado 62 + comando_condicional ir ao estado 63 + if_then ir ao estado 64 Estado 84 - 97 termo: fator • + 102 comando_repetitivo: $@22 WHILE • expressao DO $@23 comando_sem_rotulo + + ABRE_PARENTESES deslocar, e ir ao estado 72 + IDENT deslocar, e ir ao estado 73 + NUMERO deslocar, e ir ao estado 74 - $padrão reduzir usando a regra 97 (termo) + expressao ir ao estado 124 + expressao_simples ir ao estado 76 + termo ir ao estado 77 + fator ir ao estado 78 Estado 85 - 79 leitura: READ ABRE_PARENTESES • lista_leituras FECHA_PARENTESES + 104 cond_else: ELSE • comando_sem_rotulo - IDENT deslocar, e ir ao estado 120 + T_BEGIN deslocar, e ir ao estado 41 + IDENT deslocar, e ir ao estado 48 + IF deslocar, e ir ao estado 49 + READ deslocar, e ir ao estado 51 + WRITE deslocar, e ir ao estado 52 - lista_leituras ir ao estado 121 - simb_leitura ir ao estado 122 + $padrão reduzir usando a regra 100 ($@22) + comando_composto ir ao estado 53 + comando_sem_rotulo ir ao estado 125 + atribuicao_ou_procedimento ir ao estado 57 + leitura ir ao estado 58 + escrita ir ao estado 59 + comando_repetitivo ir ao estado 61 + $@22 ir ao estado 62 + comando_condicional ir ao estado 63 + if_then ir ao estado 64 -Estado 86 - 83 escrita: WRITE ABRE_PARENTESES • lista_escritas FECHA_PARENTESES +Estado 86 - ABRE_PARENTESES deslocar, e ir ao estado 78 - IDENT deslocar, e ir ao estado 79 - NUMERO deslocar, e ir ao estado 80 + 103 comando_condicional: if_then cond_else • - lista_escritas ir ao estado 123 - expressao_simples ir ao estado 124 - termo ir ao estado 83 - fator ir ao estado 84 + $padrão reduzir usando a regra 103 (comando_condicional) Estado 87 - 53 comando_composto: T_BEGIN comandos T_END • + 16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo $@6 • PONTO_E_VIRGULA - $padrão reduzir usando a regra 53 (comando_composto) + PONTO_E_VIRGULA deslocar, e ir ao estado 126 Estado 88 - 54 comandos: comando PONTO_E_VIRGULA • comandos - 55 | comando PONTO_E_VIRGULA • - - T_BEGIN deslocar, e ir ao estado 42 - 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 55 (comandos) - T_END [reduzir usando a regra 56 (comandos)] - WHILE reduzir usando a regra 104 ($@24) - $padrão reduzir usando a regra 55 (comandos) - - 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 + 42 secao_pfs: VAR • $@14 lista_id_pf DOIS_PONTOS tipo + + $padrão reduzir usando a regra 41 ($@14) + + $@14 ir ao estado 127 Estado 89 - 57 comando: numero DOIS_PONTOS • comando_sem_rotulo + 37 parametros_ou_nada: ABRE_PARENTESES $@12 paramentros_formais • $@13 FECHA_PARENTESES + 40 paramentros_formais: paramentros_formais • PONTO_E_VIRGULA secao_pfs - T_BEGIN deslocar, e ir ao estado 42 - 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 + PONTO_E_VIRGULA deslocar, e ir ao estado 128 - $padrão reduzir usando a regra 104 ($@24) + $padrão reduzir usando a regra 36 ($@13) - 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 + $@13 ir ao estado 129 Estado 90 - 106 comando_repetitivo: $@24 WHILE • expressao DO $@25 comando_sem_rotulo + 39 paramentros_formais: secao_pfs • - 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 127 - expressao_simples ir ao estado 82 - termo ir ao estado 83 - fator ir ao estado 84 + $padrão reduzir usando a regra 39 (paramentros_formais) Estado 91 - 108 cond_else: ELSE • comando_sem_rotulo - - T_BEGIN deslocar, e ir ao estado 42 - 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 + 44 secao_pfs: $@15 • lista_id_pf DOIS_PONTOS tipo - $padrão reduzir usando a regra 104 ($@24) + IDENT deslocar, e ir ao estado 130 - 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 + lista_id_pf ir ao estado 131 + parametro ir ao estado 132 Estado 92 - 107 comando_condicional: if_then cond_else • + 34 forward: FORWARD • - $padrão reduzir usando a regra 107 (comando_condicional) + $padrão reduzir usando a regra 34 (forward) Estado 93 - 30 inicializa_procedimento: $@9 corpo_procedimento $@10 PONTO_E_VIRGULA • + 33 corpo_funcao: bloco • - $padrão reduzir usando a regra 30 (inicializa_procedimento) + $padrão reduzir usando a regra 33 (corpo_funcao) Estado 94 - 16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo $@6 • PONTO_E_VIRGULA + 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada PONTO_E_VIRGULA corpo_funcao • $@8 PONTO_E_VIRGULA - PONTO_E_VIRGULA deslocar, e ir ao estado 129 + $padrão reduzir usando a regra 26 ($@8) + $@8 ir ao estado 133 -Estado 95 - 47 secao_pfs: VAR • $@16 lista_id_pf DOIS_PONTOS tipo +Estado 95 - $padrão reduzir usando a regra 46 ($@16) + 32 corpo_funcao: forward • - $@16 ir ao estado 130 + $padrão reduzir usando a regra 32 (corpo_funcao) Estado 96 - 42 parametros_ou_nada: ABRE_PARENTESES $@14 paramentros_formais • $@15 FECHA_PARENTESES - 45 paramentros_formais: paramentros_formais • PONTO_E_VIRGULA secao_pfs - - PONTO_E_VIRGULA deslocar, e ir ao estado 131 + 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 • tipo PONTO_E_VIRGULA corpo_funcao $@11 PONTO_E_VIRGULA - $padrão reduzir usando a regra 41 ($@15) + IDENT deslocar, e ir ao estado 66 - $@15 ir ao estado 132 + tipo ir ao estado 134 Estado 97 - 44 paramentros_formais: secao_pfs • + 61 atribuicao_ou_procedimento: IDENT $@16 atribuicao_ou_procedimento_token • - $padrão reduzir usando a regra 44 (paramentros_formais) + $padrão reduzir usando a regra 61 (atribuicao_ou_procedimento) Estado 98 - 49 secao_pfs: $@17 • lista_id_pf DOIS_PONTOS tipo + 62 atribuicao_ou_procedimento_token: atribuicao • - IDENT deslocar, e ir ao estado 133 - - lista_id_pf ir ao estado 134 - parametro ir ao estado 135 + $padrão reduzir usando a regra 62 (atribuicao_ou_procedimento_token) Estado 99 - 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada $@8 PONTO_E_VIRGULA • + 65 atribuicao: $@17 • ATRIBUICAO expressao_simples - $padrão reduzir usando a regra 27 (declaracao_procedimento) + ATRIBUICAO deslocar, e ir ao estado 135 Estado 100 - 36 declaracao_funcao: FUNCTION IDENT $@11 parametros_ou_nada DOIS_PONTOS $@12 • tipo PONTO_E_VIRGULA corpo_funcao $@13 PONTO_E_VIRGULA + 63 atribuicao_ou_procedimento_token: chamada_procedimento • - IDENT deslocar, e ir ao estado 72 - - tipo ir ao estado 136 + $padrão reduzir usando a regra 63 (atribuicao_ou_procedimento_token) Estado 101 - 66 atribuicao_ou_procedimento: IDENT $@18 atribuicao_ou_procedimento_token • + 67 chamada_procedimento: $@18 • lista_parametros + + ABRE_PARENTESES deslocar, e ir ao estado 136 - $padrão reduzir usando a regra 66 (atribuicao_ou_procedimento) + $padrão reduzir usando a regra 69 (lista_parametros) + + lista_parametros ir ao estado 137 Estado 102 - 67 atribuicao_ou_procedimento_token: atribuicao • + 87 expressao: ABRE_PARENTESES expressao • FECHA_PARENTESES + 97 fator: ABRE_PARENTESES expressao • FECHA_PARENTESES - $padrão reduzir usando a regra 67 (atribuicao_ou_procedimento_token) + FECHA_PARENTESES deslocar, e ir ao estado 138 Estado 103 - 70 atribuicao: $@19 • ATRIBUICAO expressao_simples - - ATRIBUICAO deslocar, e ir ao estado 137 + 81 expressao: expressao_simples • IGUAL expressao_simples + 82 | expressao_simples • DIFERENTE expressao_simples + 83 | expressao_simples • MENOR expressao_simples + 84 | expressao_simples • MENOR_IGUAL expressao_simples + 85 | expressao_simples • MAIOR expressao_simples + 86 | 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 + + FECHA_PARENTESES deslocar, e ir ao estado 139 + IGUAL deslocar, e ir ao estado 106 + DIFERENTE deslocar, e ir ao estado 107 + MENOR_IGUAL deslocar, e ir ao estado 108 + MAIOR_IGUAL deslocar, e ir ao estado 109 + MENOR deslocar, e ir ao estado 110 + MAIOR deslocar, e ir ao estado 111 + MAIS deslocar, e ir ao estado 112 + MENOS deslocar, e ir ao estado 113 Estado 104 - 68 atribuicao_ou_procedimento_token: chamada_procedimento • - - $padrão reduzir usando a regra 68 (atribuicao_ou_procedimento_token) + 95 fator: IDENT $@21 • chamada_procedimento + $padrão reduzir usando a regra 66 ($@18) -Estado 105 + chamada_procedimento ir ao estado 140 + $@18 ir ao estado 101 - 72 chamada_procedimento: $@20 • lista_parametros - ABRE_PARENTESES deslocar, e ir ao estado 138 +Estado 105 - $padrão reduzir usando a regra 74 (lista_parametros) + 107 if_then: IF expressao $@24 • THEN comando_sem_rotulo - lista_parametros ir ao estado 139 + THEN deslocar, e ir ao estado 141 Estado 106 - 101 fator: ABRE_PARENTESES expressao • FECHA_PARENTESES + 81 expressao: expressao_simples IGUAL • expressao_simples - FECHA_PARENTESES deslocar, e ir ao estado 140 + ABRE_PARENTESES deslocar, e ir ao estado 119 + IDENT deslocar, e ir ao estado 73 + NUMERO deslocar, e ir ao estado 74 + + expressao_simples ir ao estado 142 + termo ir ao estado 77 + fator ir ao estado 78 Estado 107 - 86 expressao: expressao_simples • IGUAL expressao_simples - 87 | expressao_simples • DIFERENTE expressao_simples - 88 | expressao_simples • MENOR expressao_simples - 89 | expressao_simples • MENOR_IGUAL expressao_simples - 90 | expressao_simples • MAIOR expressao_simples - 91 | expressao_simples • MAIOR_IGUAL expressao_simples - 92 expressao_simples: expressao_simples • MAIS termo - 93 | expressao_simples • MENOS termo - 102 fator: ABRE_PARENTESES expressao_simples • FECHA_PARENTESES - - 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 + 82 expressao: expressao_simples DIFERENTE • expressao_simples + + ABRE_PARENTESES deslocar, e ir ao estado 119 + IDENT deslocar, e ir ao estado 73 + NUMERO deslocar, e ir ao estado 74 + + expressao_simples ir ao estado 143 + termo ir ao estado 77 + fator ir ao estado 78 Estado 108 - 99 fator: IDENT $@23 • chamada_procedimento + 84 expressao: expressao_simples MENOR_IGUAL • expressao_simples - $padrão reduzir usando a regra 71 ($@20) + ABRE_PARENTESES deslocar, e ir ao estado 119 + IDENT deslocar, e ir ao estado 73 + NUMERO deslocar, e ir ao estado 74 - chamada_procedimento ir ao estado 142 - $@20 ir ao estado 105 + expressao_simples ir ao estado 144 + termo ir ao estado 77 + fator ir ao estado 78 Estado 109 - 111 if_then: IF expressao $@26 • THEN comando_sem_rotulo + 86 expressao: expressao_simples MAIOR_IGUAL • expressao_simples + + ABRE_PARENTESES deslocar, e ir ao estado 119 + IDENT deslocar, e ir ao estado 73 + NUMERO deslocar, e ir ao estado 74 - THEN deslocar, e ir ao estado 143 + expressao_simples ir ao estado 145 + termo ir ao estado 77 + fator ir ao estado 78 Estado 110 - 86 expressao: expressao_simples IGUAL • expressao_simples + 83 expressao: expressao_simples MENOR • expressao_simples - ABRE_PARENTESES deslocar, e ir ao estado 78 - IDENT deslocar, e ir ao estado 79 - NUMERO deslocar, e ir ao estado 80 + ABRE_PARENTESES deslocar, e ir ao estado 119 + IDENT deslocar, e ir ao estado 73 + NUMERO deslocar, e ir ao estado 74 - expressao_simples ir ao estado 144 - termo ir ao estado 83 - fator ir ao estado 84 + expressao_simples ir ao estado 146 + termo ir ao estado 77 + fator ir ao estado 78 Estado 111 - 87 expressao: expressao_simples DIFERENTE • expressao_simples + 85 expressao: expressao_simples MAIOR • expressao_simples - ABRE_PARENTESES deslocar, e ir ao estado 78 - IDENT deslocar, e ir ao estado 79 - NUMERO deslocar, e ir ao estado 80 + ABRE_PARENTESES deslocar, e ir ao estado 119 + IDENT deslocar, e ir ao estado 73 + NUMERO deslocar, e ir ao estado 74 - expressao_simples ir ao estado 145 - termo ir ao estado 83 - fator ir ao estado 84 + expressao_simples ir ao estado 147 + termo ir ao estado 77 + fator ir ao estado 78 Estado 112 - 89 expressao: expressao_simples MENOR_IGUAL • expressao_simples + 88 expressao_simples: expressao_simples MAIS • termo - ABRE_PARENTESES deslocar, e ir ao estado 78 - IDENT deslocar, e ir ao estado 79 - NUMERO deslocar, e ir ao estado 80 + ABRE_PARENTESES deslocar, e ir ao estado 119 + IDENT deslocar, e ir ao estado 73 + NUMERO deslocar, e ir ao estado 74 - expressao_simples ir ao estado 146 - termo ir ao estado 83 - fator ir ao estado 84 + termo ir ao estado 148 + fator ir ao estado 78 Estado 113 - 91 expressao: expressao_simples MAIOR_IGUAL • expressao_simples + 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 + ABRE_PARENTESES deslocar, e ir ao estado 119 + IDENT deslocar, e ir ao estado 73 + NUMERO deslocar, e ir ao estado 74 - expressao_simples ir ao estado 147 - termo ir ao estado 83 - fator ir ao estado 84 + termo ir ao estado 149 + fator ir ao estado 78 Estado 114 - 88 expressao: expressao_simples MENOR • expressao_simples + 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 + ABRE_PARENTESES deslocar, e ir ao estado 119 + IDENT deslocar, e ir ao estado 73 + NUMERO deslocar, e ir ao estado 74 - expressao_simples ir ao estado 148 - termo ir ao estado 83 - fator ir ao estado 84 + fator ir ao estado 150 Estado 115 - 90 expressao: expressao_simples MAIOR • expressao_simples + 91 termo: termo ASTERISCO • fator - ABRE_PARENTESES deslocar, e ir ao estado 78 - IDENT deslocar, e ir ao estado 79 - NUMERO deslocar, e ir ao estado 80 + ABRE_PARENTESES deslocar, e ir ao estado 119 + IDENT deslocar, e ir ao estado 73 + NUMERO deslocar, e ir ao estado 74 - expressao_simples ir ao estado 149 - termo ir ao estado 83 - fator ir ao estado 84 + fator ir ao estado 151 Estado 116 - 92 expressao_simples: expressao_simples MAIS • termo + 77 simb_leitura: IDENT • - 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 + $padrão reduzir usando a regra 77 (simb_leitura) Estado 117 - 93 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 + 74 leitura: READ ABRE_PARENTESES lista_leituras • FECHA_PARENTESES + 75 lista_leituras: lista_leituras • VIRGULA simb_leitura - termo ir ao estado 151 - fator ir ao estado 84 + FECHA_PARENTESES deslocar, e ir ao estado 152 + VIRGULA deslocar, e ir ao estado 153 Estado 118 - 96 termo: termo DIV • fator + 76 lista_leituras: simb_leitura • - 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 152 + $padrão reduzir usando a regra 76 (lista_leituras) Estado 119 - 95 termo: termo ASTERISCO • fator + 97 fator: ABRE_PARENTESES • expressao FECHA_PARENTESES + 98 | ABRE_PARENTESES • expressao_simples FECHA_PARENTESES - ABRE_PARENTESES deslocar, e ir ao estado 78 - IDENT deslocar, e ir ao estado 79 - NUMERO deslocar, e ir ao estado 80 + ABRE_PARENTESES deslocar, e ir ao estado 72 + IDENT deslocar, e ir ao estado 73 + NUMERO deslocar, e ir ao estado 74 - fator ir ao estado 153 + expressao ir ao estado 154 + expressao_simples ir ao estado 103 + termo ir ao estado 77 + fator ir ao estado 78 Estado 120 - 82 simb_leitura: IDENT • + 78 escrita: WRITE ABRE_PARENTESES lista_escritas • FECHA_PARENTESES + 79 lista_escritas: lista_escritas • VIRGULA expressao_simples - $padrão reduzir usando a regra 82 (simb_leitura) + FECHA_PARENTESES deslocar, e ir ao estado 155 + VIRGULA deslocar, e ir ao estado 156 Estado 121 - 79 leitura: READ ABRE_PARENTESES lista_leituras • FECHA_PARENTESES - 80 lista_leituras: lista_leituras • VIRGULA simb_leitura + 80 lista_escritas: expressao_simples • + 88 expressao_simples: expressao_simples • MAIS termo + 89 | expressao_simples • MENOS termo + + MAIS deslocar, e ir ao estado 112 + MENOS deslocar, e ir ao estado 113 - FECHA_PARENTESES deslocar, e ir ao estado 154 - VIRGULA deslocar, e ir ao estado 155 + $padrão reduzir usando a regra 80 (lista_escritas) Estado 122 - 81 lista_leituras: simb_leitura • + 49 comandos: comando PONTO_E_VIRGULA comandos • - $padrão reduzir usando a regra 81 (lista_leituras) + $padrão reduzir usando a regra 49 (comandos) Estado 123 - 83 escrita: WRITE ABRE_PARENTESES lista_escritas • FECHA_PARENTESES - 84 lista_escritas: lista_escritas • VIRGULA expressao_simples + 52 comando: numero DOIS_PONTOS comando_sem_rotulo • - FECHA_PARENTESES deslocar, e ir ao estado 156 - VIRGULA deslocar, e ir ao estado 157 + $padrão reduzir usando a regra 52 (comando) Estado 124 - 85 lista_escritas: expressao_simples • - 92 expressao_simples: expressao_simples • MAIS termo - 93 | expressao_simples • MENOS termo + 102 comando_repetitivo: $@22 WHILE expressao • DO $@23 comando_sem_rotulo - MAIS deslocar, e ir ao estado 116 - MENOS deslocar, e ir ao estado 117 - - $padrão reduzir usando a regra 85 (lista_escritas) + DO deslocar, e ir ao estado 157 Estado 125 - 54 comandos: comando PONTO_E_VIRGULA comandos • + 104 cond_else: ELSE comando_sem_rotulo • - $padrão reduzir usando a regra 54 (comandos) + $padrão reduzir usando a regra 104 (cond_else) Estado 126 - 57 comando: numero DOIS_PONTOS comando_sem_rotulo • + 16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo $@6 PONTO_E_VIRGULA • - $padrão reduzir usando a regra 57 (comando) + $padrão reduzir usando a regra 16 (declara_var) Estado 127 - 106 comando_repetitivo: $@24 WHILE expressao • DO $@25 comando_sem_rotulo + 42 secao_pfs: VAR $@14 • lista_id_pf DOIS_PONTOS tipo - DO deslocar, e ir ao estado 158 + IDENT deslocar, e ir ao estado 130 + + lista_id_pf ir ao estado 158 + parametro ir ao estado 132 Estado 128 - 108 cond_else: ELSE comando_sem_rotulo • + 40 paramentros_formais: paramentros_formais PONTO_E_VIRGULA • secao_pfs + + VAR deslocar, e ir ao estado 88 - $padrão reduzir usando a regra 108 (cond_else) + $padrão reduzir usando a regra 43 ($@15) + + secao_pfs ir ao estado 159 + $@15 ir ao estado 91 Estado 129 - 16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo $@6 PONTO_E_VIRGULA • + 37 parametros_ou_nada: ABRE_PARENTESES $@12 paramentros_formais $@13 • FECHA_PARENTESES - $padrão reduzir usando a regra 16 (declara_var) + FECHA_PARENTESES deslocar, e ir ao estado 160 Estado 130 - 47 secao_pfs: VAR $@16 • lista_id_pf DOIS_PONTOS tipo - - IDENT deslocar, e ir ao estado 133 + 47 parametro: IDENT • - lista_id_pf ir ao estado 159 - parametro ir ao estado 135 + $padrão reduzir usando a regra 47 (parametro) Estado 131 - 45 paramentros_formais: paramentros_formais PONTO_E_VIRGULA • secao_pfs - - VAR deslocar, e ir ao estado 95 - - $padrão reduzir usando a regra 48 ($@17) + 44 secao_pfs: $@15 lista_id_pf • DOIS_PONTOS tipo - secao_pfs ir ao estado 160 - $@17 ir ao estado 98 + DOIS_PONTOS deslocar, e ir ao estado 161 Estado 132 - 42 parametros_ou_nada: ABRE_PARENTESES $@14 paramentros_formais $@15 • FECHA_PARENTESES + 45 lista_id_pf: parametro • VIRGULA lista_id_pf + 46 | parametro • - FECHA_PARENTESES deslocar, e ir ao estado 161 + VIRGULA deslocar, e ir ao estado 162 + + $padrão reduzir usando a regra 46 (lista_id_pf) Estado 133 - 52 parametro: IDENT • + 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada PONTO_E_VIRGULA corpo_funcao $@8 • PONTO_E_VIRGULA - $padrão reduzir usando a regra 52 (parametro) + PONTO_E_VIRGULA deslocar, e ir ao estado 163 Estado 134 - 49 secao_pfs: $@17 lista_id_pf • DOIS_PONTOS tipo + 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo • PONTO_E_VIRGULA corpo_funcao $@11 PONTO_E_VIRGULA - DOIS_PONTOS deslocar, e ir ao estado 162 + PONTO_E_VIRGULA deslocar, e ir ao estado 164 Estado 135 - 50 lista_id_pf: parametro • VIRGULA lista_id_pf - 51 | parametro • + 65 atribuicao: $@17 ATRIBUICAO • expressao_simples - VIRGULA deslocar, e ir ao estado 163 + ABRE_PARENTESES deslocar, e ir ao estado 119 + IDENT deslocar, e ir ao estado 73 + NUMERO deslocar, e ir ao estado 74 - $padrão reduzir usando a regra 51 (lista_id_pf) + expressao_simples ir ao estado 165 + termo ir ao estado 77 + fator ir ao estado 78 Estado 136 - 36 declaracao_funcao: FUNCTION IDENT $@11 parametros_ou_nada DOIS_PONTOS $@12 tipo • PONTO_E_VIRGULA corpo_funcao $@13 PONTO_E_VIRGULA + 68 lista_parametros: ABRE_PARENTESES • lista_parametros_parenteses FECHA_PARENTESES - PONTO_E_VIRGULA deslocar, e ir ao estado 164 + $padrão reduzir usando a regra 72 ($@20) + + lista_parametros_parenteses ir ao estado 166 + $@20 ir ao estado 167 Estado 137 - 70 atribuicao: $@19 ATRIBUICAO • expressao_simples + 67 chamada_procedimento: $@18 lista_parametros • - 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 + $padrão reduzir usando a regra 67 (chamada_procedimento) Estado 138 - 73 lista_parametros: ABRE_PARENTESES • lista_parametros_parenteses FECHA_PARENTESES - - $padrão reduzir usando a regra 77 ($@22) + 87 expressao: ABRE_PARENTESES expressao FECHA_PARENTESES • + 97 fator: ABRE_PARENTESES expressao FECHA_PARENTESES • - lista_parametros_parenteses ir ao estado 166 - $@22 ir ao estado 167 + FECHA_PARENTESES reduzir usando a regra 87 (expressao) + FECHA_PARENTESES [reduzir usando a regra 97 (fator)] + THEN reduzir usando a regra 87 (expressao) + DO reduzir usando a regra 87 (expressao) + $padrão reduzir usando a regra 97 (fator) Estado 139 - 72 chamada_procedimento: $@20 lista_parametros • + 98 fator: ABRE_PARENTESES expressao_simples FECHA_PARENTESES • - $padrão reduzir usando a regra 72 (chamada_procedimento) + $padrão reduzir usando a regra 98 (fator) Estado 140 - 101 fator: ABRE_PARENTESES expressao FECHA_PARENTESES • + 95 fator: IDENT $@21 chamada_procedimento • - $padrão reduzir usando a regra 101 (fator) + $padrão reduzir usando a regra 95 (fator) Estado 141 - 102 fator: ABRE_PARENTESES expressao_simples FECHA_PARENTESES • + 107 if_then: IF expressao $@24 THEN • comando_sem_rotulo - $padrão reduzir usando a regra 102 (fator) + T_BEGIN deslocar, e ir ao estado 41 + IDENT deslocar, e ir ao estado 48 + IF deslocar, e ir ao estado 49 + READ deslocar, e ir ao estado 51 + WRITE deslocar, e ir ao estado 52 + + $padrão reduzir usando a regra 100 ($@22) + + comando_composto ir ao estado 53 + comando_sem_rotulo ir ao estado 168 + atribuicao_ou_procedimento ir ao estado 57 + leitura ir ao estado 58 + escrita ir ao estado 59 + comando_repetitivo ir ao estado 61 + $@22 ir ao estado 62 + comando_condicional ir ao estado 63 + if_then ir ao estado 64 Estado 142 - 99 fator: IDENT $@23 chamada_procedimento • + 81 expressao: expressao_simples IGUAL expressao_simples • + 88 expressao_simples: expressao_simples • MAIS termo + 89 | expressao_simples • MENOS termo - $padrão reduzir usando a regra 99 (fator) + MAIS deslocar, e ir ao estado 112 + MENOS deslocar, e ir ao estado 113 + $padrão reduzir usando a regra 81 (expressao) -Estado 143 - 111 if_then: IF expressao $@26 THEN • comando_sem_rotulo +Estado 143 - T_BEGIN deslocar, e ir ao estado 42 - 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 + 82 expressao: expressao_simples DIFERENTE expressao_simples • + 88 expressao_simples: expressao_simples • MAIS termo + 89 | expressao_simples • MENOS termo - $padrão reduzir usando a regra 104 ($@24) + MAIS deslocar, e ir ao estado 112 + MENOS deslocar, e ir ao estado 113 - 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 + $padrão reduzir usando a regra 82 (expressao) Estado 144 - 86 expressao: expressao_simples IGUAL expressao_simples • - 92 expressao_simples: expressao_simples • MAIS termo - 93 | expressao_simples • MENOS termo + 84 expressao: expressao_simples MENOR_IGUAL 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 + MAIS deslocar, e ir ao estado 112 + MENOS deslocar, e ir ao estado 113 - $padrão reduzir usando a regra 86 (expressao) + $padrão reduzir usando a regra 84 (expressao) Estado 145 - 87 expressao: expressao_simples DIFERENTE expressao_simples • - 92 expressao_simples: expressao_simples • MAIS termo - 93 | expressao_simples • MENOS termo + 86 expressao: expressao_simples MAIOR_IGUAL 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 + MAIS deslocar, e ir ao estado 112 + MENOS deslocar, e ir ao estado 113 - $padrão reduzir usando a regra 87 (expressao) + $padrão reduzir usando a regra 86 (expressao) Estado 146 - 89 expressao: expressao_simples MENOR_IGUAL expressao_simples • - 92 expressao_simples: expressao_simples • MAIS termo - 93 | expressao_simples • MENOS termo + 83 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 + MAIS deslocar, e ir ao estado 112 + MENOS deslocar, e ir ao estado 113 - $padrão reduzir usando a regra 89 (expressao) + $padrão reduzir usando a regra 83 (expressao) Estado 147 - 91 expressao: expressao_simples MAIOR_IGUAL expressao_simples • - 92 expressao_simples: expressao_simples • MAIS termo - 93 | expressao_simples • MENOS termo + 85 expressao: expressao_simples MAIOR 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 + MAIS deslocar, e ir ao estado 112 + MENOS deslocar, e ir ao estado 113 - $padrão reduzir usando a regra 91 (expressao) + $padrão reduzir usando a regra 85 (expressao) Estado 148 - 88 expressao: expressao_simples MENOR expressao_simples • - 92 expressao_simples: expressao_simples • MAIS termo - 93 | expressao_simples • MENOS termo + 88 expressao_simples: expressao_simples MAIS termo • + 91 termo: termo • ASTERISCO fator + 92 | termo • DIV fator - MAIS deslocar, e ir ao estado 116 - MENOS deslocar, e ir ao estado 117 + DIV deslocar, e ir ao estado 114 + ASTERISCO deslocar, e ir ao estado 115 - $padrão reduzir usando a regra 88 (expressao) + $padrão reduzir usando a regra 88 (expressao_simples) Estado 149 - 90 expressao: expressao_simples MAIOR expressao_simples • - 92 expressao_simples: expressao_simples • MAIS termo - 93 | expressao_simples • MENOS termo + 89 expressao_simples: expressao_simples MENOS termo • + 91 termo: termo • ASTERISCO fator + 92 | termo • DIV fator - MAIS deslocar, e ir ao estado 116 - MENOS deslocar, e ir ao estado 117 + DIV deslocar, e ir ao estado 114 + ASTERISCO deslocar, e ir ao estado 115 - $padrão reduzir usando a regra 90 (expressao) + $padrão reduzir usando a regra 89 (expressao_simples) Estado 150 - 92 expressao_simples: expressao_simples MAIS termo • - 95 termo: termo • ASTERISCO fator - 96 | termo • DIV fator + 92 termo: termo DIV fator • - DIV deslocar, e ir ao estado 118 - ASTERISCO deslocar, e ir ao estado 119 - - $padrão reduzir usando a regra 92 (expressao_simples) + $padrão reduzir usando a regra 92 (termo) Estado 151 - 93 expressao_simples: expressao_simples MENOS termo • - 95 termo: termo • ASTERISCO fator - 96 | termo • DIV fator - - DIV deslocar, e ir ao estado 118 - ASTERISCO deslocar, e ir ao estado 119 + 91 termo: termo ASTERISCO fator • - $padrão reduzir usando a regra 93 (expressao_simples) + $padrão reduzir usando a regra 91 (termo) Estado 152 - 96 termo: termo DIV fator • + 74 leitura: READ ABRE_PARENTESES lista_leituras FECHA_PARENTESES • - $padrão reduzir usando a regra 96 (termo) + $padrão reduzir usando a regra 74 (leitura) Estado 153 - 95 termo: termo ASTERISCO fator • + 75 lista_leituras: lista_leituras VIRGULA • simb_leitura - $padrão reduzir usando a regra 95 (termo) + IDENT deslocar, e ir ao estado 116 + + simb_leitura ir ao estado 169 Estado 154 - 79 leitura: READ ABRE_PARENTESES lista_leituras FECHA_PARENTESES • + 97 fator: ABRE_PARENTESES expressao • FECHA_PARENTESES - $padrão reduzir usando a regra 79 (leitura) + FECHA_PARENTESES deslocar, e ir ao estado 170 Estado 155 - 80 lista_leituras: lista_leituras VIRGULA • simb_leitura - - IDENT deslocar, e ir ao estado 120 + 78 escrita: WRITE ABRE_PARENTESES lista_escritas FECHA_PARENTESES • - simb_leitura ir ao estado 169 + $padrão reduzir usando a regra 78 (escrita) Estado 156 - 83 escrita: WRITE ABRE_PARENTESES lista_escritas FECHA_PARENTESES • + 79 lista_escritas: lista_escritas VIRGULA • expressao_simples + + ABRE_PARENTESES deslocar, e ir ao estado 119 + IDENT deslocar, e ir ao estado 73 + NUMERO deslocar, e ir ao estado 74 - $padrão reduzir usando a regra 83 (escrita) + expressao_simples ir ao estado 171 + termo ir ao estado 77 + fator ir ao estado 78 Estado 157 - 84 lista_escritas: lista_escritas VIRGULA • expressao_simples + 102 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 + $padrão reduzir usando a regra 101 ($@23) - expressao_simples ir ao estado 170 - termo ir ao estado 83 - fator ir ao estado 84 + $@23 ir ao estado 172 Estado 158 - 106 comando_repetitivo: $@24 WHILE expressao DO • $@25 comando_sem_rotulo + 42 secao_pfs: VAR $@14 lista_id_pf • DOIS_PONTOS tipo - $padrão reduzir usando a regra 105 ($@25) - - $@25 ir ao estado 171 + DOIS_PONTOS deslocar, e ir ao estado 173 Estado 159 - 47 secao_pfs: VAR $@16 lista_id_pf • DOIS_PONTOS tipo + 40 paramentros_formais: paramentros_formais PONTO_E_VIRGULA secao_pfs • - DOIS_PONTOS deslocar, e ir ao estado 172 + $padrão reduzir usando a regra 40 (paramentros_formais) Estado 160 - 45 paramentros_formais: paramentros_formais PONTO_E_VIRGULA secao_pfs • + 37 parametros_ou_nada: ABRE_PARENTESES $@12 paramentros_formais $@13 FECHA_PARENTESES • - $padrão reduzir usando a regra 45 (paramentros_formais) + $padrão reduzir usando a regra 37 (parametros_ou_nada) Estado 161 - 42 parametros_ou_nada: ABRE_PARENTESES $@14 paramentros_formais $@15 FECHA_PARENTESES • + 44 secao_pfs: $@15 lista_id_pf DOIS_PONTOS • tipo + + IDENT deslocar, e ir ao estado 66 - $padrão reduzir usando a regra 42 (parametros_ou_nada) + tipo ir ao estado 174 Estado 162 - 49 secao_pfs: $@17 lista_id_pf DOIS_PONTOS • tipo + 45 lista_id_pf: parametro VIRGULA • lista_id_pf - IDENT deslocar, e ir ao estado 72 + IDENT deslocar, e ir ao estado 130 - tipo ir ao estado 173 + lista_id_pf ir ao estado 175 + parametro ir ao estado 132 Estado 163 - 50 lista_id_pf: parametro VIRGULA • lista_id_pf - - IDENT deslocar, e ir ao estado 133 + 27 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada PONTO_E_VIRGULA corpo_funcao $@8 PONTO_E_VIRGULA • - lista_id_pf ir ao estado 174 - parametro ir ao estado 135 + $padrão reduzir usando a regra 27 (declaracao_procedimento) Estado 164 - 36 declaracao_funcao: FUNCTION IDENT $@11 parametros_ou_nada DOIS_PONTOS $@12 tipo PONTO_E_VIRGULA • corpo_funcao $@13 PONTO_E_VIRGULA + 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA • corpo_funcao $@11 PONTO_E_VIRGULA LABEL deslocar, e ir ao estado 13 - FORWARD deslocar, e ir ao estado 175 + FORWARD deslocar, e ir ao estado 92 $padrão reduzir usando a regra 7 (parte_declara_rotulos) - bloco ir ao estado 176 + bloco ir ao estado 93 parte_declara_rotulos ir ao estado 15 - corpo_funcao ir ao estado 177 - forward ir ao estado 178 + corpo_funcao ir ao estado 176 + forward ir ao estado 95 Estado 165 - 70 atribuicao: $@19 ATRIBUICAO expressao_simples • - 92 expressao_simples: expressao_simples • MAIS termo - 93 | expressao_simples • MENOS termo + 65 atribuicao: $@17 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 + MAIS deslocar, e ir ao estado 112 + MENOS deslocar, e ir ao estado 113 - $padrão reduzir usando a regra 70 (atribuicao) + $padrão reduzir usando a regra 65 (atribuicao) Estado 166 - 73 lista_parametros: ABRE_PARENTESES lista_parametros_parenteses • FECHA_PARENTESES - 76 lista_parametros_parenteses: lista_parametros_parenteses • VIRGULA $@21 expressao_simples + 68 lista_parametros: ABRE_PARENTESES lista_parametros_parenteses • FECHA_PARENTESES + 71 lista_parametros_parenteses: lista_parametros_parenteses • VIRGULA $@19 expressao_simples - FECHA_PARENTESES deslocar, e ir ao estado 179 - VIRGULA deslocar, e ir ao estado 180 + FECHA_PARENTESES deslocar, e ir ao estado 177 + VIRGULA deslocar, e ir ao estado 178 Estado 167 - 78 lista_parametros_parenteses: $@22 • expressao_simples + 73 lista_parametros_parenteses: $@20 • expressao_simples - ABRE_PARENTESES deslocar, e ir ao estado 78 - IDENT deslocar, e ir ao estado 79 - NUMERO deslocar, e ir ao estado 80 + ABRE_PARENTESES deslocar, e ir ao estado 119 + IDENT deslocar, e ir ao estado 73 + NUMERO deslocar, e ir ao estado 74 - expressao_simples ir ao estado 181 - termo ir ao estado 83 - fator ir ao estado 84 + expressao_simples ir ao estado 179 + termo ir ao estado 77 + fator ir ao estado 78 Estado 168 - 111 if_then: IF expressao $@26 THEN comando_sem_rotulo • + 107 if_then: IF expressao $@24 THEN comando_sem_rotulo • - $padrão reduzir usando a regra 111 (if_then) + $padrão reduzir usando a regra 107 (if_then) Estado 169 - 80 lista_leituras: lista_leituras VIRGULA simb_leitura • + 75 lista_leituras: lista_leituras VIRGULA simb_leitura • - $padrão reduzir usando a regra 80 (lista_leituras) + $padrão reduzir usando a regra 75 (lista_leituras) Estado 170 - 84 lista_escritas: lista_escritas VIRGULA expressao_simples • - 92 expressao_simples: expressao_simples • MAIS termo - 93 | expressao_simples • MENOS termo - - MAIS deslocar, e ir ao estado 116 - MENOS deslocar, e ir ao estado 117 + 97 fator: ABRE_PARENTESES expressao FECHA_PARENTESES • - $padrão reduzir usando a regra 84 (lista_escritas) + $padrão reduzir usando a regra 97 (fator) Estado 171 - 106 comando_repetitivo: $@24 WHILE expressao DO $@25 • comando_sem_rotulo + 79 lista_escritas: lista_escritas VIRGULA expressao_simples • + 88 expressao_simples: expressao_simples • MAIS termo + 89 | expressao_simples • MENOS termo - T_BEGIN deslocar, e ir ao estado 42 - 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 + MAIS deslocar, e ir ao estado 112 + MENOS deslocar, e ir ao estado 113 - $padrão reduzir usando a regra 104 ($@24) - - comando_composto ir ao estado 58 - comando_sem_rotulo ir ao estado 182 - 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 + $padrão reduzir usando a regra 79 (lista_escritas) Estado 172 - 47 secao_pfs: VAR $@16 lista_id_pf DOIS_PONTOS • tipo + 102 comando_repetitivo: $@22 WHILE expressao DO $@23 • comando_sem_rotulo + + T_BEGIN deslocar, e ir ao estado 41 + IDENT deslocar, e ir ao estado 48 + IF deslocar, e ir ao estado 49 + READ deslocar, e ir ao estado 51 + WRITE deslocar, e ir ao estado 52 - IDENT deslocar, e ir ao estado 72 + $padrão reduzir usando a regra 100 ($@22) - tipo ir ao estado 183 + comando_composto ir ao estado 53 + comando_sem_rotulo ir ao estado 180 + atribuicao_ou_procedimento ir ao estado 57 + leitura ir ao estado 58 + escrita ir ao estado 59 + comando_repetitivo ir ao estado 61 + $@22 ir ao estado 62 + comando_condicional ir ao estado 63 + if_then ir ao estado 64 Estado 173 - 49 secao_pfs: $@17 lista_id_pf DOIS_PONTOS tipo • + 42 secao_pfs: VAR $@14 lista_id_pf DOIS_PONTOS • tipo - $padrão reduzir usando a regra 49 (secao_pfs) + IDENT deslocar, e ir ao estado 66 + + tipo ir ao estado 181 Estado 174 - 50 lista_id_pf: parametro VIRGULA lista_id_pf • + 44 secao_pfs: $@15 lista_id_pf DOIS_PONTOS tipo • - $padrão reduzir usando a regra 50 (lista_id_pf) + $padrão reduzir usando a regra 44 (secao_pfs) Estado 175 - 39 forward: FORWARD • + 45 lista_id_pf: parametro VIRGULA lista_id_pf • - $padrão reduzir usando a regra 39 (forward) + $padrão reduzir usando a regra 45 (lista_id_pf) Estado 176 - 38 corpo_funcao: bloco • + 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA corpo_funcao • $@11 PONTO_E_VIRGULA - $padrão reduzir usando a regra 38 (corpo_funcao) + $padrão reduzir usando a regra 30 ($@11) + $@11 ir ao estado 182 -Estado 177 - 36 declaracao_funcao: FUNCTION IDENT $@11 parametros_ou_nada DOIS_PONTOS $@12 tipo PONTO_E_VIRGULA corpo_funcao • $@13 PONTO_E_VIRGULA +Estado 177 - $padrão reduzir usando a regra 35 ($@13) + 68 lista_parametros: ABRE_PARENTESES lista_parametros_parenteses FECHA_PARENTESES • - $@13 ir ao estado 184 + $padrão reduzir usando a regra 68 (lista_parametros) Estado 178 - 37 corpo_funcao: forward • + 71 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA • $@19 expressao_simples - $padrão reduzir usando a regra 37 (corpo_funcao) + $padrão reduzir usando a regra 70 ($@19) + + $@19 ir ao estado 183 Estado 179 - 73 lista_parametros: ABRE_PARENTESES lista_parametros_parenteses FECHA_PARENTESES • + 73 lista_parametros_parenteses: $@20 expressao_simples • + 88 expressao_simples: expressao_simples • MAIS termo + 89 | expressao_simples • MENOS termo - $padrão reduzir usando a regra 73 (lista_parametros) + MAIS deslocar, e ir ao estado 112 + MENOS deslocar, e ir ao estado 113 + $padrão reduzir usando a regra 73 (lista_parametros_parenteses) -Estado 180 - 76 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA • $@21 expressao_simples +Estado 180 - $padrão reduzir usando a regra 75 ($@21) + 102 comando_repetitivo: $@22 WHILE expressao DO $@23 comando_sem_rotulo • - $@21 ir ao estado 185 + $padrão reduzir usando a regra 102 (comando_repetitivo) Estado 181 - 78 lista_parametros_parenteses: $@22 expressao_simples • - 92 expressao_simples: expressao_simples • MAIS termo - 93 | expressao_simples • MENOS termo - - MAIS deslocar, e ir ao estado 116 - MENOS deslocar, e ir ao estado 117 + 42 secao_pfs: VAR $@14 lista_id_pf DOIS_PONTOS tipo • - $padrão reduzir usando a regra 78 (lista_parametros_parenteses) + $padrão reduzir usando a regra 42 (secao_pfs) Estado 182 - 106 comando_repetitivo: $@24 WHILE expressao DO $@25 comando_sem_rotulo • + 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA corpo_funcao $@11 • PONTO_E_VIRGULA - $padrão reduzir usando a regra 106 (comando_repetitivo) + PONTO_E_VIRGULA deslocar, e ir ao estado 184 Estado 183 - 47 secao_pfs: VAR $@16 lista_id_pf DOIS_PONTOS tipo • + 71 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA $@19 • expressao_simples - $padrão reduzir usando a regra 47 (secao_pfs) + ABRE_PARENTESES deslocar, e ir ao estado 119 + IDENT deslocar, e ir ao estado 73 + NUMERO deslocar, e ir ao estado 74 + + expressao_simples ir ao estado 185 + termo ir ao estado 77 + fator ir ao estado 78 Estado 184 - 36 declaracao_funcao: FUNCTION IDENT $@11 parametros_ou_nada DOIS_PONTOS $@12 tipo PONTO_E_VIRGULA corpo_funcao $@13 • PONTO_E_VIRGULA + 31 declaracao_funcao: FUNCTION IDENT $@9 parametros_ou_nada DOIS_PONTOS $@10 tipo PONTO_E_VIRGULA corpo_funcao $@11 PONTO_E_VIRGULA • - PONTO_E_VIRGULA deslocar, e ir ao estado 186 + $padrão reduzir usando a regra 31 (declaracao_funcao) Estado 185 - 76 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 187 - termo ir ao estado 83 - fator ir ao estado 84 - - -Estado 186 - - 36 declaracao_funcao: FUNCTION IDENT $@11 parametros_ou_nada DOIS_PONTOS $@12 tipo PONTO_E_VIRGULA corpo_funcao $@13 PONTO_E_VIRGULA • - - $padrão reduzir usando a regra 36 (declaracao_funcao) - - -Estado 187 - - 76 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA $@21 expressao_simples • - 92 expressao_simples: expressao_simples • MAIS termo - 93 | expressao_simples • MENOS termo + 71 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA $@19 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 + MAIS deslocar, e ir ao estado 112 + MENOS deslocar, e ir ao estado 113 - $padrão reduzir usando a regra 76 (lista_parametros_parenteses) + $padrão reduzir usando a regra 71 (lista_parametros_parenteses) diff --git a/ALTERADO/compilador.tab.c b/ALTERADO/compilador.tab.c index 8385516..23c0e5f 100644 --- a/ALTERADO/compilador.tab.c +++ b/ALTERADO/compilador.tab.c @@ -186,58 +186,54 @@ enum yysymbol_kind_t YYSYMBOL_declaracao_procedimento = 62, /* declaracao_procedimento */ YYSYMBOL_63_7 = 63, /* $@7 */ YYSYMBOL_64_8 = 64, /* $@8 */ - YYSYMBOL_inicializa_procedimento = 65, /* inicializa_procedimento */ + YYSYMBOL_declaracao_funcao = 65, /* declaracao_funcao */ YYSYMBOL_66_9 = 66, /* $@9 */ YYSYMBOL_67_10 = 67, /* $@10 */ - YYSYMBOL_corpo_procedimento = 68, /* corpo_procedimento */ - YYSYMBOL_declaracao_funcao = 69, /* declaracao_funcao */ - YYSYMBOL_70_11 = 70, /* $@11 */ - YYSYMBOL_71_12 = 71, /* $@12 */ - YYSYMBOL_72_13 = 72, /* $@13 */ - YYSYMBOL_corpo_funcao = 73, /* corpo_funcao */ - YYSYMBOL_forward = 74, /* forward */ - YYSYMBOL_parametros_ou_nada = 75, /* parametros_ou_nada */ + YYSYMBOL_68_11 = 68, /* $@11 */ + YYSYMBOL_corpo_funcao = 69, /* corpo_funcao */ + YYSYMBOL_forward = 70, /* forward */ + YYSYMBOL_parametros_ou_nada = 71, /* parametros_ou_nada */ + YYSYMBOL_72_12 = 72, /* $@12 */ + YYSYMBOL_73_13 = 73, /* $@13 */ + YYSYMBOL_paramentros_formais = 74, /* paramentros_formais */ + YYSYMBOL_secao_pfs = 75, /* secao_pfs */ YYSYMBOL_76_14 = 76, /* $@14 */ YYSYMBOL_77_15 = 77, /* $@15 */ - YYSYMBOL_paramentros_formais = 78, /* paramentros_formais */ - YYSYMBOL_secao_pfs = 79, /* secao_pfs */ - YYSYMBOL_80_16 = 80, /* $@16 */ - YYSYMBOL_81_17 = 81, /* $@17 */ - YYSYMBOL_lista_id_pf = 82, /* lista_id_pf */ - YYSYMBOL_parametro = 83, /* parametro */ - YYSYMBOL_comando_composto = 84, /* comando_composto */ - YYSYMBOL_comandos = 85, /* comandos */ - YYSYMBOL_comando = 86, /* comando */ - YYSYMBOL_comando_sem_rotulo = 87, /* comando_sem_rotulo */ - YYSYMBOL_atribuicao_ou_procedimento = 88, /* atribuicao_ou_procedimento */ - YYSYMBOL_89_18 = 89, /* $@18 */ - YYSYMBOL_atribuicao_ou_procedimento_token = 90, /* atribuicao_ou_procedimento_token */ - YYSYMBOL_atribuicao = 91, /* atribuicao */ - YYSYMBOL_92_19 = 92, /* $@19 */ - YYSYMBOL_chamada_procedimento = 93, /* chamada_procedimento */ + YYSYMBOL_lista_id_pf = 78, /* lista_id_pf */ + YYSYMBOL_parametro = 79, /* parametro */ + YYSYMBOL_comando_composto = 80, /* comando_composto */ + YYSYMBOL_comandos = 81, /* comandos */ + YYSYMBOL_comando = 82, /* comando */ + YYSYMBOL_comando_sem_rotulo = 83, /* comando_sem_rotulo */ + YYSYMBOL_atribuicao_ou_procedimento = 84, /* atribuicao_ou_procedimento */ + YYSYMBOL_85_16 = 85, /* $@16 */ + YYSYMBOL_atribuicao_ou_procedimento_token = 86, /* atribuicao_ou_procedimento_token */ + YYSYMBOL_atribuicao = 87, /* atribuicao */ + YYSYMBOL_88_17 = 88, /* $@17 */ + YYSYMBOL_chamada_procedimento = 89, /* chamada_procedimento */ + YYSYMBOL_90_18 = 90, /* $@18 */ + YYSYMBOL_lista_parametros = 91, /* lista_parametros */ + YYSYMBOL_lista_parametros_parenteses = 92, /* lista_parametros_parenteses */ + YYSYMBOL_93_19 = 93, /* $@19 */ YYSYMBOL_94_20 = 94, /* $@20 */ - YYSYMBOL_lista_parametros = 95, /* lista_parametros */ - YYSYMBOL_lista_parametros_parenteses = 96, /* lista_parametros_parenteses */ - YYSYMBOL_97_21 = 97, /* $@21 */ - YYSYMBOL_98_22 = 98, /* $@22 */ - YYSYMBOL_leitura = 99, /* leitura */ - YYSYMBOL_lista_leituras = 100, /* lista_leituras */ - YYSYMBOL_simb_leitura = 101, /* simb_leitura */ - YYSYMBOL_escrita = 102, /* escrita */ - YYSYMBOL_lista_escritas = 103, /* lista_escritas */ - YYSYMBOL_expressao = 104, /* expressao */ - YYSYMBOL_expressao_simples = 105, /* expressao_simples */ - YYSYMBOL_termo = 106, /* termo */ - YYSYMBOL_fator = 107, /* fator */ + YYSYMBOL_leitura = 95, /* leitura */ + YYSYMBOL_lista_leituras = 96, /* lista_leituras */ + YYSYMBOL_simb_leitura = 97, /* simb_leitura */ + YYSYMBOL_escrita = 98, /* escrita */ + YYSYMBOL_lista_escritas = 99, /* lista_escritas */ + YYSYMBOL_expressao = 100, /* expressao */ + YYSYMBOL_expressao_simples = 101, /* expressao_simples */ + YYSYMBOL_termo = 102, /* termo */ + YYSYMBOL_fator = 103, /* fator */ + YYSYMBOL_104_21 = 104, /* $@21 */ + YYSYMBOL_numero = 105, /* numero */ + YYSYMBOL_comando_repetitivo = 106, /* comando_repetitivo */ + YYSYMBOL_107_22 = 107, /* $@22 */ YYSYMBOL_108_23 = 108, /* $@23 */ - YYSYMBOL_numero = 109, /* numero */ - YYSYMBOL_comando_repetitivo = 110, /* comando_repetitivo */ - YYSYMBOL_111_24 = 111, /* $@24 */ - YYSYMBOL_112_25 = 112, /* $@25 */ - YYSYMBOL_comando_condicional = 113, /* comando_condicional */ - YYSYMBOL_cond_else = 114, /* cond_else */ - YYSYMBOL_if_then = 115, /* if_then */ - YYSYMBOL_116_26 = 116 /* $@26 */ + YYSYMBOL_comando_condicional = 109, /* comando_condicional */ + YYSYMBOL_cond_else = 110, /* cond_else */ + YYSYMBOL_if_then = 111, /* if_then */ + YYSYMBOL_112_24 = 112 /* $@24 */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -570,11 +566,11 @@ union yyalloc /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 44 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 73 +#define YYNNTS 69 /* YYNRULES -- Number of rules. */ -#define YYNRULES 112 +#define YYNRULES 108 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 188 +#define YYNSTATES 186 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 298 @@ -629,16 +625,15 @@ 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, 160, 161, 166, 193, 166, 203, - 216, 203, 229, 230, 235, 264, 268, 235, 280, 281, - 284, 302, 303, 301, 311, 314, 315, 319, 318, 328, - 328, 336, 337, 340, 350, 353, 354, 355, 358, 359, - 362, 363, 364, 365, 366, 367, 370, 370, 374, 375, - 378, 378, 409, 409, 451, 454, 458, 457, 470, 470, - 484, 487, 488, 491, 500, 503, 506, 511, 514, 517, - 520, 523, 526, 531, 537, 543, 546, 549, 552, 555, - 555, 600, 610, 611, 614, 616, 623, 616, 649, 656, - 658, 661, 661 + 143, 154, 155, 159, 160, 161, 166, 195, 166, 209, + 238, 242, 209, 254, 255, 258, 276, 277, 275, 285, + 288, 289, 293, 292, 302, 302, 310, 311, 314, 324, + 327, 328, 329, 332, 333, 336, 337, 338, 339, 340, + 341, 344, 344, 348, 349, 352, 352, 383, 383, 425, + 428, 432, 431, 444, 444, 458, 461, 462, 465, 474, + 477, 480, 485, 488, 491, 494, 497, 500, 503, 506, + 512, 518, 521, 524, 527, 530, 530, 575, 585, 586, + 589, 591, 598, 591, 624, 631, 633, 636, 636 }; #endif @@ -665,19 +660,17 @@ static const char *const yytname[] = "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", "inicializa_procedimento", "$@9", "$@10", - "corpo_procedimento", "declaracao_funcao", "$@11", "$@12", "$@13", - "corpo_funcao", "forward", "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", + "$@7", "$@8", "declaracao_funcao", "$@9", "$@10", "$@11", "corpo_funcao", + "forward", "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", "$@23", "numero", - "comando_repetitivo", "$@24", "$@25", "comando_condicional", "cond_else", - "if_then", "$@26", YY_NULLPTR + "expressao", "expressao_simples", "termo", "fator", "$@21", "numero", + "comando_repetitivo", "$@22", "$@23", "comando_condicional", "cond_else", + "if_then", "$@24", YY_NULLPTR }; static const char * @@ -687,39 +680,39 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#define YYPACT_NINF (-125) +#define YYPACT_NINF (-121) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-106) +#define YYTABLE_NINF (-102) #define yytable_value_is_error(Yyn) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -static const yytype_int8 yypact[] = +static const yytype_int16 yypact[] = { - -125, 15, 29, -125, -1, 17, 38, -125, 18, 46, - 44, 49, -125, 53, 78, 79, -125, -125, -125, -125, - 80, 7, -125, 81, 82, -125, -125, 7, 83, -125, - 84, -125, -125, 88, 7, 12, -125, -125, -125, 5, - 89, 89, 42, -125, -125, -125, -125, -125, 86, 87, - -125, -125, 93, -125, 1, -125, 98, 99, -125, 94, - 97, -125, -125, -125, -125, 101, -125, 90, -125, 92, - 100, -125, -125, -125, 104, 103, -125, 105, 1, -125, - -125, -125, 37, -20, -125, 107, 1, -125, 42, 9, - 1, 9, -125, -125, 106, -125, 110, -125, 108, -125, - 87, -125, -125, 109, -125, 102, 113, 11, -125, 111, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - -125, 23, -125, 56, 40, -125, -125, 112, -125, -125, - 108, 104, 117, -125, 116, 119, 120, 1, -125, -125, - -125, -125, -125, 9, 40, 40, 40, 40, 40, 40, - -20, -20, -125, -125, -125, 107, -125, 1, -125, 118, - -125, -125, 87, 108, 16, 40, 73, 1, -125, -125, - 40, 9, 87, -125, -125, -125, -125, -125, -125, -125, - -125, 40, -125, -125, 121, 1, -125, 40 + -121, 12, 14, -121, 7, 21, 31, -121, 18, 39, + 41, 63, -121, 56, 73, 71, -121, -121, -121, -121, + 75, 13, -121, 76, 78, -121, 13, 13, 79, -121, + 80, -121, -121, 84, -121, -121, -121, -121, 5, 100, + 100, 9, -121, 92, 93, -121, 81, 99, -121, 1, + -121, 104, 105, -121, 101, 103, -121, -121, -121, -121, + 106, -121, 89, -121, 94, -121, -121, -121, 107, 3, + -121, 102, 1, -121, -121, -121, 66, -17, -121, 108, + 2, -121, 9, 45, 1, 45, -121, 111, -121, 113, + -121, 109, -121, -121, -121, -121, 93, -121, -121, 110, + -121, 119, 120, 38, -121, 112, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, -121, 22, -121, 1, + 47, 20, -121, -121, 90, -121, -121, 109, 107, 121, + -121, 122, 123, 124, 125, 2, -121, -121, 4, -121, + -121, 45, 20, 20, 20, 20, 20, 20, -17, -17, + -121, -121, -121, 108, 128, -121, 2, -121, 127, -121, + -121, 93, 109, -121, 3, 20, 55, 2, -121, -121, + -121, 20, 45, 93, -121, -121, -121, -121, -121, 20, + -121, -121, 129, 2, -121, 20 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -729,49 +722,47 @@ 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, 0, 5, 29, 25, 11, 14, - 0, 26, 34, 0, 25, 8, 24, 13, 20, 0, - 44, 44, 57, 6, 23, 33, 32, 30, 0, 0, - 41, 27, 0, 66, 0, 104, 0, 0, 61, 0, - 0, 59, 60, 64, 65, 0, 63, 0, 62, 110, - 0, 19, 18, 16, 49, 0, 35, 72, 0, 99, - 101, 111, 0, 95, 98, 0, 0, 54, 56, 105, - 0, 105, 108, 31, 0, 47, 42, 45, 0, 28, - 0, 67, 68, 0, 69, 75, 0, 0, 72, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 0, 82, 0, 86, 55, 58, 0, 109, 17, - 0, 49, 0, 53, 0, 52, 0, 0, 78, 73, - 102, 103, 100, 105, 87, 88, 90, 92, 89, 91, - 93, 94, 97, 96, 80, 0, 84, 0, 106, 0, - 46, 43, 0, 0, 8, 71, 0, 0, 112, 81, - 85, 105, 0, 50, 51, 40, 39, 36, 38, 74, - 76, 79, 107, 48, 0, 0, 37, 77 + 0, 25, 15, 0, 0, 5, 25, 25, 11, 14, + 0, 26, 29, 0, 23, 24, 13, 20, 0, 39, + 39, 52, 6, 0, 0, 36, 0, 0, 61, 0, + 100, 0, 0, 56, 0, 0, 54, 55, 59, 60, + 0, 58, 0, 57, 106, 19, 18, 16, 44, 8, + 30, 67, 0, 95, 97, 107, 0, 91, 94, 0, + 0, 49, 51, 101, 0, 101, 104, 0, 42, 37, + 40, 0, 35, 34, 27, 33, 0, 62, 63, 0, + 64, 70, 0, 0, 67, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 78, 0, 77, 0, + 0, 81, 50, 53, 0, 105, 17, 0, 44, 0, + 48, 0, 47, 0, 0, 0, 73, 68, 98, 99, + 96, 101, 82, 83, 85, 87, 84, 86, 89, 90, + 93, 92, 75, 0, 0, 79, 0, 102, 0, 41, + 38, 0, 0, 28, 8, 66, 0, 0, 108, 76, + 98, 80, 101, 0, 45, 46, 31, 69, 71, 74, + 103, 43, 0, 0, 32, 72 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { - -125, -125, -125, -35, -125, -125, -125, -125, -125, -125, - -125, 114, -125, -125, -97, -125, -125, -17, -125, -125, - -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, - -125, 70, -125, -125, -125, -19, -125, -125, -124, -125, - 115, 43, -125, -87, -125, -125, -125, -125, -125, 22, - -125, -125, -125, -125, -125, -125, -125, -23, -125, -125, - -70, -77, -31, -30, -125, -125, -125, -125, -125, -125, - -125, -125, -125 + -121, -121, -121, 116, -121, -121, -121, -121, -121, -121, + -121, 114, -121, -121, -94, -121, -121, 50, -121, -121, + -121, -121, -121, -121, -121, -36, -121, 97, -121, -121, + -121, 10, -121, -121, -120, -121, 115, 57, -121, -82, + -121, -121, -121, -121, -121, 36, -121, -121, -121, -121, + -121, -121, -121, -12, -121, -121, -68, -72, -48, -34, + -121, -121, -121, -121, -121, -121, -121, -121, -121 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_uint8 yydefgoto[] = { - 0, 1, 2, 14, 21, 33, 15, 18, 19, 20, - 28, 29, 30, 94, 73, 39, 8, 25, 26, 40, - 75, 34, 35, 70, 47, 27, 41, 100, 184, 177, - 178, 51, 74, 132, 96, 97, 130, 98, 134, 135, - 58, 59, 60, 61, 62, 77, 101, 102, 103, 104, - 105, 139, 166, 185, 167, 63, 121, 122, 64, 123, - 81, 82, 83, 84, 108, 65, 66, 67, 171, 68, - 92, 69, 109 + 0, 1, 2, 93, 21, 33, 15, 18, 19, 20, + 28, 29, 30, 87, 67, 38, 8, 25, 26, 39, + 133, 27, 40, 96, 182, 94, 95, 46, 68, 129, + 89, 90, 127, 91, 131, 132, 53, 54, 55, 56, + 57, 71, 97, 98, 99, 100, 101, 137, 166, 183, + 167, 58, 117, 118, 59, 120, 75, 76, 77, 78, + 104, 60, 61, 62, 172, 63, 86, 64, 105 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -779,40 +770,40 @@ static const yytype_uint8 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 46, 107, 126, 136, 128, 78, 159, 118, 106, 124, - 36, 48, 5, 49, 79, 3, 141, 44, 119, 42, - 127, 6, 53, 9, 10, 23, 24, 13, 154, 155, - 54, 13, 4, 144, 145, 146, 147, 148, 149, 174, - 80, 110, 111, 112, 113, 114, 115, 116, 117, 56, - 57, 7, 42, 11, 45, 53, 168, 12, 175, 16, - 165, 156, 157, 54, 13, 173, -105, 110, 111, 112, - 113, 114, 115, 116, 117, 183, 116, 117, 179, 180, - 170, 55, 56, 57, 182, 150, 151, 17, 152, 153, - 181, -10, 22, 50, 31, 32, -15, 38, 42, 71, - 72, 76, 85, 86, 88, 87, 138, 93, 187, 89, - 99, 52, 160, 129, 90, 91, 95, 131, 140, -70, - 120, 133, 161, 137, 162, 163, 172, 164, 186, 176, - 142, 125, 169, 143, 0, 0, 0, 158, 0, 0, - 0, 0, 37, 0, 0, 0, 0, 0, 43 + 103, 123, 134, 125, 102, 72, 119, 158, 121, -88, + 114, 43, 3, 44, 73, 73, 124, 4, 13, 41, + 5, 115, 48, 9, 10, 6, -88, 152, 153, -88, + 49, 23, 24, -101, 142, 143, 144, 145, 146, 147, + 74, 74, 175, 139, 7, 92, 11, 103, 50, 51, + 52, 154, 155, 156, 12, 41, 112, 113, 48, 168, + 177, 178, 16, 165, 148, 149, 49, 174, 106, 107, + 108, 109, 110, 111, 112, 113, 34, 35, 13, 181, + 150, 151, 17, -10, 171, 51, 52, 22, 69, 31, + 180, 32, -15, 37, 41, 179, 106, 107, 108, 109, + 110, 111, 112, 113, 45, 65, 66, 70, 79, 80, + 82, 185, 81, 84, 83, 157, -65, 85, 126, 88, + 128, 116, 130, 136, 135, 138, 160, 14, 176, 162, + 161, 163, 164, 170, 141, 173, 184, 47, 159, 122, + 140, 169, 36, 0, 0, 0, 0, 0, 42 }; static const yytype_int16 yycheck[] = { - 35, 78, 89, 100, 91, 4, 130, 27, 78, 86, - 27, 6, 13, 8, 13, 0, 5, 34, 38, 10, - 90, 4, 13, 5, 6, 18, 19, 15, 5, 6, - 21, 15, 3, 110, 111, 112, 113, 114, 115, 163, - 39, 30, 31, 32, 33, 34, 35, 36, 37, 40, - 41, 13, 10, 7, 42, 13, 143, 13, 42, 6, - 137, 5, 6, 21, 15, 162, 24, 30, 31, 32, - 33, 34, 35, 36, 37, 172, 36, 37, 5, 6, - 157, 39, 40, 41, 171, 116, 117, 9, 118, 119, - 167, 12, 12, 4, 13, 13, 13, 13, 10, 13, - 13, 8, 4, 4, 7, 11, 4, 7, 185, 8, - 7, 41, 131, 7, 24, 23, 12, 7, 5, 14, - 13, 13, 5, 14, 8, 6, 8, 7, 7, 164, - 108, 88, 155, 22, -1, -1, -1, 25, -1, -1, - -1, -1, 28, -1, -1, -1, -1, -1, 33 + 72, 83, 96, 85, 72, 4, 4, 127, 80, 5, + 27, 6, 0, 8, 13, 13, 84, 3, 15, 10, + 13, 38, 13, 5, 6, 4, 22, 5, 6, 25, + 21, 18, 19, 24, 106, 107, 108, 109, 110, 111, + 39, 39, 162, 5, 13, 42, 7, 119, 39, 40, + 41, 119, 5, 6, 13, 10, 36, 37, 13, 141, + 5, 6, 6, 135, 112, 113, 21, 161, 30, 31, + 32, 33, 34, 35, 36, 37, 26, 27, 15, 173, + 114, 115, 9, 12, 156, 40, 41, 12, 7, 13, + 172, 13, 13, 13, 10, 167, 30, 31, 32, 33, + 34, 35, 36, 37, 4, 13, 13, 8, 4, 4, + 7, 183, 11, 24, 8, 25, 14, 23, 7, 12, + 7, 13, 13, 4, 14, 5, 5, 11, 164, 6, + 8, 7, 7, 5, 22, 8, 7, 40, 128, 82, + 104, 153, 28, -1, -1, -1, -1, -1, 33 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of @@ -821,23 +812,23 @@ static const yytype_int8 yystos[] = { 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, 69, 54, 55, - 56, 13, 13, 49, 65, 66, 61, 55, 13, 59, - 63, 70, 10, 84, 61, 42, 47, 68, 6, 8, - 4, 75, 75, 13, 21, 39, 40, 41, 84, 85, - 86, 87, 88, 99, 102, 109, 110, 111, 113, 115, - 67, 13, 13, 58, 76, 64, 8, 89, 4, 13, - 39, 104, 105, 106, 107, 4, 4, 11, 7, 8, - 24, 23, 114, 7, 57, 12, 78, 79, 81, 7, - 71, 90, 91, 92, 93, 94, 104, 105, 108, 116, - 30, 31, 32, 33, 34, 35, 36, 37, 27, 38, - 13, 100, 101, 103, 105, 85, 87, 104, 87, 7, - 80, 7, 77, 13, 82, 83, 58, 14, 4, 95, - 5, 5, 93, 22, 105, 105, 105, 105, 105, 105, - 106, 106, 107, 107, 5, 6, 5, 6, 25, 82, - 79, 5, 8, 6, 7, 105, 96, 98, 87, 101, - 105, 112, 8, 58, 82, 42, 47, 73, 74, 5, - 6, 105, 87, 58, 72, 97, 7, 105 + 53, 48, 12, 18, 19, 61, 62, 65, 54, 55, + 56, 13, 13, 49, 61, 61, 55, 13, 59, 63, + 66, 10, 80, 6, 8, 4, 71, 71, 13, 21, + 39, 40, 41, 80, 81, 82, 83, 84, 95, 98, + 105, 106, 107, 109, 111, 13, 13, 58, 72, 7, + 8, 85, 4, 13, 39, 100, 101, 102, 103, 4, + 4, 11, 7, 8, 24, 23, 110, 57, 12, 74, + 75, 77, 42, 47, 69, 70, 67, 86, 87, 88, + 89, 90, 100, 101, 104, 112, 30, 31, 32, 33, + 34, 35, 36, 37, 27, 38, 13, 96, 97, 4, + 99, 101, 81, 83, 100, 83, 7, 76, 7, 73, + 13, 78, 79, 64, 58, 14, 4, 91, 5, 5, + 89, 22, 101, 101, 101, 101, 101, 101, 102, 102, + 103, 103, 5, 6, 100, 5, 6, 25, 78, 75, + 5, 8, 6, 7, 7, 101, 92, 94, 83, 97, + 5, 101, 108, 8, 58, 78, 69, 5, 6, 101, + 83, 58, 68, 93, 7, 101 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ @@ -846,15 +837,14 @@ static const yytype_int8 yyr1[] = 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, 66, - 67, 65, 68, 68, 70, 71, 72, 69, 73, 73, - 74, 76, 77, 75, 75, 78, 78, 80, 79, 81, - 79, 82, 82, 83, 84, 85, 85, 85, 86, 86, - 87, 87, 87, 87, 87, 87, 89, 88, 90, 90, - 92, 91, 94, 93, 95, 95, 97, 96, 98, 96, - 99, 100, 100, 101, 102, 103, 103, 104, 104, 104, - 104, 104, 104, 105, 105, 105, 106, 106, 106, 108, - 107, 107, 107, 107, 109, 111, 112, 110, 113, 114, - 114, 116, 115 + 67, 68, 65, 69, 69, 70, 72, 73, 71, 71, + 74, 74, 76, 75, 77, 75, 78, 78, 79, 80, + 81, 81, 81, 82, 82, 83, 83, 83, 83, 83, + 83, 85, 84, 86, 86, 88, 87, 90, 89, 91, + 91, 93, 92, 94, 92, 95, 96, 96, 97, 98, + 99, 99, 100, 100, 100, 100, 100, 100, 100, 101, + 101, 101, 102, 102, 102, 104, 103, 103, 103, 103, + 105, 107, 108, 106, 109, 110, 110, 112, 111 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -862,16 +852,15 @@ static const yytype_int8 yyr2[] = { 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, 0, - 0, 4, 1, 1, 0, 0, 0, 11, 1, 1, - 1, 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 + 1, 3, 1, 2, 2, 0, 0, 0, 8, 0, + 0, 0, 11, 1, 1, 1, 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, + 3, 1, 3, 3, 1, 0, 3, 1, 3, 3, + 1, 0, 0, 6, 2, 2, 0, 0, 5 }; @@ -1339,7 +1328,7 @@ yyreduce: { geraCodigo (NULL, "INPP"); } -#line 1343 "compilador.tab.c" +#line 1332 "compilador.tab.c" break; case 3: /* programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO */ @@ -1347,7 +1336,7 @@ yyreduce: { geraCodigo (NULL, "PARA"); } -#line 1351 "compilador.tab.c" +#line 1340 "compilador.tab.c" break; case 4: /* $@2: %empty */ @@ -1362,7 +1351,7 @@ yyreduce: strcat(buffer,r_main); geraCodigo(NULL,buffer); } -#line 1366 "compilador.tab.c" +#line 1355 "compilador.tab.c" break; case 5: /* $@3: %empty */ @@ -1372,7 +1361,7 @@ yyreduce: desempilha(r_main,rot); geraCodigo(r_main,"NADA"); } -#line 1376 "compilador.tab.c" +#line 1365 "compilador.tab.c" break; case 6: /* bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas $@3 comando_composto */ @@ -1380,26 +1369,26 @@ yyreduce: { char buffer[50]; sprintf(buffer,"DMEM %d",desloc); - desloc = retira_pr_fun(ts); - desloc = retira_vs_pf(ts); + desloc = retira_pr_fun(nivel_lexico+1,ts); + desloc = retira_vs_pf(nivel_lexico,ts); geraCodigo(NULL,buffer); if (nivel_lexico > 0) nivel_lexico -= 1; mostra_ts(ts); } -#line 1391 "compilador.tab.c" +#line 1380 "compilador.tab.c" break; case 10: /* $@4: %empty */ #line 101 "compilador.y" { } -#line 1397 "compilador.tab.c" +#line 1386 "compilador.tab.c" break; case 15: /* $@5: %empty */ #line 110 "compilador.y" { num_vars = 0; } -#line 1403 "compilador.tab.c" +#line 1392 "compilador.tab.c" break; case 16: /* $@6: %empty */ @@ -1409,7 +1398,7 @@ yyreduce: sprintf(buffer, "AMEM %d", num_vars); geraCodigo(NULL, buffer); } -#line 1413 "compilador.tab.c" +#line 1402 "compilador.tab.c" break; case 18: /* tipo: IDENT */ @@ -1424,7 +1413,7 @@ yyreduce: } mostra_ts(ts); // Mostra a tabela após a inserção } -#line 1428 "compilador.tab.c" +#line 1417 "compilador.tab.c" break; case 19: /* lista_id_var: lista_id_var VIRGULA IDENT */ @@ -1437,7 +1426,7 @@ yyreduce: insere_ts(token,VS,nivel_lexico,info,ts); desloc += 1; } -#line 1441 "compilador.tab.c" +#line 1430 "compilador.tab.c" break; case 20: /* lista_id_var: IDENT */ @@ -1451,86 +1440,57 @@ yyreduce: desloc += 1; /* insere vars na tabela de s�mbolos */ } -#line 1455 "compilador.tab.c" +#line 1444 "compilador.tab.c" break; case 26: /* $@7: %empty */ #line 166 "compilador.y" { + // Insere o procedimento na tabela de símbolos l_elem = busca(token,ts); + info_t info; + char r_proc[4]; 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); + strcpy(r_proc, l_elem->info.pr.rot); } - } -#line 1486 "compilador.tab.c" - break; - case 27: /* $@8: %empty */ -#line 193 "compilador.y" - { - nivel_lexico -= 1; - desloc = retira_vs_pf(ts); - mostra_ts(ts); + // Incrementa o nível léxico + nivel_lexico += 1; + desloc = 0; // Reinicia deslocamento para variáveis locais do novo nível - } -#line 1497 "compilador.tab.c" - break; + if (l_elem == NULL) insere_ts(token, PR, nivel_lexico, info, ts); + empilha(token,proc); - case 29: /* $@9: %empty */ -#line 203 "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 1515 "compilador.tab.c" +#line 1476 "compilador.tab.c" break; - case 30: /* $@10: %empty */ -#line 216 "compilador.y" + case 27: /* $@8: %empty */ +#line 195 "compilador.y" { char buffer[50]; desempilha(buffer,proc); l_elem = busca(buffer,ts); sprintf(buffer,"RTPR %d, %d",l_elem->nivel,l_elem->info.pr.quant); geraCodigo(NULL,buffer); - desloc = retira_vs_pf(ts); + desloc = retira_vs_pf(nivel_lexico,ts); mostra_ts(ts); - printf("aqui"); } -#line 1530 "compilador.tab.c" +#line 1490 "compilador.tab.c" break; - case 34: /* $@11: %empty */ -#line 235 "compilador.y" + case 29: /* $@9: %empty */ +#line 209 "compilador.y" { l_elem = busca(token,ts); char r_func[4]; @@ -1559,35 +1519,35 @@ yyreduce: geraCodigo(r_func,buffer); mostra_ts(ts); } -#line 1563 "compilador.tab.c" +#line 1523 "compilador.tab.c" break; - case 35: /* $@12: %empty */ -#line 264 "compilador.y" + case 30: /* $@10: %empty */ +#line 238 "compilador.y" { num_vars = 1; } -#line 1571 "compilador.tab.c" +#line 1531 "compilador.tab.c" break; - case 36: /* $@13: %empty */ -#line 268 "compilador.y" + case 31: /* $@11: %empty */ +#line 242 "compilador.y" { char buffer[50]; desempilha(buffer,proc); l_elem = busca(buffer,ts); sprintf(buffer,"RTPR %d, %d",l_elem->nivel,l_elem->info.fun.quant); geraCodigo(NULL,buffer); - desloc = retira_vs_pf(ts); + desloc = retira_vs_pf(nivel_lexico,ts); mostra_ts(ts); } -#line 1585 "compilador.tab.c" +#line 1545 "compilador.tab.c" break; - case 40: /* forward: FORWARD */ -#line 284 "compilador.y" + case 35: /* forward: FORWARD */ +#line 258 "compilador.y" { - desloc = retira_vs_pf(ts); + desloc = retira_vs_pf(nivel_lexico,ts); if (nivel_lexico > 0) nivel_lexico -= 1; mostra_ts(ts); @@ -1601,17 +1561,17 @@ yyreduce: l_elem = busca(buffer,ts); strcpy(l_elem->info.fun.rot,r_func); } -#line 1605 "compilador.tab.c" +#line 1565 "compilador.tab.c" break; - case 41: /* $@14: %empty */ -#line 302 "compilador.y" + case 36: /* $@12: %empty */ +#line 276 "compilador.y" {num_param = 0;} -#line 1611 "compilador.tab.c" +#line 1571 "compilador.tab.c" break; - case 42: /* $@15: %empty */ -#line 303 "compilador.y" + case 37: /* $@13: %empty */ +#line 277 "compilador.y" { char proc_ident[50]; desempilha(proc_ident,proc); @@ -1619,44 +1579,44 @@ yyreduce: empilha(proc_ident,proc); mostra_ts(ts); } -#line 1623 "compilador.tab.c" +#line 1583 "compilador.tab.c" break; - case 47: /* $@16: %empty */ -#line 319 "compilador.y" + case 42: /* $@14: %empty */ +#line 293 "compilador.y" { num_vars = 0; val_ou_ref = REF; } -#line 1632 "compilador.tab.c" +#line 1592 "compilador.tab.c" break; - case 48: /* secao_pfs: VAR $@16 lista_id_pf DOIS_PONTOS tipo */ -#line 324 "compilador.y" + case 43: /* secao_pfs: VAR $@14 lista_id_pf DOIS_PONTOS tipo */ +#line 298 "compilador.y" { num_param += num_vars; val_ou_ref = VLR; } -#line 1641 "compilador.tab.c" +#line 1601 "compilador.tab.c" break; - case 49: /* $@17: %empty */ -#line 328 "compilador.y" + case 44: /* $@15: %empty */ +#line 302 "compilador.y" { num_vars = 0; val_ou_ref = VLR; } -#line 1650 "compilador.tab.c" +#line 1610 "compilador.tab.c" break; - case 50: /* secao_pfs: $@17 lista_id_pf DOIS_PONTOS tipo */ -#line 333 "compilador.y" + case 45: /* secao_pfs: $@15 lista_id_pf DOIS_PONTOS tipo */ +#line 307 "compilador.y" {num_param += num_vars;} -#line 1656 "compilador.tab.c" +#line 1616 "compilador.tab.c" break; - case 53: /* parametro: IDENT */ -#line 340 "compilador.y" + case 48: /* parametro: IDENT */ +#line 314 "compilador.y" { num_vars += 1; info_t info; @@ -1665,17 +1625,17 @@ yyreduce: info.pf.passagem = val_ou_ref; insere_ts(token,PF,nivel_lexico,info,ts); } -#line 1669 "compilador.tab.c" +#line 1629 "compilador.tab.c" break; - case 66: /* $@18: %empty */ -#line 370 "compilador.y" + case 61: /* $@16: %empty */ +#line 344 "compilador.y" {l_elem = busca(token, ts);} -#line 1675 "compilador.tab.c" +#line 1635 "compilador.tab.c" break; - case 70: /* $@19: %empty */ -#line 378 "compilador.y" + case 65: /* $@17: %empty */ +#line 352 "compilador.y" { if (l_elem == NULL) { yyerror("ERRO: Variável de destino não declarada"); @@ -1695,11 +1655,11 @@ yyreduce: } } -#line 1699 "compilador.tab.c" +#line 1659 "compilador.tab.c" break; - case 71: /* atribuicao: $@19 ATRIBUICAO expressao_simples */ -#line 396 "compilador.y" + case 66: /* atribuicao: $@17 ATRIBUICAO expressao_simples */ +#line 370 "compilador.y" { // Gera código ARMZ para armazenar valor char buffer[50]; @@ -1710,11 +1670,11 @@ yyreduce: } geraCodigo(NULL, buffer); } -#line 1714 "compilador.tab.c" +#line 1674 "compilador.tab.c" break; - case 72: /* $@20: %empty */ -#line 409 "compilador.y" + case 67: /* $@18: %empty */ +#line 383 "compilador.y" { if (l_elem == NULL){ yyerror("ERRO: Procedimento não declarado"); @@ -1727,11 +1687,11 @@ yyreduce: if (l_elem->categ == PR || l_elem->categ == FUN) num_param = 0; // Reinicia a contagem de parâmetros reais } -#line 1731 "compilador.tab.c" +#line 1691 "compilador.tab.c" break; - case 73: /* chamada_procedimento: $@20 lista_parametros */ -#line 424 "compilador.y" + case 68: /* chamada_procedimento: $@18 lista_parametros */ +#line 398 "compilador.y" { char buffer[50]; mostra_ts(ts); @@ -1757,11 +1717,11 @@ yyreduce: geraCodigo(NULL, buffer); } } -#line 1761 "compilador.tab.c" +#line 1721 "compilador.tab.c" break; - case 76: /* $@21: %empty */ -#line 458 "compilador.y" + case 71: /* $@19: %empty */ +#line 432 "compilador.y" { char buffer[50]; desempilha(buffer,proc); @@ -1769,20 +1729,20 @@ yyreduce: val_ou_ref = l_elem->info.pr.param[num_param][1]; empilha(buffer,proc); } -#line 1773 "compilador.tab.c" +#line 1733 "compilador.tab.c" break; - case 77: /* lista_parametros_parenteses: lista_parametros_parenteses VIRGULA $@21 expressao_simples */ -#line 466 "compilador.y" + case 72: /* lista_parametros_parenteses: lista_parametros_parenteses VIRGULA $@19 expressao_simples */ +#line 440 "compilador.y" { num_param++; // Incrementa para cada parâmetro real val_ou_ref = VLR; } -#line 1782 "compilador.tab.c" +#line 1742 "compilador.tab.c" break; - case 78: /* $@22: %empty */ -#line 470 "compilador.y" + case 73: /* $@20: %empty */ +#line 444 "compilador.y" { char buffer[50]; desempilha(buffer,proc); @@ -1790,20 +1750,20 @@ yyreduce: val_ou_ref = l_elem->info.pr.param[num_param][1]; empilha(buffer,proc); } -#line 1794 "compilador.tab.c" +#line 1754 "compilador.tab.c" break; - case 79: /* lista_parametros_parenteses: $@22 expressao_simples */ -#line 478 "compilador.y" + case 74: /* lista_parametros_parenteses: $@20 expressao_simples */ +#line 452 "compilador.y" { num_param++; // Conta o primeiro parâmetro real val_ou_ref = VLR; } -#line 1803 "compilador.tab.c" +#line 1763 "compilador.tab.c" break; - case 83: /* simb_leitura: IDENT */ -#line 491 "compilador.y" + case 78: /* simb_leitura: IDENT */ +#line 465 "compilador.y" { geraCodigo(NULL, "LEIT"); l_elem = busca(token,ts); @@ -1811,123 +1771,123 @@ yyreduce: sprintf(buffer,"ARMZ %d, %d",l_elem->nivel,l_elem->info.vs.desloc); geraCodigo(NULL,buffer); } -#line 1815 "compilador.tab.c" +#line 1775 "compilador.tab.c" break; - case 85: /* lista_escritas: lista_escritas VIRGULA expressao_simples */ -#line 503 "compilador.y" + case 80: /* lista_escritas: lista_escritas VIRGULA expressao_simples */ +#line 477 "compilador.y" { geraCodigo(NULL,"IMPR"); } -#line 1823 "compilador.tab.c" +#line 1783 "compilador.tab.c" break; - case 86: /* lista_escritas: expressao_simples */ -#line 506 "compilador.y" + case 81: /* lista_escritas: expressao_simples */ +#line 480 "compilador.y" { geraCodigo(NULL,"IMPR"); } -#line 1831 "compilador.tab.c" +#line 1791 "compilador.tab.c" break; - case 87: /* expressao: expressao_simples IGUAL expressao_simples */ -#line 511 "compilador.y" + case 82: /* expressao: expressao_simples IGUAL expressao_simples */ +#line 485 "compilador.y" { geraCodigo(NULL, "CMIG"); // Adiciona operação de cmig } -#line 1839 "compilador.tab.c" +#line 1799 "compilador.tab.c" break; - case 88: /* expressao: expressao_simples DIFERENTE expressao_simples */ -#line 514 "compilador.y" + case 83: /* expressao: expressao_simples DIFERENTE expressao_simples */ +#line 488 "compilador.y" { geraCodigo(NULL, "CMDG"); // Adiciona operação de cmdg } -#line 1847 "compilador.tab.c" +#line 1807 "compilador.tab.c" break; - case 89: /* expressao: expressao_simples MENOR expressao_simples */ -#line 517 "compilador.y" + case 84: /* expressao: expressao_simples MENOR expressao_simples */ +#line 491 "compilador.y" { geraCodigo(NULL, "CMME"); // Adiciona operação de cmme } -#line 1855 "compilador.tab.c" +#line 1815 "compilador.tab.c" break; - case 90: /* expressao: expressao_simples MENOR_IGUAL expressao_simples */ -#line 520 "compilador.y" + case 85: /* expressao: expressao_simples MENOR_IGUAL expressao_simples */ +#line 494 "compilador.y" { geraCodigo(NULL, "CMEG"); // Adiciona operação de cmeg } -#line 1863 "compilador.tab.c" +#line 1823 "compilador.tab.c" break; - case 91: /* expressao: expressao_simples MAIOR expressao_simples */ -#line 523 "compilador.y" + case 86: /* expressao: expressao_simples MAIOR expressao_simples */ +#line 497 "compilador.y" { geraCodigo(NULL, "CMMA"); // Adiciona operação de cmma } -#line 1871 "compilador.tab.c" +#line 1831 "compilador.tab.c" break; - case 92: /* expressao: expressao_simples MAIOR_IGUAL expressao_simples */ -#line 526 "compilador.y" + case 87: /* expressao: expressao_simples MAIOR_IGUAL expressao_simples */ +#line 500 "compilador.y" { geraCodigo(NULL, "CMAG"); // Adiciona operação de cmag } -#line 1879 "compilador.tab.c" +#line 1839 "compilador.tab.c" break; - case 93: /* expressao_simples: expressao_simples MAIS termo */ -#line 531 "compilador.y" + case 89: /* expressao_simples: expressao_simples MAIS termo */ +#line 506 "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 1890 "compilador.tab.c" +#line 1850 "compilador.tab.c" break; - case 94: /* expressao_simples: expressao_simples MENOS termo */ -#line 537 "compilador.y" + case 90: /* expressao_simples: expressao_simples MENOS termo */ +#line 512 "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 1901 "compilador.tab.c" +#line 1861 "compilador.tab.c" break; - case 96: /* termo: termo ASTERISCO fator */ -#line 546 "compilador.y" + case 92: /* termo: termo ASTERISCO fator */ +#line 521 "compilador.y" { geraCodigo(NULL, "MULT"); // Adiciona operação de mult } -#line 1909 "compilador.tab.c" +#line 1869 "compilador.tab.c" break; - case 97: /* termo: termo DIV fator */ -#line 549 "compilador.y" + case 93: /* termo: termo DIV fator */ +#line 524 "compilador.y" { geraCodigo(NULL, "DIVI"); // Adiciona operação de divi } -#line 1917 "compilador.tab.c" +#line 1877 "compilador.tab.c" break; - case 99: /* $@23: %empty */ -#line 555 "compilador.y" + case 95: /* $@21: %empty */ +#line 530 "compilador.y" { // Carrega variável l_elem = busca(token, ts); empilha(token, proc); } -#line 1927 "compilador.tab.c" +#line 1887 "compilador.tab.c" break; - case 100: /* fator: IDENT $@23 chamada_procedimento */ -#line 561 "compilador.y" + case 96: /* fator: IDENT $@21 chamada_procedimento */ +#line 536 "compilador.y" { char buffer[50]; desempilha(buffer, proc); @@ -1967,11 +1927,11 @@ yyreduce: } } } -#line 1971 "compilador.tab.c" +#line 1931 "compilador.tab.c" break; - case 101: /* fator: NUMERO */ -#line 600 "compilador.y" + case 97: /* fator: NUMERO */ +#line 575 "compilador.y" { // Empilha constante char buffer[50]; @@ -1982,11 +1942,11 @@ yyreduce: } geraCodigo(NULL, buffer); } -#line 1986 "compilador.tab.c" +#line 1946 "compilador.tab.c" break; - case 105: /* $@24: %empty */ -#line 616 "compilador.y" + case 101: /* $@22: %empty */ +#line 591 "compilador.y" { char r_ini[4]; sprintf(r_ini, "R%02d", rot_id); @@ -1994,11 +1954,11 @@ yyreduce: rot_id += 1; geraCodigo(r_ini,"NADA"); } -#line 1998 "compilador.tab.c" +#line 1958 "compilador.tab.c" break; - case 106: /* $@25: %empty */ -#line 623 "compilador.y" + case 102: /* $@23: %empty */ +#line 598 "compilador.y" { char r_fim[4]; sprintf(r_fim, "R%02d", rot_id); @@ -2009,11 +1969,11 @@ yyreduce: strcat(buffer,r_fim); geraCodigo(NULL,buffer); } -#line 2013 "compilador.tab.c" +#line 1973 "compilador.tab.c" break; - case 107: /* comando_repetitivo: $@24 WHILE expressao DO $@25 comando_sem_rotulo */ -#line 633 "compilador.y" + case 103: /* comando_repetitivo: $@22 WHILE expressao DO $@23 comando_sem_rotulo */ +#line 608 "compilador.y" { char r_ini[4]; char r_fim[4]; @@ -2028,21 +1988,21 @@ yyreduce: geraCodigo(r_fim,"NADA"); } -#line 2032 "compilador.tab.c" +#line 1992 "compilador.tab.c" break; - case 108: /* comando_condicional: if_then cond_else */ -#line 649 "compilador.y" + case 104: /* comando_condicional: if_then cond_else */ +#line 624 "compilador.y" { char r_fim[4]; desempilha(r_fim,rot); geraCodigo(r_fim,"NADA"); } -#line 2042 "compilador.tab.c" +#line 2002 "compilador.tab.c" break; - case 111: /* $@26: %empty */ -#line 661 "compilador.y" + case 107: /* $@24: %empty */ +#line 636 "compilador.y" { char r_else[4]; sprintf(r_else,"R%02d",rot_id); @@ -2058,11 +2018,11 @@ yyreduce: empilha(r_fim, rot); rot_id += 1; } -#line 2062 "compilador.tab.c" +#line 2022 "compilador.tab.c" break; - case 112: /* if_then: IF expressao $@26 THEN comando_sem_rotulo */ -#line 676 "compilador.y" + case 108: /* if_then: IF expressao $@24 THEN comando_sem_rotulo */ +#line 651 "compilador.y" { char r_fim[4]; desempilha(r_fim,rot); @@ -2077,11 +2037,11 @@ yyreduce: geraCodigo(r_else,"NADA"); } -#line 2081 "compilador.tab.c" +#line 2041 "compilador.tab.c" break; -#line 2085 "compilador.tab.c" +#line 2045 "compilador.tab.c" default: break; } @@ -2274,7 +2234,7 @@ yyreturnlab: return yyresult; } -#line 693 "compilador.y" +#line 668 "compilador.y" int main (int argc, char** argv) { diff --git a/ALTERADO/compilador.y b/ALTERADO/compilador.y index 90ac988..bbd30c3 100644 --- a/ALTERADO/compilador.y +++ b/ALTERADO/compilador.y @@ -80,8 +80,8 @@ bloco : comando_composto { char buffer[50]; sprintf(buffer,"DMEM %d",desloc); - desloc = retira_pr_fun(ts); - desloc = retira_vs_pf(ts); + desloc = retira_pr_fun(nivel_lexico+1,ts); + desloc = retira_vs_pf(nivel_lexico,ts); geraCodigo(NULL,buffer); if (nivel_lexico > 0) nivel_lexico -= 1; @@ -156,7 +156,7 @@ lista_idents: lista_idents VIRGULA IDENT ; // REGRA 11 -parte_declara_subrotinas: declaracao_procedimento inicializa_procedimento parte_declara_subrotinas +parte_declara_subrotinas: declaracao_procedimento parte_declara_subrotinas | declaracao_funcao parte_declara_subrotinas | ; @@ -164,72 +164,46 @@ parte_declara_subrotinas: declaracao_procedimento inicializa_procedimento parte_ // REGRA 12 // Regra ajustada para declaração de procedimento declaracao_procedimento: PROCEDURE IDENT { + // Insere o procedimento na tabela de símbolos l_elem = busca(token,ts); + info_t info; + char r_proc[4]; 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); + strcpy(r_proc, l_elem->info.pr.rot); } - } - parametros_ou_nada - { - nivel_lexico -= 1; - desloc = retira_vs_pf(ts); - mostra_ts(ts); - } - PONTO_E_VIRGULA -; + // Incrementa o nível léxico + nivel_lexico += 1; + desloc = 0; // Reinicia deslocamento para variáveis locais do novo nível -inicializa_procedimento: - { - char buffer[50]; - desempilha(buffer,proc); - l_elem = busca(buffer,ts); - empilha(buffer,proc); + if (l_elem == NULL) insere_ts(token, PR, nivel_lexico, info, ts); + empilha(token,proc); + char buffer[50]; 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); - } corpo_procedimento + } + parametros_ou_nada + PONTO_E_VIRGULA corpo_funcao { char buffer[50]; desempilha(buffer,proc); l_elem = busca(buffer,ts); sprintf(buffer,"RTPR %d, %d",l_elem->nivel,l_elem->info.pr.quant); geraCodigo(NULL,buffer); - desloc = retira_vs_pf(ts); + desloc = retira_vs_pf(nivel_lexico,ts); mostra_ts(ts); - printf("aqui"); } PONTO_E_VIRGULA ; -corpo_procedimento: bloco - | FORWARD -; - // REGRA 13 // Regra ajustada para declaração de procedimento declaracao_funcao: FUNCTION IDENT { @@ -271,7 +245,7 @@ declaracao_funcao: FUNCTION IDENT { l_elem = busca(buffer,ts); sprintf(buffer,"RTPR %d, %d",l_elem->nivel,l_elem->info.fun.quant); geraCodigo(NULL,buffer); - desloc = retira_vs_pf(ts); + desloc = retira_vs_pf(nivel_lexico,ts); mostra_ts(ts); } PONTO_E_VIRGULA @@ -282,7 +256,7 @@ corpo_funcao: forward ; forward: FORWARD { - desloc = retira_vs_pf(ts); + desloc = retira_vs_pf(nivel_lexico,ts); if (nivel_lexico > 0) nivel_lexico -= 1; mostra_ts(ts); @@ -526,6 +500,7 @@ expressao: expressao_simples IGUAL expressao_simples { | expressao_simples MAIOR_IGUAL expressao_simples { geraCodigo(NULL, "CMAG"); // Adiciona operação de cmag } + | ABRE_PARENTESES expressao FECHA_PARENTESES ; expressao_simples: expressao_simples MAIS termo { diff --git a/ALTERADO/ts/ts.c b/ALTERADO/ts/ts.c index d7f397f..392a7c8 100644 --- a/ALTERADO/ts/ts.c +++ b/ALTERADO/ts/ts.c @@ -67,14 +67,14 @@ simb_t *topo(ts_t *ts){ return ts->topo; } -int retira_vs_pf(ts_t *ts) { +int retira_vs_pf(int nivel,ts_t *ts) { if (ts == NULL || ts->topo == NULL) { return 0; // Nenhum elemento a ser removido } int i; // Contador de elementos removidos simb_t *temp = ts->topo; - while (ts->topo != NULL && (ts->topo->categ == VS || ts->topo->categ == PF)) { + while (ts->topo != NULL && (ts->topo->categ == VS || ts->topo->categ == PF) && ts->topo->nivel == nivel) { temp = ts->topo; ts->topo = ts->topo->prox; //free the intern stuff @@ -98,14 +98,14 @@ int retira_vs_pf(ts_t *ts) { return 0; } -int retira_pr_fun(ts_t *ts) { +int retira_pr_fun(int nivel, ts_t *ts) { if (ts == NULL || ts->topo == NULL) { return 0; // Nenhum elemento a ser removido } int i; // Contador de elementos removidos simb_t *temp = ts->topo; - while (ts->topo != NULL && (ts->topo->categ == PR || ts->topo->categ == FUN)) { + while (ts->topo != NULL && (ts->topo->categ == PR || ts->topo->categ == FUN) && ts->topo->nivel == nivel) { temp = ts->topo; ts->topo = ts->topo->prox; //free the intern stuff diff --git a/ALTERADO/ts/ts.h b/ALTERADO/ts/ts.h index 30aa963..05161b6 100644 --- a/ALTERADO/ts/ts.h +++ b/ALTERADO/ts/ts.h @@ -71,9 +71,9 @@ simb_t *topo(ts_t *ts); int retira(int n, ts_t *ts); -int retira_vs_pf(ts_t *ts); +int retira_vs_pf(int nivel, ts_t *ts); -int retira_pr_fun(ts_t *ts); +int retira_pr_fun(int nivel, ts_t *ts); void atualiza_tipo(int n, int tipo, ts_t *ts); diff --git a/ALTERADO/ts/ts.o b/ALTERADO/ts/ts.o index c46d86d045327bbcbe66ae8f0e1ef0fb35de61c6..da40408c8ee760ba0c05ad24ef2e370ba787c9fb 100644 GIT binary patch delta 2012 zcmaD6-VrfDgYm>h%?HerZ?Y+9GchtScyzly@aSgn=yd(@x)6y2V|E8<fS8j5Sv>t7 zbUSeL2K)!{I|DdC6i8?5ff55KyW4@I^*{+fg4g_msZ<!w<*{^q!`~A8|3BD>$#+@& zK+e$XLv_YW7F0e|y9dlAWvq8RaJnQ3s=C{OqxlCTs#BOtUEs11r|jR{&nC#v#K5q5 zp6D+oeFH`Y1_nnyfi@;*UN&ZJMjmz!1{nqhh64-`um?qc`{v^kI~f@bCO1l{OMYZQ zQo_K%kjlWoAjH7Puy*o6DSgJ7lRrv{OO|m!)Es7l(49~<mYWr&)tMM|Cnw5^GkSr^ zFff@od7`X1V;7iQ1tyP!$q!&sV6vi|IHL@RloVoz7zuI(F9QR^pZ^dLIyq2ITrvqs zRsczM-{eL)aYo6>8|B0qtH7ku<cD(NjFUm6WI8v*Opt4t85kH+AY6w0$%69YlGSLk zv!JrgVA(D-*)34nNnqKzXtJ@OaAja%SUP#3ytw2VG+92V?B>ZA<;5lUqRC1^Wsgs0 zR1lZEh$gE8mAyCFP(fVsC7LYERUbjF^5o`$I1=XHG^k!NH1Qm$cr_@X85kH~>hqxD zGbbNZ5SLtrCR+)W-8}iDg1F=vG}$(&?7hi~isF*5&}2KIvR@|$DvEo4<U@654^)<! zA0iG)1ENT=90C=GxpM+keeC3oisF)KXtGnGvXdu2R1}w-gC;u{D!X&Cppv-cX{ao^ zjkhK{Dv5jkK#~<ha*r4&2{JG+fOLTpCM>P$K*eG1TnV+yeDXpiamgsCEV{0O$rqKx z8LL5R80Sr9R2G-qfTR*R9BxcDR2G+fg+un+<V0n0NfALv7{c682z7(v<cZ4Sl6q*e zjZj(l$p@9iB_pA-AQvLrn?3oXvbbakR2F9P6{z0U$%-oClGCBG=z14V4pb4BJP4JA z>4mxK9N1O2(PUw+`T}+pn-IiD=qCT0{7^-lQDE{yRdL3|$%3lll3BtKl`vai<`hqM zR27$8fF?T=>i(6J3suD>Pol{#gv#CqnJ@VYDhqN0a*T6NPE-?T)SPUnCeCO-nNbZ~ z`l*RC=7K~dn?+FFvl?n<A4r$vMl{*AP}#$iC#s1{zCe=&m)r~t48Op#%%JE&%DJ$d zZaev-nz*DFR2Jk~P-20l&z#AM>f($glP%Tf!;AYT5GR7m08qHCo%~T<TyiGJlMD<D zDo{6pWI(uVvZ97Kqvd2vjq{9ElQ}ib89gRDYT7gIn%oE`4{F*o9+=FiWk0z=i(|5f xmIV{1#N<FpvB@*EG?)Y=CLhwWV=S1=sBO<!FxgSto^i(HMs0h>gvkfB)d8X!wE+MC delta 2018 zcmeB(co9B9gK@=1%?HdL9-Xx>Jeq4?FqH6kbi2Or=w|R}Jy6QEgMop8;pKM*1_qdD zr|XZ`g-9G2vpYZo#GD+$;_3XN+kvAu;6I4p8NdOeAm){*LfPF89IXfVTMGaG2P^XE zX6Sa{X#T;(-x3EEn*5r@&l|6!ni)|X^^ygZ54Fhy=B{?uJGMC86%JJmb_FAU%iVvd z4rAtTIkkB;n;`$@1EN2e^pzMH7#JM+1lpLKdD)m{8F|<_7-Se27!H6!i-Cb*9g6(Q z&CexvGBPSnUMQt5`IrTw2CRgEfgzQFfkB9YkzwNGhf?~CwUY&<#U-OSAZiXXLFi7X z8rjW`(&|i%T9X@P#TnhfWH6Wvn7mO|oUsy2&IFU&z~p@}`5#PjPj-|OXZ!{xEhiVs ziA%b%LyQNxNPvNX;m>~vSTuQ|oVes)s3SnKY)G<klP}7NGm1@Slow|#2a%HA+z@j> zu4QImU`T;*8G<Jp%8N_Jqsh*K%BF*5^U!3sKxNCovW;l6v7m5eU|{H+d{ACoasrwx zA5?bw<d5>=k_*vfC84sbCo3w5OKwGz)q%<$njEMgE_oJB7Urs}AXj<5N0Uv1>ivZ# zo&yz+=Y@C*7Cw1U@!H7`6~raG&}1v2vePFEDvC>PK$C5Q${w2Rs3<OZ4o$WbDtmKs zp`y6wRX$XEd!Vw<q2i#J6-A0!3w~7f6QJrHCtp+)m-IrDoeGsLpUkKvF4=%4I~OWD zce0_9IOF=s3l+r~_f1Yz5|_LKRSB|P49WIiU|9iBLS$fIfQ8jcs5#P;4=RZ>+D)FQ zB+eKz`J<9JV?0=-X|kfSxa1V5E|8hXKH4)mP+45^91huAlN*)AC4WF=VKx>*ZDgIi zQCVD4NDwtl8lke<lOHOJOWHzZ(e3r0ET|$b83C1rnS2GRH*>P1inwGoR2E%t`{Y6u zaml4nS(sj!t2TjMwI59u=BgWDSG|JDqMQ6^GNY=v<QE}`kI-dZCmX7YOZo{zWMTHg zOb(x%s46bmf+jl?>Z9Jt6II0}*P_WTgv#!pd{9-~@ElYYWG|@Tft5Dzk;IYH1MlQO zHE~Ae$%<;?jCzwls){oPf<z?KMNnP18fr@sNR8xFG}*OK+2xZrs)<XUL6hABmAwa+ zeU2sz%h!sN1=YnR^*{-Wfq?<!eo&Huxj$gCqq;a_#N<fz`S8O13B-xuR16BqiIW92 z#3gG%-ezE6P=VSCk^$kU$&MQ0jIxs>HO@1}P1e*jXVjRSsA<nQZ}LJg`B2lIalvFo zEqlh3lM}V<CnsoeOfHucn7l(vgXx3#<VRX|i~*Aswe1-LCMRm!GgeGqsBO>aF!`aj FIsnJo!J7a8 diff --git a/AvaliaTrabs/forward1.pas b/AvaliaTrabs/forward1.pas index a5b1935..ace36e6 100644 --- a/AvaliaTrabs/forward1.pas +++ b/AvaliaTrabs/forward1.pas @@ -1,4 +1,4 @@ -Program Maximum_Minimum_Number(output); +program MaximumMinimumNumber(output); var res: integer; @@ -32,5 +32,5 @@ end; begin res := max(5,10); - writeln(res); + write(res); end. -- GitLab