@designliquido/delegua 0.51.0 → 0.52.0
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/avaliador-sintatico/avaliador-sintatico-base.d.ts +1 -1
- package/avaliador-sintatico/avaliador-sintatico-base.d.ts.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico-base.js +4 -4
- package/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.d.ts +2 -6
- package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.js +4 -54
- package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/avaliador-sintatico/comum.d.ts +4 -1
- package/avaliador-sintatico/comum.d.ts.map +1 -1
- package/avaliador-sintatico/comum.js +88 -0
- package/avaliador-sintatico/comum.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-calango.d.ts +33 -0
- package/avaliador-sintatico/dialetos/avaliador-sintatico-calango.d.ts.map +1 -0
- package/avaliador-sintatico/dialetos/avaliador-sintatico-calango.js +231 -0
- package/avaliador-sintatico/dialetos/avaliador-sintatico-calango.js.map +1 -0
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts +1 -0
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +180 -140
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.d.ts +1 -2
- package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.d.ts.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.js.map +1 -1
- package/avaliador-sintatico/traducao/avaliador-sintatico-javascript.d.ts +1 -1
- package/avaliador-sintatico/traducao/avaliador-sintatico-javascript.d.ts.map +1 -1
- package/avaliador-sintatico/traducao/avaliador-sintatico-javascript.js.map +1 -1
- package/bibliotecas/biblioteca-global.d.ts.map +1 -1
- package/bibliotecas/biblioteca-global.js +18 -6
- package/bibliotecas/biblioteca-global.js.map +1 -1
- package/bibliotecas/primitivas-vetor.d.ts.map +1 -1
- package/bibliotecas/primitivas-vetor.js +6 -3
- package/bibliotecas/primitivas-vetor.js.map +1 -1
- package/bin/package.json +1 -1
- package/construtos/acesso-elemento-matriz.d.ts +4 -3
- package/construtos/acesso-elemento-matriz.d.ts.map +1 -1
- package/construtos/acesso-elemento-matriz.js +6 -0
- package/construtos/acesso-elemento-matriz.js.map +1 -1
- package/construtos/acesso-indice-variavel.d.ts +1 -0
- package/construtos/acesso-indice-variavel.d.ts.map +1 -1
- package/construtos/acesso-indice-variavel.js +5 -0
- package/construtos/acesso-indice-variavel.js.map +1 -1
- package/construtos/acesso-metodo-ou-propriedade.d.ts +1 -0
- package/construtos/acesso-metodo-ou-propriedade.d.ts.map +1 -1
- package/construtos/acesso-metodo-ou-propriedade.js +5 -0
- package/construtos/acesso-metodo-ou-propriedade.js.map +1 -1
- package/construtos/acesso-metodo.d.ts +1 -0
- package/construtos/acesso-metodo.d.ts.map +1 -1
- package/construtos/acesso-metodo.js +3 -0
- package/construtos/acesso-metodo.js.map +1 -1
- package/construtos/acesso-propriedade.d.ts +1 -0
- package/construtos/acesso-propriedade.d.ts.map +1 -1
- package/construtos/acesso-propriedade.js +3 -0
- package/construtos/acesso-propriedade.js.map +1 -1
- package/construtos/agrupamento.d.ts +1 -0
- package/construtos/agrupamento.d.ts.map +1 -1
- package/construtos/agrupamento.js +3 -0
- package/construtos/agrupamento.js.map +1 -1
- package/construtos/argumento-referencia-funcao.d.ts +1 -0
- package/construtos/argumento-referencia-funcao.d.ts.map +1 -1
- package/construtos/argumento-referencia-funcao.js +3 -0
- package/construtos/argumento-referencia-funcao.js.map +1 -1
- package/construtos/atribuicao-por-indice.d.ts +1 -0
- package/construtos/atribuicao-por-indice.d.ts.map +1 -1
- package/construtos/atribuicao-por-indice.js +6 -0
- package/construtos/atribuicao-por-indice.js.map +1 -1
- package/construtos/atribuicao-por-indices-matriz.d.ts +6 -5
- package/construtos/atribuicao-por-indices-matriz.d.ts.map +1 -1
- package/construtos/atribuicao-por-indices-matriz.js +7 -0
- package/construtos/atribuicao-por-indices-matriz.js.map +1 -1
- package/construtos/atribuir.d.ts +3 -2
- package/construtos/atribuir.d.ts.map +1 -1
- package/construtos/atribuir.js +7 -0
- package/construtos/atribuir.js.map +1 -1
- package/construtos/binario.d.ts +1 -0
- package/construtos/binario.d.ts.map +1 -1
- package/construtos/binario.js +6 -0
- package/construtos/binario.js.map +1 -1
- package/construtos/chamada.d.ts +1 -0
- package/construtos/chamada.d.ts.map +1 -1
- package/construtos/chamada.js +4 -0
- package/construtos/chamada.js.map +1 -1
- package/construtos/comentario-como-construto.d.ts +1 -0
- package/construtos/comentario-como-construto.d.ts.map +1 -1
- package/construtos/comentario-como-construto.js +3 -0
- package/construtos/comentario-como-construto.js.map +1 -1
- package/construtos/componente-linguagem.d.ts +1 -0
- package/construtos/componente-linguagem.d.ts.map +1 -1
- package/construtos/componente-linguagem.js +3 -0
- package/construtos/componente-linguagem.js.map +1 -1
- package/construtos/constante.d.ts +1 -0
- package/construtos/constante.d.ts.map +1 -1
- package/construtos/constante.js +3 -0
- package/construtos/constante.js.map +1 -1
- package/construtos/construto.d.ts +1 -0
- package/construtos/construto.d.ts.map +1 -1
- package/construtos/decorador.d.ts +1 -0
- package/construtos/decorador.d.ts.map +1 -1
- package/construtos/decorador.js +4 -0
- package/construtos/decorador.js.map +1 -1
- package/construtos/definir-valor.d.ts +1 -0
- package/construtos/definir-valor.d.ts.map +1 -1
- package/construtos/definir-valor.js +3 -0
- package/construtos/definir-valor.js.map +1 -1
- package/construtos/dicionario.d.ts +1 -0
- package/construtos/dicionario.d.ts.map +1 -1
- package/construtos/dicionario.js +3 -0
- package/construtos/dicionario.js.map +1 -1
- package/construtos/expressao-regular.d.ts +1 -0
- package/construtos/expressao-regular.d.ts.map +1 -1
- package/construtos/expressao-regular.js +3 -0
- package/construtos/expressao-regular.js.map +1 -1
- package/construtos/fim-para.d.ts +1 -0
- package/construtos/fim-para.d.ts.map +1 -1
- package/construtos/fim-para.js +3 -0
- package/construtos/fim-para.js.map +1 -1
- package/construtos/formatacao-escrita.d.ts +1 -0
- package/construtos/formatacao-escrita.d.ts.map +1 -1
- package/construtos/formatacao-escrita.js +3 -0
- package/construtos/formatacao-escrita.js.map +1 -1
- package/construtos/funcao.d.ts +1 -0
- package/construtos/funcao.d.ts.map +1 -1
- package/construtos/funcao.js +4 -0
- package/construtos/funcao.js.map +1 -1
- package/construtos/index.d.ts +1 -0
- package/construtos/index.d.ts.map +1 -1
- package/construtos/index.js +1 -0
- package/construtos/index.js.map +1 -1
- package/construtos/isto.d.ts +1 -0
- package/construtos/isto.d.ts.map +1 -1
- package/construtos/isto.js +3 -0
- package/construtos/isto.js.map +1 -1
- package/construtos/leia.d.ts +1 -0
- package/construtos/leia.d.ts.map +1 -1
- package/construtos/leia.js +3 -0
- package/construtos/leia.js.map +1 -1
- package/construtos/literal.d.ts +1 -0
- package/construtos/literal.d.ts.map +1 -1
- package/construtos/literal.js +3 -0
- package/construtos/literal.js.map +1 -1
- package/construtos/logico.d.ts +1 -0
- package/construtos/logico.d.ts.map +1 -1
- package/construtos/logico.js +5 -0
- package/construtos/logico.js.map +1 -1
- package/construtos/referencia-biblioteca-global.d.ts +1 -0
- package/construtos/referencia-biblioteca-global.d.ts.map +1 -1
- package/construtos/referencia-biblioteca-global.js +3 -0
- package/construtos/referencia-biblioteca-global.js.map +1 -1
- package/construtos/referencia-funcao.d.ts +1 -0
- package/construtos/referencia-funcao.d.ts.map +1 -1
- package/construtos/referencia-funcao.js +3 -0
- package/construtos/referencia-funcao.js.map +1 -1
- package/construtos/separador.d.ts +1 -0
- package/construtos/separador.d.ts.map +1 -1
- package/construtos/separador.js +3 -0
- package/construtos/separador.js.map +1 -1
- package/construtos/super.d.ts +1 -0
- package/construtos/super.d.ts.map +1 -1
- package/construtos/super.js +3 -0
- package/construtos/super.js.map +1 -1
- package/construtos/tipo-de.d.ts +1 -0
- package/construtos/tipo-de.d.ts.map +1 -1
- package/construtos/tipo-de.js +3 -0
- package/construtos/tipo-de.js.map +1 -1
- package/construtos/tupla.d.ts +11 -0
- package/construtos/tupla.d.ts.map +1 -0
- package/construtos/tupla.js.map +1 -0
- package/construtos/tuplas/deceto.d.ts +14 -12
- package/construtos/tuplas/deceto.d.ts.map +1 -1
- package/construtos/tuplas/deceto.js +15 -1
- package/construtos/tuplas/deceto.js.map +1 -1
- package/construtos/tuplas/dupla.d.ts +6 -4
- package/construtos/tuplas/dupla.d.ts.map +1 -1
- package/construtos/tuplas/dupla.js +6 -1
- package/construtos/tuplas/dupla.js.map +1 -1
- package/construtos/tuplas/index.d.ts +0 -1
- package/construtos/tuplas/index.d.ts.map +1 -1
- package/construtos/tuplas/index.js +0 -1
- package/construtos/tuplas/index.js.map +1 -1
- package/construtos/tuplas/noneto.d.ts +13 -11
- package/construtos/tuplas/noneto.d.ts.map +1 -1
- package/construtos/tuplas/noneto.js +13 -1
- package/construtos/tuplas/noneto.js.map +1 -1
- package/construtos/tuplas/octeto.d.ts +12 -10
- package/construtos/tuplas/octeto.d.ts.map +1 -1
- package/construtos/tuplas/octeto.js +12 -1
- package/construtos/tuplas/octeto.js.map +1 -1
- package/construtos/tuplas/quarteto.d.ts +8 -6
- package/construtos/tuplas/quarteto.d.ts.map +1 -1
- package/construtos/tuplas/quarteto.js +8 -1
- package/construtos/tuplas/quarteto.js.map +1 -1
- package/construtos/tuplas/quinteto.d.ts +9 -7
- package/construtos/tuplas/quinteto.d.ts.map +1 -1
- package/construtos/tuplas/quinteto.js +9 -1
- package/construtos/tuplas/quinteto.js.map +1 -1
- package/construtos/tuplas/septeto.d.ts +11 -9
- package/construtos/tuplas/septeto.d.ts.map +1 -1
- package/construtos/tuplas/septeto.js +11 -1
- package/construtos/tuplas/septeto.js.map +1 -1
- package/construtos/tuplas/sexteto.d.ts +10 -8
- package/construtos/tuplas/sexteto.d.ts.map +1 -1
- package/construtos/tuplas/sexteto.js +10 -1
- package/construtos/tuplas/sexteto.js.map +1 -1
- package/construtos/tuplas/trio.d.ts +7 -5
- package/construtos/tuplas/trio.d.ts.map +1 -1
- package/construtos/tuplas/trio.js +7 -1
- package/construtos/tuplas/trio.js.map +1 -1
- package/construtos/unario.d.ts +2 -1
- package/construtos/unario.d.ts.map +1 -1
- package/construtos/unario.js +3 -0
- package/construtos/unario.js.map +1 -1
- package/construtos/variavel.d.ts +1 -0
- package/construtos/variavel.d.ts.map +1 -1
- package/construtos/variavel.js +3 -0
- package/construtos/variavel.js.map +1 -1
- package/construtos/vetor.d.ts +1 -0
- package/construtos/vetor.d.ts.map +1 -1
- package/construtos/vetor.js +3 -0
- package/construtos/vetor.js.map +1 -1
- package/declaracoes/aleatorio.d.ts +1 -0
- package/declaracoes/aleatorio.d.ts.map +1 -1
- package/declaracoes/aleatorio.js +4 -0
- package/declaracoes/aleatorio.js.map +1 -1
- package/declaracoes/bloco.d.ts +3 -2
- package/declaracoes/bloco.d.ts.map +1 -1
- package/declaracoes/bloco.js +8 -0
- package/declaracoes/bloco.js.map +1 -1
- package/declaracoes/cabecalho-programa.d.ts +4 -0
- package/declaracoes/cabecalho-programa.d.ts.map +1 -1
- package/declaracoes/cabecalho-programa.js +6 -0
- package/declaracoes/cabecalho-programa.js.map +1 -1
- package/declaracoes/classe.d.ts +1 -0
- package/declaracoes/classe.d.ts.map +1 -1
- package/declaracoes/classe.js +15 -0
- package/declaracoes/classe.js.map +1 -1
- package/declaracoes/comentario.d.ts +1 -0
- package/declaracoes/comentario.d.ts.map +1 -1
- package/declaracoes/comentario.js +3 -0
- package/declaracoes/comentario.js.map +1 -1
- package/declaracoes/const-multiplo.d.ts +1 -0
- package/declaracoes/const-multiplo.d.ts.map +1 -1
- package/declaracoes/const-multiplo.js +4 -0
- package/declaracoes/const-multiplo.js.map +1 -1
- package/declaracoes/const.d.ts +1 -0
- package/declaracoes/const.d.ts.map +1 -1
- package/declaracoes/const.js +3 -0
- package/declaracoes/const.js.map +1 -1
- package/declaracoes/continua.d.ts +1 -0
- package/declaracoes/continua.d.ts.map +1 -1
- package/declaracoes/continua.js +3 -0
- package/declaracoes/continua.js.map +1 -1
- package/declaracoes/declaracao.d.ts +3 -1
- package/declaracoes/declaracao.d.ts.map +1 -1
- package/declaracoes/declaracao.js +3 -0
- package/declaracoes/declaracao.js.map +1 -1
- package/declaracoes/enquanto.d.ts +1 -0
- package/declaracoes/enquanto.d.ts.map +1 -1
- package/declaracoes/enquanto.js +4 -0
- package/declaracoes/enquanto.js.map +1 -1
- package/declaracoes/escolha.d.ts +1 -0
- package/declaracoes/escolha.d.ts.map +1 -1
- package/declaracoes/escolha.js +4 -0
- package/declaracoes/escolha.js.map +1 -1
- package/declaracoes/escreva-mesma-linha.d.ts +1 -0
- package/declaracoes/escreva-mesma-linha.d.ts.map +1 -1
- package/declaracoes/escreva-mesma-linha.js +3 -0
- package/declaracoes/escreva-mesma-linha.js.map +1 -1
- package/declaracoes/escreva.d.ts +1 -0
- package/declaracoes/escreva.d.ts.map +1 -1
- package/declaracoes/escreva.js +3 -0
- package/declaracoes/escreva.js.map +1 -1
- package/declaracoes/expressao.d.ts +1 -0
- package/declaracoes/expressao.d.ts.map +1 -1
- package/declaracoes/expressao.js +3 -0
- package/declaracoes/expressao.js.map +1 -1
- package/declaracoes/falhar.d.ts +1 -0
- package/declaracoes/falhar.d.ts.map +1 -1
- package/declaracoes/falhar.js +3 -0
- package/declaracoes/falhar.js.map +1 -1
- package/declaracoes/fazer.d.ts +2 -1
- package/declaracoes/fazer.d.ts.map +1 -1
- package/declaracoes/fazer.js +4 -0
- package/declaracoes/fazer.js.map +1 -1
- package/declaracoes/funcao.d.ts +1 -0
- package/declaracoes/funcao.d.ts.map +1 -1
- package/declaracoes/funcao.js +4 -0
- package/declaracoes/funcao.js.map +1 -1
- package/declaracoes/importar.d.ts +1 -0
- package/declaracoes/importar.d.ts.map +1 -1
- package/declaracoes/importar.js +3 -0
- package/declaracoes/importar.js.map +1 -1
- package/declaracoes/inicio-algoritmo.d.ts +1 -0
- package/declaracoes/inicio-algoritmo.d.ts.map +1 -1
- package/declaracoes/inicio-algoritmo.js +5 -0
- package/declaracoes/inicio-algoritmo.js.map +1 -1
- package/declaracoes/para-cada.d.ts +1 -0
- package/declaracoes/para-cada.d.ts.map +1 -1
- package/declaracoes/para-cada.js +4 -0
- package/declaracoes/para-cada.js.map +1 -1
- package/declaracoes/para.d.ts +2 -1
- package/declaracoes/para.d.ts.map +1 -1
- package/declaracoes/para.js +11 -0
- package/declaracoes/para.js.map +1 -1
- package/declaracoes/propriedade-classe.d.ts +1 -0
- package/declaracoes/propriedade-classe.d.ts.map +1 -1
- package/declaracoes/propriedade-classe.js +3 -0
- package/declaracoes/propriedade-classe.js.map +1 -1
- package/declaracoes/retorna.d.ts +1 -0
- package/declaracoes/retorna.d.ts.map +1 -1
- package/declaracoes/retorna.js +3 -0
- package/declaracoes/retorna.js.map +1 -1
- package/declaracoes/se.d.ts +3 -2
- package/declaracoes/se.d.ts.map +1 -1
- package/declaracoes/se.js +4 -0
- package/declaracoes/se.js.map +1 -1
- package/declaracoes/sustar.d.ts +1 -0
- package/declaracoes/sustar.d.ts.map +1 -1
- package/declaracoes/sustar.js +3 -0
- package/declaracoes/sustar.js.map +1 -1
- package/declaracoes/tendo-como.d.ts +1 -0
- package/declaracoes/tendo-como.d.ts.map +1 -1
- package/declaracoes/tendo-como.js +4 -0
- package/declaracoes/tendo-como.js.map +1 -1
- package/declaracoes/tente.d.ts +3 -2
- package/declaracoes/tente.d.ts.map +1 -1
- package/declaracoes/tente.js +4 -0
- package/declaracoes/tente.js.map +1 -1
- package/declaracoes/var-multiplo.d.ts +1 -0
- package/declaracoes/var-multiplo.d.ts.map +1 -1
- package/declaracoes/var-multiplo.js +4 -0
- package/declaracoes/var-multiplo.js.map +1 -1
- package/declaracoes/var.d.ts +1 -0
- package/declaracoes/var.d.ts.map +1 -1
- package/declaracoes/var.js +3 -0
- package/declaracoes/var.js.map +1 -1
- package/interfaces/avaliador-sintatico-interface.d.ts +2 -0
- package/interfaces/avaliador-sintatico-interface.d.ts.map +1 -1
- package/interfaces/index.d.ts +1 -0
- package/interfaces/index.d.ts.map +1 -1
- package/interfaces/index.js +1 -0
- package/interfaces/index.js.map +1 -1
- package/interfaces/interpretador-interface.d.ts +3 -2
- package/interfaces/interpretador-interface.d.ts.map +1 -1
- package/interfaces/resultado-parcial-interpretador-interface.d.ts +8 -0
- package/interfaces/resultado-parcial-interpretador-interface.d.ts.map +1 -0
- package/interfaces/resultado-parcial-interpretador-interface.js +3 -0
- package/interfaces/resultado-parcial-interpretador-interface.js.map +1 -0
- package/interfaces/retornos/index.d.ts +1 -1
- package/interfaces/retornos/index.d.ts.map +1 -1
- package/interfaces/retornos/index.js +1 -1
- package/interfaces/retornos/index.js.map +1 -1
- package/interfaces/retornos/retorno-interpretador-interface.d.ts +7 -0
- package/interfaces/retornos/retorno-interpretador-interface.d.ts.map +1 -0
- package/interfaces/retornos/{retorno-interpretador.js → retorno-interpretador-interface.js} +1 -1
- package/interfaces/retornos/retorno-interpretador-interface.js.map +1 -0
- package/interfaces/variavel-interface.d.ts +2 -3
- package/interfaces/variavel-interface.d.ts.map +1 -1
- package/interpretador/depuracao/comum.d.ts.map +1 -1
- package/interpretador/depuracao/comum.js +2 -1
- package/interpretador/depuracao/comum.js.map +1 -1
- package/interpretador/depuracao/interpretador-base-com-depuracao.d.ts +2 -2
- package/interpretador/depuracao/interpretador-base-com-depuracao.d.ts.map +1 -1
- package/interpretador/depuracao/interpretador-base-com-depuracao.js.map +1 -1
- package/interpretador/depuracao/interpretador-com-depuracao.d.ts +2 -2
- package/interpretador/depuracao/interpretador-com-depuracao.d.ts.map +1 -1
- package/interpretador/depuracao/interpretador-com-depuracao.js.map +1 -1
- package/interpretador/dialetos/calango/interpretador-calango.d.ts +5 -0
- package/interpretador/dialetos/calango/interpretador-calango.d.ts.map +1 -0
- package/interpretador/dialetos/calango/interpretador-calango.js +8 -0
- package/interpretador/dialetos/calango/interpretador-calango.js.map +1 -0
- package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts +3 -3
- package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts.map +1 -1
- package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +1 -0
- package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js.map +1 -1
- package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts +3 -2
- package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts.map +1 -1
- package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js +3 -0
- package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js.map +1 -1
- package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts +5 -5
- package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts.map +1 -1
- package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js.map +1 -1
- package/interpretador/estruturas/classe-padrao.js +2 -2
- package/interpretador/estruturas/classe-padrao.js.map +1 -1
- package/interpretador/estruturas/delegua-funcao.js +3 -3
- package/interpretador/estruturas/delegua-funcao.js.map +1 -1
- package/interpretador/estruturas/descritor-tipo-classe.js +2 -2
- package/interpretador/estruturas/descritor-tipo-classe.js.map +1 -1
- package/interpretador/estruturas/funcao-padrao.js +1 -1
- package/interpretador/estruturas/funcao-padrao.js.map +1 -1
- package/interpretador/estruturas/metodo-primitiva.js +1 -1
- package/interpretador/estruturas/metodo-primitiva.js.map +1 -1
- package/interpretador/estruturas/modulo.js +1 -1
- package/interpretador/estruturas/modulo.js.map +1 -1
- package/interpretador/estruturas/objeto-delegua-classe.js +1 -1
- package/interpretador/estruturas/objeto-delegua-classe.js.map +1 -1
- package/interpretador/estruturas/objeto-padrao.js +1 -1
- package/interpretador/estruturas/objeto-padrao.js.map +1 -1
- package/interpretador/estruturas/referencia-montao.js +1 -1
- package/interpretador/estruturas/referencia-montao.js.map +1 -1
- package/interpretador/interpretador-base.d.ts +25 -13
- package/interpretador/interpretador-base.d.ts.map +1 -1
- package/interpretador/interpretador-base.js +125 -49
- package/interpretador/interpretador-base.js.map +1 -1
- package/interpretador/interpretador-com-depuracao.d.ts +2 -2
- package/interpretador/interpretador-com-depuracao.d.ts.map +1 -1
- package/interpretador/interpretador-com-depuracao.js +2 -1
- package/interpretador/interpretador-com-depuracao.js.map +1 -1
- package/interpretador/interpretador.d.ts +8 -6
- package/interpretador/interpretador.d.ts.map +1 -1
- package/interpretador/interpretador.js +21 -18
- package/interpretador/interpretador.js.map +1 -1
- package/interpretador/pilha-escopos-execucao.d.ts.map +1 -1
- package/interpretador/pilha-escopos-execucao.js +8 -3
- package/interpretador/pilha-escopos-execucao.js.map +1 -1
- package/lexador/dialetos/index.d.ts +1 -0
- package/lexador/dialetos/index.d.ts.map +1 -1
- package/lexador/dialetos/index.js +1 -0
- package/lexador/dialetos/index.js.map +1 -1
- package/lexador/dialetos/lexador-calango.d.ts +29 -0
- package/lexador/dialetos/lexador-calango.d.ts.map +1 -0
- package/lexador/dialetos/lexador-calango.js +231 -0
- package/lexador/dialetos/lexador-calango.js.map +1 -0
- package/lexador/dialetos/lexador-pitugues.d.ts.map +1 -1
- package/lexador/dialetos/lexador-pitugues.js +4 -0
- package/lexador/dialetos/lexador-pitugues.js.map +1 -1
- package/lexador/dialetos/palavras-reservadas/calango.d.ts +15 -0
- package/lexador/dialetos/palavras-reservadas/calango.d.ts.map +1 -0
- package/lexador/dialetos/palavras-reservadas/calango.js +20 -0
- package/lexador/dialetos/palavras-reservadas/calango.js.map +1 -0
- package/package.json +1 -1
- package/quebras/index.d.ts +2 -1
- package/quebras/index.d.ts.map +1 -1
- package/quebras/index.js +2 -1
- package/quebras/index.js.map +1 -1
- package/tipos-de-dados/dialetos/pitugues.d.ts +28 -0
- package/tipos-de-dados/dialetos/pitugues.d.ts.map +1 -0
- package/tipos-de-dados/dialetos/pitugues.js +29 -0
- package/tipos-de-dados/dialetos/pitugues.js.map +1 -0
- package/tipos-de-simbolos/calango.d.ts +42 -0
- package/tipos-de-simbolos/calango.d.ts.map +1 -0
- package/tipos-de-simbolos/calango.js +43 -0
- package/tipos-de-simbolos/calango.js.map +1 -0
- package/tipos-de-simbolos/pitugues.d.ts +1 -0
- package/tipos-de-simbolos/pitugues.d.ts.map +1 -1
- package/tipos-de-simbolos/pitugues.js +1 -0
- package/tipos-de-simbolos/pitugues.js.map +1 -1
- package/tradutores/index.d.ts +1 -0
- package/tradutores/index.d.ts.map +1 -1
- package/tradutores/index.js +1 -0
- package/tradutores/index.js.map +1 -1
- package/tradutores/tradutor-assemblyscript.js.map +1 -1
- package/tradutores/tradutor-calango.d.ts +22 -0
- package/tradutores/tradutor-calango.d.ts.map +1 -0
- package/tradutores/tradutor-calango.js +61 -0
- package/tradutores/tradutor-calango.js.map +1 -0
- package/tradutores/tradutor-javascript.js +1 -1
- package/tradutores/tradutor-javascript.js.map +1 -1
- package/tradutores/tradutor-python.js +1 -1
- package/tradutores/tradutor-python.js.map +1 -1
- package/tradutores/tradutor-reverso-tenda.js +1 -1
- package/tradutores/tradutor-reverso-tenda.js.map +1 -1
- package/umd/delegua.js +1543 -626
- package/construtos/tuplas/tupla.d.ts +0 -9
- package/construtos/tuplas/tupla.d.ts.map +0 -1
- package/construtos/tuplas/tupla.js.map +0 -1
- package/interfaces/retornos/retorno-interpretador.d.ts +0 -6
- package/interfaces/retornos/retorno-interpretador.d.ts.map +0 -1
- package/interfaces/retornos/retorno-interpretador.js.map +0 -1
- /package/construtos/{tuplas/tupla.js → tupla.js} +0 -0
|
@@ -13,12 +13,13 @@ const inferenciador_1 = require("../../inferenciador");
|
|
|
13
13
|
const pilha_escopos_1 = require("../pilha-escopos");
|
|
14
14
|
const informacao_escopo_1 = require("../informacao-escopo");
|
|
15
15
|
const informacao_variavel_ou_constante_1 = require("../../informacao-variavel-ou-constante");
|
|
16
|
-
const
|
|
16
|
+
const comum_1 = require("../comum");
|
|
17
|
+
const pitugues_1 = __importDefault(require("../../tipos-de-dados/dialetos/pitugues"));
|
|
18
|
+
const pitugues_2 = __importDefault(require("../../tipos-de-simbolos/pitugues"));
|
|
17
19
|
const primitivas_dicionario_1 = __importDefault(require("../../bibliotecas/primitivas-dicionario"));
|
|
18
20
|
const primitivas_numero_1 = __importDefault(require("../../bibliotecas/primitivas-numero"));
|
|
19
21
|
const primitivas_texto_1 = __importDefault(require("../../bibliotecas/primitivas-texto"));
|
|
20
22
|
const primitivas_vetor_1 = __importDefault(require("../../bibliotecas/primitivas-vetor"));
|
|
21
|
-
const comum_1 = require("../comum");
|
|
22
23
|
/**
|
|
23
24
|
* O avaliador sintático (_Parser_) é responsável por transformar os símbolos do Lexador em estruturas de alto nível.
|
|
24
25
|
* Essas estruturas de alto nível são as partes que executam lógica de programação de fato.
|
|
@@ -113,12 +114,12 @@ class AvaliadorSintaticoPitugues {
|
|
|
113
114
|
}
|
|
114
115
|
expressaoLeia() {
|
|
115
116
|
const simboloLeia = this.avancarEDevolverAnterior();
|
|
116
|
-
this.consumir(
|
|
117
|
+
this.consumir(pitugues_2.default.PARENTESE_ESQUERDO, "Esperado '(' antes dos valores em leia.");
|
|
117
118
|
const argumentos = [];
|
|
118
119
|
do {
|
|
119
120
|
argumentos.push(this.expressao());
|
|
120
|
-
} while (this.verificarSeSimboloAtualEIgualA(
|
|
121
|
-
this.consumir(
|
|
121
|
+
} while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.VIRGULA));
|
|
122
|
+
this.consumir(pitugues_2.default.PARENTESE_DIREITO, "Esperado ')' após os valores em leia.");
|
|
122
123
|
return new construtos_1.Leia(simboloLeia, argumentos);
|
|
123
124
|
}
|
|
124
125
|
declaracaoDeConstantes() {
|
|
@@ -131,19 +132,19 @@ class AvaliadorSintaticoPitugues {
|
|
|
131
132
|
return this.declaracaoDesestruturacaoConstante();
|
|
132
133
|
} */
|
|
133
134
|
do {
|
|
134
|
-
identificadores.push(this.consumir(
|
|
135
|
-
} while (this.verificarSeSimboloAtualEIgualA(
|
|
135
|
+
identificadores.push(this.consumir(pitugues_2.default.IDENTIFICADOR, 'Esperado nome da constante.'));
|
|
136
|
+
} while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.VIRGULA));
|
|
136
137
|
// TODO: Discutir com comunidade como seria melhor fazer
|
|
137
138
|
// dicas de tipos.
|
|
138
139
|
/* if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.DOIS_PONTOS)) {
|
|
139
140
|
tipo = this.verificarDefinicaoTipoAtual();
|
|
140
141
|
this.avancarEDevolverAnterior();
|
|
141
142
|
} */
|
|
142
|
-
this.consumir(
|
|
143
|
+
this.consumir(pitugues_2.default.IGUAL, "Esperado '=' após identificador em instrução 'constante'.");
|
|
143
144
|
const inicializadores = [];
|
|
144
145
|
do {
|
|
145
146
|
inicializadores.push(this.expressao());
|
|
146
|
-
} while (this.verificarSeSimboloAtualEIgualA(
|
|
147
|
+
} while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.VIRGULA));
|
|
147
148
|
// TODO: Muito provavelmente, com desestruturação, essa validação
|
|
148
149
|
// não será necessária.
|
|
149
150
|
/* if (identificadores.length !== inicializadores.length) {
|
|
@@ -173,20 +174,20 @@ class AvaliadorSintaticoPitugues {
|
|
|
173
174
|
let retorno = [];
|
|
174
175
|
let tipo = 'qualquer';
|
|
175
176
|
do {
|
|
176
|
-
identificadores.push(this.consumir(
|
|
177
|
-
} while (this.verificarSeSimboloAtualEIgualA(
|
|
178
|
-
if (!this.verificarSeSimboloAtualEIgualA(
|
|
177
|
+
identificadores.push(this.consumir(pitugues_2.default.IDENTIFICADOR, 'Esperado nome de variável.'));
|
|
178
|
+
} while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.VIRGULA));
|
|
179
|
+
if (!this.verificarSeSimboloAtualEIgualA(pitugues_2.default.IGUAL)) {
|
|
179
180
|
// Inicialização de variáveis sem valor.
|
|
180
181
|
for (let [indice, identificador] of identificadores.entries()) {
|
|
181
182
|
retorno.push(new declaracoes_1.Var(identificador, null));
|
|
182
183
|
}
|
|
183
|
-
this.verificarSeSimboloAtualEIgualA(
|
|
184
|
+
this.verificarSeSimboloAtualEIgualA(pitugues_2.default.PONTO_E_VIRGULA);
|
|
184
185
|
return retorno;
|
|
185
186
|
}
|
|
186
187
|
const inicializadores = [];
|
|
187
188
|
do {
|
|
188
189
|
inicializadores.push(this.expressao());
|
|
189
|
-
} while (this.verificarSeSimboloAtualEIgualA(
|
|
190
|
+
} while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.VIRGULA));
|
|
190
191
|
if (identificadores.length !== inicializadores.length) {
|
|
191
192
|
throw this.erro(this.simboloAtual(), 'Quantidade de identificadores à esquerda do igual é diferente da quantidade de valores à direita.');
|
|
192
193
|
}
|
|
@@ -202,15 +203,15 @@ class AvaliadorSintaticoPitugues {
|
|
|
202
203
|
this.avancarEDevolverAnterior();
|
|
203
204
|
while (!this.estaNoFinal()) {
|
|
204
205
|
switch (this.simboloAtual().tipo) {
|
|
205
|
-
case
|
|
206
|
-
case
|
|
207
|
-
case
|
|
208
|
-
case
|
|
209
|
-
case
|
|
210
|
-
case
|
|
211
|
-
case
|
|
212
|
-
case
|
|
213
|
-
case
|
|
206
|
+
case pitugues_2.default.CLASSE:
|
|
207
|
+
case pitugues_2.default.FUNCAO:
|
|
208
|
+
case pitugues_2.default.FUNÇÃO:
|
|
209
|
+
case pitugues_2.default.VARIAVEL:
|
|
210
|
+
case pitugues_2.default.PARA:
|
|
211
|
+
case pitugues_2.default.SE:
|
|
212
|
+
case pitugues_2.default.ENQUANTO:
|
|
213
|
+
case pitugues_2.default.ESCREVA:
|
|
214
|
+
case pitugues_2.default.RETORNA:
|
|
214
215
|
return;
|
|
215
216
|
}
|
|
216
217
|
this.avancarEDevolverAnterior();
|
|
@@ -267,64 +268,64 @@ class AvaliadorSintaticoPitugues {
|
|
|
267
268
|
const simboloAtual = this.simbolos[this.atual];
|
|
268
269
|
let valores = [];
|
|
269
270
|
switch (simboloAtual.tipo) {
|
|
270
|
-
case
|
|
271
|
+
case pitugues_2.default.COLCHETE_ESQUERDO:
|
|
271
272
|
this.avancarEDevolverAnterior();
|
|
272
|
-
if (this.verificarSeSimboloAtualEIgualA(
|
|
273
|
+
if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.COLCHETE_DIREITO)) {
|
|
273
274
|
return new construtos_1.Vetor(this.hashArquivo, simboloAtual.linha, [], 0, 'qualquer[]');
|
|
274
275
|
}
|
|
275
|
-
while (!this.verificarSeSimboloAtualEIgualA(
|
|
276
|
+
while (!this.verificarSeSimboloAtualEIgualA(pitugues_2.default.COLCHETE_DIREITO)) {
|
|
276
277
|
const valor = this.atribuir();
|
|
277
278
|
valores.push(valor);
|
|
278
|
-
if (this.simbolos[this.atual].tipo !==
|
|
279
|
-
this.consumir(
|
|
279
|
+
if (this.simbolos[this.atual].tipo !== pitugues_2.default.COLCHETE_DIREITO) {
|
|
280
|
+
this.consumir(pitugues_2.default.VIRGULA, 'Esperado vírgula antes da próxima expressão.');
|
|
280
281
|
}
|
|
281
282
|
}
|
|
282
283
|
const tipoVetor = (0, inferenciador_1.inferirTipoVariavel)(valores);
|
|
283
284
|
return new construtos_1.Vetor(this.hashArquivo, simboloAtual.linha, valores, valores.length, tipoVetor);
|
|
284
|
-
case
|
|
285
|
+
case pitugues_2.default.CHAVE_ESQUERDA:
|
|
285
286
|
this.avancarEDevolverAnterior();
|
|
286
287
|
const chaves = [];
|
|
287
|
-
if (this.verificarSeSimboloAtualEIgualA(
|
|
288
|
+
if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.CHAVE_DIREITA)) {
|
|
288
289
|
return new construtos_1.Dicionario(this.hashArquivo, simboloAtual.linha, [], []);
|
|
289
290
|
}
|
|
290
|
-
while (!this.verificarSeSimboloAtualEIgualA(
|
|
291
|
+
while (!this.verificarSeSimboloAtualEIgualA(pitugues_2.default.CHAVE_DIREITA)) {
|
|
291
292
|
const chave = this.atribuir();
|
|
292
|
-
this.consumir(
|
|
293
|
+
this.consumir(pitugues_2.default.DOIS_PONTOS, "Esperado ':' entre chave e valor.");
|
|
293
294
|
const valor = this.atribuir();
|
|
294
295
|
chaves.push(chave);
|
|
295
296
|
valores.push(valor);
|
|
296
|
-
if (this.simboloAtual().tipo !==
|
|
297
|
-
this.consumir(
|
|
297
|
+
if (this.simboloAtual().tipo !== pitugues_2.default.CHAVE_DIREITA) {
|
|
298
|
+
this.consumir(pitugues_2.default.VIRGULA, 'Esperado vírgula antes da próxima expressão.');
|
|
298
299
|
}
|
|
299
300
|
}
|
|
300
301
|
return new construtos_1.Dicionario(this.hashArquivo, simboloAtual.linha, chaves, valores);
|
|
301
|
-
case
|
|
302
|
-
case
|
|
302
|
+
case pitugues_2.default.FALSO:
|
|
303
|
+
case pitugues_2.default.VERDADEIRO:
|
|
303
304
|
const simboloLogico = this.avancarEDevolverAnterior();
|
|
304
|
-
return new construtos_1.Literal(this.hashArquivo, simboloAtual.linha, simboloLogico.tipo ===
|
|
305
|
-
case
|
|
306
|
-
case
|
|
305
|
+
return new construtos_1.Literal(this.hashArquivo, simboloAtual.linha, simboloLogico.tipo === pitugues_2.default.VERDADEIRO, 'lógico');
|
|
306
|
+
case pitugues_2.default.FUNCAO:
|
|
307
|
+
case pitugues_2.default.FUNÇÃO:
|
|
307
308
|
const simboloFuncao = this.avancarEDevolverAnterior();
|
|
308
309
|
const corpoDaFuncao = this.corpoDaFuncao(simboloFuncao.lexema);
|
|
309
310
|
this.pilhaEscopos.definirInformacoesVariavel(simboloFuncao.lexema, new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(simboloFuncao.lexema, 'função'));
|
|
310
311
|
return corpoDaFuncao;
|
|
311
|
-
case
|
|
312
|
+
case pitugues_2.default.IMPORTAR:
|
|
312
313
|
return this.declaracaoImportar();
|
|
313
|
-
case
|
|
314
|
+
case pitugues_2.default.NULO:
|
|
314
315
|
this.avancarEDevolverAnterior();
|
|
315
316
|
return new construtos_1.Literal(this.hashArquivo, simboloAtual.linha, null);
|
|
316
|
-
case
|
|
317
|
+
case pitugues_2.default.ISTO:
|
|
317
318
|
const simboloIsto = this.avancarEDevolverAnterior();
|
|
318
319
|
return new construtos_1.Isto(this.hashArquivo, simboloAtual.linha, simboloIsto);
|
|
319
|
-
case
|
|
320
|
+
case pitugues_2.default.LEIA:
|
|
320
321
|
return this.expressaoLeia();
|
|
321
|
-
case
|
|
322
|
-
case
|
|
322
|
+
case pitugues_2.default.NUMERO:
|
|
323
|
+
case pitugues_2.default.TEXTO:
|
|
323
324
|
const simboloLiteral = this.avancarEDevolverAnterior();
|
|
324
325
|
const tipoInferido = (0, inferenciador_1.inferirTipoVariavel)(simboloLiteral.literal);
|
|
325
326
|
const tipoDadosElementar = (0, inferenciador_1.tipoInferenciaParaTipoDadosElementar)(tipoInferido);
|
|
326
327
|
return new construtos_1.Literal(this.hashArquivo, Number(simboloLiteral.linha), simboloLiteral.literal, tipoDadosElementar);
|
|
327
|
-
case
|
|
328
|
+
case pitugues_2.default.IDENTIFICADOR:
|
|
328
329
|
const simboloIdentificador = this.avancarEDevolverAnterior();
|
|
329
330
|
let tipoOperando;
|
|
330
331
|
if (simboloIdentificador.lexema in this.tiposDefinidosEmCodigo) {
|
|
@@ -339,12 +340,12 @@ class AvaliadorSintaticoPitugues {
|
|
|
339
340
|
}
|
|
340
341
|
}
|
|
341
342
|
return new construtos_1.Variavel(this.hashArquivo, simboloIdentificador, tipoOperando);
|
|
342
|
-
case
|
|
343
|
+
case pitugues_2.default.PARENTESE_ESQUERDO:
|
|
343
344
|
this.avancarEDevolverAnterior();
|
|
344
345
|
const expressao = this.expressao();
|
|
345
|
-
this.consumir(
|
|
346
|
+
this.consumir(pitugues_2.default.PARENTESE_DIREITO, "Esperado ')' após a expressão.");
|
|
346
347
|
return new construtos_1.Agrupamento(this.hashArquivo, simboloAtual.linha, expressao);
|
|
347
|
-
case
|
|
348
|
+
case pitugues_2.default.SUPER:
|
|
348
349
|
const simboloSuper = this.avancarEDevolverAnterior();
|
|
349
350
|
return new construtos_1.Super(this.hashArquivo, simboloSuper, this.superclasseAtual);
|
|
350
351
|
}
|
|
@@ -352,30 +353,30 @@ class AvaliadorSintaticoPitugues {
|
|
|
352
353
|
}
|
|
353
354
|
finalizarChamada(entidadeChamada) {
|
|
354
355
|
const argumentos = [];
|
|
355
|
-
if (!this.verificarTipoSimboloAtual(
|
|
356
|
+
if (!this.verificarTipoSimboloAtual(pitugues_2.default.PARENTESE_DIREITO)) {
|
|
356
357
|
do {
|
|
357
358
|
if (argumentos.length >= 255) {
|
|
358
359
|
throw this.erro(this.simboloAtual(), 'Não pode haver mais de 255 argumentos.');
|
|
359
360
|
}
|
|
360
361
|
argumentos.push(this.expressao());
|
|
361
|
-
} while (this.verificarSeSimboloAtualEIgualA(
|
|
362
|
+
} while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.VIRGULA));
|
|
362
363
|
}
|
|
363
|
-
this.consumir(
|
|
364
|
+
this.consumir(pitugues_2.default.PARENTESE_DIREITO, "Esperado ')' após os argumentos.");
|
|
364
365
|
return new construtos_1.Chamada(this.hashArquivo, entidadeChamada, argumentos);
|
|
365
366
|
}
|
|
366
367
|
chamar() {
|
|
367
368
|
let expressao = this.primario();
|
|
368
369
|
while (true) {
|
|
369
|
-
if (this.verificarSeSimboloAtualEIgualA(
|
|
370
|
+
if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.PARENTESE_ESQUERDO)) {
|
|
370
371
|
expressao = this.finalizarChamada(expressao);
|
|
371
372
|
}
|
|
372
|
-
else if (this.verificarSeSimboloAtualEIgualA(
|
|
373
|
-
const nome = this.consumir(
|
|
373
|
+
else if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.PONTO)) {
|
|
374
|
+
const nome = this.consumir(pitugues_2.default.IDENTIFICADOR, "Esperado nome do método após '.'.");
|
|
374
375
|
expressao = new construtos_1.AcessoMetodoOuPropriedade(this.hashArquivo, expressao, nome);
|
|
375
376
|
}
|
|
376
|
-
else if (this.verificarSeSimboloAtualEIgualA(
|
|
377
|
+
else if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.COLCHETE_ESQUERDO)) {
|
|
377
378
|
const indice = this.expressao();
|
|
378
|
-
const simboloFechamento = this.consumir(
|
|
379
|
+
const simboloFechamento = this.consumir(pitugues_2.default.COLCHETE_DIREITO, "Esperado ']' após escrita do indice.");
|
|
379
380
|
expressao = new construtos_1.AcessoIndiceVariavel(this.hashArquivo, expressao, indice, simboloFechamento);
|
|
380
381
|
}
|
|
381
382
|
else {
|
|
@@ -385,7 +386,7 @@ class AvaliadorSintaticoPitugues {
|
|
|
385
386
|
return expressao;
|
|
386
387
|
}
|
|
387
388
|
unario() {
|
|
388
|
-
if (this.verificarSeSimboloAtualEIgualA(
|
|
389
|
+
if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.NEGACAO, pitugues_2.default.SUBTRACAO, pitugues_2.default.BIT_NOT)) {
|
|
389
390
|
const operador = this.simboloAnterior();
|
|
390
391
|
const direito = this.unario();
|
|
391
392
|
return new construtos_1.Unario(this.hashArquivo, operador, direito);
|
|
@@ -394,7 +395,7 @@ class AvaliadorSintaticoPitugues {
|
|
|
394
395
|
}
|
|
395
396
|
exponenciacao() {
|
|
396
397
|
let expressao = this.unario();
|
|
397
|
-
while (this.verificarSeSimboloAtualEIgualA(
|
|
398
|
+
while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.EXPONENCIACAO)) {
|
|
398
399
|
const operador = this.simboloAnterior();
|
|
399
400
|
const direito = this.unario();
|
|
400
401
|
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
@@ -403,7 +404,7 @@ class AvaliadorSintaticoPitugues {
|
|
|
403
404
|
}
|
|
404
405
|
multiplicar() {
|
|
405
406
|
let expressao = this.exponenciacao();
|
|
406
|
-
while (this.verificarSeSimboloAtualEIgualA(
|
|
407
|
+
while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.DIVISAO, pitugues_2.default.DIVISAO_INTEIRA, pitugues_2.default.MULTIPLICACAO, pitugues_2.default.MODULO)) {
|
|
407
408
|
const operador = this.simboloAnterior();
|
|
408
409
|
const direito = this.exponenciacao();
|
|
409
410
|
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
@@ -412,7 +413,7 @@ class AvaliadorSintaticoPitugues {
|
|
|
412
413
|
}
|
|
413
414
|
adicaoOuSubtracao() {
|
|
414
415
|
let expressao = this.multiplicar();
|
|
415
|
-
while (this.verificarSeSimboloAtualEIgualA(
|
|
416
|
+
while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.SUBTRACAO, pitugues_2.default.ADICAO)) {
|
|
416
417
|
const operador = this.simboloAnterior();
|
|
417
418
|
const direito = this.multiplicar();
|
|
418
419
|
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
@@ -421,7 +422,7 @@ class AvaliadorSintaticoPitugues {
|
|
|
421
422
|
}
|
|
422
423
|
bitShift() {
|
|
423
424
|
let expressao = this.adicaoOuSubtracao();
|
|
424
|
-
while (this.verificarSeSimboloAtualEIgualA(
|
|
425
|
+
while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.MENOR_MENOR, pitugues_2.default.MAIOR_MAIOR)) {
|
|
425
426
|
const operador = this.simboloAnterior();
|
|
426
427
|
const direito = this.adicaoOuSubtracao();
|
|
427
428
|
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
@@ -430,7 +431,7 @@ class AvaliadorSintaticoPitugues {
|
|
|
430
431
|
}
|
|
431
432
|
bitE() {
|
|
432
433
|
let expressao = this.bitShift();
|
|
433
|
-
while (this.verificarSeSimboloAtualEIgualA(
|
|
434
|
+
while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.BIT_AND)) {
|
|
434
435
|
const operador = this.simboloAnterior();
|
|
435
436
|
const direito = this.bitShift();
|
|
436
437
|
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
@@ -439,7 +440,7 @@ class AvaliadorSintaticoPitugues {
|
|
|
439
440
|
}
|
|
440
441
|
bitOu() {
|
|
441
442
|
let expressao = this.bitE();
|
|
442
|
-
while (this.verificarSeSimboloAtualEIgualA(
|
|
443
|
+
while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.BIT_OR, pitugues_2.default.BIT_XOR)) {
|
|
443
444
|
const operador = this.simboloAnterior();
|
|
444
445
|
const direito = this.bitE();
|
|
445
446
|
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
@@ -448,7 +449,7 @@ class AvaliadorSintaticoPitugues {
|
|
|
448
449
|
}
|
|
449
450
|
comparar() {
|
|
450
451
|
let expressao = this.bitOu();
|
|
451
|
-
while (this.verificarSeSimboloAtualEIgualA(
|
|
452
|
+
while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.MAIOR, pitugues_2.default.MAIOR_IGUAL, pitugues_2.default.MENOR, pitugues_2.default.MENOR_IGUAL)) {
|
|
452
453
|
const operador = this.simboloAnterior();
|
|
453
454
|
const direito = this.bitOu();
|
|
454
455
|
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
@@ -457,7 +458,7 @@ class AvaliadorSintaticoPitugues {
|
|
|
457
458
|
}
|
|
458
459
|
comparacaoIgualdade() {
|
|
459
460
|
let expressao = this.comparar();
|
|
460
|
-
while (this.verificarSeSimboloAtualEIgualA(
|
|
461
|
+
while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.DIFERENTE, pitugues_2.default.IGUAL_IGUAL)) {
|
|
461
462
|
const operador = this.simboloAnterior();
|
|
462
463
|
const direito = this.comparar();
|
|
463
464
|
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
@@ -466,7 +467,7 @@ class AvaliadorSintaticoPitugues {
|
|
|
466
467
|
}
|
|
467
468
|
em() {
|
|
468
469
|
let expressao = this.comparacaoIgualdade();
|
|
469
|
-
while (this.verificarSeSimboloAtualEIgualA(
|
|
470
|
+
while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.EM)) {
|
|
470
471
|
const operador = this.simboloAnterior();
|
|
471
472
|
const direito = this.comparacaoIgualdade();
|
|
472
473
|
expressao = new construtos_1.Logico(this.hashArquivo, expressao, operador, direito);
|
|
@@ -475,7 +476,7 @@ class AvaliadorSintaticoPitugues {
|
|
|
475
476
|
}
|
|
476
477
|
e() {
|
|
477
478
|
let expressao = this.em();
|
|
478
|
-
while (this.verificarSeSimboloAtualEIgualA(
|
|
479
|
+
while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.E)) {
|
|
479
480
|
const operador = this.simboloAnterior();
|
|
480
481
|
const direito = this.em();
|
|
481
482
|
expressao = new construtos_1.Logico(this.hashArquivo, expressao, operador, direito);
|
|
@@ -484,7 +485,7 @@ class AvaliadorSintaticoPitugues {
|
|
|
484
485
|
}
|
|
485
486
|
ou() {
|
|
486
487
|
let expressao = this.e();
|
|
487
|
-
while (this.verificarSeSimboloAtualEIgualA(
|
|
488
|
+
while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.OU)) {
|
|
488
489
|
const operador = this.simboloAnterior();
|
|
489
490
|
const direito = this.e();
|
|
490
491
|
expressao = new construtos_1.Logico(this.hashArquivo, expressao, operador, direito);
|
|
@@ -493,8 +494,8 @@ class AvaliadorSintaticoPitugues {
|
|
|
493
494
|
}
|
|
494
495
|
atribuir() {
|
|
495
496
|
const expressao = this.ou();
|
|
496
|
-
if (this.verificarSeSimboloAtualEIgualA(
|
|
497
|
-
this.verificarSeSimboloAtualEIgualA(
|
|
497
|
+
if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.IGUAL) ||
|
|
498
|
+
this.verificarSeSimboloAtualEIgualA(pitugues_2.default.MAIS_IGUAL)) {
|
|
498
499
|
const igual = this.simboloAnterior();
|
|
499
500
|
const valor = this.atribuir();
|
|
500
501
|
if (expressao instanceof construtos_1.Variavel) {
|
|
@@ -516,12 +517,12 @@ class AvaliadorSintaticoPitugues {
|
|
|
516
517
|
}
|
|
517
518
|
declaracaoEscreva() {
|
|
518
519
|
const simboloAtual = this.simboloAtual();
|
|
519
|
-
this.consumir(
|
|
520
|
+
this.consumir(pitugues_2.default.PARENTESE_ESQUERDO, "Esperado '(' antes dos valores em escreva.");
|
|
520
521
|
const argumentos = [];
|
|
521
522
|
do {
|
|
522
523
|
argumentos.push(this.expressao());
|
|
523
|
-
} while (this.verificarSeSimboloAtualEIgualA(
|
|
524
|
-
this.consumir(
|
|
524
|
+
} while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.VIRGULA));
|
|
525
|
+
this.consumir(pitugues_2.default.PARENTESE_DIREITO, "Esperado ')' após os valores em escreva.");
|
|
525
526
|
return new declaracoes_1.Escreva(Number(simboloAtual.linha), simboloAtual.hashArquivo, argumentos);
|
|
526
527
|
}
|
|
527
528
|
declaracaoExpressao() {
|
|
@@ -591,18 +592,18 @@ class AvaliadorSintaticoPitugues {
|
|
|
591
592
|
try {
|
|
592
593
|
this.blocos += 1;
|
|
593
594
|
const condicao = this.expressao();
|
|
594
|
-
this.consumir(
|
|
595
|
+
this.consumir(pitugues_2.default.DOIS_PONTOS, "Esperado ':' após 'escolha'.");
|
|
595
596
|
const caminhos = [];
|
|
596
597
|
let caminhoPadrao = null;
|
|
597
598
|
while (!this.estaNoFinal() &&
|
|
598
|
-
[
|
|
599
|
-
if (this.verificarSeSimboloAtualEIgualA(
|
|
599
|
+
[pitugues_2.default.CASO, pitugues_2.default.PADRAO].includes(this.simbolos[this.atual].tipo)) {
|
|
600
|
+
if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.CASO)) {
|
|
600
601
|
const caminhoCondicoes = [this.expressao()];
|
|
601
|
-
this.consumir(
|
|
602
|
-
while (this.verificarTipoSimboloAtual(
|
|
603
|
-
this.consumir(
|
|
602
|
+
this.consumir(pitugues_2.default.DOIS_PONTOS, "Esperado ':' após o 'caso'.");
|
|
603
|
+
while (this.verificarTipoSimboloAtual(pitugues_2.default.CASO)) {
|
|
604
|
+
this.consumir(pitugues_2.default.CASO, null);
|
|
604
605
|
caminhoCondicoes.push(this.expressao());
|
|
605
|
-
this.consumir(
|
|
606
|
+
this.consumir(pitugues_2.default.DOIS_PONTOS, "Esperado ':' após declaração do 'caso'.");
|
|
606
607
|
}
|
|
607
608
|
// Como dois-pontos é um símbolo usado para conferir se há um início de bloco,
|
|
608
609
|
// não podemos simplesmente chamar `this.resolverDeclaracao()` porque o dois-pontos já
|
|
@@ -615,13 +616,13 @@ class AvaliadorSintaticoPitugues {
|
|
|
615
616
|
declaracoes,
|
|
616
617
|
});
|
|
617
618
|
}
|
|
618
|
-
else if (this.verificarSeSimboloAtualEIgualA(
|
|
619
|
+
else if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.PADRAO)) {
|
|
619
620
|
if (caminhoPadrao !== null) {
|
|
620
621
|
const excecao = new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(this.simboloAtual(), "Você só pode ter um caminho padrão em cada declaração de 'escolha'.");
|
|
621
622
|
this.erros.push(excecao);
|
|
622
623
|
throw excecao;
|
|
623
624
|
}
|
|
624
|
-
this.consumir(
|
|
625
|
+
this.consumir(pitugues_2.default.DOIS_PONTOS, "Esperado ':' após declaração do 'padrao'.");
|
|
625
626
|
// Como dois-pontos é um símbolo usado para conferir se há um início de bloco,
|
|
626
627
|
// não podemos simplesmente chamar `this.resolverDeclaracao()` porque o dois-pontos já
|
|
627
628
|
// foi consumido na verificação.
|
|
@@ -640,8 +641,8 @@ class AvaliadorSintaticoPitugues {
|
|
|
640
641
|
}
|
|
641
642
|
}
|
|
642
643
|
declaracaoParaCada(simboloPara) {
|
|
643
|
-
const nomeVariavelIteracao = this.consumir(
|
|
644
|
-
if (!this.verificarSeSimboloAtualEIgualA(
|
|
644
|
+
const nomeVariavelIteracao = this.consumir(pitugues_2.default.IDENTIFICADOR, "Esperado identificador de variável de iteração para instrução 'para cada'.");
|
|
645
|
+
if (!this.verificarSeSimboloAtualEIgualA(pitugues_2.default.DE, pitugues_2.default.EM)) {
|
|
645
646
|
throw this.erro(this.simbolos[this.atual], "Esperado palavras reservadas 'em' ou 'de' após variável de iteração em instrução 'para cada'.");
|
|
646
647
|
}
|
|
647
648
|
const vetor = this.expressao();
|
|
@@ -659,21 +660,21 @@ class AvaliadorSintaticoPitugues {
|
|
|
659
660
|
}
|
|
660
661
|
declaracaoParaTradicional(simboloPara) {
|
|
661
662
|
let inicializador;
|
|
662
|
-
if (this.verificarSeSimboloAtualEIgualA(
|
|
663
|
+
if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.PONTO_E_VIRGULA)) {
|
|
663
664
|
inicializador = null;
|
|
664
665
|
}
|
|
665
|
-
else if (this.verificarSeSimboloAtualEIgualA(
|
|
666
|
+
else if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.VARIAVEL)) {
|
|
666
667
|
inicializador = this.declaracaoDeVariaveis();
|
|
667
668
|
}
|
|
668
669
|
else {
|
|
669
670
|
inicializador = this.declaracaoExpressao();
|
|
670
671
|
}
|
|
671
672
|
let condicao = null;
|
|
672
|
-
if (!this.verificarTipoSimboloAtual(
|
|
673
|
+
if (!this.verificarTipoSimboloAtual(pitugues_2.default.PONTO_E_VIRGULA)) {
|
|
673
674
|
condicao = this.expressao();
|
|
674
675
|
}
|
|
675
676
|
let incrementar = null;
|
|
676
|
-
if (this.simbolos[this.atual].tipo !==
|
|
677
|
+
if (this.simbolos[this.atual].tipo !== pitugues_2.default.DOIS_PONTOS) {
|
|
677
678
|
incrementar = this.expressao();
|
|
678
679
|
}
|
|
679
680
|
const corpo = this.resolverDeclaracao();
|
|
@@ -683,7 +684,7 @@ class AvaliadorSintaticoPitugues {
|
|
|
683
684
|
try {
|
|
684
685
|
const simboloPara = this.simboloAnterior();
|
|
685
686
|
this.blocos += 1;
|
|
686
|
-
if (this.verificarSeSimboloAtualEIgualA(
|
|
687
|
+
if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.CADA)) {
|
|
687
688
|
return this.declaracaoParaCada(simboloPara);
|
|
688
689
|
}
|
|
689
690
|
return this.declaracaoParaTradicional(simboloPara);
|
|
@@ -699,7 +700,7 @@ class AvaliadorSintaticoPitugues {
|
|
|
699
700
|
const condicao = this.expressao();
|
|
700
701
|
const caminhoEntao = this.resolverDeclaracao();
|
|
701
702
|
let caminhoSenao = null;
|
|
702
|
-
if (this.verificarSeSimboloAtualEIgualA(
|
|
703
|
+
if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.SENAO, pitugues_2.default.SENÃO)) {
|
|
703
704
|
caminhoSenao = this.resolverDeclaracao();
|
|
704
705
|
}
|
|
705
706
|
return new declaracoes_1.Se(condicao, caminhoEntao, [], caminhoSenao);
|
|
@@ -719,35 +720,35 @@ class AvaliadorSintaticoPitugues {
|
|
|
719
720
|
declaracaoRetorna() {
|
|
720
721
|
const palavraChave = this.simboloAnterior();
|
|
721
722
|
let valor = null;
|
|
722
|
-
if (!this.verificarTipoSimboloAtual(
|
|
723
|
+
if (!this.verificarTipoSimboloAtual(pitugues_2.default.PONTO_E_VIRGULA)) {
|
|
723
724
|
valor = this.expressao();
|
|
724
725
|
}
|
|
725
726
|
return new declaracoes_1.Retorna(palavraChave, valor);
|
|
726
727
|
}
|
|
727
728
|
declaracaoImportar() {
|
|
728
729
|
this.avancarEDevolverAnterior();
|
|
729
|
-
this.consumir(
|
|
730
|
+
this.consumir(pitugues_2.default.PARENTESE_ESQUERDO, "Esperado '(' após declaração.");
|
|
730
731
|
const caminho = this.expressao();
|
|
731
|
-
this.consumir(
|
|
732
|
+
this.consumir(pitugues_2.default.PARENTESE_DIREITO, "Esperado ')' após declaração.");
|
|
732
733
|
return new declaracoes_1.Importar(caminho);
|
|
733
734
|
}
|
|
734
735
|
declaracaoTente() {
|
|
735
736
|
const simboloTente = this.simboloAnterior();
|
|
736
|
-
this.consumir(
|
|
737
|
+
this.consumir(pitugues_2.default.DOIS_PONTOS, "Esperado ':' após a declaração 'tente'.");
|
|
737
738
|
const blocoTente = this.blocoEscopo();
|
|
738
739
|
let blocoPegue = null;
|
|
739
|
-
if (this.verificarSeSimboloAtualEIgualA(
|
|
740
|
-
this.consumir(
|
|
740
|
+
if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.PEGUE)) {
|
|
741
|
+
this.consumir(pitugues_2.default.DOIS_PONTOS, "Esperado ':' após a declaração 'pegue'.");
|
|
741
742
|
blocoPegue = this.blocoEscopo();
|
|
742
743
|
}
|
|
743
744
|
let blocoSenao = null;
|
|
744
|
-
if (this.verificarSeSimboloAtualEIgualA(
|
|
745
|
-
this.consumir(
|
|
745
|
+
if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.SENAO, pitugues_2.default.SENÃO)) {
|
|
746
|
+
this.consumir(pitugues_2.default.DOIS_PONTOS, "Esperado ':' após a declaração 'senão'.");
|
|
746
747
|
blocoSenao = this.blocoEscopo();
|
|
747
748
|
}
|
|
748
749
|
let blocoFinalmente = null;
|
|
749
|
-
if (this.verificarSeSimboloAtualEIgualA(
|
|
750
|
-
this.consumir(
|
|
750
|
+
if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.FINALMENTE)) {
|
|
751
|
+
this.consumir(pitugues_2.default.DOIS_PONTOS, "Esperado ':' após a declaração 'pegue'.");
|
|
751
752
|
blocoFinalmente = this.blocoEscopo();
|
|
752
753
|
}
|
|
753
754
|
return new declaracoes_1.Tente(simboloTente.hashArquivo, Number(simboloTente.linha), blocoTente, blocoPegue, blocoSenao, blocoFinalmente);
|
|
@@ -757,7 +758,7 @@ class AvaliadorSintaticoPitugues {
|
|
|
757
758
|
try {
|
|
758
759
|
this.blocos += 1;
|
|
759
760
|
const declaracaoOuBlocoFazer = this.resolverDeclaracao();
|
|
760
|
-
this.consumir(
|
|
761
|
+
this.consumir(pitugues_2.default.ENQUANTO, "Esperado declaração do 'enquanto' após o escopo da declaração 'fazer'.");
|
|
761
762
|
const condicaoEnquanto = this.expressao();
|
|
762
763
|
return new declaracoes_1.Fazer(simboloFazer.hashArquivo, Number(simboloFazer.linha), declaracaoOuBlocoFazer, condicaoEnquanto);
|
|
763
764
|
}
|
|
@@ -767,48 +768,48 @@ class AvaliadorSintaticoPitugues {
|
|
|
767
768
|
}
|
|
768
769
|
resolverDeclaracao() {
|
|
769
770
|
switch (this.simbolos[this.atual].tipo) {
|
|
770
|
-
case
|
|
771
|
+
case pitugues_2.default.CONSTANTE:
|
|
771
772
|
this.avancarEDevolverAnterior();
|
|
772
773
|
return this.declaracaoDeConstantes();
|
|
773
|
-
case
|
|
774
|
+
case pitugues_2.default.CONTINUA:
|
|
774
775
|
this.avancarEDevolverAnterior();
|
|
775
776
|
return this.declaracaoContinua();
|
|
776
|
-
case
|
|
777
|
+
case pitugues_2.default.DOIS_PONTOS:
|
|
777
778
|
this.avancarEDevolverAnterior();
|
|
778
779
|
const simboloInicioBloco = this.simboloAnterior();
|
|
779
780
|
return new declaracoes_1.Bloco(simboloInicioBloco.hashArquivo, Number(simboloInicioBloco.linha), this.blocoEscopo());
|
|
780
|
-
case
|
|
781
|
+
case pitugues_2.default.ENQUANTO:
|
|
781
782
|
this.avancarEDevolverAnterior();
|
|
782
783
|
return this.declaracaoEnquanto();
|
|
783
|
-
case
|
|
784
|
+
case pitugues_2.default.ESCOLHA:
|
|
784
785
|
this.avancarEDevolverAnterior();
|
|
785
786
|
return this.declaracaoEscolha();
|
|
786
|
-
case
|
|
787
|
-
case
|
|
787
|
+
case pitugues_2.default.IMPRIMA:
|
|
788
|
+
case pitugues_2.default.ESCREVA:
|
|
788
789
|
this.avancarEDevolverAnterior();
|
|
789
790
|
return this.declaracaoEscreva();
|
|
790
|
-
case
|
|
791
|
+
case pitugues_2.default.FALHAR:
|
|
791
792
|
this.avancarEDevolverAnterior();
|
|
792
793
|
return this.declaracaoFalhar();
|
|
793
|
-
case
|
|
794
|
+
case pitugues_2.default.FAZER:
|
|
794
795
|
this.avancarEDevolverAnterior();
|
|
795
796
|
return this.declaracaoFazer();
|
|
796
|
-
case
|
|
797
|
+
case pitugues_2.default.PARA:
|
|
797
798
|
this.avancarEDevolverAnterior();
|
|
798
799
|
return this.declaracaoPara();
|
|
799
|
-
case
|
|
800
|
+
case pitugues_2.default.SUSTAR:
|
|
800
801
|
this.avancarEDevolverAnterior();
|
|
801
802
|
return this.declaracaoSustar();
|
|
802
|
-
case
|
|
803
|
+
case pitugues_2.default.SE:
|
|
803
804
|
this.avancarEDevolverAnterior();
|
|
804
805
|
return this.declaracaoSe();
|
|
805
|
-
case
|
|
806
|
+
case pitugues_2.default.RETORNA:
|
|
806
807
|
this.avancarEDevolverAnterior();
|
|
807
808
|
return this.declaracaoRetorna();
|
|
808
|
-
case
|
|
809
|
+
case pitugues_2.default.TENTE:
|
|
809
810
|
this.avancarEDevolverAnterior();
|
|
810
811
|
return this.declaracaoTente();
|
|
811
|
-
case
|
|
812
|
+
case pitugues_2.default.VARIAVEL:
|
|
812
813
|
this.avancarEDevolverAnterior();
|
|
813
814
|
return this.declaracaoDeVariaveis();
|
|
814
815
|
}
|
|
@@ -816,8 +817,8 @@ class AvaliadorSintaticoPitugues {
|
|
|
816
817
|
}
|
|
817
818
|
funcao(tipo, construtor) {
|
|
818
819
|
const simbolo = !construtor
|
|
819
|
-
? this.consumir(
|
|
820
|
-
: new lexador_1.Simbolo(
|
|
820
|
+
? this.consumir(pitugues_2.default.IDENTIFICADOR, `Esperado nome ${tipo}.`)
|
|
821
|
+
: new lexador_1.Simbolo(pitugues_2.default.CONSTRUTOR, 'construtor', null, -1, -1);
|
|
821
822
|
// Se houver chamadas recursivas à função, precisamos definir um tipo
|
|
822
823
|
// para ela. Vai ser atualizado após avaliação do corpo da função.
|
|
823
824
|
this.pilhaEscopos.definirInformacoesVariavel(simbolo.lexema, new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(simbolo.lexema, 'qualquer'));
|
|
@@ -835,55 +836,94 @@ class AvaliadorSintaticoPitugues {
|
|
|
835
836
|
throw this.erro(this.simboloAtual(), 'Função não pode ter mais de 255 parâmetros.');
|
|
836
837
|
}
|
|
837
838
|
const parametro = {};
|
|
838
|
-
if (this.simboloAtual().tipo ===
|
|
839
|
-
this.consumir(
|
|
839
|
+
if (this.simboloAtual().tipo === pitugues_2.default.MULTIPLICACAO) {
|
|
840
|
+
this.consumir(pitugues_2.default.MULTIPLICACAO, null);
|
|
840
841
|
parametro.abrangencia = 'multiplo';
|
|
841
842
|
}
|
|
842
843
|
else {
|
|
843
844
|
parametro.abrangencia = 'padrao';
|
|
844
845
|
}
|
|
845
|
-
parametro.nome = this.consumir(
|
|
846
|
-
if (this.verificarSeSimboloAtualEIgualA(
|
|
846
|
+
parametro.nome = this.consumir(pitugues_2.default.IDENTIFICADOR, 'Esperado nome do parâmetro.');
|
|
847
|
+
if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.IGUAL)) {
|
|
847
848
|
parametro.valorPadrao = this.primario();
|
|
848
849
|
}
|
|
849
850
|
this.pilhaEscopos.definirInformacoesVariavel(parametro.nome.lexema, new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(parametro.nome.lexema, parametro.tipoDado || 'qualquer'));
|
|
850
851
|
parametros.push(parametro);
|
|
851
852
|
if (parametro.abrangencia === 'multiplo')
|
|
852
853
|
break;
|
|
853
|
-
} while (this.verificarSeSimboloAtualEIgualA(
|
|
854
|
+
} while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.VIRGULA));
|
|
854
855
|
return parametros;
|
|
855
856
|
}
|
|
857
|
+
verificarDefinicaoTipoAtual() {
|
|
858
|
+
const tipos = [...Object.values(pitugues_1.default)];
|
|
859
|
+
if (this.simbolos[this.atual].lexema in this.tiposDefinidosEmCodigo) {
|
|
860
|
+
return this.simbolos[this.atual].lexema;
|
|
861
|
+
}
|
|
862
|
+
const lexemaElementar = this.simbolos[this.atual].lexema.toLowerCase();
|
|
863
|
+
const tipoElementarResolvido = tipos.find((tipo) => tipo === lexemaElementar);
|
|
864
|
+
if (!tipoElementarResolvido) {
|
|
865
|
+
throw this.erro(this.simbolos[this.atual], `Tipo de dados desconhecido: '${this.simbolos[this.atual].lexema}'.`);
|
|
866
|
+
}
|
|
867
|
+
if (this.verificarTipoProximoSimbolo(pitugues_2.default.COLCHETE_ESQUERDO)) {
|
|
868
|
+
const tiposVetores = [
|
|
869
|
+
'inteiro[]',
|
|
870
|
+
'numero[]',
|
|
871
|
+
'número[]',
|
|
872
|
+
'qualquer[]',
|
|
873
|
+
'real[]',
|
|
874
|
+
'texto[]',
|
|
875
|
+
];
|
|
876
|
+
this.avancarEDevolverAnterior();
|
|
877
|
+
if (!this.verificarTipoProximoSimbolo(pitugues_2.default.COLCHETE_DIREITO)) {
|
|
878
|
+
throw this.erro(this.simbolos[this.atual], `Esperado símbolo de fechamento do vetor: ']'. Atual: ${this.simbolos[this.atual].lexema}`);
|
|
879
|
+
}
|
|
880
|
+
const tipoVetor = tiposVetores.find((tipo) => tipo === `${lexemaElementar}[]`);
|
|
881
|
+
this.avancarEDevolverAnterior();
|
|
882
|
+
return tipoVetor;
|
|
883
|
+
}
|
|
884
|
+
return tipoElementarResolvido;
|
|
885
|
+
}
|
|
856
886
|
corpoDaFuncao(tipo) {
|
|
857
|
-
|
|
887
|
+
// O parêntese esquerdo é considerado o símbolo inicial para
|
|
888
|
+
// fins de localização.
|
|
889
|
+
const parenteseEsquerdo = this.consumir(pitugues_2.default.PARENTESE_ESQUERDO, `Esperado '(' após o nome ${tipo}.`);
|
|
858
890
|
let parametros = [];
|
|
859
|
-
if (!this.verificarTipoSimboloAtual(
|
|
891
|
+
if (!this.verificarTipoSimboloAtual(pitugues_2.default.PARENTESE_DIREITO)) {
|
|
860
892
|
parametros = this.logicaComumParametros();
|
|
861
893
|
}
|
|
862
|
-
this.consumir(
|
|
863
|
-
|
|
894
|
+
this.consumir(pitugues_2.default.PARENTESE_DIREITO, "Esperado ')' após parâmetros.");
|
|
895
|
+
let tipoRetorno = 'qualquer';
|
|
896
|
+
let definicaoExplicitaDeTipo = false;
|
|
897
|
+
if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.SETA)) {
|
|
898
|
+
tipoRetorno = this.verificarDefinicaoTipoAtual();
|
|
899
|
+
this.avancarEDevolverAnterior();
|
|
900
|
+
definicaoExplicitaDeTipo = true;
|
|
901
|
+
}
|
|
902
|
+
this.consumir(pitugues_2.default.DOIS_PONTOS, `Esperado ':' antes do escopo do ${tipo}.`);
|
|
864
903
|
const corpo = this.blocoEscopo();
|
|
865
|
-
|
|
904
|
+
tipoRetorno = (0, comum_1.logicaDescobertaRetornoFuncao)(this, corpo, tipoRetorno, definicaoExplicitaDeTipo, parenteseEsquerdo);
|
|
905
|
+
return new construtos_1.FuncaoConstruto(this.hashArquivo, 0, parametros, corpo, tipoRetorno, definicaoExplicitaDeTipo);
|
|
866
906
|
}
|
|
867
907
|
declaracaoDeClasse() {
|
|
868
|
-
const simbolo = this.consumir(
|
|
908
|
+
const simbolo = this.consumir(pitugues_2.default.IDENTIFICADOR, 'Esperado nome da classe.');
|
|
869
909
|
let superClasse = null;
|
|
870
|
-
if (this.verificarSeSimboloAtualEIgualA(
|
|
871
|
-
const simboloSuperclasse = this.consumir(
|
|
910
|
+
if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.HERDA)) {
|
|
911
|
+
const simboloSuperclasse = this.consumir(pitugues_2.default.IDENTIFICADOR, 'Esperado nome da Superclasse.');
|
|
872
912
|
this.superclasseAtual = simboloSuperclasse.lexema;
|
|
873
913
|
superClasse = new construtos_1.Variavel(this.hashArquivo, this.simboloAnterior());
|
|
874
914
|
}
|
|
875
|
-
this.consumir(
|
|
915
|
+
this.consumir(pitugues_2.default.DOIS_PONTOS, "Esperado ':' antes do escopo da classe.");
|
|
876
916
|
const metodos = [];
|
|
877
917
|
while (!this.estaNoFinal() &&
|
|
878
|
-
this.verificarSeSimboloAtualEIgualA(
|
|
879
|
-
metodos.push(this.funcao('método', this.simbolos[this.atual - 1].tipo ===
|
|
918
|
+
this.verificarSeSimboloAtualEIgualA(pitugues_2.default.CONSTRUTOR, pitugues_2.default.FUNCAO, pitugues_2.default.FUNÇÃO)) {
|
|
919
|
+
metodos.push(this.funcao('método', this.simbolos[this.atual - 1].tipo === pitugues_2.default.CONSTRUTOR));
|
|
880
920
|
}
|
|
881
921
|
this.superclasseAtual = undefined;
|
|
882
922
|
return new declaracoes_1.Classe(simbolo, superClasse, metodos);
|
|
883
923
|
}
|
|
884
924
|
declaracaoFalhar() {
|
|
885
925
|
const simboloFalha = this.simbolos[this.atual - 1];
|
|
886
|
-
const textoFalha = this.consumir(
|
|
926
|
+
const textoFalha = this.consumir(pitugues_2.default.TEXTO, 'Esperado texto para explicar falha.');
|
|
887
927
|
return new declaracoes_1.Falhar(simboloFalha, textoFalha.literal);
|
|
888
928
|
}
|
|
889
929
|
/**
|
|
@@ -893,13 +933,13 @@ class AvaliadorSintaticoPitugues {
|
|
|
893
933
|
*/
|
|
894
934
|
resolverDeclaracaoForaDeBloco() {
|
|
895
935
|
try {
|
|
896
|
-
if ((this.verificarTipoSimboloAtual(
|
|
897
|
-
this.verificarTipoSimboloAtual(
|
|
898
|
-
this.verificarTipoProximoSimbolo(
|
|
936
|
+
if ((this.verificarTipoSimboloAtual(pitugues_2.default.FUNCAO) ||
|
|
937
|
+
this.verificarTipoSimboloAtual(pitugues_2.default.FUNÇÃO)) &&
|
|
938
|
+
this.verificarTipoProximoSimbolo(pitugues_2.default.IDENTIFICADOR)) {
|
|
899
939
|
this.avancarEDevolverAnterior();
|
|
900
940
|
return this.funcao('funcao');
|
|
901
941
|
}
|
|
902
|
-
if (this.verificarSeSimboloAtualEIgualA(
|
|
942
|
+
if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.CLASSE))
|
|
903
943
|
return this.declaracaoDeClasse();
|
|
904
944
|
return this.resolverDeclaracao();
|
|
905
945
|
}
|