diff --git a/MEPA b/MEPA
index 5cef5cf2aab9f819742d67e6ae71423cdc7759e9..bee9de574cd434d8d93eaf8cdd2ec33f1987aeb0 100644
--- a/MEPA
+++ b/MEPA
@@ -11,3 +11,6 @@ R02: NADA
 R00: NADA 
      CRCT 8
      ARMZ 0,0
+     CHPR R01,0
+     DMEM 0
+     PARA
diff --git a/compilador.output b/compilador.output
index 07373e0ab069cde4c15e2f97a8e05a34a57514f3..9400ad8b86d9e1875bfa899d16e01500d58a1944 100644
--- a/compilador.output
+++ b/compilador.output
@@ -1,49 +1,49 @@
-Terminals which are not used
+Terminais sem uso na gramática
 
-   TYPE
-   ARRAY
-   FUNCTION
-   GOTO
-   OR
-   AND
-   NOT
+    TYPE
+    ARRAY
+    FUNCTION
+    GOTO
+    OR
+    AND
+    NOT
 
 
-State 71 conflicts: 1 reduce/reduce
+Estado 70 conflitos: 1 de redução/redução
 
 
-Grammar
+Gramática
 
     0 $accept: programa $end
 
-    1 @1: /* empty */
+    1 $@1: ε
 
-    2 programa: @1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO
+    2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO
 
-    3 @2: /* empty */
+    3 $@2: ε
 
-    4 @3: /* empty */
+    4 $@3: ε
 
-    5 bloco: parte_declara_rotulos parte_declara_vars @2 parte_declara_subrotinas @3 comando_composto
+    5 bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas $@3 comando_composto
 
     6 parte_declara_rotulos: LABEL VIRGULA
-    7                      | /* empty */
+    7                      | ε
 
     8 parte_declara_vars: var
 
-    9 @4: /* empty */
+    9 $@4: ε
 
-   10 var: @4 VAR declara_vars
-   11    | /* empty */
+   10 var: $@4 VAR declara_vars
+   11    | ε
 
    12 declara_vars: declara_vars declara_var
    13             | declara_var
 
-   14 @5: /* empty */
+   14 $@5: ε
 
-   15 @6: /* empty */
+   15 $@6: ε
 
-   16 declara_var: @5 lista_id_var DOIS_PONTOS tipo @6 PONTO_E_VIRGULA
+   16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo $@6 PONTO_E_VIRGULA
 
    17 tipo: IDENT
 
@@ -54,1427 +54,1500 @@ Grammar
    21             | IDENT
 
    22 parte_declara_subrotinas: parte_declara_subrotinas declaracao_procedimento
-   23                         | /* empty */
+   23                         | ε
 
-   24 @7: /* empty */
+   24 $@7: ε
 
-   25 declaracao_procedimento: PROCEDURE IDENT @7 PONTO_E_VIRGULA bloco
+   25 declaracao_procedimento: PROCEDURE IDENT $@7 PONTO_E_VIRGULA bloco
 
    26 comando_composto: T_BEGIN comandos T_END
 
    27 comandos: comando PONTO_E_VIRGULA comandos
    28         | comando PONTO_E_VIRGULA
-   29         | /* empty */
+   29         | ε
 
    30 comando: numero DOIS_PONTOS comando_sem_rotulo
    31        | comando_sem_rotulo
 
-   32 comando_sem_rotulo: atribuicao
+   32 comando_sem_rotulo: atribuicao_ou_procedimento
    33                   | comando_composto
    34                   | comando_condicional
    35                   | comando_repetitivo
    36                   | leitura
    37                   | escrita
-   38                   | chamada_procedimento
-
-   39 chamada_procedimento: /* empty */
-
-   40 leitura: READ ABRE_PARENTESES lista_leituras FECHA_PARENTESES
 
-   41 lista_leituras: lista_leituras VIRGULA simb_leitura
-   42               | simb_leitura
-
-   43 simb_leitura: IDENT
-
-   44 escrita: WRITE ABRE_PARENTESES lista_escritas FECHA_PARENTESES
-
-   45 lista_escritas: lista_escritas VIRGULA expressao_simples
-   46               | expressao_simples
-
-   47 expressao: expressao IGUAL expressao_simples
-   48          | expressao DIFERENTE expressao_simples
-   49          | expressao MENOR expressao_simples
-   50          | expressao MENOR_IGUAL expressao_simples
-   51          | expressao MAIOR expressao_simples
-   52          | expressao MAIOR_IGUAL expressao_simples
-   53          | expressao_simples
-
-   54 expressao_simples: expressao_simples MAIS termo
-   55                  | expressao_simples MENOS termo
-   56                  | termo
-
-   57 termo: termo ASTERISCO fator
-   58      | termo DIV fator
-   59      | fator
-
-   60 @8: /* empty */
-
-   61 atribuicao: IDENT @8 ATRIBUICAO expressao_simples
-
-   62 fator: IDENT
-   63      | NUMERO
-
-   64 numero: NUMERO
-
-   65 @9: /* empty */
-
-   66 @10: /* empty */
-
-   67 comando_repetitivo: @9 WHILE expressao DO @10 comando_sem_rotulo
-
-   68 comando_condicional: if_then cond_else
-
-   69 cond_else: ELSE comando_sem_rotulo
-   70          | /* empty */
-
-   71 @11: /* empty */
-
-   72 if_then: IF expressao @11 THEN comando_sem_rotulo
-
-
-Terminals, with rules where they appear
-
-$end (0) 0
-error (256)
-PROGRAM (258) 2
-ABRE_PARENTESES (259) 2 40 44
-FECHA_PARENTESES (260) 2 40 44
-VIRGULA (261) 6 18 20 41 45
-PONTO_E_VIRGULA (262) 2 16 25 27 28
-DOIS_PONTOS (263) 16 30
-PONTO (264) 2
-T_BEGIN (265) 26
-T_END (266) 26
-VAR (267) 10
-IDENT (268) 2 17 18 19 20 21 25 43 61 62
-ATRIBUICAO (269) 61
-LABEL (270) 6
-TYPE (271)
-ARRAY (272)
-PROCEDURE (273) 25
-FUNCTION (274)
-GOTO (275)
-IF (276) 72
-THEN (277) 72
-ELSE (278) 69
-WHILE (279) 67
-DO (280) 67
-OR (281)
-DIV (282) 58
-AND (283)
-NOT (284)
-IGUAL (285) 47
-DIFERENTE (286) 48
-MENOR_IGUAL (287) 50
-MAIOR_IGUAL (288) 52
-MENOR (289) 49
-MAIOR (290) 51
-MAIS (291) 54
-MENOS (292) 55
-ASTERISCO (293) 57
-NUMERO (294) 63 64
-READ (295) 40
-WRITE (296) 44
-LOWER_THAN_ELSE (297)
-
-
-Nonterminals, with rules where they appear
-
-$accept (43)
-    on left: 0
-programa (44)
-    on left: 2, on right: 0
-@1 (45)
-    on left: 1, on right: 2
-bloco (46)
-    on left: 5, on right: 2 25
-@2 (47)
-    on left: 3, on right: 5
-@3 (48)
-    on left: 4, on right: 5
-parte_declara_rotulos (49)
-    on left: 6 7, on right: 5
-parte_declara_vars (50)
-    on left: 8, on right: 5
-var (51)
-    on left: 10 11, on right: 8
-@4 (52)
-    on left: 9, on right: 10
-declara_vars (53)
-    on left: 12 13, on right: 10 12
-declara_var (54)
-    on left: 16, on right: 12 13
-@5 (55)
-    on left: 14, on right: 16
-@6 (56)
-    on left: 15, on right: 16
-tipo (57)
-    on left: 17, on right: 16
-lista_id_var (58)
-    on left: 18 19, on right: 16 18
-lista_idents (59)
-    on left: 20 21, on right: 2 20
-parte_declara_subrotinas (60)
-    on left: 22 23, on right: 5 22
-declaracao_procedimento (61)
-    on left: 25, on right: 22
-@7 (62)
-    on left: 24, on right: 25
-comando_composto (63)
-    on left: 26, on right: 5 33
-comandos (64)
-    on left: 27 28 29, on right: 26 27
-comando (65)
-    on left: 30 31, on right: 27 28
-comando_sem_rotulo (66)
-    on left: 32 33 34 35 36 37 38, on right: 30 31 67 69 72
-chamada_procedimento (67)
-    on left: 39, on right: 38
-leitura (68)
-    on left: 40, on right: 36
-lista_leituras (69)
-    on left: 41 42, on right: 40 41
-simb_leitura (70)
-    on left: 43, on right: 41 42
-escrita (71)
-    on left: 44, on right: 37
-lista_escritas (72)
-    on left: 45 46, on right: 44 45
-expressao (73)
-    on left: 47 48 49 50 51 52 53, on right: 47 48 49 50 51 52 67 72
-expressao_simples (74)
-    on left: 54 55 56, on right: 45 46 47 48 49 50 51 52 53 54 55 61
-termo (75)
-    on left: 57 58 59, on right: 54 55 56 57 58
-atribuicao (76)
-    on left: 61, on right: 32
-@8 (77)
-    on left: 60, on right: 61
-fator (78)
-    on left: 62 63, on right: 57 58 59
-numero (79)
-    on left: 64, on right: 30
-comando_repetitivo (80)
-    on left: 67, on right: 35
-@9 (81)
-    on left: 65, on right: 67
-@10 (82)
-    on left: 66, on right: 67
-comando_condicional (83)
-    on left: 68, on right: 34
-cond_else (84)
-    on left: 69 70, on right: 68
-if_then (85)
-    on left: 72, on right: 68
-@11 (86)
-    on left: 71, on right: 72
+   38 $@8: ε
 
+   39 atribuicao_ou_procedimento: IDENT $@8 atribuicao_ou_procedimento_token
 
-state 0
+   40 atribuicao_ou_procedimento_token: atribuicao
+   41                                 | chamada_procedimento
 
-    0 $accept: . programa $end
+   42 $@9: ε
 
-    $default  reduce using rule 1 (@1)
+   43 atribuicao: $@9 ATRIBUICAO expressao_simples
 
-    programa  go to state 1
-    @1        go to state 2
+   44 chamada_procedimento: ε
 
+   45 leitura: READ ABRE_PARENTESES lista_leituras FECHA_PARENTESES
 
-state 1
+   46 lista_leituras: lista_leituras VIRGULA simb_leitura
+   47               | simb_leitura
 
