@designliquido/delegua 0.43.2 → 0.43.4

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.
Files changed (53) hide show
  1. package/avaliador-sintatico/avaliador-sintatico-base.d.ts +1 -3
  2. package/avaliador-sintatico/avaliador-sintatico-base.d.ts.map +1 -1
  3. package/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -1
  4. package/avaliador-sintatico/avaliador-sintatico.d.ts +2 -2
  5. package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
  6. package/avaliador-sintatico/avaliador-sintatico.js +9 -3
  7. package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
  8. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts.map +1 -1
  9. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +21 -0
  10. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
  11. package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.d.ts +140 -0
  12. package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.d.ts.map +1 -0
  13. package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.js +1087 -0
  14. package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.js.map +1 -0
  15. package/avaliador-sintatico/dialetos/index.d.ts +1 -0
  16. package/avaliador-sintatico/dialetos/index.d.ts.map +1 -1
  17. package/avaliador-sintatico/dialetos/index.js +1 -0
  18. package/avaliador-sintatico/dialetos/index.js.map +1 -1
  19. package/avaliador-sintatico/erro-avaliador-sintatico.d.ts +2 -0
  20. package/avaliador-sintatico/erro-avaliador-sintatico.d.ts.map +1 -1
  21. package/avaliador-sintatico/erro-avaliador-sintatico.js +2 -0
  22. package/avaliador-sintatico/erro-avaliador-sintatico.js.map +1 -1
  23. package/bin/package.json +1 -1
  24. package/lexador/dialetos/index.d.ts +1 -0
  25. package/lexador/dialetos/index.d.ts.map +1 -1
  26. package/lexador/dialetos/index.js +1 -0
  27. package/lexador/dialetos/index.js.map +1 -1
  28. package/lexador/dialetos/lexador-pitugues.d.ts.map +1 -1
  29. package/lexador/dialetos/lexador-pitugues.js +2 -1
  30. package/lexador/dialetos/lexador-pitugues.js.map +1 -1
  31. package/lexador/dialetos/lexador-tenda.d.ts +52 -0
  32. package/lexador/dialetos/lexador-tenda.d.ts.map +1 -0
  33. package/lexador/dialetos/lexador-tenda.js +399 -0
  34. package/lexador/dialetos/lexador-tenda.js.map +1 -0
  35. package/lexador/dialetos/palavras-reservadas/tenda.d.ts +46 -0
  36. package/lexador/dialetos/palavras-reservadas/tenda.d.ts.map +1 -0
  37. package/lexador/dialetos/palavras-reservadas/tenda.js +53 -0
  38. package/lexador/dialetos/palavras-reservadas/tenda.js.map +1 -0
  39. package/package.json +1 -1
  40. package/tipos-de-simbolos/tenda.d.ts +100 -0
  41. package/tipos-de-simbolos/tenda.d.ts.map +1 -0
  42. package/tipos-de-simbolos/tenda.js +102 -0
  43. package/tipos-de-simbolos/tenda.js.map +1 -0
  44. package/tradutores/index.d.ts +1 -0
  45. package/tradutores/index.d.ts.map +1 -1
  46. package/tradutores/index.js +1 -0
  47. package/tradutores/index.js.map +1 -1
  48. package/tradutores/tradutor-assembly-x64.js +13 -13
  49. package/tradutores/tradutor-reverso-tenda.d.ts +90 -0
  50. package/tradutores/tradutor-reverso-tenda.d.ts.map +1 -0
  51. package/tradutores/tradutor-reverso-tenda.js +584 -0
  52. package/tradutores/tradutor-reverso-tenda.js.map +1 -0
  53. package/umd/delegua.js +6025 -3762
