@designliquido/delegua 0.33.16 → 0.34.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.
Files changed (79) hide show
  1. package/analisador-semantico/analisador-semantico-base.d.ts +4 -3
  2. package/analisador-semantico/analisador-semantico-base.d.ts.map +1 -1
  3. package/analisador-semantico/analisador-semantico-base.js +9 -6
  4. package/analisador-semantico/analisador-semantico-base.js.map +1 -1
  5. package/analisador-semantico/analisador-semantico.d.ts.map +1 -1
  6. package/analisador-semantico/analisador-semantico.js.map +1 -1
  7. package/avaliador-sintatico/avaliador-sintatico.d.ts +13 -11
  8. package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
  9. package/avaliador-sintatico/avaliador-sintatico.js +151 -142
  10. package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
  11. package/bin/package.json +15 -4
  12. package/construtos/atribuir.d.ts +3 -0
  13. package/construtos/atribuir.d.ts.map +1 -1
  14. package/construtos/atribuir.js +3 -0
  15. package/construtos/atribuir.js.map +1 -1
  16. package/construtos/comentario.d.ts +16 -0
  17. package/construtos/comentario.d.ts.map +1 -0
  18. package/construtos/comentario.js +21 -0
  19. package/construtos/comentario.js.map +1 -0
  20. package/construtos/index.d.ts +1 -0
  21. package/construtos/index.d.ts.map +1 -1
  22. package/construtos/index.js +1 -0
  23. package/construtos/index.js.map +1 -1
  24. package/estruturas/chamavel.d.ts +2 -1
  25. package/estruturas/chamavel.d.ts.map +1 -1
  26. package/estruturas/chamavel.js +1 -1
  27. package/estruturas/chamavel.js.map +1 -1
  28. package/estruturas/classe-padrao.d.ts +2 -1
  29. package/estruturas/classe-padrao.d.ts.map +1 -1
  30. package/estruturas/classe-padrao.js +1 -1
  31. package/estruturas/classe-padrao.js.map +1 -1
  32. package/estruturas/funcao-padrao.d.ts +6 -3
  33. package/estruturas/funcao-padrao.d.ts.map +1 -1
  34. package/estruturas/funcao-padrao.js +8 -4
  35. package/estruturas/funcao-padrao.js.map +1 -1
  36. package/formatadores/formatador-delegua.d.ts +2 -1
  37. package/formatadores/formatador-delegua.d.ts.map +1 -1
  38. package/formatadores/formatador-delegua.js +14 -0
  39. package/formatadores/formatador-delegua.js.map +1 -1
  40. package/formatadores/index.d.ts +0 -1
  41. package/formatadores/index.d.ts.map +1 -1
  42. package/formatadores/index.js +0 -1
  43. package/formatadores/index.js.map +1 -1
  44. package/interfaces/visitante-comum-interface.d.ts +2 -1
  45. package/interfaces/visitante-comum-interface.d.ts.map +1 -1
  46. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts +3 -2
  47. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts.map +1 -1
  48. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +4 -1
  49. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js.map +1 -1
  50. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts +2 -1
  51. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts.map +1 -1
  52. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js +3 -0
  53. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js.map +1 -1
  54. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts +2 -1
  55. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts.map +1 -1
  56. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js +3 -0
  57. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js.map +1 -1
  58. package/interpretador/interpretador-base.d.ts +29 -6
  59. package/interpretador/interpretador-base.d.ts.map +1 -1
  60. package/interpretador/interpretador-base.js +70 -52
  61. package/interpretador/interpretador-base.js.map +1 -1
  62. package/interpretador/interpretador-com-depuracao.d.ts.map +1 -1
  63. package/interpretador/interpretador-com-depuracao.js +17 -8
  64. package/interpretador/interpretador-com-depuracao.js.map +1 -1
  65. package/lexador/lexador.d.ts +2 -2
  66. package/lexador/lexador.d.ts.map +1 -1
  67. package/lexador/lexador.js +33 -15
  68. package/lexador/lexador.js.map +1 -1
  69. package/package.json +15 -4
  70. package/tipos-de-simbolos/delegua.d.ts +2 -0
  71. package/tipos-de-simbolos/delegua.d.ts.map +1 -1
  72. package/tipos-de-simbolos/delegua.js +2 -0
  73. package/tipos-de-simbolos/delegua.js.map +1 -1
  74. package/tradutores/tradutor-assembly-x64.js +13 -13
  75. package/umd/delegua.js +73028 -0
  76. package/formatadores/formatador-potigol.d.ts +0 -83
  77. package/formatadores/formatador-potigol.d.ts.map +0 -1
  78. package/formatadores/formatador-potigol.js +0 -662
  79. package/formatadores/formatador-potigol.js.map +0 -1