-    0 $accept: programa . $end
+   48 simb_leitura: IDENT
+
+   49 escrita: WRITE ABRE_PARENTESES lista_escritas FECHA_PARENTESES
+
+   50 lista_escritas: lista_escritas VIRGULA expressao_simples
+   51               | expressao_simples
+
+   52 expressao: expressao IGUAL expressao_simples
+   53          | expressao DIFERENTE expressao_simples
+   54          | expressao MENOR expressao_simples
+   55          | expressao MENOR_IGUAL expressao_simples
+   56          | expressao MAIOR expressao_simples
+   57          | expressao MAIOR_IGUAL expressao_simples
+   58          | expressao_simples
+
+   59 expressao_simples: expressao_simples MAIS termo
+   60                  | expressao_simples MENOS termo
+   61                  | termo
+
+   62 termo: termo ASTERISCO fator
+   63      | termo DIV fator
+   64      | fator
+
+   65 fator: IDENT
+   66      | NUMERO
+
+   67 numero: NUMERO
+
+   68 $@10: ε
+
+   69 $@11: ε
+
+   70 comando_repetitivo: $@10 WHILE expressao DO $@11 comando_sem_rotulo
+
+   71 comando_condicional: if_then cond_else
+
+   72 cond_else: ELSE comando_sem_rotulo
+   73          | ε
+
+   74 $@12: ε
+
+   75 if_then: IF expressao $@12 THEN comando_sem_rotulo
+
+
+Terminais, com as regras onde eles aparecem
+
+    $end (0) 0
+    error (256)
+    PROGRAM (258) 2
+    ABRE_PARENTESES (259) 2 45 49
+    FECHA_PARENTESES (260) 2 45 49
+    VIRGULA (261) 6 18 20 46 50
+    PONTO_E_VIRGULA (262) 2 16 25 27 28
+    DOIS_PONTOS (263) 16 30
+    PONTO (264) 2
+    T_BEGIN (265) 26
+    T_END (266) 26
+    VAR (267) 10
+    IDENT (268) 2 17 18 19 20 21 25 39 48 65
+    ATRIBUICAO (269) 43
+    LABEL (270) 6
+    TYPE (271)
+    ARRAY (272)
+    PROCEDURE (273) 25
+    FUNCTION (274)
+    GOTO (275)
+    IF (276) 75
+    THEN (277) 75
+    ELSE (278) 72
+    WHILE (279) 70
+    DO (280) 70
+    OR (281)
+    DIV (282) 63
+    AND (283)
+    NOT (284)
+    IGUAL (285) 52
+    DIFERENTE (286) 53
+    MENOR_IGUAL (287) 55
+    MAIOR_IGUAL (288) 57
+    MENOR (289) 54
+    MAIOR (290) 56
+    MAIS (291) 59
+    MENOS (292) 60
+    ASTERISCO (293) 62
+    NUMERO (294) 66 67
+    READ (295) 45
+    WRITE (296) 49
+    LOWER_THAN_ELSE (297)
+
+
+Não terminais com as regras onde eles aparecem
+
+    $accept (43)
+        à esquerda: 0
+    programa (44)
+        à esquerda: 2
+        à direita: 0
+    $@1 (45)
+        à esquerda: 1
+        à direita: 2
+    bloco (46)
+        à esquerda: 5
+        à direita: 2 25
+    $@2 (47)
+        à esquerda: 3
+        à direita: 5
+    $@3 (48)
+        à esquerda: 4
+        à direita: 5
+    parte_declara_rotulos (49)
+        à esquerda: 6 7
+        à direita: 5
+    parte_declara_vars (50)
+        à esquerda: 8
+        à direita: 5
+    var (51)
+        à esquerda: 10 11
+        à direita: 8
+    $@4 (52)
+        à esquerda: 9
+        à direita: 10
+    declara_vars (53)
+        à esquerda: 12 13
+        à direita: 10 12
+    declara_var (54)
+        à esquerda: 16
+        à direita: 12 13
+    $@5 (55)
+        à esquerda: 14
+        à direita: 16
+    $@6 (56)
+        à esquerda: 15
+        à direita: 16
+    tipo (57)
+        à esquerda: 17
+        à direita: 16
+    lista_id_var (58)
+        à esquerda: 18 19
+        à direita: 16 18
+    lista_idents (59)
+        à esquerda: 20 21
+        à direita: 2 20
+    parte_declara_subrotinas (60)
+        à esquerda: 22 23
+        à direita: 5 22
+    declaracao_procedimento (61)
+        à esquerda: 25
+        à direita: 22
+    $@7 (62)
+        à esquerda: 24
+        à direita: 25
+    comando_composto (63)
+        à esquerda: 26
+        à direita: 5 33
+    comandos (64)
+        à esquerda: 27 28 29
+        à direita: 26 27
+    comando (65)
+        à esquerda: 30 31
+        à direita: 27 28
+    comando_sem_rotulo (66)
+        à esquerda: 32 33 34 35 36 37
+        à direita: 30 31 70 72 75
+    atribuicao_ou_procedimento (67)
+        à esquerda: 39
+        à direita: 32
+    $@8 (68)
+        à esquerda: 38
+        à direita: 39
+    atribuicao_ou_procedimento_token (69)
+        à esquerda: 40 41
+        à direita: 39
+    atribuicao (70)
+        à esquerda: 43
+        à direita: 40
+    $@9 (71)
+        à esquerda: 42
+        à direita: 43
+    chamada_procedimento (72)
+        à esquerda: 44
+        à direita: 41
+    leitura (73)
+        à esquerda: 45
+        à direita: 36
+    lista_leituras (74)
+        à esquerda: 46 47
+        à direita: 45 46
+    simb_leitura (75)
+        à esquerda: 48
+        à direita: 46 47
+    escrita (76)
+        à esquerda: 49
+        à direita: 37
+    lista_escritas (77)
+        à esquerda: 50 51
+        à direita: 49 50
+    expressao (78)
+        à esquerda: 52 53 54 55 56 57 58
+        à direita: 52 53 54 55 56 57 70 75
+    expressao_simples (79)
+        à esquerda: 59 60 61
+        à direita: 43 50 51 52 53 54 55 56 57 58 59 60
+    termo (80)
+        à esquerda: 62 63 64
+        à direita: 59 60 61 62 63
+    fator (81)
+        à esquerda: 65 66
+        à direita: 62 63 64
+    numero (82)
+        à esquerda: 67
+        à direita: 30
+    comando_repetitivo (83)
+        à esquerda: 70
+        à direita: 35
+    $@10 (84)
+        à esquerda: 68
+        à direita: 70
+    $@11 (85)
+        à esquerda: 69
+        à direita: 70
+    comando_condicional (86)
+        à esquerda: 71
+        à direita: 34
+    cond_else (87)
+        à esquerda: 72 73
+        à direita: 71
+    if_then (88)
+        à esquerda: 75
+        à direita: 71
+    $@12 (89)
+        à esquerda: 74
+        à direita: 75
 
-    $end  shift, and go to state 3
 
+Estado 0
 
-state 2
+    0 $accept: • programa $end
 
-    2 programa: @1 . PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO
+    $padrão  reduzir usando a regra 1 ($@1)
 
-    PROGRAM  shift, and go to state 4
+    programa  ir ao estado 1
+    $@1       ir ao estado 2
 
 
-state 3
+Estado 1
 
-    0 $accept: programa $end .
+    0 $accept: programa • $end
 
-    $default  accept
+    $end  deslocar, e ir ao estado 3
 
 
-state 4
+Estado 2
 
-    2 programa: @1 PROGRAM . IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO
+    2 programa: $@1 • PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO
 
-    IDENT  shift, and go to state 5
+    PROGRAM  deslocar, e ir ao estado 4
 
 
-state 5
+Estado 3
 
-    2 programa: @1 PROGRAM IDENT . ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO
+    0 $accept: programa $end •
 
-    ABRE_PARENTESES  shift, and go to state 6
+    $padrão  aceitar
 
 
-state 6
+Estado 4
 
-    2 programa: @1 PROGRAM IDENT ABRE_PARENTESES . lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO
+    2 programa: $@1 PROGRAM • IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO
 
-    IDENT  shift, and go to state 7
+    IDENT  deslocar, e ir ao estado 5
 
-    lista_idents  go to state 8
 
+Estado 5
 
-state 7
+    2 programa: $@1 PROGRAM IDENT • ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO
 
-   21 lista_idents: IDENT .
+    ABRE_PARENTESES  deslocar, e ir ao estado 6
 
-    $default  reduce using rule 21 (lista_idents)
 
+Estado 6
 
-state 8
+    2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES • lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO
 
-    2 programa: @1 PROGRAM IDENT ABRE_PARENTESES lista_idents . FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO
-   20 lista_idents: lista_idents . VIRGULA IDENT
+    IDENT  deslocar, e ir ao estado 7
 
-    FECHA_PARENTESES  shift, and go to state 9
-    VIRGULA           shift, and go to state 10
+    lista_idents  ir ao estado 8
 
 
-state 9
+Estado 7
 
-    2 programa: @1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES . PONTO_E_VIRGULA bloco PONTO
+   21 lista_idents: IDENT •
 
-    PONTO_E_VIRGULA  shift, and go to state 11
+    $padrão  reduzir usando a regra 21 (lista_idents)
 
 
-state 10
+Estado 8
 
-   20 lista_idents: lista_idents VIRGULA . IDENT
+    2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents • FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO
+   20 lista_idents: lista_idents • VIRGULA IDENT
 
-    IDENT  shift, and go to state 12
+    FECHA_PARENTESES  deslocar, e ir ao estado 9
+    VIRGULA           deslocar, e ir ao estado 10
 
 
-state 11
+Estado 9
 
-    2 programa: @1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA . bloco PONTO
+    2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES • PONTO_E_VIRGULA bloco PONTO
 
-    LABEL  shift, and go to state 13
+    PONTO_E_VIRGULA  deslocar, e ir ao estado 11
 
-    $default  reduce using rule 7 (parte_declara_rotulos)
 
-    bloco                  go to state 14
-    parte_declara_rotulos  go to state 15
+Estado 10
 
+   20 lista_idents: lista_idents VIRGULA • IDENT
 
-state 12
+    IDENT  deslocar, e ir ao estado 12
 
-   20 lista_idents: lista_idents VIRGULA IDENT .
 
-    $default  reduce using rule 20 (lista_idents)
+Estado 11
 
+    2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA • bloco PONTO
 
-state 13
+    LABEL  deslocar, e ir ao estado 13
 
-    6 parte_declara_rotulos: LABEL . VIRGULA
+    $padrão  reduzir usando a regra 7 (parte_declara_rotulos)
 
-    VIRGULA  shift, and go to state 16
+    bloco                  ir ao estado 14
+    parte_declara_rotulos  ir ao estado 15
 
 
-state 14
+Estado 12
 
-    2 programa: @1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco . PONTO
+   20 lista_idents: lista_idents VIRGULA IDENT •
 
-    PONTO  shift, and go to state 17
+    $padrão  reduzir usando a regra 20 (lista_idents)
 
 
-state 15
+Estado 13
 
