@designliquido/delegua 0.12.4 → 0.12.6
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 +7 -2
- package/bin/package.json +4 -4
- package/fontes/avaliador-sintatico/avaliador-sintatico.js +4 -3
- package/fontes/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-eguap.js +7 -6
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-eguap.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.js +11 -11
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.js.map +1 -1
- package/fontes/avaliador-sintatico/retornos/retorno-declaracao.d.ts +2 -2
- package/fontes/bibliotecas/biblioteca-global.js +54 -127
- package/fontes/bibliotecas/biblioteca-global.js.map +1 -1
- package/fontes/bibliotecas/dialetos/egua-classico/biblioteca-global.js +49 -51
- package/fontes/bibliotecas/dialetos/egua-classico/biblioteca-global.js.map +1 -1
- package/fontes/bibliotecas/dialetos/egua-classico/index.d.ts +1 -1
- package/fontes/bibliotecas/dialetos/egua-classico/index.js +7 -7
- package/fontes/bibliotecas/dialetos/egua-classico/index.js.map +1 -1
- package/fontes/bibliotecas/dialetos/egua-classico/tempo.js +3 -3
- package/fontes/bibliotecas/dialetos/egua-classico/tempo.js.map +1 -1
- package/fontes/bibliotecas/dialetos/egua-classico/textos.js +45 -45
- package/fontes/bibliotecas/dialetos/egua-classico/textos.js.map +1 -1
- package/fontes/bibliotecas/importar-biblioteca.js +4 -3
- package/fontes/bibliotecas/importar-biblioteca.js.map +1 -1
- package/fontes/bibliotecas/primitivas-texto.js +2 -4
- package/fontes/bibliotecas/primitivas-texto.js.map +1 -1
- package/fontes/bibliotecas/primitivas-vetor.js +1 -1
- package/fontes/bibliotecas/primitivas-vetor.js.map +1 -1
- package/fontes/construtos/acesso-indice-variavel.js.map +1 -1
- package/fontes/construtos/acesso-metodo.js.map +1 -1
- package/fontes/construtos/atribuicao-sobrescrita.js.map +1 -1
- package/fontes/construtos/binario.js.map +1 -1
- package/fontes/construtos/construto.d.ts +1 -1
- package/fontes/construtos/definir-valor.js.map +1 -1
- package/fontes/construtos/formatacao-escrita.d.ts +2 -2
- package/fontes/construtos/funcao.js.map +1 -1
- package/fontes/construtos/logico.js.map +1 -1
- package/fontes/construtos/super.js.map +1 -1
- package/fontes/construtos/variavel.js.map +1 -1
- package/fontes/declaracoes/declaracao.d.ts +1 -1
- package/fontes/declaracoes/escolha.js.map +1 -1
- package/fontes/declaracoes/fazer.js.map +1 -1
- package/fontes/declaracoes/para.js.map +1 -1
- package/fontes/delegua.js +3 -2
- package/fontes/delegua.js.map +1 -1
- package/fontes/depuracao/cyrb53.js +2 -6
- package/fontes/depuracao/cyrb53.js.map +1 -1
- package/fontes/depuracao/remota/servidor-depuracao.js +15 -47
- package/fontes/depuracao/remota/servidor-depuracao.js.map +1 -1
- package/fontes/estruturas/delegua-classe.js +1 -3
- package/fontes/estruturas/delegua-classe.js.map +1 -1
- package/fontes/estruturas/delegua-funcao.js +1 -3
- package/fontes/estruturas/delegua-funcao.js.map +1 -1
- package/fontes/estruturas/objeto-delegua-classe.js.map +1 -1
- package/fontes/formatadores/delegua.d.ts +6 -2
- package/fontes/formatadores/delegua.js +34 -12
- package/fontes/formatadores/delegua.js.map +1 -1
- package/fontes/interfaces/pilha-escopos-execucao-interface.d.ts +1 -0
- package/fontes/interfaces/tradutor-interface.d.ts +1 -1
- package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +19 -44
- package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.js.map +1 -1
- package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js +2 -4
- package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js.map +1 -1
- package/fontes/interpretador/dialetos/visualg-com-depuracao.d.ts +3 -3
- package/fontes/interpretador/dialetos/visualg-com-depuracao.js +1 -3
- package/fontes/interpretador/dialetos/visualg-com-depuracao.js.map +1 -1
- package/fontes/interpretador/dialetos/visualg.d.ts +3 -3
- package/fontes/interpretador/dialetos/visualg.js +1 -3
- package/fontes/interpretador/dialetos/visualg.js.map +1 -1
- package/fontes/interpretador/inferenciador.js.map +1 -1
- package/fontes/interpretador/interpretador-com-depuracao.d.ts +4 -3
- package/fontes/interpretador/interpretador-com-depuracao.js +30 -25
- package/fontes/interpretador/interpretador-com-depuracao.js.map +1 -1
- package/fontes/interpretador/interpretador.d.ts +7 -2
- package/fontes/interpretador/interpretador.js +50 -78
- package/fontes/interpretador/interpretador.js.map +1 -1
- package/fontes/interpretador/pilha-escopos-execucao.d.ts +10 -2
- package/fontes/interpretador/pilha-escopos-execucao.js +21 -2
- package/fontes/interpretador/pilha-escopos-execucao.js.map +1 -1
- package/fontes/lexador/dialetos/lexador-birl.js +1 -3
- package/fontes/lexador/dialetos/lexador-birl.js.map +1 -1
- package/fontes/lexador/dialetos/lexador-egua-classico.js +4 -11
- package/fontes/lexador/dialetos/lexador-egua-classico.js.map +1 -1
- package/fontes/lexador/dialetos/lexador-eguap.js +4 -8
- package/fontes/lexador/dialetos/lexador-eguap.js.map +1 -1
- package/fontes/lexador/dialetos/lexador-visualg.js +4 -9
- package/fontes/lexador/dialetos/lexador-visualg.js.map +1 -1
- package/fontes/lexador/dialetos/palavras-reservadas/birl.js +1 -1
- package/fontes/lexador/dialetos/palavras-reservadas/egua-classico.js +1 -1
- package/fontes/lexador/dialetos/palavras-reservadas/visualg.js +1 -1
- package/fontes/lexador/lexador.js +2 -5
- package/fontes/lexador/lexador.js.map +1 -1
- package/fontes/lexador/palavras-reservadas.js +1 -1
- package/fontes/lexador/simbolo.js.map +1 -1
- package/fontes/tipos-de-simbolos/comum.js +1 -1
- package/fontes/tradutores/tradutor-javascript.d.ts +2 -2
- package/fontes/tradutores/tradutor-javascript.js +20 -10
- package/fontes/tradutores/tradutor-javascript.js.map +1 -1
- package/fontes/tradutores/tradutor-reverso-javascript.d.ts +27 -9
- package/fontes/tradutores/tradutor-reverso-javascript.js +207 -44
- package/fontes/tradutores/tradutor-reverso-javascript.js.map +1 -1
- package/package.json +4 -4
|
@@ -31,7 +31,7 @@ class InterpretadorComDepuracao extends interpretador_1.Interpretador {
|
|
|
31
31
|
super(importador, diretorioBase, false, funcaoDeRetorno);
|
|
32
32
|
this.pontosParada = [];
|
|
33
33
|
this.pontoDeParadaAtivo = false;
|
|
34
|
-
this.avisoPontoParadaAtivado = () => console.log(
|
|
34
|
+
this.avisoPontoParadaAtivado = () => console.log('Aviso: Ponto de parada ativado.');
|
|
35
35
|
this.escopoAtual = 0;
|
|
36
36
|
this.executandoChamada = false;
|
|
37
37
|
this.passos = 0;
|
|
@@ -42,7 +42,7 @@ class InterpretadorComDepuracao extends interpretador_1.Interpretador {
|
|
|
42
42
|
* @returns Uma string com vírgulas escapadas.
|
|
43
43
|
*/
|
|
44
44
|
escaparVirgulas(valor) {
|
|
45
|
-
return String(valor).replace(/,/i,
|
|
45
|
+
return String(valor).replace(/,/i, ',');
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
48
48
|
* Gera um identificador para resolução de chamadas.
|
|
@@ -56,7 +56,7 @@ class InterpretadorComDepuracao extends interpretador_1.Interpretador {
|
|
|
56
56
|
for (let argumento of expressao.argumentos) {
|
|
57
57
|
argumentosResolvidos.push(await this.avaliar(argumento));
|
|
58
58
|
}
|
|
59
|
-
return argumentosResolvidos.reduce((acumulador, argumento) => acumulador += `,${this.escaparVirgulas(argumento.hasOwnProperty('valor') ? argumento.valor : argumento)}
|
|
59
|
+
return argumentosResolvidos.reduce((acumulador, argumento) => (acumulador += `,${this.escaparVirgulas(argumento.hasOwnProperty('valor') ? argumento.valor : argumento)}`), expressao.id);
|
|
60
60
|
}
|
|
61
61
|
async visitarExpressaoDeChamada(expressao) {
|
|
62
62
|
const _idChamadaComArgumentos = await this.gerarIdResolucaoChamada(expressao);
|
|
@@ -112,9 +112,7 @@ class InterpretadorComDepuracao extends interpretador_1.Interpretador {
|
|
|
112
112
|
else {
|
|
113
113
|
resultadoAvaliacao = await this.avaliar(argumento);
|
|
114
114
|
}
|
|
115
|
-
let valor = (resultadoAvaliacao === null || resultadoAvaliacao === void 0 ? void 0 : resultadoAvaliacao.hasOwnProperty('valor'))
|
|
116
|
-
? resultadoAvaliacao.valor
|
|
117
|
-
: resultadoAvaliacao;
|
|
115
|
+
let valor = (resultadoAvaliacao === null || resultadoAvaliacao === void 0 ? void 0 : resultadoAvaliacao.hasOwnProperty('valor')) ? resultadoAvaliacao.valor : resultadoAvaliacao;
|
|
118
116
|
formatoTexto += `${this.paraTexto(valor)} `;
|
|
119
117
|
}
|
|
120
118
|
return formatoTexto;
|
|
@@ -139,7 +137,7 @@ class InterpretadorComDepuracao extends interpretador_1.Interpretador {
|
|
|
139
137
|
this.erros.push({
|
|
140
138
|
erroInterno: erro,
|
|
141
139
|
linha: declaracao.linha,
|
|
142
|
-
hashArquivo: declaracao.hashArquivo
|
|
140
|
+
hashArquivo: declaracao.hashArquivo,
|
|
143
141
|
});
|
|
144
142
|
}
|
|
145
143
|
}
|
|
@@ -213,8 +211,7 @@ class InterpretadorComDepuracao extends interpretador_1.Interpretador {
|
|
|
213
211
|
retornoExecucao = await this.executar(proximoEscopo.declaracoes[proximoEscopo.declaracaoAtual]);
|
|
214
212
|
proximoEscopo.declaracaoAtual++;
|
|
215
213
|
for (; !(retornoExecucao instanceof quebras_1.Quebra) &&
|
|
216
|
-
proximoEscopo.declaracaoAtual <
|
|
217
|
-
proximoEscopo.declaracoes.length; proximoEscopo.declaracaoAtual++) {
|
|
214
|
+
proximoEscopo.declaracaoAtual < proximoEscopo.declaracoes.length; proximoEscopo.declaracaoAtual++) {
|
|
218
215
|
this.pontoDeParadaAtivo = this.verificarPontoParada(proximoEscopo.declaracoes[proximoEscopo.declaracaoAtual]);
|
|
219
216
|
if (this.pontoDeParadaAtivo) {
|
|
220
217
|
this.avisoPontoParadaAtivado();
|
|
@@ -222,7 +219,7 @@ class InterpretadorComDepuracao extends interpretador_1.Interpretador {
|
|
|
222
219
|
}
|
|
223
220
|
retornoExecucao = await this.executar(proximoEscopo.declaracoes[proximoEscopo.declaracaoAtual]);
|
|
224
221
|
// Um ponto de parada ativo pode ter vindo de um escopo mais interno.
|
|
225
|
-
// Por isso verificamos outra parada aqui para evitar que
|
|
222
|
+
// Por isso verificamos outra parada aqui para evitar que
|
|
226
223
|
// `this.declaracaoAtual` seja incrementado.
|
|
227
224
|
if (this.pontoDeParadaAtivo) {
|
|
228
225
|
this.avisoPontoParadaAtivado();
|
|
@@ -252,8 +249,7 @@ class InterpretadorComDepuracao extends interpretador_1.Interpretador {
|
|
|
252
249
|
* @returns True quando execução deve parar. False caso contrário.
|
|
253
250
|
*/
|
|
254
251
|
verificarPontoParada(declaracao) {
|
|
255
|
-
const buscaPontoParada = this.pontosParada.filter((p) => p.hashArquivo === declaracao.hashArquivo &&
|
|
256
|
-
p.linha === declaracao.linha);
|
|
252
|
+
const buscaPontoParada = this.pontosParada.filter((p) => p.hashArquivo === declaracao.hashArquivo && p.linha === declaracao.linha);
|
|
257
253
|
if (buscaPontoParada.length > 0) {
|
|
258
254
|
console.log(`Ponto de parada encontrado. Linha: ${declaracao.linha}.`);
|
|
259
255
|
return true;
|
|
@@ -332,8 +328,7 @@ class InterpretadorComDepuracao extends interpretador_1.Interpretador {
|
|
|
332
328
|
const ultimoEscopo = this.pilhaEscoposExecucao.topoDaPilha();
|
|
333
329
|
let retornoExecucao;
|
|
334
330
|
try {
|
|
335
|
-
for (; !(retornoExecucao instanceof quebras_1.Quebra) &&
|
|
336
|
-
ultimoEscopo.declaracaoAtual < ultimoEscopo.declaracoes.length; ultimoEscopo.declaracaoAtual++) {
|
|
331
|
+
for (; !(retornoExecucao instanceof quebras_1.Quebra) && ultimoEscopo.declaracaoAtual < ultimoEscopo.declaracoes.length; ultimoEscopo.declaracaoAtual++) {
|
|
337
332
|
if (naoVerificarPrimeiraExecucao) {
|
|
338
333
|
naoVerificarPrimeiraExecucao = false;
|
|
339
334
|
}
|
|
@@ -346,7 +341,7 @@ class InterpretadorComDepuracao extends interpretador_1.Interpretador {
|
|
|
346
341
|
}
|
|
347
342
|
retornoExecucao = await this.executar(ultimoEscopo.declaracoes[ultimoEscopo.declaracaoAtual]);
|
|
348
343
|
// Um ponto de parada ativo pode ter vindo de um escopo mais interno.
|
|
349
|
-
// Por isso verificamos outra parada aqui para evitar que
|
|
344
|
+
// Por isso verificamos outra parada aqui para evitar que
|
|
350
345
|
// `this.declaracaoAtual` seja incrementado.
|
|
351
346
|
if (this.pontoDeParadaAtivo) {
|
|
352
347
|
this.avisoPontoParadaAtivado();
|
|
@@ -375,11 +370,19 @@ class InterpretadorComDepuracao extends interpretador_1.Interpretador {
|
|
|
375
370
|
* Quando um ponto de parada é ativado, a pilha de execução do TypeScript é perdida.
|
|
376
371
|
* Esse método cria uma nova pilha de execução do lado do JS, começando do último elemento executado do
|
|
377
372
|
* primeiro escopo, subindo até o último elemento executado do último escopo.
|
|
378
|
-
*
|
|
379
|
-
*
|
|
373
|
+
* Se entre escopos houver ponto de parada ativo, a execução é suspensa até o próximo comando
|
|
374
|
+
* do desenvolvedor.
|
|
375
|
+
* @see executarUltimoEscopo
|
|
380
376
|
*/
|
|
381
|
-
async instrucaoContinuarInterpretacao() {
|
|
382
|
-
|
|
377
|
+
async instrucaoContinuarInterpretacao(escopo = 1) {
|
|
378
|
+
let retornoExecucao;
|
|
379
|
+
if (escopo < this.escopoAtual) {
|
|
380
|
+
retornoExecucao = await this.instrucaoContinuarInterpretacao(escopo + 1);
|
|
381
|
+
}
|
|
382
|
+
if (this.pontoDeParadaAtivo) {
|
|
383
|
+
return;
|
|
384
|
+
}
|
|
385
|
+
await this.executarUltimoEscopoComandoContinuar(false, true);
|
|
383
386
|
}
|
|
384
387
|
/**
|
|
385
388
|
* Empilha um escopo se for possível.
|
|
@@ -433,7 +436,7 @@ class InterpretadorComDepuracao extends interpretador_1.Interpretador {
|
|
|
433
436
|
declaracaoAtual: 0,
|
|
434
437
|
ambiente: ambiente || new espaco_variaveis_1.EspacoVariaveis(),
|
|
435
438
|
finalizado: false,
|
|
436
|
-
tipo: tipoEscopo
|
|
439
|
+
tipo: tipoEscopo,
|
|
437
440
|
};
|
|
438
441
|
this.pilhaEscoposExecucao.empilhar(escopoExecucao);
|
|
439
442
|
this.escopoAtual++;
|
|
@@ -465,7 +468,7 @@ class InterpretadorComDepuracao extends interpretador_1.Interpretador {
|
|
|
465
468
|
const retorno = {
|
|
466
469
|
erros: this.erros,
|
|
467
470
|
// resultado: this.resultadoInterpretador // Removido para simplificar `this.executar()`.
|
|
468
|
-
resultado: [resultado]
|
|
471
|
+
resultado: [resultado],
|
|
469
472
|
};
|
|
470
473
|
this.resultadoInterpretador = [];
|
|
471
474
|
return retorno;
|
|
@@ -480,10 +483,12 @@ class InterpretadorComDepuracao extends interpretador_1.Interpretador {
|
|
|
480
483
|
*/
|
|
481
484
|
obterVariavel(nome) {
|
|
482
485
|
const valorOuVariavel = this.pilhaEscoposExecucao.obterValorVariavel({ lexema: nome });
|
|
483
|
-
return valorOuVariavel.hasOwnProperty('valor')
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
486
|
+
return valorOuVariavel.hasOwnProperty('valor')
|
|
487
|
+
? valorOuVariavel
|
|
488
|
+
: {
|
|
489
|
+
valor: valorOuVariavel,
|
|
490
|
+
tipo: (0, inferenciador_1.inferirTipoVariavel)(valorOuVariavel),
|
|
491
|
+
};
|
|
487
492
|
}
|
|
488
493
|
}
|
|
489
494
|
exports.InterpretadorComDepuracao = InterpretadorComDepuracao;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interpretador-com-depuracao.js","sourceRoot":"","sources":["../../../fontes/interpretador/interpretador-com-depuracao.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"interpretador-com-depuracao.js","sourceRoot":"","sources":["../../../fontes/interpretador/interpretador-com-depuracao.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import * as readline from 'readline';
|
|
|
3
3
|
import { EspacoVariaveis } from '../espaco-variaveis';
|
|
4
4
|
import { InterpretadorInterface, SimboloInterface, VariavelInterface } from '../interfaces';
|
|
5
5
|
import { Bloco, Classe, Continua, Declaracao, Enquanto, Escolha, Escreva, EscrevaMesmaLinha, Expressao, Fazer, FuncaoDeclaracao, Importar, Leia, Para, Retorna, Se, Tente, Var } from '../declaracoes';
|
|
6
|
-
import { DeleguaFuncao } from '../estruturas';
|
|
6
|
+
import { DeleguaFuncao, DeleguaModulo } from '../estruturas';
|
|
7
7
|
import { AcessoIndiceVariavel, Agrupamento, Atribuir, Construto, FormatacaoEscrita, Literal, Logico, Super, Unario, Variavel } from '../construtos';
|
|
8
8
|
import { ErroInterpretador } from './erro-interpretador';
|
|
9
9
|
import { RetornoInterpretador } from '../interfaces/retornos/retorno-interpretador';
|
|
@@ -97,7 +97,12 @@ export declare class Interpretador implements InterpretadorInterface {
|
|
|
97
97
|
*/
|
|
98
98
|
visitarDeclaracaoTente(declaracao: Tente): Promise<any>;
|
|
99
99
|
visitarDeclaracaoEnquanto(declaracao: Enquanto): Promise<any>;
|
|
100
|
-
|
|
100
|
+
/**
|
|
101
|
+
* Importa um arquivo como módulo.
|
|
102
|
+
* @param declaracao A declaração de importação.
|
|
103
|
+
* @returns Ou um `DeleguaModulo`, ou um dicionário de funções.
|
|
104
|
+
*/
|
|
105
|
+
visitarDeclaracaoImportar(declaracao: Importar): Promise<DeleguaModulo>;
|
|
101
106
|
protected avaliarArgumentosEscreva(argumentos: Construto[]): Promise<string>;
|
|
102
107
|
/**
|
|
103
108
|
* Execução de uma escrita na saída padrão, sem quebras de linha.
|
|
@@ -65,7 +65,7 @@ class Interpretador {
|
|
|
65
65
|
declaracaoAtual: 0,
|
|
66
66
|
ambiente: new espaco_variaveis_1.EspacoVariaveis(),
|
|
67
67
|
finalizado: false,
|
|
68
|
-
tipo: 'outro'
|
|
68
|
+
tipo: 'outro',
|
|
69
69
|
};
|
|
70
70
|
this.pilhaEscoposExecucao.empilhar(escopoExecucao);
|
|
71
71
|
(0, biblioteca_global_1.default)(this, this.pilhaEscoposExecucao);
|
|
@@ -78,7 +78,7 @@ class Interpretador {
|
|
|
78
78
|
*/
|
|
79
79
|
async visitarExpressaoLeia(expressao) {
|
|
80
80
|
const mensagem = expressao.argumentos && expressao.argumentos[0] ? expressao.argumentos[0].valor : '> ';
|
|
81
|
-
return new Promise(resolucao => this.interfaceEntradaSaida.question(mensagem, (resposta) => {
|
|
81
|
+
return new Promise((resolucao) => this.interfaceEntradaSaida.question(mensagem, (resposta) => {
|
|
82
82
|
resolucao(resposta);
|
|
83
83
|
}));
|
|
84
84
|
}
|
|
@@ -153,9 +153,7 @@ class Interpretador {
|
|
|
153
153
|
}
|
|
154
154
|
async visitarExpressaoUnaria(expressao) {
|
|
155
155
|
const direita = await this.avaliar(expressao.direita);
|
|
156
|
-
const valor = direita.hasOwnProperty('valor') ?
|
|
157
|
-
direita.valor :
|
|
158
|
-
direita;
|
|
156
|
+
const valor = direita.hasOwnProperty('valor') ? direita.valor : direita;
|
|
159
157
|
switch (expressao.operador.tipo) {
|
|
160
158
|
case delegua_1.default.SUBTRACAO:
|
|
161
159
|
this.verificarOperandoNumero(expressao.operador, valor);
|
|
@@ -168,14 +166,10 @@ class Interpretador {
|
|
|
168
166
|
return null;
|
|
169
167
|
}
|
|
170
168
|
async visitarExpressaoFormatacaoEscrita(declaracao) {
|
|
171
|
-
let resultado =
|
|
169
|
+
let resultado = '';
|
|
172
170
|
const conteudo = await this.avaliar(declaracao.expressao);
|
|
173
|
-
const valorConteudo = (conteudo === null || conteudo === void 0 ? void 0 : conteudo.hasOwnProperty('valor'))
|
|
174
|
-
|
|
175
|
-
: conteudo;
|
|
176
|
-
const tipoConteudo = conteudo.hasOwnProperty('tipo')
|
|
177
|
-
? conteudo.tipo
|
|
178
|
-
: typeof conteudo;
|
|
171
|
+
const valorConteudo = (conteudo === null || conteudo === void 0 ? void 0 : conteudo.hasOwnProperty('valor')) ? conteudo.valor : conteudo;
|
|
172
|
+
const tipoConteudo = conteudo.hasOwnProperty('tipo') ? conteudo.tipo : typeof conteudo;
|
|
179
173
|
resultado = valorConteudo;
|
|
180
174
|
if (['número', 'number'].includes(tipoConteudo) && declaracao.casasDecimais > 0) {
|
|
181
175
|
resultado = valorConteudo.toLocaleString('pt', { maximumFractionDigits: declaracao.casasDecimais });
|
|
@@ -201,11 +195,7 @@ class Interpretador {
|
|
|
201
195
|
* @returns Se ambos os operandos são números ou não.
|
|
202
196
|
*/
|
|
203
197
|
verificarOperandosNumeros(operador, direita, esquerda) {
|
|
204
|
-
const tipoDireita = direita.tipo
|
|
205
|
-
? direita.tipo
|
|
206
|
-
: typeof direita === 'number'
|
|
207
|
-
? 'número'
|
|
208
|
-
: String(NaN);
|
|
198
|
+
const tipoDireita = direita.tipo ? direita.tipo : typeof direita === 'number' ? 'número' : String(NaN);
|
|
209
199
|
const tipoEsquerda = esquerda.tipo
|
|
210
200
|
? esquerda.tipo
|
|
211
201
|
: typeof esquerda === 'number'
|
|
@@ -219,18 +209,12 @@ class Interpretador {
|
|
|
219
209
|
try {
|
|
220
210
|
const esquerda = await this.avaliar(expressao.esquerda);
|
|
221
211
|
const direita = await this.avaliar(expressao.direita);
|
|
222
|
-
const valorEsquerdo = (esquerda === null || esquerda === void 0 ? void 0 : esquerda.hasOwnProperty('valor'))
|
|
223
|
-
|
|
224
|
-
: esquerda;
|
|
225
|
-
const valorDireito = (direita === null || direita === void 0 ? void 0 : direita.hasOwnProperty('valor'))
|
|
226
|
-
? direita.valor
|
|
227
|
-
: direita;
|
|
212
|
+
const valorEsquerdo = (esquerda === null || esquerda === void 0 ? void 0 : esquerda.hasOwnProperty('valor')) ? esquerda.valor : esquerda;
|
|
213
|
+
const valorDireito = (direita === null || direita === void 0 ? void 0 : direita.hasOwnProperty('valor')) ? direita.valor : direita;
|
|
228
214
|
const tipoEsquerdo = (esquerda === null || esquerda === void 0 ? void 0 : esquerda.hasOwnProperty('tipo'))
|
|
229
215
|
? esquerda.tipo
|
|
230
216
|
: (0, inferenciador_1.inferirTipoVariavel)(esquerda);
|
|
231
|
-
const tipoDireito = (direita === null || direita === void 0 ? void 0 : direita.hasOwnProperty('tipo'))
|
|
232
|
-
? direita.tipo
|
|
233
|
-
: (0, inferenciador_1.inferirTipoVariavel)(direita);
|
|
217
|
+
const tipoDireito = (direita === null || direita === void 0 ? void 0 : direita.hasOwnProperty('tipo')) ? direita.tipo : (0, inferenciador_1.inferirTipoVariavel)(direita);
|
|
234
218
|
switch (expressao.operador.tipo) {
|
|
235
219
|
case delegua_1.default.EXPONENCIACAO:
|
|
236
220
|
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
@@ -325,9 +309,7 @@ class Interpretador {
|
|
|
325
309
|
const argumentosResolvidos = [];
|
|
326
310
|
for (const argumento of expressao.argumentos) {
|
|
327
311
|
const valorResolvido = await this.avaliar(argumento);
|
|
328
|
-
argumentosResolvidos.push(valorResolvido.hasOwnProperty('valor')
|
|
329
|
-
? valorResolvido.valor
|
|
330
|
-
: valorResolvido);
|
|
312
|
+
argumentosResolvidos.push(valorResolvido.hasOwnProperty('valor') ? valorResolvido.valor : valorResolvido);
|
|
331
313
|
}
|
|
332
314
|
return entidadeChamada.chamar(argumentosResolvidos);
|
|
333
315
|
}
|
|
@@ -343,8 +325,7 @@ class Interpretador {
|
|
|
343
325
|
else {
|
|
344
326
|
parametros = [];
|
|
345
327
|
}
|
|
346
|
-
const aridade = entidadeChamada.aridade ?
|
|
347
|
-
entidadeChamada.aridade() : entidadeChamada.length;
|
|
328
|
+
const aridade = entidadeChamada.aridade ? entidadeChamada.aridade() : entidadeChamada.length;
|
|
348
329
|
// Completar os parâmetros não preenchidos com nulos.
|
|
349
330
|
if (argumentos.length < aridade) {
|
|
350
331
|
const diferenca = aridade - argumentos.length;
|
|
@@ -353,9 +334,7 @@ class Interpretador {
|
|
|
353
334
|
}
|
|
354
335
|
}
|
|
355
336
|
else {
|
|
356
|
-
if (parametros &&
|
|
357
|
-
parametros.length > 0 &&
|
|
358
|
-
parametros[parametros.length - 1].tipo === 'estrela') {
|
|
337
|
+
if (parametros && parametros.length > 0 && parametros[parametros.length - 1].tipo === 'estrela') {
|
|
359
338
|
const novosArgumentos = argumentos.slice(0, parametros.length - 1);
|
|
360
339
|
novosArgumentos.push(argumentos.slice(parametros.length - 1, argumentos.length));
|
|
361
340
|
argumentos = novosArgumentos;
|
|
@@ -363,13 +342,13 @@ class Interpretador {
|
|
|
363
342
|
}
|
|
364
343
|
if (entidadeChamada instanceof estruturas_1.FuncaoPadrao) {
|
|
365
344
|
try {
|
|
366
|
-
return entidadeChamada.chamar(argumentos.map(a => a !== null && a.hasOwnProperty('valor') ? a.valor : a), expressao.entidadeChamada.nome);
|
|
345
|
+
return entidadeChamada.chamar(argumentos.map((a) => (a !== null && a.hasOwnProperty('valor') ? a.valor : a)), expressao.entidadeChamada.nome);
|
|
367
346
|
}
|
|
368
347
|
catch (erro) {
|
|
369
348
|
this.erros.push(erro);
|
|
370
349
|
}
|
|
371
350
|
}
|
|
372
|
-
if (
|
|
351
|
+
if (entidadeChamada instanceof estruturas_1.Chamavel) {
|
|
373
352
|
return entidadeChamada.chamar(this, argumentos);
|
|
374
353
|
}
|
|
375
354
|
// A função chamada pode ser de uma biblioteca JavaScript.
|
|
@@ -459,8 +438,7 @@ class Interpretador {
|
|
|
459
438
|
}
|
|
460
439
|
let retornoExecucao;
|
|
461
440
|
while (!(retornoExecucao instanceof quebras_1.Quebra)) {
|
|
462
|
-
if (declaracao.condicao !== null &&
|
|
463
|
-
!this.eVerdadeiro(await this.avaliar(declaracao.condicao))) {
|
|
441
|
+
if (declaracao.condicao !== null && !this.eVerdadeiro(await this.avaliar(declaracao.condicao))) {
|
|
464
442
|
break;
|
|
465
443
|
}
|
|
466
444
|
try {
|
|
@@ -502,7 +480,7 @@ class Interpretador {
|
|
|
502
480
|
for (let i = 0; i < caminhos.length; i++) {
|
|
503
481
|
const caminho = caminhos[i];
|
|
504
482
|
for (let j = 0; j < caminho.condicoes.length; j++) {
|
|
505
|
-
if (await this.avaliar(caminho.condicoes[j]) === condicaoEscolha) {
|
|
483
|
+
if ((await this.avaliar(caminho.condicoes[j])) === condicaoEscolha) {
|
|
506
484
|
encontrado = true;
|
|
507
485
|
try {
|
|
508
486
|
await this.executarBloco(caminho.declaracoes);
|
|
@@ -557,8 +535,7 @@ class Interpretador {
|
|
|
557
535
|
}
|
|
558
536
|
async visitarDeclaracaoEnquanto(declaracao) {
|
|
559
537
|
let retornoExecucao;
|
|
560
|
-
while (!(retornoExecucao instanceof quebras_1.Quebra) &&
|
|
561
|
-
this.eVerdadeiro(await this.avaliar(declaracao.condicao))) {
|
|
538
|
+
while (!(retornoExecucao instanceof quebras_1.Quebra) && this.eVerdadeiro(await this.avaliar(declaracao.condicao))) {
|
|
562
539
|
try {
|
|
563
540
|
retornoExecucao = await this.executar(declaracao.corpo);
|
|
564
541
|
if (retornoExecucao instanceof quebras_1.ContinuarQuebra) {
|
|
@@ -571,12 +548,16 @@ class Interpretador {
|
|
|
571
548
|
}
|
|
572
549
|
return null;
|
|
573
550
|
}
|
|
551
|
+
/**
|
|
552
|
+
* Importa um arquivo como módulo.
|
|
553
|
+
* @param declaracao A declaração de importação.
|
|
554
|
+
* @returns Ou um `DeleguaModulo`, ou um dicionário de funções.
|
|
555
|
+
*/
|
|
574
556
|
async visitarDeclaracaoImportar(declaracao) {
|
|
575
557
|
const caminhoRelativo = await this.avaliar(declaracao.caminho);
|
|
576
558
|
const caminhoTotal = caminho.join(this.diretorioBase, caminhoRelativo);
|
|
577
559
|
const nomeArquivo = caminho.basename(caminhoTotal);
|
|
578
|
-
if (!caminhoTotal.endsWith('.
|
|
579
|
-
!caminhoTotal.endsWith('.delegua')) {
|
|
560
|
+
if (!caminhoTotal.endsWith('.delegua')) {
|
|
580
561
|
try {
|
|
581
562
|
return await (0, importar_biblioteca_1.default)(caminhoRelativo);
|
|
582
563
|
}
|
|
@@ -588,24 +569,26 @@ class Interpretador {
|
|
|
588
569
|
const conteudoImportacao = this.importador.importar(caminhoRelativo, false, false);
|
|
589
570
|
const retornoInterpretador = await this.interpretar(conteudoImportacao.retornoAvaliadorSintatico.declaracoes, true);
|
|
590
571
|
const funcoesChamaveis = this.pilhaEscoposExecucao.obterTodasDeleguaFuncao();
|
|
591
|
-
const
|
|
592
|
-
if (
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
572
|
+
const declaracoesClasse = this.pilhaEscoposExecucao.obterTodasDeclaracaoClasse();
|
|
573
|
+
if (declaracoesClasse.hasOwnProperty('super')) {
|
|
574
|
+
delete declaracoesClasse['super'];
|
|
575
|
+
}
|
|
576
|
+
const novoModulo = new estruturas_1.DeleguaModulo();
|
|
577
|
+
const chavesFuncoesChamaveis = Object.keys(funcoesChamaveis);
|
|
578
|
+
for (let i = 0; i < chavesFuncoesChamaveis.length; i++) {
|
|
579
|
+
novoModulo.componentes[chavesFuncoesChamaveis[i]] = funcoesChamaveis[chavesFuncoesChamaveis[i]];
|
|
580
|
+
}
|
|
581
|
+
const chavesDeclaracoesClasse = Object.keys(declaracoesClasse);
|
|
582
|
+
for (let i = 0; i < chavesDeclaracoesClasse.length; i++) {
|
|
583
|
+
novoModulo.componentes[chavesDeclaracoesClasse[i]] = declaracoesClasse[chavesDeclaracoesClasse[i]];
|
|
599
584
|
}
|
|
600
|
-
return
|
|
585
|
+
return novoModulo;
|
|
601
586
|
}
|
|
602
587
|
async avaliarArgumentosEscreva(argumentos) {
|
|
603
588
|
let formatoTexto = '';
|
|
604
589
|
for (const argumento of argumentos) {
|
|
605
590
|
const resultadoAvaliacao = await this.avaliar(argumento);
|
|
606
|
-
let valor = (resultadoAvaliacao === null || resultadoAvaliacao === void 0 ? void 0 : resultadoAvaliacao.hasOwnProperty('valor'))
|
|
607
|
-
? resultadoAvaliacao.valor
|
|
608
|
-
: resultadoAvaliacao;
|
|
591
|
+
let valor = (resultadoAvaliacao === null || resultadoAvaliacao === void 0 ? void 0 : resultadoAvaliacao.hasOwnProperty('valor')) ? resultadoAvaliacao.valor : resultadoAvaliacao;
|
|
609
592
|
formatoTexto += `${this.paraTexto(valor)} `;
|
|
610
593
|
}
|
|
611
594
|
return formatoTexto;
|
|
@@ -626,7 +609,7 @@ class Interpretador {
|
|
|
626
609
|
this.erros.push({
|
|
627
610
|
erroInterno: erro,
|
|
628
611
|
linha: declaracao.linha,
|
|
629
|
-
hashArquivo: declaracao.hashArquivo
|
|
612
|
+
hashArquivo: declaracao.hashArquivo,
|
|
630
613
|
});
|
|
631
614
|
}
|
|
632
615
|
}
|
|
@@ -646,7 +629,7 @@ class Interpretador {
|
|
|
646
629
|
this.erros.push({
|
|
647
630
|
erroInterno: erro,
|
|
648
631
|
linha: declaracao.linha,
|
|
649
|
-
hashArquivo: declaracao.hashArquivo
|
|
632
|
+
hashArquivo: declaracao.hashArquivo,
|
|
650
633
|
});
|
|
651
634
|
}
|
|
652
635
|
}
|
|
@@ -665,7 +648,7 @@ class Interpretador {
|
|
|
665
648
|
declaracaoAtual: 0,
|
|
666
649
|
ambiente: ambiente || new espaco_variaveis_1.EspacoVariaveis(),
|
|
667
650
|
finalizado: false,
|
|
668
|
-
tipo: 'outro'
|
|
651
|
+
tipo: 'outro',
|
|
669
652
|
};
|
|
670
653
|
this.pilhaEscoposExecucao.empilhar(escopoExecucao);
|
|
671
654
|
const retornoUltimoEscopo = await this.executarUltimoEscopo();
|
|
@@ -719,7 +702,7 @@ class Interpretador {
|
|
|
719
702
|
const promises = await Promise.all([
|
|
720
703
|
this.avaliar(expressao.objeto),
|
|
721
704
|
this.avaliar(expressao.indice),
|
|
722
|
-
this.avaliar(expressao.valor)
|
|
705
|
+
this.avaliar(expressao.valor),
|
|
723
706
|
]);
|
|
724
707
|
let objeto = promises[0];
|
|
725
708
|
let indice = promises[1];
|
|
@@ -750,9 +733,7 @@ class Interpretador {
|
|
|
750
733
|
}
|
|
751
734
|
async visitarExpressaoAcessoIndiceVariavel(expressao) {
|
|
752
735
|
const variavelObjeto = await this.avaliar(expressao.entidadeChamada);
|
|
753
|
-
const objeto = variavelObjeto.hasOwnProperty('valor')
|
|
754
|
-
? variavelObjeto.valor
|
|
755
|
-
: variavelObjeto;
|
|
736
|
+
const objeto = variavelObjeto.hasOwnProperty('valor') ? variavelObjeto.valor : variavelObjeto;
|
|
756
737
|
const indice = await this.avaliar(expressao.indice);
|
|
757
738
|
let valorIndice = indice.hasOwnProperty('valor') ? indice.valor : indice;
|
|
758
739
|
if (Array.isArray(objeto)) {
|
|
@@ -796,11 +777,8 @@ class Interpretador {
|
|
|
796
777
|
}
|
|
797
778
|
async visitarExpressaoDefinirValor(expressao) {
|
|
798
779
|
const variavelObjeto = await this.avaliar(expressao.objeto);
|
|
799
|
-
const objeto = variavelObjeto.hasOwnProperty('valor')
|
|
800
|
-
|
|
801
|
-
: variavelObjeto;
|
|
802
|
-
if (!(objeto instanceof estruturas_1.ObjetoDeleguaClasse) &&
|
|
803
|
-
objeto.constructor !== Object) {
|
|
780
|
+
const objeto = variavelObjeto.hasOwnProperty('valor') ? variavelObjeto.valor : variavelObjeto;
|
|
781
|
+
if (!(objeto instanceof estruturas_1.ObjetoDeleguaClasse) && objeto.constructor !== Object) {
|
|
804
782
|
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.objeto.nome, 'Somente instâncias e dicionários podem possuir campos.', expressao.linha));
|
|
805
783
|
}
|
|
806
784
|
const valor = await this.avaliar(expressao.valor);
|
|
@@ -857,13 +835,11 @@ class Interpretador {
|
|
|
857
835
|
*/
|
|
858
836
|
async visitarExpressaoAcessoMetodo(expressao) {
|
|
859
837
|
const variavelObjeto = await this.avaliar(expressao.objeto);
|
|
860
|
-
const objeto = variavelObjeto.hasOwnProperty('valor')
|
|
861
|
-
? variavelObjeto.valor
|
|
862
|
-
: variavelObjeto;
|
|
838
|
+
const objeto = variavelObjeto.hasOwnProperty('valor') ? variavelObjeto.valor : variavelObjeto;
|
|
863
839
|
if (objeto instanceof estruturas_1.ObjetoDeleguaClasse) {
|
|
864
840
|
return objeto.obter(expressao.simbolo) || null;
|
|
865
841
|
}
|
|
866
|
-
// TODO: Possivelmente depreciar esta forma.
|
|
842
|
+
// TODO: Possivelmente depreciar esta forma.
|
|
867
843
|
// Não parece funcionar em momento algum.
|
|
868
844
|
if (objeto.constructor === Object) {
|
|
869
845
|
return objeto[expressao.simbolo.lexema] || null;
|
|
@@ -903,10 +879,7 @@ class Interpretador {
|
|
|
903
879
|
async visitarExpressaoDicionario(expressao) {
|
|
904
880
|
const dicionario = {};
|
|
905
881
|
for (let i = 0; i < expressao.chaves.length; i++) {
|
|
906
|
-
const promises = await Promise.all([
|
|
907
|
-
this.avaliar(expressao.chaves[i]),
|
|
908
|
-
this.avaliar(expressao.valores[i])
|
|
909
|
-
]);
|
|
882
|
+
const promises = await Promise.all([this.avaliar(expressao.chaves[i]), this.avaliar(expressao.valores[i])]);
|
|
910
883
|
dicionario[promises[0]] = promises[1];
|
|
911
884
|
}
|
|
912
885
|
return dicionario;
|
|
@@ -979,8 +952,7 @@ class Interpretador {
|
|
|
979
952
|
const ultimoEscopo = this.pilhaEscoposExecucao.topoDaPilha();
|
|
980
953
|
try {
|
|
981
954
|
let retornoExecucao;
|
|
982
|
-
for (; !(retornoExecucao instanceof quebras_1.Quebra) &&
|
|
983
|
-
ultimoEscopo.declaracaoAtual < ultimoEscopo.declaracoes.length; ultimoEscopo.declaracaoAtual++) {
|
|
955
|
+
for (; !(retornoExecucao instanceof quebras_1.Quebra) && ultimoEscopo.declaracaoAtual < ultimoEscopo.declaracoes.length; ultimoEscopo.declaracaoAtual++) {
|
|
984
956
|
retornoExecucao = await this.executar(ultimoEscopo.declaracoes[ultimoEscopo.declaracaoAtual]);
|
|
985
957
|
}
|
|
986
958
|
return retornoExecucao;
|
|
@@ -1011,7 +983,7 @@ class Interpretador {
|
|
|
1011
983
|
declaracaoAtual: 0,
|
|
1012
984
|
ambiente: new espaco_variaveis_1.EspacoVariaveis(),
|
|
1013
985
|
finalizado: false,
|
|
1014
|
-
tipo: 'outro'
|
|
986
|
+
tipo: 'outro',
|
|
1015
987
|
};
|
|
1016
988
|
this.pilhaEscoposExecucao.empilhar(escopoExecucao);
|
|
1017
989
|
const inicioInterpretacao = (0, browser_process_hrtime_1.default)();
|