@designliquido/delegua 0.45.10 → 0.46.1

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.
Files changed (39) hide show
  1. package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
  2. package/avaliador-sintatico/avaliador-sintatico.js +28 -24
  3. package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
  4. package/avaliador-sintatico/comum.d.ts.map +1 -1
  5. package/avaliador-sintatico/comum.js +1 -1
  6. package/avaliador-sintatico/comum.js.map +1 -1
  7. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts.map +1 -1
  8. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +22 -24
  9. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
  10. package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.d.ts.map +1 -1
  11. package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.js +5 -0
  12. package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.js.map +1 -1
  13. package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.d.ts +0 -1
  14. package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.d.ts.map +1 -1
  15. package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.js +4 -87
  16. package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.js.map +1 -1
  17. package/bibliotecas/biblioteca-global.d.ts.map +1 -1
  18. package/bibliotecas/biblioteca-global.js +2 -1
  19. package/bibliotecas/biblioteca-global.js.map +1 -1
  20. package/bibliotecas/primitivas-dicionario.d.ts.map +1 -1
  21. package/bibliotecas/primitivas-dicionario.js +22 -0
  22. package/bibliotecas/primitivas-dicionario.js.map +1 -1
  23. package/bin/package.json +1 -1
  24. package/informacao-variavel-ou-constante.d.ts +2 -1
  25. package/informacao-variavel-ou-constante.d.ts.map +1 -1
  26. package/informacao-variavel-ou-constante.js +3 -2
  27. package/informacao-variavel-ou-constante.js.map +1 -1
  28. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts +2 -2
  29. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts.map +1 -1
  30. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js +2 -2
  31. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js.map +1 -1
  32. package/lexador/dialetos/lexador-pitugues.d.ts.map +1 -1
  33. package/lexador/dialetos/lexador-pitugues.js +1 -1
  34. package/lexador/dialetos/lexador-pitugues.js.map +1 -1
  35. package/lexador/dialetos/lexador-portugol-ipt.d.ts.map +1 -1
  36. package/lexador/dialetos/lexador-portugol-ipt.js +11 -0
  37. package/lexador/dialetos/lexador-portugol-ipt.js.map +1 -1
  38. package/package.json +1 -1
  39. package/umd/delegua.js +100 -141
package/umd/delegua.js CHANGED
@@ -638,6 +638,12 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
638
638
  const possiveisErros = [];