-    5 bloco: parte_declara_rotulos . parte_declara_vars @2 parte_declara_subrotinas @3 comando_composto
+    6 parte_declara_rotulos: LABEL • VIRGULA
 
-    VAR       reduce using rule 9 (@4)
-    $default  reduce using rule 11 (var)
+    VIRGULA  deslocar, e ir ao estado 16
 
-    parte_declara_vars  go to state 18
-    var                 go to state 19
-    @4                  go to state 20
 
+Estado 14
 
-state 16
+    2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco • PONTO
 
-    6 parte_declara_rotulos: LABEL VIRGULA .
+    PONTO  deslocar, e ir ao estado 17
 
-    $default  reduce using rule 6 (parte_declara_rotulos)
 
+Estado 15
 
-state 17
+    5 bloco: parte_declara_rotulos • parte_declara_vars $@2 parte_declara_subrotinas $@3 comando_composto
 
-    2 programa: @1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO .
+    VAR      reduzir usando a regra 9 ($@4)
+    $padrão  reduzir usando a regra 11 (var)
 
-    $default  reduce using rule 2 (programa)
+    parte_declara_vars  ir ao estado 18
+    var                 ir ao estado 19
+    $@4                 ir ao estado 20
 
 
-state 18
+Estado 16
 
-    5 bloco: parte_declara_rotulos parte_declara_vars . @2 parte_declara_subrotinas @3 comando_composto
+    6 parte_declara_rotulos: LABEL VIRGULA •
 
-    $default  reduce using rule 3 (@2)
+    $padrão  reduzir usando a regra 6 (parte_declara_rotulos)
 
-    @2  go to state 21
 
+Estado 17
 
-state 19
+    2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO •
 
-    8 parte_declara_vars: var .
+    $padrão  reduzir usando a regra 2 (programa)
 
-    $default  reduce using rule 8 (parte_declara_vars)
 
+Estado 18
 
-state 20
+    5 bloco: parte_declara_rotulos parte_declara_vars • $@2 parte_declara_subrotinas $@3 comando_composto
 
-   10 var: @4 . VAR declara_vars
+    $padrão  reduzir usando a regra 3 ($@2)
 
-    VAR  shift, and go to state 22
+    $@2  ir ao estado 21
 
 
-state 21
+Estado 19
 
-    5 bloco: parte_declara_rotulos parte_declara_vars @2 . parte_declara_subrotinas @3 comando_composto
+    8 parte_declara_vars: var •
 
-    $default  reduce using rule 23 (parte_declara_subrotinas)
+    $padrão  reduzir usando a regra 8 (parte_declara_vars)
 
-    parte_declara_subrotinas  go to state 23
 
+Estado 20
 
-state 22
+   10 var: $@4 • VAR declara_vars
 
-   10 var: @4 VAR . declara_vars
+    VAR  deslocar, e ir ao estado 22
 
-    $default  reduce using rule 14 (@5)
 
-    declara_vars  go to state 24
-    declara_var   go to state 25
-    @5            go to state 26
+Estado 21
 
+    5 bloco: parte_declara_rotulos parte_declara_vars $@2 • parte_declara_subrotinas $@3 comando_composto
 
-state 23
+    $padrão  reduzir usando a regra 23 (parte_declara_subrotinas)
 
-    5 bloco: parte_declara_rotulos parte_declara_vars @2 parte_declara_subrotinas . @3 comando_composto
-   22 parte_declara_subrotinas: parte_declara_subrotinas . declaracao_procedimento
+    parte_declara_subrotinas  ir ao estado 23
 
-    PROCEDURE  shift, and go to state 27
 
-    $default  reduce using rule 4 (@3)
+Estado 22
 
-    @3                       go to state 28
-    declaracao_procedimento  go to state 29
+   10 var: $@4 VAR • declara_vars
 
+    $padrão  reduzir usando a regra 14 ($@5)
 
-state 24
+    declara_vars  ir ao estado 24
+    declara_var   ir ao estado 25
+    $@5           ir ao estado 26
 
-   10 var: @4 VAR declara_vars .
-   12 declara_vars: declara_vars . declara_var
 
-    IDENT     reduce using rule 14 (@5)
-    $default  reduce using rule 10 (var)
+Estado 23
 
-    declara_var  go to state 30
-    @5           go to state 26
+    5 bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas • $@3 comando_composto
+   22 parte_declara_subrotinas: parte_declara_subrotinas • declaracao_procedimento
 
+    PROCEDURE  deslocar, e ir ao estado 27
 
-state 25
+    $padrão  reduzir usando a regra 4 ($@3)
 
-   13 declara_vars: declara_var .
+    $@3                      ir ao estado 28
+    declaracao_procedimento  ir ao estado 29
 
-    $default  reduce using rule 13 (declara_vars)
 
+Estado 24
 
-state 26
+   10 var: $@4 VAR declara_vars •
+   12 declara_vars: declara_vars • declara_var
 
-   16 declara_var: @5 . lista_id_var DOIS_PONTOS tipo @6 PONTO_E_VIRGULA
+    IDENT    reduzir usando a regra 14 ($@5)
+    $padrão  reduzir usando a regra 10 (var)
 
-    IDENT  shift, and go to state 31
+    declara_var  ir ao estado 30
+    $@5          ir ao estado 26
 
-    lista_id_var  go to state 32
 
+Estado 25
 
-state 27
+   13 declara_vars: declara_var •
 
-   25 declaracao_procedimento: PROCEDURE . IDENT @7 PONTO_E_VIRGULA bloco
+    $padrão  reduzir usando a regra 13 (declara_vars)
 
-    IDENT  shift, and go to state 33
 
+Estado 26
 
-state 28
+   16 declara_var: $@5 • lista_id_var DOIS_PONTOS tipo $@6 PONTO_E_VIRGULA
 
-    5 bloco: parte_declara_rotulos parte_declara_vars @2 parte_declara_subrotinas @3 . comando_composto
+    IDENT  deslocar, e ir ao estado 31
 
-    T_BEGIN  shift, and go to state 34
+    lista_id_var  ir ao estado 32
 
-    comando_composto  go to state 35
 
+Estado 27
 
-state 29
+   25 declaracao_procedimento: PROCEDURE • IDENT $@7 PONTO_E_VIRGULA bloco
 
-   22 parte_declara_subrotinas: parte_declara_subrotinas declaracao_procedimento .
+    IDENT  deslocar, e ir ao estado 33
 
-    $default  reduce using rule 22 (parte_declara_subrotinas)
 
+Estado 28
 
-state 30
+    5 bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas $@3 • comando_composto
 
-   12 declara_vars: declara_vars declara_var .
+    T_BEGIN  deslocar, e ir ao estado 34
 
-    $default  reduce using rule 12 (declara_vars)
+    comando_composto  ir ao estado 35
 
 
-state 31
+Estado 29
 
-   19 lista_id_var: IDENT .
+   22 parte_declara_subrotinas: parte_declara_subrotinas declaracao_procedimento •
 
-    $default  reduce using rule 19 (lista_id_var)
+    $padrão  reduzir usando a regra 22 (parte_declara_subrotinas)
 
 
-state 32
+Estado 30
 
-   16 declara_var: @5 lista_id_var . DOIS_PONTOS tipo @6 PONTO_E_VIRGULA
-   18 lista_id_var: lista_id_var . VIRGULA IDENT
+   12 declara_vars: declara_vars declara_var •
 
-    VIRGULA      shift, and go to state 36
-    DOIS_PONTOS  shift, and go to state 37
+    $padrão  reduzir usando a regra 12 (declara_vars)
 
 
-state 33
+Estado 31
 
-   25 declaracao_procedimento: PROCEDURE IDENT . @7 PONTO_E_VIRGULA bloco
+   19 lista_id_var: IDENT •
 
-    $default  reduce using rule 24 (@7)
+    $padrão  reduzir usando a regra 19 (lista_id_var)
 
-    @7  go to state 38
 
+Estado 32
 
-state 34
+   16 declara_var: $@5 lista_id_var • DOIS_PONTOS tipo $@6 PONTO_E_VIRGULA
+   18 lista_id_var: lista_id_var • VIRGULA IDENT
 
-   26 comando_composto: T_BEGIN . comandos T_END
+    VIRGULA      deslocar, e ir ao estado 36
+    DOIS_PONTOS  deslocar, e ir ao estado 37
 
-    T_BEGIN  shift, and go to state 34
-    IDENT    shift, and go to state 39
-    IF       shift, and go to state 40
-    NUMERO   shift, and go to state 41
-    READ     shift, and go to state 42
-    WRITE    shift, and go to state 43
 
-    PONTO_E_VIRGULA  reduce using rule 39 (chamada_procedimento)
-    WHILE            reduce using rule 65 (@9)
-    $default         reduce using rule 29 (comandos)
+Estado 33
 
-    comando_composto      go to state 44
-    comandos              go to state 45
-    comando               go to state 46
-    comando_sem_rotulo    go to state 47
-    chamada_procedimento  go to state 48
-    leitura               go to state 49
-    escrita               go to state 50
-    atribuicao            go to state 51
-    numero                go to state 52
-    comando_repetitivo    go to state 53
-    @9                    go to state 54
-    comando_condicional   go to state 55
-    if_then               go to state 56
+   25 declaracao_procedimento: PROCEDURE IDENT • $@7 PONTO_E_VIRGULA bloco
 
+    $padrão  reduzir usando a regra 24 ($@7)
 
-state 35
+    $@7  ir ao estado 38
 
-    5 bloco: parte_declara_rotulos parte_declara_vars @2 parte_declara_subrotinas @3 comando_composto .
 
-    $default  reduce using rule 5 (bloco)
+Estado 34
 
+   26 comando_composto: T_BEGIN • comandos T_END
 
-state 36
+    T_BEGIN  deslocar, e ir ao estado 34
+    IDENT    deslocar, e ir ao estado 39
+    IF       deslocar, e ir ao estado 40
+    NUMERO   deslocar, e ir ao estado 41
+    READ     deslocar, e ir ao estado 42
+    WRITE    deslocar, e ir ao estado 43
 
-   18 lista_id_var: lista_id_var VIRGULA . IDENT
+    WHILE    reduzir usando a regra 68 ($@10)
+    $padrão  reduzir usando a regra 29 (comandos)
 
-    IDENT  shift, and go to state 57
+    comando_composto            ir ao estado 44
+    comandos                    ir ao estado 45
+    comando                     ir ao estado 46
+    comando_sem_rotulo          ir ao estado 47
+    atribuicao_ou_procedimento  ir ao estado 48
+    leitura                     ir ao estado 49
+    escrita                     ir ao estado 50
+    numero                      ir ao estado 51
+    comando_repetitivo          ir ao estado 52
+    $@10                        ir ao estado 53
+    comando_condicional         ir ao estado 54
+    if_then                     ir ao estado 55
 
 
-state 37
+Estado 35
 
