@designliquido/delegua 0.45.9 → 0.46.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/README.md +3 -0
- 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 +2 -8
- package/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.js +33 -28
- package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/avaliador-sintatico/comum.d.ts.map +1 -1
- package/avaliador-sintatico/comum.js +1 -1
- package/avaliador-sintatico/comum.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +27 -28
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.d.ts +0 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.d.ts.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.js +4 -87
- package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.js.map +1 -1
- package/bibliotecas/biblioteca-global.d.ts.map +1 -1
- package/bibliotecas/biblioteca-global.js +2 -1
- package/bibliotecas/biblioteca-global.js.map +1 -1
- package/bin/package.json +1 -1
- package/depuracao/cyrb53.d.ts +4 -4
- package/depuracao/cyrb53.d.ts.map +1 -1
- package/depuracao/cyrb53.js +4 -4
- package/informacao-variavel-ou-constante.d.ts +2 -1
- package/informacao-variavel-ou-constante.d.ts.map +1 -1
- package/informacao-variavel-ou-constante.js +3 -2
- package/informacao-variavel-ou-constante.js.map +1 -1
- package/lexador/lexador.d.ts.map +1 -1
- package/lexador/lexador.js +1 -0
- package/lexador/lexador.js.map +1 -1
- package/lexador/palavras-reservadas.d.ts +1 -0
- package/lexador/palavras-reservadas.d.ts.map +1 -1
- package/lexador/palavras-reservadas.js +1 -0
- package/lexador/palavras-reservadas.js.map +1 -1
- package/package.json +1 -1
- package/tradutores/tradutor-reverso-javascript.d.ts.map +1 -1
- package/tradutores/tradutor-reverso-javascript.js.map +1 -1
- package/umd/delegua.js +78 -159
package/umd/delegua.js
CHANGED
|
@@ -56,13 +56,6 @@ class AvaliadorSintaticoBase {
|
|
|
56
56
|
this.atual += 1;
|
|
57
57
|
return this.simbolos[this.atual - 1];
|
|
58
58
|
}
|
|
59
|
-
// TODO: Verificar possibilidade de remoção.
|
|
60
|
-
// Regressão de símbolo é uma roubada por N razões.
|
|
61
|
-
regredirEDevolverAtual() {
|
|
62
|
-
if (this.atual > 0)
|
|
63
|
-
this.atual -= 1;
|
|
64
|
-
return this.simbolos[this.atual];
|
|
65
|
-
}
|
|
66
59
|
verificarSeSimboloAtualEIgualA(...argumentos) {
|
|
67
60
|
for (let i = 0; i < argumentos.length; i++) {
|
|
68
61
|
const tipoAtual = argumentos[i];
|
|
@@ -169,7 +162,8 @@ class AvaliadorSintaticoBase {
|
|
|
169
162
|
return this.atribuir();
|
|
170
163
|
}
|
|
171
164
|
funcao(tipo) {
|
|
172
|
-
|
|
165
|
+
// Avançar `função` ou `funcao`.
|
|
166
|
+
this.avancarEDevolverAnterior();
|
|
173
167
|
const nomeFuncao = this.consumir(comum_1.default.IDENTIFICADOR, `Esperado nome ${tipo}.`);
|
|
174
168
|
return new declaracoes_1.FuncaoDeclaracao(nomeFuncao, this.corpoDaFuncao(tipo));
|
|
175
169
|
}
|
|
@@ -644,12 +638,18 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
644
638
|
const possiveisErros = [];
|
|
645
639
|
for (const [indice, argumentoEntidadeChamada] of argumentosEntidadeChamada.entries()) {
|
|
646
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
|
+
}
|
|
647
647
|
if (argumentoUtilizado.tipo === null || argumentoUtilizado.tipo === undefined) {
|
|
648
648
|
continue;
|
|
649
649
|
}
|
|
650
650
|
const argumentoEntidadeChamadaQualquer = argumentoEntidadeChamada.tipo.startsWith('qualquer');
|
|
651
651
|
const argumentoUtilizadoQualquer = argumentoUtilizado.tipo.startsWith('qualquer');
|
|
652
|
-
// Este caso é tarefa do
|
|
652
|
+
// Este caso é tarefa do analisador semântico apontar.
|
|
653
653
|
if (argumentoEntidadeChamadaQualquer || argumentoUtilizadoQualquer) {
|
|
654
654
|
continue;
|
|
655
655
|
}
|
|
@@ -682,7 +682,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
682
682
|
if (tipoPrimitiva === undefined) {
|
|
683
683
|
// Provavelmente uma chamada a alguma função da biblioteca global.
|
|
684
684
|
const informacoesPossivelFuncaoBibliotecaGlobal = this.pilhaEscopos.obterBibliotecaGlobal(entidadeChamadaResolvidaVariavel.simbolo.lexema);
|
|
685
|
-
if (informacoesPossivelFuncaoBibliotecaGlobal
|
|
685
|
+
if (informacoesPossivelFuncaoBibliotecaGlobal) {
|
|
686
686
|
const erros = this.validarArgumentosEntidadeChamada(informacoesPossivelFuncaoBibliotecaGlobal.argumentos, argumentos);
|
|
687
687
|
if (erros.length > 0) {
|
|
688
688
|
throw new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(entidadeChamadaResolvidaVariavel.simbolo, `Erros ao resolver argumentos de chamada a ${entidadeChamadaResolvidaVariavel.simbolo.lexema}: \n${erros.reduce((mensagem, erro) => (mensagem += `${erro}\n`), '')}`);
|
|
@@ -1530,8 +1530,9 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1530
1530
|
// para ela. Vai ser atualizado após avaliação do corpo da função.
|
|
1531
1531
|
this.pilhaEscopos.definirInformacoesVariavel(simbolo.lexema, new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(simbolo.lexema, 'qualquer'));
|
|
1532
1532
|
const corpoDaFuncao = this.corpoDaFuncao(tipo);
|
|
1533
|
-
|
|
1534
|
-
|
|
1533
|
+
const tipoDaFuncao = `função<${corpoDaFuncao.tipo}>`;
|
|
1534
|
+
this.pilhaEscopos.definirInformacoesVariavel(simbolo.lexema, new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(simbolo.lexema, tipoDaFuncao));
|
|
1535
|
+
const funcaoDeclaracao = new declaracoes_1.FuncaoDeclaracao(simbolo, corpoDaFuncao, tipoDaFuncao, decoradores);
|
|
1535
1536
|
this.pilhaEscopos.registrarReferenciaFuncao(simbolo.lexema, funcaoDeclaracao);
|
|
1536
1537
|
return funcaoDeclaracao;
|
|
1537
1538
|
}
|
|
@@ -1781,85 +1782,83 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1781
1782
|
this.pilhaEscopos = new pilha_escopos_1.PilhaEscopos();
|
|
1782
1783
|
this.pilhaEscopos.empilhar(new informacao_escopo_1.InformacaoEscopo());
|
|
1783
1784
|
// Funções nativas de Delégua
|
|
1784
|
-
this.pilhaEscopos.definirInformacoesVariavel('aleatorio', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('aleatorio', '
|
|
1785
|
-
|
|
1786
|
-
]));
|
|
1787
|
-
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, [
|
|
1788
1787
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('minimo', 'número'),
|
|
1789
1788
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('maximo', 'número'),
|
|
1790
1789
|
]));
|
|
1791
|
-
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, [
|
|
1792
1791
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
1793
1792
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função'),
|
|
1794
1793
|
]));
|
|
1795
|
-
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, [
|
|
1796
1795
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
1797
1796
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função'),
|
|
1798
1797
|
]));
|
|
1799
|
-
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, [
|
|
1800
1799
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
1801
1800
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função'),
|
|
1802
1801
|
]));
|
|
1803
|
-
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, [
|
|
1804
1803
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
1805
1804
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função'),
|
|
1806
1805
|
]));
|
|
1807
|
-
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, [
|
|
1808
1807
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
1809
1808
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função'),
|
|
1810
1809
|
]));
|
|
1811
|
-
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, [
|
|
1812
1811
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
1813
1812
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoFiltragem', 'função'),
|
|
1814
1813
|
]));
|
|
1815
|
-
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, [
|
|
1816
1815
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
1817
1816
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valor', 'qualquer'),
|
|
1818
1817
|
]));
|
|
1819
|
-
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, [
|
|
1820
1819
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valor', 'qualquer'),
|
|
1821
1820
|
]));
|
|
1822
|
-
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, [
|
|
1823
1822
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
1824
1823
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoMapeamento', 'função'),
|
|
1825
1824
|
]));
|
|
1826
|
-
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, [
|
|
1827
1826
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer'),
|
|
1828
1827
|
]));
|
|
1829
|
-
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, [
|
|
1830
1829
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer'),
|
|
1831
1830
|
]));
|
|
1832
|
-
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, [
|
|
1833
1832
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
1834
1833
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoOrdenacao', 'função'),
|
|
1835
1834
|
]));
|
|
1836
|
-
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, [
|
|
1837
1836
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
1838
1837
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoFiltragem', 'função'),
|
|
1839
1838
|
]));
|
|
1840
|
-
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, [
|
|
1841
1840
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
1842
1841
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoFiltragem', 'função'),
|
|
1843
1842
|
]));
|
|
1844
|
-
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, [
|
|
1845
1844
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer'),
|
|
1846
1845
|
]));
|
|
1847
|
-
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, [
|
|
1848
1847
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
1849
1848
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoReducao', 'função'),
|
|
1850
1849
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorInicial', 'qualquer'),
|
|
1851
1850
|
]));
|
|
1852
|
-
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, [
|
|
1853
1852
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('objeto', 'qualquer'),
|
|
1854
1853
|
]));
|
|
1855
|
-
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, [
|
|
1856
1855
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer'),
|
|
1857
1856
|
]));
|
|
1858
|
-
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, [
|
|
1859
1858
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
1860
1859
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoCondicional', 'função'),
|
|
1861
1860
|
]));
|
|
1862
|
-
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, [
|
|
1863
1862
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
1864
1863
|
]));
|
|
1865
1864
|
// TODO: Escrever algum tipo de validação aqui.
|
|
@@ -1911,7 +1910,7 @@ const informacao_variavel_ou_constante_1 = require("../informacao-variavel-ou-co
|
|
|
1911
1910
|
function registrarPrimitiva(primitivasConhecidas, tipo, catalogoPrimitivas) {
|
|
1912
1911
|
primitivasConhecidas[tipo] = {};
|
|
1913
1912
|
for (const [nomePrimitivaDicionario, dadosPrimitiva] of Object.entries(catalogoPrimitivas)) {
|
|
1914
|
-
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);
|
|
1915
1914
|
}
|
|
1916
1915
|
}
|
|
1917
1916
|
|
|
@@ -3222,7 +3221,7 @@ class AvaliadorSintaticoPitugues {
|
|
|
3222
3221
|
throw this.erro(simboloPara, `Variável ou constante em 'para cada' não parece possuir um tipo iterável.`);
|
|
3223
3222
|
}
|
|
3224
3223
|
const tipoVetor = vetor.tipo;
|
|
3225
|
-
if (!tipoVetor.endsWith('[]') &&
|
|
3224
|
+
if (!tipoVetor.endsWith('[]') && !['qualquer', 'vetor'].includes(tipoVetor)) {
|
|
3226
3225
|
throw this.erro(simboloPara, `Variável ou constante em 'para cada' não é iterável. Tipo resolvido: ${tipoVetor}.`);
|
|
3227
3226
|
}
|
|
3228
3227
|
this.pilhaEscopos.definirInformacoesVariavel(nomeVariavelIteracao.lexema, new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(nomeVariavelIteracao.lexema, tipoVetor.slice(0, -2)));
|
|
@@ -3395,8 +3394,9 @@ class AvaliadorSintaticoPitugues {
|
|
|
3395
3394
|
// para ela. Vai ser atualizado após avaliação do corpo da função.
|
|
3396
3395
|
this.pilhaEscopos.definirInformacoesVariavel(simbolo.lexema, new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(simbolo.lexema, 'qualquer'));
|
|
3397
3396
|
const corpoDaFuncao = this.corpoDaFuncao(tipo);
|
|
3398
|
-
|
|
3399
|
-
|
|
3397
|
+
const tipoDaFuncao = `função<${corpoDaFuncao.tipo}>`;
|
|
3398
|
+
this.pilhaEscopos.definirInformacoesVariavel(simbolo.lexema, new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(simbolo.lexema, tipoDaFuncao));
|
|
3399
|
+
const funcaoDeclaracao = new declaracoes_1.FuncaoDeclaracao(simbolo, corpoDaFuncao, tipoDaFuncao);
|
|
3400
3400
|
this.pilhaEscopos.registrarReferenciaFuncao(simbolo.lexema, funcaoDeclaracao);
|
|
3401
3401
|
return funcaoDeclaracao;
|
|
3402
3402
|
}
|
|
@@ -3488,86 +3488,84 @@ class AvaliadorSintaticoPitugues {
|
|
|
3488
3488
|
inicializarPilhaEscopos() {
|
|
3489
3489
|
this.pilhaEscopos = new pilha_escopos_1.PilhaEscopos();
|
|
3490
3490
|
this.pilhaEscopos.empilhar(new informacao_escopo_1.InformacaoEscopo());
|
|
3491
|
-
// Funções nativas de Delégua
|
|
3492
|
-
this.pilhaEscopos.definirInformacoesVariavel('aleatorio', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('aleatorio', '
|
|
3493
|
-
|
|
3494
|
-
]));
|
|
3495
|
-
this.pilhaEscopos.definirInformacoesVariavel('aleatorioEntre', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('aleatorioEntre', 'inteiro', [
|
|
3491
|
+
// Funções nativas de Delégua (e de Pituguês também, por enquanto)
|
|
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, [
|
|
3496
3494
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('minimo', 'número'),
|
|
3497
3495
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('maximo', 'número'),
|
|
3498
3496
|
]));
|
|
3499
|
-
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, [
|
|
3500
3498
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
3501
3499
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função'),
|
|
3502
3500
|
]));
|
|
3503
|
-
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, [
|
|
3504
3502
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
3505
3503
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função'),
|
|
3506
3504
|
]));
|
|
3507
|
-
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, [
|
|
3508
3506
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
3509
3507
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função'),
|
|
3510
3508
|
]));
|
|
3511
|
-
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, [
|
|
3512
3510
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
3513
3511
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função'),
|
|
3514
3512
|
]));
|
|
3515
|
-
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, [
|
|
3516
3514
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
3517
3515
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função'),
|
|
3518
3516
|
]));
|
|
3519
|
-
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, [
|
|
3520
3518
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
3521
3519
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoFiltragem', 'função'),
|
|
3522
3520
|
]));
|
|
3523
|
-
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, [
|
|
3524
3522
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
3525
3523
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valor', 'qualquer'),
|
|
3526
3524
|
]));
|
|
3527
|
-
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, [
|
|
3528
3526
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valor', 'qualquer'),
|
|
3529
3527
|
]));
|
|
3530
|
-
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, [
|
|
3531
3529
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
3532
3530
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoMapeamento', 'função'),
|
|
3533
3531
|
]));
|
|
3534
|
-
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, [
|
|
3535
3533
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer'),
|
|
3536
3534
|
]));
|
|
3537
|
-
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, [
|
|
3538
3536
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer'),
|
|
3539
3537
|
]));
|
|
3540
|
-
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, [
|
|
3541
3539
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
3542
3540
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoOrdenacao', 'função'),
|
|
3543
3541
|
]));
|
|
3544
|
-
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, [
|
|
3545
3543
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
3546
3544
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoFiltragem', 'função'),
|
|
3547
3545
|
]));
|
|
3548
|
-
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, [
|
|
3549
3547
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
3550
3548
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoFiltragem', 'função'),
|
|
3551
3549
|
]));
|
|
3552
|
-
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, [
|
|
3553
3551
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer'),
|
|
3554
3552
|
]));
|
|
3555
|
-
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, [
|
|
3556
3554
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
3557
3555
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoReducao', 'função'),
|
|
3558
3556
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorInicial', 'qualquer'),
|
|
3559
3557
|
]));
|
|
3560
|
-
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, [
|
|
3561
3559
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('objeto', 'qualquer'),
|
|
3562
3560
|
]));
|
|
3563
|
-
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, [
|
|
3564
3562
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer'),
|
|
3565
3563
|
]));
|
|
3566
|
-
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, [
|
|
3567
3565
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
3568
3566
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoCondicional', 'função'),
|
|
3569
3567
|
]));
|
|
3570
|
-
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, [
|
|
3571
3569
|
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
3572
3570
|
]));
|
|
3573
3571
|
}
|
|
@@ -3817,16 +3815,16 @@ class AvaliadorSintaticoTenda extends avaliador_sintatico_base_1.AvaliadorSintat
|
|
|
3817
3815
|
this.tiposDeFerramentasExternas = {};
|
|
3818
3816
|
this.primitivasConhecidas = {};
|
|
3819
3817
|
for (const [nomePrimitivaDicionario, dadosPrimitiva] of Object.entries(primitivas_dicionario_1.default)) {
|
|
3820
|
-
this.primitivasConhecidas[nomePrimitivaDicionario] = new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(nomePrimitivaDicionario, 'dicionário', dadosPrimitiva.argumentos);
|
|
3818
|
+
this.primitivasConhecidas[nomePrimitivaDicionario] = new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(nomePrimitivaDicionario, 'dicionário', true, dadosPrimitiva.argumentos);
|
|
3821
3819
|
}
|
|
3822
3820
|
for (const [nomePrimitivaNumero, dadosPrimitiva] of Object.entries(primitivas_numero_1.default)) {
|
|
3823
|
-
this.primitivasConhecidas[nomePrimitivaNumero] = new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(nomePrimitivaNumero, 'número', dadosPrimitiva.argumentos);
|
|
3821
|
+
this.primitivasConhecidas[nomePrimitivaNumero] = new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(nomePrimitivaNumero, 'número', true, dadosPrimitiva.argumentos);
|
|
3824
3822
|
}
|
|
3825
3823
|
for (const [nomePrimitivaTexto, dadosPrimitiva] of Object.entries(primitivas_texto_1.default)) {
|
|
3826
|
-
this.primitivasConhecidas[nomePrimitivaTexto] = new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(nomePrimitivaTexto, 'texto', dadosPrimitiva.argumentos);
|
|
3824
|
+
this.primitivasConhecidas[nomePrimitivaTexto] = new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(nomePrimitivaTexto, 'texto', true, dadosPrimitiva.argumentos);
|
|
3827
3825
|
}
|
|
3828
3826
|
for (const [nomePrimitivaVetor, dadosPrimitiva] of Object.entries(primitivas_vetor_1.default)) {
|
|
3829
|
-
this.primitivasConhecidas[nomePrimitivaVetor] = new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(nomePrimitivaVetor, 'vetor', dadosPrimitiva.argumentos);
|
|
3827
|
+
this.primitivasConhecidas[nomePrimitivaVetor] = new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante(nomePrimitivaVetor, 'vetor', true, dadosPrimitiva.argumentos);
|
|
3830
3828
|
}
|
|
3831
3829
|
// TODO: Por enquanto não há necessidade de validar argumentos aqui, mas isso pode mudar no futuro.
|
|
3832
3830
|
this.primitivasConhecidas['inteiro'] = new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('inteiro', 'inteiro');
|
|
@@ -4711,93 +4709,10 @@ class AvaliadorSintaticoTenda extends avaliador_sintatico_base_1.AvaliadorSintat
|
|
|
4711
4709
|
}
|
|
4712
4710
|
/**
|
|
4713
4711
|
* Inicializa o primeiro nível da pilha de escopos, normalmente com ítens da biblioteca global.
|
|
4714
|
-
* TODO: Esta abordagem deve ser depreciada, em favor do novo suporte a referências de funções.
|
|
4715
4712
|
*/
|
|
4716
4713
|
inicializarPilhaEscopos() {
|
|
4717
4714
|
this.pilhaEscopos = new pilha_escopos_1.PilhaEscopos();
|
|
4718
4715
|
this.pilhaEscopos.empilhar(new informacao_escopo_1.InformacaoEscopo());
|
|
4719
|
-
// Funções nativas de Delégua
|
|
4720
|
-
this.pilhaEscopos.definirInformacoesVariavel('aleatorio', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('aleatorio', 'inteiro', [
|
|
4721
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('número', 'número')
|
|
4722
|
-
]));
|
|
4723
|
-
this.pilhaEscopos.definirInformacoesVariavel('aleatorioEntre', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('aleatorioEntre', 'inteiro', [
|
|
4724
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('minimo', 'número'),
|
|
4725
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('maximo', 'número')
|
|
4726
|
-
]));
|
|
4727
|
-
this.pilhaEscopos.definirInformacoesVariavel('algum', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('algum', 'lógico', [
|
|
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('encontrar', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrar', 'qualquer', [
|
|
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('encontrarIndice', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrarIndice', '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('encontrarUltimo', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrarUltimo', '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('encontrarUltimoIndice', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('encontrarUltimoIndice', 'inteiro', [
|
|
4744
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
4745
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoPesquisa', 'função')
|
|
4746
|
-
]));
|
|
4747
|
-
this.pilhaEscopos.definirInformacoesVariavel('filtrarPor', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('filtrarPor', 'qualquer[]', [
|
|
4748
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
4749
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoFiltragem', 'função')
|
|
4750
|
-
]));
|
|
4751
|
-
this.pilhaEscopos.definirInformacoesVariavel('incluido', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('incluido', 'lógico', [
|
|
4752
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
4753
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valor', 'qualquer')
|
|
4754
|
-
]));
|
|
4755
|
-
this.pilhaEscopos.definirInformacoesVariavel('inteiro', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('inteiro', 'inteiro', [
|
|
4756
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valor', 'qualquer')
|
|
4757
|
-
]));
|
|
4758
|
-
this.pilhaEscopos.definirInformacoesVariavel('mapear', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('mapear', 'qualquer[]', [
|
|
4759
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
4760
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoMapeamento', 'função')
|
|
4761
|
-
]));
|
|
4762
|
-
this.pilhaEscopos.definirInformacoesVariavel('numero', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('número', 'número', [
|
|
4763
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer')
|
|
4764
|
-
]));
|
|
4765
|
-
this.pilhaEscopos.definirInformacoesVariavel('número', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('número', 'número', [
|
|
4766
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer')
|
|
4767
|
-
]));
|
|
4768
|
-
this.pilhaEscopos.definirInformacoesVariavel('ordenar', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('ordenar', 'qualquer[]', [
|
|
4769
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
4770
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoOrdenacao', 'função')
|
|
4771
|
-
]));
|
|
4772
|
-
this.pilhaEscopos.definirInformacoesVariavel('paraCada', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('paraCada', '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('primeiroEmCondicao', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('primeiroEmCondicao', 'qualquer', [
|
|
4777
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
4778
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoFiltragem', 'função')
|
|
4779
|
-
]));
|
|
4780
|
-
this.pilhaEscopos.definirInformacoesVariavel('real', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('real', 'número', [
|
|
4781
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer')
|
|
4782
|
-
]));
|
|
4783
|
-
this.pilhaEscopos.definirInformacoesVariavel('reduzir', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('reduzir', 'qualquer', [
|
|
4784
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
4785
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoReducao', 'função'),
|
|
4786
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorInicial', 'qualquer')
|
|
4787
|
-
]));
|
|
4788
|
-
this.pilhaEscopos.definirInformacoesVariavel('tamanho', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('tamanho', 'inteiro', [
|
|
4789
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('objeto', 'qualquer')
|
|
4790
|
-
]));
|
|
4791
|
-
this.pilhaEscopos.definirInformacoesVariavel('texto', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('texto', 'texto', [
|
|
4792
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('valorParaConverter', 'qualquer')
|
|
4793
|
-
]));
|
|
4794
|
-
this.pilhaEscopos.definirInformacoesVariavel('todosEmCondicao', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('todosEmCondicao', 'lógico', [
|
|
4795
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]'),
|
|
4796
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('funcaoCondicional', 'função')
|
|
4797
|
-
]));
|
|
4798
|
-
this.pilhaEscopos.definirInformacoesVariavel('tupla', new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('tupla', 'tupla', [
|
|
4799
|
-
new informacao_variavel_ou_constante_1.InformacaoVariavelOuConstante('vetor', 'qualquer[]')
|
|
4800
|
-
]));
|
|
4801
4716
|
// TODO: Escrever algum tipo de validação aqui.
|
|
4802
4717
|
for (const tipos of Object.values(this.tiposDeFerramentasExternas)) {
|
|
4803
4718
|
for (const [nomeTipo, tipo] of Object.entries(tipos)) {
|
|
@@ -5528,7 +5443,8 @@ async function filtrarPor(interpretador, vetor, funcaoFiltragem) {
|
|
|
5528
5443
|
if (!Array.isArray(valorVetor)) {
|
|
5529
5444
|
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.'));
|
|
5530
5445
|
}
|
|
5531
|
-
|
|
5446
|
+
const construtorResolvido = valorFuncaoFiltragem.constructor.name.replaceAll('_', '');
|
|
5447
|
+
if (construtorResolvido !== 'DeleguaFuncao') {
|
|
5532
5448
|
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.'));
|
|
5533
5449
|
}
|
|
5534
5450
|
const resultados = [];
|
|
@@ -7803,11 +7719,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7803
7719
|
exports.default = cyrb53;
|
|
7804
7720
|
/**
|
|
7805
7721
|
* Função de geração de hashes copiada de https://stackoverflow.com/a/52171480/1314276.
|
|
7806
|
-
* A ideia é gerar
|
|
7722
|
+
* A ideia é gerar _hashes_ únicos para nomes de arquivos importados e usar o _hash_ para os
|
|
7807
7723
|
* pragmas de elementos catalogados pelo lexador e usados pelo interpretador.
|
|
7808
|
-
* @param nomeArquivo Nome do arquivo
|
|
7809
|
-
* @param semente Uma semente de dispersão, padrão: 0
|
|
7810
|
-
* @returns
|
|
7724
|
+
* @param {string} nomeArquivo Nome do arquivo
|
|
7725
|
+
* @param {number} semente Uma semente de dispersão, padrão: 0
|
|
7726
|
+
* @returns {number} Número inteiro com o hash correspondente ao nome do arquivo
|
|
7811
7727
|
*/
|
|
7812
7728
|
function cyrb53(nomeArquivo, semente = 0) {
|
|
7813
7729
|
let h1 = 0xdeadbeef ^ semente, h2 = 0x41c6ce57 ^ semente;
|
|
@@ -8990,14 +8906,15 @@ function tipoInferenciaParaTipoDadosElementar(tipoInferencia) {
|
|
|
8990
8906
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8991
8907
|
exports.InformacaoVariavelOuConstante = void 0;
|
|
8992
8908
|
class InformacaoVariavelOuConstante {
|
|
8993
|
-
constructor(nome, tipo, argumentos = []) {
|
|
8909
|
+
constructor(nome, tipo, obrigatorio = true, argumentos = []) {
|
|
8994
8910
|
this.argumentos = [];
|
|
8995
8911
|
this.nome = nome;
|
|
8996
8912
|
this.tipo = tipo;
|
|
8913
|
+
this.obrigatorio = obrigatorio;
|
|
8997
8914
|
this.argumentos = argumentos;
|
|
8998
8915
|
}
|
|
8999
8916
|
toString() {
|
|
9000
|
-
return `<informação-variável-ou-constante nome=${this.nome}, tipo=${this.tipo}, argumentos=${this.argumentos.map((arg) => arg.toString()).join(', ')}>`;
|
|
8917
|
+
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(', ')}>`;
|
|
9001
8918
|
}
|
|
9002
8919
|
}
|
|
9003
8920
|
exports.InformacaoVariavelOuConstante = InformacaoVariavelOuConstante;
|
|
@@ -14066,6 +13983,7 @@ class Lexador {
|
|
|
14066
13983
|
}
|
|
14067
13984
|
if (this.performance) {
|
|
14068
13985
|
const deltaMapeamento = (0, browser_process_hrtime_1.default)(inicioMapeamento);
|
|
13986
|
+
// eslint-disable-next-line no-undef
|
|
14069
13987
|
console.log(`[Lexador] Tempo para mapeamento: ${deltaMapeamento[0] * 1e9 + deltaMapeamento[1]}ns`);
|
|
14070
13988
|
}
|
|
14071
13989
|
return {
|
|
@@ -14328,6 +14246,7 @@ exports.palavrasReservadas = {
|
|
|
14328
14246
|
nulo: delegua_1.default.NULO,
|
|
14329
14247
|
ou: delegua_1.default.OU,
|
|
14330
14248
|
padrao: delegua_1.default.PADRAO,
|
|
14249
|
+
padrão: delegua_1.default.PADRAO,
|
|
14331
14250
|
para: delegua_1.default.PARA,
|
|
14332
14251
|
pausa: delegua_1.default.PAUSA,
|
|
14333
14252
|
pegue: delegua_1.default.PEGUE,
|