diff --git a/compilador.output b/compilador.output index 3bd8023f5f158a44dd6f6a6974b3dfd02cd11e87..de30752f979b47aae362436be038788b7d4132e4 100644 --- a/compilador.output +++ b/compilador.output @@ -1,49 +1,49 @@ -Terminais sem uso na gramática +Terminals which are not used - TYPE - ARRAY - FUNCTION - GOTO - OR - AND - NOT + TYPE + ARRAY + FUNCTION + GOTO + OR + AND + NOT -Estado 71 conflitos: 1 de redução/redução +State 71 conflicts: 1 reduce/reduce -Gramática +Grammar 0 $accept: programa $end - 1 $@1: ε + 1 @1: /* empty */ - 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: ε + 3 @2: /* empty */ - 4 $@3: ε + 4 @3: /* empty */ - 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 | ε + 7 | /* empty */ 8 parte_declara_vars: var - 9 $@4: ε + 9 @4: /* empty */ - 10 var: $@4 VAR declara_vars - 11 | ε + 10 var: @4 VAR declara_vars + 11 | /* empty */ 12 declara_vars: declara_vars declara_var 13 | declara_var - 14 $@5: ε + 14 @5: /* empty */ - 15 $@6: ε + 15 @6: /* empty */ - 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,1691 +54,1657 @@ Gramática 21 | IDENT 22 parte_declara_subrotinas: parte_declara_subrotinas declaracao_procedimento - 23 | ε + 23 | /* empty */ - 24 $@7: ε + 24 @7: /* empty */ - 25 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada PONTO_E_VIRGULA bloco + 25 @8: /* empty */ - 26 $@8: ε + 26 declaracao_procedimento: PROCEDURE IDENT @7 parametros_ou_nada PONTO_E_VIRGULA bloco @8 PONTO_E_VIRGULA - 27 $@9: ε + 27 @9: /* empty */ - 28 parametros_ou_nada: ABRE_PARENTESES $@8 paramentros_formais $@9 FECHA_PARENTESES - 29 | ε + 28 @10: /* empty */ - 30 paramentros_formais: secao_pfs - 31 | paramentros_formais PONTO_E_VIRGULA secao_pfs + 29 parametros_ou_nada: ABRE_PARENTESES @9 paramentros_formais @10 FECHA_PARENTESES + 30 | /* empty */ - 32 $@10: ε + 31 paramentros_formais: secao_pfs + 32 | paramentros_formais PONTO_E_VIRGULA secao_pfs - 33 secao_pfs: $@10 lista_id_pf DOIS_PONTOS tipo + 33 @11: /* empty */ - 34 lista_id_pf: parametro VIRGULA lista_id_pf - 35 | parametro + 34 secao_pfs: @11 lista_id_pf DOIS_PONTOS tipo - 36 parametro: IDENT + 35 lista_id_pf: parametro VIRGULA lista_id_pf + 36 | parametro - 37 comando_composto: T_BEGIN comandos T_END + 37 parametro: IDENT - 38 comandos: comando PONTO_E_VIRGULA comandos - 39 | comando PONTO_E_VIRGULA - 40 | ε + 38 comando_composto: T_BEGIN comandos T_END - 41 comando: numero DOIS_PONTOS comando_sem_rotulo - 42 | comando_sem_rotulo + 39 comandos: comando PONTO_E_VIRGULA comandos + 40 | comando PONTO_E_VIRGULA + 41 | /* empty */ - 43 comando_sem_rotulo: atribuicao_ou_procedimento - 44 | comando_composto - 45 | comando_condicional - 46 | comando_repetitivo - 47 | leitura - 48 | escrita + 42 comando: numero DOIS_PONTOS comando_sem_rotulo + 43 | comando_sem_rotulo - 49 $@11: ε + 44 comando_sem_rotulo: atribuicao_ou_procedimento + 45 | comando_composto + 46 | comando_condicional + 47 | comando_repetitivo + 48 | leitura + 49 | escrita - 50 atribuicao_ou_procedimento: IDENT $@11 atribuicao_ou_procedimento_token + 50 @12: /* empty */ - 51 atribuicao_ou_procedimento_token: atribuicao - 52 | chamada_procedimento + 51 atribuicao_ou_procedimento: IDENT @12 atribuicao_ou_procedimento_token - 53 $@12: ε + 52 atribuicao_ou_procedimento_token: atribuicao + 53 | chamada_procedimento - 54 atribuicao: $@12 ATRIBUICAO expressao_simples + 54 @13: /* empty */ - 55 chamada_procedimento: ε + 55 atribuicao: @13 ATRIBUICAO expressao_simples - 56 leitura: READ ABRE_PARENTESES lista_leituras FECHA_PARENTESES + 56 chamada_procedimento: /* empty */ - 57 lista_leituras: lista_leituras VIRGULA simb_leitura - 58 | simb_leitura + 57 leitura: READ ABRE_PARENTESES lista_leituras FECHA_PARENTESES - 59 simb_leitura: IDENT + 58 lista_leituras: lista_leituras VIRGULA simb_leitura + 59 | simb_leitura - 60 escrita: WRITE ABRE_PARENTESES lista_escritas FECHA_PARENTESES + 60 simb_leitura: IDENT - 61 lista_escritas: lista_escritas VIRGULA expressao_simples - 62 | expressao_simples + 61 escrita: WRITE ABRE_PARENTESES lista_escritas FECHA_PARENTESES - 63 expressao: expressao IGUAL expressao_simples - 64 | expressao DIFERENTE expressao_simples - 65 | expressao MENOR expressao_simples - 66 | expressao MENOR_IGUAL expressao_simples - 67 | expressao MAIOR expressao_simples - 68 | expressao MAIOR_IGUAL expressao_simples - 69 | expressao_simples + 62 lista_escritas: lista_escritas VIRGULA expressao_simples + 63 | expressao_simples - 70 expressao_simples: expressao_simples MAIS termo - 71 | expressao_simples MENOS termo - 72 | termo - - 73 termo: termo ASTERISCO fator - 74 | termo DIV fator - 75 | fator - - 76 fator: IDENT - 77 | NUMERO - - 78 numero: NUMERO - - 79 $@13: ε - - 80 $@14: ε - - 81 comando_repetitivo: $@13 WHILE expressao DO $@14 comando_sem_rotulo - - 82 comando_condicional: if_then cond_else - - 83 cond_else: ELSE comando_sem_rotulo - 84 | ε - - 85 $@15: ε - - 86 if_then: IF expressao $@15 THEN comando_sem_rotulo - - -Terminais, com as regras onde eles aparecem - - $end (0) 0 - error (256) - PROGRAM (258) 2 - ABRE_PARENTESES (259) 2 28 56 60 - FECHA_PARENTESES (260) 2 28 56 60 - VIRGULA (261) 6 18 20 34 57 61 - PONTO_E_VIRGULA (262) 2 16 25 31 38 39 - DOIS_PONTOS (263) 16 33 41 - PONTO (264) 2 - T_BEGIN (265) 37 - T_END (266) 37 - VAR (267) 10 - IDENT (268) 2 17 18 19 20 21 25 36 50 59 76 - ATRIBUICAO (269) 54 - LABEL (270) 6 - TYPE (271) - ARRAY (272) - PROCEDURE (273) 25 - FUNCTION (274) - GOTO (275) - IF (276) 86 - THEN (277) 86 - ELSE (278) 83 - WHILE (279) 81 - DO (280) 81 - OR (281) - DIV (282) 74 - AND (283) - NOT (284) - IGUAL (285) 63 - DIFERENTE (286) 64 - MENOR_IGUAL (287) 66 - MAIOR_IGUAL (288) 68 - MENOR (289) 65 - MAIOR (290) 67 - MAIS (291) 70 - MENOS (292) 71 - ASTERISCO (293) 73 - NUMERO (294) 77 78 - READ (295) 56 - WRITE (296) 60 - 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 33 - 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 - parametros_ou_nada (63) - à esquerda: 28 29 - à direita: 25 - $@8 (64) - à esquerda: 26 - à direita: 28 - $@9 (65) - à esquerda: 27 - à direita: 28 - paramentros_formais (66) - à esquerda: 30 31 - à direita: 28 31 - secao_pfs (67) - à esquerda: 33 - à direita: 30 31 - $@10 (68) - à esquerda: 32 - à direita: 33 - lista_id_pf (69) - à esquerda: 34 35 - à direita: 33 34 - parametro (70) - à esquerda: 36 - à direita: 34 35 - comando_composto (71) - à esquerda: 37 - à direita: 5 44 - comandos (72) - à esquerda: 38 39 40 - à direita: 37 38 - comando (73) - à esquerda: 41 42 - à direita: 38 39 - comando_sem_rotulo (74) - à esquerda: 43 44 45 46 47 48 - à direita: 41 42 81 83 86 - atribuicao_ou_procedimento (75) - à esquerda: 50 - à direita: 43 - $@11 (76) - à esquerda: 49 - à direita: 50 - atribuicao_ou_procedimento_token (77) - à esquerda: 51 52 - à direita: 50 - atribuicao (78) - à esquerda: 54 - à direita: 51 - $@12 (79) - à esquerda: 53 - à direita: 54 - chamada_procedimento (80) - à esquerda: 55 - à direita: 52 - leitura (81) - à esquerda: 56 - à direita: 47 - lista_leituras (82) - à esquerda: 57 58 - à direita: 56 57 - simb_leitura (83) - à esquerda: 59 - à direita: 57 58 - escrita (84) - à esquerda: 60 - à direita: 48 - lista_escritas (85) - à esquerda: 61 62 - à direita: 60 61 - expressao (86) - à esquerda: 63 64 65 66 67 68 69 - à direita: 63 64 65 66 67 68 81 86 - expressao_simples (87) - à esquerda: 70 71 72 - à direita: 54 61 62 63 64 65 66 67 68 69 70 71 - termo (88) - à esquerda: 73 74 75 - à direita: 70 71 72 73 74 - fator (89) - à esquerda: 76 77 - à direita: 73 74 75 - numero (90) - à esquerda: 78 - à direita: 41 - comando_repetitivo (91) - à esquerda: 81 - à direita: 46 - $@13 (92) - à esquerda: 79 - à direita: 81 - $@14 (93) - à esquerda: 80 - à direita: 81 - comando_condicional (94) - à esquerda: 82 - à direita: 45 - cond_else (95) - à esquerda: 83 84 - à direita: 82 - if_then (96) - à esquerda: 86 - à direita: 82 - $@15 (97) - à esquerda: 85 - à direita: 86 + 64 expressao: expressao IGUAL expressao_simples + 65 | expressao DIFERENTE expressao_simples + 66 | expressao MENOR expressao_simples + 67 | expressao MENOR_IGUAL expressao_simples + 68 | expressao MAIOR expressao_simples + 69 | expressao MAIOR_IGUAL expressao_simples + 70 | expressao_simples + 71 expressao_simples: expressao_simples MAIS termo + 72 | expressao_simples MENOS termo + 73 | termo + + 74 termo: termo ASTERISCO fator + 75 | termo DIV fator + 76 | fator + + 77 fator: IDENT + 78 | NUMERO + + 79 numero: NUMERO + + 80 @14: /* empty */ + + 81 @15: /* empty */ + + 82 comando_repetitivo: @14 WHILE expressao DO @15 comando_sem_rotulo + + 83 comando_condicional: if_then cond_else + + 84 cond_else: ELSE comando_sem_rotulo + 85 | /* empty */ + + 86 @16: /* empty */ + + 87 if_then: IF expressao @16 THEN comando_sem_rotulo + + +Terminals, with rules where they appear + +$end (0) 0 +error (256) +PROGRAM (258) 2 +ABRE_PARENTESES (259) 2 29 57 61 +FECHA_PARENTESES (260) 2 29 57 61 +VIRGULA (261) 6 18 20 35 58 62 +PONTO_E_VIRGULA (262) 2 16 26 32 39 40 +DOIS_PONTOS (263) 16 34 42 +PONTO (264) 2 +T_BEGIN (265) 38 +T_END (266) 38 +VAR (267) 10 +IDENT (268) 2 17 18 19 20 21 26 37 51 60 77 +ATRIBUICAO (269) 55 +LABEL (270) 6 +TYPE (271) +ARRAY (272) +PROCEDURE (273) 26 +FUNCTION (274) +GOTO (275) +IF (276) 87 +THEN (277) 87 +ELSE (278) 84 +WHILE (279) 82 +DO (280) 82 +OR (281) +DIV (282) 75 +AND (283) +NOT (284) +IGUAL (285) 64 +DIFERENTE (286) 65 +MENOR_IGUAL (287) 67 +MAIOR_IGUAL (288) 69 +MENOR (289) 66 +MAIOR (290) 68 +MAIS (291) 71 +MENOS (292) 72 +ASTERISCO (293) 74 +NUMERO (294) 78 79 +READ (295) 57 +WRITE (296) 61 +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 26 +@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 34 +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: 26, on right: 22 +@7 (62) + on left: 24, on right: 26 +@8 (63) + on left: 25, on right: 26 +parametros_ou_nada (64) + on left: 29 30, on right: 26 +@9 (65) + on left: 27, on right: 29 +@10 (66) + on left: 28, on right: 29 +paramentros_formais (67) + on left: 31 32, on right: 29 32 +secao_pfs (68) + on left: 34, on right: 31 32 +@11 (69) + on left: 33, on right: 34 +lista_id_pf (70) + on left: 35 36, on right: 34 35 +parametro (71) + on left: 37, on right: 35 36 +comando_composto (72) + on left: 38, on right: 5 45 +comandos (73) + on left: 39 40 41, on right: 38 39 +comando (74) + on left: 42 43, on right: 39 40 +comando_sem_rotulo (75) + on left: 44 45 46 47 48 49, on right: 42 43 82 84 87 +atribuicao_ou_procedimento (76) + on left: 51, on right: 44 +@12 (77) + on left: 50, on right: 51 +atribuicao_ou_procedimento_token (78) + on left: 52 53, on right: 51 +atribuicao (79) + on left: 55, on right: 52 +@13 (80) + on left: 54, on right: 55 +chamada_procedimento (81) + on left: 56, on right: 53 +leitura (82) + on left: 57, on right: 48 +lista_leituras (83) + on left: 58 59, on right: 57 58 +simb_leitura (84) + on left: 60, on right: 58 59 +escrita (85) + on left: 61, on right: 49 +lista_escritas (86) + on left: 62 63, on right: 61 62 +expressao (87) + on left: 64 65 66 67 68 69 70, on right: 64 65 66 67 68 69 82 87 +expressao_simples (88) + on left: 71 72 73, on right: 55 62 63 64 65 66 67 68 69 70 71 72 +termo (89) + on left: 74 75 76, on right: 71 72 73 74 75 +fator (90) + on left: 77 78, on right: 74 75 76 +numero (91) + on left: 79, on right: 42 +comando_repetitivo (92) + on left: 82, on right: 47 +@14 (93) + on left: 80, on right: 82 +@15 (94) + on left: 81, on right: 82 +comando_condicional (95) + on left: 83, on right: 46 +cond_else (96) + on left: 84 85, on right: 83 +if_then (97) + on left: 87, on right: 83 +@16 (98) + on left: 86, on right: 87 -Estado 0 - 0 $accept: • programa $end +state 0 - $padrão reduzir usando a regra 1 ($@1) + 0 $accept: . programa $end - programa ir ao estado 1 - $@1 ir ao estado 2 + $default reduce using rule 1 (@1) + programa go to state 1 + @1 go to state 2 -Estado 1 - 0 $accept: programa • $end +state 1 - $end deslocar, e ir ao estado 3 + 0 $accept: programa . $end + $end shift, and go to state 3 -Estado 2 - 2 programa: $@1 • PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO +state 2 - PROGRAM deslocar, e ir ao estado 4 + 2 programa: @1 . PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO + PROGRAM shift, and go to state 4 -Estado 3 - 0 $accept: programa $end • +state 3 - $padrão aceitar + 0 $accept: programa $end . + $default accept -Estado 4 - 2 programa: $@1 PROGRAM • IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO +state 4 - IDENT deslocar, e ir ao estado 5 + 2 programa: @1 PROGRAM . IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO + IDENT shift, and go to state 5 -Estado 5 - 2 programa: $@1 PROGRAM IDENT • ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO +state 5 - ABRE_PARENTESES deslocar, e ir ao estado 6 + 2 programa: @1 PROGRAM IDENT . ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO + ABRE_PARENTESES shift, and go to state 6 -Estado 6 - 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES • lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO +state 6 - IDENT deslocar, e ir ao estado 7 + 2 programa: @1 PROGRAM IDENT ABRE_PARENTESES . lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO - lista_idents ir ao estado 8 + IDENT shift, and go to state 7 + lista_idents go to state 8 -Estado 7 - 21 lista_idents: IDENT • +state 7 - $padrão reduzir usando a regra 21 (lista_idents) + 21 lista_idents: IDENT . + $default reduce using rule 21 (lista_idents) -Estado 8 - 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents • FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO - 20 lista_idents: lista_idents • VIRGULA IDENT +state 8 - FECHA_PARENTESES deslocar, e ir ao estado 9 - VIRGULA deslocar, e ir ao estado 10 + 2 programa: @1 PROGRAM IDENT ABRE_PARENTESES lista_idents . FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO + 20 lista_idents: lista_idents . VIRGULA IDENT + FECHA_PARENTESES shift, and go to state 9 + VIRGULA shift, and go to state 10 -Estado 9 - 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES • PONTO_E_VIRGULA bloco PONTO +state 9 - PONTO_E_VIRGULA deslocar, e ir ao estado 11 + 2 programa: @1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES . PONTO_E_VIRGULA bloco PONTO + PONTO_E_VIRGULA shift, and go to state 11 -Estado 10 - 20 lista_idents: lista_idents VIRGULA • IDENT +state 10 - IDENT deslocar, e ir ao estado 12 + 20 lista_idents: lista_idents VIRGULA . IDENT + IDENT shift, and go to state 12 -Estado 11 - 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA • bloco PONTO +state 11 - LABEL deslocar, e ir ao estado 13 + 2 programa: @1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA . bloco PONTO - $padrão reduzir usando a regra 7 (parte_declara_rotulos) + LABEL shift, and go to state 13 - bloco ir ao estado 14 - parte_declara_rotulos ir ao estado 15 + $default reduce using rule 7 (parte_declara_rotulos) + bloco go to state 14 + parte_declara_rotulos go to state 15 -Estado 12 - 20 lista_idents: lista_idents VIRGULA IDENT • +state 12 - $padrão reduzir usando a regra 20 (lista_idents) + 20 lista_idents: lista_idents VIRGULA IDENT . + $default reduce using rule 20 (lista_idents) -Estado 13 - 6 parte_declara_rotulos: LABEL • VIRGULA +state 13 - VIRGULA deslocar, e ir ao estado 16 + 6 parte_declara_rotulos: LABEL . VIRGULA + VIRGULA shift, and go to state 16 -Estado 14 - 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco • PONTO +state 14 - PONTO deslocar, e ir ao estado 17 + 2 programa: @1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco . PONTO + PONTO shift, and go to state 17 -Estado 15 - 5 bloco: parte_declara_rotulos • parte_declara_vars $@2 parte_declara_subrotinas $@3 comando_composto +state 15 - VAR reduzir usando a regra 9 ($@4) - $padrão reduzir usando a regra 11 (var) + 5 bloco: parte_declara_rotulos . parte_declara_vars @2 parte_declara_subrotinas @3 comando_composto - parte_declara_vars ir ao estado 18 - var ir ao estado 19 - $@4 ir ao estado 20 + VAR reduce using rule 9 (@4) + $default reduce using rule 11 (var) + parte_declara_vars go to state 18 + var go to state 19 + @4 go to state 20 -Estado 16 - 6 parte_declara_rotulos: LABEL VIRGULA • +state 16 - $padrão reduzir usando a regra 6 (parte_declara_rotulos) + 6 parte_declara_rotulos: LABEL VIRGULA . + $default reduce using rule 6 (parte_declara_rotulos) -Estado 17 - 2 programa: $@1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO • +state 17 - $padrão reduzir usando a regra 2 (programa) + 2 programa: @1 PROGRAM IDENT ABRE_PARENTESES lista_idents FECHA_PARENTESES PONTO_E_VIRGULA bloco PONTO . + $default reduce using rule 2 (programa) -Estado 18 - 5 bloco: parte_declara_rotulos parte_declara_vars • $@2 parte_declara_subrotinas $@3 comando_composto +state 18 - $padrão reduzir usando a regra 3 ($@2) + 5 bloco: parte_declara_rotulos parte_declara_vars . @2 parte_declara_subrotinas @3 comando_composto - $@2 ir ao estado 21 + $default reduce using rule 3 (@2) + @2 go to state 21 -Estado 19 - 8 parte_declara_vars: var • +state 19 - $padrão reduzir usando a regra 8 (parte_declara_vars) + 8 parte_declara_vars: var . + $default reduce using rule 8 (parte_declara_vars) -Estado 20 - 10 var: $@4 • VAR declara_vars +state 20 - VAR deslocar, e ir ao estado 22 + 10 var: @4 . VAR declara_vars + VAR shift, and go to state 22 -Estado 21 - 5 bloco: parte_declara_rotulos parte_declara_vars $@2 • parte_declara_subrotinas $@3 comando_composto +state 21 - $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 - parte_declara_subrotinas ir ao estado 23 + $default reduce using rule 23 (parte_declara_subrotinas) + parte_declara_subrotinas go to state 23 -Estado 22 - 10 var: $@4 VAR • declara_vars +state 22 - $padrão reduzir usando a regra 14 ($@5) + 10 var: @4 VAR . declara_vars - declara_vars ir ao estado 24 - declara_var ir ao estado 25 - $@5 ir ao estado 26 + $default reduce using rule 14 (@5) + declara_vars go to state 24 + declara_var go to state 25 + @5 go to state 26 -Estado 23 - 5 bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas • $@3 comando_composto - 22 parte_declara_subrotinas: parte_declara_subrotinas • declaracao_procedimento +state 23 - PROCEDURE deslocar, e ir ao estado 27 + 5 bloco: parte_declara_rotulos parte_declara_vars @2 parte_declara_subrotinas . @3 comando_composto + 22 parte_declara_subrotinas: parte_declara_subrotinas . declaracao_procedimento - $padrão reduzir usando a regra 4 ($@3) + PROCEDURE shift, and go to state 27 - $@3 ir ao estado 28 - declaracao_procedimento ir ao estado 29 + $default reduce using rule 4 (@3) + @3 go to state 28 + declaracao_procedimento go to state 29 -Estado 24 - 10 var: $@4 VAR declara_vars • - 12 declara_vars: declara_vars • declara_var +state 24 - IDENT reduzir usando a regra 14 ($@5) - $padrão reduzir usando a regra 10 (var) + 10 var: @4 VAR declara_vars . + 12 declara_vars: declara_vars . declara_var - declara_var ir ao estado 30 - $@5 ir ao estado 26 + IDENT reduce using rule 14 (@5) + $default reduce using rule 10 (var) + declara_var go to state 30 + @5 go to state 26 -Estado 25 - 13 declara_vars: declara_var • +state 25 - $padrão reduzir usando a regra 13 (declara_vars) + 13 declara_vars: declara_var . + $default reduce using rule 13 (declara_vars) -Estado 26 - 16 declara_var: $@5 • lista_id_var DOIS_PONTOS tipo $@6 PONTO_E_VIRGULA +state 26 - IDENT deslocar, e ir ao estado 31 + 16 declara_var: @5 . lista_id_var DOIS_PONTOS tipo @6 PONTO_E_VIRGULA - lista_id_var ir ao estado 32 + IDENT shift, and go to state 31 + lista_id_var go to state 32 -Estado 27 - 25 declaracao_procedimento: PROCEDURE • IDENT $@7 parametros_ou_nada PONTO_E_VIRGULA bloco +state 27 - IDENT deslocar, e ir ao estado 33 + 26 declaracao_procedimento: PROCEDURE . IDENT @7 parametros_ou_nada PONTO_E_VIRGULA bloco @8 PONTO_E_VIRGULA + IDENT shift, and go to state 33 -Estado 28 - 5 bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas $@3 • comando_composto +state 28 - T_BEGIN deslocar, e ir ao estado 34 + 5 bloco: parte_declara_rotulos parte_declara_vars @2 parte_declara_subrotinas @3 . comando_composto - comando_composto ir ao estado 35 + T_BEGIN shift, and go to state 34 + comando_composto go to state 35 -Estado 29 - 22 parte_declara_subrotinas: parte_declara_subrotinas declaracao_procedimento • +state 29 - $padrão reduzir usando a regra 22 (parte_declara_subrotinas) + 22 parte_declara_subrotinas: parte_declara_subrotinas declaracao_procedimento . + $default reduce using rule 22 (parte_declara_subrotinas) -Estado 30 - 12 declara_vars: declara_vars declara_var • +state 30 - $padrão reduzir usando a regra 12 (declara_vars) + 12 declara_vars: declara_vars declara_var . + $default reduce using rule 12 (declara_vars) -Estado 31 - 19 lista_id_var: IDENT • +state 31 - $padrão reduzir usando a regra 19 (lista_id_var) + 19 lista_id_var: IDENT . + $default reduce using rule 19 (lista_id_var) -Estado 32 - 16 declara_var: $@5 lista_id_var • DOIS_PONTOS tipo $@6 PONTO_E_VIRGULA - 18 lista_id_var: lista_id_var • VIRGULA IDENT +state 32 - VIRGULA deslocar, e ir ao estado 36 - DOIS_PONTOS deslocar, e ir ao estado 37 + 16 declara_var: @5 lista_id_var . DOIS_PONTOS tipo @6 PONTO_E_VIRGULA + 18 lista_id_var: lista_id_var . VIRGULA IDENT + VIRGULA shift, and go to state 36 + DOIS_PONTOS shift, and go to state 37 -Estado 33 - 25 declaracao_procedimento: PROCEDURE IDENT • $@7 parametros_ou_nada PONTO_E_VIRGULA bloco +state 33 - $padrão reduzir usando a regra 24 ($@7) + 26 declaracao_procedimento: PROCEDURE IDENT . @7 parametros_ou_nada PONTO_E_VIRGULA bloco @8 PONTO_E_VIRGULA - $@7 ir ao estado 38 + $default reduce using rule 24 (@7) + @7 go to state 38 -Estado 34 - 37 comando_composto: T_BEGIN • comandos T_END +state 34 - 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 + 38 comando_composto: T_BEGIN . comandos T_END - WHILE reduzir usando a regra 79 ($@13) - $padrão reduzir usando a regra 40 (comandos) + 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 - 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 - $@13 ir ao estado 53 - comando_condicional ir ao estado 54 - if_then ir ao estado 55 + WHILE reduce using rule 80 (@14) + $default reduce using rule 41 (comandos) + comando_composto go to state 44 + comandos go to state 45 + comando go to state 46 + comando_sem_rotulo go to state 47 + atribuicao_ou_procedimento go to state 48 + leitura go to state 49 + escrita go to state 50 + numero go to state 51 + comando_repetitivo go to state 52 + @14 go to state 53 + comando_condicional go to state 54 + if_then go to state 55 -Estado 35 - 5 bloco: parte_declara_rotulos parte_declara_vars $@2 parte_declara_subrotinas $@3 comando_composto • +state 35 - $padrão reduzir usando a regra 5 (bloco) + 5 bloco: parte_declara_rotulos parte_declara_vars @2 parte_declara_subrotinas @3 comando_composto . + $default reduce using rule 5 (bloco) -Estado 36 - 18 lista_id_var: lista_id_var VIRGULA • IDENT +state 36 - IDENT deslocar, e ir ao estado 56 + 18 lista_id_var: lista_id_var VIRGULA . IDENT + IDENT shift, and go to state 56 -Estado 37 - 16 declara_var: $@5 lista_id_var DOIS_PONTOS • tipo $@6 PONTO_E_VIRGULA +state 37 - IDENT deslocar, e ir ao estado 57 + 16 declara_var: @5 lista_id_var DOIS_PONTOS . tipo @6 PONTO_E_VIRGULA - tipo ir ao estado 58 + IDENT shift, and go to state 57 + tipo go to state 58 -Estado 38 - 25 declaracao_procedimento: PROCEDURE IDENT $@7 • parametros_ou_nada PONTO_E_VIRGULA bloco +state 38 - ABRE_PARENTESES deslocar, e ir ao estado 59 + 26 declaracao_procedimento: PROCEDURE IDENT @7 . parametros_ou_nada PONTO_E_VIRGULA bloco @8 PONTO_E_VIRGULA - $padrão reduzir usando a regra 29 (parametros_ou_nada) + ABRE_PARENTESES shift, and go to state 59 - parametros_ou_nada ir ao estado 60 + $default reduce using rule 30 (parametros_ou_nada) + parametros_ou_nada go to state 60 -Estado 39 - 50 atribuicao_ou_procedimento: IDENT • $@11 atribuicao_ou_procedimento_token +state 39 - $padrão reduzir usando a regra 49 ($@11) + 51 atribuicao_ou_procedimento: IDENT . @12 atribuicao_ou_procedimento_token - $@11 ir ao estado 61 + $default reduce using rule 50 (@12) + @12 go to state 61 -Estado 40 - 86 if_then: IF • expressao $@15 THEN comando_sem_rotulo +state 40 - IDENT deslocar, e ir ao estado 62 - NUMERO deslocar, e ir ao estado 63 + 87 if_then: IF . expressao @16 THEN comando_sem_rotulo - expressao ir ao estado 64 - expressao_simples ir ao estado 65 - termo ir ao estado 66 - fator ir ao estado 67 + 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 41 - 78 numero: NUMERO • +state 41 - $padrão reduzir usando a regra 78 (numero) + 79 numero: NUMERO . + $default reduce using rule 79 (numero) -Estado 42 - 56 leitura: READ • ABRE_PARENTESES lista_leituras FECHA_PARENTESES +state 42 - ABRE_PARENTESES deslocar, e ir ao estado 68 + 57 leitura: READ . ABRE_PARENTESES lista_leituras FECHA_PARENTESES + ABRE_PARENTESES shift, and go to state 68 -Estado 43 - 60 escrita: WRITE • ABRE_PARENTESES lista_escritas FECHA_PARENTESES +state 43 - ABRE_PARENTESES deslocar, e ir ao estado 69 + 61 escrita: WRITE . ABRE_PARENTESES lista_escritas FECHA_PARENTESES + ABRE_PARENTESES shift, and go to state 69 -Estado 44 - 44 comando_sem_rotulo: comando_composto • +state 44 - $padrão reduzir usando a regra 44 (comando_sem_rotulo) + 45 comando_sem_rotulo: comando_composto . + $default reduce using rule 45 (comando_sem_rotulo) -Estado 45 - 37 comando_composto: T_BEGIN comandos • T_END +state 45 - T_END deslocar, e ir ao estado 70 + 38 comando_composto: T_BEGIN comandos . T_END + T_END shift, and go to state 70 -Estado 46 - 38 comandos: comando • PONTO_E_VIRGULA comandos - 39 | comando • PONTO_E_VIRGULA +state 46 - PONTO_E_VIRGULA deslocar, e ir ao estado 71 + 39 comandos: comando . PONTO_E_VIRGULA comandos + 40 | comando . PONTO_E_VIRGULA + PONTO_E_VIRGULA shift, and go to state 71 -Estado 47 - 42 comando: comando_sem_rotulo • +state 47 - $padrão reduzir usando a regra 42 (comando) + 43 comando: comando_sem_rotulo . + $default reduce using rule 43 (comando) -Estado 48 - 43 comando_sem_rotulo: atribuicao_ou_procedimento • +state 48 - $padrão reduzir usando a regra 43 (comando_sem_rotulo) + 44 comando_sem_rotulo: atribuicao_ou_procedimento . + $default reduce using rule 44 (comando_sem_rotulo) -Estado 49 - 47 comando_sem_rotulo: leitura • +state 49 - $padrão reduzir usando a regra 47 (comando_sem_rotulo) + 48 comando_sem_rotulo: leitura . + $default reduce using rule 48 (comando_sem_rotulo) -Estado 50 - 48 comando_sem_rotulo: escrita • +state 50 - $padrão reduzir usando a regra 48 (comando_sem_rotulo) + 49 comando_sem_rotulo: escrita . + $default reduce using rule 49 (comando_sem_rotulo) -Estado 51 - 41 comando: numero • DOIS_PONTOS comando_sem_rotulo +state 51 - DOIS_PONTOS deslocar, e ir ao estado 72 + 42 comando: numero . DOIS_PONTOS comando_sem_rotulo + DOIS_PONTOS shift, and go to state 72 -Estado 52 - 46 comando_sem_rotulo: comando_repetitivo • +state 52 - $padrão reduzir usando a regra 46 (comando_sem_rotulo) + 47 comando_sem_rotulo: comando_repetitivo . + $default reduce using rule 47 (comando_sem_rotulo) -Estado 53 - 81 comando_repetitivo: $@13 • WHILE expressao DO $@14 comando_sem_rotulo +state 53 - WHILE deslocar, e ir ao estado 73 + 82 comando_repetitivo: @14 . WHILE expressao DO @15 comando_sem_rotulo + WHILE shift, and go to state 73 -Estado 54 - 45 comando_sem_rotulo: comando_condicional • +state 54 - $padrão reduzir usando a regra 45 (comando_sem_rotulo) + 46 comando_sem_rotulo: comando_condicional . + $default reduce using rule 46 (comando_sem_rotulo) -Estado 55 - 82 comando_condicional: if_then • cond_else +state 55 - ELSE deslocar, e ir ao estado 74 + 83 comando_condicional: if_then . cond_else - $padrão reduzir usando a regra 84 (cond_else) + ELSE shift, and go to state 74 - cond_else ir ao estado 75 + $default reduce using rule 85 (cond_else) + cond_else go to state 75 -Estado 56 - 18 lista_id_var: lista_id_var VIRGULA IDENT • +state 56 - $padrão reduzir usando a regra 18 (lista_id_var) + 18 lista_id_var: lista_id_var VIRGULA IDENT . + $default reduce using rule 18 (lista_id_var) -Estado 57 - 17 tipo: IDENT • +state 57 - $padrão reduzir usando a regra 17 (tipo) + 17 tipo: IDENT . + $default reduce using rule 17 (tipo) -Estado 58 - 16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo • $@6 PONTO_E_VIRGULA +state 58 - $padrão reduzir usando a regra 15 ($@6) + 16 declara_var: @5 lista_id_var DOIS_PONTOS tipo . @6 PONTO_E_VIRGULA - $@6 ir ao estado 76 + $default reduce using rule 15 (@6) + @6 go to state 76 -Estado 59 - 28 parametros_ou_nada: ABRE_PARENTESES • $@8 paramentros_formais $@9 FECHA_PARENTESES +state 59 - $padrão reduzir usando a regra 26 ($@8) + 29 parametros_ou_nada: ABRE_PARENTESES . @9 paramentros_formais @10 FECHA_PARENTESES - $@8 ir ao estado 77 + $default reduce using rule 27 (@9) + @9 go to state 77 -Estado 60 - 25 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada • PONTO_E_VIRGULA bloco +state 60 - PONTO_E_VIRGULA deslocar, e ir ao estado 78 + 26 declaracao_procedimento: PROCEDURE IDENT @7 parametros_ou_nada . PONTO_E_VIRGULA bloco @8 PONTO_E_VIRGULA + PONTO_E_VIRGULA shift, and go to state 78 -Estado 61 - 50 atribuicao_ou_procedimento: IDENT $@11 • atribuicao_ou_procedimento_token +state 61 - ATRIBUICAO reduzir usando a regra 53 ($@12) - $padrão reduzir usando a regra 55 (chamada_procedimento) + 51 atribuicao_ou_procedimento: IDENT @12 . atribuicao_ou_procedimento_token - atribuicao_ou_procedimento_token ir ao estado 79 - atribuicao ir ao estado 80 - $@12 ir ao estado 81 - chamada_procedimento ir ao estado 82 + ATRIBUICAO reduce using rule 54 (@13) + $default reduce using rule 56 (chamada_procedimento) + atribuicao_ou_procedimento_token go to state 79 + atribuicao go to state 80 + @13 go to state 81 + chamada_procedimento go to state 82 -Estado 62 - 76 fator: IDENT • +state 62 - $padrão reduzir usando a regra 76 (fator) + 77 fator: IDENT . + $default reduce using rule 77 (fator) -Estado 63 - 77 fator: NUMERO • +state 63 - $padrão reduzir usando a regra 77 (fator) + 78 fator: NUMERO . + $default reduce using rule 78 (fator) -Estado 64 - 63 expressao: expressao • IGUAL expressao_simples - 64 | expressao • DIFERENTE expressao_simples - 65 | expressao • MENOR expressao_simples - 66 | expressao • MENOR_IGUAL expressao_simples - 67 | expressao • MAIOR expressao_simples - 68 | expressao • MAIOR_IGUAL expressao_simples - 86 if_then: IF expressao • $@15 THEN comando_sem_rotulo +state 64 - IGUAL deslocar, e ir ao estado 83 - DIFERENTE deslocar, e ir ao estado 84 - MENOR_IGUAL deslocar, e ir ao estado 85 - MAIOR_IGUAL deslocar, e ir ao estado 86 - MENOR deslocar, e ir ao estado 87 - MAIOR deslocar, e ir ao estado 88 + 64 expressao: expressao . IGUAL expressao_simples + 65 | expressao . DIFERENTE expressao_simples + 66 | expressao . MENOR expressao_simples + 67 | expressao . MENOR_IGUAL expressao_simples + 68 | expressao . MAIOR expressao_simples + 69 | expressao . MAIOR_IGUAL expressao_simples + 87 if_then: IF expressao . @16 THEN comando_sem_rotulo - $padrão reduzir usando a regra 85 ($@15) + IGUAL shift, and go to state 83 + DIFERENTE shift, and go to state 84 + MENOR_IGUAL shift, and go to state 85 + MAIOR_IGUAL shift, and go to state 86 + MENOR shift, and go to state 87 + MAIOR shift, and go to state 88 - $@15 ir ao estado 89 + $default reduce using rule 86 (@16) + @16 go to state 89 -Estado 65 - 69 expressao: expressao_simples • - 70 expressao_simples: expressao_simples • MAIS termo - 71 | expressao_simples • MENOS termo +state 65 - MAIS deslocar, e ir ao estado 90 - MENOS deslocar, e ir ao estado 91 + 70 expressao: expressao_simples . + 71 expressao_simples: expressao_simples . MAIS termo + 72 | expressao_simples . MENOS termo - $padrão reduzir usando a regra 69 (expressao) + MAIS shift, and go to state 90 + MENOS shift, and go to state 91 + $default reduce using rule 70 (expressao) -Estado 66 - 72 expressao_simples: termo • - 73 termo: termo • ASTERISCO fator - 74 | termo • DIV fator +state 66 - DIV deslocar, e ir ao estado 92 - ASTERISCO deslocar, e ir ao estado 93 + 73 expressao_simples: termo . + 74 termo: termo . ASTERISCO fator + 75 | termo . DIV fator - $padrão reduzir usando a regra 72 (expressao_simples) + DIV shift, and go to state 92 + ASTERISCO shift, and go to state 93 + $default reduce using rule 73 (expressao_simples) -Estado 67 - 75 termo: fator • +state 67 - $padrão reduzir usando a regra 75 (termo) + 76 termo: fator . + $default reduce using rule 76 (termo) -Estado 68 - 56 leitura: READ ABRE_PARENTESES • lista_leituras FECHA_PARENTESES +state 68 - IDENT deslocar, e ir ao estado 94 + 57 leitura: READ ABRE_PARENTESES . lista_leituras FECHA_PARENTESES - lista_leituras ir ao estado 95 - simb_leitura ir ao estado 96 + IDENT shift, and go to state 94 + lista_leituras go to state 95 + simb_leitura go to state 96 -Estado 69 - 60 escrita: WRITE ABRE_PARENTESES • lista_escritas FECHA_PARENTESES +state 69 - IDENT deslocar, e ir ao estado 62 - NUMERO deslocar, e ir ao estado 63 + 61 escrita: WRITE ABRE_PARENTESES . lista_escritas FECHA_PARENTESES - lista_escritas ir ao estado 97 - expressao_simples ir ao estado 98 - termo ir ao estado 66 - fator ir ao estado 67 + IDENT shift, and go to state 62 + NUMERO shift, and go to state 63 + lista_escritas go to state 97 + expressao_simples go to state 98 + termo go to state 66 + fator go to state 67 -Estado 70 - 37 comando_composto: T_BEGIN comandos T_END • +state 70 - $padrão reduzir usando a regra 37 (comando_composto) + 38 comando_composto: T_BEGIN comandos T_END . + $default reduce using rule 38 (comando_composto) -Estado 71 - 38 comandos: comando PONTO_E_VIRGULA • comandos - 39 | comando PONTO_E_VIRGULA • +state 71 - 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 + 39 comandos: comando PONTO_E_VIRGULA . comandos + 40 | comando PONTO_E_VIRGULA . - T_END reduzir usando a regra 39 (comandos) - T_END [reduzir usando a regra 40 (comandos)] - WHILE reduzir usando a regra 79 ($@13) - $padrão reduzir usando a regra 39 (comandos) + 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 - comando_composto ir ao estado 44 - comandos ir ao estado 99 - 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 - $@13 ir ao estado 53 - comando_condicional ir ao estado 54 - if_then ir ao estado 55 + T_END reduce using rule 40 (comandos) + T_END [reduce using rule 41 (comandos)] + WHILE reduce using rule 80 (@14) + $default reduce using rule 40 (comandos) + comando_composto go to state 44 + comandos go to state 99 + comando go to state 46 + comando_sem_rotulo go to state 47 + atribuicao_ou_procedimento go to state 48 + leitura go to state 49 + escrita go to state 50 + numero go to state 51 + comando_repetitivo go to state 52 + @14 go to state 53 + comando_condicional go to state 54 + if_then go to state 55 -Estado 72 - 41 comando: numero DOIS_PONTOS • comando_sem_rotulo +state 72 - 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 + 42 comando: numero DOIS_PONTOS . comando_sem_rotulo - $padrão reduzir usando a regra 79 ($@13) + 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 - 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 - $@13 ir ao estado 53 - comando_condicional ir ao estado 54 - if_then ir ao estado 55 + $default reduce using rule 80 (@14) + comando_composto go to state 44 + comando_sem_rotulo go to state 100 + atribuicao_ou_procedimento go to state 48 + leitura go to state 49 + escrita go to state 50 + comando_repetitivo go to state 52 + @14 go to state 53 + comando_condicional go to state 54 + if_then go to state 55 -Estado 73 - 81 comando_repetitivo: $@13 WHILE • expressao DO $@14 comando_sem_rotulo +state 73 - IDENT deslocar, e ir ao estado 62 - NUMERO deslocar, e ir ao estado 63 + 82 comando_repetitivo: @14 WHILE . expressao DO @15 comando_sem_rotulo - expressao ir ao estado 101 - expressao_simples ir ao estado 65 - termo ir ao estado 66 - fator ir ao estado 67 + IDENT shift, and go to state 62 + NUMERO shift, and go to state 63 + expressao go to state 101 + expressao_simples go to state 65 + termo go to state 66 + fator go to state 67 -Estado 74 - 83 cond_else: ELSE • comando_sem_rotulo +state 74 - 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 + 84 cond_else: ELSE . comando_sem_rotulo - $padrão reduzir usando a regra 79 ($@13) + 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 - comando_composto ir ao estado 44 - comando_sem_rotulo ir ao estado 102 - atribuicao_ou_procedimento ir ao estado 48 - leitura ir ao estado 49 - escrita ir ao estado 50 - comando_repetitivo ir ao estado 52 - $@13 ir ao estado 53 - comando_condicional ir ao estado 54 - if_then ir ao estado 55 + $default reduce using rule 80 (@14) + comando_composto go to state 44 + comando_sem_rotulo go to state 102 + atribuicao_ou_procedimento go to state 48 + leitura go to state 49 + escrita go to state 50 + comando_repetitivo go to state 52 + @14 go to state 53 + comando_condicional go to state 54 + if_then go to state 55 -Estado 75 - 82 comando_condicional: if_then cond_else • +state 75 - $padrão reduzir usando a regra 82 (comando_condicional) + 83 comando_condicional: if_then cond_else . + $default reduce using rule 83 (comando_condicional) -Estado 76 - 16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo $@6 • PONTO_E_VIRGULA +state 76 - PONTO_E_VIRGULA deslocar, e ir ao estado 103 + 16 declara_var: @5 lista_id_var DOIS_PONTOS tipo @6 . PONTO_E_VIRGULA + PONTO_E_VIRGULA shift, and go to state 103 -Estado 77 - 28 parametros_ou_nada: ABRE_PARENTESES $@8 • paramentros_formais $@9 FECHA_PARENTESES +state 77 - $padrão reduzir usando a regra 32 ($@10) + 29 parametros_ou_nada: ABRE_PARENTESES @9 . paramentros_formais @10 FECHA_PARENTESES - paramentros_formais ir ao estado 104 - secao_pfs ir ao estado 105 - $@10 ir ao estado 106 + $default reduce using rule 33 (@11) + paramentros_formais go to state 104 + secao_pfs go to state 105 + @11 go to state 106 -Estado 78 - 25 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada PONTO_E_VIRGULA • bloco +state 78 - LABEL deslocar, e ir ao estado 13 + 26 declaracao_procedimento: PROCEDURE IDENT @7 parametros_ou_nada PONTO_E_VIRGULA . bloco @8 PONTO_E_VIRGULA - $padrão reduzir usando a regra 7 (parte_declara_rotulos) + LABEL shift, and go to state 13 - bloco ir ao estado 107 - parte_declara_rotulos ir ao estado 15 + $default reduce using rule 7 (parte_declara_rotulos) + bloco go to state 107 + parte_declara_rotulos go to state 15 -Estado 79 - 50 atribuicao_ou_procedimento: IDENT $@11 atribuicao_ou_procedimento_token • +state 79 - $padrão reduzir usando a regra 50 (atribuicao_ou_procedimento) + 51 atribuicao_ou_procedimento: IDENT @12 atribuicao_ou_procedimento_token . + $default reduce using rule 51 (atribuicao_ou_procedimento) -Estado 80 - 51 atribuicao_ou_procedimento_token: atribuicao • +state 80 - $padrão reduzir usando a regra 51 (atribuicao_ou_procedimento_token) + 52 atribuicao_ou_procedimento_token: atribuicao . + $default reduce using rule 52 (atribuicao_ou_procedimento_token) -Estado 81 - 54 atribuicao: $@12 • ATRIBUICAO expressao_simples +state 81 - ATRIBUICAO deslocar, e ir ao estado 108 + 55 atribuicao: @13 . ATRIBUICAO expressao_simples + ATRIBUICAO shift, and go to state 108 -Estado 82 - 52 atribuicao_ou_procedimento_token: chamada_procedimento • +state 82 - $padrão reduzir usando a regra 52 (atribuicao_ou_procedimento_token) + 53 atribuicao_ou_procedimento_token: chamada_procedimento . + $default reduce using rule 53 (atribuicao_ou_procedimento_token) -Estado 83 - 63 expressao: expressao IGUAL • expressao_simples +state 83 - IDENT deslocar, e ir ao estado 62 - NUMERO deslocar, e ir ao estado 63 + 64 expressao: expressao IGUAL . expressao_simples - expressao_simples ir ao estado 109 - termo ir ao estado 66 - fator ir ao estado 67 + IDENT shift, and go to state 62 + NUMERO shift, and go to state 63 + expressao_simples go to state 109 + termo go to state 66 + fator go to state 67 -Estado 84 - 64 expressao: expressao DIFERENTE • expressao_simples +state 84 - IDENT deslocar, e ir ao estado 62 - NUMERO deslocar, e ir ao estado 63 + 65 expressao: expressao DIFERENTE . expressao_simples - expressao_simples ir ao estado 110 - termo ir ao estado 66 - fator ir ao estado 67 + IDENT shift, and go to state 62 + NUMERO shift, and go to state 63 + expressao_simples go to state 110 + termo go to state 66 + fator go to state 67 -Estado 85 - 66 expressao: expressao MENOR_IGUAL • expressao_simples +state 85 - IDENT deslocar, e ir ao estado 62 - NUMERO deslocar, e ir ao estado 63 + 67 expressao: expressao MENOR_IGUAL . expressao_simples - expressao_simples ir ao estado 111 - termo ir ao estado 66 - fator ir ao estado 67 + IDENT shift, and go to state 62 + NUMERO shift, and go to state 63 + expressao_simples go to state 111 + termo go to state 66 + fator go to state 67 -Estado 86 - 68 expressao: expressao MAIOR_IGUAL • expressao_simples +state 86 - IDENT deslocar, e ir ao estado 62 - NUMERO deslocar, e ir ao estado 63 + 69 expressao: expressao MAIOR_IGUAL . expressao_simples - expressao_simples ir ao estado 112 - termo ir ao estado 66 - fator ir ao estado 67 + IDENT shift, and go to state 62 + NUMERO shift, and go to state 63 + expressao_simples go to state 112 + termo go to state 66 + fator go to state 67 -Estado 87 - 65 expressao: expressao MENOR • expressao_simples +state 87 - IDENT deslocar, e ir ao estado 62 - NUMERO deslocar, e ir ao estado 63 + 66 expressao: expressao MENOR . expressao_simples - expressao_simples ir ao estado 113 - termo ir ao estado 66 - fator ir ao estado 67 + IDENT shift, and go to state 62 + NUMERO shift, and go to state 63 + expressao_simples go to state 113 + termo go to state 66 + fator go to state 67 -Estado 88 - 67 expressao: expressao MAIOR • expressao_simples +state 88 - IDENT deslocar, e ir ao estado 62 - NUMERO deslocar, e ir ao estado 63 + 68 expressao: expressao MAIOR . expressao_simples - expressao_simples ir ao estado 114 - termo ir ao estado 66 - fator ir ao estado 67 + IDENT shift, and go to state 62 + NUMERO shift, and go to state 63 + expressao_simples go to state 114 + termo go to state 66 + fator go to state 67 -Estado 89 - 86 if_then: IF expressao $@15 • THEN comando_sem_rotulo +state 89 - THEN deslocar, e ir ao estado 115 + 87 if_then: IF expressao @16 . THEN comando_sem_rotulo + THEN shift, and go to state 115 -Estado 90 - 70 expressao_simples: expressao_simples MAIS • termo +state 90 - IDENT deslocar, e ir ao estado 62 - NUMERO deslocar, e ir ao estado 63 + 71 expressao_simples: expressao_simples MAIS . termo - termo ir ao estado 116 - fator ir ao estado 67 + IDENT shift, and go to state 62 + NUMERO shift, and go to state 63 + termo go to state 116 + fator go to state 67 -Estado 91 - 71 expressao_simples: expressao_simples MENOS • termo +state 91 - IDENT deslocar, e ir ao estado 62 - NUMERO deslocar, e ir ao estado 63 + 72 expressao_simples: expressao_simples MENOS . termo - termo ir ao estado 117 - fator ir ao estado 67 + IDENT shift, and go to state 62 + NUMERO shift, and go to state 63 + termo go to state 117 + fator go to state 67 -Estado 92 - 74 termo: termo DIV • fator +state 92 - IDENT deslocar, e ir ao estado 62 - NUMERO deslocar, e ir ao estado 63 + 75 termo: termo DIV . fator - fator ir ao estado 118 + IDENT shift, and go to state 62 + NUMERO shift, and go to state 63 + fator go to state 118 -Estado 93 - 73 termo: termo ASTERISCO • fator +state 93 - IDENT deslocar, e ir ao estado 62 - NUMERO deslocar, e ir ao estado 63 + 74 termo: termo ASTERISCO . fator - fator ir ao estado 119 + IDENT shift, and go to state 62 + NUMERO shift, and go to state 63 + fator go to state 119 -Estado 94 - 59 simb_leitura: IDENT • +state 94 - $padrão reduzir usando a regra 59 (simb_leitura) + 60 simb_leitura: IDENT . + $default reduce using rule 60 (simb_leitura) -Estado 95 - 56 leitura: READ ABRE_PARENTESES lista_leituras • FECHA_PARENTESES - 57 lista_leituras: lista_leituras • VIRGULA simb_leitura +state 95 - FECHA_PARENTESES deslocar, e ir ao estado 120 - VIRGULA deslocar, e ir ao estado 121 + 57 leitura: READ ABRE_PARENTESES lista_leituras . FECHA_PARENTESES + 58 lista_leituras: lista_leituras . VIRGULA simb_leitura + FECHA_PARENTESES shift, and go to state 120 + VIRGULA shift, and go to state 121 -Estado 96 - 58 lista_leituras: simb_leitura • +state 96 - $padrão reduzir usando a regra 58 (lista_leituras) + 59 lista_leituras: simb_leitura . + $default reduce using rule 59 (lista_leituras) -Estado 97 - 60 escrita: WRITE ABRE_PARENTESES lista_escritas • FECHA_PARENTESES - 61 lista_escritas: lista_escritas • VIRGULA expressao_simples +state 97 - FECHA_PARENTESES deslocar, e ir ao estado 122 - VIRGULA deslocar, e ir ao estado 123 + 61 escrita: WRITE ABRE_PARENTESES lista_escritas . FECHA_PARENTESES + 62 lista_escritas: lista_escritas . VIRGULA expressao_simples + FECHA_PARENTESES shift, and go to state 122 + VIRGULA shift, and go to state 123 -Estado 98 - 62 lista_escritas: expressao_simples • - 70 expressao_simples: expressao_simples • MAIS termo - 71 | expressao_simples • MENOS termo +state 98 - MAIS deslocar, e ir ao estado 90 - MENOS deslocar, e ir ao estado 91 + 63 lista_escritas: expressao_simples . + 71 expressao_simples: expressao_simples . MAIS termo + 72 | expressao_simples . MENOS termo - $padrão reduzir usando a regra 62 (lista_escritas) + MAIS shift, and go to state 90 + MENOS shift, and go to state 91 + $default reduce using rule 63 (lista_escritas) -Estado 99 - 38 comandos: comando PONTO_E_VIRGULA comandos • +state 99 - $padrão reduzir usando a regra 38 (comandos) + 39 comandos: comando PONTO_E_VIRGULA comandos . + $default reduce using rule 39 (comandos) -Estado 100 - 41 comando: numero DOIS_PONTOS comando_sem_rotulo • +state 100 - $padrão reduzir usando a regra 41 (comando) + 42 comando: numero DOIS_PONTOS comando_sem_rotulo . + $default reduce using rule 42 (comando) -Estado 101 - 63 expressao: expressao • IGUAL expressao_simples - 64 | expressao • DIFERENTE expressao_simples - 65 | expressao • MENOR expressao_simples - 66 | expressao • MENOR_IGUAL expressao_simples - 67 | expressao • MAIOR expressao_simples - 68 | expressao • MAIOR_IGUAL expressao_simples - 81 comando_repetitivo: $@13 WHILE expressao • DO $@14 comando_sem_rotulo +state 101 - DO deslocar, e ir ao estado 124 - IGUAL deslocar, e ir ao estado 83 - DIFERENTE deslocar, e ir ao estado 84 - MENOR_IGUAL deslocar, e ir ao estado 85 - MAIOR_IGUAL deslocar, e ir ao estado 86 - MENOR deslocar, e ir ao estado 87 - MAIOR deslocar, e ir ao estado 88 + 64 expressao: expressao . IGUAL expressao_simples + 65 | expressao . DIFERENTE expressao_simples + 66 | expressao . MENOR expressao_simples + 67 | expressao . MENOR_IGUAL expressao_simples + 68 | expressao . MAIOR expressao_simples + 69 | expressao . MAIOR_IGUAL expressao_simples + 82 comando_repetitivo: @14 WHILE expressao . DO @15 comando_sem_rotulo + DO shift, and go to state 124 + IGUAL shift, and go to state 83 + DIFERENTE shift, and go to state 84 + MENOR_IGUAL shift, and go to state 85 + MAIOR_IGUAL shift, and go to state 86 + MENOR shift, and go to state 87 + MAIOR shift, and go to state 88 -Estado 102 - 83 cond_else: ELSE comando_sem_rotulo • +state 102 - $padrão reduzir usando a regra 83 (cond_else) + 84 cond_else: ELSE comando_sem_rotulo . + $default reduce using rule 84 (cond_else) -Estado 103 - 16 declara_var: $@5 lista_id_var DOIS_PONTOS tipo $@6 PONTO_E_VIRGULA • +state 103 - $padrão reduzir usando a regra 16 (declara_var) + 16 declara_var: @5 lista_id_var DOIS_PONTOS tipo @6 PONTO_E_VIRGULA . + $default reduce using rule 16 (declara_var) -Estado 104 - 28 parametros_ou_nada: ABRE_PARENTESES $@8 paramentros_formais • $@9 FECHA_PARENTESES - 31 paramentros_formais: paramentros_formais • PONTO_E_VIRGULA secao_pfs +state 104 - PONTO_E_VIRGULA deslocar, e ir ao estado 125 + 29 parametros_ou_nada: ABRE_PARENTESES @9 paramentros_formais . @10 FECHA_PARENTESES + 32 paramentros_formais: paramentros_formais . PONTO_E_VIRGULA secao_pfs - $padrão reduzir usando a regra 27 ($@9) + PONTO_E_VIRGULA shift, and go to state 125 - $@9 ir ao estado 126 + $default reduce using rule 28 (@10) + @10 go to state 126 -Estado 105 - 30 paramentros_formais: secao_pfs • +state 105 - $padrão reduzir usando a regra 30 (paramentros_formais) + 31 paramentros_formais: secao_pfs . + $default reduce using rule 31 (paramentros_formais) -Estado 106 - 33 secao_pfs: $@10 • lista_id_pf DOIS_PONTOS tipo +state 106 - IDENT deslocar, e ir ao estado 127 + 34 secao_pfs: @11 . lista_id_pf DOIS_PONTOS tipo - lista_id_pf ir ao estado 128 - parametro ir ao estado 129 + IDENT shift, and go to state 127 + lista_id_pf go to state 128 + parametro go to state 129 -Estado 107 - 25 declaracao_procedimento: PROCEDURE IDENT $@7 parametros_ou_nada PONTO_E_VIRGULA bloco • +state 107 - $padrão reduzir usando a regra 25 (declaracao_procedimento) + 26 declaracao_procedimento: PROCEDURE IDENT @7 parametros_ou_nada PONTO_E_VIRGULA bloco . @8 PONTO_E_VIRGULA + $default reduce using rule 25 (@8) -Estado 108 + @8 go to state 130 - 54 atribuicao: $@12 ATRIBUICAO • expressao_simples - IDENT deslocar, e ir ao estado 62 - NUMERO deslocar, e ir ao estado 63 +state 108 - expressao_simples ir ao estado 130 - termo ir ao estado 66 - fator ir ao estado 67 + 55 atribuicao: @13 ATRIBUICAO . expressao_simples + IDENT shift, and go to state 62 + NUMERO shift, and go to state 63 -Estado 109 + expressao_simples go to state 131 + termo go to state 66 + fator go to state 67 - 63 expressao: expressao IGUAL expressao_simples • - 70 expressao_simples: expressao_simples • MAIS termo - 71 | expressao_simples • MENOS termo - MAIS deslocar, e ir ao estado 90 - MENOS deslocar, e ir ao estado 91 +state 109 - $padrão reduzir usando a regra 63 (expressao) + 64 expressao: expressao IGUAL expressao_simples . + 71 expressao_simples: expressao_simples . MAIS termo + 72 | expressao_simples . MENOS termo + MAIS shift, and go to state 90 + MENOS shift, and go to state 91 -Estado 110 + $default reduce using rule 64 (expressao) - 64 expressao: expressao DIFERENTE expressao_simples • - 70 expressao_simples: expressao_simples • MAIS termo - 71 | expressao_simples • MENOS termo - MAIS deslocar, e ir ao estado 90 - MENOS deslocar, e ir ao estado 91 +state 110 - $padrão reduzir usando a regra 64 (expressao) + 65 expressao: expressao DIFERENTE expressao_simples . + 71 expressao_simples: expressao_simples . MAIS termo + 72 | expressao_simples . MENOS termo + MAIS shift, and go to state 90 + MENOS shift, and go to state 91 -Estado 111 + $default reduce using rule 65 (expressao) - 66 expressao: expressao MENOR_IGUAL expressao_simples • - 70 expressao_simples: expressao_simples • MAIS termo - 71 | expressao_simples • MENOS termo - MAIS deslocar, e ir ao estado 90 - MENOS deslocar, e ir ao estado 91 +state 111 - $padrão reduzir usando a regra 66 (expressao) + 67 expressao: expressao MENOR_IGUAL expressao_simples . + 71 expressao_simples: expressao_simples . MAIS termo + 72 | expressao_simples . MENOS termo + MAIS shift, and go to state 90 + MENOS shift, and go to state 91 -Estado 112 + $default reduce using rule 67 (expressao) - 68 expressao: expressao MAIOR_IGUAL expressao_simples • - 70 expressao_simples: expressao_simples • MAIS termo - 71 | expressao_simples • MENOS termo - MAIS deslocar, e ir ao estado 90 - MENOS deslocar, e ir ao estado 91 +state 112 - $padrão reduzir usando a regra 68 (expressao) + 69 expressao: expressao MAIOR_IGUAL expressao_simples . + 71 expressao_simples: expressao_simples . MAIS termo + 72 | expressao_simples . MENOS termo + MAIS shift, and go to state 90 + MENOS shift, and go to state 91 -Estado 113 + $default reduce using rule 69 (expressao) - 65 expressao: expressao MENOR expressao_simples • - 70 expressao_simples: expressao_simples • MAIS termo - 71 | expressao_simples • MENOS termo - MAIS deslocar, e ir ao estado 90 - MENOS deslocar, e ir ao estado 91 +state 113 - $padrão reduzir usando a regra 65 (expressao) + 66 expressao: expressao MENOR expressao_simples . + 71 expressao_simples: expressao_simples . MAIS termo + 72 | expressao_simples . MENOS termo + MAIS shift, and go to state 90 + MENOS shift, and go to state 91 -Estado 114 + $default reduce using rule 66 (expressao) - 67 expressao: expressao MAIOR expressao_simples • - 70 expressao_simples: expressao_simples • MAIS termo - 71 | expressao_simples • MENOS termo - MAIS deslocar, e ir ao estado 90 - MENOS deslocar, e ir ao estado 91 +state 114 - $padrão reduzir usando a regra 67 (expressao) + 68 expressao: expressao MAIOR expressao_simples . + 71 expressao_simples: expressao_simples . MAIS termo + 72 | expressao_simples . MENOS termo + MAIS shift, and go to state 90 + MENOS shift, and go to state 91 -Estado 115 + $default reduce using rule 68 (expressao) - 86 if_then: IF expressao $@15 THEN • 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 +state 115 - $padrão reduzir usando a regra 79 ($@13) + 87 if_then: IF expressao @16 THEN . comando_sem_rotulo - comando_composto ir ao estado 44 - comando_sem_rotulo ir ao estado 131 - atribuicao_ou_procedimento ir ao estado 48 - leitura ir ao estado 49 - escrita ir ao estado 50 - comando_repetitivo ir ao estado 52 - $@13 ir ao estado 53 - comando_condicional ir ao estado 54 - if_then ir ao estado 55 + 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 + $default reduce using rule 80 (@14) -Estado 116 + comando_composto go to state 44 + comando_sem_rotulo go to state 132 + atribuicao_ou_procedimento go to state 48 + leitura go to state 49 + escrita go to state 50 + comando_repetitivo go to state 52 + @14 go to state 53 + comando_condicional go to state 54 + if_then go to state 55 - 70 expressao_simples: expressao_simples MAIS termo • - 73 termo: termo • ASTERISCO fator - 74 | termo • DIV fator - DIV deslocar, e ir ao estado 92 - ASTERISCO deslocar, e ir ao estado 93 +state 116 - $padrão reduzir usando a regra 70 (expressao_simples) + 71 expressao_simples: expressao_simples MAIS termo . + 74 termo: termo . ASTERISCO fator + 75 | termo . DIV fator + DIV shift, and go to state 92 + ASTERISCO shift, and go to state 93 -Estado 117 + $default reduce using rule 71 (expressao_simples) - 71 expressao_simples: expressao_simples MENOS termo • - 73 termo: termo • ASTERISCO fator - 74 | termo • DIV fator - DIV deslocar, e ir ao estado 92 - ASTERISCO deslocar, e ir ao estado 93 +state 117 - $padrão reduzir usando a regra 71 (expressao_simples) + 72 expressao_simples: expressao_simples MENOS termo . + 74 termo: termo . ASTERISCO fator + 75 | termo . DIV fator + DIV shift, and go to state 92 + ASTERISCO shift, and go to state 93 -Estado 118 + $default reduce using rule 72 (expressao_simples) - 74 termo: termo DIV fator • - $padrão reduzir usando a regra 74 (termo) +state 118 + 75 termo: termo DIV fator . -Estado 119 + $default reduce using rule 75 (termo) - 73 termo: termo ASTERISCO fator • - $padrão reduzir usando a regra 73 (termo) +state 119 + 74 termo: termo ASTERISCO fator . -Estado 120 + $default reduce using rule 74 (termo) - 56 leitura: READ ABRE_PARENTESES lista_leituras FECHA_PARENTESES • - $padrão reduzir usando a regra 56 (leitura) +state 120 + 57 leitura: READ ABRE_PARENTESES lista_leituras FECHA_PARENTESES . -Estado 121 + $default reduce using rule 57 (leitura) - 57 lista_leituras: lista_leituras VIRGULA • simb_leitura - IDENT deslocar, e ir ao estado 94 +state 121 - simb_leitura ir ao estado 132 + 58 lista_leituras: lista_leituras VIRGULA . simb_leitura + IDENT shift, and go to state 94 -Estado 122 + simb_leitura go to state 133 - 60 escrita: WRITE ABRE_PARENTESES lista_escritas FECHA_PARENTESES • - $padrão reduzir usando a regra 60 (escrita) +state 122 + 61 escrita: WRITE ABRE_PARENTESES lista_escritas FECHA_PARENTESES . -Estado 123 + $default reduce using rule 61 (escrita) - 61 lista_escritas: lista_escritas VIRGULA • expressao_simples - IDENT deslocar, e ir ao estado 62 - NUMERO deslocar, e ir ao estado 63 +state 123 - expressao_simples ir ao estado 133 - termo ir ao estado 66 - fator ir ao estado 67 + 62 lista_escritas: lista_escritas VIRGULA . expressao_simples + IDENT shift, and go to state 62 + NUMERO shift, and go to state 63 -Estado 124 + expressao_simples go to state 134 + termo go to state 66 + fator go to state 67 - 81 comando_repetitivo: $@13 WHILE expressao DO • $@14 comando_sem_rotulo - $padrão reduzir usando a regra 80 ($@14) +state 124 - $@14 ir ao estado 134 + 82 comando_repetitivo: @14 WHILE expressao DO . @15 comando_sem_rotulo + $default reduce using rule 81 (@15) -Estado 125 + @15 go to state 135 - 31 paramentros_formais: paramentros_formais PONTO_E_VIRGULA • secao_pfs - $padrão reduzir usando a regra 32 ($@10) +state 125 - secao_pfs ir ao estado 135 - $@10 ir ao estado 106 + 32 paramentros_formais: paramentros_formais PONTO_E_VIRGULA . secao_pfs + $default reduce using rule 33 (@11) -Estado 126 + secao_pfs go to state 136 + @11 go to state 106 - 28 parametros_ou_nada: ABRE_PARENTESES $@8 paramentros_formais $@9 • FECHA_PARENTESES - FECHA_PARENTESES deslocar, e ir ao estado 136 +state 126 + 29 parametros_ou_nada: ABRE_PARENTESES @9 paramentros_formais @10 . FECHA_PARENTESES -Estado 127 + FECHA_PARENTESES shift, and go to state 137 - 36 parametro: IDENT • - $padrão reduzir usando a regra 36 (parametro) +state 127 + 37 parametro: IDENT . -Estado 128 + $default reduce using rule 37 (parametro) - 33 secao_pfs: $@10 lista_id_pf • DOIS_PONTOS tipo - DOIS_PONTOS deslocar, e ir ao estado 137 +state 128 + 34 secao_pfs: @11 lista_id_pf . DOIS_PONTOS tipo -Estado 129 + DOIS_PONTOS shift, and go to state 138 - 34 lista_id_pf: parametro • VIRGULA lista_id_pf - 35 | parametro • - VIRGULA deslocar, e ir ao estado 138 +state 129 - $padrão reduzir usando a regra 35 (lista_id_pf) + 35 lista_id_pf: parametro . VIRGULA lista_id_pf + 36 | parametro . + VIRGULA shift, and go to state 139 -Estado 130 + $default reduce using rule 36 (lista_id_pf) - 54 atribuicao: $@12 ATRIBUICAO expressao_simples • - 70 expressao_simples: expressao_simples • MAIS termo - 71 | expressao_simples • MENOS termo - MAIS deslocar, e ir ao estado 90 - MENOS deslocar, e ir ao estado 91 +state 130 - $padrão reduzir usando a regra 54 (atribuicao) + 26 declaracao_procedimento: PROCEDURE IDENT @7 parametros_ou_nada PONTO_E_VIRGULA bloco @8 . PONTO_E_VIRGULA + PONTO_E_VIRGULA shift, and go to state 140 -Estado 131 - 86 if_then: IF expressao $@15 THEN comando_sem_rotulo • +state 131 - $padrão reduzir usando a regra 86 (if_then) + 55 atribuicao: @13 ATRIBUICAO expressao_simples . + 71 expressao_simples: expressao_simples . MAIS termo + 72 | expressao_simples . MENOS termo + MAIS shift, and go to state 90 + MENOS shift, and go to state 91 -Estado 132 + $default reduce using rule 55 (atribuicao) - 57 lista_leituras: lista_leituras VIRGULA simb_leitura • - $padrão reduzir usando a regra 57 (lista_leituras) +state 132 + 87 if_then: IF expressao @16 THEN comando_sem_rotulo . -Estado 133 + $default reduce using rule 87 (if_then) - 61 lista_escritas: lista_escritas VIRGULA expressao_simples • - 70 expressao_simples: expressao_simples • MAIS termo - 71 | expressao_simples • MENOS termo - MAIS deslocar, e ir ao estado 90 - MENOS deslocar, e ir ao estado 91 +state 133 - $padrão reduzir usando a regra 61 (lista_escritas) + 58 lista_leituras: lista_leituras VIRGULA simb_leitura . + $default reduce using rule 58 (lista_leituras) -Estado 134 - 81 comando_repetitivo: $@13 WHILE expressao DO $@14 • comando_sem_rotulo +state 134 - 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 + 62 lista_escritas: lista_escritas VIRGULA expressao_simples . + 71 expressao_simples: expressao_simples . MAIS termo + 72 | expressao_simples . MENOS termo - $padrão reduzir usando a regra 79 ($@13) + MAIS shift, and go to state 90 + MENOS shift, and go to state 91 - comando_composto ir ao estado 44 - comando_sem_rotulo ir ao estado 139 - atribuicao_ou_procedimento ir ao estado 48 - leitura ir ao estado 49 - escrita ir ao estado 50 - comando_repetitivo ir ao estado 52 - $@13 ir ao estado 53 - comando_condicional ir ao estado 54 - if_then ir ao estado 55 + $default reduce using rule 62 (lista_escritas) -Estado 135 +state 135 - 31 paramentros_formais: paramentros_formais PONTO_E_VIRGULA secao_pfs • + 82 comando_repetitivo: @14 WHILE expressao DO @15 . comando_sem_rotulo - $padrão reduzir usando a regra 31 (paramentros_formais) + 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 + $default reduce using rule 80 (@14) -Estado 136 + comando_composto go to state 44 + comando_sem_rotulo go to state 141 + atribuicao_ou_procedimento go to state 48 + leitura go to state 49 + escrita go to state 50 + comando_repetitivo go to state 52 + @14 go to state 53 + comando_condicional go to state 54 + if_then go to state 55 - 28 parametros_ou_nada: ABRE_PARENTESES $@8 paramentros_formais $@9 FECHA_PARENTESES • - $padrão reduzir usando a regra 28 (parametros_ou_nada) +state 136 + 32 paramentros_formais: paramentros_formais PONTO_E_VIRGULA secao_pfs . -Estado 137 + $default reduce using rule 32 (paramentros_formais) - 33 secao_pfs: $@10 lista_id_pf DOIS_PONTOS • tipo - IDENT deslocar, e ir ao estado 57 +state 137 - tipo ir ao estado 140 + 29 parametros_ou_nada: ABRE_PARENTESES @9 paramentros_formais @10 FECHA_PARENTESES . + $default reduce using rule 29 (parametros_ou_nada) -Estado 138 - 34 lista_id_pf: parametro VIRGULA • lista_id_pf +state 138 - IDENT deslocar, e ir ao estado 127 + 34 secao_pfs: @11 lista_id_pf DOIS_PONTOS . tipo - lista_id_pf ir ao estado 141 - parametro ir ao estado 129 + IDENT shift, and go to state 57 + tipo go to state 142 -Estado 139 - 81 comando_repetitivo: $@13 WHILE expressao DO $@14 comando_sem_rotulo • +state 139 - $padrão reduzir usando a regra 81 (comando_repetitivo) + 35 lista_id_pf: parametro VIRGULA . lista_id_pf + IDENT shift, and go to state 127 -Estado 140 + lista_id_pf go to state 143 + parametro go to state 129 - 33 secao_pfs: $@10 lista_id_pf DOIS_PONTOS tipo • - $padrão reduzir usando a regra 33 (secao_pfs) +state 140 + 26 declaracao_procedimento: PROCEDURE IDENT @7 parametros_ou_nada PONTO_E_VIRGULA bloco @8 PONTO_E_VIRGULA . -Estado 141 + $default reduce using rule 26 (declaracao_procedimento) - 34 lista_id_pf: parametro VIRGULA lista_id_pf • - $padrão reduzir usando a regra 34 (lista_id_pf) +state 141 + + 82 comando_repetitivo: @14 WHILE expressao DO @15 comando_sem_rotulo . + + $default reduce using rule 82 (comando_repetitivo) + + +state 142 + + 34 secao_pfs: @11 lista_id_pf DOIS_PONTOS tipo . + + $default reduce using rule 34 (secao_pfs) + + +state 143 + + 35 lista_id_pf: parametro VIRGULA lista_id_pf . + + $default reduce using rule 35 (lista_id_pf) diff --git a/compilador.y b/compilador.y index ab6e281ad31111be96a1fe9463ae0fa50f87c5ab..e83b328109978eecb7482e6d22f513f8631d3226 100644 --- a/compilador.y +++ b/compilador.y @@ -21,8 +21,8 @@ int destino_nivel; int destino_desloc; simb_t *l_elem; int rot_id; -stack_t *rot; -stack_t *proc; +custom_stack_t *rot; +custom_stack_t *proc; %} @@ -185,6 +185,7 @@ declaracao_procedimento: PROCEDURE IDENT { // Retorna ao nível léxico anterior e mantém o deslocamento atualizado nivel_lexico -= 1; } + PONTO_E_VIRGULA ; parametros_ou_nada: ABRE_PARENTESES @@ -468,11 +469,11 @@ int main (int argc, char** argv) { desloc = 0; // Inicializa Rotulos - rot = (stack_t *)malloc(sizeof(stack_t)); + rot = (custom_stack_t *)malloc(sizeof(custom_stack_t)); inicializa_stack(rot); rot_id = 0; - proc = (stack_t *)malloc(sizeof(stack_t)); + proc = (custom_stack_t *)malloc(sizeof(custom_stack_t)); inicializa_stack(proc); yyin=fp; diff --git a/stack/stack.c b/stack/stack.c index 1d4006500626302744a9bcd9bfac7862c1119be4..7a4ca082b6efc55adf095a9098a2e1f008a85438 100644 --- a/stack/stack.c +++ b/stack/stack.c @@ -3,12 +3,12 @@ #include <string.h> #include "stack.h" -void inicializa_stack(stack_t *stack) { +void inicializa_stack(custom_stack_t *stack) { stack->topo = NULL; stack->tam = 0; } -void empilha(char *item, stack_t *stack) { +void empilha(char *item, custom_stack_t *stack) { if (stack == NULL) { return; } @@ -22,7 +22,7 @@ void empilha(char *item, stack_t *stack) { stack->tam += 1; } -void desempilha(char *item, stack_t *stack) { +void desempilha(char *item, custom_stack_t *stack) { if (stack == NULL || stack->topo == NULL) { return; } @@ -36,7 +36,7 @@ void desempilha(char *item, stack_t *stack) { free(p); } -void mostra_stack(stack_t *stack) { +void mostra_stack(custom_stack_t *stack) { if (stack == NULL || stack->topo == NULL) { printf("Pilha está vazia ou não inicializada.\n"); return; diff --git a/stack/stack.h b/stack/stack.h index 35097893261bd7d4d6286c59bb66c4fa1246c563..56ec259f85e4bc9fb22e28121a7d52b6ad01f77f 100644 --- a/stack/stack.h +++ b/stack/stack.h @@ -9,14 +9,14 @@ typedef struct item_t { typedef struct stack_t { item_t *topo; int tam; -} stack_t; +} custom_stack_t; -void inicializa_stack(stack_t *stack); +void inicializa_stack(custom_stack_t *stack); -void empilha(char *item, stack_t *stack); +void empilha(char *item, custom_stack_t *stack); -void desempilha(char *item, stack_t *stack); +void desempilha(char *item, custom_stack_t *stack); -void mostra_stack(stack_t *stack); +void mostra_stack(custom_stack_t *stack); #endif diff --git a/teste7.pas b/teste7.pas index 59822eca5586d304e7f173ddba72e545ab617eaf..2b0fec6d8cff0addd0f5313f079560c981579aec 100644 --- a/teste7.pas +++ b/teste7.pas @@ -4,7 +4,7 @@ program proc1 (input, output); var z: integer; begin z := a; - end + end; begin x := 8; end. \ No newline at end of file