-   16 declara_var: @5 lista_id_var DOIS_PONTOS . tipo @6 PONTO_E_VIRGULA
+    5 bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas $@3 comando_composto •
 
-    IDENT  shift, and go to state 58
+    $padrão  reduzir usando a regra 5 (bloco)
 
-    tipo  go to state 59
 
+Estado 36
 
-state 38
+   18 lista_id_var: lista_id_var VIRGULA • IDENT
 
-   25 declaracao_procedimento: PROCEDURE IDENT @7 . PONTO_E_VIRGULA bloco
+    IDENT  deslocar, e ir ao estado 56
 
-    PONTO_E_VIRGULA  shift, and go to state 60
 
+Estado 37
 
-state 39
+   16 declara_var: $@5 lista_id_var DOIS_PONTOS • tipo $@6 PONTO_E_VIRGULA
 
-   61 atribuicao: IDENT . @8 ATRIBUICAO expressao_simples
+    IDENT  deslocar, e ir ao estado 57
 
-    $default  reduce using rule 60 (@8)
+    tipo  ir ao estado 58
 
-    @8  go to state 61
 
+Estado 38
 
-state 40
+   25 declaracao_procedimento: PROCEDURE IDENT $@7 • PONTO_E_VIRGULA bloco
 
-   72 if_then: IF . expressao @11 THEN comando_sem_rotulo
+    PONTO_E_VIRGULA  deslocar, e ir ao estado 59
 
-    IDENT   shift, and go to state 62
-    NUMERO  shift, and go to state 63
 
-    expressao          go to state 64
-    expressao_simples  go to state 65
-    termo              go to state 66
-    fator              go to state 67
+Estado 39
 
+   39 atribuicao_ou_procedimento: IDENT • $@8 atribuicao_ou_procedimento_token
 
-state 41
+    $padrão  reduzir usando a regra 38 ($@8)
 
-   64 numero: NUMERO .
+    $@8  ir ao estado 60
 
-    $default  reduce using rule 64 (numero)
 
+Estado 40
 
-state 42
+   75 if_then: IF • expressao $@12 THEN comando_sem_rotulo
 
-   40 leitura: READ . ABRE_PARENTESES lista_leituras FECHA_PARENTESES
+    IDENT   deslocar, e ir ao estado 61
+    NUMERO  deslocar, e ir ao estado 62
 
-    ABRE_PARENTESES  shift, and go to state 68
+    expressao          ir ao estado 63
+    expressao_simples  ir ao estado 64
+    termo              ir ao estado 65
+    fator              ir ao estado 66
 
 
-state 43
+Estado 41
 
-   44 escrita: WRITE . ABRE_PARENTESES lista_escritas FECHA_PARENTESES
+   67 numero: NUMERO •
 
-    ABRE_PARENTESES  shift, and go to state 69
+    $padrão  reduzir usando a regra 67 (numero)
 
 
-state 44
+Estado 42
 
-   33 comando_sem_rotulo: comando_composto .
+   45 leitura: READ • ABRE_PARENTESES lista_leituras FECHA_PARENTESES
 
-    $default  reduce using rule 33 (comando_sem_rotulo)
+    ABRE_PARENTESES  deslocar, e ir ao estado 67
 
 
-state 45
+Estado 43
 
-   26 comando_composto: T_BEGIN comandos . T_END
+   49 escrita: WRITE • ABRE_PARENTESES lista_escritas FECHA_PARENTESES
 
-    T_END  shift, and go to state 70
+    ABRE_PARENTESES  deslocar, e ir ao estado 68
 
 
-state 46
+Estado 44
 
-   27 comandos: comando . PONTO_E_VIRGULA comandos
-   28         | comando . PONTO_E_VIRGULA
+   33 comando_sem_rotulo: comando_composto •
 
-    PONTO_E_VIRGULA  shift, and go to state 71
+    $padrão  reduzir usando a regra 33 (comando_sem_rotulo)
 
 
-state 47
+Estado 45
 
-   31 comando: comando_sem_rotulo .
+   26 comando_composto: T_BEGIN comandos • T_END
 
-    $default  reduce using rule 31 (comando)
+    T_END  deslocar, e ir ao estado 69
 
 
-state 48
+Estado 46
 
-   38 comando_sem_rotulo: chamada_procedimento .
+   27 comandos: comando • PONTO_E_VIRGULA comandos
+   28         | comando • PONTO_E_VIRGULA
 
-    $default  reduce using rule 38 (comando_sem_rotulo)
+    PONTO_E_VIRGULA  deslocar, e ir ao estado 70
 
 
-state 49
+Estado 47
 
-   36 comando_sem_rotulo: leitura .
+   31 comando: comando_sem_rotulo •
 
-    $default  reduce using rule 36 (comando_sem_rotulo)
+    $padrão  reduzir usando a regra 31 (comando)
 
 
-state 50
+Estado 48
 
-   37 comando_sem_rotulo: escrita .
+   32 comando_sem_rotulo: atribuicao_ou_procedimento •
 
-    $default  reduce using rule 37 (comando_sem_rotulo)
+    $padrão  reduzir usando a regra 32 (comando_sem_rotulo)
 
 
-state 51
+Estado 49
 
-   32 comando_sem_rotulo: atribuicao .
+   36 comando_sem_rotulo: leitura •
 
-    $default  reduce using rule 32 (comando_sem_rotulo)
+    $padrão  reduzir usando a regra 36 (comando_sem_rotulo)
 
 
-state 52
+Estado 50
 
-   30 comando: numero . DOIS_PONTOS comando_sem_rotulo
+   37 comando_sem_rotulo: escrita •
 
-    DOIS_PONTOS  shift, and go to state 72
+    $padrão  reduzir usando a regra 37 (comando_sem_rotulo)
 
 
-state 53
+Estado 51
 
-   35 comando_sem_rotulo: comando_repetitivo .
+   30 comando: numero • DOIS_PONTOS comando_sem_rotulo
 
-    $default  reduce using rule 35 (comando_sem_rotulo)
+    DOIS_PONTOS  deslocar, e ir ao estado 71
 
 
-state 54
+Estado 52
 
-   67 comando_repetitivo: @9 . WHILE expressao DO @10 comando_sem_rotulo
+   35 comando_sem_rotulo: comando_repetitivo •
 
-    WHILE  shift, and go to state 73
+    $padrão  reduzir usando a regra 35 (comando_sem_rotulo)
 
 
-state 55
+Estado 53
 
-   34 comando_sem_rotulo: comando_condicional .
+   70 comando_repetitivo: $@10 • WHILE expressao DO $@11 comando_sem_rotulo
 
-    $default  reduce using rule 34 (comando_sem_rotulo)
+    WHILE  deslocar, e ir ao estado 72
 
 
-state 56
+Estado 54
 
-   68 comando_condicional: if_then . cond_else
+   34 comando_sem_rotulo: comando_condicional •
 
-    ELSE  shift, and go to state 74
+    $padrão  reduzir usando a regra 34 (comando_sem_rotulo)
 
-    $default  reduce using rule 70 (cond_else)
 
-    cond_else  go to state 75
+Estado 55
 
+   71 comando_condicional: if_then • cond_else
 
-state 57
+    ELSE  deslocar, e ir ao estado 73
 
-   18 lista_id_var: lista_id_var VIRGULA IDENT .
+    $padrão  reduzir usando a regra 73 (cond_else)
 
-    $default  reduce using rule 18 (lista_id_var)
+    cond_else  ir ao estado 74
 
 
-state 58
+Estado 56
 
-   17 tipo: IDENT .
+   18 lista_id_var: lista_id_var VIRGULA IDENT •
 
-    $default  reduce using rule 17 (tipo)
+    $padrão  reduzir usando a regra 18 (lista_id_var)
 
 
-state 59
+Estado 57
 
-   16 declara_var: @5 lista_id_var DOIS_PONTOS tipo . @6 PONTO_E_VIRGULA
+   17 tipo: IDENT •
 
-    $default  reduce using rule 15 (@6)
+    $padrão  reduzir usando a regra 17 (tipo)
 
-    @6  go to state 76
 
+Estado 58
 
-state 60
+   16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo • $@6 PONTO_E_VIRGULA
 
-   25 declaracao_procedimento: PROCEDURE IDENT @7 PONTO_E_VIRGULA . bloco
+    $padrão  reduzir usando a regra 15 ($@6)
 
-    LABEL  shift, and go to state 13
+    $@6  ir ao estado 75
 
-    $default  reduce using rule 7 (parte_declara_rotulos)
 
-    bloco                  go to state 77
-    parte_declara_rotulos  go to state 15
+Estado 59
 
+   25 declaracao_procedimento: PROCEDURE IDENT $@7 PONTO_E_VIRGULA • bloco
 
-state 61
+    LABEL  deslocar, e ir ao estado 13
 
-   61 atribuicao: IDENT @8 . ATRIBUICAO expressao_simples
+    $padrão  reduzir usando a regra 7 (parte_declara_rotulos)
 
-    ATRIBUICAO  shift, and go to state 78
+    bloco                  ir ao estado 76
+    parte_declara_rotulos  ir ao estado 15
 
 
-state 62
+Estado 60
 
-   62 fator: IDENT .
+   39 atribuicao_ou_procedimento: IDENT $@8 • atribuicao_ou_procedimento_token
 
-    $default  reduce using rule 62 (fator)
+    ATRIBUICAO  reduzir usando a regra 42 ($@9)
+    $padrão     reduzir usando a regra 44 (chamada_procedimento)
 
+    atribuicao_ou_procedimento_token  ir ao estado 77
+    atribuicao                        ir ao estado 78
+    $@9                               ir ao estado 79
+    chamada_procedimento              ir ao estado 80
 
-state 63
 
-   63 fator: NUMERO .
+Estado 61
 
-    $default  reduce using rule 63 (fator)
+   65 fator: IDENT •
 
+    $padrão  reduzir usando a regra 65 (fator)
 
-state 64
 
-   47 expressao: expressao . IGUAL expressao_simples
-   48          | expressao . DIFERENTE expressao_simples
-   49          | expressao . MENOR expressao_simples
-   50          | expressao . MENOR_IGUAL expressao_simples
-   51          | expressao . MAIOR expressao_simples
-   52          | expressao . MAIOR_IGUAL expressao_simples
-   72 if_then: IF expressao . @11 THEN comando_sem_rotulo
+Estado 62
 
-    IGUAL        shift, and go to state 79
-    DIFERENTE    shift, and go to state 80
-    MENOR_IGUAL  shift, and go to state 81
-    MAIOR_IGUAL  shift, and go to state 82
-    MENOR        shift, and go to state 83
-    MAIOR        shift, and go to state 84
+   66 fator: NUMERO •
 
