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