@@ -0,0 +1,584 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TradutorReversoTenda = void 0;
7
+ const construtos_1 = require("../construtos");
8
+ const tenda_1 = __importDefault(require("../tipos-de-simbolos/tenda"));
9
+ class TradutorReversoTenda {
10
+ constructor() {
11
+ this.indentacao = 0;
12
+ this.dicionarioConstrutos = {
13
+ AcessoIndiceVariavel: this.traduzirConstrutoAcessoIndiceVariavel.bind(this),
14
+ AcessoMetodo: this.traduzirConstrutoAcessoMetodo.bind(this),
15
+ AcessoMetodoOuPropriedade: this.traduzirConstrutoAcessoMetodoOuPropriedade.bind(this),
16
+ Agrupamento: this.traduzirConstrutoAgrupamento.bind(this),
17
+ ArgumentoReferenciaFuncao: this.traduzirConstrutoArgumentoReferenciaFuncao.bind(this),
18
+ AtribuicaoPorIndice: this.traduzirConstrutoAtribuicaoPorIndice.bind(this),
19
+ Atribuir: this.traduzirConstrutoAtribuir.bind(this),
20
+ Binario: this.traduzirConstrutoBinario.bind(this),
21
+ Chamada: this.traduzirConstrutoChamada.bind(this),
22
+ DefinirValor: this.traduzirConstrutoDefinirValor.bind(this),
23
+ Dicionario: this.traduzirConstrutoDicionario.bind(this),
24
+ FimPara: this.traduzirConstrutoFimPara.bind(this),
25
+ FuncaoConstruto: this.traduzirFuncaoConstruto.bind(this),
26
+ Isto: () => 'this',
27
+ Leia: this.traduzirConstrutoLeia.bind(this),
28
+ Literal: this.traduzirConstrutoLiteral.bind(this),
29
+ Logico: this.traduzirConstrutoLogico.bind(this),
30
+ ReferenciaFuncao: this.traduzirConstrutoReferenciaFuncao.bind(this),
31
+ TipoDe: this.traduzirConstrutoTipoDe.bind(this),
32
+ Unario: this.traduzirConstrutoUnario.bind(this),
33
+ Variavel: this.traduzirConstrutoVariavel.bind(this),
34
+ Vetor: this.traduzirConstrutoVetor.bind(this),
35
+ };
36
+ this.dicionarioDeclaracoes = {
37
+ Bloco: this.traduzirDeclaracaoBloco.bind(this),
38
+ Classe: this.traduzirDeclaracaoClasse.bind(this),
39
+ Const: this.traduzirDeclaracaoConst.bind(this),
40
+ Comentario: this.traduzirDeclaracaoComentario.bind(this),
41
+ Continua: () => 'continue',
42
+ Enquanto: this.traduzirDeclaracaoEnquanto.bind(this),
43
+ Escreva: this.traduzirDeclaracaoEscreva.bind(this),
44
+ Expressao: this.traduzirDeclaracaoExpressao.bind(this),
45
+ FuncaoDeclaracao: this.traduzirDeclaracaoFuncao.bind(this),
46
+ Para: this.traduzirDeclaracaoPara.bind(this),
47
+ ParaCada: this.traduzirDeclaracaoParaCada.bind(this),
48
+ Retorna: this.traduzirDeclaracaoRetorna.bind(this),
49
+ Se: this.traduzirDeclaracaoSe.bind(this),
50
+ Sustar: () => 'break',
51
+ Tente: this.traduzirDeclaracaoTente.bind(this),
52
+ Var: this.traduzirDeclaracaoVar.bind(this),
53
+ };
54
+ }
55
+ traduzirSimboloOperador(operador) {
56
+ switch (operador.tipo) {
57
+ case tenda_1.default.ADICAO:
58
+ return '+';
59
+ case tenda_1.default.BIT_AND:
60
+ return '&';
61
+ case tenda_1.default.BIT_OR:
62
+ return '|';
63
+ case tenda_1.default.BIT_XOR:
64
+ return '^';
65
+ case tenda_1.default.BIT_NOT:
66
+ return '~';
67
+ case tenda_1.default.DIFERENTE:
68
+ return '!=';
69
+ case tenda_1.default.DIVISAO:
70
+ return '/';
71
+ case tenda_1.default.E:
72
+ return 'e';
73
+ case tenda_1.default.EXPONENCIACAO:
74
+ return '**';
75
+ case tenda_1.default.IGUAL:
76
+ return '=';
77
+ case tenda_1.default.É:
78
+ return '==';
79
+ case tenda_1.default.MAIOR:
80
+ return '>';
81
+ case tenda_1.default.MAIOR_IGUAL:
82
+ return '>=';
83
+ case tenda_1.default.MENOR:
84
+ return '<';
85
+ case tenda_1.default.MENOR_IGUAL:
86
+ return '<=';
87
+ case tenda_1.default.MODULO:
88
+ return '%';
89
+ case tenda_1.default.MULTIPLICACAO:
90
+ return '*';
91
+ case tenda_1.default.NÃO:
92
+ return '!';
93
+ case tenda_1.default.OU:
94
+ return 'ou';
95
+ case tenda_1.default.SUBTRACAO:
96
+ return '-';
97
+ }
98
+ }
99
+ traduzirFuncaoOuMetodo(nomeMetodo, objetoResolvido, argumentos) {
100
+ if (argumentos === undefined) {
101
+ return `${objetoResolvido}.${nomeMetodo}`;
102
+ }
103
+ const argumentosResolvidos = [];
104
+ for (const argumento of argumentos) {
105
+ const argumentoResolvido = this.dicionarioConstrutos[argumento.constructor.name](argumento);
106
+ argumentosResolvidos.push(argumentoResolvido);
107
+ }
108
+ let textoArgumentos = argumentosResolvidos.reduce((atual, proximo) => (atual += proximo + ', '), '');
109
+ textoArgumentos = textoArgumentos.slice(0, -2);
110
+ switch (nomeMetodo) {
111
+ case 'adicionar':
112
+ case 'empilhar':
113
+ return `${objetoResolvido}.push(${textoArgumentos})`;
114
+ case 'fatiar':
115
+ return `${objetoResolvido}.slice(${argumentos[0]}, ${argumentos[1]})`;
116
+ case 'inclui':
117
+ return `${objetoResolvido}.includes(${argumentosResolvidos[0]})`;
118
+ case 'inverter':
119
+ return `${objetoResolvido}.toReversed()`;
120
+ case 'juntar':
121
+ return `${argumentosResolvidos[0]}.join(${objetoResolvido})`;
122
+ case 'maiusculo':
123
+ return `${objetoResolvido}.toUpperCase()`;
124
+ case 'mapear':
125
+ return `${objetoResolvido}.map(${this.traduzirFuncaoAnonimaParaLambda(argumentos[0])})`;
126
+ case 'minusculo':
127
+ return `${objetoResolvido}.toLowerCase()`;
128
+ case 'ordenar':
129
+ return `${objetoResolvido}.sort()`;
130
+ case 'remover':
131
+ return `delete ${objetoResolvido}[${argumentosResolvidos[0]}]`;
132
+ case 'removerPrimeiro':
133
+ return `${objetoResolvido}.shift()`;
134
+ case 'removerUltimo':
135
+ return `${objetoResolvido}.pop()`;
136
+ case 'somar':
137
+ return `${objetoResolvido}.reduce((acumulador, valorAtual) => acumulador + valorAtual, 0)`;
138
+ case 'tamanho':
139
+ return `${objetoResolvido}.length`;
140
+ }
141
+ return `${objetoResolvido}.${nomeMetodo}(${textoArgumentos}))`;
142
+ }
143
+ traduzirConstrutoAgrupamento(agrupamento) {
144
+ return this.dicionarioConstrutos[agrupamento.constructor.name](agrupamento.expressao || agrupamento);
145
+ }
146
+ traduzirConstrutoAtribuir(atribuir) {
147
+ var _a;
148
+ let resultado = this.dicionarioConstrutos[atribuir.alvo.constructor.name](atribuir.alvo);
149
+ const operador = ((_a = atribuir.simboloOperador) === null || _a === void 0 ? void 0 : _a.lexema) || '=';
150
+ // Em Delégua, atribuições com operações embutidas devolvem um construto `Binario` no valor
151
+ // por várias razões, sendo a mais importante delas a lógica de interpretação.
152
+ let valorResolvido = '';
153
+ if (atribuir.simboloOperador && atribuir.valor.constructor.name === 'Binario') {
154
+ valorResolvido = this.dicionarioConstrutos[atribuir.valor.direita.constructor.name](atribuir.valor.direita);
155
+ }
156
+ else {
157
+ valorResolvido = this.dicionarioConstrutos[atribuir.valor.constructor.name](atribuir.valor);
158
+ }
159
+ resultado += ` ${operador} ` + valorResolvido;
160
+ return resultado;
161
+ }
162
+ traduzirConstrutoBinario(binario) {
163
+ let resultado = '';
164
+ // if (binario.esquerda.constructor.name === 'Agrupamento')
165
+ // resultado += '(' + this.dicionarioConstrutos[binario.esquerda.constructor.name](binario.esquerda) + ')';
166
+ // else
167
+ resultado += this.dicionarioConstrutos[binario.esquerda.constructor.name](binario.esquerda);
168
+ let operador = this.traduzirSimboloOperador(binario.operador);
169
+ resultado += ` ${operador} `;
170
+ // if (binario.direita.constructor.name === 'Agrupamento')
171
+ // resultado += '(' + this.dicionarioConstrutos[binario.direita.constructor.name](binario.direita) + ')';
172
+ // else
173
+ resultado += this.dicionarioConstrutos[binario.direita.constructor.name](binario.direita);
174
+ return resultado;
175
+ }
176
+ traduzirConstrutoChamada(chamada) {
177
+ let resultado = '';
178
+ const retorno = `${this.dicionarioConstrutos[chamada.entidadeChamada.constructor.name](chamada.entidadeChamada, chamada.argumentos)}`;
179
+ resultado += retorno;
180
+ return resultado;
181
+ }
182
+ traduzirDeclaracaoComentario(comentario) {
183
+ let resultado = '';
184
+ if (comentario.multilinha) {
185
+ resultado += `/*`;
186
+ for (let linhaComentario of comentario.conteudo) {
187
+ resultado += `${linhaComentario}\n`;
188
+ }
189
+ resultado += `*/`;
190
+ }
191
+ else {
192
+ resultado += `// ${comentario.conteudo}`;
193
+ }
194
+ return resultado;
195
+ }
196
+ traduzirConstrutoDefinirValor(definirValor) {
197
+ let resultado = '';
198
+ if (definirValor.objeto instanceof construtos_1.Isto) {
199
+ resultado = 'this.' + definirValor.nome.lexema + ' = ';
200
+ }
201
+ resultado += definirValor.valor.simbolo.lexema;
202
+ return resultado;
203
+ }
204
+ traduzirConstrutoDicionario(dicionario) {
205
+ let resultado = '{';
206
+ for (let i = 0; i < dicionario.chaves.length; i++) {
207
+ resultado += this.dicionarioConstrutos[dicionario.chaves[i].constructor.name](dicionario.chaves[i]);
208
+ resultado += ':';
209
+ resultado += this.dicionarioConstrutos[dicionario.valores[i].constructor.name](dicionario.valores[i]) + ',';
210
+ }
211
+ resultado += '}';
212
+ return resultado;
213
+ }
214
+ traduzirConstrutoFimPara(fimPara) {
215
+ const traducaoIncremento = this.dicionarioDeclaracoes[fimPara.incremento.constructor.name](fimPara.incremento);
216
+ return traducaoIncremento;
217
+ }
218
+ traduzirConstrutoLiteral(literal) {
219
+ if (typeof literal.valor === 'string') {
220
+ const possuiInterpolacao = /\$\{(verdadeiro|falso|nulo)\}/.test(literal.valor);
221
+ const valor = literal.valor.replace(/\$\{(verdadeiro|falso|nulo)\}/g, (_, match) => {
222
+ switch (match) {
223
+ case 'verdadeiro':
224
+ return '${true}';
225
+ case 'falso':
226
+ return '${false}';
227
+ case 'nulo':
228
+ return '${null}';
229
+ default:
230
+ return match;
231
+ }
232
+ });
233
+ return possuiInterpolacao ? `\`${valor}\`` : `"${literal.valor}"`;
234
+ }
235
+ return literal.valor;
236
+ }
237
+ traduzirConstrutoVariavel(variavel, argumentos) {
238
+ const argumentosResolvidos = [];
239
+ const argumentosValidados = argumentos || [];
240
+ for (const argumento of argumentosValidados) {
241
+ const argumentoResolvido = this.dicionarioConstrutos[argumento.constructor.name](argumento);
242
+ argumentosResolvidos.push(argumentoResolvido);
243
+ }
244
+ let textoArgumentos = argumentosResolvidos.reduce((atual, proximo) => (atual += proximo + ', '), '');
245
+ textoArgumentos = textoArgumentos.slice(0, -2);
246
+ if (argumentosValidados.length > 0) {
247
+ return `${variavel.simbolo.lexema}(${textoArgumentos})`;
248
+ }
249
+ return `${variavel.simbolo.lexema}`;
250
+ }
251
+ logicaComumBlocoEscopo(declaracoes) {
252
+ let resultado = '{\n';
253
+ this.indentacao += 4;
254
+ if (typeof declaracoes[Symbol.iterator] === 'function') {
255
+ for (const declaracaoOuConstruto of declaracoes) {
256
+ resultado += ' '.repeat(this.indentacao);
257
+ const nomeConstrutor = declaracaoOuConstruto.constructor.name;
258
+ if (this.dicionarioConstrutos.hasOwnProperty(nomeConstrutor)) {
259
+ resultado += this.dicionarioConstrutos[nomeConstrutor](declaracaoOuConstruto);
260
+ }
261
+ else {
262
+ resultado += this.dicionarioDeclaracoes[nomeConstrutor](declaracaoOuConstruto);
263
+ }
264
+ resultado += '\n';
265
+ }
266
+ }
267
+ this.indentacao -= 4;
268
+ resultado += ' '.repeat(this.indentacao) + '}\n';
269
+ return resultado;
270
+ }
271
+ traduzirDeclaracaoBloco(declaracaoBloco) {
272
+ return this.logicaComumBlocoEscopo(declaracaoBloco.declaracoes);
273
+ }
274
+ logicaTraducaoMetodoClasse(metodoClasse) {
275
+ this.indentacao += 4;
276
+ let resultado = ' '.repeat(this.indentacao);
277
+ resultado += metodoClasse.simbolo.lexema === 'construtor' ? 'constructor(' : metodoClasse.simbolo.lexema + '(';
278
+ for (let parametro of metodoClasse.funcao.parametros) {
279
+ resultado += parametro.nome.lexema + ', ';
280
+ }
281
+ if (metodoClasse.funcao.parametros.length > 0) {
282
+ resultado = resultado.slice(0, -2);
283
+ }
284
+ resultado += ') ';
285
+ resultado += this.logicaComumBlocoEscopo(metodoClasse.funcao.corpo);
286
+ resultado += ' '.repeat(this.indentacao) + '\n';
287
+ this.indentacao -= 4;
288
+ return resultado;
289
+ }
290
+ traduzirDeclaracaoClasse(declaracaoClasse) {
291
+ let resultado = 'export class ';
292
+ if (declaracaoClasse.superClasse)
293
+ resultado += `${declaracaoClasse.simbolo.lexema} extends ${declaracaoClasse.superClasse.simbolo.lexema} {\n`;
294
+ else
295
+ resultado += declaracaoClasse.simbolo.lexema + ' {\n';
296
+ for (let metodo of declaracaoClasse.metodos) {
297
+ resultado += this.logicaTraducaoMetodoClasse(metodo);
298
+ }
299
+ resultado += '}';
300
+ return resultado;
301
+ }
302
+ traduzirDeclaracaoEnquanto(declaracaoEnquanto) {
303
+ let resultado = 'enquanto (';
304
+ resultado +=
305
+ this.dicionarioConstrutos[declaracaoEnquanto.condicao.constructor.name](declaracaoEnquanto.condicao) + ') ';
306
+ resultado += this.dicionarioDeclaracoes[declaracaoEnquanto.corpo.constructor.name](declaracaoEnquanto.corpo);
307
+ return resultado;
308
+ }
309
+ traduzirDeclaracaoEscreva(declaracaoEscreva) {
310
+ let resultado = 'escreva(';
311
+ for (const argumento of declaracaoEscreva.argumentos) {
312
+ const valor = this.dicionarioConstrutos[argumento.constructor.name](argumento);
313
+ resultado += valor + ', ';
314
+ }
315
+ resultado = resultado.slice(0, -2);
316
+ resultado += ')';
317
+ return resultado;
318
+ }
319
+ traduzirDeclaracaoExpressao(declaracaoExpressao) {
320
+ return this.dicionarioConstrutos[declaracaoExpressao.expressao.constructor.name](declaracaoExpressao.expressao);
321
+ }
322
+ traduzirDeclaracaoFuncao(declaracaoFuncao) {
323
+ let resultado = 'função ';
324
+ resultado += declaracaoFuncao.simbolo.lexema + '(';
325
+ for (const parametro of declaracaoFuncao.funcao.parametros) {
326
+ resultado += parametro.nome.lexema + ', ';
327
+ }
328
+ if (declaracaoFuncao.funcao.parametros.length > 0) {
329
+ resultado = resultado.slice(0, -2);
330
+ }
331
+ resultado += ') ';
332
+ resultado += this.logicaComumBlocoEscopo(declaracaoFuncao.funcao.corpo);
333
+ return resultado;
334
+ }
335
+ traduzirConstrutoLeia(declaracaoLeia) {
336
+ return `leia("${declaracaoLeia.argumentos[0].valor}")'`;
337
+ }
338
+ traduzirDeclaracaoParaCada(declaracaoParaCada) {
339
+ let resultado = `para cada ${declaracaoParaCada.nomeVariavelIteracao} em `;
340
+ resultado +=
341
+ this.dicionarioConstrutos[declaracaoParaCada.vetor.constructor.name](declaracaoParaCada.vetor) + ' ';
342
+ resultado += this.dicionarioDeclaracoes[declaracaoParaCada.corpo.constructor.name](declaracaoParaCada.corpo);
343
+ return resultado;
344
+ }
345
+ traduzirDeclaracaoPara(declaracaoPara) {
346
+ let resultado = 'para ';
347
+ if (declaracaoPara.inicializador.constructor.name === 'Array') {
348
+ resultado +=
349
+ this.dicionarioDeclaracoes[declaracaoPara.inicializador[0].constructor.name](declaracaoPara.inicializador[0], false) + '; ';
350
+ }
351
+ else {
352
+ resultado +=
353
+ this.dicionarioDeclaracoes[declaracaoPara.inicializador.constructor.name](declaracaoPara.inicializador, false) + '; ';
354
+ }
355
+ resultado +=
356
+ this.dicionarioConstrutos[declaracaoPara.condicao.constructor.name](declaracaoPara.condicao) + '; ';
357
+ resultado +=
358
+ this.dicionarioConstrutos[declaracaoPara.incrementar.constructor.name](declaracaoPara.incrementar) + ' ';
359
+ resultado += this.dicionarioDeclaracoes[declaracaoPara.corpo.constructor.name](declaracaoPara.corpo);
360
+ return resultado;
361
+ }
362
+ traduzirDeclaracaoRetorna(declaracaoRetorna) {
363
+ let resultado = 'retorna ';
364
+ const nomeConstrutor = declaracaoRetorna.valor.constructor.name;
365
+ return (resultado += this.dicionarioConstrutos[nomeConstrutor](declaracaoRetorna === null || declaracaoRetorna === void 0 ? void 0 : declaracaoRetorna.valor));
366
+ }
367
+ traduzirDeclaracaoSe(declaracaoSe) {
368
+ let resultado = 'se ';
369
+ const condicao = this.dicionarioConstrutos[declaracaoSe.condicao.constructor.name](declaracaoSe.condicao);
370
+ resultado += condicao;
371
+ resultado += ' ' + this.dicionarioDeclaracoes[declaracaoSe.caminhoEntao.constructor.name](declaracaoSe.caminhoEntao);
372
+ if (declaracaoSe.caminhoSenao !== null) {
373
+ resultado += ' '.repeat(this.indentacao);
374
+ resultado += ' senão ';
375
+ resultado += this.dicionarioDeclaracoes[declaracaoSe.caminhoSenao.constructor.name](declaracaoSe.caminhoSenao);
376
+ }
377
+ return resultado;
378
+ }
379
+ traduzirDeclaracaoTente(declaracaoTente) {
380
+ let resultado = 'try {\n';
381
+ this.indentacao += 4;
382
+ resultado += ' '.repeat(this.indentacao);
383
+ for (let condicao of declaracaoTente.caminhoTente) {
384
+ resultado += this.dicionarioDeclaracoes[condicao.constructor.name](condicao) + '\n';
385
+ resultado += ' '.repeat(this.indentacao);
386
+ }
387
+ resultado += '}';
388
+ if (declaracaoTente.caminhoPegue !== null) {
389
+ resultado += '\ncatch {\n';
390
+ resultado += ' '.repeat(this.indentacao);
391
+ if (Array.isArray(declaracaoTente.caminhoPegue)) {
392
+ for (let declaracao of declaracaoTente.caminhoPegue) {
393
+ resultado += this.dicionarioDeclaracoes[declaracao.constructor.name](declaracao) + '\n';
394
+ }
395
+ }
396
+ else {
397
+ for (let corpo of declaracaoTente.caminhoPegue.corpo) {
398
+ resultado += this.dicionarioDeclaracoes[corpo.constructor.name](corpo) + '\n';
399
+ }
400
+ }
401
+ resultado += ' '.repeat(this.indentacao);
402
+ resultado += '}';
403
+ }
404
+ if (declaracaoTente.caminhoFinalmente !== null) {
405
+ resultado += '\nfinally {\n';
406
+ for (let finalmente of declaracaoTente.caminhoFinalmente) {
407
+ resultado += this.dicionarioDeclaracoes[finalmente.constructor.name](finalmente) + '\n';
408
+ }
409
+ resultado += ' '.repeat(this.indentacao);
410
+ resultado += '}';
411
+ }
412
+ return resultado;
413
+ }
414
+ traduzirDeclaracaoConst(declaracaoConst) {
415
+ let resultado = 'const ';
416
+ resultado += declaracaoConst.simbolo.lexema;
417
+ if (!(declaracaoConst === null || declaracaoConst === void 0 ? void 0 : declaracaoConst.inicializador))
418
+ resultado += ';';
419
+ else {
420
+ resultado += ' = ';
421
+ if (this.dicionarioConstrutos[declaracaoConst.inicializador.constructor.name]) {
422
+ resultado += this.dicionarioConstrutos[declaracaoConst.inicializador.constructor.name](declaracaoConst.inicializador);
423
+ }
424
+ else {
425
+ resultado += this.dicionarioDeclaracoes[declaracaoConst.inicializador.constructor.name](declaracaoConst.inicializador);
426
+ }
427
+ resultado += ';';
428
+ }
429
+ return resultado;
430
+ }
431
+ traduzirDeclaracaoVar(declaracaoVar, adicionarPontoEVirgula = true) {
432
+ let resultado = 'var ';
433
+ resultado += declaracaoVar.simbolo.lexema;
434
+ if (!(declaracaoVar === null || declaracaoVar === void 0 ? void 0 : declaracaoVar.inicializador) && adicionarPontoEVirgula)
435
+ resultado += ';';
436
+ else {
437
+ resultado += ' = ';
438
+ if (this.dicionarioConstrutos[declaracaoVar.inicializador.constructor.name]) {
439
+ resultado += this.dicionarioConstrutos[declaracaoVar.inicializador.constructor.name](declaracaoVar.inicializador);
440
+ }
441
+ else {
442
+ resultado += this.dicionarioDeclaracoes[declaracaoVar.inicializador.constructor.name](declaracaoVar.inicializador);
443
+ }
444
+ // if (adicionarPontoEVirgula) resultado += ';';
445
+ }
446
+ return resultado;
447
+ }
448
+ // TODO: Talvez terminar (ou remover, sei lá).
449
+ traduzirFuncaoAnonimaParaLambda(argumento) {
450
+ return '';
451
+ }
452
+ traduzirConstrutoAcessoMetodo(acessoMetodo, argumentos) {
453
+ switch (acessoMetodo.objeto.constructor.name) {
454
+ case 'Variavel':
455
+ let objetoVariavel = acessoMetodo.objeto;
456
+ return this.traduzirFuncaoOuMetodo(acessoMetodo.nomeMetodo, objetoVariavel.simbolo.lexema, argumentos);
457
+ default:
458
+ const objetoResolvido = this.dicionarioConstrutos[acessoMetodo.objeto.constructor.name](acessoMetodo.objeto);
459
+ return `${objetoResolvido}.${acessoMetodo.nomeMetodo}`;
460
+ }
461
+ }
462
+ traduzirConstrutoAcessoMetodoOuPropriedade(acessoMetodo, argumentos) {
463
+ if (acessoMetodo.objeto instanceof construtos_1.Variavel) {
464
+ let objetoVariavel = acessoMetodo.objeto;
465
+ return `${this.traduzirFuncaoOuMetodo(acessoMetodo.simbolo.lexema, objetoVariavel.simbolo.lexema, argumentos)}`;
466
+ }
467
+ return `this.${acessoMetodo.simbolo.lexema}`;
468
+ }
469
+ traduzirFuncaoConstruto(funcaoConstruto) {
470
+ let resultado = 'função(';
471
+ for (const parametro of funcaoConstruto.parametros) {
472
+ resultado += parametro.nome.lexema + ', ';
473
+ }
474
+ if (funcaoConstruto.parametros.length > 0) {
475
+ resultado = resultado.slice(0, -2);
476
+ }
477
+ resultado += ') ';
478
+ resultado += this.logicaComumBlocoEscopo(funcaoConstruto.corpo);
479
+ return resultado;
480
+ }
481
+ traduzirConstrutoLogico(logico) {
482
+ let direita = this.dicionarioConstrutos[logico.direita.constructor.name](logico.direita);
483
+ let operador = this.traduzirSimboloOperador(logico.operador);
484
+ let esquerda = this.dicionarioConstrutos[logico.esquerda.constructor.name](logico.esquerda);
485
+ return `${direita} ${operador} ${esquerda}`;
486
+ }
487
+ // TODO: Eliminar o soft cast para `any`.
488
+ traduzirConstrutoAtribuicaoPorIndice(AtribuicaoPorIndice) {
489
+ var _a, _b;
490
+ let resultado = '';
491
+ resultado += AtribuicaoPorIndice.objeto.simbolo.lexema + '[';
492
+ resultado +=
493
+ this.dicionarioConstrutos[AtribuicaoPorIndice.indice.constructor.name](AtribuicaoPorIndice.indice) + ']';
494
+ resultado += ' = ';
495
+ if ((_b = (_a = AtribuicaoPorIndice === null || AtribuicaoPorIndice === void 0 ? void 0 : AtribuicaoPorIndice.valor) === null || _a === void 0 ? void 0 : _a.simbolo) === null || _b === void 0 ? void 0 : _b.lexema) {
496
+ resultado += `${AtribuicaoPorIndice.valor.simbolo.lexema}`;
497
+ }
498
+ else {
499
+ resultado += this.dicionarioConstrutos[AtribuicaoPorIndice.valor.constructor.name](AtribuicaoPorIndice.valor);
500
+ }
501
+ return resultado;
502
+ }
503
+ traduzirConstrutoAcessoIndiceVariavel(acessoIndiceVariavel) {
504
+ let resultado = '';
505
+ resultado += this.dicionarioConstrutos[acessoIndiceVariavel.entidadeChamada.constructor.name](acessoIndiceVariavel.entidadeChamada);
506
+ resultado += `[${this.dicionarioConstrutos[acessoIndiceVariavel.indice.constructor.name](acessoIndiceVariavel.indice)}]`;
507
+ return resultado;
508
+ }
509
+ traduzirConstrutoArgumentoReferenciaFuncao(argumentoReferenciaFuncao, argumentos) {
510
+ const argumentosResolvidos = [];
511
+ for (const argumento of argumentos) {
512
+ const argumentoResolvido = this.dicionarioConstrutos[argumento.constructor.name](argumento);
513
+ argumentosResolvidos.push(argumentoResolvido);
514
+ }
515
+ let textoArgumentos = argumentosResolvidos.reduce((atual, proximo) => (atual += proximo + ', '), '');
516
+ textoArgumentos = textoArgumentos.slice(0, -2);
517
+ return `${argumentoReferenciaFuncao.simboloFuncao.lexema}(${textoArgumentos})`;
518
+ }
519
+ traduzirConstrutoReferenciaFuncao(referenciaFuncao, argumentos) {
520
+ const argumentosResolvidos = [];
521
+ for (const argumento of argumentos) {
522
+ const argumentoResolvido = this.dicionarioConstrutos[argumento.constructor.name](argumento);
523
+ argumentosResolvidos.push(argumentoResolvido);
524
+ }
525
+ let textoArgumentos = argumentosResolvidos.reduce((atual, proximo) => (atual += proximo + ', '), '');
526
+ textoArgumentos = textoArgumentos.slice(0, -2);
527
+ return `${referenciaFuncao.simboloFuncao.lexema}(${textoArgumentos})`;
528
+ }
529
+ traduzirConstrutoTipoDe(tipoDe) {
530
+ let resultado = 'typeof ';
531
+ if (!tipoDe.valor)
532
+ resultado += tipoDe.valor; // Qual o sentido disso?
533
+ else if (typeof tipoDe.valor === 'string')
534
+ resultado += `'${tipoDe.valor}'`;
535
+ else if (typeof tipoDe.valor === 'number')
536
+ resultado += tipoDe.valor;
537
+ else {
538
+ // Talvez isso seja uma péssima ideia.
539
+ // Pensar em algo melhor.
540
+ let alvoTipoDe = String(this.dicionarioConstrutos[tipoDe.valor.constructor.name](tipoDe.valor));
541
+ if (alvoTipoDe.startsWith('new')) {
542
+ alvoTipoDe = alvoTipoDe.slice(4, -2);
543
+ }
544
+ resultado += `${alvoTipoDe}`;
545
+ }
546
+ return resultado;
547
+ }
548
+ traduzirConstrutoVetor(vetor) {
549
+ if (!vetor.valores.length) {
550
+ return '[]';
551
+ }
552
+ let resultado = '[';
553
+ for (let valor of vetor.valores) {
554
+ resultado += `${this.dicionarioConstrutos[valor.constructor.name](valor)}, `;
555
+ }
556
+ if (vetor.valores.length > 0) {
557
+ resultado = resultado.slice(0, -2);
558
+ }
559
+ resultado += ']';
560
+ return resultado;
561
+ }
562
+ traduzirConstrutoUnario(unario) {
563
+ var _a, _b;
564
+ let resultado = '';
565
+ if ([tenda_1.default.INCREMENTAR, tenda_1.default.DECREMENTAR].includes(unario.operador.tipo)) {
566
+ resultado += (_a = unario.operando.valor) !== null && _a !== void 0 ? _a : unario.operando.simbolo.lexema;
567
+ resultado += unario.operador.tipo === tenda_1.default.INCREMENTAR ? '++' : '--';
568
+ }
569
+ else {
570
+ resultado += this.traduzirSimboloOperador(unario.operador);
571
+ resultado += (_b = unario.operando.valor) !== null && _b !== void 0 ? _b : unario.operando.simbolo.lexema;
572
+ }
573
+ return resultado;
574
+ }
575
+ traduzir(declaracoes) {
576
+ let resultado = '';
577
+ for (const declaracao of declaracoes) {
578
+ resultado += `${this.dicionarioDeclaracoes[declaracao.constructor.name](declaracao)} \n`;
579
+ }
580
+ return resultado;
581
+ }
582
+ }
583
+ exports.TradutorReversoTenda = TradutorReversoTenda;
584
+ //# sourceMappingURL=tradutor-reverso-tenda.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tradutor-reverso-tenda.js","sourceRoot":"","sources":["../../fontes/tradutores/tradutor-reverso-tenda.ts"],"names":[],"mappings":"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"}