-    $default  reduce using rule 71 (@11)
+    $padrão  reduzir usando a regra 66 (fator)
 
-    @11  go to state 85
 
+Estado 63
 
-state 65
+   52 expressao: expressao • IGUAL expressao_simples
+   53          | expressao • DIFERENTE expressao_simples
+   54          | expressao • MENOR expressao_simples
+   55          | expressao • MENOR_IGUAL expressao_simples
+   56          | expressao • MAIOR expressao_simples
+   57          | expressao • MAIOR_IGUAL expressao_simples
+   75 if_then: IF expressao • $@12 THEN comando_sem_rotulo
 
-   53 expressao: expressao_simples .
-   54 expressao_simples: expressao_simples . MAIS termo
-   55                  | expressao_simples . MENOS termo
+    IGUAL        deslocar, e ir ao estado 81
+    DIFERENTE    deslocar, e ir ao estado 82
+    MENOR_IGUAL  deslocar, e ir ao estado 83
+    MAIOR_IGUAL  deslocar, e ir ao estado 84
+    MENOR        deslocar, e ir ao estado 85
+    MAIOR        deslocar, e ir ao estado 86
 
-    MAIS   shift, and go to state 86
-    MENOS  shift, and go to state 87
+    $padrão  reduzir usando a regra 74 ($@12)
 
-    $default  reduce using rule 53 (expressao)
+    $@12  ir ao estado 87
 
 
-state 66
+Estado 64
 
-   56 expressao_simples: termo .
-   57 termo: termo . ASTERISCO fator
-   58      | termo . DIV fator
+   58 expressao: expressao_simples •
+   59 expressao_simples: expressao_simples • MAIS termo
+   60                  | expressao_simples • MENOS termo
 
-    DIV        shift, and go to state 88
-    ASTERISCO  shift, and go to state 89
+    MAIS   deslocar, e ir ao estado 88
+    MENOS  deslocar, e ir ao estado 89
 
-    $default  reduce using rule 56 (expressao_simples)
+    $padrão  reduzir usando a regra 58 (expressao)
 
 
-state 67
+Estado 65
 
-   59 termo: fator .
+   61 expressao_simples: termo •
+   62 termo: termo • ASTERISCO fator
+   63      | termo • DIV fator
 
-    $default  reduce using rule 59 (termo)
+    DIV        deslocar, e ir ao estado 90
+    ASTERISCO  deslocar, e ir ao estado 91
 
+    $padrão  reduzir usando a regra 61 (expressao_simples)
 
-state 68
 
-   40 leitura: READ ABRE_PARENTESES . lista_leituras FECHA_PARENTESES
+Estado 66
 
-    IDENT  shift, and go to state 90
+   64 termo: fator •
 
-    lista_leituras  go to state 91
-    simb_leitura    go to state 92
+    $padrão  reduzir usando a regra 64 (termo)
 
 
-state 69
+Estado 67
 
-   44 escrita: WRITE ABRE_PARENTESES . lista_escritas FECHA_PARENTESES
+   45 leitura: READ ABRE_PARENTESES • lista_leituras FECHA_PARENTESES
 
-    IDENT   shift, and go to state 62
-    NUMERO  shift, and go to state 63
+    IDENT  deslocar, e ir ao estado 92
 
-    lista_escritas     go to state 93
-    expressao_simples  go to state 94
-    termo              go to state 66
-    fator              go to state 67
+    lista_leituras  ir ao estado 93
+    simb_leitura    ir ao estado 94
 
 
-state 70
+Estado 68
 
-   26 comando_composto: T_BEGIN comandos T_END .
+   49 escrita: WRITE ABRE_PARENTESES • lista_escritas FECHA_PARENTESES
 
-    $default  reduce using rule 26 (comando_composto)
+    IDENT   deslocar, e ir ao estado 61
+    NUMERO  deslocar, e ir ao estado 62
 
+    lista_escritas     ir ao estado 95
+    expressao_simples  ir ao estado 96
+    termo              ir ao estado 65
+    fator              ir ao estado 66
 
-state 71
 
-   27 comandos: comando PONTO_E_VIRGULA . comandos
-   28         | comando PONTO_E_VIRGULA .
+Estado 69
 
-    T_BEGIN  shift, and go to state 34
-    IDENT    shift, and go to state 39
-    IF       shift, and go to state 40
-    NUMERO   shift, and go to state 41
-    READ     shift, and go to state 42
-    WRITE    shift, and go to state 43
+   26 comando_composto: T_BEGIN comandos T_END •
 
-    PONTO_E_VIRGULA  reduce using rule 39 (chamada_procedimento)
-    T_END            reduce using rule 28 (comandos)
-    T_END            [reduce using rule 29 (comandos)]
-    WHILE            reduce using rule 65 (@9)
-    $default         reduce using rule 28 (comandos)
+    $padrão  reduzir usando a regra 26 (comando_composto)
 
-    comando_composto      go to state 44
-    comandos              go to state 95
-    comando               go to state 46
-    comando_sem_rotulo    go to state 47
-    chamada_procedimento  go to state 48
-    leitura               go to state 49
-    escrita               go to state 50
-    atribuicao            go to state 51
-    numero                go to state 52
-    comando_repetitivo    go to state 53
-    @9                    go to state 54
-    comando_condicional   go to state 55
-    if_then               go to state 56
 
+Estado 70
 
-state 72
+   27 comandos: comando PONTO_E_VIRGULA • comandos
+   28         | comando PONTO_E_VIRGULA •
 
-   30 comando: numero DOIS_PONTOS . comando_sem_rotulo
+    T_BEGIN  deslocar, e ir ao estado 34
+    IDENT    deslocar, e ir ao estado 39
+    IF       deslocar, e ir ao estado 40
+    NUMERO   deslocar, e ir ao estado 41
+    READ     deslocar, e ir ao estado 42
+    WRITE    deslocar, e ir ao estado 43
 
-    T_BEGIN  shift, and go to state 34
-    IDENT    shift, and go to state 39
-    IF       shift, and go to state 40
-    READ     shift, and go to state 42
-    WRITE    shift, and go to state 43
+    T_END    reduzir usando a regra 28 (comandos)
+    T_END    [reduzir usando a regra 29 (comandos)]
+    WHILE    reduzir usando a regra 68 ($@10)
+    $padrão  reduzir usando a regra 28 (comandos)
 
-    WHILE     reduce using rule 65 (@9)
-    $default  reduce using rule 39 (chamada_procedimento)
+    comando_composto            ir ao estado 44
+    comandos                    ir ao estado 97
+    comando                     ir ao estado 46
+    comando_sem_rotulo          ir ao estado 47
+    atribuicao_ou_procedimento  ir ao estado 48
+    leitura                     ir ao estado 49
+    escrita                     ir ao estado 50
+    numero                      ir ao estado 51
+    comando_repetitivo          ir ao estado 52
+    $@10                        ir ao estado 53
+    comando_condicional         ir ao estado 54
+    if_then                     ir ao estado 55
 
-    comando_composto      go to state 44
-    comando_sem_rotulo    go to state 96
-    chamada_procedimento  go to state 48
-    leitura               go to state 49
-    escrita               go to state 50
-    atribuicao            go to state 51
-    comando_repetitivo    go to state 53
-    @9                    go to state 54
-    comando_condicional   go to state 55
-    if_then               go to state 56
 
+Estado 71
 
-state 73
+   30 comando: numero DOIS_PONTOS • comando_sem_rotulo
 
-   67 comando_repetitivo: @9 WHILE . expressao DO @10 comando_sem_rotulo
+    T_BEGIN  deslocar, e ir ao estado 34
+    IDENT    deslocar, e ir ao estado 39
+    IF       deslocar, e ir ao estado 40
+    READ     deslocar, e ir ao estado 42
+    WRITE    deslocar, e ir ao estado 43
 
-    IDENT   shift, and go to state 62
-    NUMERO  shift, and go to state 63
+    $padrão  reduzir usando a regra 68 ($@10)
 
-    expressao          go to state 97
-    expressao_simples  go to state 65
-    termo              go to state 66
-    fator              go to state 67
+    comando_composto            ir ao estado 44
+    comando_sem_rotulo          ir ao estado 98
+    atribuicao_ou_procedimento  ir ao estado 48
+    leitura                     ir ao estado 49
+    escrita                     ir ao estado 50
+    comando_repetitivo          ir ao estado 52
+    $@10                        ir ao estado 53
+    comando_condicional         ir ao estado 54
+    if_then                     ir ao estado 55
 
 
-state 74
+Estado 72
 
-   69 cond_else: ELSE . comando_sem_rotulo
+   70 comando_repetitivo: $@10 WHILE • expressao DO $@11 comando_sem_rotulo
 
-    T_BEGIN  shift, and go to state 34
-    IDENT    shift, and go to state 39
-    IF       shift, and go to state 40
-    READ     shift, and go to state 42
-    WRITE    shift, and go to state 43
+    IDENT   deslocar, e ir ao estado 61
+    NUMERO  deslocar, e ir ao estado 62
 
-    WHILE     reduce using rule 65 (@9)
-    $default  reduce using rule 39 (chamada_procedimento)
+    expressao          ir ao estado 99
+    expressao_simples  ir ao estado 64
+    termo              ir ao estado 65
+    fator              ir ao estado 66
 
-    comando_composto      go to state 44
-    comando_sem_rotulo    go to state 98
-    chamada_procedimento  go to state 48
-    leitura               go to state 49
-    escrita               go to state 50
-    atribuicao            go to state 51
-    comando_repetitivo    go to state 53
-    @9                    go to state 54
-    comando_condicional   go to state 55
-    if_then               go to state 56
 
+Estado 73
 
-state 75
+   72 cond_else: ELSE • comando_sem_rotulo
 
-   68 comando_condicional: if_then cond_else .
+    T_BEGIN  deslocar, e ir ao estado 34
+    IDENT    deslocar, e ir ao estado 39
+    IF       deslocar, e ir ao estado 40
+    READ     deslocar, e ir ao estado 42
+    WRITE    deslocar, e ir ao estado 43
 
-    $default  reduce using rule 68 (comando_condicional)
+    $padrão  reduzir usando a regra 68 ($@10)
 
+    comando_composto            ir ao estado 44
+    comando_sem_rotulo          ir ao estado 100
+    atribuicao_ou_procedimento  ir ao estado 48
+    leitura                     ir ao estado 49
+    escrita                     ir ao estado 50
+    comando_repetitivo          ir ao estado 52
+    $@10                        ir ao estado 53
+    comando_condicional         ir ao estado 54
+    if_then                     ir ao estado 55
 
-state 76
 
-   16 declara_var: @5 lista_id_var DOIS_PONTOS tipo @6 . PONTO_E_VIRGULA
+Estado 74
 