639
639
  for (const [indice, argumentoEntidadeChamada] of argumentosEntidadeChamada.entries()) {
640
640
  const argumentoUtilizado = argumentosUtilizados[indice];
641
+ if (!argumentoUtilizado) {
642
+ if (argumentoEntidadeChamada.obrigatorio) {
643
+ possiveisErros.push(`Argumento ${argumentoEntidadeChamada.nome} é obrigatório, mas não foi fornecido.`);
644
+ }
645
+ continue;
646
+ }
641
647
  if (argumentoUtilizado.tipo === null || argumentoUtilizado.tipo === undefined) {
642
648
  continue;
643
649
  }
@@ -1776,85 +1782,83 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
1776
1782
  this.pilhaEscopos = new pilha_escopos_1.PilhaEscopos();
1777
1783
  this.pilhaEscopos.empilhar(new informacao_escopo_1.InformacaoEscopo());
1778
1784
  // Funções nativas de Delégua
1779
- this.pilhaEscopos.definirInformacoesVariavel('aleatorio', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('aleatorio', 'inteiro', [
1780
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('número', 'número'),
1781
- ]));
1782
- this.pilhaEscopos.definirInformacoesVariavel('aleatorioEntre', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('aleatorioEntre', 'inteiro', [
1785
+ this.pilhaEscopos.definirInformacoesVariavel('aleatorio', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('aleatorio', 'número'));
1786
+ this.pilhaEscopos.definirInformacoesVariavel('aleatorioEntre', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('aleatorioEntre', 'número', true, [
1783
1787
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('minimo', 'número'),
1784
1788
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('maximo', 'número'),
1785
1789
  ]));
1786
- this.pilhaEscopos.definirInformacoesVariavel('algum', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('algum', 'lógico', [
1790
+ this.pilhaEscopos.definirInformacoesVariavel('algum', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('algum', 'lógico', true, [
1787
1791
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
1788
1792
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função'),
1789
1793
  ]));
1790
- this.pilhaEscopos.definirInformacoesVariavel('encontrar', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrar', 'qualquer', [
1794
+ this.pilhaEscopos.definirInformacoesVariavel('encontrar', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrar', 'qualquer', true, [
1791
1795
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
1792
1796
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função'),
1793
1797
  ]));
1794
- this.pilhaEscopos.definirInformacoesVariavel('encontrarIndice', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrarIndice', 'inteiro', [
1798
+ this.pilhaEscopos.definirInformacoesVariavel('encontrarIndice', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrarIndice', 'inteiro', true, [
1795
1799
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
1796
1800
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função'),
1797
1801
  ]));
1798
- this.pilhaEscopos.definirInformacoesVariavel('encontrarUltimo', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrarUltimo', 'inteiro', [
1802
+ this.pilhaEscopos.definirInformacoesVariavel('encontrarUltimo', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrarUltimo', 'inteiro', true, [
1799
1803
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
1800
1804
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função'),
1801
1805
  ]));
1802
- this.pilhaEscopos.definirInformacoesVariavel('encontrarUltimoIndice', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrarUltimoIndice', 'inteiro', [
1806
+ this.pilhaEscopos.definirInformacoesVariavel('encontrarUltimoIndice', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrarUltimoIndice', 'inteiro', true, [
1803
1807
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
1804
1808
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função'),
1805
1809
  ]));
1806
- this.pilhaEscopos.definirInformacoesVariavel('filtrarPor', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('filtrarPor', 'qualquer[]', [
1810
+ this.pilhaEscopos.definirInformacoesVariavel('filtrarPor', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('filtrarPor', 'qualquer[]', true, [
1807
1811
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
1808
1812
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoFiltragem', 'função'),
1809
1813
  ]));
1810
- this.pilhaEscopos.definirInformacoesVariavel('incluido', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('incluido', 'lógico', [
1814
+ this.pilhaEscopos.definirInformacoesVariavel('incluido', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('incluido', 'lógico', true, [
1811
1815
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
1812
1816
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valor', 'qualquer'),
1813
1817
  ]));
1814
- this.pilhaEscopos.definirInformacoesVariavel('inteiro', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('inteiro', 'inteiro', [
1818
+ this.pilhaEscopos.definirInformacoesVariavel('inteiro', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('inteiro', 'inteiro', true, [
1815
1819
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valor', 'qualquer'),
1816
1820
  ]));
1817
- this.pilhaEscopos.definirInformacoesVariavel('mapear', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('mapear', 'qualquer[]', [
1821
+ this.pilhaEscopos.definirInformacoesVariavel('mapear', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('mapear', 'qualquer[]', true, [
1818
1822
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
1819
1823
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoMapeamento', 'função'),
1820
1824
  ]));
1821
- this.pilhaEscopos.definirInformacoesVariavel('numero', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('número', 'número', [
1825
+ this.pilhaEscopos.definirInformacoesVariavel('numero', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('número', 'número', true, [
1822
1826
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer'),
1823
1827
  ]));
1824
- this.pilhaEscopos.definirInformacoesVariavel('número', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('número', 'número', [
1828
+ this.pilhaEscopos.definirInformacoesVariavel('número', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('número', 'número', true, [
1825
1829
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer'),
1826
1830
  ]));
1827
- this.pilhaEscopos.definirInformacoesVariavel('ordenar', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('ordenar', 'qualquer[]', [
1831
+ this.pilhaEscopos.definirInformacoesVariavel('ordenar', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('ordenar', 'qualquer[]', true, [
1828
1832
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
1829
1833
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoOrdenacao', 'função'),
1830
1834
  ]));
1831
- this.pilhaEscopos.definirInformacoesVariavel('paraCada', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('paraCada', 'qualquer[]', [
1835
+ this.pilhaEscopos.definirInformacoesVariavel('paraCada', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('paraCada', 'qualquer[]', true, [
1832
1836
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
1833
1837
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoFiltragem', 'função'),
1834
1838
  ]));
1835
- this.pilhaEscopos.definirInformacoesVariavel('primeiroEmCondicao', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('primeiroEmCondicao', 'qualquer', [
1839
+ this.pilhaEscopos.definirInformacoesVariavel('primeiroEmCondicao', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('primeiroEmCondicao', 'qualquer', true, [
1836
1840
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
1837
1841
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoFiltragem', 'função'),
1838
1842
  ]));
1839
- this.pilhaEscopos.definirInformacoesVariavel('real', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('real', 'número', [
1843
+ this.pilhaEscopos.definirInformacoesVariavel('real', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('real', 'número', true, [
1840
1844
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer'),
1841
1845
  ]));
1842
- this.pilhaEscopos.definirInformacoesVariavel('reduzir', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('reduzir', 'qualquer', [
1846
+ this.pilhaEscopos.definirInformacoesVariavel('reduzir', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('reduzir', 'qualquer', true, [
1843
1847
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
1844
1848
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoReducao', 'função'),
1845
1849
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorInicial', 'qualquer'),
1846
1850
  ]));
1847
- this.pilhaEscopos.definirInformacoesVariavel('tamanho', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('tamanho', 'inteiro', [
1851
+ this.pilhaEscopos.definirInformacoesVariavel('tamanho', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('tamanho', 'inteiro', true, [
1848
1852
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('objeto', 'qualquer'),
1849
1853
  ]));
1850
- this.pilhaEscopos.definirInformacoesVariavel('texto', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('texto', 'texto', [
1854
+ this.pilhaEscopos.definirInformacoesVariavel('texto', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('texto', 'texto', true, [
1851
1855
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer'),
1852
1856
  ]));
1853
- this.pilhaEscopos.definirInformacoesVariavel('todosEmCondicao', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('todosEmCondicao', 'lógico', [
1857
+ this.pilhaEscopos.definirInformacoesVariavel('todosEmCondicao', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('todosEmCondicao', 'lógico', true, [
1854
1858
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
1855
1859
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoCondicional', 'função'),
1856
1860
  ]));
1857
- this.pilhaEscopos.definirInformacoesVariavel('tupla', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('tupla', 'tupla', [
1861
+ this.pilhaEscopos.definirInformacoesVariavel('tupla', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('tupla', 'tupla', true, [
1858
1862
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
1859
1863
  ]));
1860
1864
  // TODO: Escrever algum tipo de validação aqui.
@@ -1906,7 +1910,7 @@ const informacao_variavel_ou_constante_1 = require("../informacao-variavel-ou-co
1906
1910
  function registrarPrimitiva(primitivasConhecidas, tipo, catalogoPrimitivas) {
1907
1911
  primitivasConhecidas[tipo] = {};
1908
1912
  for (const [nomePrimitivaDicionario, dadosPrimitiva] of Object.entries(catalogoPrimitivas)) {
1909
- primitivasConhecidas[tipo][nomePrimitivaDicionario] = new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(nomePrimitivaDicionario, tipo, dadosPrimitiva.argumentos);
1913
+ primitivasConhecidas[tipo][nomePrimitivaDicionario] = new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(nomePrimitivaDicionario, tipo, true, dadosPrimitiva.argumentos);
1910
1914
  }
1911
1915
  }
1912
1916
 
@@ -3485,85 +3489,83 @@ class AvaliadorSintaticoPitugues {
3485
3489
  this.pilhaEscopos = new pilha_escopos_1.PilhaEscopos();
3486
3490
  this.pilhaEscopos.empilhar(new informacao_escopo_1.InformacaoEscopo());
3487
3491
  // Funções nativas de Delégua (e de Pituguês também, por enquanto)
3488
- this.pilhaEscopos.definirInformacoesVariavel('aleatorio', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('aleatorio', 'inteiro', [
3489
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('número', 'número'),
3490
- ]));
3491
- this.pilhaEscopos.definirInformacoesVariavel('aleatorioEntre', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('aleatorioEntre', 'inteiro', [
3492
+ this.pilhaEscopos.definirInformacoesVariavel('aleatorio', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('aleatorio', 'número'));
3493
+ this.pilhaEscopos.definirInformacoesVariavel('aleatorioEntre', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('aleatorioEntre', 'número', true, [
3492
3494
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('minimo', 'número'),
3493
3495
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('maximo', 'número'),
3494
3496
  ]));
3495
- this.pilhaEscopos.definirInformacoesVariavel('algum', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('algum', 'lógico', [
3497
+ this.pilhaEscopos.definirInformacoesVariavel('algum', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('algum', 'lógico', true, [
3496
3498
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
3497
3499
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função'),
3498
3500
  ]));
3499
- this.pilhaEscopos.definirInformacoesVariavel('encontrar', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrar', 'qualquer', [
3501
+ this.pilhaEscopos.definirInformacoesVariavel('encontrar', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrar', 'qualquer', true, [
3500
3502
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
3501
3503
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função'),
3502
3504
  ]));
3503
- this.pilhaEscopos.definirInformacoesVariavel('encontrarIndice', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrarIndice', 'inteiro', [
3505
+ this.pilhaEscopos.definirInformacoesVariavel('encontrarIndice', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrarIndice', 'inteiro', true, [
3504
3506
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
3505
3507
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função'),
3506
3508
  ]));
3507
- this.pilhaEscopos.definirInformacoesVariavel('encontrarUltimo', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrarUltimo', 'inteiro', [
3509
+ this.pilhaEscopos.definirInformacoesVariavel('encontrarUltimo', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrarUltimo', 'inteiro', true, [
3508
3510
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
3509
3511
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função'),
3510
3512
  ]));
3511
- this.pilhaEscopos.definirInformacoesVariavel('encontrarUltimoIndice', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrarUltimoIndice', 'inteiro', [
3513
+ this.pilhaEscopos.definirInformacoesVariavel('encontrarUltimoIndice', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrarUltimoIndice', 'inteiro', true, [
3512
3514
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
3513
3515
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função'),
3514
3516
  ]));
3515
- this.pilhaEscopos.definirInformacoesVariavel('filtrarPor', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('filtrarPor', 'qualquer[]', [
3517
+ this.pilhaEscopos.definirInformacoesVariavel('filtrarPor', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('filtrarPor', 'qualquer[]', true, [
3516
3518
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
3517
3519
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoFiltragem', 'função'),
3518
3520
  ]));
3519
- this.pilhaEscopos.definirInformacoesVariavel('incluido', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('incluido', 'lógico', [
3521
+ this.pilhaEscopos.definirInformacoesVariavel('incluido', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('incluido', 'lógico', true, [
3520
3522
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
3521
3523
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valor', 'qualquer'),
3522
3524
  ]));
3523
- this.pilhaEscopos.definirInformacoesVariavel('inteiro', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('inteiro', 'inteiro', [
3525
+ this.pilhaEscopos.definirInformacoesVariavel('inteiro', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('inteiro', 'inteiro', true, [
3524
3526
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valor', 'qualquer'),
3525
3527
  ]));
3526
- this.pilhaEscopos.definirInformacoesVariavel('mapear', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('mapear', 'qualquer[]', [
3528
+ this.pilhaEscopos.definirInformacoesVariavel('mapear', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('mapear', 'qualquer[]', true, [
3527
3529
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
3528
3530
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoMapeamento', 'função'),
3529
3531
  ]));
3530
- this.pilhaEscopos.definirInformacoesVariavel('numero', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('número', 'número', [
3532
+ this.pilhaEscopos.definirInformacoesVariavel('numero', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('número', 'número', true, [
3531
3533
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer'),
3532
3534
  ]));
3533
- this.pilhaEscopos.definirInformacoesVariavel('número', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('número', 'número', [
3535
+ this.pilhaEscopos.definirInformacoesVariavel('número', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('número', 'número', true, [
3534
3536
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer'),
3535
3537
  ]));
3536
- this.pilhaEscopos.definirInformacoesVariavel('ordenar', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('ordenar', 'qualquer[]', [
3538
+ this.pilhaEscopos.definirInformacoesVariavel('ordenar', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('ordenar', 'qualquer[]', true, [
3537
3539
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
3538
3540
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoOrdenacao', 'função'),
3539
3541
  ]));
3540
- this.pilhaEscopos.definirInformacoesVariavel('paraCada', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('paraCada', 'qualquer[]', [
3542
+ this.pilhaEscopos.definirInformacoesVariavel('paraCada', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('paraCada', 'qualquer[]', true, [
3541
3543
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
3542
3544
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoFiltragem', 'função'),
3543
3545
  ]));
3544
- this.pilhaEscopos.definirInformacoesVariavel('primeiroEmCondicao', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('primeiroEmCondicao', 'qualquer', [
3546
+ this.pilhaEscopos.definirInformacoesVariavel('primeiroEmCondicao', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('primeiroEmCondicao', 'qualquer', true, [
3545
3547
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
3546
3548
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoFiltragem', 'função'),
3547
3549
  ]));
3548
- this.pilhaEscopos.definirInformacoesVariavel('real', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('real', 'número', [
3550
+ this.pilhaEscopos.definirInformacoesVariavel('real', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('real', 'número', true, [
3549
3551
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer'),
3550
3552
  ]));
3551
- this.pilhaEscopos.definirInformacoesVariavel('reduzir', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('reduzir', 'qualquer', [
3553
+ this.pilhaEscopos.definirInformacoesVariavel('reduzir', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('reduzir', 'qualquer', true, [
3552
3554
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
3553
3555
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoReducao', 'função'),
3554
3556
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorInicial', 'qualquer'),
3555
3557
  ]));
3556
- this.pilhaEscopos.definirInformacoesVariavel('tamanho', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('tamanho', 'inteiro', [
3558
+ this.pilhaEscopos.definirInformacoesVariavel('tamanho', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('tamanho', 'inteiro', true, [
3557
3559
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('objeto', 'qualquer'),
3558
3560
  ]));
3559
- this.pilhaEscopos.definirInformacoesVariavel('texto', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('texto', 'texto', [
3561
+ this.pilhaEscopos.definirInformacoesVariavel('texto', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('texto', 'texto', true, [
3560
3562
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer'),
3561
3563
  ]));
3562
- this.pilhaEscopos.definirInformacoesVariavel('todosEmCondicao', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('todosEmCondicao', 'lógico', [
3564
+ this.pilhaEscopos.definirInformacoesVariavel('todosEmCondicao', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('todosEmCondicao', 'lógico', true, [
3563
3565
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
3564
3566
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoCondicional', 'função'),
3565
3567
  ]));
3566
- this.pilhaEscopos.definirInformacoesVariavel('tupla', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('tupla', 'tupla', [
3568
+ this.pilhaEscopos.definirInformacoesVariavel('tupla', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('tupla', 'tupla', true, [
3567
3569
  new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
3568
3570
  ]));
3569
3571
  }
@@ -3622,6 +3624,11 @@ class AvaliadorSintaticoPortugolIpt extends avaliador_sintatico_base_1.Avaliador
3622
3624
  case portugol_ipt_1.default.TEXTO:
3623
3625
  const simboloAnterior = this.avancarEDevolverAnterior();
3624
3626
  return new construtos_1.Literal(this.hashArquivo, Number(simboloAnterior.linha), simboloAnterior.literal);
3627
+ case portugol_ipt_1.default.PARENTESE_ESQUERDO:
3628
+ this.avancarEDevolverAnterior();
3629
+ const expressao = this.expressao();
3630
+ this.consumir(portugol_ipt_1.default.PARENTESE_DIREITO, "Esperado ')' após a expressão.");
3631
+ return new construtos_1.Agrupamento(this.hashArquivo, Number(this.simbolos[this.atual].linha), expressao);
3625
3632
  }
3626
3633
  }
3627
3634
  /**
@@ -3813,16 +3820,16 @@ class AvaliadorSintaticoTenda extends avaliador_sintatico_base_1.AvaliadorSintat
3813
3820
  this.tiposDeFerramentasExternas = {};
3814
3821
  this.primitivasConhecidas = {};
3815
3822
  for (const [nomePrimitivaDicionario, dadosPrimitiva] of Object.entries(primitivas_dicionario_1.default)) {
3816
- this.primitivasConhecidas[nomePrimitivaDicionario] = new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(nomePrimitivaDicionario, 'dicionário', dadosPrimitiva.argumentos);
3823
+ this.primitivasConhecidas[nomePrimitivaDicionario] = new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(nomePrimitivaDicionario, 'dicionário', true, dadosPrimitiva.argumentos);
3817
3824
  }
3818
3825
  for (const [nomePrimitivaNumero, dadosPrimitiva] of Object.entries(primitivas_numero_1.default)) {
3819
- this.primitivasConhecidas[nomePrimitivaNumero] = new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(nomePrimitivaNumero, 'número', dadosPrimitiva.argumentos);
3826
+ this.primitivasConhecidas[nomePrimitivaNumero] = new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(nomePrimitivaNumero, 'número', true, dadosPrimitiva.argumentos);
3820
3827
  }
3821
3828
  for (const [nomePrimitivaTexto, dadosPrimitiva] of Object.entries(primitivas_texto_1.default)) {
3822
- this.primitivasConhecidas[nomePrimitivaTexto] = new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(nomePrimitivaTexto, 'texto', dadosPrimitiva.argumentos);
3829
+ this.primitivasConhecidas[nomePrimitivaTexto] = new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(nomePrimitivaTexto, 'texto', true, dadosPrimitiva.argumentos);
3823
3830
  }
3824
3831
  for (const [nomePrimitivaVetor, dadosPrimitiva] of Object.entries(primitivas_vetor_1.default)) {
3825
- this.primitivasConhecidas[nomePrimitivaVetor] = new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(nomePrimitivaVetor, 'vetor', dadosPrimitiva.argumentos);
3832
+ this.primitivasConhecidas[nomePrimitivaVetor] = new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(nomePrimitivaVetor, 'vetor', true, dadosPrimitiva.argumentos);
3826
3833
  }
3827
3834
  // TODO: Por enquanto não há necessidade de validar argumentos aqui, mas isso pode mudar no futuro.
3828
3835
  this.primitivasConhecidas['inteiro'] = new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('inteiro', 'inteiro');
@@ -4707,93 +4714,10 @@ class AvaliadorSintaticoTenda extends avaliador_sintatico_base_1.AvaliadorSintat
4707
4714
  }
4708
4715
  /**
4709
4716
  * Inicializa o primeiro nível da pilha de escopos, normalmente com ítens da biblioteca global.
4710
- * TODO: Esta abordagem deve ser depreciada, em favor do novo suporte a referências de funções.
4711
4717
  */
4712
4718
  inicializarPilhaEscopos() {
4713
4719
  this.pilhaEscopos = new pilha_escopos_1.PilhaEscopos();
4714
4720
  this.pilhaEscopos.empilhar(new informacao_escopo_1.InformacaoEscopo());
4715
- // Funções nativas de Delégua
4716
- this.pilhaEscopos.definirInformacoesVariavel('aleatorio', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('aleatorio', 'inteiro', [
4717
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('número', 'número')
4718
- ]));
4719
- this.pilhaEscopos.definirInformacoesVariavel('aleatorioEntre', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('aleatorioEntre', 'inteiro', [
4720
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('minimo', 'número'),
4721
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('maximo', 'número')
4722
- ]));
4723
- this.pilhaEscopos.definirInformacoesVariavel('algum', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('algum', 'lógico', [
4724
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
4725
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função')
4726
- ]));
4727
- this.pilhaEscopos.definirInformacoesVariavel('encontrar', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrar', 'qualquer', [
4728
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
4729
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função')
4730
- ]));
4731
- this.pilhaEscopos.definirInformacoesVariavel('encontrarIndice', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrarIndice', 'inteiro', [
4732
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
4733
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função')
4734
- ]));
4735
- this.pilhaEscopos.definirInformacoesVariavel('encontrarUltimo', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrarUltimo', 'inteiro', [
4736
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
4737
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função')
4738
- ]));
4739
- this.pilhaEscopos.definirInformacoesVariavel('encontrarUltimoIndice', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrarUltimoIndice', 'inteiro', [
4740
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
4741
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função')
4742
- ]));
4743
- this.pilhaEscopos.definirInformacoesVariavel('filtrarPor', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('filtrarPor', 'qualquer[]', [
4744
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
4745
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoFiltragem', 'função')
4746
- ]));
4747
- this.pilhaEscopos.definirInformacoesVariavel('incluido', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('incluido', 'lógico', [
4748
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
4749
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valor', 'qualquer')
4750
- ]));
4751
- this.pilhaEscopos.definirInformacoesVariavel('inteiro', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('inteiro', 'inteiro', [
4752
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valor', 'qualquer')
4753
- ]));
4754
- this.pilhaEscopos.definirInformacoesVariavel('mapear', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('mapear', 'qualquer[]', [
4755
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
4756
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoMapeamento', 'função')
4757
- ]));
4758
- this.pilhaEscopos.definirInformacoesVariavel('numero', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('número', 'número', [
4759
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer')
4760
- ]));
4761
- this.pilhaEscopos.definirInformacoesVariavel('número', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('número', 'número', [
4762
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer')
4763
- ]));
4764
- this.pilhaEscopos.definirInformacoesVariavel('ordenar', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('ordenar', 'qualquer[]', [
4765
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
4766
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoOrdenacao', 'função')
4767
- ]));
4768
- this.pilhaEscopos.definirInformacoesVariavel('paraCada', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('paraCada', 'qualquer[]', [
4769
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
4770
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoFiltragem', 'função')
4771
- ]));
4772
- this.pilhaEscopos.definirInformacoesVariavel('primeiroEmCondicao', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('primeiroEmCondicao', 'qualquer', [
4773
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
4774
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoFiltragem', 'função')
4775
- ]));
4776
- this.pilhaEscopos.definirInformacoesVariavel('real', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('real', 'número', [
4777
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer')
4778
- ]));
4779
- this.pilhaEscopos.definirInformacoesVariavel('reduzir', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('reduzir', 'qualquer', [
4780
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
4781
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoReducao', 'função'),
4782
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorInicial', 'qualquer')
4783
- ]));
4784
- this.pilhaEscopos.definirInformacoesVariavel('tamanho', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('tamanho', 'inteiro', [
4785
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('objeto', 'qualquer')
4786
- ]));
4787
- this.pilhaEscopos.definirInformacoesVariavel('texto', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('texto', 'texto', [
4788
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer')
4789
- ]));
4790
- this.pilhaEscopos.definirInformacoesVariavel('todosEmCondicao', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('todosEmCondicao', 'lógico', [
4791
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
4792
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoCondicional', 'função')
4793
- ]));
4794
- this.pilhaEscopos.definirInformacoesVariavel('tupla', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('tupla', 'tupla', [
4795
- new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]')
4796
- ]));
4797
4721
  // TODO: Escrever algum tipo de validação aqui.
4798
4722
  for (const tipos of Object.values(this.tiposDeFerramentasExternas)) {
4799
4723
  for (const [nomeTipo, tipo] of Object.entries(tipos)) {
@@ -5524,7 +5448,8 @@ async function filtrarPor(interpretador, vetor, funcaoFiltragem) {
5524
5448
  if (!Array.isArray(valorVetor)) {
5525
5449
  return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função filtrarPor() deve ser um vetor.'));
5526
5450
  }
5527
- if (valorFuncaoFiltragem.constructor.name !== 'DeleguaFuncao') {
5451
+ const construtorResolvido = valorFuncaoFiltragem.constructor.name.replaceAll('_', '');
5452
+ if (construtorResolvido !== 'DeleguaFuncao') {
5528
5453
  return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função filtrarPor() deve ser uma função.'));
5529
5454
  }
5530
5455
  const resultados = [];
@@ -5863,6 +5788,7 @@ async function tupla(interpretador, vetor) {
5863
5788
  },{"../construtos":44,"../excecoes":102,"../interpretador/estruturas":138,"../interpretador/estruturas/descritor-tipo-classe":136,"../interpretador/estruturas/funcao-padrao":137,"../interpretador/estruturas/objeto-delegua-classe":141}],18:[function(require,module,exports){
5864
5789
  "use strict";
5865
5790
  Object.defineProperty(exports, "__esModule", { value: true });
5791
+ const informacao_variavel_ou_constante_1 = require("../informacao-variavel-ou-constante");
5866
5792
  exports.default = {
5867
5793
  chaves: {
5868
5794
  tipoRetorno: 'texto[]',
@@ -5871,6 +5797,27 @@ exports.default = {
5871
5797
  return Promise.resolve(Object.keys(valor));
5872
5798
  },
5873
5799
  },
5800
+ contem: {
5801
+ tipoRetorno: 'lógico',
5802
+ argumentos: [
5803
+ new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('chave', 'texto')
5804
+ ],
5805
+ implementacao: (interpretador, valor, chave) => Promise.resolve(chave in valor)
5806
+ },
5807
+ contém: {
5808
+ tipoRetorno: 'lógico',
5809
+ argumentos: [
5810
+ new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('chave', 'texto')
5811
+ ],
5812
+ implementacao: (interpretador, valor, chave) => Promise.resolve(chave in valor)
5813
+ },
5814
+ remover: {
5815
+ tipoRetorno: 'lógico',
5816
+ argumentos: [
5817
+ new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('chave', 'texto')
5818
+ ],
5819
+ implementacao: (interpretador, valor, chave) => Promise.resolve(delete valor[chave])
5820
+ },
5874
5821
  valores: {
5875
5822
  tipoRetorno: 'qualquer[]',
5876
5823
  argumentos: [],
@@ -5880,7 +5827,7 @@ exports.default = {
5880
5827
  },
5881
5828
  };
5882
5829
 
5883
- },{}],19:[function(require,module,exports){
5830
+ },{"../informacao-variavel-ou-constante":109}],19:[function(require,module,exports){
5884
5831
  "use strict";
5885
5832
  Object.defineProperty(exports, "__esModule", { value: true });
5886
5833
  exports.default = {
@@ -8986,14 +8933,15 @@ function tipoInferenciaParaTipoDadosElementar(tipoInferencia) {
8986
8933
  Object.defineProperty(exports, "__esModule", { value: true });
8987
8934
  exports.InformacaoVariavelOuConstante = void 0;
8988
8935
  class InformacaoVariavelOuConstante {
8989
- constructor(nome, tipo, argumentos = []) {
8936
+ constructor(nome, tipo, obrigatorio = true, argumentos = []) {
8990
8937
  this.argumentos = [];
8991
8938
  this.nome = nome;
8992
8939
  this.tipo = tipo;
8940
+ this.obrigatorio = obrigatorio;
8993
8941
  this.argumentos = argumentos;
8994
8942
  }
8995
8943
  toString() {
8996
- return `<informação-variável-ou-constante nome=${this.nome}, tipo=${this.tipo}, argumentos=${this.argumentos.map((arg) => arg.toString()).join(', ')}>`;
8944
+ return `<informação-variável-ou-constante nome=${this.nome}, tipo=${this.tipo}, obrigatorio=${this.obrigatorio ? 'verdadeiro' : 'falso'} argumentos=${this.argumentos.map((arg) => arg.toString()).join(', ')}>`;
8997
8945
  }
8998
8946
  }
8999
8947
  exports.InformacaoVariavelOuConstante = InformacaoVariavelOuConstante;
@@ -12253,7 +12201,6 @@ class LexadorPitugues {
12253
12201
  if (this.eFinalDaLinha() && !this.eUltimaLinha()) {
12254
12202
  this.linha++;
12255
12203
  this.atual = 0;
12256
- // this.logicaEmLinhaIniciada = false;
12257
12204
  this.analisarIndentacao();
12258
12205
  }
12259
12206
  }
@@ -12554,6 +12501,7 @@ class LexadorPitugues {
12554
12501
  }
12555
12502
  if (this.performance) {
12556
12503
  const deltaMapeamento = (0, browser_process_hrtime_1.default)(inicioMapeamento);
12504
+ // eslint-disable-next-line no-undef
12557
12505
  console.log(`[Lexador] Tempo para mapeamento: ${deltaMapeamento[0] * 1e9 + deltaMapeamento[1]}ns`);
12558
12506
  }
12559
12507
  return {
@@ -12771,6 +12719,14 @@ class LexadorPortugolIpt {
12771
12719
  break;
12772
12720
  }
12773
12721
  break;
12722
+ case '(':
12723
+ this.adicionarSimbolo(portugol_ipt_2.default.PARENTESE_ESQUERDO);
12724
+ this.avancar();
12725
+ break;
12726
+ case ')':
12727
+ this.adicionarSimbolo(portugol_ipt_2.default.PARENTESE_DIREITO);
12728
+ this.avancar();
12729
+ break;
12774
12730
  default:
12775
12731
  if (this.eDigito(caractere))
12776
12732
  this.analisarNumero();
@@ -12794,6 +12750,9 @@ class LexadorPortugolIpt {
12794
12750
  this.linha = 0;
12795
12751
  this.codigo = codigo || [''];
12796
12752
  this.hashArquivo = hashArquivo;
12753
+ for (let iterador = 0; iterador < this.codigo.length; iterador++) {
12754
+ this.codigo[iterador] += '\n';
12755
+ }
12797
12756
  while (!this.eFinalDoCodigo()) {
12798
12757
  this.inicioSimbolo = this.atual;
12799
12758
  this.analisarToken();