@designliquido/delegua 1.3.0 → 1.3.2
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/bin/package.json +1 -1
- package/interfaces/visitante-comum-interface.d.ts +3 -4
- package/interfaces/visitante-comum-interface.d.ts.map +1 -1
- package/interpretador/depuracao/comum.d.ts +2 -0
- package/interpretador/depuracao/comum.d.ts.map +1 -1
- package/interpretador/depuracao/comum.js +15 -2
- package/interpretador/depuracao/comum.js.map +1 -1
- package/interpretador/depuracao/interpretador-base-com-depuracao.d.ts +2 -0
- package/interpretador/depuracao/interpretador-base-com-depuracao.d.ts.map +1 -1
- package/interpretador/depuracao/interpretador-base-com-depuracao.js +6 -0
- package/interpretador/depuracao/interpretador-base-com-depuracao.js.map +1 -1
- package/interpretador/interpretador-base.d.ts +2 -2
- package/interpretador/interpretador-base.d.ts.map +1 -1
- package/interpretador/interpretador-base.js +8 -5
- package/interpretador/interpretador-base.js.map +1 -1
- package/interpretador/interpretador.d.ts +1 -3
- package/interpretador/interpretador.d.ts.map +1 -1
- package/interpretador/interpretador.js +0 -8
- package/interpretador/interpretador.js.map +1 -1
- package/package.json +1 -1
- package/tradutores/tradutor-mermaidjs.d.ts +24 -25
- package/tradutores/tradutor-mermaidjs.d.ts.map +1 -1
- package/tradutores/tradutor-mermaidjs.js +205 -37
- package/tradutores/tradutor-mermaidjs.js.map +1 -1
- package/umd/delegua.js +214 -51
package/umd/delegua.js
CHANGED
|
@@ -16628,11 +16628,9 @@ class InterpretadorBase {
|
|
|
16628
16628
|
// Outros tipos de objetos (Date, classes customizadas, etc.)
|
|
16629
16629
|
return objeto;
|
|
16630
16630
|
}
|
|
16631
|
-
visitarExpressaoArgumentoReferenciaFuncao(expressao) {
|
|
16632
|
-
|
|
16633
|
-
|
|
16634
|
-
visitarExpressaoReferenciaFuncao(expressao) {
|
|
16635
|
-
throw new Error('Método não implementado.');
|
|
16631
|
+
async visitarExpressaoArgumentoReferenciaFuncao(expressao) {
|
|
16632
|
+
const deleguaFuncao = this.pilhaEscoposExecucao.obterVariavelPorNome(expressao.simboloFuncao.lexema);
|
|
16633
|
+
return deleguaFuncao;
|
|
16636
16634
|
}
|
|
16637
16635
|
visitarExpressaoAcessoMetodo(expressao) {
|
|
16638
16636
|
throw new Error('Método não implementado.');
|
|
@@ -16710,6 +16708,10 @@ class InterpretadorBase {
|
|
|
16710
16708
|
async visitarExpressaoFimPara(declaracao) {
|
|
16711
16709
|
throw new Error('Método não implementado.');
|
|
16712
16710
|
}
|
|
16711
|
+
async visitarExpressaoReferenciaFuncao(expressao) {
|
|
16712
|
+
const deleguaFuncao = this.pilhaEscoposExecucao.obterReferenciaFuncao(expressao.idFuncao);
|
|
16713
|
+
return deleguaFuncao;
|
|
16714
|
+
}
|
|
16713
16715
|
/**
|
|
16714
16716
|
* Chama o método `aceitar` de um construto ou declaração, passando o
|
|
16715
16717
|
* próprio interpretador como parâmetro.
|
|
@@ -17774,6 +17776,7 @@ class InterpretadorBase {
|
|
|
17774
17776
|
visitarDeclaracaoDefinicaoFuncao(declaracao) {
|
|
17775
17777
|
const funcao = new estruturas_1.DeleguaFuncao(declaracao.simbolo.lexema, declaracao.funcao);
|
|
17776
17778
|
this.pilhaEscoposExecucao.definirVariavel(declaracao.simbolo.lexema, funcao);
|
|
17779
|
+
this.pilhaEscoposExecucao.registrarReferenciaFuncao(declaracao.id, funcao);
|
|
17777
17780
|
return Promise.resolve({
|
|
17778
17781
|
declaracao: funcao,
|
|
17779
17782
|
});
|
|
@@ -19031,10 +19034,6 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
19031
19034
|
async visitarExpressaoAjuda(expressao) {
|
|
19032
19035
|
return Promise.resolve((0, comum_1.pontoEntradaAjuda)(expressao.funcao, expressao.valor));
|
|
19033
19036
|
}
|
|
19034
|
-
async visitarExpressaoArgumentoReferenciaFuncao(expressao) {
|
|
19035
|
-
const deleguaFuncao = this.pilhaEscoposExecucao.obterVariavelPorNome(expressao.simboloFuncao.lexema);
|
|
19036
|
-
return deleguaFuncao;
|
|
19037
|
-
}
|
|
19038
19037
|
async visitarExpressaoAtribuicaoPorIndice(expressao) {
|
|
19039
19038
|
const promises = await Promise.all([
|
|
19040
19039
|
this.avaliar(expressao.objeto),
|
|
@@ -19201,10 +19200,6 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
19201
19200
|
visitarExpressaoParaCada(expressao) {
|
|
19202
19201
|
return this.logicaComumExecucaoParaCada(expressao, true);
|
|
19203
19202
|
}
|
|
19204
|
-
async visitarExpressaoReferenciaFuncao(expressao) {
|
|
19205
|
-
const deleguaFuncao = this.pilhaEscoposExecucao.obterReferenciaFuncao(expressao.idFuncao);
|
|
19206
|
-
return deleguaFuncao;
|
|
19207
|
-
}
|
|
19208
19203
|
async visitarExpressaoRetornar(declaracao) {
|
|
19209
19204
|
let valor = null;
|
|
19210
19205
|
if (declaracao.valor !== null && declaracao.valor !== undefined) {
|
|
@@ -40767,6 +40762,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
40767
40762
|
};
|
|
40768
40763
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40769
40764
|
exports.TradutorMermaidJs = void 0;
|
|
40765
|
+
const construtos_1 = require("../construtos");
|
|
40766
|
+
const declaracoes_1 = require("../declaracoes");
|
|
40770
40767
|
const mermaid_1 = require("./mermaid");
|
|
40771
40768
|
const delegua_1 = __importDefault(require("../tipos-de-simbolos/delegua"));
|
|
40772
40769
|
/**
|
|
@@ -40859,7 +40856,7 @@ class TradutorMermaidJs {
|
|
|
40859
40856
|
}
|
|
40860
40857
|
async visitarDeclaracaoDeExpressao(declaracao) {
|
|
40861
40858
|
// Verifica se é uma chamada de função
|
|
40862
|
-
if (declaracao.expressao.constructor
|
|
40859
|
+
if (declaracao.expressao.constructor === construtos_1.Chamada) {
|
|
40863
40860
|
const chamada = declaracao.expressao;
|
|
40864
40861
|
const verticesChamada = await this.traduzirChamadaFuncao(declaracao, chamada);
|
|
40865
40862
|
if (verticesChamada.length > 0) {
|
|
@@ -41050,12 +41047,24 @@ class TradutorMermaidJs {
|
|
|
41050
41047
|
// Caminho então, normalmente um `Bloco`.
|
|
41051
41048
|
const verticesEntao = await declaracao.caminhoEntao.aceitar(this);
|
|
41052
41049
|
vertices = vertices.concat(verticesEntao);
|
|
41053
|
-
const ultimaArestaEntao = verticesEntao
|
|
41050
|
+
const ultimaArestaEntao = verticesEntao.length > 0
|
|
41051
|
+
? verticesEntao[verticesEntao.length - 1].destino
|
|
41052
|
+
: aresta;
|
|
41054
41053
|
if (declaracao.caminhoSenao) {
|
|
41055
41054
|
this.anteriores = [];
|
|
41056
|
-
|
|
41057
|
-
|
|
41058
|
-
|
|
41055
|
+
// Verifica se é "senão se" ou apenas "senão"
|
|
41056
|
+
const ehSenaoSe = declaracao.caminhoSenao.constructor === declaracoes_1.Se;
|
|
41057
|
+
if (ehSenaoSe) {
|
|
41058
|
+
// Para "senão se", conecta diretamente ao próximo condicional sem nó intermediário
|
|
41059
|
+
this.anteriores.push(aresta);
|
|
41060
|
+
this.ultimaDicaVertice = 'Não';
|
|
41061
|
+
}
|
|
41062
|
+
else {
|
|
41063
|
+
// Para "senão" simples, cria o nó intermediário
|
|
41064
|
+
const arestaSenao = new mermaid_1.ArestaFluxograma(declaracao, `Linha${declaracao.caminhoSenao.linha}(senão)`);
|
|
41065
|
+
vertices.push(new mermaid_1.VerticeFluxograma(aresta, arestaSenao, 'Não'));
|
|
41066
|
+
this.anteriores.push(arestaSenao);
|
|
41067
|
+
}
|
|
41059
41068
|
const verticesSenao = await declaracao.caminhoSenao.aceitar(this);
|
|
41060
41069
|
vertices = vertices.concat(verticesSenao);
|
|
41061
41070
|
}
|
|
@@ -41076,8 +41085,80 @@ class TradutorMermaidJs {
|
|
|
41076
41085
|
vertices.push(new mermaid_1.VerticeFluxograma(ultimaArestaCorpo, aresta));
|
|
41077
41086
|
return Promise.resolve(vertices);
|
|
41078
41087
|
}
|
|
41079
|
-
visitarDeclaracaoTente(declaracao) {
|
|
41080
|
-
|
|
41088
|
+
async visitarDeclaracaoTente(declaracao) {
|
|
41089
|
+
const texto = `Linha${declaracao.linha}(tente)`;
|
|
41090
|
+
const aresta = new mermaid_1.ArestaFluxograma(declaracao, texto);
|
|
41091
|
+
let vertices = this.logicaComumConexaoArestas(aresta);
|
|
41092
|
+
this.anteriores.push(aresta);
|
|
41093
|
+
// Caminho tente (try)
|
|
41094
|
+
const verticesTente = [];
|
|
41095
|
+
for (const declaracaoTente of declaracao.caminhoTente) {
|
|
41096
|
+
const verticesDeclaracao = await declaracaoTente.aceitar(this);
|
|
41097
|
+
verticesTente.push(...verticesDeclaracao);
|
|
41098
|
+
}
|
|
41099
|
+
vertices = vertices.concat(verticesTente);
|
|
41100
|
+
const ultimaArestaTente = verticesTente.length > 0
|
|
41101
|
+
? verticesTente[verticesTente.length - 1].destino
|
|
41102
|
+
: aresta;
|
|
41103
|
+
const anterioresAposTente = [];
|
|
41104
|
+
// Caminho pegue (catch) - se existir
|
|
41105
|
+
if (declaracao.caminhoPegue) {
|
|
41106
|
+
this.anteriores = [aresta];
|
|
41107
|
+
const arestaPegue = new mermaid_1.ArestaFluxograma(declaracao, `Linha${declaracao.linha}Pegue(pegue)`);
|
|
41108
|
+
vertices.push(new mermaid_1.VerticeFluxograma(aresta, arestaPegue, 'Erro'));
|
|
41109
|
+
this.anteriores.push(arestaPegue);
|
|
41110
|
+
const verticesPegue = [];
|
|
41111
|
+
if (Array.isArray(declaracao.caminhoPegue)) {
|
|
41112
|
+
for (const declaracaoPegue of declaracao.caminhoPegue) {
|
|
41113
|
+
const verticesDeclaracao = await declaracaoPegue.aceitar(this);
|
|
41114
|
+
verticesPegue.push(...verticesDeclaracao);
|
|
41115
|
+
}
|
|
41116
|
+
}
|
|
41117
|
+
vertices = vertices.concat(verticesPegue);
|
|
41118
|
+
const ultimaArestaPegue = verticesPegue.length > 0
|
|
41119
|
+
? verticesPegue[verticesPegue.length - 1].destino
|
|
41120
|
+
: arestaPegue;
|
|
41121
|
+
anterioresAposTente.push(ultimaArestaPegue);
|
|
41122
|
+
}
|
|
41123
|
+
// Caminho senão (else) - se existir
|
|
41124
|
+
if (declaracao.caminhoSenao && declaracao.caminhoSenao.length > 0) {
|
|
41125
|
+
this.anteriores = [ultimaArestaTente];
|
|
41126
|
+
const arestaSenao = new mermaid_1.ArestaFluxograma(declaracao, `Linha${declaracao.linha}Senao(senão - sem erro)`);
|
|
41127
|
+
vertices.push(new mermaid_1.VerticeFluxograma(ultimaArestaTente, arestaSenao, 'Sucesso'));
|
|
41128
|
+
this.anteriores.push(arestaSenao);
|
|
41129
|
+
const verticesSenao = [];
|
|
41130
|
+
for (const declaracaoSenao of declaracao.caminhoSenao) {
|
|
41131
|
+
const verticesDeclaracao = await declaracaoSenao.aceitar(this);
|
|
41132
|
+
verticesSenao.push(...verticesDeclaracao);
|
|
41133
|
+
}
|
|
41134
|
+
vertices = vertices.concat(verticesSenao);
|
|
41135
|
+
const ultimaArestaSenao = verticesSenao.length > 0
|
|
41136
|
+
? verticesSenao[verticesSenao.length - 1].destino
|
|
41137
|
+
: arestaSenao;
|
|
41138
|
+
anterioresAposTente.push(ultimaArestaSenao);
|
|
41139
|
+
}
|
|
41140
|
+
else {
|
|
41141
|
+
// Se não há senão, o caminho de sucesso também continua
|
|
41142
|
+
anterioresAposTente.push(ultimaArestaTente);
|
|
41143
|
+
}
|
|
41144
|
+
// Caminho finalmente (finally) - se existir
|
|
41145
|
+
if (declaracao.caminhoFinalmente && declaracao.caminhoFinalmente.length > 0) {
|
|
41146
|
+
this.anteriores = anterioresAposTente;
|
|
41147
|
+
const arestaFinalmente = new mermaid_1.ArestaFluxograma(declaracao, `Linha${declaracao.linha}Finalmente(finalmente)`);
|
|
41148
|
+
vertices = vertices.concat(this.logicaComumConexaoArestas(arestaFinalmente));
|
|
41149
|
+
this.anteriores.push(arestaFinalmente);
|
|
41150
|
+
const verticesFinalmente = [];
|
|
41151
|
+
for (const declaracaoFinalmente of declaracao.caminhoFinalmente) {
|
|
41152
|
+
const verticesDeclaracao = await declaracaoFinalmente.aceitar(this);
|
|
41153
|
+
verticesFinalmente.push(...verticesDeclaracao);
|
|
41154
|
+
}
|
|
41155
|
+
vertices = vertices.concat(verticesFinalmente);
|
|
41156
|
+
}
|
|
41157
|
+
else {
|
|
41158
|
+
// Se não há finalmente, os anteriores são os caminhos após tente
|
|
41159
|
+
this.anteriores = anterioresAposTente;
|
|
41160
|
+
}
|
|
41161
|
+
return Promise.resolve(vertices);
|
|
41081
41162
|
}
|
|
41082
41163
|
visitarDeclaracaoTextoDocumentacao(declaracao) {
|
|
41083
41164
|
throw new Error('Método não implementado.');
|
|
@@ -41120,11 +41201,15 @@ class TradutorMermaidJs {
|
|
|
41120
41201
|
async visitarExpressaoAgrupamento(expressao) {
|
|
41121
41202
|
return await expressao.expressao.aceitar(this);
|
|
41122
41203
|
}
|
|
41123
|
-
visitarExpressaoArgumentoReferenciaFuncao(expressao) {
|
|
41124
|
-
|
|
41204
|
+
async visitarExpressaoArgumentoReferenciaFuncao(expressao) {
|
|
41205
|
+
const nomeFuncao = expressao.simboloFuncao.lexema;
|
|
41206
|
+
return Promise.resolve(`referência à função ${nomeFuncao}`);
|
|
41125
41207
|
}
|
|
41126
|
-
visitarExpressaoAtribuicaoPorIndice(expressao) {
|
|
41127
|
-
|
|
41208
|
+
async visitarExpressaoAtribuicaoPorIndice(expressao) {
|
|
41209
|
+
const textoObjeto = await expressao.objeto.aceitar(this);
|
|
41210
|
+
const textoIndice = await expressao.indice.aceitar(this);
|
|
41211
|
+
const textoValor = await expressao.valor.aceitar(this);
|
|
41212
|
+
return Promise.resolve(`${textoObjeto} no índice ${textoIndice} recebe: ${textoValor}`);
|
|
41128
41213
|
}
|
|
41129
41214
|
visitarExpressaoAtribuicaoPorIndicesMatriz(expressao) {
|
|
41130
41215
|
throw new Error('Método não implementado.');
|
|
@@ -41135,8 +41220,26 @@ class TradutorMermaidJs {
|
|
|
41135
41220
|
switch (expressao.operador.tipo) {
|
|
41136
41221
|
case delegua_1.default.ADICAO:
|
|
41137
41222
|
return Promise.resolve(`somar ${operandoEsquerdo} e ${operandoDireito}`);
|
|
41223
|
+
case delegua_1.default.SUBTRACAO:
|
|
41224
|
+
return Promise.resolve(`subtrair ${operandoDireito} de ${operandoEsquerdo}`);
|
|
41225
|
+
case delegua_1.default.MULTIPLICACAO:
|
|
41226
|
+
return Promise.resolve(`multiplicar ${operandoEsquerdo} por ${operandoDireito}`);
|
|
41227
|
+
case delegua_1.default.DIVISAO:
|
|
41228
|
+
return Promise.resolve(`dividir ${operandoEsquerdo} por ${operandoDireito}`);
|
|
41229
|
+
case delegua_1.default.MODULO:
|
|
41230
|
+
return Promise.resolve(`resto de ${operandoEsquerdo} dividido por ${operandoDireito}`);
|
|
41138
41231
|
case delegua_1.default.MENOR:
|
|
41139
41232
|
return Promise.resolve(`${operandoEsquerdo} for menor que ${operandoDireito}`);
|
|
41233
|
+
case delegua_1.default.MENOR_IGUAL:
|
|
41234
|
+
return Promise.resolve(`${operandoEsquerdo} for menor ou igual a ${operandoDireito}`);
|
|
41235
|
+
case delegua_1.default.MAIOR:
|
|
41236
|
+
return Promise.resolve(`${operandoEsquerdo} for maior que ${operandoDireito}`);
|
|
41237
|
+
case delegua_1.default.MAIOR_IGUAL:
|
|
41238
|
+
return Promise.resolve(`${operandoEsquerdo} for maior ou igual a ${operandoDireito}`);
|
|
41239
|
+
case delegua_1.default.IGUAL_IGUAL:
|
|
41240
|
+
return Promise.resolve(`${operandoEsquerdo} for igual a ${operandoDireito}`);
|
|
41241
|
+
case delegua_1.default.DIFERENTE:
|
|
41242
|
+
return Promise.resolve(`${operandoEsquerdo} for diferente de ${operandoDireito}`);
|
|
41140
41243
|
}
|
|
41141
41244
|
return Promise.resolve('');
|
|
41142
41245
|
}
|
|
@@ -41151,8 +41254,12 @@ class TradutorMermaidJs {
|
|
|
41151
41254
|
async visitarExpressaoComentario(expressao) {
|
|
41152
41255
|
return Promise.resolve('');
|
|
41153
41256
|
}
|
|
41154
|
-
visitarExpressaoContinua(declaracao) {
|
|
41155
|
-
|
|
41257
|
+
async visitarExpressaoContinua(declaracao) {
|
|
41258
|
+
const texto = `Linha${declaracao.linha}(continua)`;
|
|
41259
|
+
const aresta = new mermaid_1.ArestaFluxograma(declaracao, texto);
|
|
41260
|
+
const vertices = this.logicaComumConexaoArestas(aresta);
|
|
41261
|
+
this.anteriores.push(aresta);
|
|
41262
|
+
return Promise.resolve(vertices);
|
|
41156
41263
|
}
|
|
41157
41264
|
async visitarExpressaoDeChamada(expressao) {
|
|
41158
41265
|
const textoEntidadeChamada = await expressao.entidadeChamada.aceitar(this);
|
|
@@ -41175,8 +41282,16 @@ class TradutorMermaidJs {
|
|
|
41175
41282
|
const textoValor = await expressao.valor.aceitar(this);
|
|
41176
41283
|
return Promise.resolve(`${expressao.nome.lexema} em ${textoObjeto} recebe ${textoValor}`);
|
|
41177
41284
|
}
|
|
41178
|
-
visitarExpressaoFuncaoConstruto(expressao) {
|
|
41179
|
-
|
|
41285
|
+
async visitarExpressaoFuncaoConstruto(expressao) {
|
|
41286
|
+
let texto = 'função anônima';
|
|
41287
|
+
if (expressao.parametros && expressao.parametros.length > 0) {
|
|
41288
|
+
const parametros = expressao.parametros.map(p => p.nome.lexema).join(', ');
|
|
41289
|
+
texto += `(${parametros})`;
|
|
41290
|
+
}
|
|
41291
|
+
else {
|
|
41292
|
+
texto += '()';
|
|
41293
|
+
}
|
|
41294
|
+
return Promise.resolve(texto);
|
|
41180
41295
|
}
|
|
41181
41296
|
async visitarExpressaoDeVariavel(expressao) {
|
|
41182
41297
|
return Promise.resolve(expressao.simbolo.lexema);
|
|
@@ -41194,17 +41309,41 @@ class TradutorMermaidJs {
|
|
|
41194
41309
|
}
|
|
41195
41310
|
return Promise.resolve(texto);
|
|
41196
41311
|
}
|
|
41197
|
-
visitarExpressaoExpressaoRegular(expressao) {
|
|
41198
|
-
|
|
41312
|
+
async visitarExpressaoExpressaoRegular(expressao) {
|
|
41313
|
+
// Representa a expressão regular como texto para o fluxograma
|
|
41314
|
+
const padraoRegex = expressao.valor ? String(expressao.valor) : expressao.simbolo.lexema;
|
|
41315
|
+
return Promise.resolve(`expressão regular: /${padraoRegex}/`);
|
|
41199
41316
|
}
|
|
41200
|
-
visitarExpressaoFalhar(expressao) {
|
|
41201
|
-
|
|
41317
|
+
async visitarExpressaoFalhar(expressao) {
|
|
41318
|
+
let texto = `Linha${expressao.linha}(falhar`;
|
|
41319
|
+
if (expressao.explicacao) {
|
|
41320
|
+
const textoExplicacao = await expressao.explicacao.aceitar(this);
|
|
41321
|
+
texto += `: ${textoExplicacao}`;
|
|
41322
|
+
}
|
|
41323
|
+
texto += ')';
|
|
41324
|
+
const aresta = new mermaid_1.ArestaFluxograma(expressao, texto);
|
|
41325
|
+
const vertices = this.logicaComumConexaoArestas(aresta);
|
|
41326
|
+
this.anteriores.push(aresta);
|
|
41327
|
+
return Promise.resolve(vertices);
|
|
41202
41328
|
}
|
|
41203
41329
|
visitarExpressaoFimPara(declaracao) {
|
|
41204
41330
|
throw new Error('Método não implementado.');
|
|
41205
41331
|
}
|
|
41206
|
-
visitarExpressaoFormatacaoEscrita(declaracao) {
|
|
41207
|
-
|
|
41332
|
+
async visitarExpressaoFormatacaoEscrita(declaracao) {
|
|
41333
|
+
const textoExpressao = await declaracao.expressao.aceitar(this);
|
|
41334
|
+
let formato = textoExpressao;
|
|
41335
|
+
// Adiciona informações de formatação se especificadas
|
|
41336
|
+
const partes = [textoExpressao];
|
|
41337
|
+
if (declaracao.espacos > 0) {
|
|
41338
|
+
partes.push(`${declaracao.espacos} espaços`);
|
|
41339
|
+
}
|
|
41340
|
+
if (declaracao.casasDecimais > 0) {
|
|
41341
|
+
partes.push(`${declaracao.casasDecimais} casas decimais`);
|
|
41342
|
+
}
|
|
41343
|
+
if (partes.length > 1) {
|
|
41344
|
+
formato = `${partes[0]} (${partes.slice(1).join(', ')})`;
|
|
41345
|
+
}
|
|
41346
|
+
return Promise.resolve(formato);
|
|
41208
41347
|
}
|
|
41209
41348
|
async visitarExpressaoIsto(expressao) {
|
|
41210
41349
|
return Promise.resolve('this');
|
|
@@ -41227,11 +41366,20 @@ class TradutorMermaidJs {
|
|
|
41227
41366
|
return Promise.resolve(String(expressao.valor));
|
|
41228
41367
|
}
|
|
41229
41368
|
}
|
|
41230
|
-
visitarExpressaoLogica(expressao) {
|
|
41231
|
-
|
|
41369
|
+
async visitarExpressaoLogica(expressao) {
|
|
41370
|
+
const operandoEsquerdo = await expressao.esquerda.aceitar(this);
|
|
41371
|
+
const operandoDireito = await expressao.direita.aceitar(this);
|
|
41372
|
+
switch (expressao.operador.tipo) {
|
|
41373
|
+
case delegua_1.default.E:
|
|
41374
|
+
return Promise.resolve(`${operandoEsquerdo} e ${operandoDireito}`);
|
|
41375
|
+
case delegua_1.default.OU:
|
|
41376
|
+
return Promise.resolve(`${operandoEsquerdo} ou ${operandoDireito}`);
|
|
41377
|
+
}
|
|
41378
|
+
return Promise.resolve('');
|
|
41232
41379
|
}
|
|
41233
|
-
visitarExpressaoReferenciaFuncao(expressao) {
|
|
41234
|
-
|
|
41380
|
+
async visitarExpressaoReferenciaFuncao(expressao) {
|
|
41381
|
+
const nomeFuncao = expressao.simboloFuncao.lexema;
|
|
41382
|
+
return Promise.resolve(`@${nomeFuncao}`);
|
|
41235
41383
|
}
|
|
41236
41384
|
async visitarExpressaoRetornar(expressao) {
|
|
41237
41385
|
let texto = `Linha${expressao.linha}(retorna`;
|
|
@@ -41247,17 +41395,31 @@ class TradutorMermaidJs {
|
|
|
41247
41395
|
async visitarExpressaoSeparador(expressao) {
|
|
41248
41396
|
return Promise.resolve(`${expressao.conteudo} `);
|
|
41249
41397
|
}
|
|
41250
|
-
visitarExpressaoSuper(expressao) {
|
|
41251
|
-
|
|
41398
|
+
async visitarExpressaoSuper(expressao) {
|
|
41399
|
+
return Promise.resolve('super');
|
|
41252
41400
|
}
|
|
41253
|
-
visitarExpressaoSustar(declaracao) {
|
|
41254
|
-
|
|
41401
|
+
async visitarExpressaoSustar(declaracao) {
|
|
41402
|
+
const texto = `Linha${declaracao.linha}(sustar)`;
|
|
41403
|
+
const aresta = new mermaid_1.ArestaFluxograma(declaracao, texto);
|
|
41404
|
+
const vertices = this.logicaComumConexaoArestas(aresta);
|
|
41405
|
+
this.anteriores.push(aresta);
|
|
41406
|
+
return Promise.resolve(vertices);
|
|
41255
41407
|
}
|
|
41256
|
-
visitarExpressaoTupla(expressao) {
|
|
41257
|
-
|
|
41408
|
+
async visitarExpressaoTupla(expressao) {
|
|
41409
|
+
// Tupla base pode ter um único valor
|
|
41410
|
+
if (expressao.valor !== undefined) {
|
|
41411
|
+
return Promise.resolve(`tupla(${expressao.valor})`);
|
|
41412
|
+
}
|
|
41413
|
+
// Se não houver valor, tupla vazia
|
|
41414
|
+
return Promise.resolve('tupla()');
|
|
41258
41415
|
}
|
|
41259
|
-
visitarExpressaoTuplaN(expressao) {
|
|
41260
|
-
|
|
41416
|
+
async visitarExpressaoTuplaN(expressao) {
|
|
41417
|
+
const valores = [];
|
|
41418
|
+
for (const elemento of expressao.elementos) {
|
|
41419
|
+
const valorTraduzido = await elemento.aceitar(this);
|
|
41420
|
+
valores.push(valorTraduzido);
|
|
41421
|
+
}
|
|
41422
|
+
return Promise.resolve(`tupla(${valores.join(', ')})`);
|
|
41261
41423
|
}
|
|
41262
41424
|
visitarExpressaoTipoDe(expressao) {
|
|
41263
41425
|
throw new Error('Método não implementado.');
|
|
@@ -41293,7 +41455,7 @@ class TradutorMermaidJs {
|
|
|
41293
41455
|
*/
|
|
41294
41456
|
async traduzirChamadaFuncao(declaracaoExpressao, chamada) {
|
|
41295
41457
|
// Verifica se é uma chamada a uma função conhecida
|
|
41296
|
-
if (chamada.entidadeChamada.constructor
|
|
41458
|
+
if (chamada.entidadeChamada.constructor === construtos_1.Variavel) {
|
|
41297
41459
|
const variavel = chamada.entidadeChamada;
|
|
41298
41460
|
const nomeFuncao = variavel.simbolo.lexema;
|
|
41299
41461
|
if (this.declaracoesFuncoes[nomeFuncao]) {
|
|
@@ -41357,11 +41519,12 @@ class TradutorMermaidJs {
|
|
|
41357
41519
|
});
|
|
41358
41520
|
}
|
|
41359
41521
|
async logicaComumTraducaoVarEConst(declaracaoVarOuConst, textoInicial) {
|
|
41522
|
+
let adicional = '';
|
|
41360
41523
|
if (declaracaoVarOuConst.inicializador) {
|
|
41361
|
-
|
|
41524
|
+
adicional += `, iniciada com: ${await declaracaoVarOuConst.inicializador.aceitar(this)}`;
|
|
41362
41525
|
}
|
|
41363
|
-
|
|
41364
|
-
return Promise.resolve(
|
|
41526
|
+
adicional += ')';
|
|
41527
|
+
return Promise.resolve(adicional);
|
|
41365
41528
|
}
|
|
41366
41529
|
/**
|
|
41367
41530
|
* Ponto de entrada para a tradução de declarações em um fluxograma
|
|
@@ -41420,7 +41583,7 @@ class TradutorMermaidJs {
|
|
|
41420
41583
|
}
|
|
41421
41584
|
exports.TradutorMermaidJs = TradutorMermaidJs;
|
|
41422
41585
|
|
|
41423
|
-
},{"../tipos-de-simbolos/delegua":212,"./mermaid":222}],236:[function(require,module,exports){
|
|
41586
|
+
},{"../construtos":62,"../declaracoes":109,"../tipos-de-simbolos/delegua":212,"./mermaid":222}],236:[function(require,module,exports){
|
|
41424
41587
|
"use strict";
|
|
41425
41588
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41426
41589
|
exports.TradutorPortugolIpt = void 0;
|