-    PONTO_E_VIRGULA  shift, and go to state 99
+   71 comando_condicional: if_then cond_else •
 
+    $padrão  reduzir usando a regra 71 (comando_condicional)
 
-state 77
 
-   25 declaracao_procedimento: PROCEDURE IDENT @7 PONTO_E_VIRGULA bloco .
+Estado 75
 
-    $default  reduce using rule 25 (declaracao_procedimento)
+   16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo $@6 • PONTO_E_VIRGULA
 
+    PONTO_E_VIRGULA  deslocar, e ir ao estado 101
 
-state 78
 
-   61 atribuicao: IDENT @8 ATRIBUICAO . expressao_simples
+Estado 76
 
-    IDENT   shift, and go to state 62
-    NUMERO  shift, and go to state 63
+   25 declaracao_procedimento: PROCEDURE IDENT $@7 PONTO_E_VIRGULA bloco •
 
-    expressao_simples  go to state 100
-    termo              go to state 66
-    fator              go to state 67
+    $padrão  reduzir usando a regra 25 (declaracao_procedimento)
 
 
-state 79
+Estado 77
 
-   47 expressao: expressao IGUAL . expressao_simples
+   39 atribuicao_ou_procedimento: IDENT $@8 atribuicao_ou_procedimento_token •
 
-    IDENT   shift, and go to state 62
-    NUMERO  shift, and go to state 63
+    $padrão  reduzir usando a regra 39 (atribuicao_ou_procedimento)
 
-    expressao_simples  go to state 101
-    termo              go to state 66
-    fator              go to state 67
 
+Estado 78
 
-state 80
+   40 atribuicao_ou_procedimento_token: atribuicao •
 
-   48 expressao: expressao DIFERENTE . expressao_simples
+    $padrão  reduzir usando a regra 40 (atribuicao_ou_procedimento_token)
 
-    IDENT   shift, and go to state 62
-    NUMERO  shift, and go to state 63
 
-    expressao_simples  go to state 102
-    termo              go to state 66
-    fator              go to state 67
+Estado 79
 
+   43 atribuicao: $@9 • ATRIBUICAO expressao_simples
 
-state 81
+    ATRIBUICAO  deslocar, e ir ao estado 102
 
-   50 expressao: expressao MENOR_IGUAL . expressao_simples
 
-    IDENT   shift, and go to state 62
-    NUMERO  shift, and go to state 63
+Estado 80
 
-    expressao_simples  go to state 103
-    termo              go to state 66
-    fator              go to state 67
+   41 atribuicao_ou_procedimento_token: chamada_procedimento •
 
+    $padrão  reduzir usando a regra 41 (atribuicao_ou_procedimento_token)
 
-state 82
 
-   52 expressao: expressao MAIOR_IGUAL . expressao_simples
+Estado 81
 
-    IDENT   shift, and go to state 62
-    NUMERO  shift, and go to state 63
+   52 expressao: expressao IGUAL • expressao_simples
 
-    expressao_simples  go to state 104
-    termo              go to state 66
-    fator              go to state 67
+    IDENT   deslocar, e ir ao estado 61
+    NUMERO  deslocar, e ir ao estado 62
 
+    expressao_simples  ir ao estado 103
+    termo              ir ao estado 65
+    fator              ir ao estado 66
 
-state 83
 
-   49 expressao: expressao MENOR . expressao_simples
+Estado 82
 
-    IDENT   shift, and go to state 62
-    NUMERO  shift, and go to state 63
+   53 expressao: expressao DIFERENTE • expressao_simples
 
-    expressao_simples  go to state 105
-    termo              go to state 66
-    fator              go to state 67
+    IDENT   deslocar, e ir ao estado 61
+    NUMERO  deslocar, e ir ao estado 62
 
+    expressao_simples  ir ao estado 104
+    termo              ir ao estado 65
+    fator              ir ao estado 66
 
-state 84
 
-   51 expressao: expressao MAIOR . expressao_simples
+Estado 83
 
-    IDENT   shift, and go to state 62
-    NUMERO  shift, and go to state 63
+   55 expressao: expressao MENOR_IGUAL • expressao_simples
 
-    expressao_simples  go to state 106
-    termo              go to state 66
-    fator              go to state 67
+    IDENT   deslocar, e ir ao estado 61
+    NUMERO  deslocar, e ir ao estado 62
 
+    expressao_simples  ir ao estado 105
+    termo              ir ao estado 65
+    fator              ir ao estado 66
 
-state 85
 
-   72 if_then: IF expressao @11 . THEN comando_sem_rotulo
+Estado 84
 
-    THEN  shift, and go to state 107
+   57 expressao: expressao MAIOR_IGUAL • expressao_simples
 
+    IDENT   deslocar, e ir ao estado 61
+    NUMERO  deslocar, e ir ao estado 62
 
-state 86
+    expressao_simples  ir ao estado 106
+    termo              ir ao estado 65
+    fator              ir ao estado 66
 
-   54 expressao_simples: expressao_simples MAIS . termo
 
-    IDENT   shift, and go to state 62
-    NUMERO  shift, and go to state 63
+Estado 85
 
-    termo  go to state 108
-    fator  go to state 67
+   54 expressao: expressao MENOR • expressao_simples
 
+    IDENT   deslocar, e ir ao estado 61
+    NUMERO  deslocar, e ir ao estado 62
 
-state 87
+    expressao_simples  ir ao estado 107
+    termo              ir ao estado 65
+    fator              ir ao estado 66
 
-   55 expressao_simples: expressao_simples MENOS . termo
 
-    IDENT   shift, and go to state 62
-    NUMERO  shift, and go to state 63
+Estado 86
 
-    termo  go to state 109
-    fator  go to state 67
+   56 expressao: expressao MAIOR • expressao_simples
 
+    IDENT   deslocar, e ir ao estado 61
+    NUMERO  deslocar, e ir ao estado 62
 
-state 88
+    expressao_simples  ir ao estado 108
+    termo              ir ao estado 65
+    fator              ir ao estado 66
 
-   58 termo: termo DIV . fator
 
-    IDENT   shift, and go to state 62
-    NUMERO  shift, and go to state 63
+Estado 87
 
-    fator  go to state 110
+   75 if_then: IF expressao $@12 • THEN comando_sem_rotulo
 
+    THEN  deslocar, e ir ao estado 109
 
-state 89
 
-   57 termo: termo ASTERISCO . fator
+Estado 88
 
-    IDENT   shift, and go to state 62
-    NUMERO  shift, and go to state 63
+   59 expressao_simples: expressao_simples MAIS • termo
 
-    fator  go to state 111
+    IDENT   deslocar, e ir ao estado 61
+    NUMERO  deslocar, e ir ao estado 62
 
+    termo  ir ao estado 110
+    fator  ir ao estado 66
 
-state 90
 
-   43 simb_leitura: IDENT .
+Estado 89
 
-    $default  reduce using rule 43 (simb_leitura)
+   60 expressao_simples: expressao_simples MENOS • termo
 
+    IDENT   deslocar, e ir ao estado 61
+    NUMERO  deslocar, e ir ao estado 62
 
-state 91
+    termo  ir ao estado 111
+    fator  ir ao estado 66
 
-   40 leitura: READ ABRE_PARENTESES lista_leituras . FECHA_PARENTESES
-   41 lista_leituras: lista_leituras . VIRGULA simb_leitura
 
-    FECHA_PARENTESES  shift, and go to state 112
-    VIRGULA           shift, and go to state 113
+Estado 90
 
+   63 termo: termo DIV • fator
 
-state 92
+    IDENT   deslocar, e ir ao estado 61
+    NUMERO  deslocar, e ir ao estado 62
 
-   42 lista_leituras: simb_leitura .
+    fator  ir ao estado 112
 
-    $default  reduce using rule 42 (lista_leituras)
 
+Estado 91
 
-state 93
+   62 termo: termo ASTERISCO • fator
 
-   44 escrita: WRITE ABRE_PARENTESES lista_escritas . FECHA_PARENTESES
-   45 lista_escritas: lista_escritas . VIRGULA expressao_simples
+    IDENT   deslocar, e ir ao estado 61
+    NUMERO  deslocar, e ir ao estado 62
 
-    FECHA_PARENTESES  shift, and go to state 114
-    VIRGULA           shift, and go to state 115
+    fator  ir ao estado 113
 
 
-state 94
+Estado 92
 
-   46 lista_escritas: expressao_simples .
-   54 expressao_simples: expressao_simples . MAIS termo
-   55                  | expressao_simples . MENOS termo
+   48 simb_leitura: IDENT •
 
-    MAIS   shift, and go to state 86
-    MENOS  shift, and go to state 87
+    $padrão  reduzir usando a regra 48 (simb_leitura)
 
-    $default  reduce using rule 46 (lista_escritas)
 
+Estado 93
 
-state 95
+   45 leitura: READ ABRE_PARENTESES lista_leituras • FECHA_PARENTESES
+   46 lista_leituras: lista_leituras • VIRGULA simb_leitura
 
-   27 comandos: comando PONTO_E_VIRGULA comandos .
+    FECHA_PARENTESES  deslocar, e ir ao estado 114
+    VIRGULA           deslocar, e ir ao estado 115
 
-    $default  reduce using rule 27 (comandos)
 
+Estado 94
 
-state 96
+   47 lista_leituras: simb_leitura •
 
-   30 comando: numero DOIS_PONTOS comando_sem_rotulo .
+    $padrão  reduzir usando a regra 47 (lista_leituras)
 
-    $default  reduce using rule 30 (comando)
 
+Estado 95
 
-state 97
+   49 escrita: WRITE ABRE_PARENTESES lista_escritas • FECHA_PARENTESES
+   50 lista_escritas: lista_escritas • VIRGULA expressao_simples
 
-   47 expressao: expressao . IGUAL expressao_simples
-   48          | expressao . DIFERENTE expressao_simples
-   49          | expressao . MENOR expressao_simples
-   50          | expressao . MENOR_IGUAL expressao_simples
-   51          | expressao . MAIOR expressao_simples
-   52          | expressao . MAIOR_IGUAL expressao_simples
-   67 comando_repetitivo: @9 WHILE expressao . DO @10 comando_sem_rotulo
+    FECHA_PARENTESES  deslocar, e ir ao estado 116
+    VIRGULA           deslocar, e ir ao estado 117
 
-    DO           shift, and go to state 116
-    IGUAL        shift, and go to state 79
-    DIFERENTE    shift, and go to state 80
-    MENOR_IGUAL  shift, and go to state 81
-    MAIOR_IGUAL  shift, and go to state 82
-    MENOR        shift, and go to state 83
-    MAIOR        shift, and go to state 84
 
+Estado 96
 