@@ -1,662 +0,0 @@
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.FormatadorPotigol = void 0;
7
- const construtos_1 = require("../construtos");
8
- const potigol_1 = __importDefault(require("../tipos-de-simbolos/potigol"));
9
- class FormatadorPotigol {
10
- constructor(quebraLinha, tamanhoIndentacao = 4) {
11
- this.quebraLinha = quebraLinha;
12
- this.tamanhoIndentacao = tamanhoIndentacao;
13
- this.indentacaoAtual = 0;
14
- this.codigoFormatado = '';
15
- this.devePularLinha = true;
16
- this.deveIndentar = true;
17
- }
18
- visitarDeclaracaoTendoComo(declaracao) {
19
- throw new Error('Método não implementado.');
20
- }
21
- visitarDeclaracaoInicioAlgoritmo(declaracao) {
22
- throw new Error('Método não implementado.');
23
- }
24
- visitarDeclaracaoCabecalhoPrograma(declaracao) {
25
- throw new Error('Método não implementado.');
26
- }
27
- visitarExpressaoTupla(expressao) {
28
- throw new Error('Método não implementado');
29
- }
30
- visitarDeclaracaoClasse(declaracao) {
31
- this.codigoFormatado += `${" ".repeat(this.indentacaoAtual)}tipo ${declaracao.simbolo.lexema}${this.quebraLinha}`;
32
- this.formatarBlocoOuVetorDeclaracoes(declaracao.propriedades);
33
- this.formatarBlocoOuVetorDeclaracoes(declaracao.metodos);
34
- this.codigoFormatado += `fim${this.quebraLinha}`;
35
- }
36
- visitarExpressaoPropriedadeClasse(expressao) {
37
- this.codigoFormatado += `${" ".repeat(this.indentacaoAtual)}${expressao.nome.lexema}: `;
38
- if (expressao.tipo) {
39
- this.codigoFormatado += `${expressao.tipo}`;
40
- }
41
- this.codigoFormatado += this.quebraLinha;
42
- }
43
- visitarDeclaracaoConst(declaracao) {
44
- this.codigoFormatado += `${" ".repeat(this.indentacaoAtual)}${declaracao.simbolo.lexema}`;
45
- if (declaracao.tipo) {
46
- this.codigoFormatado += ": ";
47
- switch (declaracao.tipo.toUpperCase()) {
48
- case potigol_1.default.TEXTO:
49
- this.codigoFormatado += 'Caractere = ';
50
- break;
51
- case potigol_1.default.INTEIRO:
52
- this.codigoFormatado += 'Inteiro = ';
53
- break;
54
- case "NUMERO":
55
- case potigol_1.default.REAL:
56
- this.codigoFormatado += 'Real = ';
57
- break;
58
- case potigol_1.default.LOGICO:
59
- this.codigoFormatado += 'Logico = ';
60
- break;
61
- case potigol_1.default.LÓGICO:
62
- this.codigoFormatado += 'Lógico = ';
63
- break;
64
- default:
65
- console.log(declaracao.tipo);
66
- break;
67
- }
68
- }
69
- if (declaracao.inicializador && !declaracao.tipo) {
70
- this.codigoFormatado += " = ";
71
- }
72
- if (declaracao.inicializador) {
73
- this.formatarDeclaracaoOuConstruto(declaracao.inicializador);
74
- }
75
- }
76
- visitarDeclaracaoConstMultiplo(declaracao) {
77
- throw new Error('Método não implementado');
78
- }
79
- visitarExpressaoDeAtribuicao(expressao) {
80
- this.codigoFormatado += `${expressao.simbolo.lexema} de `;
81
- this.formatarDeclaracaoOuConstruto(expressao.valor);
82
- if (this.devePularLinha) {
83
- this.codigoFormatado += `${this.quebraLinha}`;
84
- }
85
- }
86
- visitarDeclaracaoDeExpressao(declaracao) {
87
- this.formatarDeclaracaoOuConstruto(declaracao.expressao);
88
- }
89
- visitarDeclaracaoAleatorio(declaracao) {
90
- throw new Error('Método não implementado.');
91
- }
92
- visitarDeclaracaoDefinicaoFuncao(declaracao) {
93
- if (declaracao.simbolo.tipo !== potigol_1.default.CONSTRUTOR) {
94
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}${declaracao.simbolo.lexema}(`;
95
- this.visitarExpressaoFuncaoConstruto(declaracao.funcao);
96
- }
97
- }
98
- visitarDeclaracaoEnquanto(declaracao) {
99
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}enquanto(`;
100
- this.formatarDeclaracaoOuConstruto(declaracao.condicao);
101
- this.codigoFormatado += ` ) faca`;
102
- this.codigoFormatado += this.quebraLinha;
103
- this.devePularLinha = true;
104
- this.formatarDeclaracaoOuConstruto(declaracao.corpo);
105
- this.codigoFormatado += this.quebraLinha;
106
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}fim`;
107
- this.devePularLinha = false;
108
- }
109
- formatarBlocoOuVetorDeclaracoes(declaracoes) {
110
- this.indentacaoAtual += this.tamanhoIndentacao;
111
- for (let declaracaoBloco of declaracoes) {
112
- this.formatarDeclaracaoOuConstruto(declaracaoBloco);
113
- }
114
- this.indentacaoAtual -= this.tamanhoIndentacao;
115
- }
116
- visitarDeclaracaoEscolha(declaracao) {
117
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}escolha `;
118
- this.formatarDeclaracaoOuConstruto(declaracao.identificadorOuLiteral);
119
- this.indentacaoAtual += this.tamanhoIndentacao;
120
- for (let caminho of declaracao.caminhos) {
121
- this.deveIndentar = false;
122
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}caso `;
123
- this.formatarBlocoOuVetorDeclaracoes(caminho.condicoes);
124
- this.codigoFormatado += ` => `;
125
- this.formatarBlocoOuVetorDeclaracoes(caminho.declaracoes);
126
- this.codigoFormatado += this.quebraLinha;
127
- this.deveIndentar = true;
128
- }
129
- if (declaracao.caminhoPadrao.declaracoes.length > 0) {
130
- this.deveIndentar = false;
131
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}caso _ => `;
132
- this.formatarBlocoOuVetorDeclaracoes(declaracao.caminhoPadrao.declaracoes);
133
- this.deveIndentar = true;
134
- }
135
- this.indentacaoAtual -= this.tamanhoIndentacao;
136
- this.codigoFormatado += `${this.quebraLinha}${' '.repeat(this.indentacaoAtual)}fim${this.quebraLinha}`;
137
- }
138
- visitarDeclaracaoEscreva(declaracao) {
139
- if (this.deveIndentar) {
140
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}escreva (`;
141
- }
142
- else {
143
- this.codigoFormatado += `escreva (`;
144
- }
145
- for (let argumento of declaracao.argumentos) {
146
- this.formatarDeclaracaoOuConstruto(argumento);
147
- }
148
- this.codigoFormatado += `)`;
149
- if (this.devePularLinha) {
150
- this.codigoFormatado += this.quebraLinha;
151
- }
152
- }
153
- visitarDeclaracaoFazer(declaracao) {
154
- throw new Error('Método não implementado');
155
- }
156
- visitarDeclaracaoImportar(declaracao) {
157
- throw new Error('Método não implementado');
158
- }
159
- visitarDeclaracaoPara(declaracao) {
160
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}para `;
161
- this.indentacaoAtual += this.tamanhoIndentacao;
162
- this.devePularLinha = false;
163
- if (declaracao.inicializador) {
164
- if (Array.isArray(declaracao.inicializador)) {
165
- this.deveIndentar = false;
166
- for (let declaracaoInicializador of declaracao.inicializador) {
167
- this.formatarDeclaracaoOuConstruto(declaracaoInicializador);
168
- }
169
- this.deveIndentar = true;
170
- }
171
- else {
172
- this.formatarDeclaracaoOuConstruto(declaracao.inicializador);
173
- }
174
- }
175
- if (declaracao.condicao instanceof construtos_1.Binario)
176
- this.codigoFormatado += ` ate ${declaracao.condicao.direita.valor}`;
177
- else
178
- this.formatarDeclaracaoOuConstruto(declaracao.condicao);
179
- this.codigoFormatado += ` faca${this.quebraLinha}`;
180
- this.formatarDeclaracaoOuConstruto(declaracao.incrementar);
181
- this.formatarBlocoOuVetorDeclaracoes(declaracao.corpo.declaracoes);
182
- this.indentacaoAtual -= this.tamanhoIndentacao;
183
- this.codigoFormatado += `${this.quebraLinha}${' '.repeat(this.indentacaoAtual)}fim${this.quebraLinha}`;
184
- }
185
- visitarDeclaracaoParaCada(declaracao) {
186
- throw new Error('Método não implementado');
187
- }
188
- visitarDeclaracaoSe(declaracao) {
189
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}se ( `;
190
- this.formatarDeclaracaoOuConstruto(declaracao.condicao);
191
- this.codigoFormatado += ` ) entao${this.quebraLinha}`;
192
- this.indentacaoAtual += this.tamanhoIndentacao;
193
- for (let declaracaoBloco of declaracao.caminhoEntao.declaracoes) {
194
- this.formatarDeclaracaoOuConstruto(declaracaoBloco);
195
- }
196
- this.indentacaoAtual -= this.tamanhoIndentacao;
197
- if (declaracao.caminhoSenao) {
198
- this.codigoFormatado += `${this.quebraLinha}${' '.repeat(this.indentacaoAtual)}senao${this.quebraLinha}`;
199
- this.formatarDeclaracaoOuConstruto(declaracao.caminhoSenao);
200
- }
201
- this.codigoFormatado += `${this.quebraLinha}${' '.repeat(this.indentacaoAtual)}fim${this.quebraLinha}`;
202
- }
203
- visitarDeclaracaoTente(declaracao) {
204
- throw new Error('Método não implementado');
205
- }
206
- visitarDeclaracaoVar(declaracao) {
207
- if (this.deveIndentar) {
208
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}`;
209
- }
210
- this.codigoFormatado += `var ${declaracao.simbolo.lexema}`;
211
- if (declaracao.inicializador) {
212
- this.codigoFormatado += ` := `;
213
- this.formatarDeclaracaoOuConstruto(declaracao.inicializador);
214
- }
215
- if (this.devePularLinha) {
216
- this.codigoFormatado += this.quebraLinha;
217
- }
218
- }
219
- visitarDeclaracaoVarMultiplo(declaracao) {
220
- throw new Error('Método não implementado');
221
- }
222
- visitarExpressaoAcessoIndiceVariavel(expressao) {
223
- throw new Error('Método não implementado');
224
- }
225
- visitarExpressaoAcessoElementoMatriz(expressao) {
226
- throw new Error('Método não implementado');
227
- }
228
- visitarExpressaoAcessoMetodo(expressao) {
229
- throw new Error('Método não implementado');
230
- }
231
- visitarExpressaoAgrupamento(expressao) {
232
- this.codigoFormatado += '(';
233
- this.formatarDeclaracaoOuConstruto(expressao.expressao);
234
- this.codigoFormatado += ')';
235
- }
236
- visitarExpressaoAtribuicaoPorIndice(expressao) {
237
- throw new Error('Método não implementado');
238
- }
239
- visitarExpressaoAtribuicaoPorIndicesMatriz(expressao) {
240
- throw new Error('Método não implementado');
241
- }
242
- visitarExpressaoBinaria(expressao) {
243
- /* this.codigoFormatado += `${" ".repeat(this.indentacaoAtual)}` */
244
- this.formatarDeclaracaoOuConstruto(expressao.esquerda);
245
- switch (expressao.operador.tipo) {
246
- case potigol_1.default.ADICAO:
247
- this.codigoFormatado += ' + ';
248
- break;
249
- case potigol_1.default.DIVISAO:
250
- this.codigoFormatado += ' / ';
251
- break;
252
- case potigol_1.default.DIVISAO_INTEIRA:
253
- this.codigoFormatado += ' div ';
254
- break;
255
- case potigol_1.default.IGUAL:
256
- this.codigoFormatado += ' = ';
257
- break;
258
- case potigol_1.default.MAIOR:
259
- this.codigoFormatado += ' > ';
260
- break;
261
- case potigol_1.default.MAIOR_IGUAL:
262
- this.codigoFormatado += ' >= ';
263
- break;
264
- case potigol_1.default.MENOR:
265
- this.codigoFormatado += ' < ';
266
- break;
267
- case potigol_1.default.MENOR_IGUAL:
268
- this.codigoFormatado += ' <= ';
269
- break;
270
- case potigol_1.default.SUBTRACAO:
271
- this.codigoFormatado += ` - `;
272
- break;
273
- case potigol_1.default.MULTIPLICACAO:
274
- this.codigoFormatado += ` * `;
275
- break;
276
- case potigol_1.default.MODULO:
277
- this.codigoFormatado += ` mod `;
278
- break;
279
- case potigol_1.default.EXPONENCIACAO:
280
- this.codigoFormatado += ` ^ `;
281
- break;
282
- case potigol_1.default.IGUAL_IGUAL:
283
- this.codigoFormatado += ` == `;
284
- break;
285
- case potigol_1.default.DIFERENTE:
286
- this.codigoFormatado += ` <> `;
287
- break;
288
- default:
289
- console.log(expressao.operador.tipo);
290
- break;
291
- }
292
- this.formatarDeclaracaoOuConstruto(expressao.direita);
293
- }
294
- visitarExpressaoBloco(declaracao) {
295
- this.formatarBlocoOuVetorDeclaracoes(declaracao.declaracoes);
296
- }
297
- visitarExpressaoContinua(declaracao) {
298
- throw new Error('Método não implementado');
299
- }
300
- visitarExpressaoDeChamada(expressao) {
301
- throw new Error('Método não implementado');
302
- }
303
- visitarExpressaoDefinirValor(expressao) {
304
- throw new Error('Método não implementado');
305
- }
306
- visitarExpressaoDeleguaFuncao(expressao) {
307
- throw new Error('Método não implementado');
308
- }
309
- visitarExpressaoDeVariavel(expressao) {
310
- throw new Error('Método não implementado');
311
- }
312
- visitarExpressaoDicionario(expressao) {
313
- throw new Error('Método não implementado');
314
- }
315
- visitarExpressaoExpressaoRegular(expressao) {
316
- throw new Error('Método não implementado');
317
- }
318
- visitarDeclaracaoEscrevaMesmaLinha(declaracao) {
319
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}imprima `;
320
- for (let argumento of declaracao.argumentos) {
321
- const argumentoTratado = argumento;
322
- this.formatarDeclaracaoOuConstruto(argumentoTratado);
323
- this.codigoFormatado += ', ';
324
- }
325
- if (declaracao.argumentos.length && this.codigoFormatado[this.codigoFormatado.length - 2] === ',') {
326
- this.codigoFormatado = this.codigoFormatado.slice(0, -2);
327
- }
328
- }
329
- visitarExpressaoFalhar(expressao) {
330
- throw new Error('Método não implementado');
331
- }
332
- visitarExpressaoFimPara(declaracao) {
333
- throw new Error('Método não implementado');
334
- }
335
- visitarExpressaoFormatacaoEscrita(declaracao) {
336
- throw new Error('Método não implementado');
337
- }
338
- visitarExpressaoFuncaoConstruto(expressao) {
339
- this.indentacaoAtual += this.tamanhoIndentacao;
340
- if (expressao.parametros.length > 0) {
341
- for (let parametro of expressao.parametros) {
342
- if (parametro.tipoDado) {
343
- this.codigoFormatado += `${parametro.tipoDado.nome}: `;
344
- switch (parametro.tipoDado.tipo.toUpperCase()) {
345
- case potigol_1.default.TEXTO:
346
- this.codigoFormatado += "Caractere";
347
- break;
348
- case potigol_1.default.REAL:
349
- this.codigoFormatado += "Real";
350
- break;
351
- case potigol_1.default.INTEIRO:
352
- this.codigoFormatado += "Inteiro";
353
- break;
354
- default:
355
- break;
356
- }
357
- this.codigoFormatado += `, `;
358
- }
359
- }
360
- this.codigoFormatado = `${this.codigoFormatado.slice(0, -2)}): `;
361
- }
362
- for (let declaracaoCorpo of expressao.corpo) {
363
- this.formatarDeclaracaoOuConstruto(declaracaoCorpo);
364
- }
365
- this.indentacaoAtual -= this.tamanhoIndentacao;
366
- }
367
- visitarExpressaoIsto(expressao) {
368
- throw new Error('Método não implementado');
369
- }
370
- visitarExpressaoLeia(expressao) {
371
- throw new Error('Método não implementado');
372
- }
373
- visitarExpressaoLeiaMultiplo(expressao) {
374
- throw new Error('Método não implementado');
375
- }
376
- visitarExpressaoLiteral(expressao) {
377
- if (typeof expressao.valor === 'string') {
378
- this.codigoFormatado += `"${expressao.valor}"`;
379
- return;
380
- }
381
- else if (typeof expressao.valor === "boolean") {
382
- if (expressao.valor) {
383
- this.codigoFormatado += "verdadeiro";
384
- }
385
- else {
386
- this.codigoFormatado += "falso";
387
- }
388
- return;
389
- }
390
- this.codigoFormatado += `${expressao.valor}`;
391
- }
392
- visitarExpressaoLogica(expressao) {
393
- this.formatarDeclaracaoOuConstruto(expressao.esquerda);
394
- switch (expressao.operador.tipo) {
395
- case potigol_1.default.E:
396
- this.codigoFormatado += ` e `;
397
- break;
398
- case potigol_1.default.OU:
399
- this.codigoFormatado += ` ou `;
400
- break;
401
- case potigol_1.default.NEGACAO:
402
- this.codigoFormatado += ` nao `;
403
- break;
404
- }
405
- this.formatarDeclaracaoOuConstruto(expressao.direita);
406
- }
407
- visitarExpressaoRetornar(declaracao) {
408
- throw new Error('Método não implementado');
409
- }
410
- visitarExpressaoSuper(expressao) {
411
- throw new Error('Método não implementado');
412
- }
413
- visitarExpressaoSustar(declaracao) {
414
- throw new Error('Método não implementado');
415
- }
416
- visitarExpressaoTipoDe(expressao) {
417
- throw new Error('Método não implementado');
418
- }
419
- visitarExpressaoUnaria(expressao) {
420
- let operador;
421
- switch (expressao.operador.tipo) {
422
- case potigol_1.default.SUBTRACAO:
423
- operador = ` - `;
424
- break;
425
- case potigol_1.default.ADICAO:
426
- operador = ` + `;
427
- break;
428
- case potigol_1.default.NEGACAO:
429
- operador = ` nao `;
430
- break;
431
- }
432
- switch (expressao.incidenciaOperador) {
433
- case 'ANTES':
434
- this.codigoFormatado += operador;
435
- this.formatarDeclaracaoOuConstruto(expressao.operando);
436
- break;
437
- case 'DEPOIS':
438
- this.formatarDeclaracaoOuConstruto(expressao.operando);
439
- this.codigoFormatado += operador;
440
- break;
441
- }
442
- if (this.devePularLinha) {
443
- this.codigoFormatado += this.quebraLinha;
444
- }
445
- }
446
- visitarExpressaoVetor(expressao) {
447
- throw new Error('Método não implementado');
448
- }
449
- visitarDeclaracaoConstante(expressao) {
450
- this.codigoFormatado += `${expressao.simbolo.lexema}`;
451
- }
452
- formatarDeclaraTuplas(declaracao) {
453
- const declaracoes = Object.keys(declaracao);
454
- this.codigoFormatado += "(";
455
- for (let chaveDeclaracao of declaracoes) {
456
- this.formatarDeclaracaoOuConstruto(declaracao[chaveDeclaracao]);
457
- this.codigoFormatado += ", ";
458
- }
459
- this.codigoFormatado = this.codigoFormatado.slice(0, -2);
460
- this.codigoFormatado += ")";
461
- }
462
- visitarExpressaoDupla(expressao) {
463
- this.formatarDeclaraTuplas(expressao);
464
- }
465
- visitarExpressaoTrio(expressao) {
466
- this.formatarDeclaraTuplas(expressao);
467
- }
468
- visitarExpressaoQuarteto(expressao) {
469
- this.formatarDeclaraTuplas(expressao);
470
- }
471
- visitarExpressaoQuinteto(expressao) {
472
- this.formatarDeclaraTuplas(expressao);
473
- }
474
- visitarExpressaoSexteto(expressao) {
475
- this.formatarDeclaraTuplas(expressao);
476
- }
477
- visitarExpressaoSepteto(expressao) {
478
- this.formatarDeclaraTuplas(expressao);
479
- }
480
- visitarExpressaoOcteto(expressao) {
481
- this.formatarDeclaraTuplas(expressao);
482
- }
483
- visitarExpressaoNoneto(expressao) {
484
- this.formatarDeclaraTuplas(expressao);
485
- }
486
- visitarExpressaoDeceto(expressao) {
487
- this.formatarDeclaraTuplas(expressao);
488
- }
489
- formatarDeclaracaoOuConstruto(declaracaoOuConstruto) {
490
- switch (declaracaoOuConstruto.constructor.name) {
491
- case 'AcessoIndiceVariavel':
492
- this.visitarExpressaoAcessoIndiceVariavel(declaracaoOuConstruto);
493
- break;
494
- case 'AcessoMetodoOuPropriedade':
495
- this.visitarExpressaoAcessoMetodo(declaracaoOuConstruto);
496
- break;
497
- case 'Agrupamento':
498
- this.visitarExpressaoAgrupamento(declaracaoOuConstruto);
499
- break;
500
- case 'AtribuicaoPorIndice':
501
- this.visitarExpressaoAtribuicaoPorIndice(declaracaoOuConstruto);
502
- break;
503
- case 'Atribuir':
504
- this.visitarExpressaoDeAtribuicao(declaracaoOuConstruto);
505
- break;
506
- case 'Binario':
507
- this.visitarExpressaoBinaria(declaracaoOuConstruto);
508
- break;
509
- case 'Bloco':
510
- this.visitarExpressaoBloco(declaracaoOuConstruto);
511
- break;
512
- case 'Chamada':
513
- this.visitarExpressaoDeChamada(declaracaoOuConstruto);
514
- break;
515
- case 'Classe':
516
- this.visitarDeclaracaoClasse(declaracaoOuConstruto);
517
- break;
518
- case 'Continua':
519
- this.visitarExpressaoContinua(declaracaoOuConstruto);
520
- break;
521
- case 'DefinirValor':
522
- this.visitarExpressaoDefinirValor(declaracaoOuConstruto);
523
- break;
524
- case 'Dicionario':
525
- this.visitarExpressaoDicionario(declaracaoOuConstruto);
526
- break;
527
- case 'Dupla':
528
- this.visitarExpressaoDupla(declaracaoOuConstruto);
529
- break;
530
- case 'Trio':
531
- this.visitarExpressaoTrio(declaracaoOuConstruto);
532
- break;
533
- case 'Quarteto':
534
- this.visitarExpressaoQuarteto(declaracaoOuConstruto);
535
- break;
536
- case 'Quinteto':
537
- this.visitarExpressaoQuinteto(declaracaoOuConstruto);
538
- break;
539
- case 'Sexteto':
540
- this.visitarExpressaoSexteto(declaracaoOuConstruto);
541
- break;
542
- case 'Septeto':
543
- this.visitarExpressaoSepteto(declaracaoOuConstruto);
544
- break;
545
- case 'Octeto':
546
- this.visitarExpressaoOcteto(declaracaoOuConstruto);
547
- break;
548
- case 'Noneto':
549
- this.visitarExpressaoNoneto(declaracaoOuConstruto);
550
- break;
551
- case 'Deceto':
552
- this.visitarExpressaoDeceto(declaracaoOuConstruto);
553
- break;
554
- case 'Escolha':
555
- this.visitarDeclaracaoEscolha(declaracaoOuConstruto);
556
- break;
557
- case 'Enquanto':
558
- this.visitarDeclaracaoEnquanto(declaracaoOuConstruto);
559
- break;
560
- case 'Escreva':
561
- this.visitarDeclaracaoEscreva(declaracaoOuConstruto);
562
- break;
563
- case 'EscrevaMesmaLinha':
564
- this.visitarDeclaracaoEscrevaMesmaLinha(declaracaoOuConstruto);
565
- break;
566
- case 'Expressao':
567
- this.visitarDeclaracaoDeExpressao(declaracaoOuConstruto);
568
- break;
569
- case 'ExpressaoRegular':
570
- this.visitarExpressaoExpressaoRegular(declaracaoOuConstruto);
571
- break;
572
- case 'Falhar':
573
- this.visitarExpressaoFalhar(declaracaoOuConstruto);
574
- break;
575
- case 'Fazer':
576
- this.visitarDeclaracaoFazer(declaracaoOuConstruto);
577
- break;
578
- case 'FuncaoConstruto':
579
- this.visitarExpressaoFuncaoConstruto(declaracaoOuConstruto);
580
- break;
581
- case 'FuncaoDeclaracao':
582
- this.visitarDeclaracaoDefinicaoFuncao(declaracaoOuConstruto);
583
- break;
584
- case 'Importar':
585
- this.visitarDeclaracaoImportar(declaracaoOuConstruto);
586
- break;
587
- case 'Isto':
588
- this.visitarExpressaoIsto(declaracaoOuConstruto);
589
- break;
590
- case 'Leia':
591
- this.visitarExpressaoLeia(declaracaoOuConstruto);
592
- break;
593
- case 'Literal':
594
- this.visitarExpressaoLiteral(declaracaoOuConstruto);
595
- break;
596
- case 'Logico':
597
- this.visitarExpressaoLogica(declaracaoOuConstruto);
598
- break;
599
- case 'Para':
600
- this.visitarDeclaracaoPara(declaracaoOuConstruto);
601
- break;
602
- case 'ParaCada':
603
- this.visitarDeclaracaoParaCada(declaracaoOuConstruto);
604
- break;
605
- case 'Retorna':
606
- this.visitarExpressaoRetornar(declaracaoOuConstruto);
607
- break;
608
- case 'Se':
609
- this.visitarDeclaracaoSe(declaracaoOuConstruto);
610
- break;
611
- case 'Super':
612
- this.visitarExpressaoSuper(declaracaoOuConstruto);
613
- break;
614
- case 'Sustar':
615
- this.visitarExpressaoSustar(declaracaoOuConstruto);
616
- break;
617
- case 'Tente':
618
- this.visitarDeclaracaoTente(declaracaoOuConstruto);
619
- break;
620
- case 'TipoDe':
621
- this.visitarExpressaoTipoDe(declaracaoOuConstruto);
622
- break;
623
- case 'Unario':
624
- this.visitarExpressaoUnaria(declaracaoOuConstruto);
625
- break;
626
- case 'Const':
627
- this.visitarDeclaracaoConst(declaracaoOuConstruto);
628
- break;
629
- case 'Var':
630
- this.visitarDeclaracaoVar(declaracaoOuConstruto);
631
- break;
632
- case 'Variavel':
633
- this.visitarExpressaoDeVariavel(declaracaoOuConstruto);
634
- break;
635
- case 'Vetor':
636
- this.visitarExpressaoVetor(declaracaoOuConstruto);
637
- break;
638
- case 'Constante':
639
- this.visitarDeclaracaoConstante(declaracaoOuConstruto);
640
- break;
641
- case 'PropriedadeClasse':
642
- this.visitarExpressaoPropriedadeClasse(declaracaoOuConstruto);
643
- break;
644
- default:
645
- console.log(declaracaoOuConstruto.constructor.name);
646
- break;
647
- }
648
- }
649
- formatar(declaracoes) {
650
- this.indentacaoAtual = 0;
651
- this.codigoFormatado = "";
652
- this.devePularLinha = true;
653
- this.deveIndentar = true;
654
- for (let declaracao of declaracoes) {
655
- this.formatarDeclaracaoOuConstruto(declaracao);
656
- }
657
- this.indentacaoAtual -= this.tamanhoIndentacao;
658
- return this.codigoFormatado;
659
- }
660
- }
661
- exports.FormatadorPotigol = FormatadorPotigol;
662
- //# sourceMappingURL=formatador-potigol.js.map