@designliquido/potigol 0.0.0 → 0.0.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 (29) hide show
  1. package/avaliador-sintatico/avaliador-sintatico-potigol.d.ts.map +1 -1
  2. package/avaliador-sintatico/avaliador-sintatico-potigol.js +115 -114
  3. package/avaliador-sintatico/avaliador-sintatico-potigol.js.map +1 -1
  4. package/formatador/formatador-potigol.d.ts +82 -0
  5. package/formatador/formatador-potigol.d.ts.map +1 -0
  6. package/formatador/formatador-potigol.js +662 -0
  7. package/formatador/formatador-potigol.js.map +1 -0
  8. package/formatador/index.d.ts +2 -0
  9. package/formatador/index.d.ts.map +1 -0
  10. package/formatador/index.js +18 -0
  11. package/formatador/index.js.map +1 -0
  12. package/interpretador/comum.d.ts +5 -1
  13. package/interpretador/comum.d.ts.map +1 -1
  14. package/interpretador/comum.js +62 -1
  15. package/interpretador/comum.js.map +1 -1
  16. package/interpretador/interpretador-potigol-com-depuracao.d.ts +5 -1
  17. package/interpretador/interpretador-potigol-com-depuracao.d.ts.map +1 -1
  18. package/interpretador/interpretador-potigol-com-depuracao.js +9 -0
  19. package/interpretador/interpretador-potigol-com-depuracao.js.map +1 -1
  20. package/interpretador/interpretador-potigol.d.ts +2 -0
  21. package/interpretador/interpretador-potigol.d.ts.map +1 -1
  22. package/interpretador/interpretador-potigol.js +5 -27
  23. package/interpretador/interpretador-potigol.js.map +1 -1
  24. package/lexador/palavras-reservadas.js +1 -1
  25. package/package.json +3 -2
  26. package/tipos-de-simbolos/lexico-regular.d.ts +1 -0
  27. package/tipos-de-simbolos/lexico-regular.d.ts.map +1 -1
  28. package/tipos-de-simbolos/lexico-regular.js +1 -0
  29. package/tipos-de-simbolos/lexico-regular.js.map +1 -1
@@ -0,0 +1,662 @@
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("@designliquido/delegua/construtos");
8
+ const lexico_regular_1 = __importDefault(require("../tipos-de-simbolos/lexico-regular"));
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 lexico_regular_1.default.TEXTO:
49
+ this.codigoFormatado += 'Caractere = ';
50
+ break;
51
+ case lexico_regular_1.default.INTEIRO:
52
+ this.codigoFormatado += 'Inteiro = ';
53
+ break;
54
+ case "NUMERO":
55
+ case lexico_regular_1.default.REAL:
56
+ this.codigoFormatado += 'Real = ';
57
+ break;
58
+ case lexico_regular_1.default.LOGICO:
59
+ this.codigoFormatado += 'Logico = ';
60
+ break;
61
+ case lexico_regular_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 !== lexico_regular_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 lexico_regular_1.default.ADICAO:
247
+ this.codigoFormatado += ' + ';
248
+ break;
249
+ case lexico_regular_1.default.DIVISAO:
250
+ this.codigoFormatado += ' / ';
251
+ break;
252
+ case lexico_regular_1.default.DIVISAO_INTEIRA:
253
+ this.codigoFormatado += ' div ';
254
+ break;
255
+ case lexico_regular_1.default.IGUAL:
256
+ this.codigoFormatado += ' = ';
257
+ break;
258
+ case lexico_regular_1.default.MAIOR:
259
+ this.codigoFormatado += ' > ';
260
+ break;
261
+ case lexico_regular_1.default.MAIOR_IGUAL:
262
+ this.codigoFormatado += ' >= ';
263
+ break;
264
+ case lexico_regular_1.default.MENOR:
265
+ this.codigoFormatado += ' < ';
266
+ break;
267
+ case lexico_regular_1.default.MENOR_IGUAL:
268
+ this.codigoFormatado += ' <= ';
269
+ break;
270
+ case lexico_regular_1.default.SUBTRACAO:
271
+ this.codigoFormatado += ` - `;
272
+ break;
273
+ case lexico_regular_1.default.MULTIPLICACAO:
274
+ this.codigoFormatado += ` * `;
275
+ break;
276
+ case lexico_regular_1.default.MODULO:
277
+ this.codigoFormatado += ` mod `;
278
+ break;
279
+ case lexico_regular_1.default.EXPONENCIACAO:
280
+ this.codigoFormatado += ` ^ `;
281
+ break;
282
+ case lexico_regular_1.default.IGUAL_IGUAL:
283
+ this.codigoFormatado += ` == `;
284
+ break;
285
+ case lexico_regular_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 lexico_regular_1.default.TEXTO:
346
+ this.codigoFormatado += "Caractere";
347
+ break;
348
+ case lexico_regular_1.default.REAL:
349
+ this.codigoFormatado += "Real";
350
+ break;
351
+ case lexico_regular_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 lexico_regular_1.default.E:
396
+ this.codigoFormatado += ` e `;
397
+ break;
398
+ case lexico_regular_1.default.OU:
399
+ this.codigoFormatado += ` ou `;
400
+ break;
401
+ case lexico_regular_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 lexico_regular_1.default.SUBTRACAO:
423
+ operador = ` - `;
424
+ break;
425
+ case lexico_regular_1.default.ADICAO:
426
+ operador = ` + `;
427
+ break;
428
+ case lexico_regular_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