-state 98
+   51 lista_escritas: expressao_simples •
+   59 expressao_simples: expressao_simples • MAIS termo
+   60                  | expressao_simples • MENOS termo
 
-   69 cond_else: ELSE comando_sem_rotulo .
+    MAIS   deslocar, e ir ao estado 88
+    MENOS  deslocar, e ir ao estado 89
 
-    $default  reduce using rule 69 (cond_else)
+    $padrão  reduzir usando a regra 51 (lista_escritas)
 
 
-state 99
+Estado 97
 
-   16 declara_var: @5 lista_id_var DOIS_PONTOS tipo @6 PONTO_E_VIRGULA .
+   27 comandos: comando PONTO_E_VIRGULA comandos •
 
-    $default  reduce using rule 16 (declara_var)
+    $padrão  reduzir usando a regra 27 (comandos)
 
 
-state 100
+Estado 98
 
-   54 expressao_simples: expressao_simples . MAIS termo
-   55                  | expressao_simples . MENOS termo
-   61 atribuicao: IDENT @8 ATRIBUICAO expressao_simples .
+   30 comando: numero DOIS_PONTOS comando_sem_rotulo •
 
-    MAIS   shift, and go to state 86
-    MENOS  shift, and go to state 87
+    $padrão  reduzir usando a regra 30 (comando)
 
-    $default  reduce using rule 61 (atribuicao)
 
+Estado 99
 
-state 101
+   52 expressao: expressao • IGUAL expressao_simples
+   53          | expressao • DIFERENTE expressao_simples
+   54          | expressao • MENOR expressao_simples
+   55          | expressao • MENOR_IGUAL expressao_simples
+   56          | expressao • MAIOR expressao_simples
+   57          | expressao • MAIOR_IGUAL expressao_simples
+   70 comando_repetitivo: $@10 WHILE expressao • DO $@11 comando_sem_rotulo
 
-   47 expressao: expressao IGUAL expressao_simples .
-   54 expressao_simples: expressao_simples . MAIS termo
-   55                  | expressao_simples . MENOS termo
+    DO           deslocar, e ir ao estado 118
+    IGUAL        deslocar, e ir ao estado 81
+    DIFERENTE    deslocar, e ir ao estado 82
+    MENOR_IGUAL  deslocar, e ir ao estado 83
+    MAIOR_IGUAL  deslocar, e ir ao estado 84
+    MENOR        deslocar, e ir ao estado 85
+    MAIOR        deslocar, e ir ao estado 86
 
-    MAIS   shift, and go to state 86
-    MENOS  shift, and go to state 87
 
-    $default  reduce using rule 47 (expressao)
+Estado 100
 
+   72 cond_else: ELSE comando_sem_rotulo •
 
-state 102
+    $padrão  reduzir usando a regra 72 (cond_else)
 
-   48 expressao: expressao DIFERENTE expressao_simples .
-   54 expressao_simples: expressao_simples . MAIS termo
-   55                  | expressao_simples . MENOS termo
 
-    MAIS   shift, and go to state 86
-    MENOS  shift, and go to state 87
+Estado 101
 
-    $default  reduce using rule 48 (expressao)
+   16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo $@6 PONTO_E_VIRGULA •
 
+    $padrão  reduzir usando a regra 16 (declara_var)
 
-state 103
 
-   50 expressao: expressao MENOR_IGUAL expressao_simples .
-   54 expressao_simples: expressao_simples . MAIS termo
-   55                  | expressao_simples . MENOS termo
+Estado 102
 
-    MAIS   shift, and go to state 86
-    MENOS  shift, and go to state 87
+   43 atribuicao: $@9 ATRIBUICAO • expressao_simples
 
-    $default  reduce using rule 50 (expressao)
+    IDENT   deslocar, e ir ao estado 61
+    NUMERO  deslocar, e ir ao estado 62
 
+    expressao_simples  ir ao estado 119
+    termo              ir ao estado 65
+    fator              ir ao estado 66
 
-state 104
 
-   52 expressao: expressao MAIOR_IGUAL expressao_simples .
-   54 expressao_simples: expressao_simples . MAIS termo
-   55                  | expressao_simples . MENOS termo
+Estado 103
 
-    MAIS   shift, and go to state 86
-    MENOS  shift, and go to state 87
+   52 expressao: expressao IGUAL expressao_simples •
+   59 expressao_simples: expressao_simples • MAIS termo
+   60                  | expressao_simples • MENOS termo
 
-    $default  reduce using rule 52 (expressao)
+    MAIS   deslocar, e ir ao estado 88
+    MENOS  deslocar, e ir ao estado 89
 
+    $padrão  reduzir usando a regra 52 (expressao)
 
-state 105
 
-   49 expressao: expressao MENOR expressao_simples .
-   54 expressao_simples: expressao_simples . MAIS termo
-   55                  | expressao_simples . MENOS termo
+Estado 104
 
-    MAIS   shift, and go to state 86
-    MENOS  shift, and go to state 87
+   53 expressao: expressao DIFERENTE expressao_simples •
+   59 expressao_simples: expressao_simples • MAIS termo
+   60                  | expressao_simples • MENOS termo
 
-    $default  reduce using rule 49 (expressao)
+    MAIS   deslocar, e ir ao estado 88
+    MENOS  deslocar, e ir ao estado 89
 
+    $padrão  reduzir usando a regra 53 (expressao)
 
-state 106
 
-   51 expressao: expressao MAIOR expressao_simples .
-   54 expressao_simples: expressao_simples . MAIS termo
-   55                  | expressao_simples . MENOS termo
+Estado 105
 
-    MAIS   shift, and go to state 86
-    MENOS  shift, and go to state 87
+   55 expressao: expressao MENOR_IGUAL expressao_simples •
+   59 expressao_simples: expressao_simples • MAIS termo
+   60                  | expressao_simples • MENOS termo
 
-    $default  reduce using rule 51 (expressao)
+    MAIS   deslocar, e ir ao estado 88
+    MENOS  deslocar, e ir ao estado 89
 
+    $padrão  reduzir usando a regra 55 (expressao)
 
-state 107
 
-   72 if_then: IF expressao @11 THEN . comando_sem_rotulo
+Estado 106
 
-    T_BEGIN  shift, and go to state 34
-    IDENT    shift, and go to state 39
-    IF       shift, and go to state 40
-    READ     shift, and go to state 42
-    WRITE    shift, and go to state 43
+   57 expressao: expressao MAIOR_IGUAL expressao_simples •
+   59 expressao_simples: expressao_simples • MAIS termo
+   60                  | expressao_simples • MENOS termo
 
-    WHILE     reduce using rule 65 (@9)
-    $default  reduce using rule 39 (chamada_procedimento)
+    MAIS   deslocar, e ir ao estado 88
+    MENOS  deslocar, e ir ao estado 89
 
-    comando_composto      go to state 44
-    comando_sem_rotulo    go to state 117
-    chamada_procedimento  go to state 48
-    leitura               go to state 49
-    escrita               go to state 50
-    atribuicao            go to state 51
-    comando_repetitivo    go to state 53
-    @9                    go to state 54
-    comando_condicional   go to state 55
-    if_then               go to state 56
+    $padrão  reduzir usando a regra 57 (expressao)
 
 
-state 108
+Estado 107
 
-   54 expressao_simples: expressao_simples MAIS termo .
-   57 termo: termo . ASTERISCO fator
-   58      | termo . DIV fator
+   54 expressao: expressao MENOR expressao_simples •
+   59 expressao_simples: expressao_simples • MAIS termo
+   60                  | expressao_simples • MENOS termo
 
-    DIV        shift, and go to state 88
-    ASTERISCO  shift, and go to state 89
+    MAIS   deslocar, e ir ao estado 88
+    MENOS  deslocar, e ir ao estado 89
 
-    $default  reduce using rule 54 (expressao_simples)
+    $padrão  reduzir usando a regra 54 (expressao)
 
 
-state 109
+Estado 108
 
-   55 expressao_simples: expressao_simples MENOS termo .
-   57 termo: termo . ASTERISCO fator
-   58      | termo . DIV fator
+   56 expressao: expressao MAIOR expressao_simples •
+   59 expressao_simples: expressao_simples • MAIS termo
+   60                  | expressao_simples • MENOS termo
 
-    DIV        shift, and go to state 88
-    ASTERISCO  shift, and go to state 89
+    MAIS   deslocar, e ir ao estado 88
+    MENOS  deslocar, e ir ao estado 89
 
-    $default  reduce using rule 55 (expressao_simples)
+    $padrão  reduzir usando a regra 56 (expressao)
 
 
-state 110
+Estado 109
 
-   58 termo: termo DIV fator .
+   75 if_then: IF expressao $@12 THEN • comando_sem_rotulo
 
-    $default  reduce using rule 58 (termo)
+    T_BEGIN  deslocar, e ir ao estado 34
+    IDENT    deslocar, e ir ao estado 39
+    IF       deslocar, e ir ao estado 40
+    READ     deslocar, e ir ao estado 42
+    WRITE    deslocar, e ir ao estado 43
 
+    $padrão  reduzir usando a regra 68 ($@10)
 
-state 111
+    comando_composto            ir ao estado 44
+    comando_sem_rotulo          ir ao estado 120
+    atribuicao_ou_procedimento  ir ao estado 48
+    leitura                     ir ao estado 49
+    escrita                     ir ao estado 50
+    comando_repetitivo          ir ao estado 52
+    $@10                        ir ao estado 53
+    comando_condicional         ir ao estado 54
+    if_then                     ir ao estado 55
 
-   57 termo: termo ASTERISCO fator .
 
-    $default  reduce using rule 57 (termo)
+Estado 110
 
+   59 expressao_simples: expressao_simples MAIS termo •
+   62 termo: termo • ASTERISCO fator
+   63      | termo • DIV fator
 
-state 112
+    DIV        deslocar, e ir ao estado 90
+    ASTERISCO  deslocar, e ir ao estado 91
 
-   40 leitura: READ ABRE_PARENTESES lista_leituras FECHA_PARENTESES .
+    $padrão  reduzir usando a regra 59 (expressao_simples)
 
-    $default  reduce using rule 40 (leitura)
 
+Estado 111
 
-state 113
+   60 expressao_simples: expressao_simples MENOS termo •
+   62 termo: termo • ASTERISCO fator
+   63      | termo • DIV fator
 
-   41 lista_leituras: lista_leituras VIRGULA . simb_leitura
+    DIV        deslocar, e ir ao estado 90
+    ASTERISCO  deslocar, e ir ao estado 91
 
-    IDENT  shift, and go to state 90
+    $padrão  reduzir usando a regra 60 (expressao_simples)
 
-    simb_leitura  go to state 118
 
+Estado 112
 
-state 114
+   63 termo: termo DIV fator •
 
