@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
|
@@ -172,7 +172,7 @@ class InterpretadorBase {
|
|
|
172
172
|
}
|
|
173
173
|
// Se é array, resolve recursivamente todos os elementos
|
|
174
174
|
if (Array.isArray(objeto)) {
|
|
175
|
-
return objeto.map(elemento => this.resolverValorRecursivo(elemento));
|
|
175
|
+
return objeto.map((elemento) => this.resolverValorRecursivo(elemento));
|
|
176
176
|
}
|
|
177
177
|
// Se é objeto plano, resolve recursivamente todas as propriedades
|
|
178
178
|
if (objeto && objeto.constructor && objeto.constructor === Object) {
|
|
@@ -215,8 +215,18 @@ class InterpretadorBase {
|
|
|
215
215
|
async visitarExpressaoTupla(expressao) {
|
|
216
216
|
// Lista de propriedades válidas para tuplas (ignorar propriedades de controle)
|
|
217
217
|
const propriedadesValidas = [
|
|
218
|
-
'primeiro',
|
|
219
|
-
'
|
|
218
|
+
'primeiro',
|
|
219
|
+
'segundo',
|
|
220
|
+
'terceiro',
|
|
221
|
+
'quarto',
|
|
222
|
+
'quinto',
|
|
223
|
+
'sexto',
|
|
224
|
+
'sétimo',
|
|
225
|
+
'setimo',
|
|
226
|
+
'oitavo',
|
|
227
|
+
'nono',
|
|
228
|
+
'décimo',
|
|
229
|
+
'decimo',
|
|
220
230
|
];
|
|
221
231
|
const valores = [];
|
|
222
232
|
for (let propriedade of propriedadesValidas) {
|
|
@@ -233,7 +243,7 @@ class InterpretadorBase {
|
|
|
233
243
|
const res = await this.avaliar(expressao.elementos[i]);
|
|
234
244
|
elementos.push(this.resolverValor(res));
|
|
235
245
|
}
|
|
236
|
-
const elementosComoConstrutos = elementos.map(valor => new construtos_1.Literal(expressao.hashArquivo, expressao.linha, valor));
|
|
246
|
+
const elementosComoConstrutos = elementos.map((valor) => new construtos_1.Literal(expressao.hashArquivo, expressao.linha, valor));
|
|
237
247
|
return new construtos_1.TuplaN(expressao.hashArquivo, expressao.linha, elementosComoConstrutos);
|
|
238
248
|
}
|
|
239
249
|
async visitarExpressaoAtribuicaoPorIndicesMatriz(expressao) {
|
|
@@ -575,8 +585,12 @@ class InterpretadorBase {
|
|
|
575
585
|
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
576
586
|
// Auto-promove para BigInt se qualquer operando for BigInt
|
|
577
587
|
if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
|
|
578
|
-
const esq = typeof valorEsquerdo === 'bigint'
|
|
579
|
-
|
|
588
|
+
const esq = typeof valorEsquerdo === 'bigint'
|
|
589
|
+
? valorEsquerdo
|
|
590
|
+
: BigInt(Math.floor(Number(valorEsquerdo)));
|
|
591
|
+
const dir = typeof valorDireito === 'bigint'
|
|
592
|
+
? valorDireito
|
|
593
|
+
: BigInt(Math.floor(Number(valorDireito)));
|
|
580
594
|
return esq ** dir;
|
|
581
595
|
}
|
|
582
596
|
const resultadoExponenciacao = Math.pow(valorEsquerdo, valorDireito);
|
|
@@ -604,8 +618,12 @@ class InterpretadorBase {
|
|
|
604
618
|
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
605
619
|
// Auto-promove para BigInt se qualquer operando for BigInt
|
|
606
620
|
if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
|
|
607
|
-
const esq = typeof valorEsquerdo === 'bigint'
|
|
608
|
-
|
|
621
|
+
const esq = typeof valorEsquerdo === 'bigint'
|
|
622
|
+
? valorEsquerdo
|
|
623
|
+
: BigInt(Math.floor(Number(valorEsquerdo)));
|
|
624
|
+
const dir = typeof valorDireito === 'bigint'
|
|
625
|
+
? valorDireito
|
|
626
|
+
: BigInt(Math.floor(Number(valorDireito)));
|
|
609
627
|
return esq - dir;
|
|
610
628
|
}
|
|
611
629
|
return Number(valorEsquerdo) - Number(valorDireito);
|
|
@@ -617,8 +635,12 @@ class InterpretadorBase {
|
|
|
617
635
|
}
|
|
618
636
|
// Auto-promove para BigInt se qualquer operando for BigInt
|
|
619
637
|
if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
|
|
620
|
-
const esq = typeof valorEsquerdo === 'bigint'
|
|
621
|
-
|
|
638
|
+
const esq = typeof valorEsquerdo === 'bigint'
|
|
639
|
+
? valorEsquerdo
|
|
640
|
+
: BigInt(Math.floor(Number(valorEsquerdo)));
|
|
641
|
+
const dir = typeof valorDireito === 'bigint'
|
|
642
|
+
? valorDireito
|
|
643
|
+
: BigInt(Math.floor(Number(valorDireito)));
|
|
622
644
|
return esq + dir;
|
|
623
645
|
}
|
|
624
646
|
if (this.tiposNumericos.includes(tipoEsquerdo) &&
|
|
@@ -648,8 +670,12 @@ class InterpretadorBase {
|
|
|
648
670
|
}
|
|
649
671
|
// Retorna BigInt se qualquer operando for BigInt
|
|
650
672
|
if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
|
|
651
|
-
const esq = typeof valorEsquerdo === 'bigint'
|
|
652
|
-
|
|
673
|
+
const esq = typeof valorEsquerdo === 'bigint'
|
|
674
|
+
? valorEsquerdo
|
|
675
|
+
: BigInt(Math.floor(Number(valorEsquerdo)));
|
|
676
|
+
const dir = typeof valorDireito === 'bigint'
|
|
677
|
+
? valorDireito
|
|
678
|
+
: BigInt(Math.floor(Number(valorDireito)));
|
|
653
679
|
return esq / dir; // Trunca automaticamente
|
|
654
680
|
}
|
|
655
681
|
return Math.floor(Number(valorEsquerdo) / Number(valorDireito));
|
|
@@ -659,8 +685,12 @@ class InterpretadorBase {
|
|
|
659
685
|
if ((typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') &&
|
|
660
686
|
tipoEsquerdo !== delegua_2.default.TEXTO &&
|
|
661
687
|
tipoDireito !== delegua_2.default.TEXTO) {
|
|
662
|
-
const esq = typeof valorEsquerdo === 'bigint'
|
|
663
|
-
|
|
688
|
+
const esq = typeof valorEsquerdo === 'bigint'
|
|
689
|
+
? valorEsquerdo
|
|
690
|
+
: BigInt(Math.floor(Number(valorEsquerdo)));
|
|
691
|
+
const dir = typeof valorDireito === 'bigint'
|
|
692
|
+
? valorDireito
|
|
693
|
+
: BigInt(Math.floor(Number(valorDireito)));
|
|
664
694
|
return esq * dir;
|
|
665
695
|
}
|
|
666
696
|
if (tipoEsquerdo === delegua_2.default.TEXTO ||
|
|
@@ -693,7 +723,8 @@ class InterpretadorBase {
|
|
|
693
723
|
case delegua_1.default.MODULO:
|
|
694
724
|
case delegua_1.default.MODULO_IGUAL:
|
|
695
725
|
// Se o operando esquerdo é uma string, usar formatação de string
|
|
696
|
-
if (tipoEsquerdo === delegua_2.default.TEXTO ||
|
|
726
|
+
if (tipoEsquerdo === delegua_2.default.TEXTO ||
|
|
727
|
+
typeof valorEsquerdo === 'string') {
|
|
697
728
|
return this.formatarStringComOperadorPorcentagem(String(valorEsquerdo), direita, // Passar 'direita' ao invés de 'valorDireito' para preservar arrays de tuplas
|
|
698
729
|
expressao.operador);
|
|
699
730
|
}
|
|
@@ -707,8 +738,12 @@ class InterpretadorBase {
|
|
|
707
738
|
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
708
739
|
// Auto-promove para BigInt se qualquer operando for BigInt
|
|
709
740
|
if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
|
|
710
|
-
const esq = typeof valorEsquerdo === 'bigint'
|
|
711
|
-
|
|
741
|
+
const esq = typeof valorEsquerdo === 'bigint'
|
|
742
|
+
? valorEsquerdo
|
|
743
|
+
: BigInt(Math.floor(Number(valorEsquerdo)));
|
|
744
|
+
const dir = typeof valorDireito === 'bigint'
|
|
745
|
+
? valorDireito
|
|
746
|
+
: BigInt(Math.floor(Number(valorDireito)));
|
|
712
747
|
return esq & dir;
|
|
713
748
|
}
|
|
714
749
|
return Number(valorEsquerdo) & Number(valorDireito);
|
|
@@ -719,8 +754,12 @@ class InterpretadorBase {
|
|
|
719
754
|
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
720
755
|
// Auto-promove para BigInt se qualquer operando for BigInt
|
|
721
756
|
if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
|
|
722
|
-
const esq = typeof valorEsquerdo === 'bigint'
|
|
723
|
-
|
|
757
|
+
const esq = typeof valorEsquerdo === 'bigint'
|
|
758
|
+
? valorEsquerdo
|
|
759
|
+
: BigInt(Math.floor(Number(valorEsquerdo)));
|
|
760
|
+
const dir = typeof valorDireito === 'bigint'
|
|
761
|
+
? valorDireito
|
|
762
|
+
: BigInt(Math.floor(Number(valorDireito)));
|
|
724
763
|
return esq ^ dir;
|
|
725
764
|
}
|
|
726
765
|
return Number(valorEsquerdo) ^ Number(valorDireito);
|
|
@@ -731,8 +770,12 @@ class InterpretadorBase {
|
|
|
731
770
|
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
732
771
|
// Auto-promove para BigInt se qualquer operando for BigInt
|
|
733
772
|
if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
|
|
734
|
-
const esq = typeof valorEsquerdo === 'bigint'
|
|
735
|
-
|
|
773
|
+
const esq = typeof valorEsquerdo === 'bigint'
|
|
774
|
+
? valorEsquerdo
|
|
775
|
+
: BigInt(Math.floor(Number(valorEsquerdo)));
|
|
776
|
+
const dir = typeof valorDireito === 'bigint'
|
|
777
|
+
? valorDireito
|
|
778
|
+
: BigInt(Math.floor(Number(valorDireito)));
|
|
736
779
|
return esq | dir;
|
|
737
780
|
}
|
|
738
781
|
return Number(valorEsquerdo) | Number(valorDireito);
|
|
@@ -740,9 +783,15 @@ class InterpretadorBase {
|
|
|
740
783
|
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
741
784
|
// Auto-promove para BigInt (interno para longo) se qualquer operando for BigInt ou se deslocamento >= 32
|
|
742
785
|
const tamanhoDeslocamentoEsquerda = Number(valorDireito);
|
|
743
|
-
if (typeof valorEsquerdo === 'bigint' ||
|
|
744
|
-
|
|
745
|
-
|
|
786
|
+
if (typeof valorEsquerdo === 'bigint' ||
|
|
787
|
+
typeof valorDireito === 'bigint' ||
|
|
788
|
+
tamanhoDeslocamentoEsquerda >= 32) {
|
|
789
|
+
const esq = typeof valorEsquerdo === 'bigint'
|
|
790
|
+
? valorEsquerdo
|
|
791
|
+
: BigInt(Math.floor(Number(valorEsquerdo)));
|
|
792
|
+
const dir = typeof valorDireito === 'bigint'
|
|
793
|
+
? valorDireito
|
|
794
|
+
: BigInt(Math.floor(Number(valorDireito)));
|
|
746
795
|
return esq << dir;
|
|
747
796
|
}
|
|
748
797
|
return Number(valorEsquerdo) << Number(valorDireito);
|
|
@@ -750,9 +799,15 @@ class InterpretadorBase {
|
|
|
750
799
|
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
751
800
|
// Auto-promove para BigInt (interno para longo) se qualquer operando for BigInt ou se deslocamento >= 32
|
|
752
801
|
const tamanhoDeslocamentoDireita = Number(valorDireito);
|
|
753
|
-
if (typeof valorEsquerdo === 'bigint' ||
|
|
754
|
-
|
|
755
|
-
|
|
802
|
+
if (typeof valorEsquerdo === 'bigint' ||
|
|
803
|
+
typeof valorDireito === 'bigint' ||
|
|
804
|
+
tamanhoDeslocamentoDireita >= 32) {
|
|
805
|
+
const esq = typeof valorEsquerdo === 'bigint'
|
|
806
|
+
? valorEsquerdo
|
|
807
|
+
: BigInt(Math.floor(Number(valorEsquerdo)));
|
|
808
|
+
const dir = typeof valorDireito === 'bigint'
|
|
809
|
+
? valorDireito
|
|
810
|
+
: BigInt(Math.floor(Number(valorDireito)));
|
|
756
811
|
return esq >> dir;
|
|
757
812
|
}
|
|
758
813
|
return Number(valorEsquerdo) >> Number(valorDireito);
|
|
@@ -873,7 +928,8 @@ class InterpretadorBase {
|
|
|
873
928
|
// Casos que passam aqui: chamadas a métodos de bibliotecas de Delégua.
|
|
874
929
|
if (typeof entidadeChamada === primitivos_1.default.FUNCAO) {
|
|
875
930
|
let objeto = null;
|
|
876
|
-
if (expressao.entidadeChamada.objeto) {
|
|
931
|
+
if (expressao.entidadeChamada.objeto) {
|
|
932
|
+
// TODO: Qual o tipo certo aqui?
|
|
877
933
|
objeto = await this.avaliar(expressao.entidadeChamada.objeto);
|
|
878
934
|
}
|
|
879
935
|
return entidadeChamada.apply(this.resolverValor(objeto), argumentos);
|
|
@@ -932,7 +988,8 @@ class InterpretadorBase {
|
|
|
932
988
|
}
|
|
933
989
|
logicaContemOuEm(esquerda, direita, expressao) {
|
|
934
990
|
const valorDireitoResolvido = this.resolverValor(direita);
|
|
935
|
-
if (Array.isArray(valorDireitoResolvido) ||
|
|
991
|
+
if (Array.isArray(valorDireitoResolvido) ||
|
|
992
|
+
typeof valorDireitoResolvido === primitivos_1.default.TEXTO) {
|
|
936
993
|
const avaliacao = valorDireitoResolvido.includes(esquerda);
|
|
937
994
|
return expressao.negado ? !avaliacao : avaliacao;
|
|
938
995
|
}
|
|
@@ -964,13 +1021,19 @@ class InterpretadorBase {
|
|
|
964
1021
|
const valorDireito = this.resolverValor(direita);
|
|
965
1022
|
if (typeof valorDireito === 'number' || typeof valorDireito === 'bigint') {
|
|
966
1023
|
if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
|
|
967
|
-
const esq = typeof valorEsquerdo === 'bigint'
|
|
968
|
-
|
|
969
|
-
|
|
1024
|
+
const esq = typeof valorEsquerdo === 'bigint'
|
|
1025
|
+
? valorEsquerdo
|
|
1026
|
+
: BigInt(Math.floor(Number(valorEsquerdo)));
|
|
1027
|
+
const dir = typeof valorDireito === 'bigint'
|
|
1028
|
+
? valorDireito
|
|
1029
|
+
: BigInt(Math.floor(Number(valorDireito)));
|
|
1030
|
+
return expressao.operador.tipo === delegua_1.default.E
|
|
1031
|
+
? esq & dir
|
|
1032
|
+
: esq | dir;
|
|
970
1033
|
}
|
|
971
1034
|
return expressao.operador.tipo === delegua_1.default.E
|
|
972
|
-
?
|
|
973
|
-
:
|
|
1035
|
+
? Number(valorEsquerdo) & Number(valorDireito)
|
|
1036
|
+
: Number(valorEsquerdo) | Number(valorDireito);
|
|
974
1037
|
}
|
|
975
1038
|
// Demais casos sem diferença de tipos
|
|
976
1039
|
if (expressao.operador.tipo === delegua_1.default.OU) {
|
|
@@ -1064,7 +1127,7 @@ class InterpretadorBase {
|
|
|
1064
1127
|
const valorComoDupla = valorVetorResolvido[declaracao.posicaoAtual];
|
|
1065
1128
|
const promises = await Promise.all([
|
|
1066
1129
|
this.avaliar(declaracao.variavelIteracao.primeiro),
|
|
1067
|
-
this.avaliar(declaracao.variavelIteracao.segundo)
|
|
1130
|
+
this.avaliar(declaracao.variavelIteracao.segundo),
|
|
1068
1131
|
]);
|
|
1069
1132
|
// TODO: O que fazer quando não forem literais?
|
|
1070
1133
|
this.pilhaEscoposExecucao.definirVariavel(String(promises[0].valor), valorComoDupla.primeiro);
|
|
@@ -1244,7 +1307,9 @@ class InterpretadorBase {
|
|
|
1244
1307
|
let formatoTexto = '';
|
|
1245
1308
|
for (const argumento of argumentos) {
|
|
1246
1309
|
let resultadoAvaliacao = await this.avaliar(argumento);
|
|
1247
|
-
if (resultadoAvaliacao &&
|
|
1310
|
+
if (resultadoAvaliacao &&
|
|
1311
|
+
resultadoAvaliacao.hasOwnProperty &&
|
|
1312
|
+
resultadoAvaliacao.hasOwnProperty('valorRetornado')) {
|
|
1248
1313
|
resultadoAvaliacao = resultadoAvaliacao.valorRetornado;
|
|
1249
1314
|
}
|
|
1250
1315
|
let valor = this.resolverValor(resultadoAvaliacao);
|
|
@@ -1485,12 +1550,12 @@ class InterpretadorBase {
|
|
|
1485
1550
|
}, 'Somente listas, dicionários, classes e objetos podem ter seus valores indexados.', expressao.linha));
|
|
1486
1551
|
}
|
|
1487
1552
|
/**
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1553
|
+
* Método base para acesso a intervalo.
|
|
1554
|
+
* Por padrão lança erro, pois a maioria dos dialetos (como Delégua padrão)
|
|
1555
|
+
* ainda não suporta isso nativamente, apenas Pituguês.
|
|
1556
|
+
*/
|
|
1492
1557
|
visitarExpressaoAcessoIntervaloVariavel(expressao) {
|
|
1493
|
-
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.simboloFechamento,
|
|
1558
|
+
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.simboloFechamento, 'Acesso por intervalo não implementado para este dialeto.', expressao.linha));
|
|
1494
1559
|
}
|
|
1495
1560
|
async visitarExpressaoDefinirValor(expressao) {
|
|
1496
1561
|
const variavelObjeto = await this.avaliar(expressao.objeto);
|
|
@@ -1523,18 +1588,30 @@ class InterpretadorBase {
|
|
|
1523
1588
|
* @returns Sempre retorna nulo, por ser requerido pelo contrato de visita.
|
|
1524
1589
|
*/
|
|
1525
1590
|
async visitarDeclaracaoClasse(declaracao) {
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1591
|
+
// Resolver cada superclasse listada em `herda A, B, ...`
|
|
1592
|
+
const superClassesResolvidas = [];
|
|
1593
|
+
for (const superClasseVariavel of declaracao.superClasses) {
|
|
1594
|
+
const variavelSuperClasse = await this.avaliar(superClasseVariavel);
|
|
1595
|
+
const superClasse = variavelSuperClasse.valor;
|
|
1530
1596
|
if (!(superClasse instanceof estruturas_1.DescritorTipoClasse)) {
|
|
1531
|
-
throw new excecoes_1.ErroEmTempoDeExecucao(
|
|
1597
|
+
throw new excecoes_1.ErroEmTempoDeExecucao(superClasseVariavel.nome, 'Superclasse precisa ser uma classe.', declaracao.linha);
|
|
1532
1598
|
}
|
|
1599
|
+
superClassesResolvidas.push(superClasse);
|
|
1600
|
+
}
|
|
1601
|
+
// Resolver cada misturável listado em `mescla X, Y, ...`
|
|
1602
|
+
const mesclaResolvidas = [];
|
|
1603
|
+
for (const mesclaVariavel of declaracao.mesclas) {
|
|
1604
|
+
const variavelMisturavel = await this.avaliar(mesclaVariavel);
|
|
1605
|
+
const misturável = variavelMisturavel.valor;
|
|
1606
|
+
if (!(misturável instanceof estruturas_1.DescritorTipoClasse)) {
|
|
1607
|
+
throw new excecoes_1.ErroEmTempoDeExecucao(mesclaVariavel.nome, 'Misturável precisa ser uma classe.', declaracao.linha);
|
|
1608
|
+
}
|
|
1609
|
+
mesclaResolvidas.push(misturável);
|
|
1533
1610
|
}
|
|
1534
1611
|
// TODO: Precisamos disso?
|
|
1535
1612
|
this.pilhaEscoposExecucao.definirVariavel(declaracao.simbolo.lexema, declaracao);
|
|
1536
|
-
if (
|
|
1537
|
-
this.pilhaEscoposExecucao.definirVariavel('super',
|
|
1613
|
+
if (superClassesResolvidas.length > 0) {
|
|
1614
|
+
this.pilhaEscoposExecucao.definirVariavel('super', superClassesResolvidas[0]);
|
|
1538
1615
|
}
|
|
1539
1616
|
const metodos = {};
|
|
1540
1617
|
const metodosEstaticos = {};
|
|
@@ -1562,9 +1639,7 @@ class InterpretadorBase {
|
|
|
1562
1639
|
const funcao = new estruturas_1.DeleguaFuncao(nomeMetodo, metodoAtual.funcao, undefined, eInicializador);
|
|
1563
1640
|
funcao.documentacao = metodoAtual.documentacao;
|
|
1564
1641
|
// Numa classe estática, todos os métodos (exceto construtor) são estáticos.
|
|
1565
|
-
const ehEstatico = declaracao.classeEstatica
|
|
1566
|
-
? !eInicializador
|
|
1567
|
-
: metodoAtual.estatico;
|
|
1642
|
+
const ehEstatico = declaracao.classeEstatica ? !eInicializador : metodoAtual.estatico;
|
|
1568
1643
|
if (metodoAtual.eObtenedor) {
|
|
1569
1644
|
if (ehEstatico) {
|
|
1570
1645
|
obtenedoresEstaticos[nomeMetodo] = funcao;
|
|
@@ -1605,7 +1680,7 @@ class InterpretadorBase {
|
|
|
1605
1680
|
acessoPropriedades[prop.nome.lexema] = prop.acesso;
|
|
1606
1681
|
}
|
|
1607
1682
|
}
|
|
1608
|
-
const descritorTipoClasse = new estruturas_1.DescritorTipoClasse(declaracao.simbolo,
|
|
1683
|
+
const descritorTipoClasse = new estruturas_1.DescritorTipoClasse(declaracao.simbolo, superClassesResolvidas, metodos, declaracao.propriedades);
|
|
1609
1684
|
descritorTipoClasse.metodosEstaticos = metodosEstaticos;
|
|
1610
1685
|
descritorTipoClasse.membrosEstaticos = membrosEstaticos;
|
|
1611
1686
|
descritorTipoClasse.obtenedores = obtenedores;
|
|
@@ -1620,13 +1695,45 @@ class InterpretadorBase {
|
|
|
1620
1695
|
// Toda classe sem superclasse explícita herda implicitamente de `Objeto`.
|
|
1621
1696
|
// Isso só deve acontecer quando OBJETO_BASE já estiver inicializado e a classe
|
|
1622
1697
|
// atual não for o próprio OBJETO_BASE, para evitar cadeias de herança recursivas.
|
|
1623
|
-
if (
|
|
1624
|
-
|
|
1698
|
+
if (descritorTipoClasse.superClasses.length === 0 &&
|
|
1699
|
+
estruturas_1.OBJETO_BASE &&
|
|
1700
|
+
descritorTipoClasse !== estruturas_1.OBJETO_BASE) {
|
|
1701
|
+
descritorTipoClasse.superClasses = [estruturas_1.OBJETO_BASE];
|
|
1702
|
+
}
|
|
1703
|
+
// Calcular o OReM (linearização C3) após os pais estarem definidos.
|
|
1704
|
+
descritorTipoClasse.orem = estruturas_1.DescritorTipoClasse.computarOReM(descritorTipoClasse);
|
|
1705
|
+
// Mesclar métodos e propriedades dos misturávels (primeiro misturável ganha se não definido na classe).
|
|
1706
|
+
for (const misturável of mesclaResolvidas) {
|
|
1707
|
+
for (const [nome, funcao] of Object.entries(misturável.metodos)) {
|
|
1708
|
+
if (!descritorTipoClasse.metodos.hasOwnProperty(nome)) {
|
|
1709
|
+
descritorTipoClasse.metodos[nome] = funcao;
|
|
1710
|
+
}
|
|
1711
|
+
}
|
|
1712
|
+
for (const [nome, funcao] of Object.entries(misturável.obtenedores)) {
|
|
1713
|
+
if (!descritorTipoClasse.obtenedores.hasOwnProperty(nome)) {
|
|
1714
|
+
descritorTipoClasse.obtenedores[nome] = funcao;
|
|
1715
|
+
}
|
|
1716
|
+
}
|
|
1717
|
+
for (const [nome, funcao] of Object.entries(misturável.definidores)) {
|
|
1718
|
+
if (!descritorTipoClasse.definidores.hasOwnProperty(nome)) {
|
|
1719
|
+
descritorTipoClasse.definidores[nome] = funcao;
|
|
1720
|
+
}
|
|
1721
|
+
}
|
|
1722
|
+
for (const prop of misturável.propriedades) {
|
|
1723
|
+
const jaDeclarada = descritorTipoClasse.propriedades.some((p) => p.nome.lexema === prop.nome.lexema);
|
|
1724
|
+
if (!jaDeclarada) {
|
|
1725
|
+
descritorTipoClasse.propriedades.push(prop);
|
|
1726
|
+
}
|
|
1727
|
+
}
|
|
1625
1728
|
}
|
|
1626
1729
|
// Verifica se a subclasse concreta implementa todos os métodos abstratos
|
|
1627
|
-
// da superclasse abstrata.
|
|
1628
|
-
if (!declaracao.abstrata
|
|
1629
|
-
superClasse
|
|
1730
|
+
// da(s) superclasse(s) abstrata(s).
|
|
1731
|
+
if (!declaracao.abstrata) {
|
|
1732
|
+
for (const superClasse of superClassesResolvidas) {
|
|
1733
|
+
if (superClasse.abstrata) {
|
|
1734
|
+
superClasse.verificarImplementacaoAbstrata(descritorTipoClasse);
|
|
1735
|
+
}
|
|
1736
|
+
}
|
|
1630
1737
|
}
|
|
1631
1738
|
// TODO: Até então, a única exceção a isso é Égua Clássico.
|
|
1632
1739
|
// Por enquanto, tudo bem deixar isso aqui.
|
|
@@ -1853,21 +1960,25 @@ class InterpretadorBase {
|
|
|
1853
1960
|
let valoresArray;
|
|
1854
1961
|
// Verificar se é uma TuplaN (verifica instanceof OU propriedade elementos/tipo para maior compatibilidade)
|
|
1855
1962
|
if (valores instanceof construtos_1.TuplaN ||
|
|
1856
|
-
(valores &&
|
|
1963
|
+
(valores &&
|
|
1964
|
+
valores.tipo === 'tupla' &&
|
|
1965
|
+
valores.elementos &&
|
|
1966
|
+
Array.isArray(valores.elementos))) {
|
|
1857
1967
|
valoresArray = valores.elementos.map((elem) => {
|
|
1858
|
-
if (elem instanceof construtos_1.Literal ||
|
|
1968
|
+
if (elem instanceof construtos_1.Literal ||
|
|
1969
|
+
(elem && typeof elem === 'object' && elem.hasOwnProperty('valor'))) {
|
|
1859
1970
|
return this.resolverValor(elem.valor);
|
|
1860
1971
|
}
|
|
1861
1972
|
return this.resolverValor(elem);
|
|
1862
1973
|
});
|
|
1863
1974
|
}
|
|
1864
1975
|
else if (Array.isArray(valores)) {
|
|
1865
|
-
valoresArray = valores.map(v => this.resolverValor(v));
|
|
1976
|
+
valoresArray = valores.map((v) => this.resolverValor(v));
|
|
1866
1977
|
}
|
|
1867
1978
|
else {
|
|
1868
1979
|
const valorResolvido = this.resolverValor(valores);
|
|
1869
1980
|
if (Array.isArray(valorResolvido)) {
|
|
1870
|
-
valoresArray = valorResolvido.map(v => this.resolverValor(v));
|
|
1981
|
+
valoresArray = valorResolvido.map((v) => this.resolverValor(v));
|
|
1871
1982
|
}
|
|
1872
1983
|
else {
|
|
1873
1984
|
valoresArray = [valorResolvido];
|
|
@@ -1989,7 +2100,9 @@ class InterpretadorBase {
|
|
|
1989
2100
|
return objeto.valor.paraTexto();
|
|
1990
2101
|
if (objeto instanceof construtos_1.Literal)
|
|
1991
2102
|
return this.paraTexto(objeto.valor);
|
|
1992
|
-
if (objeto instanceof estruturas_1.ObjetoDeleguaClasse ||
|
|
2103
|
+
if (objeto instanceof estruturas_1.ObjetoDeleguaClasse ||
|
|
2104
|
+
objeto instanceof estruturas_1.DeleguaFuncao ||
|
|
2105
|
+
objeto instanceof estruturas_1.DescritorTipoClasse)
|
|
1993
2106
|
return objeto.paraTexto();
|
|
1994
2107
|
if (objeto instanceof quebras_1.RetornoQuebra) {
|
|
1995
2108
|
if (typeof objeto.valor === 'boolean')
|