@designliquido/delegua 0.36.1 → 0.36.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/analisador-semantico/analisador-semantico-base.d.ts +69 -69
- package/analisador-semantico/analisador-semantico-base.js +180 -180
- package/analisador-semantico/analisador-semantico.d.ts +59 -59
- package/analisador-semantico/analisador-semantico.js +442 -442
- package/analisador-semantico/analisador-semantico.js.map +1 -1
- package/analisador-semantico/index.d.ts +3 -3
- package/analisador-semantico/index.js +19 -19
- package/analisador-semantico/pilha-variaveis.d.ts +20 -20
- package/analisador-semantico/pilha-variaveis.js +25 -25
- package/avaliador-sintatico/avaliador-sintatico-base.d.ts +69 -69
- package/avaliador-sintatico/avaliador-sintatico-base.js +223 -223
- package/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.d.ts +126 -126
- package/avaliador-sintatico/avaliador-sintatico.js +1093 -1093
- package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.d.ts +73 -73
- package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js +648 -648
- package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.d.ts +21 -21
- package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.js +149 -149
- package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts +87 -87
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +770 -770
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.d.ts +34 -34
- package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.js +168 -168
- package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.js.map +1 -1
- package/avaliador-sintatico/dialetos/index.d.ts +3 -3
- package/avaliador-sintatico/dialetos/index.js +19 -19
- package/avaliador-sintatico/erro-avaliador-sintatico.d.ts +5 -5
- package/avaliador-sintatico/erro-avaliador-sintatico.js +11 -11
- package/avaliador-sintatico/index.d.ts +6 -6
- package/avaliador-sintatico/index.js +22 -22
- package/avaliador-sintatico/micro-avaliador-sintatico-base.d.ts +27 -27
- package/avaliador-sintatico/micro-avaliador-sintatico-base.js +116 -116
- package/avaliador-sintatico/micro-avaliador-sintatico-base.js.map +1 -1
- package/avaliador-sintatico/micro-avaliador-sintatico.d.ts +33 -33
- package/avaliador-sintatico/micro-avaliador-sintatico.js +287 -287
- package/avaliador-sintatico/micro-avaliador-sintatico.js.map +1 -1
- package/avaliador-sintatico/retornos/index.d.ts +3 -3
- package/avaliador-sintatico/retornos/index.js +19 -19
- package/avaliador-sintatico/retornos/retorno-declaracao.d.ts +3 -3
- package/avaliador-sintatico/retornos/retorno-declaracao.js +2 -2
- package/avaliador-sintatico/retornos/retorno-primario.d.ts +3 -3
- package/avaliador-sintatico/retornos/retorno-primario.js +2 -2
- package/avaliador-sintatico/retornos/retorno-resolver-declaracao.d.ts +2 -2
- package/avaliador-sintatico/retornos/retorno-resolver-declaracao.js +2 -2
- package/avaliador-sintatico/traducao/avaliador-sintatico-javascript.d.ts +59 -59
- package/avaliador-sintatico/traducao/avaliador-sintatico-javascript.js +150 -150
- package/bibliotecas/biblioteca-global.d.ts +157 -157
- package/bibliotecas/biblioteca-global.js +497 -498
- package/bibliotecas/biblioteca-global.js.map +1 -1
- package/bibliotecas/dialetos/egua-classico/biblioteca-global.d.ts +1 -1
- package/bibliotecas/dialetos/egua-classico/biblioteca-global.js +236 -236
- package/bibliotecas/dialetos/egua-classico/biblioteca-global.js.map +1 -1
- package/bibliotecas/dialetos/egua-classico/index.d.ts +2 -2
- package/bibliotecas/dialetos/egua-classico/index.js +32 -32
- package/bibliotecas/dialetos/egua-classico/index.js.map +1 -1
- package/bibliotecas/dialetos/egua-classico/matematica.d.ts +1 -1
- package/bibliotecas/dialetos/egua-classico/matematica.js +541 -541
- package/bibliotecas/dialetos/egua-classico/matematica.js.map +1 -1
- package/bibliotecas/dialetos/egua-classico/tempo.d.ts +1 -1
- package/bibliotecas/dialetos/egua-classico/tempo.js +39 -39
- package/bibliotecas/dialetos/egua-classico/tempo.js.map +1 -1
- package/bibliotecas/dialetos/egua-classico/textos.d.ts +8 -8
- package/bibliotecas/dialetos/egua-classico/textos.js +201 -201
- package/bibliotecas/dialetos/egua-classico/textos.js.map +1 -1
- package/bibliotecas/primitivas-dicionario.d.ts +6 -6
- package/bibliotecas/primitivas-dicionario.d.ts.map +1 -1
- package/bibliotecas/primitivas-dicionario.js +10 -10
- package/bibliotecas/primitivas-numero.d.ts +6 -6
- package/bibliotecas/primitivas-numero.d.ts.map +1 -1
- package/bibliotecas/primitivas-numero.js +10 -10
- package/bibliotecas/primitivas-texto.d.ts +17 -17
- package/bibliotecas/primitivas-texto.d.ts.map +1 -1
- package/bibliotecas/primitivas-texto.js +22 -22
- package/bibliotecas/primitivas-texto.js.map +1 -1
- package/bibliotecas/primitivas-vetor.d.ts +21 -21
- package/bibliotecas/primitivas-vetor.d.ts.map +1 -1
- package/bibliotecas/primitivas-vetor.js +90 -90
- package/bibliotecas/primitivas-vetor.js.map +1 -1
- package/bin/package.json +5 -4
- package/construtos/acesso-elemento-matriz.d.ts +12 -12
- package/construtos/acesso-elemento-matriz.js +17 -17
- package/construtos/acesso-indice-variavel.d.ts +15 -15
- package/construtos/acesso-indice-variavel.js +20 -20
- package/construtos/acesso-metodo-ou-propriedade.d.ts +14 -14
- package/construtos/acesso-metodo-ou-propriedade.js +19 -19
- package/construtos/agrupamento.d.ts +14 -14
- package/construtos/agrupamento.js +19 -19
- package/construtos/atribuicao-por-indice.d.ts +11 -11
- package/construtos/atribuicao-por-indice.js +16 -16
- package/construtos/atribuicao-por-indices-matriz.d.ts +12 -12
- package/construtos/atribuicao-por-indices-matriz.js +17 -17
- package/construtos/atribuir.d.ts +15 -15
- package/construtos/atribuir.js +24 -24
- package/construtos/atribuir.js.map +1 -1
- package/construtos/binario.d.ts +33 -33
- package/construtos/binario.js +38 -38
- package/construtos/chamada.d.ts +15 -15
- package/construtos/chamada.js +21 -21
- package/construtos/comentario.d.ts +15 -15
- package/construtos/comentario.js +20 -20
- package/construtos/constante.d.ts +12 -12
- package/construtos/constante.js +17 -17
- package/construtos/construto.d.ts +7 -7
- package/construtos/construto.js +2 -2
- package/construtos/decorador.d.ts +14 -14
- package/construtos/decorador.js +19 -19
- package/construtos/definir-valor.d.ts +11 -11
- package/construtos/definir-valor.js +16 -16
- package/construtos/dicionario.d.ts +10 -10
- package/construtos/dicionario.js +15 -15
- package/construtos/expressao-regular.d.ts +10 -10
- package/construtos/expressao-regular.js +15 -15
- package/construtos/fim-para.d.ts +22 -22
- package/construtos/fim-para.js +25 -25
- package/construtos/formatacao-escrita.d.ts +16 -16
- package/construtos/formatacao-escrita.js +21 -21
- package/construtos/funcao.d.ts +12 -12
- package/construtos/funcao.js +16 -16
- package/construtos/index.d.ts +29 -29
- package/construtos/index.js +45 -45
- package/construtos/isto.d.ts +9 -9
- package/construtos/isto.js +14 -14
- package/construtos/literal.d.ts +10 -10
- package/construtos/literal.js +14 -14
- package/construtos/logico.d.ts +11 -11
- package/construtos/logico.js +16 -16
- package/construtos/qual-tipo.d.ts +11 -11
- package/construtos/qual-tipo.js +16 -16
- package/construtos/super.d.ts +10 -10
- package/construtos/super.js +15 -15
- package/construtos/tipo-de.d.ts +10 -10
- package/construtos/tipo-de.js +15 -15
- package/construtos/tuplas/deceto.d.ts +18 -18
- package/construtos/tuplas/deceto.js +32 -32
- package/construtos/tuplas/dupla.d.ts +6 -6
- package/construtos/tuplas/dupla.js +12 -12
- package/construtos/tuplas/index.d.ts +13 -13
- package/construtos/tuplas/index.js +67 -67
- package/construtos/tuplas/index.js.map +1 -1
- package/construtos/tuplas/noneto.d.ts +15 -15
- package/construtos/tuplas/noneto.js +25 -25
- package/construtos/tuplas/octeto.d.ts +14 -14
- package/construtos/tuplas/octeto.js +24 -24
- package/construtos/tuplas/quarteto.d.ts +8 -8
- package/construtos/tuplas/quarteto.js +14 -14
- package/construtos/tuplas/quinteto.d.ts +9 -9
- package/construtos/tuplas/quinteto.js +15 -15
- package/construtos/tuplas/septeto.d.ts +13 -13
- package/construtos/tuplas/septeto.js +23 -23
- package/construtos/tuplas/sexteto.d.ts +10 -10
- package/construtos/tuplas/sexteto.js +16 -16
- package/construtos/tuplas/trio.d.ts +7 -7
- package/construtos/tuplas/trio.js +13 -13
- package/construtos/tuplas/tupla.d.ts +8 -8
- package/construtos/tuplas/tupla.js +9 -9
- package/construtos/unario.d.ts +11 -11
- package/construtos/unario.js +16 -16
- package/construtos/variavel.d.ts +9 -9
- package/construtos/variavel.js +14 -14
- package/construtos/vetor.d.ts +11 -11
- package/construtos/vetor.js +21 -21
- package/construtos/vetor.js.map +1 -1
- package/declaracoes/aleatorio.d.ts +15 -15
- package/declaracoes/aleatorio.js +15 -15
- package/declaracoes/bloco.d.ts +7 -7
- package/declaracoes/bloco.js +14 -14
- package/declaracoes/cabecalho-programa.d.ts +7 -7
- package/declaracoes/cabecalho-programa.js +14 -14
- package/declaracoes/classe.d.ts +14 -14
- package/declaracoes/classe.js +18 -18
- package/declaracoes/const-multiplo.d.ts +14 -14
- package/declaracoes/const-multiplo.js +19 -19
- package/declaracoes/const.d.ts +14 -14
- package/declaracoes/const.js +19 -19
- package/declaracoes/continua.d.ts +6 -6
- package/declaracoes/continua.js +13 -13
- package/declaracoes/declaracao.d.ts +8 -8
- package/declaracoes/declaracao.js +17 -17
- package/declaracoes/enquanto.d.ts +10 -10
- package/declaracoes/enquanto.js +15 -15
- package/declaracoes/escolha.d.ts +14 -14
- package/declaracoes/escolha.js +19 -19
- package/declaracoes/escreva-mesma-linha.d.ts +8 -8
- package/declaracoes/escreva-mesma-linha.js +14 -14
- package/declaracoes/escreva.d.ts +8 -8
- package/declaracoes/escreva.js +14 -14
- package/declaracoes/expressao.d.ts +8 -8
- package/declaracoes/expressao.js +14 -14
- package/declaracoes/falhar.d.ts +8 -8
- package/declaracoes/falhar.js +15 -15
- package/declaracoes/fazer.d.ts +10 -10
- package/declaracoes/fazer.js +15 -15
- package/declaracoes/funcao.d.ts +11 -11
- package/declaracoes/funcao.js +17 -17
- package/declaracoes/importar.d.ts +9 -9
- package/declaracoes/importar.js +15 -15
- package/declaracoes/index.d.ts +31 -31
- package/declaracoes/index.js +47 -47
- package/declaracoes/inicio-algoritmo.d.ts +6 -6
- package/declaracoes/inicio-algoritmo.js +13 -13
- package/declaracoes/leia-multiplo.d.ts +14 -14
- package/declaracoes/leia-multiplo.js +21 -21
- package/declaracoes/leia.d.ts +17 -17
- package/declaracoes/leia.js +21 -21
- package/declaracoes/para-cada.d.ts +11 -11
- package/declaracoes/para-cada.js +17 -17
- package/declaracoes/para.d.ts +19 -19
- package/declaracoes/para.js +24 -24
- package/declaracoes/propriedade-classe.d.ts +10 -10
- package/declaracoes/propriedade-classe.js +16 -16
- package/declaracoes/retorna.d.ts +8 -8
- package/declaracoes/retorna.js +15 -15
- package/declaracoes/se.d.ts +11 -11
- package/declaracoes/se.js +17 -17
- package/declaracoes/sustar.d.ts +6 -6
- package/declaracoes/sustar.js +13 -13
- package/declaracoes/tendo-como.d.ts +16 -16
- package/declaracoes/tendo-como.js +21 -21
- package/declaracoes/tente.d.ts +14 -14
- package/declaracoes/tente.js +20 -20
- package/declaracoes/var-multiplo.d.ts +15 -15
- package/declaracoes/var-multiplo.js +20 -20
- package/declaracoes/var.d.ts +16 -16
- package/declaracoes/var.js +21 -21
- package/depuracao/cyrb53.d.ts +9 -9
- package/depuracao/cyrb53.js +22 -22
- package/depuracao/cyrb53.js.map +1 -1
- package/depuracao/index.d.ts +2 -2
- package/depuracao/index.js +23 -23
- package/depuracao/ponto-parada.d.ts +4 -4
- package/depuracao/ponto-parada.js +2 -2
- package/espaco-variaveis.d.ts +19 -19
- package/espaco-variaveis.js +19 -19
- package/estruturas/chamavel.d.ts +7 -7
- package/estruturas/chamavel.js +12 -12
- package/estruturas/classe-padrao.d.ts +31 -31
- package/estruturas/classe-padrao.js +39 -39
- package/estruturas/delegua-funcao.d.ts +29 -29
- package/estruturas/delegua-funcao.js +141 -141
- package/estruturas/delegua-funcao.js.map +1 -1
- package/estruturas/descritor-tipo-classe.d.ts +37 -37
- package/estruturas/descritor-tipo-classe.js +79 -79
- package/estruturas/descritor-tipo-classe.js.map +1 -1
- package/estruturas/funcao-padrao.d.ts +23 -23
- package/estruturas/funcao-padrao.js +34 -34
- package/estruturas/index.d.ts +9 -9
- package/estruturas/index.js +25 -25
- package/estruturas/metodo-primitiva.d.ts +28 -28
- package/estruturas/metodo-primitiva.js +40 -40
- package/estruturas/modulo.d.ts +18 -18
- package/estruturas/modulo.js +24 -24
- package/estruturas/objeto-delegua-classe.d.ts +26 -26
- package/estruturas/objeto-delegua-classe.js +53 -53
- package/estruturas/objeto-delegua-classe.js.map +1 -1
- package/estruturas/objeto-padrao.d.ts +18 -18
- package/estruturas/objeto-padrao.js +32 -32
- package/estruturas/objeto-padrao.js.map +1 -1
- package/excecoes/erro-em-tempo-de-execucao.d.ts +7 -7
- package/excecoes/erro-em-tempo-de-execucao.js +13 -13
- package/excecoes/index.d.ts +1 -1
- package/excecoes/index.js +17 -17
- package/formatadores/formatador-delegua.d.ts +79 -79
- package/formatadores/formatador-delegua.js +676 -676
- package/formatadores/formatador-delegua.js.map +1 -1
- package/formatadores/index.d.ts +1 -1
- package/formatadores/index.js +17 -17
- package/geracao-identificadores/index.d.ts +1 -1
- package/geracao-identificadores/index.js +22 -23
- package/geracao-identificadores/index.js.map +1 -1
- package/index.d.ts +9 -9
- package/index.js +27 -27
- package/interfaces/analisador-semantico-interface.d.ts +6 -6
- package/interfaces/analisador-semantico-interface.js +2 -2
- package/interfaces/avaliador-sintatico-interface.d.ts +55 -55
- package/interfaces/avaliador-sintatico-interface.js +2 -2
- package/interfaces/construtos/index.d.ts +4 -4
- package/interfaces/construtos/index.js +2 -2
- package/interfaces/erros/diagnostico-analisador-semantico.d.ts +14 -14
- package/interfaces/erros/diagnostico-analisador-semantico.js +10 -10
- package/interfaces/erros/diagnostico-analisador-semantico.js.map +1 -1
- package/interfaces/erros/erro-interpretador.d.ts +8 -8
- package/interfaces/erros/erro-interpretador.js +2 -2
- package/interfaces/erros/index.d.ts +1 -1
- package/interfaces/erros/index.js +17 -17
- package/interfaces/escopo-execucao.d.ts +12 -12
- package/interfaces/escopo-execucao.js +2 -2
- package/interfaces/formatador-comum-interface.d.ts +11 -11
- package/interfaces/formatador-comum-interface.js +2 -2
- package/interfaces/funcao-hipotetica-interface.d.ts +3 -3
- package/interfaces/funcao-hipotetica-interface.js +2 -2
- package/interfaces/index.d.ts +16 -16
- package/interfaces/index.js +32 -32
- package/interfaces/interpretador-com-depuracao-interface.d.ts +17 -17
- package/interfaces/interpretador-com-depuracao-interface.js +2 -2
- package/interfaces/interpretador-interface-potigol.d.ts +5 -5
- package/interfaces/interpretador-interface-potigol.js +2 -2
- package/interfaces/interpretador-interface.d.ts +20 -20
- package/interfaces/interpretador-interface.js +2 -2
- package/interfaces/lexador-interface.d.ts +23 -23
- package/interfaces/lexador-interface.js +2 -2
- package/interfaces/parametro-interface.d.ts +15 -15
- package/interfaces/parametro-interface.js +2 -2
- package/interfaces/pilha-escopos-execucao-interface.d.ts +26 -26
- package/interfaces/pilha-escopos-execucao-interface.js +2 -2
- package/interfaces/pilha-interface.d.ts +7 -7
- package/interfaces/pilha-interface.js +2 -2
- package/interfaces/resolvedor-interface.d.ts +41 -41
- package/interfaces/resolvedor-interface.js +2 -2
- package/interfaces/retornos/index.d.ts +4 -4
- package/interfaces/retornos/index.js +20 -20
- package/interfaces/retornos/retorno-analisador-semantico.d.ts +4 -4
- package/interfaces/retornos/retorno-analisador-semantico.js +2 -2
- package/interfaces/retornos/retorno-avaliador-sintatico.d.ts +5 -5
- package/interfaces/retornos/retorno-avaliador-sintatico.js +2 -2
- package/interfaces/retornos/retorno-execucao-interface.d.ts +5 -5
- package/interfaces/retornos/retorno-execucao-interface.js +2 -2
- package/interfaces/retornos/retorno-interpretador.d.ts +5 -5
- package/interfaces/retornos/retorno-interpretador.js +2 -2
- package/interfaces/retornos/retorno-lexador.d.ts +9 -9
- package/interfaces/retornos/retorno-lexador.js +2 -2
- package/interfaces/simbolo-interface.d.ts +7 -7
- package/interfaces/simbolo-interface.js +2 -2
- package/interfaces/tradutor-interface.d.ts +3 -3
- package/interfaces/tradutor-interface.js +2 -2
- package/interfaces/variavel-hipotetica-interface.d.ts +8 -8
- package/interfaces/variavel-hipotetica-interface.js +2 -2
- package/interfaces/variavel-interface.d.ts +8 -8
- package/interfaces/variavel-interface.js +2 -2
- package/interfaces/visitante-comum-interface.d.ts +58 -58
- package/interfaces/visitante-comum-interface.js +2 -2
- package/interpretador/argumento-interface.d.ts +4 -4
- package/interpretador/argumento-interface.js +2 -2
- package/interpretador/comum.d.ts +2 -2
- package/interpretador/comum.js +51 -52
- package/interpretador/comum.js.map +1 -1
- package/interpretador/dialetos/egua-classico/index.d.ts +1 -1
- package/interpretador/dialetos/egua-classico/index.js +17 -17
- package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts +119 -119
- package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +815 -815
- package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js.map +1 -1
- package/interpretador/dialetos/egua-classico/resolvedor/erro-resolvedor.d.ts +5 -5
- package/interpretador/dialetos/egua-classico/resolvedor/erro-resolvedor.js +11 -11
- package/interpretador/dialetos/egua-classico/resolvedor/index.d.ts +3 -3
- package/interpretador/dialetos/egua-classico/resolvedor/index.js +19 -19
- package/interpretador/dialetos/egua-classico/resolvedor/pilha-escopos.d.ts +9 -9
- package/interpretador/dialetos/egua-classico/resolvedor/pilha-escopos.js +25 -25
- package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts +106 -106
- package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js +441 -441
- package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js.map +1 -1
- package/interpretador/dialetos/egua-classico/resolvedor/retorno-resolvedor.d.ts +6 -6
- package/interpretador/dialetos/egua-classico/resolvedor/retorno-resolvedor.js +2 -2
- package/interpretador/dialetos/index.d.ts +2 -2
- package/interpretador/dialetos/index.js +18 -18
- package/interpretador/dialetos/portugol-ipt/index.d.ts +1 -1
- package/interpretador/dialetos/portugol-ipt/index.js +17 -17
- package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts +133 -133
- package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js +501 -501
- package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js.map +1 -1
- package/interpretador/index.d.ts +3 -3
- package/interpretador/index.js +19 -19
- package/interpretador/inferenciador.d.ts +15 -15
- package/interpretador/inferenciador.d.ts.map +1 -1
- package/interpretador/inferenciador.js +80 -80
- package/interpretador/inferenciador.js.map +1 -1
- package/interpretador/interpretador-base.d.ts +268 -268
- package/interpretador/interpretador-base.js +1399 -1399
- package/interpretador/interpretador-base.js.map +1 -1
- package/interpretador/interpretador-com-depuracao.d.ts +190 -190
- package/interpretador/interpretador-com-depuracao.js +568 -568
- package/interpretador/interpretador-com-depuracao.js.map +1 -1
- package/interpretador/pilha-escopos-execucao.d.ts +39 -39
- package/interpretador/pilha-escopos-execucao.js +243 -243
- package/interpretador/pilha-escopos-execucao.js.map +1 -1
- package/lexador/dialetos/index.d.ts +4 -4
- package/lexador/dialetos/index.js +20 -20
- package/lexador/dialetos/lexador-egua-classico.d.ts +36 -36
- package/lexador/dialetos/lexador-egua-classico.js +286 -286
- package/lexador/dialetos/lexador-egua-classico.js.map +1 -1
- package/lexador/dialetos/lexador-guarani.d.ts +10 -10
- package/lexador/dialetos/lexador-guarani.js +113 -113
- package/lexador/dialetos/lexador-guarani.js.map +1 -1
- package/lexador/dialetos/lexador-pitugues.d.ts +51 -51
- package/lexador/dialetos/lexador-pitugues.js +398 -398
- package/lexador/dialetos/lexador-pitugues.js.map +1 -1
- package/lexador/dialetos/lexador-portugol-ipt.d.ts +33 -33
- package/lexador/dialetos/lexador-portugol-ipt.js +237 -237
- package/lexador/dialetos/lexador-portugol-ipt.js.map +1 -1
- package/lexador/dialetos/palavras-reservadas/egua-classico.d.ts +32 -32
- package/lexador/dialetos/palavras-reservadas/egua-classico.js +39 -39
- package/lexador/dialetos/palavras-reservadas/guarani.d.ts +3 -3
- package/lexador/dialetos/palavras-reservadas/guarani.js +10 -10
- package/lexador/dialetos/palavras-reservadas/portugol-ipt.d.ts +13 -13
- package/lexador/dialetos/palavras-reservadas/portugol-ipt.js +20 -20
- package/lexador/dialetos/palavras-reservadas/rantiaquin.d.ts +1 -1
- package/lexador/dialetos/palavras-reservadas/rantiaquin.js +4 -4
- package/lexador/dialetos/pragma.d.ts +8 -8
- package/lexador/dialetos/pragma.js +2 -2
- package/lexador/erro-lexador.d.ts +5 -5
- package/lexador/erro-lexador.js +2 -2
- package/lexador/index.d.ts +4 -4
- package/lexador/index.js +20 -20
- package/lexador/lexador-base-linha-unica.d.ts +28 -28
- package/lexador/lexador-base-linha-unica.js +82 -82
- package/lexador/lexador-base-linha-unica.js.map +1 -1
- package/lexador/lexador-base.d.ts +41 -41
- package/lexador/lexador-base.js +112 -112
- package/lexador/lexador-base.js.map +1 -1
- package/lexador/lexador.d.ts +43 -43
- package/lexador/lexador.js +440 -440
- package/lexador/lexador.js.map +1 -1
- package/lexador/micro-lexador.d.ts +29 -29
- package/lexador/micro-lexador.js +207 -207
- package/lexador/micro-lexador.js.map +1 -1
- package/lexador/palavras-reservadas.d.ts +54 -54
- package/lexador/palavras-reservadas.js +61 -61
- package/lexador/simbolo.d.ts +10 -10
- package/lexador/simbolo.js +16 -16
- package/lexador/traducao/lexador-javascript.d.ts +28 -28
- package/lexador/traducao/lexador-javascript.js +58 -58
- package/package.json +5 -4
- package/quebras/index.d.ts +10 -10
- package/quebras/index.js +19 -19
- package/tipo-dados-elementar.d.ts +1 -1
- package/tipo-dados-elementar.js +2 -2
- package/tipos-de-dados/delegua.d.ts +18 -18
- package/tipos-de-dados/delegua.js +19 -19
- package/tipos-de-dados/listas-delegua.d.ts +6 -6
- package/tipos-de-dados/listas-delegua.js +7 -7
- package/tipos-de-dados/listas-primitivos.d.ts +5 -5
- package/tipos-de-dados/listas-primitivos.js +6 -6
- package/tipos-de-dados/primitivos.d.ts +16 -16
- package/tipos-de-dados/primitivos.js +17 -17
- package/tipos-de-simbolos/comum.d.ts +23 -23
- package/tipos-de-simbolos/comum.js +24 -24
- package/tipos-de-simbolos/delegua.d.ts +91 -91
- package/tipos-de-simbolos/delegua.js +92 -92
- package/tipos-de-simbolos/egua-classico.d.ts +75 -75
- package/tipos-de-simbolos/egua-classico.js +76 -76
- package/tipos-de-simbolos/guarani.d.ts +14 -14
- package/tipos-de-simbolos/guarani.js +15 -15
- package/tipos-de-simbolos/guarani.js.map +1 -1
- package/tipos-de-simbolos/microgramaticas/delegua.d.ts +46 -46
- package/tipos-de-simbolos/microgramaticas/delegua.js +47 -47
- package/tipos-de-simbolos/pitugues.d.ts +75 -75
- package/tipos-de-simbolos/pitugues.js +76 -76
- package/tipos-de-simbolos/portugol-ipt.d.ts +36 -36
- package/tipos-de-simbolos/portugol-ipt.js +37 -37
- package/tipos-de-simbolos/rantiaquin.d.ts +2 -2
- package/tipos-de-simbolos/rantiaquin.js +3 -3
- package/tradutores/dicionarios/dicionario-delegua-javascript.d.ts +2 -2
- package/tradutores/dicionarios/dicionario-delegua-javascript.js +10 -10
- package/tradutores/dicionarios/index.d.ts +1 -1
- package/tradutores/dicionarios/index.js +17 -17
- package/tradutores/index.d.ts +6 -6
- package/tradutores/index.js +22 -22
- package/tradutores/python/python3-lexer.d.ts +152 -152
- package/tradutores/python/python3-lexer.js +1227 -1227
- package/tradutores/python/python3-lexer.js.map +1 -1
- package/tradutores/python/python3-listener.d.ts +964 -964
- package/tradutores/python/python3-listener.js +3 -3
- package/tradutores/python/python3-parser.d.ts +1342 -1342
- package/tradutores/python/python3-parser.js +11226 -11226
- package/tradutores/python/python3-parser.js.map +1 -1
- package/tradutores/python/python3-visitor.d.ts +619 -619
- package/tradutores/python/python3-visitor.js +3 -3
- package/tradutores/tradutor-assembly-x64.d.ts +19 -19
- package/tradutores/tradutor-assembly-x64.js +128 -128
- package/tradutores/tradutor-assembly-x64.js.map +1 -1
- package/tradutores/tradutor-assemblyscript.d.ts +91 -91
- package/tradutores/tradutor-assemblyscript.js +590 -590
- package/tradutores/tradutor-assemblyscript.js.map +1 -1
- package/tradutores/tradutor-javascript.d.ts +95 -95
- package/tradutores/tradutor-javascript.js +577 -577
- package/tradutores/tradutor-javascript.js.map +1 -1
- package/tradutores/tradutor-portugol-ipt.d.ts +21 -21
- package/tradutores/tradutor-portugol-ipt.js +60 -60
- package/tradutores/tradutor-portugol-ipt.js.map +1 -1
- package/tradutores/tradutor-python.d.ts +65 -65
- package/tradutores/tradutor-python.js +461 -461
- package/tradutores/tradutor-python.js.map +1 -1
- package/tradutores/tradutor-reverso-javascript.d.ts +50 -50
- package/tradutores/tradutor-reverso-javascript.js +392 -392
- package/tradutores/tradutor-reverso-javascript.js.map +1 -1
- package/tradutores/tradutor-reverso-python.d.ts +32 -32
- package/tradutores/tradutor-reverso-python.js +71 -71
- package/tradutores/tradutor-reverso-python.js.map +1 -1
- package/umd/delegua.js +26337 -26340
|
@@ -1,649 +1,649 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.AvaliadorSintaticoEguaClassico = void 0;
|
|
7
|
-
const construtos_1 = require("../../construtos");
|
|
8
|
-
const erro_avaliador_sintatico_1 = require("../erro-avaliador-sintatico");
|
|
9
|
-
const declaracoes_1 = require("../../declaracoes");
|
|
10
|
-
const egua_classico_1 = __importDefault(require("../../tipos-de-simbolos/egua-classico"));
|
|
11
|
-
/**
|
|
12
|
-
* O avaliador sintático (_Parser_) é responsável por transformar os símbolos do Lexador em estruturas de alto nível.
|
|
13
|
-
* Essas estruturas de alto nível são as partes que executam lógica de programação de fato.
|
|
14
|
-
*
|
|
15
|
-
* Esta implementação tenta seguir à risca o que está atualmente em https://github.com/eguatech/egua/blob/master/src/parser.js.
|
|
16
|
-
*/
|
|
17
|
-
class AvaliadorSintaticoEguaClassico {
|
|
18
|
-
constructor(simbolos) {
|
|
19
|
-
this.simbolos = simbolos;
|
|
20
|
-
this.atual = 0;
|
|
21
|
-
this.blocos = 0;
|
|
22
|
-
}
|
|
23
|
-
declaracaoDeConstantes() {
|
|
24
|
-
throw new Error('Método não implementado.');
|
|
25
|
-
}
|
|
26
|
-
declaracaoDeVariaveis() {
|
|
27
|
-
throw new Error('Método não implementado.');
|
|
28
|
-
}
|
|
29
|
-
declaracaoLeia() {
|
|
30
|
-
throw new Error('Método não implementado.');
|
|
31
|
-
}
|
|
32
|
-
sincronizar() {
|
|
33
|
-
this.avancarEDevolverAnterior();
|
|
34
|
-
while (!this.estaNoFinal()) {
|
|
35
|
-
if (this.simboloAnterior().tipo === egua_classico_1.default.PONTO_E_VIRGULA)
|
|
36
|
-
return;
|
|
37
|
-
switch (this.simboloAtual().tipo) {
|
|
38
|
-
case egua_classico_1.default.CLASSE:
|
|
39
|
-
case egua_classico_1.default.FUNCAO:
|
|
40
|
-
case egua_classico_1.default.VARIAVEL:
|
|
41
|
-
case egua_classico_1.default.PARA:
|
|
42
|
-
case egua_classico_1.default.SE:
|
|
43
|
-
case egua_classico_1.default.ENQUANTO:
|
|
44
|
-
case egua_classico_1.default.ESCREVA:
|
|
45
|
-
case egua_classico_1.default.RETORNA:
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
this.avancarEDevolverAnterior();
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
erro(simbolo, mensagemDeErro) {
|
|
52
|
-
const excecao = new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(simbolo, mensagemDeErro);
|
|
53
|
-
this.erros.push(excecao);
|
|
54
|
-
return excecao;
|
|
55
|
-
}
|
|
56
|
-
consumir(tipo, mensagemDeErro) {
|
|
57
|
-
if (this.verificarTipoSimboloAtual(tipo))
|
|
58
|
-
return this.avancarEDevolverAnterior();
|
|
59
|
-
else
|
|
60
|
-
throw this.erro(this.simboloAtual(), mensagemDeErro);
|
|
61
|
-
}
|
|
62
|
-
verificarTipoSimboloAtual(tipo) {
|
|
63
|
-
if (this.estaNoFinal())
|
|
64
|
-
return false;
|
|
65
|
-
return this.simboloAtual().tipo === tipo;
|
|
66
|
-
}
|
|
67
|
-
verificarTipoProximoSimbolo(tipo) {
|
|
68
|
-
if (this.estaNoFinal())
|
|
69
|
-
return false;
|
|
70
|
-
return this.simbolos[this.atual + 1].tipo === tipo;
|
|
71
|
-
}
|
|
72
|
-
simboloAtual() {
|
|
73
|
-
return this.simbolos[this.atual];
|
|
74
|
-
}
|
|
75
|
-
simboloAnterior() {
|
|
76
|
-
return this.simbolos[this.atual - 1];
|
|
77
|
-
}
|
|
78
|
-
simboloNaPosicao(posicao) {
|
|
79
|
-
return this.simbolos[this.atual + posicao];
|
|
80
|
-
}
|
|
81
|
-
estaNoFinal() {
|
|
82
|
-
return this.simboloAtual().tipo === egua_classico_1.default.EOF;
|
|
83
|
-
}
|
|
84
|
-
avancarEDevolverAnterior() {
|
|
85
|
-
if (!this.estaNoFinal())
|
|
86
|
-
this.atual += 1;
|
|
87
|
-
return this.simboloAnterior();
|
|
88
|
-
}
|
|
89
|
-
verificarSeSimboloAtualEIgualA(...argumentos) {
|
|
90
|
-
for (let i = 0; i < argumentos.length; i++) {
|
|
91
|
-
const tipoAtual = argumentos[i];
|
|
92
|
-
if (this.verificarTipoSimboloAtual(tipoAtual)) {
|
|
93
|
-
this.avancarEDevolverAnterior();
|
|
94
|
-
return true;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
return false;
|
|
98
|
-
}
|
|
99
|
-
primario() {
|
|
100
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.SUPER)) {
|
|
101
|
-
const simboloChave = this.simboloAnterior();
|
|
102
|
-
this.consumir(egua_classico_1.default.PONTO, "Esperado '.' após 'super'.");
|
|
103
|
-
const metodo = this.consumir(egua_classico_1.default.IDENTIFICADOR, 'Esperado nome do método da Superclasse.');
|
|
104
|
-
return new construtos_1.Super(this.hashArquivo, simboloChave, metodo);
|
|
105
|
-
}
|
|
106
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.COLCHETE_ESQUERDO)) {
|
|
107
|
-
const valores = [];
|
|
108
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.COLCHETE_DIREITO)) {
|
|
109
|
-
return new construtos_1.Vetor(this.hashArquivo, 0, []);
|
|
110
|
-
}
|
|
111
|
-
while (!this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.COLCHETE_DIREITO)) {
|
|
112
|
-
const valor = this.atribuir();
|
|
113
|
-
valores.push(valor);
|
|
114
|
-
if (this.simboloAtual().tipo !== egua_classico_1.default.COLCHETE_DIREITO) {
|
|
115
|
-
this.consumir(egua_classico_1.default.VIRGULA, 'Esperado vírgula antes da próxima expressão.');
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
return new construtos_1.Vetor(this.hashArquivo, 0, valores);
|
|
119
|
-
}
|
|
120
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CHAVE_ESQUERDA)) {
|
|
121
|
-
const chaves = [];
|
|
122
|
-
const valores = [];
|
|
123
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CHAVE_DIREITA)) {
|
|
124
|
-
return new construtos_1.Dicionario(this.hashArquivo, 0, [], []);
|
|
125
|
-
}
|
|
126
|
-
while (!this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CHAVE_DIREITA)) {
|
|
127
|
-
const chave = this.atribuir();
|
|
128
|
-
this.consumir(egua_classico_1.default.DOIS_PONTOS, "Esperado ':' entre chave e valor.");
|
|
129
|
-
const valor = this.atribuir();
|
|
130
|
-
chaves.push(chave);
|
|
131
|
-
valores.push(valor);
|
|
132
|
-
if (this.simboloAtual().tipo !== egua_classico_1.default.CHAVE_DIREITA) {
|
|
133
|
-
this.consumir(egua_classico_1.default.VIRGULA, 'Esperado vírgula antes da próxima expressão.');
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
return new construtos_1.Dicionario(this.hashArquivo, 0, chaves, valores);
|
|
137
|
-
}
|
|
138
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.FUNCAO))
|
|
139
|
-
return this.corpoDaFuncao('função');
|
|
140
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.FALSO))
|
|
141
|
-
return new construtos_1.Literal(this.hashArquivo, 0, false);
|
|
142
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.VERDADEIRO))
|
|
143
|
-
return new construtos_1.Literal(this.hashArquivo, 0, true);
|
|
144
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.NULO))
|
|
145
|
-
return new construtos_1.Literal(this.hashArquivo, 0, null);
|
|
146
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.ISTO))
|
|
147
|
-
return new construtos_1.Isto(this.hashArquivo, Number(this.simboloAnterior()));
|
|
148
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.NUMERO, egua_classico_1.default.TEXTO)) {
|
|
149
|
-
return new construtos_1.Literal(this.hashArquivo, 0, this.simboloAnterior().literal);
|
|
150
|
-
}
|
|
151
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.IDENTIFICADOR)) {
|
|
152
|
-
return new construtos_1.Variavel(this.hashArquivo, this.simboloAnterior());
|
|
153
|
-
}
|
|
154
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.PARENTESE_ESQUERDO)) {
|
|
155
|
-
const expressao = this.expressao();
|
|
156
|
-
this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após a expressão.");
|
|
157
|
-
return new construtos_1.Agrupamento(this.hashArquivo, 0, expressao);
|
|
158
|
-
}
|
|
159
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.IMPORTAR))
|
|
160
|
-
return this.declaracaoImportar();
|
|
161
|
-
throw this.erro(this.simboloAtual(), 'Esperado expressão.');
|
|
162
|
-
}
|
|
163
|
-
finalizarChamada(entidadeChamada) {
|
|
164
|
-
const argumentos = [];
|
|
165
|
-
if (!this.verificarTipoSimboloAtual(egua_classico_1.default.PARENTESE_DIREITO)) {
|
|
166
|
-
do {
|
|
167
|
-
if (argumentos.length >= 255) {
|
|
168
|
-
throw this.erro(this.simboloAtual(), 'Não pode haver mais de 255 argumentos.');
|
|
169
|
-
}
|
|
170
|
-
argumentos.push(this.expressao());
|
|
171
|
-
} while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.VIRGULA));
|
|
172
|
-
}
|
|
173
|
-
const parenteseDireito = this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após os argumentos.");
|
|
174
|
-
return new construtos_1.Chamada(this.hashArquivo, entidadeChamada, parenteseDireito, argumentos);
|
|
175
|
-
}
|
|
176
|
-
chamar() {
|
|
177
|
-
let expressao = this.primario();
|
|
178
|
-
while (true) {
|
|
179
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.PARENTESE_ESQUERDO)) {
|
|
180
|
-
expressao = this.finalizarChamada(expressao);
|
|
181
|
-
}
|
|
182
|
-
else if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.PONTO)) {
|
|
183
|
-
const nome = this.consumir(egua_classico_1.default.IDENTIFICADOR, "Esperado nome do método após '.'.");
|
|
184
|
-
expressao = new construtos_1.AcessoMetodoOuPropriedade(this.hashArquivo, expressao, nome);
|
|
185
|
-
}
|
|
186
|
-
else if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.COLCHETE_ESQUERDO)) {
|
|
187
|
-
const indice = this.expressao();
|
|
188
|
-
const simboloFechamento = this.consumir(egua_classico_1.default.COLCHETE_DIREITO, "Esperado ']' após escrita do indice.");
|
|
189
|
-
expressao = new construtos_1.AcessoIndiceVariavel(this.hashArquivo, expressao, indice, simboloFechamento);
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
break;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
return expressao;
|
|
196
|
-
}
|
|
197
|
-
unario() {
|
|
198
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.NEGACAO, egua_classico_1.default.SUBTRACAO, egua_classico_1.default.BIT_NOT)) {
|
|
199
|
-
const operador = this.simboloAnterior();
|
|
200
|
-
const direito = this.unario();
|
|
201
|
-
return new construtos_1.Unario(this.hashArquivo, operador, direito);
|
|
202
|
-
}
|
|
203
|
-
return this.chamar();
|
|
204
|
-
}
|
|
205
|
-
exponenciacao() {
|
|
206
|
-
let expressao = this.unario();
|
|
207
|
-
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.EXPONENCIACAO)) {
|
|
208
|
-
const operador = this.simboloAnterior();
|
|
209
|
-
const direito = this.unario();
|
|
210
|
-
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
211
|
-
}
|
|
212
|
-
return expressao;
|
|
213
|
-
}
|
|
214
|
-
multiplicar() {
|
|
215
|
-
let expressao = this.exponenciacao();
|
|
216
|
-
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.DIVISAO, egua_classico_1.default.MULTIPLICACAO, egua_classico_1.default.MODULO)) {
|
|
217
|
-
const operador = this.simboloAnterior();
|
|
218
|
-
const direito = this.exponenciacao();
|
|
219
|
-
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
220
|
-
}
|
|
221
|
-
return expressao;
|
|
222
|
-
}
|
|
223
|
-
adicionar() {
|
|
224
|
-
let expressao = this.multiplicar();
|
|
225
|
-
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.SUBTRACAO, egua_classico_1.default.ADICAO)) {
|
|
226
|
-
const operador = this.simboloAnterior();
|
|
227
|
-
const direito = this.multiplicar();
|
|
228
|
-
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
229
|
-
}
|
|
230
|
-
return expressao;
|
|
231
|
-
}
|
|
232
|
-
bitShift() {
|
|
233
|
-
let expressao = this.adicionar();
|
|
234
|
-
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.MENOR_MENOR, egua_classico_1.default.MAIOR_MAIOR)) {
|
|
235
|
-
const operador = this.simboloAnterior();
|
|
236
|
-
const direito = this.adicionar();
|
|
237
|
-
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
238
|
-
}
|
|
239
|
-
return expressao;
|
|
240
|
-
}
|
|
241
|
-
bitE() {
|
|
242
|
-
let expressao = this.bitShift();
|
|
243
|
-
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.BIT_AND)) {
|
|
244
|
-
const operador = this.simboloAnterior();
|
|
245
|
-
const direito = this.bitShift();
|
|
246
|
-
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
247
|
-
}
|
|
248
|
-
return expressao;
|
|
249
|
-
}
|
|
250
|
-
bitOu() {
|
|
251
|
-
let expressao = this.bitE();
|
|
252
|
-
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.BIT_OR, egua_classico_1.default.BIT_XOR)) {
|
|
253
|
-
const operador = this.simboloAnterior();
|
|
254
|
-
const direito = this.bitE();
|
|
255
|
-
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
256
|
-
}
|
|
257
|
-
return expressao;
|
|
258
|
-
}
|
|
259
|
-
comparar() {
|
|
260
|
-
let expressao = this.bitOu();
|
|
261
|
-
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.MAIOR, egua_classico_1.default.MAIOR_IGUAL, egua_classico_1.default.MENOR, egua_classico_1.default.MENOR_IGUAL)) {
|
|
262
|
-
const operador = this.simboloAnterior();
|
|
263
|
-
const direito = this.bitOu();
|
|
264
|
-
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
265
|
-
}
|
|
266
|
-
return expressao;
|
|
267
|
-
}
|
|
268
|
-
comparacaoIgualdade() {
|
|
269
|
-
let expressao = this.comparar();
|
|
270
|
-
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.DIFERENTE, egua_classico_1.default.IGUAL_IGUAL)) {
|
|
271
|
-
const operador = this.simboloAnterior();
|
|
272
|
-
const direito = this.comparar();
|
|
273
|
-
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
274
|
-
}
|
|
275
|
-
return expressao;
|
|
276
|
-
}
|
|
277
|
-
em() {
|
|
278
|
-
let expressao = this.comparacaoIgualdade();
|
|
279
|
-
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.EM)) {
|
|
280
|
-
const operador = this.simboloAnterior();
|
|
281
|
-
const direito = this.comparacaoIgualdade();
|
|
282
|
-
expressao = new construtos_1.Logico(this.hashArquivo, expressao, operador, direito);
|
|
283
|
-
}
|
|
284
|
-
return expressao;
|
|
285
|
-
}
|
|
286
|
-
e() {
|
|
287
|
-
let expressao = this.em();
|
|
288
|
-
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.E)) {
|
|
289
|
-
const operador = this.simboloAnterior();
|
|
290
|
-
const direito = this.em();
|
|
291
|
-
expressao = new construtos_1.Logico(this.hashArquivo, expressao, operador, direito);
|
|
292
|
-
}
|
|
293
|
-
return expressao;
|
|
294
|
-
}
|
|
295
|
-
ou() {
|
|
296
|
-
let expressao = this.e();
|
|
297
|
-
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.OU)) {
|
|
298
|
-
const operador = this.simboloAnterior();
|
|
299
|
-
const direito = this.e();
|
|
300
|
-
expressao = new construtos_1.Logico(this.hashArquivo, expressao, operador, direito);
|
|
301
|
-
}
|
|
302
|
-
return expressao;
|
|
303
|
-
}
|
|
304
|
-
atribuir() {
|
|
305
|
-
const expressao = this.ou();
|
|
306
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.IGUAL)) {
|
|
307
|
-
const igual = this.simboloAnterior();
|
|
308
|
-
const valor = this.atribuir();
|
|
309
|
-
if (expressao instanceof construtos_1.Variavel) {
|
|
310
|
-
const simbolo = expressao.simbolo;
|
|
311
|
-
return new construtos_1.Atribuir(this.hashArquivo, simbolo, valor);
|
|
312
|
-
}
|
|
313
|
-
else if (expressao instanceof construtos_1.AcessoMetodoOuPropriedade) {
|
|
314
|
-
const get = expressao;
|
|
315
|
-
return new construtos_1.DefinirValor(this.hashArquivo, 0, get.objeto, get.simbolo, valor);
|
|
316
|
-
}
|
|
317
|
-
else if (expressao instanceof construtos_1.AcessoIndiceVariavel) {
|
|
318
|
-
return new construtos_1.AtribuicaoPorIndice(this.hashArquivo, 0, expressao.entidadeChamada, expressao.indice, valor);
|
|
319
|
-
}
|
|
320
|
-
this.erro(igual, 'Tarefa de atribuição inválida');
|
|
321
|
-
}
|
|
322
|
-
return expressao;
|
|
323
|
-
}
|
|
324
|
-
expressao() {
|
|
325
|
-
return this.atribuir();
|
|
326
|
-
}
|
|
327
|
-
declaracaoEscreva() {
|
|
328
|
-
const simboloAtual = this.simboloAtual();
|
|
329
|
-
this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '(' antes dos valores em escreva.");
|
|
330
|
-
const valor = this.expressao();
|
|
331
|
-
this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após os valores em escreva.");
|
|
332
|
-
this.consumir(egua_classico_1.default.PONTO_E_VIRGULA, "Esperado ';' após o valor.");
|
|
333
|
-
return new declaracoes_1.Escreva(Number(simboloAtual.linha), simboloAtual.hashArquivo, [valor]);
|
|
334
|
-
}
|
|
335
|
-
declaracaoExpressao() {
|
|
336
|
-
const expressao = this.expressao();
|
|
337
|
-
this.consumir(egua_classico_1.default.PONTO_E_VIRGULA, "Esperado ';' após expressão.");
|
|
338
|
-
return new declaracoes_1.Expressao(expressao);
|
|
339
|
-
}
|
|
340
|
-
blocoEscopo() {
|
|
341
|
-
const declaracoes = [];
|
|
342
|
-
while (!this.verificarTipoSimboloAtual(egua_classico_1.default.CHAVE_DIREITA) && !this.estaNoFinal()) {
|
|
343
|
-
declaracoes.push(this.resolverDeclaracaoForaDeBloco());
|
|
344
|
-
}
|
|
345
|
-
this.consumir(egua_classico_1.default.CHAVE_DIREITA, "Esperado '}' após o bloco.");
|
|
346
|
-
return declaracoes;
|
|
347
|
-
}
|
|
348
|
-
declaracaoSe() {
|
|
349
|
-
this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'se'.");
|
|
350
|
-
const condicao = this.expressao();
|
|
351
|
-
this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após condição do se.");
|
|
352
|
-
const caminhoEntao = this.resolverDeclaracao();
|
|
353
|
-
const caminhosSeSenao = [];
|
|
354
|
-
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.SENÃOSE)) {
|
|
355
|
-
this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'senãose'.");
|
|
356
|
-
const condicaoSeSenao = this.expressao();
|
|
357
|
-
this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' apóes codição do 'senãose.");
|
|
358
|
-
const caminho = this.resolverDeclaracao();
|
|
359
|
-
caminhosSeSenao.push({
|
|
360
|
-
condicao: condicaoSeSenao,
|
|
361
|
-
caminho: caminho,
|
|
362
|
-
});
|
|
363
|
-
}
|
|
364
|
-
let caminhoSenao = null;
|
|
365
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.SENÃO)) {
|
|
366
|
-
caminhoSenao = this.resolverDeclaracao();
|
|
367
|
-
}
|
|
368
|
-
return new declaracoes_1.Se(condicao, caminhoEntao, caminhosSeSenao, caminhoSenao);
|
|
369
|
-
}
|
|
370
|
-
declaracaoEnquanto() {
|
|
371
|
-
try {
|
|
372
|
-
this.blocos += 1;
|
|
373
|
-
this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'enquanto'.");
|
|
374
|
-
const condicao = this.expressao();
|
|
375
|
-
this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após condicional.");
|
|
376
|
-
const corpo = this.resolverDeclaracao();
|
|
377
|
-
return new declaracoes_1.Enquanto(condicao, corpo);
|
|
378
|
-
}
|
|
379
|
-
finally {
|
|
380
|
-
this.blocos -= 1;
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
declaracaoPara() {
|
|
384
|
-
try {
|
|
385
|
-
const simboloPara = this.simboloAnterior();
|
|
386
|
-
this.blocos += 1;
|
|
387
|
-
this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'para'.");
|
|
388
|
-
let inicializador;
|
|
389
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.PONTO_E_VIRGULA)) {
|
|
390
|
-
inicializador = null;
|
|
391
|
-
}
|
|
392
|
-
else if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.VARIAVEL)) {
|
|
393
|
-
inicializador = this.declaracaoDeVariavel();
|
|
394
|
-
}
|
|
395
|
-
else {
|
|
396
|
-
inicializador = this.declaracaoExpressao();
|
|
397
|
-
}
|
|
398
|
-
let condicao = null;
|
|
399
|
-
if (!this.verificarTipoSimboloAtual(egua_classico_1.default.PONTO_E_VIRGULA)) {
|
|
400
|
-
condicao = this.expressao();
|
|
401
|
-
}
|
|
402
|
-
this.consumir(egua_classico_1.default.PONTO_E_VIRGULA, "Esperado ';' após valores da condicional");
|
|
403
|
-
let incrementar = null;
|
|
404
|
-
if (!this.verificarTipoSimboloAtual(egua_classico_1.default.PARENTESE_DIREITO)) {
|
|
405
|
-
incrementar = this.expressao();
|
|
406
|
-
}
|
|
407
|
-
this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após cláusulas");
|
|
408
|
-
const corpo = this.resolverDeclaracao();
|
|
409
|
-
return new declaracoes_1.Para(this.hashArquivo, Number(simboloPara.linha), inicializador, condicao, incrementar, corpo);
|
|
410
|
-
}
|
|
411
|
-
finally {
|
|
412
|
-
this.blocos -= 1;
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
declaracaoSustar() {
|
|
416
|
-
if (this.blocos < 1) {
|
|
417
|
-
this.erro(this.simboloAnterior(), "'pausa' deve estar dentro de um loop.");
|
|
418
|
-
}
|
|
419
|
-
this.consumir(egua_classico_1.default.PONTO_E_VIRGULA, "Esperado ';' após 'pausa'.");
|
|
420
|
-
return new declaracoes_1.Sustar(this.simboloAtual());
|
|
421
|
-
}
|
|
422
|
-
declaracaoContinua() {
|
|
423
|
-
if (this.blocos < 1) {
|
|
424
|
-
this.erro(this.simboloAnterior(), "'continua' precisa estar em um laço de repetição.");
|
|
425
|
-
}
|
|
426
|
-
this.consumir(egua_classico_1.default.PONTO_E_VIRGULA, "Esperado ';' após 'continua'.");
|
|
427
|
-
return new declaracoes_1.Continua(this.simboloAtual());
|
|
428
|
-
}
|
|
429
|
-
declaracaoRetorna() {
|
|
430
|
-
const palavraChave = this.simboloAnterior();
|
|
431
|
-
let valor = null;
|
|
432
|
-
if (!this.verificarTipoSimboloAtual(egua_classico_1.default.PONTO_E_VIRGULA)) {
|
|
433
|
-
valor = this.expressao();
|
|
434
|
-
}
|
|
435
|
-
this.consumir(egua_classico_1.default.PONTO_E_VIRGULA, "Esperado ';' após o retorno.");
|
|
436
|
-
return new declaracoes_1.Retorna(palavraChave, valor);
|
|
437
|
-
}
|
|
438
|
-
declaracaoEscolha() {
|
|
439
|
-
try {
|
|
440
|
-
this.blocos += 1;
|
|
441
|
-
this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '{' após 'escolha'.");
|
|
442
|
-
const condicao = this.expressao();
|
|
443
|
-
this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado '}' após a condição de 'escolha'.");
|
|
444
|
-
this.consumir(egua_classico_1.default.CHAVE_ESQUERDA, "Esperado '{' antes do escopo do 'escolha'.");
|
|
445
|
-
const caminhos = [];
|
|
446
|
-
let caminhoPadrao = null;
|
|
447
|
-
while (!this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CHAVE_DIREITA) && !this.estaNoFinal()) {
|
|
448
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CASO)) {
|
|
449
|
-
const caminhoCondicoes = [this.expressao()];
|
|
450
|
-
this.consumir(egua_classico_1.default.DOIS_PONTOS, "Esperado ':' após o 'caso'.");
|
|
451
|
-
while (this.verificarTipoSimboloAtual(egua_classico_1.default.CASO)) {
|
|
452
|
-
this.consumir(egua_classico_1.default.CASO, null);
|
|
453
|
-
caminhoCondicoes.push(this.expressao());
|
|
454
|
-
this.consumir(egua_classico_1.default.DOIS_PONTOS, "Esperado ':' após declaração do 'caso'.");
|
|
455
|
-
}
|
|
456
|
-
const declaracoes = [];
|
|
457
|
-
do {
|
|
458
|
-
declaracoes.push(this.resolverDeclaracao());
|
|
459
|
-
} while (!this.verificarTipoSimboloAtual(egua_classico_1.default.CASO) &&
|
|
460
|
-
!this.verificarTipoSimboloAtual(egua_classico_1.default.PADRAO) &&
|
|
461
|
-
!this.verificarTipoSimboloAtual(egua_classico_1.default.CHAVE_DIREITA));
|
|
462
|
-
caminhos.push({
|
|
463
|
-
condicoes: caminhoCondicoes,
|
|
464
|
-
declaracoes,
|
|
465
|
-
});
|
|
466
|
-
}
|
|
467
|
-
else if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.PADRAO)) {
|
|
468
|
-
if (caminhoPadrao !== null) {
|
|
469
|
-
const excecao = new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(this.simboloAtual(), "Você só pode ter um 'padrao' em cada declaração de 'escolha'.");
|
|
470
|
-
this.erros.push(excecao);
|
|
471
|
-
throw excecao;
|
|
472
|
-
}
|
|
473
|
-
this.consumir(egua_classico_1.default.DOIS_PONTOS, "Esperado ':' após declaração do 'padrao'.");
|
|
474
|
-
const declaracoes = [];
|
|
475
|
-
do {
|
|
476
|
-
declaracoes.push(this.resolverDeclaracao());
|
|
477
|
-
} while (!this.verificarTipoSimboloAtual(egua_classico_1.default.CASO) &&
|
|
478
|
-
!this.verificarTipoSimboloAtual(egua_classico_1.default.PADRAO) &&
|
|
479
|
-
!this.verificarTipoSimboloAtual(egua_classico_1.default.CHAVE_DIREITA));
|
|
480
|
-
caminhoPadrao = {
|
|
481
|
-
declaracoes,
|
|
482
|
-
};
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
return new declaracoes_1.Escolha(condicao, caminhos, caminhoPadrao);
|
|
486
|
-
}
|
|
487
|
-
finally {
|
|
488
|
-
this.blocos -= 1;
|
|
489
|
-
}
|
|
490
|
-
}
|
|
491
|
-
declaracaoImportar() {
|
|
492
|
-
this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '(' após declaração.");
|
|
493
|
-
const caminho = this.expressao();
|
|
494
|
-
const simboloFechamento = this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após declaração.");
|
|
495
|
-
return new declaracoes_1.Importar(caminho, simboloFechamento);
|
|
496
|
-
}
|
|
497
|
-
declaracaoTente() {
|
|
498
|
-
this.consumir(egua_classico_1.default.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'tente'.");
|
|
499
|
-
const tryBlock = this.blocoEscopo();
|
|
500
|
-
let catchBlock = null;
|
|
501
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.PEGUE)) {
|
|
502
|
-
this.consumir(egua_classico_1.default.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'pegue'.");
|
|
503
|
-
catchBlock = this.blocoEscopo();
|
|
504
|
-
}
|
|
505
|
-
let elseBlock = null;
|
|
506
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.SENÃO)) {
|
|
507
|
-
this.consumir(egua_classico_1.default.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'pegue'.");
|
|
508
|
-
elseBlock = this.blocoEscopo();
|
|
509
|
-
}
|
|
510
|
-
let finallyBlock = null;
|
|
511
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.FINALMENTE)) {
|
|
512
|
-
this.consumir(egua_classico_1.default.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'pegue'.");
|
|
513
|
-
finallyBlock = this.blocoEscopo();
|
|
514
|
-
}
|
|
515
|
-
return new declaracoes_1.Tente(0, 0, tryBlock, catchBlock, elseBlock, finallyBlock);
|
|
516
|
-
}
|
|
517
|
-
declaracaoFazer() {
|
|
518
|
-
try {
|
|
519
|
-
this.blocos += 1;
|
|
520
|
-
const caminhoFazer = this.resolverDeclaracao();
|
|
521
|
-
this.consumir(egua_classico_1.default.ENQUANTO, "Esperado declaração do 'enquanto' após o escopo do 'fazer'.");
|
|
522
|
-
this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '(' após declaração 'enquanto'.");
|
|
523
|
-
const condicaoEnquanto = this.expressao();
|
|
524
|
-
this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após declaração do 'enquanto'.");
|
|
525
|
-
return new declaracoes_1.Fazer(0, 0, caminhoFazer, condicaoEnquanto);
|
|
526
|
-
}
|
|
527
|
-
finally {
|
|
528
|
-
this.blocos -= 1;
|
|
529
|
-
}
|
|
530
|
-
}
|
|
531
|
-
resolverDeclaracao() {
|
|
532
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.FAZER))
|
|
533
|
-
return this.declaracaoFazer();
|
|
534
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.TENTE))
|
|
535
|
-
return this.declaracaoTente();
|
|
536
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.ESCOLHA))
|
|
537
|
-
return this.declaracaoEscolha();
|
|
538
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.RETORNA))
|
|
539
|
-
return this.declaracaoRetorna();
|
|
540
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CONTINUA))
|
|
541
|
-
return this.declaracaoContinua();
|
|
542
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.PAUSA))
|
|
543
|
-
return this.declaracaoSustar();
|
|
544
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.PARA))
|
|
545
|
-
return this.declaracaoPara();
|
|
546
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.ENQUANTO))
|
|
547
|
-
return this.declaracaoEnquanto();
|
|
548
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.SE))
|
|
549
|
-
return this.declaracaoSe();
|
|
550
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.ESCREVA))
|
|
551
|
-
return this.declaracaoEscreva();
|
|
552
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CHAVE_ESQUERDA))
|
|
553
|
-
return new declaracoes_1.Bloco(0, 0, this.blocoEscopo());
|
|
554
|
-
return this.declaracaoExpressao();
|
|
555
|
-
}
|
|
556
|
-
declaracaoDeVariavel() {
|
|
557
|
-
const nome = this.consumir(egua_classico_1.default.IDENTIFICADOR, 'Esperado nome de variável.');
|
|
558
|
-
let inicializador = null;
|
|
559
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.IGUAL)) {
|
|
560
|
-
inicializador = this.expressao();
|
|
561
|
-
}
|
|
562
|
-
this.consumir(egua_classico_1.default.PONTO_E_VIRGULA, "Esperado ';' após a declaração da variável.");
|
|
563
|
-
return new declaracoes_1.Var(nome, inicializador);
|
|
564
|
-
}
|
|
565
|
-
funcao(kind) {
|
|
566
|
-
const nome = this.consumir(egua_classico_1.default.IDENTIFICADOR, `Esperado nome ${kind}.`);
|
|
567
|
-
return new declaracoes_1.FuncaoDeclaracao(nome, this.corpoDaFuncao(kind));
|
|
568
|
-
}
|
|
569
|
-
corpoDaFuncao(kind) {
|
|
570
|
-
this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, `Esperado '(' após o nome ${kind}.`);
|
|
571
|
-
const parametros = [];
|
|
572
|
-
if (!this.verificarTipoSimboloAtual(egua_classico_1.default.PARENTESE_DIREITO)) {
|
|
573
|
-
do {
|
|
574
|
-
if (parametros.length >= 255) {
|
|
575
|
-
this.erro(this.simboloAtual(), 'Não pode haver mais de 255 parâmetros');
|
|
576
|
-
}
|
|
577
|
-
const parametro = {};
|
|
578
|
-
if (this.simboloAtual().tipo === egua_classico_1.default.MULTIPLICACAO) {
|
|
579
|
-
this.consumir(egua_classico_1.default.MULTIPLICACAO, null);
|
|
580
|
-
parametro['tipo'] = 'multiplo';
|
|
581
|
-
}
|
|
582
|
-
else {
|
|
583
|
-
parametro['tipo'] = 'padrao';
|
|
584
|
-
}
|
|
585
|
-
parametro['nome'] = this.consumir(egua_classico_1.default.IDENTIFICADOR, 'Esperado nome do parâmetro.');
|
|
586
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.IGUAL)) {
|
|
587
|
-
parametro['padrao'] = this.primario();
|
|
588
|
-
}
|
|
589
|
-
parametros.push(parametro);
|
|
590
|
-
if (parametro['tipo'] === 'multiplo')
|
|
591
|
-
break;
|
|
592
|
-
} while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.VIRGULA));
|
|
593
|
-
}
|
|
594
|
-
this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após parâmetros.");
|
|
595
|
-
this.consumir(egua_classico_1.default.CHAVE_ESQUERDA, `Esperado '{' antes do escopo do ${kind}.`);
|
|
596
|
-
const corpo = this.blocoEscopo();
|
|
597
|
-
return new construtos_1.FuncaoConstruto(this.hashArquivo, 0, parametros, corpo);
|
|
598
|
-
}
|
|
599
|
-
declaracaoDeClasse() {
|
|
600
|
-
const nome = this.consumir(egua_classico_1.default.IDENTIFICADOR, 'Esperado nome da classe.');
|
|
601
|
-
let superClasse = null;
|
|
602
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.HERDA)) {
|
|
603
|
-
this.consumir(egua_classico_1.default.IDENTIFICADOR, 'Esperado nome da Superclasse.');
|
|
604
|
-
superClasse = new construtos_1.Variavel(this.hashArquivo, this.simboloAnterior());
|
|
605
|
-
}
|
|
606
|
-
this.consumir(egua_classico_1.default.CHAVE_ESQUERDA, "Esperado '{' antes do escopo da classe.");
|
|
607
|
-
const metodos = [];
|
|
608
|
-
while (!this.verificarTipoSimboloAtual(egua_classico_1.default.CHAVE_DIREITA) && !this.estaNoFinal()) {
|
|
609
|
-
metodos.push(this.funcao('método'));
|
|
610
|
-
}
|
|
611
|
-
this.consumir(egua_classico_1.default.CHAVE_DIREITA, "Esperado '}' após o escopo da classe.");
|
|
612
|
-
return new declaracoes_1.Classe(nome, superClasse, metodos);
|
|
613
|
-
}
|
|
614
|
-
resolverDeclaracaoForaDeBloco() {
|
|
615
|
-
try {
|
|
616
|
-
if (this.verificarTipoSimboloAtual(egua_classico_1.default.FUNCAO) &&
|
|
617
|
-
this.verificarTipoProximoSimbolo(egua_classico_1.default.IDENTIFICADOR)) {
|
|
618
|
-
this.consumir(egua_classico_1.default.FUNCAO, null);
|
|
619
|
-
return this.funcao('função');
|
|
620
|
-
}
|
|
621
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.VARIAVEL))
|
|
622
|
-
return this.declaracaoDeVariavel();
|
|
623
|
-
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CLASSE))
|
|
624
|
-
return this.declaracaoDeClasse();
|
|
625
|
-
return this.resolverDeclaracao();
|
|
626
|
-
}
|
|
627
|
-
catch (erro) {
|
|
628
|
-
this.sincronizar();
|
|
629
|
-
return null;
|
|
630
|
-
}
|
|
631
|
-
}
|
|
632
|
-
analisar(retornoLexador, hashArquivo) {
|
|
633
|
-
this.erros = [];
|
|
634
|
-
this.atual = 0;
|
|
635
|
-
this.blocos = 0;
|
|
636
|
-
this.hashArquivo = hashArquivo || 0;
|
|
637
|
-
this.simbolos = (retornoLexador === null || retornoLexador === void 0 ? void 0 : retornoLexador.simbolos) || [];
|
|
638
|
-
const declaracoes = [];
|
|
639
|
-
while (!this.estaNoFinal()) {
|
|
640
|
-
declaracoes.push(this.resolverDeclaracaoForaDeBloco());
|
|
641
|
-
}
|
|
642
|
-
return {
|
|
643
|
-
declaracoes: declaracoes,
|
|
644
|
-
erros: this.erros,
|
|
645
|
-
};
|
|
646
|
-
}
|
|
647
|
-
}
|
|
648
|
-
exports.AvaliadorSintaticoEguaClassico = AvaliadorSintaticoEguaClassico;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AvaliadorSintaticoEguaClassico = void 0;
|
|
7
|
+
const construtos_1 = require("../../construtos");
|
|
8
|
+
const erro_avaliador_sintatico_1 = require("../erro-avaliador-sintatico");
|
|
9
|
+
const declaracoes_1 = require("../../declaracoes");
|
|
10
|
+
const egua_classico_1 = __importDefault(require("../../tipos-de-simbolos/egua-classico"));
|
|
11
|
+
/**
|
|
12
|
+
* O avaliador sintático (_Parser_) é responsável por transformar os símbolos do Lexador em estruturas de alto nível.
|
|
13
|
+
* Essas estruturas de alto nível são as partes que executam lógica de programação de fato.
|
|
14
|
+
*
|
|
15
|
+
* Esta implementação tenta seguir à risca o que está atualmente em https://github.com/eguatech/egua/blob/master/src/parser.js.
|
|
16
|
+
*/
|
|
17
|
+
class AvaliadorSintaticoEguaClassico {
|
|
18
|
+
constructor(simbolos) {
|
|
19
|
+
this.simbolos = simbolos;
|
|
20
|
+
this.atual = 0;
|
|
21
|
+
this.blocos = 0;
|
|
22
|
+
}
|
|
23
|
+
declaracaoDeConstantes() {
|
|
24
|
+
throw new Error('Método não implementado.');
|
|
25
|
+
}
|
|
26
|
+
declaracaoDeVariaveis() {
|
|
27
|
+
throw new Error('Método não implementado.');
|
|
28
|
+
}
|
|
29
|
+
declaracaoLeia() {
|
|
30
|
+
throw new Error('Método não implementado.');
|
|
31
|
+
}
|
|
32
|
+
sincronizar() {
|
|
33
|
+
this.avancarEDevolverAnterior();
|
|
34
|
+
while (!this.estaNoFinal()) {
|
|
35
|
+
if (this.simboloAnterior().tipo === egua_classico_1.default.PONTO_E_VIRGULA)
|
|
36
|
+
return;
|
|
37
|
+
switch (this.simboloAtual().tipo) {
|
|
38
|
+
case egua_classico_1.default.CLASSE:
|
|
39
|
+
case egua_classico_1.default.FUNCAO:
|
|
40
|
+
case egua_classico_1.default.VARIAVEL:
|
|
41
|
+
case egua_classico_1.default.PARA:
|
|
42
|
+
case egua_classico_1.default.SE:
|
|
43
|
+
case egua_classico_1.default.ENQUANTO:
|
|
44
|
+
case egua_classico_1.default.ESCREVA:
|
|
45
|
+
case egua_classico_1.default.RETORNA:
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
this.avancarEDevolverAnterior();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
erro(simbolo, mensagemDeErro) {
|
|
52
|
+
const excecao = new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(simbolo, mensagemDeErro);
|
|
53
|
+
this.erros.push(excecao);
|
|
54
|
+
return excecao;
|
|
55
|
+
}
|
|
56
|
+
consumir(tipo, mensagemDeErro) {
|
|
57
|
+
if (this.verificarTipoSimboloAtual(tipo))
|
|
58
|
+
return this.avancarEDevolverAnterior();
|
|
59
|
+
else
|
|
60
|
+
throw this.erro(this.simboloAtual(), mensagemDeErro);
|
|
61
|
+
}
|
|
62
|
+
verificarTipoSimboloAtual(tipo) {
|
|
63
|
+
if (this.estaNoFinal())
|
|
64
|
+
return false;
|
|
65
|
+
return this.simboloAtual().tipo === tipo;
|
|
66
|
+
}
|
|
67
|
+
verificarTipoProximoSimbolo(tipo) {
|
|
68
|
+
if (this.estaNoFinal())
|
|
69
|
+
return false;
|
|
70
|
+
return this.simbolos[this.atual + 1].tipo === tipo;
|
|
71
|
+
}
|
|
72
|
+
simboloAtual() {
|
|
73
|
+
return this.simbolos[this.atual];
|
|
74
|
+
}
|
|
75
|
+
simboloAnterior() {
|
|
76
|
+
return this.simbolos[this.atual - 1];
|
|
77
|
+
}
|
|
78
|
+
simboloNaPosicao(posicao) {
|
|
79
|
+
return this.simbolos[this.atual + posicao];
|
|
80
|
+
}
|
|
81
|
+
estaNoFinal() {
|
|
82
|
+
return this.simboloAtual().tipo === egua_classico_1.default.EOF;
|
|
83
|
+
}
|
|
84
|
+
avancarEDevolverAnterior() {
|
|
85
|
+
if (!this.estaNoFinal())
|
|
86
|
+
this.atual += 1;
|
|
87
|
+
return this.simboloAnterior();
|
|
88
|
+
}
|
|
89
|
+
verificarSeSimboloAtualEIgualA(...argumentos) {
|
|
90
|
+
for (let i = 0; i < argumentos.length; i++) {
|
|
91
|
+
const tipoAtual = argumentos[i];
|
|
92
|
+
if (this.verificarTipoSimboloAtual(tipoAtual)) {
|
|
93
|
+
this.avancarEDevolverAnterior();
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
primario() {
|
|
100
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.SUPER)) {
|
|
101
|
+
const simboloChave = this.simboloAnterior();
|
|
102
|
+
this.consumir(egua_classico_1.default.PONTO, "Esperado '.' após 'super'.");
|
|
103
|
+
const metodo = this.consumir(egua_classico_1.default.IDENTIFICADOR, 'Esperado nome do método da Superclasse.');
|
|
104
|
+
return new construtos_1.Super(this.hashArquivo, simboloChave, metodo);
|
|
105
|
+
}
|
|
106
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.COLCHETE_ESQUERDO)) {
|
|
107
|
+
const valores = [];
|
|
108
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.COLCHETE_DIREITO)) {
|
|
109
|
+
return new construtos_1.Vetor(this.hashArquivo, 0, []);
|
|
110
|
+
}
|
|
111
|
+
while (!this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.COLCHETE_DIREITO)) {
|
|
112
|
+
const valor = this.atribuir();
|
|
113
|
+
valores.push(valor);
|
|
114
|
+
if (this.simboloAtual().tipo !== egua_classico_1.default.COLCHETE_DIREITO) {
|
|
115
|
+
this.consumir(egua_classico_1.default.VIRGULA, 'Esperado vírgula antes da próxima expressão.');
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return new construtos_1.Vetor(this.hashArquivo, 0, valores);
|
|
119
|
+
}
|
|
120
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CHAVE_ESQUERDA)) {
|
|
121
|
+
const chaves = [];
|
|
122
|
+
const valores = [];
|
|
123
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CHAVE_DIREITA)) {
|
|
124
|
+
return new construtos_1.Dicionario(this.hashArquivo, 0, [], []);
|
|
125
|
+
}
|
|
126
|
+
while (!this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CHAVE_DIREITA)) {
|
|
127
|
+
const chave = this.atribuir();
|
|
128
|
+
this.consumir(egua_classico_1.default.DOIS_PONTOS, "Esperado ':' entre chave e valor.");
|
|
129
|
+
const valor = this.atribuir();
|
|
130
|
+
chaves.push(chave);
|
|
131
|
+
valores.push(valor);
|
|
132
|
+
if (this.simboloAtual().tipo !== egua_classico_1.default.CHAVE_DIREITA) {
|
|
133
|
+
this.consumir(egua_classico_1.default.VIRGULA, 'Esperado vírgula antes da próxima expressão.');
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return new construtos_1.Dicionario(this.hashArquivo, 0, chaves, valores);
|
|
137
|
+
}
|
|
138
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.FUNCAO))
|
|
139
|
+
return this.corpoDaFuncao('função');
|
|
140
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.FALSO))
|
|
141
|
+
return new construtos_1.Literal(this.hashArquivo, 0, false);
|
|
142
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.VERDADEIRO))
|
|
143
|
+
return new construtos_1.Literal(this.hashArquivo, 0, true);
|
|
144
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.NULO))
|
|
145
|
+
return new construtos_1.Literal(this.hashArquivo, 0, null);
|
|
146
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.ISTO))
|
|
147
|
+
return new construtos_1.Isto(this.hashArquivo, Number(this.simboloAnterior()));
|
|
148
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.NUMERO, egua_classico_1.default.TEXTO)) {
|
|
149
|
+
return new construtos_1.Literal(this.hashArquivo, 0, this.simboloAnterior().literal);
|
|
150
|
+
}
|
|
151
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.IDENTIFICADOR)) {
|
|
152
|
+
return new construtos_1.Variavel(this.hashArquivo, this.simboloAnterior());
|
|
153
|
+
}
|
|
154
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.PARENTESE_ESQUERDO)) {
|
|
155
|
+
const expressao = this.expressao();
|
|
156
|
+
this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após a expressão.");
|
|
157
|
+
return new construtos_1.Agrupamento(this.hashArquivo, 0, expressao);
|
|
158
|
+
}
|
|
159
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.IMPORTAR))
|
|
160
|
+
return this.declaracaoImportar();
|
|
161
|
+
throw this.erro(this.simboloAtual(), 'Esperado expressão.');
|
|
162
|
+
}
|
|
163
|
+
finalizarChamada(entidadeChamada) {
|
|
164
|
+
const argumentos = [];
|
|
165
|
+
if (!this.verificarTipoSimboloAtual(egua_classico_1.default.PARENTESE_DIREITO)) {
|
|
166
|
+
do {
|
|
167
|
+
if (argumentos.length >= 255) {
|
|
168
|
+
throw this.erro(this.simboloAtual(), 'Não pode haver mais de 255 argumentos.');
|
|
169
|
+
}
|
|
170
|
+
argumentos.push(this.expressao());
|
|
171
|
+
} while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.VIRGULA));
|
|
172
|
+
}
|
|
173
|
+
const parenteseDireito = this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após os argumentos.");
|
|
174
|
+
return new construtos_1.Chamada(this.hashArquivo, entidadeChamada, parenteseDireito, argumentos);
|
|
175
|
+
}
|
|
176
|
+
chamar() {
|
|
177
|
+
let expressao = this.primario();
|
|
178
|
+
while (true) {
|
|
179
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.PARENTESE_ESQUERDO)) {
|
|
180
|
+
expressao = this.finalizarChamada(expressao);
|
|
181
|
+
}
|
|
182
|
+
else if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.PONTO)) {
|
|
183
|
+
const nome = this.consumir(egua_classico_1.default.IDENTIFICADOR, "Esperado nome do método após '.'.");
|
|
184
|
+
expressao = new construtos_1.AcessoMetodoOuPropriedade(this.hashArquivo, expressao, nome);
|
|
185
|
+
}
|
|
186
|
+
else if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.COLCHETE_ESQUERDO)) {
|
|
187
|
+
const indice = this.expressao();
|
|
188
|
+
const simboloFechamento = this.consumir(egua_classico_1.default.COLCHETE_DIREITO, "Esperado ']' após escrita do indice.");
|
|
189
|
+
expressao = new construtos_1.AcessoIndiceVariavel(this.hashArquivo, expressao, indice, simboloFechamento);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
break;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return expressao;
|
|
196
|
+
}
|
|
197
|
+
unario() {
|
|
198
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.NEGACAO, egua_classico_1.default.SUBTRACAO, egua_classico_1.default.BIT_NOT)) {
|
|
199
|
+
const operador = this.simboloAnterior();
|
|
200
|
+
const direito = this.unario();
|
|
201
|
+
return new construtos_1.Unario(this.hashArquivo, operador, direito);
|
|
202
|
+
}
|
|
203
|
+
return this.chamar();
|
|
204
|
+
}
|
|
205
|
+
exponenciacao() {
|
|
206
|
+
let expressao = this.unario();
|
|
207
|
+
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.EXPONENCIACAO)) {
|
|
208
|
+
const operador = this.simboloAnterior();
|
|
209
|
+
const direito = this.unario();
|
|
210
|
+
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
211
|
+
}
|
|
212
|
+
return expressao;
|
|
213
|
+
}
|
|
214
|
+
multiplicar() {
|
|
215
|
+
let expressao = this.exponenciacao();
|
|
216
|
+
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.DIVISAO, egua_classico_1.default.MULTIPLICACAO, egua_classico_1.default.MODULO)) {
|
|
217
|
+
const operador = this.simboloAnterior();
|
|
218
|
+
const direito = this.exponenciacao();
|
|
219
|
+
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
220
|
+
}
|
|
221
|
+
return expressao;
|
|
222
|
+
}
|
|
223
|
+
adicionar() {
|
|
224
|
+
let expressao = this.multiplicar();
|
|
225
|
+
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.SUBTRACAO, egua_classico_1.default.ADICAO)) {
|
|
226
|
+
const operador = this.simboloAnterior();
|
|
227
|
+
const direito = this.multiplicar();
|
|
228
|
+
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
229
|
+
}
|
|
230
|
+
return expressao;
|
|
231
|
+
}
|
|
232
|
+
bitShift() {
|
|
233
|
+
let expressao = this.adicionar();
|
|
234
|
+
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.MENOR_MENOR, egua_classico_1.default.MAIOR_MAIOR)) {
|
|
235
|
+
const operador = this.simboloAnterior();
|
|
236
|
+
const direito = this.adicionar();
|
|
237
|
+
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
238
|
+
}
|
|
239
|
+
return expressao;
|
|
240
|
+
}
|
|
241
|
+
bitE() {
|
|
242
|
+
let expressao = this.bitShift();
|
|
243
|
+
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.BIT_AND)) {
|
|
244
|
+
const operador = this.simboloAnterior();
|
|
245
|
+
const direito = this.bitShift();
|
|
246
|
+
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
247
|
+
}
|
|
248
|
+
return expressao;
|
|
249
|
+
}
|
|
250
|
+
bitOu() {
|
|
251
|
+
let expressao = this.bitE();
|
|
252
|
+
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.BIT_OR, egua_classico_1.default.BIT_XOR)) {
|
|
253
|
+
const operador = this.simboloAnterior();
|
|
254
|
+
const direito = this.bitE();
|
|
255
|
+
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
256
|
+
}
|
|
257
|
+
return expressao;
|
|
258
|
+
}
|
|
259
|
+
comparar() {
|
|
260
|
+
let expressao = this.bitOu();
|
|
261
|
+
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.MAIOR, egua_classico_1.default.MAIOR_IGUAL, egua_classico_1.default.MENOR, egua_classico_1.default.MENOR_IGUAL)) {
|
|
262
|
+
const operador = this.simboloAnterior();
|
|
263
|
+
const direito = this.bitOu();
|
|
264
|
+
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
265
|
+
}
|
|
266
|
+
return expressao;
|
|
267
|
+
}
|
|
268
|
+
comparacaoIgualdade() {
|
|
269
|
+
let expressao = this.comparar();
|
|
270
|
+
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.DIFERENTE, egua_classico_1.default.IGUAL_IGUAL)) {
|
|
271
|
+
const operador = this.simboloAnterior();
|
|
272
|
+
const direito = this.comparar();
|
|
273
|
+
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
274
|
+
}
|
|
275
|
+
return expressao;
|
|
276
|
+
}
|
|
277
|
+
em() {
|
|
278
|
+
let expressao = this.comparacaoIgualdade();
|
|
279
|
+
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.EM)) {
|
|
280
|
+
const operador = this.simboloAnterior();
|
|
281
|
+
const direito = this.comparacaoIgualdade();
|
|
282
|
+
expressao = new construtos_1.Logico(this.hashArquivo, expressao, operador, direito);
|
|
283
|
+
}
|
|
284
|
+
return expressao;
|
|
285
|
+
}
|
|
286
|
+
e() {
|
|
287
|
+
let expressao = this.em();
|
|
288
|
+
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.E)) {
|
|
289
|
+
const operador = this.simboloAnterior();
|
|
290
|
+
const direito = this.em();
|
|
291
|
+
expressao = new construtos_1.Logico(this.hashArquivo, expressao, operador, direito);
|
|
292
|
+
}
|
|
293
|
+
return expressao;
|
|
294
|
+
}
|
|
295
|
+
ou() {
|
|
296
|
+
let expressao = this.e();
|
|
297
|
+
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.OU)) {
|
|
298
|
+
const operador = this.simboloAnterior();
|
|
299
|
+
const direito = this.e();
|
|
300
|
+
expressao = new construtos_1.Logico(this.hashArquivo, expressao, operador, direito);
|
|
301
|
+
}
|
|
302
|
+
return expressao;
|
|
303
|
+
}
|
|
304
|
+
atribuir() {
|
|
305
|
+
const expressao = this.ou();
|
|
306
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.IGUAL)) {
|
|
307
|
+
const igual = this.simboloAnterior();
|
|
308
|
+
const valor = this.atribuir();
|
|
309
|
+
if (expressao instanceof construtos_1.Variavel) {
|
|
310
|
+
const simbolo = expressao.simbolo;
|
|
311
|
+
return new construtos_1.Atribuir(this.hashArquivo, simbolo, valor);
|
|
312
|
+
}
|
|
313
|
+
else if (expressao instanceof construtos_1.AcessoMetodoOuPropriedade) {
|
|
314
|
+
const get = expressao;
|
|
315
|
+
return new construtos_1.DefinirValor(this.hashArquivo, 0, get.objeto, get.simbolo, valor);
|
|
316
|
+
}
|
|
317
|
+
else if (expressao instanceof construtos_1.AcessoIndiceVariavel) {
|
|
318
|
+
return new construtos_1.AtribuicaoPorIndice(this.hashArquivo, 0, expressao.entidadeChamada, expressao.indice, valor);
|
|
319
|
+
}
|
|
320
|
+
this.erro(igual, 'Tarefa de atribuição inválida');
|
|
321
|
+
}
|
|
322
|
+
return expressao;
|
|
323
|
+
}
|
|
324
|
+
expressao() {
|
|
325
|
+
return this.atribuir();
|
|
326
|
+
}
|
|
327
|
+
declaracaoEscreva() {
|
|
328
|
+
const simboloAtual = this.simboloAtual();
|
|
329
|
+
this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '(' antes dos valores em escreva.");
|
|
330
|
+
const valor = this.expressao();
|
|
331
|
+
this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após os valores em escreva.");
|
|
332
|
+
this.consumir(egua_classico_1.default.PONTO_E_VIRGULA, "Esperado ';' após o valor.");
|
|
333
|
+
return new declaracoes_1.Escreva(Number(simboloAtual.linha), simboloAtual.hashArquivo, [valor]);
|
|
334
|
+
}
|
|
335
|
+
declaracaoExpressao() {
|
|
336
|
+
const expressao = this.expressao();
|
|
337
|
+
this.consumir(egua_classico_1.default.PONTO_E_VIRGULA, "Esperado ';' após expressão.");
|
|
338
|
+
return new declaracoes_1.Expressao(expressao);
|
|
339
|
+
}
|
|
340
|
+
blocoEscopo() {
|
|
341
|
+
const declaracoes = [];
|
|
342
|
+
while (!this.verificarTipoSimboloAtual(egua_classico_1.default.CHAVE_DIREITA) && !this.estaNoFinal()) {
|
|
343
|
+
declaracoes.push(this.resolverDeclaracaoForaDeBloco());
|
|
344
|
+
}
|
|
345
|
+
this.consumir(egua_classico_1.default.CHAVE_DIREITA, "Esperado '}' após o bloco.");
|
|
346
|
+
return declaracoes;
|
|
347
|
+
}
|
|
348
|
+
declaracaoSe() {
|
|
349
|
+
this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'se'.");
|
|
350
|
+
const condicao = this.expressao();
|
|
351
|
+
this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após condição do se.");
|
|
352
|
+
const caminhoEntao = this.resolverDeclaracao();
|
|
353
|
+
const caminhosSeSenao = [];
|
|
354
|
+
while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.SENÃOSE)) {
|
|
355
|
+
this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'senãose'.");
|
|
356
|
+
const condicaoSeSenao = this.expressao();
|
|
357
|
+
this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' apóes codição do 'senãose.");
|
|
358
|
+
const caminho = this.resolverDeclaracao();
|
|
359
|
+
caminhosSeSenao.push({
|
|
360
|
+
condicao: condicaoSeSenao,
|
|
361
|
+
caminho: caminho,
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
let caminhoSenao = null;
|
|
365
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.SENÃO)) {
|
|
366
|
+
caminhoSenao = this.resolverDeclaracao();
|
|
367
|
+
}
|
|
368
|
+
return new declaracoes_1.Se(condicao, caminhoEntao, caminhosSeSenao, caminhoSenao);
|
|
369
|
+
}
|
|
370
|
+
declaracaoEnquanto() {
|
|
371
|
+
try {
|
|
372
|
+
this.blocos += 1;
|
|
373
|
+
this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'enquanto'.");
|
|
374
|
+
const condicao = this.expressao();
|
|
375
|
+
this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após condicional.");
|
|
376
|
+
const corpo = this.resolverDeclaracao();
|
|
377
|
+
return new declaracoes_1.Enquanto(condicao, corpo);
|
|
378
|
+
}
|
|
379
|
+
finally {
|
|
380
|
+
this.blocos -= 1;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
declaracaoPara() {
|
|
384
|
+
try {
|
|
385
|
+
const simboloPara = this.simboloAnterior();
|
|
386
|
+
this.blocos += 1;
|
|
387
|
+
this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'para'.");
|
|
388
|
+
let inicializador;
|
|
389
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.PONTO_E_VIRGULA)) {
|
|
390
|
+
inicializador = null;
|
|
391
|
+
}
|
|
392
|
+
else if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.VARIAVEL)) {
|
|
393
|
+
inicializador = this.declaracaoDeVariavel();
|
|
394
|
+
}
|
|
395
|
+
else {
|
|
396
|
+
inicializador = this.declaracaoExpressao();
|
|
397
|
+
}
|
|
398
|
+
let condicao = null;
|
|
399
|
+
if (!this.verificarTipoSimboloAtual(egua_classico_1.default.PONTO_E_VIRGULA)) {
|
|
400
|
+
condicao = this.expressao();
|
|
401
|
+
}
|
|
402
|
+
this.consumir(egua_classico_1.default.PONTO_E_VIRGULA, "Esperado ';' após valores da condicional");
|
|
403
|
+
let incrementar = null;
|
|
404
|
+
if (!this.verificarTipoSimboloAtual(egua_classico_1.default.PARENTESE_DIREITO)) {
|
|
405
|
+
incrementar = this.expressao();
|
|
406
|
+
}
|
|
407
|
+
this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após cláusulas");
|
|
408
|
+
const corpo = this.resolverDeclaracao();
|
|
409
|
+
return new declaracoes_1.Para(this.hashArquivo, Number(simboloPara.linha), inicializador, condicao, incrementar, corpo);
|
|
410
|
+
}
|
|
411
|
+
finally {
|
|
412
|
+
this.blocos -= 1;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
declaracaoSustar() {
|
|
416
|
+
if (this.blocos < 1) {
|
|
417
|
+
this.erro(this.simboloAnterior(), "'pausa' deve estar dentro de um loop.");
|
|
418
|
+
}
|
|
419
|
+
this.consumir(egua_classico_1.default.PONTO_E_VIRGULA, "Esperado ';' após 'pausa'.");
|
|
420
|
+
return new declaracoes_1.Sustar(this.simboloAtual());
|
|
421
|
+
}
|
|
422
|
+
declaracaoContinua() {
|
|
423
|
+
if (this.blocos < 1) {
|
|
424
|
+
this.erro(this.simboloAnterior(), "'continua' precisa estar em um laço de repetição.");
|
|
425
|
+
}
|
|
426
|
+
this.consumir(egua_classico_1.default.PONTO_E_VIRGULA, "Esperado ';' após 'continua'.");
|
|
427
|
+
return new declaracoes_1.Continua(this.simboloAtual());
|
|
428
|
+
}
|
|
429
|
+
declaracaoRetorna() {
|
|
430
|
+
const palavraChave = this.simboloAnterior();
|
|
431
|
+
let valor = null;
|
|
432
|
+
if (!this.verificarTipoSimboloAtual(egua_classico_1.default.PONTO_E_VIRGULA)) {
|
|
433
|
+
valor = this.expressao();
|
|
434
|
+
}
|
|
435
|
+
this.consumir(egua_classico_1.default.PONTO_E_VIRGULA, "Esperado ';' após o retorno.");
|
|
436
|
+
return new declaracoes_1.Retorna(palavraChave, valor);
|
|
437
|
+
}
|
|
438
|
+
declaracaoEscolha() {
|
|
439
|
+
try {
|
|
440
|
+
this.blocos += 1;
|
|
441
|
+
this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '{' após 'escolha'.");
|
|
442
|
+
const condicao = this.expressao();
|
|
443
|
+
this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado '}' após a condição de 'escolha'.");
|
|
444
|
+
this.consumir(egua_classico_1.default.CHAVE_ESQUERDA, "Esperado '{' antes do escopo do 'escolha'.");
|
|
445
|
+
const caminhos = [];
|
|
446
|
+
let caminhoPadrao = null;
|
|
447
|
+
while (!this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CHAVE_DIREITA) && !this.estaNoFinal()) {
|
|
448
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CASO)) {
|
|
449
|
+
const caminhoCondicoes = [this.expressao()];
|
|
450
|
+
this.consumir(egua_classico_1.default.DOIS_PONTOS, "Esperado ':' após o 'caso'.");
|
|
451
|
+
while (this.verificarTipoSimboloAtual(egua_classico_1.default.CASO)) {
|
|
452
|
+
this.consumir(egua_classico_1.default.CASO, null);
|
|
453
|
+
caminhoCondicoes.push(this.expressao());
|
|
454
|
+
this.consumir(egua_classico_1.default.DOIS_PONTOS, "Esperado ':' após declaração do 'caso'.");
|
|
455
|
+
}
|
|
456
|
+
const declaracoes = [];
|
|
457
|
+
do {
|
|
458
|
+
declaracoes.push(this.resolverDeclaracao());
|
|
459
|
+
} while (!this.verificarTipoSimboloAtual(egua_classico_1.default.CASO) &&
|
|
460
|
+
!this.verificarTipoSimboloAtual(egua_classico_1.default.PADRAO) &&
|
|
461
|
+
!this.verificarTipoSimboloAtual(egua_classico_1.default.CHAVE_DIREITA));
|
|
462
|
+
caminhos.push({
|
|
463
|
+
condicoes: caminhoCondicoes,
|
|
464
|
+
declaracoes,
|
|
465
|
+
});
|
|
466
|
+
}
|
|
467
|
+
else if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.PADRAO)) {
|
|
468
|
+
if (caminhoPadrao !== null) {
|
|
469
|
+
const excecao = new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(this.simboloAtual(), "Você só pode ter um 'padrao' em cada declaração de 'escolha'.");
|
|
470
|
+
this.erros.push(excecao);
|
|
471
|
+
throw excecao;
|
|
472
|
+
}
|
|
473
|
+
this.consumir(egua_classico_1.default.DOIS_PONTOS, "Esperado ':' após declaração do 'padrao'.");
|
|
474
|
+
const declaracoes = [];
|
|
475
|
+
do {
|
|
476
|
+
declaracoes.push(this.resolverDeclaracao());
|
|
477
|
+
} while (!this.verificarTipoSimboloAtual(egua_classico_1.default.CASO) &&
|
|
478
|
+
!this.verificarTipoSimboloAtual(egua_classico_1.default.PADRAO) &&
|
|
479
|
+
!this.verificarTipoSimboloAtual(egua_classico_1.default.CHAVE_DIREITA));
|
|
480
|
+
caminhoPadrao = {
|
|
481
|
+
declaracoes,
|
|
482
|
+
};
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
return new declaracoes_1.Escolha(condicao, caminhos, caminhoPadrao);
|
|
486
|
+
}
|
|
487
|
+
finally {
|
|
488
|
+
this.blocos -= 1;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
declaracaoImportar() {
|
|
492
|
+
this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '(' após declaração.");
|
|
493
|
+
const caminho = this.expressao();
|
|
494
|
+
const simboloFechamento = this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após declaração.");
|
|
495
|
+
return new declaracoes_1.Importar(caminho, simboloFechamento);
|
|
496
|
+
}
|
|
497
|
+
declaracaoTente() {
|
|
498
|
+
this.consumir(egua_classico_1.default.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'tente'.");
|
|
499
|
+
const tryBlock = this.blocoEscopo();
|
|
500
|
+
let catchBlock = null;
|
|
501
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.PEGUE)) {
|
|
502
|
+
this.consumir(egua_classico_1.default.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'pegue'.");
|
|
503
|
+
catchBlock = this.blocoEscopo();
|
|
504
|
+
}
|
|
505
|
+
let elseBlock = null;
|
|
506
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.SENÃO)) {
|
|
507
|
+
this.consumir(egua_classico_1.default.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'pegue'.");
|
|
508
|
+
elseBlock = this.blocoEscopo();
|
|
509
|
+
}
|
|
510
|
+
let finallyBlock = null;
|
|
511
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.FINALMENTE)) {
|
|
512
|
+
this.consumir(egua_classico_1.default.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'pegue'.");
|
|
513
|
+
finallyBlock = this.blocoEscopo();
|
|
514
|
+
}
|
|
515
|
+
return new declaracoes_1.Tente(0, 0, tryBlock, catchBlock, elseBlock, finallyBlock);
|
|
516
|
+
}
|
|
517
|
+
declaracaoFazer() {
|
|
518
|
+
try {
|
|
519
|
+
this.blocos += 1;
|
|
520
|
+
const caminhoFazer = this.resolverDeclaracao();
|
|
521
|
+
this.consumir(egua_classico_1.default.ENQUANTO, "Esperado declaração do 'enquanto' após o escopo do 'fazer'.");
|
|
522
|
+
this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '(' após declaração 'enquanto'.");
|
|
523
|
+
const condicaoEnquanto = this.expressao();
|
|
524
|
+
this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após declaração do 'enquanto'.");
|
|
525
|
+
return new declaracoes_1.Fazer(0, 0, caminhoFazer, condicaoEnquanto);
|
|
526
|
+
}
|
|
527
|
+
finally {
|
|
528
|
+
this.blocos -= 1;
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
resolverDeclaracao() {
|
|
532
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.FAZER))
|
|
533
|
+
return this.declaracaoFazer();
|
|
534
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.TENTE))
|
|
535
|
+
return this.declaracaoTente();
|
|
536
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.ESCOLHA))
|
|
537
|
+
return this.declaracaoEscolha();
|
|
538
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.RETORNA))
|
|
539
|
+
return this.declaracaoRetorna();
|
|
540
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CONTINUA))
|
|
541
|
+
return this.declaracaoContinua();
|
|
542
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.PAUSA))
|
|
543
|
+
return this.declaracaoSustar();
|
|
544
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.PARA))
|
|
545
|
+
return this.declaracaoPara();
|
|
546
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.ENQUANTO))
|
|
547
|
+
return this.declaracaoEnquanto();
|
|
548
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.SE))
|
|
549
|
+
return this.declaracaoSe();
|
|
550
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.ESCREVA))
|
|
551
|
+
return this.declaracaoEscreva();
|
|
552
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CHAVE_ESQUERDA))
|
|
553
|
+
return new declaracoes_1.Bloco(0, 0, this.blocoEscopo());
|
|
554
|
+
return this.declaracaoExpressao();
|
|
555
|
+
}
|
|
556
|
+
declaracaoDeVariavel() {
|
|
557
|
+
const nome = this.consumir(egua_classico_1.default.IDENTIFICADOR, 'Esperado nome de variável.');
|
|
558
|
+
let inicializador = null;
|
|
559
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.IGUAL)) {
|
|
560
|
+
inicializador = this.expressao();
|
|
561
|
+
}
|
|
562
|
+
this.consumir(egua_classico_1.default.PONTO_E_VIRGULA, "Esperado ';' após a declaração da variável.");
|
|
563
|
+
return new declaracoes_1.Var(nome, inicializador);
|
|
564
|
+
}
|
|
565
|
+
funcao(kind) {
|
|
566
|
+
const nome = this.consumir(egua_classico_1.default.IDENTIFICADOR, `Esperado nome ${kind}.`);
|
|
567
|
+
return new declaracoes_1.FuncaoDeclaracao(nome, this.corpoDaFuncao(kind));
|
|
568
|
+
}
|
|
569
|
+
corpoDaFuncao(kind) {
|
|
570
|
+
this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, `Esperado '(' após o nome ${kind}.`);
|
|
571
|
+
const parametros = [];
|
|
572
|
+
if (!this.verificarTipoSimboloAtual(egua_classico_1.default.PARENTESE_DIREITO)) {
|
|
573
|
+
do {
|
|
574
|
+
if (parametros.length >= 255) {
|
|
575
|
+
this.erro(this.simboloAtual(), 'Não pode haver mais de 255 parâmetros');
|
|
576
|
+
}
|
|
577
|
+
const parametro = {};
|
|
578
|
+
if (this.simboloAtual().tipo === egua_classico_1.default.MULTIPLICACAO) {
|
|
579
|
+
this.consumir(egua_classico_1.default.MULTIPLICACAO, null);
|
|
580
|
+
parametro['tipo'] = 'multiplo';
|
|
581
|
+
}
|
|
582
|
+
else {
|
|
583
|
+
parametro['tipo'] = 'padrao';
|
|
584
|
+
}
|
|
585
|
+
parametro['nome'] = this.consumir(egua_classico_1.default.IDENTIFICADOR, 'Esperado nome do parâmetro.');
|
|
586
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.IGUAL)) {
|
|
587
|
+
parametro['padrao'] = this.primario();
|
|
588
|
+
}
|
|
589
|
+
parametros.push(parametro);
|
|
590
|
+
if (parametro['tipo'] === 'multiplo')
|
|
591
|
+
break;
|
|
592
|
+
} while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.VIRGULA));
|
|
593
|
+
}
|
|
594
|
+
this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após parâmetros.");
|
|
595
|
+
this.consumir(egua_classico_1.default.CHAVE_ESQUERDA, `Esperado '{' antes do escopo do ${kind}.`);
|
|
596
|
+
const corpo = this.blocoEscopo();
|
|
597
|
+
return new construtos_1.FuncaoConstruto(this.hashArquivo, 0, parametros, corpo);
|
|
598
|
+
}
|
|
599
|
+
declaracaoDeClasse() {
|
|
600
|
+
const nome = this.consumir(egua_classico_1.default.IDENTIFICADOR, 'Esperado nome da classe.');
|
|
601
|
+
let superClasse = null;
|
|
602
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.HERDA)) {
|
|
603
|
+
this.consumir(egua_classico_1.default.IDENTIFICADOR, 'Esperado nome da Superclasse.');
|
|
604
|
+
superClasse = new construtos_1.Variavel(this.hashArquivo, this.simboloAnterior());
|
|
605
|
+
}
|
|
606
|
+
this.consumir(egua_classico_1.default.CHAVE_ESQUERDA, "Esperado '{' antes do escopo da classe.");
|
|
607
|
+
const metodos = [];
|
|
608
|
+
while (!this.verificarTipoSimboloAtual(egua_classico_1.default.CHAVE_DIREITA) && !this.estaNoFinal()) {
|
|
609
|
+
metodos.push(this.funcao('método'));
|
|
610
|
+
}
|
|
611
|
+
this.consumir(egua_classico_1.default.CHAVE_DIREITA, "Esperado '}' após o escopo da classe.");
|
|
612
|
+
return new declaracoes_1.Classe(nome, superClasse, metodos);
|
|
613
|
+
}
|
|
614
|
+
resolverDeclaracaoForaDeBloco() {
|
|
615
|
+
try {
|
|
616
|
+
if (this.verificarTipoSimboloAtual(egua_classico_1.default.FUNCAO) &&
|
|
617
|
+
this.verificarTipoProximoSimbolo(egua_classico_1.default.IDENTIFICADOR)) {
|
|
618
|
+
this.consumir(egua_classico_1.default.FUNCAO, null);
|
|
619
|
+
return this.funcao('função');
|
|
620
|
+
}
|
|
621
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.VARIAVEL))
|
|
622
|
+
return this.declaracaoDeVariavel();
|
|
623
|
+
if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CLASSE))
|
|
624
|
+
return this.declaracaoDeClasse();
|
|
625
|
+
return this.resolverDeclaracao();
|
|
626
|
+
}
|
|
627
|
+
catch (erro) {
|
|
628
|
+
this.sincronizar();
|
|
629
|
+
return null;
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
analisar(retornoLexador, hashArquivo) {
|
|
633
|
+
this.erros = [];
|
|
634
|
+
this.atual = 0;
|
|
635
|
+
this.blocos = 0;
|
|
636
|
+
this.hashArquivo = hashArquivo || 0;
|
|
637
|
+
this.simbolos = (retornoLexador === null || retornoLexador === void 0 ? void 0 : retornoLexador.simbolos) || [];
|
|
638
|
+
const declaracoes = [];
|
|
639
|
+
while (!this.estaNoFinal()) {
|
|
640
|
+
declaracoes.push(this.resolverDeclaracaoForaDeBloco());
|
|
641
|
+
}
|
|
642
|
+
return {
|
|
643
|
+
declaracoes: declaracoes,
|
|
644
|
+
erros: this.erros,
|
|
645
|
+
};
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
exports.AvaliadorSintaticoEguaClassico = AvaliadorSintaticoEguaClassico;
|
|
649
649
|
//# sourceMappingURL=avaliador-sintatico-egua-classico.js.map
|