@designliquido/delegua 1.10.0 → 1.11.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.
- package/analisador-semantico/analisador-semantico-base.d.ts +2 -2
- package/analisador-semantico/analisador-semantico-base.d.ts.map +1 -1
- package/analisador-semantico/analisador-semantico-base.js +14 -6
- package/analisador-semantico/analisador-semantico-base.js.map +1 -1
- package/analisador-semantico/analisador-semantico.d.ts.map +1 -1
- package/analisador-semantico/analisador-semantico.js +56 -28
- package/analisador-semantico/analisador-semantico.js.map +1 -1
- package/analisador-semantico/dialetos/analisador-semantico-pitugues.d.ts.map +1 -1
- package/analisador-semantico/dialetos/analisador-semantico-pitugues.js +41 -18
- package/analisador-semantico/dialetos/analisador-semantico-pitugues.js.map +1 -1
- package/analisador-semantico/funcao-hipotetica-interface.d.ts +1 -1
- package/analisador-semantico/gerenciador-escopos.d.ts +1 -1
- package/analisador-semantico/pilha-variaveis.d.ts.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico-base.d.ts.map +1 -1
- 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 +149 -42
- package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/avaliador-sintatico/comum.d.ts.map +1 -1
- package/avaliador-sintatico/comum.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-calango.d.ts.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-calango.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.d.ts.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.d.ts.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.js +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +60 -50
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-prisma.d.ts.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-prisma.js +5 -5
- package/avaliador-sintatico/dialetos/avaliador-sintatico-prisma.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.d.ts.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.js +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.js.map +1 -1
- package/avaliador-sintatico/dialetos/micro-avaliador-sintatico-pitugues.d.ts.map +1 -1
- package/avaliador-sintatico/dialetos/micro-avaliador-sintatico-pitugues.js.map +1 -1
- package/avaliador-sintatico/erro-avaliador-sintatico.d.ts +18 -0
- package/avaliador-sintatico/erro-avaliador-sintatico.d.ts.map +1 -1
- package/avaliador-sintatico/erro-avaliador-sintatico.js.map +1 -1
- package/avaliador-sintatico/micro-avaliador-sintatico.d.ts.map +1 -1
- package/avaliador-sintatico/micro-avaliador-sintatico.js.map +1 -1
- package/avaliador-sintatico/traducao/avaliador-sintatico-javascript.d.ts.map +1 -1
- package/avaliador-sintatico/traducao/avaliador-sintatico-javascript.js.map +1 -1
- package/bibliotecas/biblioteca-global.d.ts.map +1 -1
- package/bibliotecas/biblioteca-global.js +93 -31
- package/bibliotecas/biblioteca-global.js.map +1 -1
- package/bibliotecas/dialetos/pitugues/biblioteca-global.d.ts.map +1 -1
- package/bibliotecas/dialetos/pitugues/biblioteca-global.js +12 -8
- package/bibliotecas/dialetos/pitugues/biblioteca-global.js.map +1 -1
- package/bibliotecas/dialetos/pitugues/primitivas-dicionario.d.ts.map +1 -1
- package/bibliotecas/dialetos/pitugues/primitivas-dicionario.js.map +1 -1
- package/bibliotecas/dialetos/pitugues/primitivas-numero.d.ts.map +1 -1
- package/bibliotecas/dialetos/pitugues/primitivas-numero.js.map +1 -1
- package/bibliotecas/dialetos/pitugues/primitivas-texto.d.ts.map +1 -1
- package/bibliotecas/dialetos/pitugues/primitivas-texto.js.map +1 -1
- package/bibliotecas/dialetos/pitugues/primitivas-tupla.d.ts.map +1 -1
- package/bibliotecas/dialetos/pitugues/primitivas-tupla.js +3 -4
- package/bibliotecas/dialetos/pitugues/primitivas-tupla.js.map +1 -1
- package/bibliotecas/dialetos/pitugues/primitivas-vetor.d.ts.map +1 -1
- package/bibliotecas/dialetos/pitugues/primitivas-vetor.js +9 -11
- package/bibliotecas/dialetos/pitugues/primitivas-vetor.js.map +1 -1
- package/bibliotecas/primitivas-dicionario.d.ts.map +1 -1
- package/bibliotecas/primitivas-dicionario.js +1 -1
- package/bibliotecas/primitivas-dicionario.js.map +1 -1
- package/bibliotecas/primitivas-numero.d.ts.map +1 -1
- package/bibliotecas/primitivas-numero.js.map +1 -1
- package/bibliotecas/primitivas-texto.d.ts.map +1 -1
- package/bibliotecas/primitivas-texto.js +70 -1
- package/bibliotecas/primitivas-texto.js.map +1 -1
- package/bibliotecas/primitivas-tupla.d.ts.map +1 -1
- package/bibliotecas/primitivas-tupla.js +34 -14
- package/bibliotecas/primitivas-tupla.js.map +1 -1
- package/bibliotecas/primitivas-vetor.d.ts.map +1 -1
- package/bibliotecas/primitivas-vetor.js +19 -1
- package/bibliotecas/primitivas-vetor.js.map +1 -1
- package/bin/package.json +1 -1
- package/construtos/ajuda-como-construto.d.ts +2 -2
- package/construtos/ajuda-como-construto.js +1 -1
- package/construtos/atribuir.d.ts.map +1 -1
- package/construtos/atribuir.js +5 -2
- package/construtos/atribuir.js.map +1 -1
- package/construtos/binario.d.ts.map +1 -1
- package/construtos/binario.js +1 -2
- package/construtos/binario.js.map +1 -1
- package/construtos/comentario-como-construto.d.ts.map +1 -1
- package/construtos/comentario-como-construto.js.map +1 -1
- package/construtos/decorador.d.ts.map +1 -1
- package/construtos/decorador.js +3 -1
- package/construtos/decorador.js.map +1 -1
- package/construtos/dicionario.d.ts.map +1 -1
- package/construtos/dicionario.js.map +1 -1
- package/construtos/tupla-n.d.ts +3 -3
- package/construtos/tupla-n.d.ts.map +1 -1
- package/construtos/tupla-n.js +4 -2
- package/construtos/tupla-n.js.map +1 -1
- package/declaracoes/ajuda.d.ts +3 -3
- package/declaracoes/classe.d.ts +5 -2
- package/declaracoes/classe.d.ts.map +1 -1
- package/declaracoes/classe.js +13 -4
- package/declaracoes/classe.js.map +1 -1
- package/declaracoes/interface.d.ts.map +1 -1
- package/declaracoes/interface.js.map +1 -1
- package/declaracoes/texto-documentacao.d.ts.map +1 -1
- package/declaracoes/texto-documentacao.js.map +1 -1
- package/estilizador/estilizador-delegua.d.ts.map +1 -1
- package/estilizador/estilizador-delegua.js +5 -1
- package/estilizador/estilizador-delegua.js.map +1 -1
- package/formatadores/formatador-delegua.d.ts.map +1 -1
- package/formatadores/formatador-delegua.js.map +1 -1
- package/formatadores/formatador-pitugues.d.ts.map +1 -1
- package/formatadores/formatador-pitugues.js +74 -29
- package/formatadores/formatador-pitugues.js.map +1 -1
- package/geracao-identificadores/index.js +2 -2
- package/geracao-identificadores/index.js.map +1 -1
- package/interfaces/componente-modulo-classe-interface.d.ts.map +1 -1
- package/interfaces/componente-modulo-funcao-interface.d.ts.map +1 -1
- package/interfaces/interpretador-com-depuracao-interface.d.ts.map +1 -1
- package/interfaces/modulo-interface.d.ts +2 -2
- package/interfaces/modulo-interface.d.ts.map +1 -1
- package/interfaces/visitante-comum-interface.d.ts.map +1 -1
- package/interpretador/comum.d.ts.map +1 -1
- package/interpretador/comum.js +65 -55
- package/interpretador/comum.js.map +1 -1
- package/interpretador/depuracao/avaliador-expressao-depuracao.d.ts.map +1 -1
- package/interpretador/depuracao/avaliador-expressao-depuracao.js.map +1 -1
- package/interpretador/depuracao/comum.d.ts.map +1 -1
- package/interpretador/depuracao/comum.js +8 -4
- package/interpretador/depuracao/comum.js.map +1 -1
- package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts.map +1 -1
- package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +2 -3
- package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js.map +1 -1
- package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts.map +1 -1
- package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js.map +1 -1
- package/interpretador/dialetos/pitugues/comum.d.ts +2 -2
- package/interpretador/dialetos/pitugues/comum.d.ts.map +1 -1
- package/interpretador/dialetos/pitugues/comum.js +2 -3
- package/interpretador/dialetos/pitugues/comum.js.map +1 -1
- package/interpretador/dialetos/pitugues/interpretador-pitugues-com-depuracao.d.ts +2 -2
- package/interpretador/dialetos/pitugues/interpretador-pitugues-com-depuracao.d.ts.map +1 -1
- package/interpretador/dialetos/pitugues/interpretador-pitugues-com-depuracao.js +1 -1
- package/interpretador/dialetos/pitugues/interpretador-pitugues-com-depuracao.js.map +1 -1
- package/interpretador/dialetos/pitugues/interpretador-pitugues.d.ts +3 -3
- package/interpretador/dialetos/pitugues/interpretador-pitugues.d.ts.map +1 -1
- package/interpretador/dialetos/pitugues/interpretador-pitugues.js +3 -2
- package/interpretador/dialetos/pitugues/interpretador-pitugues.js.map +1 -1
- package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts.map +1 -1
- package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js.map +1 -1
- package/interpretador/estruturas/classe-de-modulo.d.ts.map +1 -1
- package/interpretador/estruturas/delegua-funcao.d.ts.map +1 -1
- package/interpretador/estruturas/delegua-funcao.js +3 -1
- package/interpretador/estruturas/delegua-funcao.js.map +1 -1
- package/interpretador/estruturas/descritor-tipo-classe.d.ts +14 -4
- package/interpretador/estruturas/descritor-tipo-classe.d.ts.map +1 -1
- package/interpretador/estruturas/descritor-tipo-classe.js +95 -35
- package/interpretador/estruturas/descritor-tipo-classe.js.map +1 -1
- package/interpretador/estruturas/metodo-polimorfico.d.ts.map +1 -1
- package/interpretador/estruturas/metodo-polimorfico.js +13 -9
- package/interpretador/estruturas/metodo-polimorfico.js.map +1 -1
- package/interpretador/estruturas/metodo-primitiva.d.ts.map +1 -1
- package/interpretador/estruturas/metodo-primitiva.js.map +1 -1
- package/interpretador/estruturas/objeto-base.d.ts.map +1 -1
- package/interpretador/estruturas/objeto-base.js +8 -4
- package/interpretador/estruturas/objeto-base.js.map +1 -1
- package/interpretador/estruturas/objeto-delegua-classe.d.ts +1 -0
- package/interpretador/estruturas/objeto-delegua-classe.d.ts.map +1 -1
- package/interpretador/estruturas/objeto-delegua-classe.js +41 -23
- package/interpretador/estruturas/objeto-delegua-classe.js.map +1 -1
- package/interpretador/interpretador-base.d.ts +4 -4
- package/interpretador/interpretador-base.d.ts.map +1 -1
- package/interpretador/interpretador-base.js +175 -62
- package/interpretador/interpretador-base.js.map +1 -1
- package/interpretador/interpretador.d.ts.map +1 -1
- package/interpretador/interpretador.js +14 -13
- package/interpretador/interpretador.js.map +1 -1
- package/interpretador/pilha-escopos-execucao.d.ts.map +1 -1
- package/interpretador/pilha-escopos-execucao.js.map +1 -1
- package/lexador/dialetos/lexador-calango.d.ts.map +1 -1
- package/lexador/dialetos/lexador-calango.js.map +1 -1
- package/lexador/dialetos/lexador-egua-classico.d.ts.map +1 -1
- package/lexador/dialetos/lexador-egua-classico.js.map +1 -1
- package/lexador/dialetos/lexador-pitugues.d.ts.map +1 -1
- package/lexador/dialetos/lexador-pitugues.js +3 -1
- package/lexador/dialetos/lexador-pitugues.js.map +1 -1
- package/lexador/dialetos/lexador-portugol-ipt.d.ts.map +1 -1
- package/lexador/dialetos/lexador-portugol-ipt.js.map +1 -1
- package/lexador/dialetos/lexador-prisma.d.ts.map +1 -1
- package/lexador/dialetos/lexador-prisma.js +25 -3
- package/lexador/dialetos/lexador-prisma.js.map +1 -1
- package/lexador/dialetos/lexador-tenda.d.ts.map +1 -1
- package/lexador/dialetos/lexador-tenda.js.map +1 -1
- package/lexador/filtro-paradigma.d.ts.map +1 -1
- package/lexador/filtro-paradigma.js.map +1 -1
- package/lexador/lexador-base-linha-unica.d.ts.map +1 -1
- package/lexador/lexador-base-linha-unica.js.map +1 -1
- package/lexador/lexador-base.d.ts.map +1 -1
- package/lexador/lexador-base.js.map +1 -1
- package/lexador/lexador.d.ts.map +1 -1
- package/lexador/lexador.js.map +1 -1
- package/lexador/mapeamento-paradigmas.d.ts.map +1 -1
- package/lexador/mapeamento-paradigmas.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 +3 -2
- package/lexador/palavras-reservadas.js.map +1 -1
- package/lexador/simbolo.d.ts.map +1 -1
- package/lexador/simbolo.js.map +1 -1
- package/lexador/traducao/lexador-javascript.d.ts.map +1 -1
- package/package.json +1 -1
- package/tipos-de-simbolos/delegua.d.ts +1 -0
- package/tipos-de-simbolos/delegua.d.ts.map +1 -1
- package/tipos-de-simbolos/delegua.js +1 -0
- package/tipos-de-simbolos/delegua.js.map +1 -1
- package/tradutores/mermaid/aresta-fluxograma.d.ts +1 -1
- package/tradutores/mermaid/subgrafo-classe.d.ts +3 -3
- package/tradutores/mermaid/subgrafo-funcao.d.ts +2 -2
- package/tradutores/mermaid/subgrafo-funcao.d.ts.map +1 -1
- package/tradutores/mermaid/subgrafo-funcao.js.map +1 -1
- package/tradutores/mermaid/subgrafo-metodo.d.ts +2 -2
- package/tradutores/mermaid/vertice-fluxograma.d.ts +1 -1
- package/tradutores/tradutor-assembly-arm.d.ts.map +1 -1
- package/tradutores/tradutor-assembly-arm.js +164 -156
- package/tradutores/tradutor-assembly-arm.js.map +1 -1
- package/tradutores/tradutor-assembly-x64.d.ts.map +1 -1
- package/tradutores/tradutor-assembly-x64.js +136 -127
- package/tradutores/tradutor-assembly-x64.js.map +1 -1
- package/tradutores/tradutor-assemblyscript.d.ts.map +1 -1
- package/tradutores/tradutor-assemblyscript.js +10 -6
- package/tradutores/tradutor-assemblyscript.js.map +1 -1
- package/tradutores/tradutor-calango.d.ts.map +1 -1
- package/tradutores/tradutor-calango.js.map +1 -1
- package/tradutores/tradutor-elixir.d.ts.map +1 -1
- package/tradutores/tradutor-elixir.js +9 -7
- package/tradutores/tradutor-elixir.js.map +1 -1
- package/tradutores/tradutor-javascript.d.ts.map +1 -1
- package/tradutores/tradutor-javascript.js +2 -1
- package/tradutores/tradutor-javascript.js.map +1 -1
- package/tradutores/tradutor-mermaidjs.d.ts.map +1 -1
- package/tradutores/tradutor-mermaidjs.js +4 -8
- package/tradutores/tradutor-mermaidjs.js.map +1 -1
- package/tradutores/tradutor-portugol-ipt.d.ts.map +1 -1
- package/tradutores/tradutor-portugol-ipt.js.map +1 -1
- package/tradutores/tradutor-python.d.ts.map +1 -1
- package/tradutores/tradutor-python.js +1 -1
- package/tradutores/tradutor-python.js.map +1 -1
- package/tradutores/tradutor-reverso-javascript.d.ts.map +1 -1
- package/tradutores/tradutor-ruby.d.ts.map +1 -1
- package/tradutores/tradutor-ruby.js +1 -1
- package/tradutores/tradutor-ruby.js.map +1 -1
- package/umd/delegua.js +1353 -730
|
@@ -68,6 +68,9 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
68
68
|
if (this.simbolos[this.atual].lexema in this.tiposDefinidosEmCodigo) {
|
|
69
69
|
return this.simbolos[this.atual].lexema;
|
|
70
70
|
}
|
|
71
|
+
if (this.simbolos[this.atual].lexema in this.interfacesDeclaradas) {
|
|
72
|
+
return this.simbolos[this.atual].lexema;
|
|
73
|
+
}
|
|
71
74
|
const lexemaElementar = this.simbolos[this.atual].lexema.toLowerCase();
|
|
72
75
|
const tipoElementarResolvido = tipos.find((tipo) => tipo === lexemaElementar);
|
|
73
76
|
if (!tipoElementarResolvido) {
|
|
@@ -94,7 +97,8 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
94
97
|
}
|
|
95
98
|
async construtoAjuda() {
|
|
96
99
|
const simboloAjuda = this.avancarEDevolverAnterior();
|
|
97
|
-
if (this.estaNoFinal() ||
|
|
100
|
+
if (this.estaNoFinal() ||
|
|
101
|
+
this.simbolos[this.atual].tipo !== delegua_2.default.PARENTESE_ESQUERDO) {
|
|
98
102
|
return new construtos_1.AjudaComoConstruto(simboloAjuda.hashArquivo, simboloAjuda.linha, undefined, false);
|
|
99
103
|
}
|
|
100
104
|
this.avancarEDevolverAnterior(); // parêntese esquerdo
|
|
@@ -521,7 +525,8 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
521
525
|
// o analisador semântico emitir o diagnóstico quando apropriado.
|
|
522
526
|
tipoIdentificadorCorrespondente = 'qualquer';
|
|
523
527
|
}
|
|
524
|
-
if (!tipoIdentificadorCorrespondente.endsWith('[]') &&
|
|
528
|
+
if (!tipoIdentificadorCorrespondente.endsWith('[]') &&
|
|
529
|
+
!['dicionário', 'qualquer', 'texto', 'tupla', 'vetor'].includes(tipoIdentificadorCorrespondente)) {
|
|
525
530
|
throw this.erro(this.simbolos[this.atual], `Tipo ${tipoIdentificadorCorrespondente} não suporta acesso por índice.`);
|
|
526
531
|
}
|
|
527
532
|
let tipoAcesso = 'qualquer';
|
|
@@ -595,8 +600,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
595
600
|
if (expressaoAnterior.tipo === 'dicionário' &&
|
|
596
601
|
expressaoAnterior.constructor !== construtos_1.Dicionario) {
|
|
597
602
|
const elementoMontaoTipos = this.resolverElementoMontao(expressaoAnterior);
|
|
598
|
-
if (elementoMontaoTipos &&
|
|
599
|
-
nome.lexema in elementoMontaoTipos.subElementos) {
|
|
603
|
+
if (elementoMontaoTipos && nome.lexema in elementoMontaoTipos.subElementos) {
|
|
600
604
|
tipoInferido = elementoMontaoTipos.subElementos[nome.lexema].tipo;
|
|
601
605
|
}
|
|
602
606
|
}
|
|
@@ -853,7 +857,9 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
853
857
|
if (construto instanceof construtos_1.Unario) {
|
|
854
858
|
const operando = construto.operando;
|
|
855
859
|
// Verifica se o operando é um vetor
|
|
856
|
-
if (operando instanceof construtos_1.Vetor ||
|
|
860
|
+
if (operando instanceof construtos_1.Vetor ||
|
|
861
|
+
operando.tipo === 'vetor' ||
|
|
862
|
+
operando.tipo.endsWith('[]')) {
|
|
857
863
|
return true;
|
|
858
864
|
}
|
|
859
865
|
// Verifica recursivamente para casos como !![]
|
|
@@ -1464,7 +1470,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1464
1470
|
}
|
|
1465
1471
|
async declaracaoSe() {
|
|
1466
1472
|
const condicao = await this.expressao();
|
|
1467
|
-
const caminhoEntao = await this.resolverDeclaracao();
|
|
1473
|
+
const caminhoEntao = (await this.resolverDeclaracao());
|
|
1468
1474
|
let caminhoSenao = null;
|
|
1469
1475
|
if (this.verificarSeSimboloAtualEIgualA(delegua_2.default.SENAO, delegua_2.default.SENÃO)) {
|
|
1470
1476
|
caminhoSenao = await this.resolverDeclaracao();
|
|
@@ -1595,20 +1601,16 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1595
1601
|
// Uma delas é a variável/constante ser uma classe padrão.
|
|
1596
1602
|
// Isso ocorre quando a importação é feita de uma biblioteca Node.js.
|
|
1597
1603
|
// Nesse caso, o tipo de `entidadeChamada.objeto` começa com uma letra maiúscula.
|
|
1598
|
-
if (entidadeChamada.objeto.tipo &&
|
|
1599
|
-
entidadeChamada.objeto.tipo.match(/^[A-Z]/)) {
|
|
1604
|
+
if (entidadeChamada.objeto.tipo && entidadeChamada.objeto.tipo.match(/^[A-Z]/)) {
|
|
1600
1605
|
const tipoCorrespondente = this.tiposDefinidosPorBibliotecas[entidadeChamada.objeto.tipo];
|
|
1601
1606
|
if (!tipoCorrespondente) {
|
|
1602
1607
|
throw new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(entidadeChamada.simbolo, `Tipo '${entidadeChamada.objeto.tipo}' não foi encontrado entre os tipos definidos por bibliotecas.`);
|
|
1603
1608
|
}
|
|
1604
|
-
if (!(entidadeChamada.simbolo.lexema in
|
|
1605
|
-
tipoCorrespondente.
|
|
1606
|
-
!(entidadeChamada.simbolo.lexema in
|
|
1607
|
-
tipoCorrespondente.propriedades)) {
|
|
1609
|
+
if (!(entidadeChamada.simbolo.lexema in tipoCorrespondente.metodos) &&
|
|
1610
|
+
!(entidadeChamada.simbolo.lexema in tipoCorrespondente.propriedades)) {
|
|
1608
1611
|
throw new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(entidadeChamada.simbolo, `Membro '${entidadeChamada.simbolo.lexema}' não existe no tipo '${entidadeChamada.objeto.tipo}'.`);
|
|
1609
1612
|
}
|
|
1610
|
-
if (entidadeChamada.simbolo.lexema in
|
|
1611
|
-
tipoCorrespondente.metodos) {
|
|
1613
|
+
if (entidadeChamada.simbolo.lexema in tipoCorrespondente.metodos) {
|
|
1612
1614
|
const metodoCorrespondente = tipoCorrespondente.metodos[entidadeChamada.simbolo.lexema];
|
|
1613
1615
|
return metodoCorrespondente.tipoRetorno || 'qualquer';
|
|
1614
1616
|
}
|
|
@@ -1961,7 +1963,8 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1961
1963
|
this.consumir(delegua_2.default.CHAVE_ESQUERDA, "Esperado '{' antes do corpo da interface.");
|
|
1962
1964
|
const metodos = [];
|
|
1963
1965
|
const propriedades = [];
|
|
1964
|
-
while (!this.verificarTipoSimboloAtual(delegua_2.default.CHAVE_DIREITA) &&
|
|
1966
|
+
while (!this.verificarTipoSimboloAtual(delegua_2.default.CHAVE_DIREITA) &&
|
|
1967
|
+
!this.estaNoFinal()) {
|
|
1965
1968
|
this.verificarSeSimboloAtualEIgualA(delegua_2.default.PONTO_E_VIRGULA);
|
|
1966
1969
|
if (this.verificarTipoSimboloAtual(delegua_2.default.CHAVE_DIREITA))
|
|
1967
1970
|
break;
|
|
@@ -2012,13 +2015,19 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2012
2015
|
const simbolo = this.consumir(delegua_2.default.IDENTIFICADOR, 'Esperado nome da classe.');
|
|
2013
2016
|
// Pré-registro para permitir auto-referência no corpo da própria classe,
|
|
2014
2017
|
// como em `MinhaClasse.propriedadeEstatica` dentro de métodos.
|
|
2015
|
-
this.tiposDefinidosEmCodigo[simbolo.lexema] =
|
|
2018
|
+
this.tiposDefinidosEmCodigo[simbolo.lexema] =
|
|
2019
|
+
(_a = this.tiposDefinidosEmCodigo[simbolo.lexema]) !== null && _a !== void 0 ? _a : {};
|
|
2016
2020
|
const pilhaDecoradoresClasse = Array.from(this.pilhaDecoradores);
|
|
2017
|
-
|
|
2021
|
+
// Verificar `herda SuperclasseA, SuperclasseB`
|
|
2022
|
+
const superClasses = [];
|
|
2018
2023
|
if (this.verificarSeSimboloAtualEIgualA(delegua_2.default.HERDA)) {
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2024
|
+
do {
|
|
2025
|
+
const simboloSuperclasse = this.consumir(delegua_2.default.IDENTIFICADOR, 'Esperado nome da Superclasse.');
|
|
2026
|
+
if (superClasses.length === 0) {
|
|
2027
|
+
this.superclasseAtual = simboloSuperclasse.lexema;
|
|
2028
|
+
}
|
|
2029
|
+
superClasses.push(new construtos_1.Variavel(this.hashArquivo, this.simbolos[this.atual - 1], simboloSuperclasse.lexema));
|
|
2030
|
+
} while (this.verificarSeSimboloAtualEIgualA(delegua_2.default.VIRGULA));
|
|
2022
2031
|
}
|
|
2023
2032
|
// Verificar `implementa InterfaceA, InterfaceB`
|
|
2024
2033
|
const implementaInterfaces = [];
|
|
@@ -2027,6 +2036,14 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2027
2036
|
implementaInterfaces.push(this.consumir(delegua_2.default.IDENTIFICADOR, 'Esperado nome de interface após "implementa".'));
|
|
2028
2037
|
} while (this.verificarSeSimboloAtualEIgualA(delegua_2.default.VIRGULA));
|
|
2029
2038
|
}
|
|
2039
|
+
// Verificar `mescla MisturávelA, MisturávelB`
|
|
2040
|
+
const mesclas = [];
|
|
2041
|
+
if (this.verificarSeSimboloAtualEIgualA(delegua_2.default.MESCLA)) {
|
|
2042
|
+
do {
|
|
2043
|
+
const simboloMisturavel = this.consumir(delegua_2.default.IDENTIFICADOR, 'Esperado nome de classe após "mescla".');
|
|
2044
|
+
mesclas.push(new construtos_1.Variavel(this.hashArquivo, this.simbolos[this.atual - 1], simboloMisturavel.lexema));
|
|
2045
|
+
} while (this.verificarSeSimboloAtualEIgualA(delegua_2.default.VIRGULA));
|
|
2046
|
+
}
|
|
2030
2047
|
this.consumir(delegua_2.default.CHAVE_ESQUERDA, "Esperado '{' antes do escopo da classe.");
|
|
2031
2048
|
this.pilhaDecoradores = [];
|
|
2032
2049
|
const metodos = [];
|
|
@@ -2037,7 +2054,8 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2037
2054
|
*/
|
|
2038
2055
|
const compreenderMembros = async (acessoPadrao, ehEstaticoPadrao, ehAbstratoPadrao = false) => {
|
|
2039
2056
|
var _a;
|
|
2040
|
-
while (!this.verificarTipoSimboloAtual(delegua_2.default.CHAVE_DIREITA) &&
|
|
2057
|
+
while (!this.verificarTipoSimboloAtual(delegua_2.default.CHAVE_DIREITA) &&
|
|
2058
|
+
!this.estaNoFinal()) {
|
|
2041
2059
|
// Pular comentários normais dentro do corpo da classe.
|
|
2042
2060
|
if (this.simbolos[this.atual].tipo === delegua_2.default.COMENTARIO ||
|
|
2043
2061
|
this.simbolos[this.atual].tipo === delegua_2.default.LINHA_COMENTARIO) {
|
|
@@ -2058,12 +2076,12 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2058
2076
|
// Detecção de bloco de contexto: modificador seguido de '{'
|
|
2059
2077
|
const tipoAtual = this.simbolos[this.atual].tipo;
|
|
2060
2078
|
const tipoProximo = (_a = this.simbolos[this.atual + 1]) === null || _a === void 0 ? void 0 : _a.tipo;
|
|
2061
|
-
const ehBlocoAcesso = [delegua_2.default.PRIVADO, delegua_2.default.PROTEGIDO].includes(tipoAtual)
|
|
2062
|
-
|
|
2063
|
-
const ehBlocoEstatico = tipoAtual === delegua_2.default.ESTATICO
|
|
2064
|
-
|
|
2065
|
-
const ehBlocoAbstrato = tipoAtual === delegua_2.default.ABSTRATO
|
|
2066
|
-
|
|
2079
|
+
const ehBlocoAcesso = [delegua_2.default.PRIVADO, delegua_2.default.PROTEGIDO].includes(tipoAtual) &&
|
|
2080
|
+
tipoProximo === delegua_2.default.CHAVE_ESQUERDA;
|
|
2081
|
+
const ehBlocoEstatico = tipoAtual === delegua_2.default.ESTATICO &&
|
|
2082
|
+
tipoProximo === delegua_2.default.CHAVE_ESQUERDA;
|
|
2083
|
+
const ehBlocoAbstrato = tipoAtual === delegua_2.default.ABSTRATO &&
|
|
2084
|
+
tipoProximo === delegua_2.default.CHAVE_ESQUERDA;
|
|
2067
2085
|
if (ehBlocoAcesso) {
|
|
2068
2086
|
const novoAcesso = tipoAtual === delegua_2.default.PRIVADO ? 'privado' : 'protegido';
|
|
2069
2087
|
this.avancarEDevolverAnterior(); // consume modificador de acesso
|
|
@@ -2160,14 +2178,17 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2160
2178
|
for (const declaracao of corpo) {
|
|
2161
2179
|
expressoesRetorna = expressoesRetorna.concat((0, comum_1.buscarRetornos)(declaracao));
|
|
2162
2180
|
}
|
|
2163
|
-
const tiposRetornos = new Set(expressoesRetorna
|
|
2181
|
+
const tiposRetornos = new Set(expressoesRetorna
|
|
2182
|
+
.filter((e) => e.tipo !== 'qualquer')
|
|
2183
|
+
.map((e) => e.tipo));
|
|
2164
2184
|
const retornaChamadoExplicitamente = tiposRetornos.size > 0;
|
|
2165
2185
|
tiposRetornos.delete('qualquer');
|
|
2166
2186
|
if (tipoRetorno === 'qualquer') {
|
|
2167
2187
|
if (tiposRetornos.size > 0) {
|
|
2168
2188
|
tipoRetorno = tiposRetornos.values().next().value;
|
|
2169
2189
|
}
|
|
2170
|
-
else if (!retornaChamadoExplicitamente &&
|
|
2190
|
+
else if (!retornaChamadoExplicitamente &&
|
|
2191
|
+
!definicaoExplicitaDeTipo) {
|
|
2171
2192
|
tipoRetorno = 'vazio';
|
|
2172
2193
|
}
|
|
2173
2194
|
}
|
|
@@ -2189,7 +2210,13 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2189
2210
|
const nomePropriedade = this.consumir(delegua_2.default.IDENTIFICADOR, 'Esperado identificador para nome de propriedade.');
|
|
2190
2211
|
this.consumir(delegua_2.default.DOIS_PONTOS, 'Esperado dois-pontos após nome de propriedade.');
|
|
2191
2212
|
const tipoPropriedade = this.avancarEDevolverAnterior();
|
|
2192
|
-
|
|
2213
|
+
let nomeTipoPropriedade = tipoPropriedade.lexema;
|
|
2214
|
+
if (this.verificarTipoSimboloAtual(delegua_2.default.COLCHETE_ESQUERDO)) {
|
|
2215
|
+
this.avancarEDevolverAnterior(); // consume '['
|
|
2216
|
+
this.consumir(delegua_2.default.COLCHETE_DIREITO, "Esperado ']' após '[' na definição do tipo de propriedade.");
|
|
2217
|
+
nomeTipoPropriedade = `${nomeTipoPropriedade}[]`;
|
|
2218
|
+
}
|
|
2219
|
+
const prop = new declaracoes_1.PropriedadeClasse(nomePropriedade, nomeTipoPropriedade, Array.from(this.pilhaDecoradores), modificadorAcesso, ehEstatico);
|
|
2193
2220
|
prop.documentacao = docAtual;
|
|
2194
2221
|
// Auto-propriedade: `nome: tipo { obter; definir; }`
|
|
2195
2222
|
// Ou corpo personalizado: `nome: tipo { obter() { ... } definir(valor) { ... } }`
|
|
@@ -2217,13 +2244,18 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2217
2244
|
let tipoAcessor = 'qualquer';
|
|
2218
2245
|
let expressoesRetornaAcessor = [];
|
|
2219
2246
|
for (const declaracao of corpoAcessor) {
|
|
2220
|
-
expressoesRetornaAcessor =
|
|
2247
|
+
expressoesRetornaAcessor =
|
|
2248
|
+
expressoesRetornaAcessor.concat((0, comum_1.buscarRetornos)(declaracao));
|
|
2221
2249
|
}
|
|
2222
|
-
const tiposRetornosAcessor = new Set(expressoesRetornaAcessor
|
|
2250
|
+
const tiposRetornosAcessor = new Set(expressoesRetornaAcessor
|
|
2251
|
+
.filter((e) => e.tipo !== 'qualquer')
|
|
2252
|
+
.map((e) => e.tipo));
|
|
2223
2253
|
const retornaExplicitamenteAcessor = tiposRetornosAcessor.size > 0;
|
|
2224
2254
|
tiposRetornosAcessor.delete('qualquer');
|
|
2225
2255
|
if (tiposRetornosAcessor.size > 0) {
|
|
2226
|
-
tipoAcessor = tiposRetornosAcessor
|
|
2256
|
+
tipoAcessor = tiposRetornosAcessor
|
|
2257
|
+
.values()
|
|
2258
|
+
.next().value;
|
|
2227
2259
|
}
|
|
2228
2260
|
else if (!retornaExplicitamenteAcessor) {
|
|
2229
2261
|
tipoAcessor = 'vazio';
|
|
@@ -2275,28 +2307,59 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2275
2307
|
await compreenderMembros('publico', false);
|
|
2276
2308
|
this.consumir(delegua_2.default.CHAVE_DIREITA, "Esperado '}' após o escopo da classe.");
|
|
2277
2309
|
// Verificação em tempo de análise: classe deve implementar todos os contratos das interfaces.
|
|
2310
|
+
const linhaFinalClasse = this.simbolos[this.atual - 1].linha;
|
|
2278
2311
|
for (const nomeInterface of implementaInterfaces) {
|
|
2279
2312
|
const interfaceDecl = this.interfacesDeclaradas[nomeInterface.lexema];
|
|
2280
2313
|
if (!interfaceDecl) {
|
|
2281
2314
|
this.erros.push(this.erro(nomeInterface, `Interface '${nomeInterface.lexema}' não foi declarada antes da classe '${simbolo.lexema}'.`));
|
|
2282
2315
|
continue;
|
|
2283
2316
|
}
|
|
2317
|
+
const membrosFaltando = [];
|
|
2284
2318
|
for (const assinatura of interfaceDecl.metodos) {
|
|
2285
2319
|
const nomeMetodo = assinatura.nome.lexema;
|
|
2286
2320
|
const implementado = metodos.some((m) => m.simbolo.lexema === nomeMetodo);
|
|
2287
2321
|
if (!implementado) {
|
|
2288
|
-
|
|
2322
|
+
membrosFaltando.push({
|
|
2323
|
+
tipo: 'metodo',
|
|
2324
|
+
nome: nomeMetodo,
|
|
2325
|
+
parametros: assinatura.parametros.map((p) => ({
|
|
2326
|
+
nome: p.nome.lexema,
|
|
2327
|
+
tipoDado: p.tipoDado,
|
|
2328
|
+
})),
|
|
2329
|
+
tipoRetorno: assinatura.tipoRetorno,
|
|
2330
|
+
});
|
|
2289
2331
|
}
|
|
2290
2332
|
}
|
|
2291
2333
|
for (const prop of interfaceDecl.propriedades) {
|
|
2292
2334
|
const nomeProp = prop.nome.lexema;
|
|
2293
2335
|
const implementada = propriedades.some((p) => p.nome.lexema === nomeProp);
|
|
2294
2336
|
if (!implementada) {
|
|
2295
|
-
|
|
2337
|
+
membrosFaltando.push({
|
|
2338
|
+
tipo: 'propriedade',
|
|
2339
|
+
nome: nomeProp,
|
|
2340
|
+
tipoPropriedade: prop.tipo,
|
|
2341
|
+
});
|
|
2342
|
+
}
|
|
2343
|
+
}
|
|
2344
|
+
if (membrosFaltando.length > 0) {
|
|
2345
|
+
const correcaoSugerida = {
|
|
2346
|
+
tipo: 'implementar-interface',
|
|
2347
|
+
nomeInterface: nomeInterface.lexema,
|
|
2348
|
+
nomeClasse: simbolo.lexema,
|
|
2349
|
+
membrosFaltando,
|
|
2350
|
+
linhaFinalClasse,
|
|
2351
|
+
};
|
|
2352
|
+
for (const membro of membrosFaltando) {
|
|
2353
|
+
const mensagem = membro.tipo === 'metodo'
|
|
2354
|
+
? `Classe '${simbolo.lexema}' não implementa o método '${membro.nome}' exigido pela interface '${nomeInterface.lexema}'.`
|
|
2355
|
+
: `Classe '${simbolo.lexema}' não declara a propriedade '${membro.nome}' exigida pela interface '${nomeInterface.lexema}'.`;
|
|
2356
|
+
const erro = this.erro(simbolo, mensagem);
|
|
2357
|
+
erro.correcaoSugerida = correcaoSugerida;
|
|
2358
|
+
this.erros.push(erro);
|
|
2296
2359
|
}
|
|
2297
2360
|
}
|
|
2298
2361
|
}
|
|
2299
|
-
const definicaoClasse = new declaracoes_1.Classe(simbolo,
|
|
2362
|
+
const definicaoClasse = new declaracoes_1.Classe(simbolo, superClasses, metodos, propriedades, pilhaDecoradoresClasse, ehAbstrata, ehEstatica, implementaInterfaces, mesclas);
|
|
2300
2363
|
this.tiposDefinidosEmCodigo[definicaoClasse.simbolo.lexema] = definicaoClasse;
|
|
2301
2364
|
this.superclasseAtual = undefined;
|
|
2302
2365
|
return definicaoClasse;
|
|
@@ -2320,7 +2383,8 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2320
2383
|
if (!this.primitivasConhecidas[nomeTipo]) {
|
|
2321
2384
|
this.primitivasConhecidas[nomeTipo] = {};
|
|
2322
2385
|
}
|
|
2323
|
-
while (!this.verificarTipoSimboloAtual(delegua_2.default.CHAVE_DIREITA) &&
|
|
2386
|
+
while (!this.verificarTipoSimboloAtual(delegua_2.default.CHAVE_DIREITA) &&
|
|
2387
|
+
!this.estaNoFinal()) {
|
|
2324
2388
|
// Pular comentários dentro do corpo da extensão.
|
|
2325
2389
|
if (this.simbolos[this.atual].tipo === delegua_2.default.COMENTARIO ||
|
|
2326
2390
|
this.simbolos[this.atual].tipo === delegua_2.default.LINHA_COMENTARIO) {
|
|
@@ -2368,7 +2432,8 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2368
2432
|
const metodo = new declaracoes_1.FuncaoDeclaracao(nomeMetodo, corpoFuncao, tipoDaFuncao);
|
|
2369
2433
|
metodos.push(metodo);
|
|
2370
2434
|
const argumentos = params.map((parametro) => new informacao_elemento_sintatico_1.InformacaoElementoSintatico(parametro.nome.lexema, parametro.tipoDado || 'qualquer', parametro.valorPadrao === undefined));
|
|
2371
|
-
this.primitivasConhecidas[nomeTipo][nomeMetodo.lexema] =
|
|
2435
|
+
this.primitivasConhecidas[nomeTipo][nomeMetodo.lexema] =
|
|
2436
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico(nomeMetodo.lexema, tipoRetorno, true, argumentos);
|
|
2372
2437
|
}
|
|
2373
2438
|
this.consumir(delegua_2.default.CHAVE_DIREITA, "Esperado '}' ao final da extensão.");
|
|
2374
2439
|
return new declaracoes_1.Extensao(simboloTipo, metodos, ehGlobal, this.hashArquivo);
|
|
@@ -2400,7 +2465,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2400
2465
|
this.verificarTipoSimboloAtual(delegua_2.default.FUNÇÃO)) &&
|
|
2401
2466
|
this.verificarTipoProximoSimbolo(delegua_2.default.IDENTIFICADOR)) {
|
|
2402
2467
|
this.avancarEDevolverAnterior();
|
|
2403
|
-
const declaracaoFuncao = await this.funcao('funcao');
|
|
2468
|
+
const declaracaoFuncao = (await this.funcao('funcao'));
|
|
2404
2469
|
declaracaoFuncao.documentacao = docTopLevel;
|
|
2405
2470
|
return declaracaoFuncao;
|
|
2406
2471
|
}
|
|
@@ -2474,7 +2539,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2474
2539
|
this.verificarTipoSimboloAtual(delegua_2.default.FUNÇÃO)) &&
|
|
2475
2540
|
this.verificarTipoProximoSimbolo(delegua_2.default.IDENTIFICADOR)) {
|
|
2476
2541
|
this.avancarEDevolverAnterior();
|
|
2477
|
-
const declaracaoFuncao = await this.funcao('funcao');
|
|
2542
|
+
const declaracaoFuncao = (await this.funcao('funcao'));
|
|
2478
2543
|
declaracaoFuncao.documentacao = new construtos_1.ComentarioComoConstruto(simboloDoc);
|
|
2479
2544
|
return declaracaoFuncao;
|
|
2480
2545
|
}
|
|
@@ -2544,7 +2609,8 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2544
2609
|
}
|
|
2545
2610
|
async declaracaoAjuda() {
|
|
2546
2611
|
const simboloAjuda = this.avancarEDevolverAnterior();
|
|
2547
|
-
if (this.estaNoFinal() ||
|
|
2612
|
+
if (this.estaNoFinal() ||
|
|
2613
|
+
this.simbolos[this.atual].tipo !== delegua_2.default.PARENTESE_ESQUERDO) {
|
|
2548
2614
|
return new declaracoes_1.Ajuda(simboloAjuda.hashArquivo, simboloAjuda.linha, undefined, false);
|
|
2549
2615
|
}
|
|
2550
2616
|
this.avancarEDevolverAnterior(); // parêntese esquerdo
|
|
@@ -2566,10 +2632,15 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2566
2632
|
this.pilhaEscopos.empilhar(new informacao_escopo_1.InformacaoEscopo());
|
|
2567
2633
|
// Funções nativas de Delégua
|
|
2568
2634
|
this.pilhaEscopos.definirInformacoesVariavel('aleatorio', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('aleatorio', 'número'));
|
|
2635
|
+
this.pilhaEscopos.definirInformacoesVariavel('aleatório', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('aleatório', 'número'));
|
|
2569
2636
|
this.pilhaEscopos.definirInformacoesVariavel('aleatorioEntre', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('aleatorioEntre', 'número', true, [
|
|
2570
2637
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('minimo', 'número'),
|
|
2571
2638
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('maximo', 'número'),
|
|
2572
2639
|
]));
|
|
2640
|
+
this.pilhaEscopos.definirInformacoesVariavel('aleatórioEntre', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('aleatórioEntre', 'número', true, [
|
|
2641
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('minimo', 'número'),
|
|
2642
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('maximo', 'número'),
|
|
2643
|
+
]));
|
|
2573
2644
|
this.pilhaEscopos.definirInformacoesVariavel('algum', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('algum', 'lógico', true, [
|
|
2574
2645
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
2575
2646
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('funcaoPesquisa', 'função'),
|
|
@@ -2585,14 +2656,26 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2585
2656
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
2586
2657
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('funcaoPesquisa', 'função'),
|
|
2587
2658
|
]));
|
|
2659
|
+
this.pilhaEscopos.definirInformacoesVariavel('encontrarÍndice', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('encontrarÍndice', 'inteiro', true, [
|
|
2660
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
2661
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('funcaoPesquisa', 'função'),
|
|
2662
|
+
]));
|
|
2588
2663
|
this.pilhaEscopos.definirInformacoesVariavel('encontrarUltimo', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('encontrarUltimo', 'inteiro', true, [
|
|
2589
2664
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
2590
2665
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('funcaoPesquisa', 'função'),
|
|
2591
2666
|
]));
|
|
2667
|
+
this.pilhaEscopos.definirInformacoesVariavel('encontrarÚltimo', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('encontrarÚltimo', 'inteiro', true, [
|
|
2668
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
2669
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('funcaoPesquisa', 'função'),
|
|
2670
|
+
]));
|
|
2592
2671
|
this.pilhaEscopos.definirInformacoesVariavel('encontrarUltimoIndice', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('encontrarUltimoIndice', 'inteiro', true, [
|
|
2593
2672
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
2594
2673
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('funcaoPesquisa', 'função'),
|
|
2595
2674
|
]));
|
|
2675
|
+
this.pilhaEscopos.definirInformacoesVariavel('encontrarÚltimoÍndice', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('encontrarÚltimoÍndice', 'inteiro', true, [
|
|
2676
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
2677
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('funcaoPesquisa', 'função'),
|
|
2678
|
+
]));
|
|
2596
2679
|
this.pilhaEscopos.definirInformacoesVariavel('filtrarPor', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('filtrarPor', 'qualquer[]', true, [
|
|
2597
2680
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
2598
2681
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('funcaoFiltragem', 'função'),
|
|
@@ -2601,6 +2684,10 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2601
2684
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
2602
2685
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('valor', 'qualquer'),
|
|
2603
2686
|
]));
|
|
2687
|
+
this.pilhaEscopos.definirInformacoesVariavel('incluído', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('incluído', 'lógico', true, [
|
|
2688
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
2689
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('valor', 'qualquer'),
|
|
2690
|
+
]));
|
|
2604
2691
|
this.pilhaEscopos.definirInformacoesVariavel('inteiro', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('inteiro', 'inteiro', true, [
|
|
2605
2692
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('valor', 'qualquer'),
|
|
2606
2693
|
]));
|
|
@@ -2616,6 +2703,18 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2616
2703
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
2617
2704
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('funcaoMapeamento', 'função'),
|
|
2618
2705
|
]));
|
|
2706
|
+
this.pilhaEscopos.definirInformacoesVariavel('maximo', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('maximo', 'qualquer', true, [
|
|
2707
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
2708
|
+
]));
|
|
2709
|
+
this.pilhaEscopos.definirInformacoesVariavel('máximo', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('máximo', 'qualquer', true, [
|
|
2710
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
2711
|
+
]));
|
|
2712
|
+
this.pilhaEscopos.definirInformacoesVariavel('minimo', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('minimo', 'qualquer', true, [
|
|
2713
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
2714
|
+
]));
|
|
2715
|
+
this.pilhaEscopos.definirInformacoesVariavel('mínimo', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('mínimo', 'qualquer', true, [
|
|
2716
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
2717
|
+
]));
|
|
2619
2718
|
this.pilhaEscopos.definirInformacoesVariavel('numero', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('número', 'número', true, [
|
|
2620
2719
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('valorParaConverter', 'qualquer'),
|
|
2621
2720
|
]));
|
|
@@ -2634,6 +2733,10 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2634
2733
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
2635
2734
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('funcaoFiltragem', 'função'),
|
|
2636
2735
|
]));
|
|
2736
|
+
this.pilhaEscopos.definirInformacoesVariavel('primeiroEmCondição', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('primeiroEmCondição', 'qualquer', true, [
|
|
2737
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
2738
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('funcaoFiltragem', 'função'),
|
|
2739
|
+
]));
|
|
2637
2740
|
this.pilhaEscopos.definirInformacoesVariavel('real', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('real', 'número', true, [
|
|
2638
2741
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('valorParaConverter', 'qualquer'),
|
|
2639
2742
|
]));
|
|
@@ -2649,12 +2752,16 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2649
2752
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('valorParaConverter', 'qualquer'),
|
|
2650
2753
|
]));
|
|
2651
2754
|
this.pilhaEscopos.definirInformacoesVariavel('todos', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('todos', 'lógico', true, [
|
|
2652
|
-
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('iteravel', 'qualquer')
|
|
2755
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('iteravel', 'qualquer'),
|
|
2653
2756
|
]));
|
|
2654
2757
|
this.pilhaEscopos.definirInformacoesVariavel('todosEmCondicao', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('todosEmCondicao', 'lógico', true, [
|
|
2655
2758
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('iteravel', 'qualquer'),
|
|
2656
2759
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('funcaoCondicional', 'função'),
|
|
2657
2760
|
]));
|
|
2761
|
+
this.pilhaEscopos.definirInformacoesVariavel('todosEmCondição', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('todosEmCondição', 'lógico', true, [
|
|
2762
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('iteravel', 'qualquer'),
|
|
2763
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('funcaoCondicional', 'função'),
|
|
2764
|
+
]));
|
|
2658
2765
|
this.pilhaEscopos.definirInformacoesVariavel('tupla', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('tupla', 'tupla', true, [
|
|
2659
2766
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
2660
2767
|
]));
|