-   44 escrita: WRITE ABRE_PARENTESES lista_escritas FECHA_PARENTESES .
+    $padrão  reduzir usando a regra 63 (termo)
 
-    $default  reduce using rule 44 (escrita)
 
+Estado 113
 
-state 115
+   62 termo: termo ASTERISCO fator •
 
-   45 lista_escritas: lista_escritas VIRGULA . expressao_simples
+    $padrão  reduzir usando a regra 62 (termo)
 
-    IDENT   shift, and go to state 62
-    NUMERO  shift, and go to state 63
 
-    expressao_simples  go to state 119
-    termo              go to state 66
-    fator              go to state 67
+Estado 114
 
+   45 leitura: READ ABRE_PARENTESES lista_leituras FECHA_PARENTESES •
 
-state 116
+    $padrão  reduzir usando a regra 45 (leitura)
 
-   67 comando_repetitivo: @9 WHILE expressao DO . @10 comando_sem_rotulo
 
-    $default  reduce using rule 66 (@10)
+Estado 115
 
-    @10  go to state 120
+   46 lista_leituras: lista_leituras VIRGULA • simb_leitura
 
+    IDENT  deslocar, e ir ao estado 92
 
-state 117
+    simb_leitura  ir ao estado 121
 
-   72 if_then: IF expressao @11 THEN comando_sem_rotulo .
 
-    $default  reduce using rule 72 (if_then)
+Estado 116
 
+   49 escrita: WRITE ABRE_PARENTESES lista_escritas FECHA_PARENTESES •
 
-state 118
+    $padrão  reduzir usando a regra 49 (escrita)
 
-   41 lista_leituras: lista_leituras VIRGULA simb_leitura .
 
-    $default  reduce using rule 41 (lista_leituras)
+Estado 117
 
+   50 lista_escritas: lista_escritas VIRGULA • expressao_simples
 
-state 119
+    IDENT   deslocar, e ir ao estado 61
+    NUMERO  deslocar, e ir ao estado 62
 
-   45 lista_escritas: lista_escritas VIRGULA expressao_simples .
-   54 expressao_simples: expressao_simples . MAIS termo
-   55                  | expressao_simples . MENOS termo
+    expressao_simples  ir ao estado 122
+    termo              ir ao estado 65
+    fator              ir ao estado 66
 
-    MAIS   shift, and go to state 86
-    MENOS  shift, and go to state 87
 
-    $default  reduce using rule 45 (lista_escritas)
+Estado 118
 
+   70 comando_repetitivo: $@10 WHILE expressao DO • $@11 comando_sem_rotulo
 
-state 120
+    $padrão  reduzir usando a regra 69 ($@11)
 
-   67 comando_repetitivo: @9 WHILE expressao DO @10 . comando_sem_rotulo
+    $@11  ir ao estado 123
 
-    T_BEGIN  shift, and go to state 34
-    IDENT    shift, and go to state 39
-    IF       shift, and go to state 40
-    READ     shift, and go to state 42
-    WRITE    shift, and go to state 43
 
-    WHILE     reduce using rule 65 (@9)
-    $default  reduce using rule 39 (chamada_procedimento)
+Estado 119
 
-    comando_composto      go to state 44
-    comando_sem_rotulo    go to state 121
-    chamada_procedimento  go to state 48
-    leitura               go to state 49
-    escrita               go to state 50
-    atribuicao            go to state 51
-    comando_repetitivo    go to state 53
-    @9                    go to state 54
-    comando_condicional   go to state 55
-    if_then               go to state 56
+   43 atribuicao: $@9 ATRIBUICAO expressao_simples •
+   59 expressao_simples: expressao_simples • MAIS termo
+   60                  | expressao_simples • MENOS termo
 
+    MAIS   deslocar, e ir ao estado 88
+    MENOS  deslocar, e ir ao estado 89
 
-state 121
+    $padrão  reduzir usando a regra 43 (atribuicao)
 
-   67 comando_repetitivo: @9 WHILE expressao DO @10 comando_sem_rotulo .
 
-    $default  reduce using rule 67 (comando_repetitivo)
+Estado 120
+
+   75 if_then: IF expressao $@12 THEN comando_sem_rotulo •
+
+    $padrão  reduzir usando a regra 75 (if_then)
+
+
+Estado 121
+
+   46 lista_leituras: lista_leituras VIRGULA simb_leitura •
+
+    $padrão  reduzir usando a regra 46 (lista_leituras)
+
+
+Estado 122
+
+   50 lista_escritas: lista_escritas VIRGULA expressao_simples •
+   59 expressao_simples: expressao_simples • MAIS termo
+   60                  | expressao_simples • MENOS termo
+
+    MAIS   deslocar, e ir ao estado 88
+    MENOS  deslocar, e ir ao estado 89
+
+    $padrão  reduzir usando a regra 50 (lista_escritas)
+
+
+Estado 123
+
+   70 comando_repetitivo: $@10 WHILE expressao DO $@11 • comando_sem_rotulo
+
+    T_BEGIN  deslocar, e ir ao estado 34
+    IDENT    deslocar, e ir ao estado 39
+    IF       deslocar, e ir ao estado 40
+    READ     deslocar, e ir ao estado 42
+    WRITE    deslocar, e ir ao estado 43
+
+    $padrão  reduzir usando a regra 68 ($@10)
+
+    comando_composto            ir ao estado 44
+    comando_sem_rotulo          ir ao estado 124
+    atribuicao_ou_procedimento  ir ao estado 48
+    leitura                     ir ao estado 49
+    escrita                     ir ao estado 50
+    comando_repetitivo          ir ao estado 52
+    $@10                        ir ao estado 53
+    comando_condicional         ir ao estado 54
+    if_then                     ir ao estado 55
+
+
+Estado 124
+
+   70 comando_repetitivo: $@10 WHILE expressao DO $@11 comando_sem_rotulo •
+
+    $padrão  reduzir usando a regra 70 (comando_repetitivo)
diff --git a/compilador.y b/compilador.y
index f145d6c473dc4306da3d139c5cb4189ee85641a8..e10c0ea7078f81344faf7d5b0b1cc1543566e4f2 100644
--- a/compilador.y
+++ b/compilador.y
@@ -161,7 +161,7 @@ declaracao_procedimento: PROCEDURE IDENT {
             char r_proc[4];
             sprintf(r_proc, "R%02d", rot_id);
             rot_id += 1;
-            info.pr.rot = r_proc;
+            strcpy(info.pr.rot,r_proc);
             info.pr.quant = 0;
             info.pr.param = NULL;
 
@@ -196,27 +196,49 @@ comando: numero DOIS_PONTOS comando_sem_rotulo
             | comando_sem_rotulo
 ;
 
-comando_sem_rotulo: atribuicao
+comando_sem_rotulo: atribuicao_ou_procedimento
             | comando_composto
             | comando_condicional
             | comando_repetitivo
             | leitura
             | escrita
+;
+
+atribuicao_ou_procedimento: IDENT {l_elem = busca(token, ts);}
+            atribuicao_ou_procedimento_token
+;
+
+atribuicao_ou_procedimento_token: atribuicao
             | chamada_procedimento
 ;
 
-chamada_procedimento: /*IDENT {
-               l_elem = busca(token,ts);
+atribuicao: {
+    if (l_elem == NULL) {
+        yyerror("Variável de destino não declarada");
+    } else {
+        destino_nivel = l_elem->nivel;
+        destino_desloc = l_elem->info.vs.desloc;
+    }
+} ATRIBUICAO expressao_simples {
+    // Gera código ARMZ para armazenar valor
+    char buffer[50];
+    sprintf(buffer, "ARMZ %d,%d", destino_nivel, destino_desloc);
+    geraCodigo(NULL, buffer);
+};
+
+
+chamada_procedimento: {
                if (l_elem == NULL || l_elem->categ != PR) {
                   yyerror("Procedimento não declarado");
                } else {
                   // Gera código para chamar o procedimento
                   char buffer[50];
+                  mostra_ts(ts);
                   sprintf(buffer, "CHPR %s,%d", l_elem->info.pr.rot, nivel_lexico);
                   geraCodigo(NULL, buffer);
                }
-               //ABRE_PARENTESES FECHA_PARENTESES
-            }*/
+               
+            }
 ;
 
 leitura: READ ABRE_PARENTESES lista_leituras FECHA_PARENTESES
@@ -285,24 +307,6 @@ termo: termo ASTERISCO fator {
             | fator
 ;
 
-atribuicao: IDENT {
-   mostra_ts(ts);
-    // Busca variável no lado esquerdo
-    l_elem = busca(token, ts);
-    if (l_elem == NULL) {
-        yyerror("Variável de destino não declarada");
-    } else {
-        destino_nivel = l_elem->nivel;
-        destino_desloc = l_elem->info.vs.desloc;
-    }
-} ATRIBUICAO expressao_simples {
-    // Gera código ARMZ para armazenar valor
-    char buffer[50];
-    sprintf(buffer, "ARMZ %d,%d", destino_nivel, destino_desloc);
-    geraCodigo(NULL, buffer);
-};
-
-
 fator: IDENT {
     // Carrega variável
     l_elem = busca(token, ts);
diff --git a/teste6.pas b/teste6.pas
index cb2699e92f28899a2dd4c63ca01f5c6d6c8e90b3..05af5dae03af5c19b09039427ca1f09d3bbf9b4a 100644
--- a/teste6.pas
+++ b/teste6.pas
@@ -7,5 +7,5 @@ program proc1 (input, output);
     end
 begin
     x := 8;
-    p
+    p;
 end.
\ No newline at end of file
diff --git a/ts/ts.c b/ts/ts.c
index 2fed12532577cdd00c3fada41ea86385cf76a983..6eda21d93dab06ccd90d3a34d9c390a112c6222f 100644
--- a/ts/ts.c
+++ b/ts/ts.c
@@ -20,7 +20,7 @@ void insere_ts(char *ident, int categ, int nivel, info_t info, ts_t *ts){
         new->info.vs.tipo = info.vs.tipo;
         new->info.vs.desloc = info.vs.desloc;
     } else if (categ == PR) {
-        new->info.pr.rot = info.pr.rot;
+        strcpy(new->info.pr.rot, info.pr.rot);
         new->info.pr.quant = info.pr.quant;
         new->info.pr.param = (int **)malloc(info.pr.quant * sizeof(int *));
         for (int i = 0; i < info.pr.quant; i++) {
diff --git a/ts/ts.h b/ts/ts.h
index 7db1cecc1865709198df406560881480b35c0d57..02271bda8a8c386855be831f2dea37c720ca53f0 100644
--- a/ts/ts.h
+++ b/ts/ts.h
@@ -7,7 +7,7 @@ typedef struct vs_t {
 } vs_t;
 
 typedef struct pr_t {
-    char *rot;
+    char rot[4];
     int quant;
     int **param;
 } pr_t;