@designliquido/delegua 1.17.0 → 1.17.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.
Files changed (72) hide show
  1. package/analisador-semantico/analisador-semantico.d.ts.map +1 -1
  2. package/analisador-semantico/analisador-semantico.js +9 -3
  3. package/analisador-semantico/analisador-semantico.js.map +1 -1
  4. package/analisador-semantico/dialetos/analisador-semantico-pitugues.d.ts.map +1 -1
  5. package/analisador-semantico/dialetos/analisador-semantico-pitugues.js +9 -3
  6. package/analisador-semantico/dialetos/analisador-semantico-pitugues.js.map +1 -1
  7. package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
  8. package/avaliador-sintatico/avaliador-sintatico.js +26 -0
  9. package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
  10. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts +7 -0
  11. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts.map +1 -1
  12. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +33 -13
  13. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
  14. package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.d.ts +68 -11
  15. package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.d.ts.map +1 -1
  16. package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.js +433 -62
  17. package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.js.map +1 -1
  18. package/bibliotecas/dialetos/pitugues/biblioteca-global.d.ts +9 -0
  19. package/bibliotecas/dialetos/pitugues/biblioteca-global.d.ts.map +1 -1
  20. package/bibliotecas/dialetos/pitugues/biblioteca-global.js +30 -0
  21. package/bibliotecas/dialetos/pitugues/biblioteca-global.js.map +1 -1
  22. package/bibliotecas/dialetos/pitugues/primitivas-texto.d.ts.map +1 -1
  23. package/bibliotecas/dialetos/pitugues/primitivas-texto.js +112 -16
  24. package/bibliotecas/dialetos/pitugues/primitivas-texto.js.map +1 -1
  25. package/bibliotecas/primitivas-dicionario.d.ts.map +1 -1
  26. package/bibliotecas/primitivas-dicionario.js +31 -0
  27. package/bibliotecas/primitivas-dicionario.js.map +1 -1
  28. package/bin/package.json +2 -2
  29. package/estilizador/quebrador-linha.d.ts.map +1 -1
  30. package/estilizador/quebrador-linha.js +13 -0
  31. package/estilizador/quebrador-linha.js.map +1 -1
  32. package/estilizador/regras/index.d.ts +1 -0
  33. package/estilizador/regras/index.d.ts.map +1 -1
  34. package/estilizador/regras/index.js +1 -0
  35. package/estilizador/regras/index.js.map +1 -1
  36. package/estilizador/regras/regra-convencao-nomenclatura.d.ts +3 -0
  37. package/estilizador/regras/regra-convencao-nomenclatura.d.ts.map +1 -1
  38. package/estilizador/regras/regra-convencao-nomenclatura.js +34 -14
  39. package/estilizador/regras/regra-convencao-nomenclatura.js.map +1 -1
  40. package/estilizador/regras/regra-explicitar-tipos-parametros.d.ts +16 -0
  41. package/estilizador/regras/regra-explicitar-tipos-parametros.d.ts.map +1 -0
  42. package/estilizador/regras/regra-explicitar-tipos-parametros.js +50 -0
  43. package/estilizador/regras/regra-explicitar-tipos-parametros.js.map +1 -0
  44. package/formatadores/formatador-delegua.d.ts +1 -0
  45. package/formatadores/formatador-delegua.d.ts.map +1 -1
  46. package/formatadores/formatador-delegua.js +9 -3
  47. package/formatadores/formatador-delegua.js.map +1 -1
  48. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts +1 -1
  49. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts +60 -107
  50. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts.map +1 -1
  51. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js +435 -336
  52. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js.map +1 -1
  53. package/interpretador/interpretador-base.d.ts.map +1 -1
  54. package/interpretador/interpretador-base.js +16 -2
  55. package/interpretador/interpretador-base.js.map +1 -1
  56. package/lexador/dialetos/lexador-portugol-ipt.d.ts.map +1 -1
  57. package/lexador/dialetos/lexador-portugol-ipt.js +71 -19
  58. package/lexador/dialetos/lexador-portugol-ipt.js.map +1 -1
  59. package/lexador/dialetos/palavras-reservadas/portugol-ipt.d.ts +34 -6
  60. package/lexador/dialetos/palavras-reservadas/portugol-ipt.d.ts.map +1 -1
  61. package/lexador/dialetos/palavras-reservadas/portugol-ipt.js +44 -6
  62. package/lexador/dialetos/palavras-reservadas/portugol-ipt.js.map +1 -1
  63. package/package.json +2 -2
  64. package/tipos-de-simbolos/portugol-ipt.d.ts +43 -19
  65. package/tipos-de-simbolos/portugol-ipt.d.ts.map +1 -1
  66. package/tipos-de-simbolos/portugol-ipt.js +59 -19
  67. package/tipos-de-simbolos/portugol-ipt.js.map +1 -1
  68. package/tradutores/tradutor-portugol-ipt.d.ts +34 -12
  69. package/tradutores/tradutor-portugol-ipt.d.ts.map +1 -1
  70. package/tradutores/tradutor-portugol-ipt.js +309 -19
  71. package/tradutores/tradutor-portugol-ipt.js.map +1 -1
  72. package/umd/delegua.js +1501 -522
@@ -5,32 +5,202 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.AvaliadorSintaticoPortugolIpt = void 0;
7
7
  const construtos_1 = require("../../construtos");
8
+ const simbolo_1 = require("../../lexador/simbolo");
8
9
  const declaracoes_1 = require("../../declaracoes");
9
10
  const avaliador_sintatico_base_1 = require("../avaliador-sintatico-base");
10
11
  const portugol_ipt_1 = __importDefault(require("../../tipos-de-simbolos/portugol-ipt"));
11
12
  class AvaliadorSintaticoPortugolIpt extends avaliador_sintatico_base_1.AvaliadorSintaticoBase {
13
+ simboloAtualEh(tipo) {
14
+ return !this.estaNoFinal() && this.simbolos[this.atual].tipo === tipo;
15
+ }
16
+ fechamentoEnquantoAtual() {
17
+ return (this.simboloAtualEh(portugol_ipt_1.default.FIMENQUANTO) ||
18
+ (this.simboloAtualEh(portugol_ipt_1.default.FIM) &&
19
+ this.simbolos[this.atual + 1]?.tipo === portugol_ipt_1.default.ENQUANTO));
20
+ }
21
+ consumirFechamentoEnquanto() {
22
+ if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.FIMENQUANTO)) {
23
+ return;
24
+ }
25
+ this.consumir(portugol_ipt_1.default.FIM, "Esperado 'fimenquanto' ou 'fim enquanto'.");
26
+ this.consumir(portugol_ipt_1.default.ENQUANTO, "Esperado 'enquanto' após 'fim'.");
27
+ }
28
+ fechamentoEscolheAtual() {
29
+ return (this.simboloAtualEh(portugol_ipt_1.default.FIMESCOLHE) ||
30
+ (this.simboloAtualEh(portugol_ipt_1.default.FIM) &&
31
+ this.simbolos[this.atual + 1]?.tipo === portugol_ipt_1.default.ESCOLHE));
32
+ }
33
+ consumirFechamentoEscolhe() {
34
+ if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.FIMESCOLHE)) {
35
+ return;
36
+ }
37
+ this.consumir(portugol_ipt_1.default.FIM, "Esperado 'fimescolhe' ou 'fim escolhe'.");
38
+ this.consumir(portugol_ipt_1.default.ESCOLHE, "Esperado 'escolhe' após 'fim'.");
39
+ }
40
+ avaliarExpressaoNumericaConstante(expressao) {
41
+ if (expressao instanceof construtos_1.Literal && typeof expressao.valor === 'number') {
42
+ return Number(expressao.valor);
43
+ }
44
+ if (expressao instanceof construtos_1.Agrupamento) {
45
+ return this.avaliarExpressaoNumericaConstante(expressao.expressao);
46
+ }
47
+ if (expressao instanceof construtos_1.Unario) {
48
+ const operando = this.avaliarExpressaoNumericaConstante(expressao.operando);
49
+ if (operando === null)
50
+ return null;
51
+ switch (expressao.operador.tipo) {
52
+ case portugol_ipt_1.default.SUBTRACAO:
53
+ return -operando;
54
+ default:
55
+ return null;
56
+ }
57
+ }
58
+ if (expressao instanceof construtos_1.Binario) {
59
+ const esquerda = this.avaliarExpressaoNumericaConstante(expressao.esquerda);
60
+ const direita = this.avaliarExpressaoNumericaConstante(expressao.direita);
61
+ if (esquerda === null || direita === null)
62
+ return null;
63
+ switch (expressao.operador.tipo) {
64
+ case portugol_ipt_1.default.ADICAO:
65
+ return esquerda + direita;
66
+ case portugol_ipt_1.default.SUBTRACAO:
67
+ return esquerda - direita;
68
+ case portugol_ipt_1.default.MULTIPLICACAO:
69
+ return esquerda * direita;
70
+ case portugol_ipt_1.default.DIVISAO:
71
+ return esquerda / direita;
72
+ case portugol_ipt_1.default.MODULO:
73
+ return esquerda % direita;
74
+ case portugol_ipt_1.default.EXPONENCIACAO:
75
+ return Math.pow(esquerda, direita);
76
+ default:
77
+ return null;
78
+ }
79
+ }
80
+ return null;
81
+ }
82
+ // ── Helpers ────────────────────────────────────────────────────────────────
83
+ /**
84
+ * Consome quebras de linha opcionais.
85
+ */
86
+ consumirQuebrasLinha() {
87
+ while (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.QUEBRA_LINHA))
88
+ ;
89
+ }
90
+ /**
91
+ * Coleta declarações até encontrar um token cujo tipo esteja em `tiposParada`.
92
+ * O token de parada NÃO é consumido.
93
+ */
94
+ async resolverBloco(tiposParada) {
95
+ const declaracoes = [];
96
+ const primeiroSimbolo = this.simbolos[this.atual];
97
+ while (!this.estaNoFinal() && !tiposParada.includes(this.simbolos[this.atual].tipo)) {
98
+ const resolucao = await this.resolverDeclaracaoForaDeBloco();
99
+ if (Array.isArray(resolucao)) {
100
+ declaracoes.push(...resolucao);
101
+ }
102
+ else if (resolucao !== null && resolucao !== undefined) {
103
+ declaracoes.push(resolucao);
104
+ }
105
+ }
106
+ return new declaracoes_1.Bloco(this.hashArquivo, Number(primeiroSimbolo?.linha ?? 0), declaracoes.filter((d) => d));
107
+ }
108
+ // ── Expressões ─────────────────────────────────────────────────────────────
12
109
  async primario() {
13
110
  switch (this.simbolos[this.atual].tipo) {
14
- case portugol_ipt_1.default.IDENTIFICADOR:
111
+ case portugol_ipt_1.default.IDENTIFICADOR: {
15
112
  const simboloIdentificador = this.avancarEDevolverAnterior();
16
113
  return new construtos_1.Variavel(this.hashArquivo, simboloIdentificador);
114
+ }
17
115
  case portugol_ipt_1.default.INTEIRO:
18
- case portugol_ipt_1.default.TEXTO:
116
+ case portugol_ipt_1.default.NUMERO:
117
+ case portugol_ipt_1.default.TEXTO: {
19
118
  const simboloAnterior = this.avancarEDevolverAnterior();
119
+ if (simboloAnterior.literal === null) {
120
+ throw this.erro(simboloAnterior, 'Esperado expressão.');
121
+ }
20
122
  return new construtos_1.Literal(this.hashArquivo, Number(simboloAnterior.linha), simboloAnterior.literal);
21
- case portugol_ipt_1.default.PARENTESE_ESQUERDO:
123
+ }
124
+ case portugol_ipt_1.default.PARENTESE_ESQUERDO: {
22
125
  this.avancarEDevolverAnterior();
23
126
  const expressao = await this.expressao();
24
127
  this.consumir(portugol_ipt_1.default.PARENTESE_DIREITO, "Esperado ')' após a expressão.");
25
128
  return new construtos_1.Agrupamento(this.hashArquivo, Number(this.simbolos[this.atual].linha), expressao);
129
+ }
26
130
  }
131
+ throw this.erro(this.simbolos[this.atual], 'Esperado expressão.');
27
132
  }
28
133
  /**
29
- * Aparentemente, o Portugol IPT não suporta chamadas de função.
30
- * @returns O retorno da chamada de `primario()`.
134
+ * Suporta chamadas de funções embutidas: SEN(x), COS(x), POTENCIA(b,e), etc.
31
135
  */
32
136
  async chamar() {
33
- return await this.primario();
137
+ let expressao = await this.primario();
138
+ while (true) {
139
+ if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.PARENTESE_ESQUERDO)) {
140
+ const argumentos = [];
141
+ if (!this.verificarTipoSimboloAtual(portugol_ipt_1.default.PARENTESE_DIREITO)) {
142
+ do {
143
+ argumentos.push(await this.expressao());
144
+ } while (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.VIRGULA));
145
+ }
146
+ this.consumir(portugol_ipt_1.default.PARENTESE_DIREITO, "Esperado ')' após argumentos.");
147
+ expressao = new construtos_1.Chamada(this.hashArquivo, expressao, argumentos);
148
+ }
149
+ else if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.COLCHETE_ESQUERDO)) {
150
+ const indice = await this.expressao();
151
+ const fechamento = this.consumir(portugol_ipt_1.default.COLCHETE_DIREITO, "Esperado ']' após índice.");
152
+ expressao = new construtos_1.AcessoIndiceVariavel(this.hashArquivo, expressao, indice, fechamento);
153
+ }
154
+ else {
155
+ break;
156
+ }
157
+ }
158
+ return expressao;
159
+ }
160
+ /**
161
+ * Override de `unario()` para incluir operadores unários aritméticos.
162
+ * `NAO` é tratado em `e()` para ter precedência menor que comparações.
163
+ */
164
+ async unario() {
165
+ if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.NEGACAO, portugol_ipt_1.default.SUBTRACAO)) {
166
+ const operador = this.simbolos[this.atual - 1];
167
+ const direito = await this.unario();
168
+ return new construtos_1.Unario(this.hashArquivo, operador, direito, 'ANTES');
169
+ }
170
+ return await this.chamar();
171
+ }
172
+ /**
173
+ * Override de `e()` para suportar o operador lógico `NAO` com precedência
174
+ * menor que comparações: `nao x = 0` → `nao (x = 0)`.
175
+ */
176
+ async e() {
177
+ let expressao;
178
+ if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.NAO)) {
179
+ const operador = this.simbolos[this.atual - 1];
180
+ const operando = await this.comparacaoIgualdade();
181
+ expressao = new construtos_1.Unario(this.hashArquivo, operador, operando, 'ANTES');
182
+ }
183
+ else {
184
+ expressao = await this.comparacaoIgualdade();
185
+ }
186
+ while (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.E)) {
187
+ const operador = this.simbolos[this.atual - 1];
188
+ const direito = await this.comparacaoIgualdade();
189
+ expressao = new construtos_1.Logico(this.hashArquivo, expressao, operador, direito);
190
+ }
191
+ return expressao;
192
+ }
193
+ /**
194
+ * Override de `ou()` para incluir o operador lógico `XOU`.
195
+ */
196
+ async ou() {
197
+ let expressao = await this.e();
198
+ while (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.OU, portugol_ipt_1.default.XOU)) {
199
+ const operador = this.simbolos[this.atual - 1];
200
+ const direito = await this.e();
201
+ expressao = new construtos_1.Logico(this.hashArquivo, expressao, operador, direito);
202
+ }
203
+ return expressao;
34
204
  }
35
205
  async atribuir() {
36
206
  const expressao = await this.ou();
@@ -47,12 +217,12 @@ class AvaliadorSintaticoPortugolIpt extends avaliador_sintatico_base_1.Avaliador
47
217
  }
48
218
  return expressao;
49
219
  }
220
+ // ── Declarações ────────────────────────────────────────────────────────────
50
221
  /**
51
- * A declaração escreva (ou escrever) do Portugol IPT é sempre na mesma linha.
222
+ * `escrever expr [, expr ...]`
52
223
  */
53
224
  async declaracaoEscreva() {
54
225
  const simboloAtual = this.avancarEDevolverAnterior();
55
- // const argumentos = this.logicaComumEscreva();
56
226
  const argumentos = [];
57
227
  do {
58
228
  const valor = await this.expressao();
@@ -60,56 +230,157 @@ class AvaliadorSintaticoPortugolIpt extends avaliador_sintatico_base_1.Avaliador
60
230
  } while (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.VIRGULA));
61
231
  return new declaracoes_1.EscrevaMesmaLinha(Number(simboloAtual.linha), this.hashArquivo, argumentos);
62
232
  }
63
- blocoEscopo() {
64
- throw new Error('Método não implementado.');
65
- }
233
+ /**
234
+ * `se cond entao ... [senao ...] fimse`
235
+ */
66
236
  async declaracaoSe() {
67
- this.avancarEDevolverAnterior();
237
+ this.avancarEDevolverAnterior(); // consome 'se'
68
238
  const condicao = await this.expressao();
69
- this.consumir(portugol_ipt_1.default.ENTAO, "Esperado 'então' ou 'entao' após condição do se.");
70
- this.consumir(portugol_ipt_1.default.QUEBRA_LINHA, "Esperado quebra de linha após palavra reservada 'então' ou 'entao' em condição se.");
71
- const caminhoEntao = (await this.resolverDeclaracaoForaDeBloco());
72
- while (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.QUEBRA_LINHA))
73
- ;
239
+ this.consumir(portugol_ipt_1.default.ENTAO, "Esperado 'então' após condição do se.");
240
+ this.consumirQuebrasLinha();
241
+ const caminhoEntao = await this.resolverBloco([
242
+ portugol_ipt_1.default.SENAO,
243
+ portugol_ipt_1.default.FIMSE,
244
+ ]);
245
+ this.consumirQuebrasLinha();
74
246
  let caminhoSenao = null;
75
247
  if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.SENAO)) {
76
- this.consumir(portugol_ipt_1.default.QUEBRA_LINHA, "Esperado quebra de linha após palavra reservada 'senão' ou 'senao' em instrução se.");
77
- caminhoSenao = await this.resolverDeclaracaoForaDeBloco();
248
+ this.consumirQuebrasLinha();
249
+ caminhoSenao = await this.resolverBloco([portugol_ipt_1.default.FIMSE]);
78
250
  }
79
- this.consumir(portugol_ipt_1.default.QUEBRA_LINHA, "Esperado quebra de linha após palavra reservada 'então' ou 'entao' em condição se.");
80
- this.consumir(portugol_ipt_1.default.FIMSE, "Esperado 'fimse' para finalização de uma instrução se.");
251
+ this.consumirQuebrasLinha();
252
+ this.consumir(portugol_ipt_1.default.FIMSE, "Esperado 'fimse' para fechar instrução se.");
81
253
  return new declaracoes_1.Se(condicao, caminhoEntao, [], caminhoSenao);
82
254
  }
83
- declaracaoEnquanto() {
84
- throw new Error('Método não implementado.');
255
+ /**
256
+ * `enquanto cond faz ... fimenquanto`
257
+ */
258
+ async declaracaoEnquanto() {
259
+ this.avancarEDevolverAnterior(); // consome 'enquanto'
260
+ const condicao = await this.expressao();
261
+ this.consumir(portugol_ipt_1.default.FAZ, "Esperado 'faz' após condição do enquanto.");
262
+ this.consumirQuebrasLinha();
263
+ const declaracoes = [];
264
+ const primeiroSimbolo = this.simbolos[this.atual];
265
+ while (!this.estaNoFinal() && !this.fechamentoEnquantoAtual()) {
266
+ const resolucao = await this.resolverDeclaracaoForaDeBloco();
267
+ if (Array.isArray(resolucao)) {
268
+ declaracoes.push(...resolucao);
269
+ }
270
+ else if (resolucao !== null && resolucao !== undefined) {
271
+ declaracoes.push(resolucao);
272
+ }
273
+ }
274
+ const corpo = new declaracoes_1.Bloco(this.hashArquivo, Number(primeiroSimbolo?.linha ?? 0), declaracoes.filter((d) => d));
275
+ this.consumirFechamentoEnquanto();
276
+ return new declaracoes_1.Enquanto(condicao, corpo);
85
277
  }
86
- declaracaoPara() {
87
- throw new Error('Método não implementado.');
278
+ /**
279
+ * `para v de ini ate fim [passo p]` + corpo + `proximo`
280
+ */
281
+ async declaracaoPara() {
282
+ const simboloPara = this.avancarEDevolverAnterior(); // consome 'para'
283
+ const linha = Number(simboloPara.linha);
284
+ const identificador = this.consumir(portugol_ipt_1.default.IDENTIFICADOR, "Esperado identificador após 'para'.");
285
+ this.consumir(portugol_ipt_1.default.DE, "Esperado 'de' após variável do 'para'.");
286
+ const inicioExpr = await this.expressao();
287
+ this.consumir(portugol_ipt_1.default.ATE, "Esperado 'ate' após valor inicial do 'para'.");
288
+ const fimExpr = await this.expressao();
289
+ let passoExpr = new construtos_1.Literal(this.hashArquivo, linha, 1, 'inteiro');
290
+ if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.PASSO)) {
291
+ passoExpr = await this.expressao();
292
+ }
293
+ this.consumirQuebrasLinha();
294
+ const corpo = await this.resolverBloco([portugol_ipt_1.default.PROXIMO]);
295
+ this.consumir(portugol_ipt_1.default.PROXIMO, "Esperado 'proximo' para fechar o laço 'para'.");
296
+ const varIteracao = new construtos_1.Variavel(this.hashArquivo, identificador, 'inteiro');
297
+ const simboloMenorIgual = new simbolo_1.Simbolo(portugol_ipt_1.default.MENOR_IGUAL, '<=', null, linha, this.hashArquivo);
298
+ const simboloAdicao = new simbolo_1.Simbolo(portugol_ipt_1.default.ADICAO, '+', null, linha, this.hashArquivo);
299
+ const inicializador = new declaracoes_1.Expressao(new construtos_1.Atribuir(this.hashArquivo, varIteracao, inicioExpr));
300
+ const condicao = new construtos_1.Binario(this.hashArquivo, varIteracao, simboloMenorIgual, fimExpr);
301
+ const incrementar = new construtos_1.Atribuir(this.hashArquivo, varIteracao, new construtos_1.Binario(this.hashArquivo, varIteracao, simboloAdicao, passoExpr));
302
+ return new declaracoes_1.Para(this.hashArquivo, linha, inicializador, condicao, incrementar, corpo);
88
303
  }
89
- declaracaoEscolha() {
90
- throw new Error('Método não implementado.');
304
+ /**
305
+ * `repete ... ate cond`
306
+ * Semântica: executa o corpo e repete enquanto a condição for FALSA (repeat-until).
307
+ * Mapeado para `Fazer` com a condição invertida via `nao`.
308
+ */
309
+ async declaracaoRepete() {
310
+ const simboloRepete = this.avancarEDevolverAnterior(); // consome 'repete'
311
+ this.consumirQuebrasLinha();
312
+ const corpo = await this.resolverBloco([portugol_ipt_1.default.ATE]);
313
+ this.consumir(portugol_ipt_1.default.ATE, "Esperado 'ate' para fechar o laço 'repete'.");
314
+ const condicaoAte = await this.expressao();
315
+ // Inverte a condição: o loop continua enquanto `ate cond` for falso
316
+ const operadorNao = new simbolo_1.Simbolo(portugol_ipt_1.default.NAO, 'nao', null, condicaoAte.linha, this.hashArquivo);
317
+ const condicaoInvertida = new construtos_1.Unario(this.hashArquivo, operadorNao, condicaoAte, 'ANTES');
318
+ return new declaracoes_1.Fazer(this.hashArquivo, Number(simboloRepete.linha), corpo, condicaoInvertida);
91
319
  }
92
- declaracaoFazer() {
93
- throw new Error('Método não implementado.');
320
+ /**
321
+ * `faz ... enquanto cond`
322
+ * O `enquanto` de fechamento é distinguido no lexer (FAZENQUANTO) do `enquanto` de abertura.
323
+ */
324
+ async declaracaoFazer() {
325
+ const simboloFaz = this.avancarEDevolverAnterior(); // consome 'faz'
326
+ this.consumirQuebrasLinha();
327
+ const corpo = await this.resolverBloco([portugol_ipt_1.default.FAZENQUANTO]);
328
+ this.consumir(portugol_ipt_1.default.FAZENQUANTO, "Esperado 'enquanto' para fechar o laço 'faz'.");
329
+ const condicao = await this.expressao();
330
+ return new declaracoes_1.Fazer(this.hashArquivo, Number(simboloFaz.linha), corpo, condicao);
94
331
  }
95
- async declaracaoInteiros() {
96
- const simboloInteiro = this.consumir(portugol_ipt_1.default.INTEIRO, '');
97
- const inicializacoes = [];
98
- do {
99
- const identificador = this.consumir(portugol_ipt_1.default.IDENTIFICADOR, "Esperado identificador após palavra reservada 'inteiro'.");
100
- // Inicializações de variáveis podem ter valores definidos.
101
- let valorInicializacao = 0;
102
- if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.IGUAL)) {
103
- const literalInicializacao = this.consumir(portugol_ipt_1.default.INTEIRO, 'Esperado literal inteiro após símbolo de igual em declaração de variável.');
104
- valorInicializacao = Number(literalInicializacao.literal);
105
- }
106
- inicializacoes.push(new declaracoes_1.Var(identificador, new construtos_1.Literal(this.hashArquivo, Number(simboloInteiro.linha), valorInicializacao, 'inteiro')));
107
- } while (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.VIRGULA));
108
- return Promise.resolve(inicializacoes);
332
+ /**
333
+ * `escolhe expr caso v[, v...]: instr ... [defeito: instr] fimescolhe`
334
+ */
335
+ declaracaoEscolha() {
336
+ this.avancarEDevolverAnterior(); // consome 'escolhe'
337
+ const identificador = this.primario();
338
+ // A versão síncrona é necessária porque a interface do base declara este como não-async.
339
+ // Fazemos o cast após — o analisar() é async e usa await nos callers.
340
+ throw new Error('Use declaracaoEscolhaAsync() internamente.');
341
+ }
342
+ async declaracaoEscolhaAsync() {
343
+ this.avancarEDevolverAnterior(); // consome 'escolhe'
344
+ const identificador = await this.expressao();
345
+ this.consumirQuebrasLinha();
346
+ const caminhos = [];
347
+ let caminhoPadrao = null;
348
+ while (!this.estaNoFinal() && !this.fechamentoEscolheAtual()) {
349
+ this.consumirQuebrasLinha();
350
+ if (this.estaNoFinal() || this.fechamentoEscolheAtual()) {
351
+ break;
352
+ }
353
+ if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.CASO)) {
354
+ // Múltiplos valores por caso: `caso 1, 2, 3:`
355
+ const condicoes = [];
356
+ do {
357
+ condicoes.push(await this.expressao());
358
+ } while (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.VIRGULA));
359
+ this.consumir(portugol_ipt_1.default.DOIS_PONTOS, "Esperado ':' após valor do 'caso'.");
360
+ this.consumirQuebrasLinha();
361
+ const bloco = await this.resolverBloco([
362
+ portugol_ipt_1.default.CASO,
363
+ portugol_ipt_1.default.DEFEITO,
364
+ portugol_ipt_1.default.FIMESCOLHE,
365
+ portugol_ipt_1.default.FIM,
366
+ ]);
367
+ caminhos.push({ condicoes, declaracoes: bloco.declaracoes });
368
+ }
369
+ else if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.DEFEITO)) {
370
+ this.consumir(portugol_ipt_1.default.DOIS_PONTOS, "Esperado ':' após 'defeito'.");
371
+ this.consumirQuebrasLinha();
372
+ const bloco = await this.resolverBloco([portugol_ipt_1.default.FIMESCOLHE, portugol_ipt_1.default.FIM]);
373
+ caminhoPadrao = { condicoes: [], declaracoes: bloco.declaracoes };
374
+ }
375
+ else {
376
+ break;
377
+ }
378
+ }
379
+ this.consumirFechamentoEscolhe();
380
+ return new declaracoes_1.Escolha(identificador, caminhos, caminhoPadrao);
109
381
  }
110
382
  /**
111
- * Análise de uma declaração `leia()`. No VisuAlg, `leia()` aceita 1..N argumentos.
112
- * @returns Uma declaração `Leia`.
383
+ * `ler var [, var ...]`
113
384
  */
114
385
  async expressaoLeia() {
115
386
  const simboloAtual = this.avancarEDevolverAnterior();
@@ -119,48 +390,148 @@ class AvaliadorSintaticoPortugolIpt extends avaliador_sintatico_base_1.Avaliador
119
390
  } while (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.VIRGULA));
120
391
  return new construtos_1.Leia(simboloAtual, argumentos);
121
392
  }
122
- corpoDaFuncao(tipo) {
123
- throw new Error('Método não implementado.');
393
+ /**
394
+ * Declara variáveis de um dado tipo, com suporte a arrays e valor inicial.
395
+ * Ex: `inteiro x`, `real y = 3.14`, `logico v[5]`
396
+ */
397
+ async declaracaoVariaveis(tipoToken, tipoDelegua, valorPadrao) {
398
+ const simboloTipo = this.avancarEDevolverAnterior();
399
+ const linha = Number(simboloTipo.linha);
400
+ const inicializacoes = [];
401
+ do {
402
+ const identificador = this.consumir(portugol_ipt_1.default.IDENTIFICADOR, `Esperado identificador após '${simboloTipo.lexema}'.`);
403
+ // Array: `inteiro v[10]`
404
+ if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.COLCHETE_ESQUERDO)) {
405
+ const expressaoTamanho = await this.expressao();
406
+ const tamanhoConstante = this.avaliarExpressaoNumericaConstante(expressaoTamanho);
407
+ if (tamanhoConstante === null ||
408
+ !Number.isInteger(tamanhoConstante) ||
409
+ tamanhoConstante < 0) {
410
+ throw this.erro(identificador, 'Tamanho do vetor deve ser expressão numérica inteira constante e não-negativa.');
411
+ }
412
+ const tamanho = Number(tamanhoConstante);
413
+ this.consumir(portugol_ipt_1.default.COLCHETE_DIREITO, "Esperado ']' após tamanho do vetor.");
414
+ const elementos = Array.from({ length: tamanho }, () => new construtos_1.Literal(this.hashArquivo, linha, valorPadrao, tipoDelegua));
415
+ inicializacoes.push(new declaracoes_1.Var(identificador, new construtos_1.Vetor(this.hashArquivo, linha, elementos, `${tipoDelegua}[]`)));
416
+ }
417
+ else {
418
+ // Inicialização opcional: `inteiro x = 5` (usa = como igualdade aqui, não seta)
419
+ let valorInicial = new construtos_1.Literal(this.hashArquivo, linha, valorPadrao, tipoDelegua);
420
+ if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.IGUAL)) {
421
+ valorInicial = await this.expressao();
422
+ }
423
+ inicializacoes.push(new declaracoes_1.Var(identificador, valorInicial, tipoDelegua));
424
+ }
425
+ } while (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.VIRGULA));
426
+ return inicializacoes;
427
+ }
428
+ /**
429
+ * `constante tipo nome = valor`
430
+ */
431
+ async declaracaoConstante() {
432
+ this.avancarEDevolverAnterior(); // consome 'constante'
433
+ // Tipo obrigatório após 'constante'
434
+ const tipoSimbolo = this.simbolos[this.atual];
435
+ const mapaValoresPadrao = {
436
+ [portugol_ipt_1.default.INTEIRO]: 0,
437
+ [portugol_ipt_1.default.TEXTO]: '',
438
+ [portugol_ipt_1.default.REAL]: 0.0,
439
+ [portugol_ipt_1.default.LOGICO]: false,
440
+ [portugol_ipt_1.default.CARACTER]: '',
441
+ };
442
+ const mapaTipos = {
443
+ [portugol_ipt_1.default.INTEIRO]: 'inteiro',
444
+ [portugol_ipt_1.default.TEXTO]: 'texto',
445
+ [portugol_ipt_1.default.REAL]: 'real',
446
+ [portugol_ipt_1.default.LOGICO]: 'lógico',
447
+ [portugol_ipt_1.default.CARACTER]: 'caracter',
448
+ };
449
+ if (!(tipoSimbolo.tipo in mapaValoresPadrao)) {
450
+ throw this.erro(tipoSimbolo, "Esperado tipo após 'constante'.");
451
+ }
452
+ this.avancarEDevolverAnterior(); // consome o tipo
453
+ const tipoDelegua = mapaTipos[tipoSimbolo.tipo];
454
+ const constantes = [];
455
+ do {
456
+ const identificador = this.consumir(portugol_ipt_1.default.IDENTIFICADOR, `Esperado identificador após '${tipoSimbolo.lexema}'.`);
457
+ this.consumir(portugol_ipt_1.default.IGUAL, "Esperado '=' após nome da constante.");
458
+ const valor = await this.expressao();
459
+ constantes.push(new declaracoes_1.Const(identificador, valor, tipoDelegua, true));
460
+ } while (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.VIRGULA));
461
+ return constantes;
124
462
  }
463
+ // ── Ponto de entrada de declarações ────────────────────────────────────────
125
464
  async resolverDeclaracaoForaDeBloco() {
126
465
  const simboloAtual = this.simbolos[this.atual];
127
466
  switch (simboloAtual.tipo) {
128
467
  case portugol_ipt_1.default.ESCREVER:
129
468
  return await this.declaracaoEscreva();
130
- case portugol_ipt_1.default.INTEIRO:
131
- return await this.declaracaoInteiros();
132
469
  case portugol_ipt_1.default.LER:
133
470
  return new declaracoes_1.Expressao(await this.expressaoLeia());
471
+ case portugol_ipt_1.default.SE:
472
+ return await this.declaracaoSe();
473
+ case portugol_ipt_1.default.ENQUANTO:
474
+ return await this.declaracaoEnquanto();
475
+ case portugol_ipt_1.default.PARA:
476
+ return await this.declaracaoPara();
477
+ case portugol_ipt_1.default.REPETE:
478
+ return await this.declaracaoRepete();
479
+ case portugol_ipt_1.default.FAZ:
480
+ return await this.declaracaoFazer();
481
+ case portugol_ipt_1.default.ESCOLHE:
482
+ return await this.declaracaoEscolhaAsync();
483
+ case portugol_ipt_1.default.INTEIRO:
484
+ return await this.declaracaoVariaveis(portugol_ipt_1.default.INTEIRO, 'inteiro', 0);
485
+ case portugol_ipt_1.default.TEXTO:
486
+ if (simboloAtual.literal === null &&
487
+ String(simboloAtual.lexema).toLowerCase() === 'texto') {
488
+ return await this.declaracaoVariaveis(portugol_ipt_1.default.TEXTO, 'texto', '');
489
+ }
490
+ return new declaracoes_1.Expressao(await this.expressao());
491
+ case portugol_ipt_1.default.REAL:
492
+ return await this.declaracaoVariaveis(portugol_ipt_1.default.REAL, 'real', 0.0);
493
+ case portugol_ipt_1.default.LOGICO:
494
+ return await this.declaracaoVariaveis(portugol_ipt_1.default.LOGICO, 'lógico', false);
495
+ case portugol_ipt_1.default.CARACTER:
496
+ return await this.declaracaoVariaveis(portugol_ipt_1.default.CARACTER, 'caracter', '');
497
+ case portugol_ipt_1.default.CONSTANTE:
498
+ return await this.declaracaoConstante();
499
+ case portugol_ipt_1.default.VARIAVEL: {
500
+ // 'variavel' é apenas um modificador opcional; avança e processa o tipo
501
+ this.avancarEDevolverAnterior();
502
+ return await this.resolverDeclaracaoForaDeBloco();
503
+ }
134
504
  case portugol_ipt_1.default.QUEBRA_LINHA:
135
505
  this.avancarEDevolverAnterior();
136
506
  return null;
137
- case portugol_ipt_1.default.SE:
138
- return await this.declaracaoSe();
139
507
  default:
140
508
  return new declaracoes_1.Expressao(await this.expressao());
141
509
  }
142
510
  }
143
- validarSegmentoInicio() {
144
- this.consumir(portugol_ipt_1.default.INICIO, `Esperada expressão 'inicio' para marcar escopo do algoritmo.`);
511
+ // ── Métodos obrigatórios não usados em Portugol IPT ────────────────────────
512
+ blocoEscopo() {
513
+ throw new Error('Método não implementado.');
145
514
  }
515
+ corpoDaFuncao(_tipo) {
516
+ throw new Error('Portugol IPT não suporta funções definidas pelo utilizador.');
517
+ }
518
+ // ── Ponto de entrada principal ─────────────────────────────────────────────
146
519
  async analisar(retornoLexador, hashArquivo) {
147
520
  this.erros = [];
148
521
  this.atual = 0;
149
522
  this.blocos = 0;
150
523
  this.hashArquivo = hashArquivo || 0;
151
524
  this.simbolos = retornoLexador?.simbolos || [];
152
- while (this.verificarTipoSimboloAtual(portugol_ipt_1.default.QUEBRA_LINHA)) {
153
- this.avancarEDevolverAnterior();
154
- }
525
+ this.consumirQuebrasLinha();
526
+ this.consumir(portugol_ipt_1.default.INICIO, "Esperado 'inicio' para marcar o início do algoritmo.");
155
527
  let declaracoes = [];
156
- this.validarSegmentoInicio();
157
528
  while (!this.estaNoFinal() && this.simbolos[this.atual].tipo !== portugol_ipt_1.default.FIM) {
158
- const resolucaoDeclaracao = await this.resolverDeclaracaoForaDeBloco();
159
- if (Array.isArray(resolucaoDeclaracao)) {
160
- declaracoes = declaracoes.concat(resolucaoDeclaracao);
529
+ const resolucao = await this.resolverDeclaracaoForaDeBloco();
530
+ if (Array.isArray(resolucao)) {
531
+ declaracoes = declaracoes.concat(resolucao);
161
532
  }
162
- else {
163
- declaracoes.push(resolucaoDeclaracao);
533
+ else if (resolucao !== null && resolucao !== undefined) {
534
+ declaracoes.push(resolucao);
164
535
  }
165
536
  }
166
537
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"avaliador-sintatico-portugol-ipt.js","sourceRoot":"","sources":["../../../fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.ts"],"names":[],"mappings":";;;;;;AAAA,iDAW0B;AAC1B,mDAY2B;AAE3B,0EAAqE;AAIrE,wFAAmE;AAEnE,MAAa,6BAA8B,SAAQ,iDAAsB;IACrE,KAAK,CAAC,QAAQ;QACV,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YACrC,KAAK,sBAAe,CAAC,aAAa;gBAC9B,MAAM,oBAAoB,GAAqB,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAE/E,OAAO,IAAI,qBAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;YAChE,KAAK,sBAAe,CAAC,OAAO,CAAC;YAC7B,KAAK,sBAAe,CAAC,KAAK;gBACtB,MAAM,eAAe,GAAqB,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAC1E,OAAO,IAAI,oBAAO,CACd,IAAI,CAAC,WAAW,EAChB,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,EAC7B,eAAe,CAAC,OAAO,CAC1B,CAAC;YACN,KAAK,sBAAe,CAAC,kBAAkB;gBACnC,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;gBACzC,IAAI,CAAC,QAAQ,CAAC,sBAAe,CAAC,iBAAiB,EAAE,gCAAgC,CAAC,CAAC;gBAEnF,OAAO,IAAI,wBAAW,CAClB,IAAI,CAAC,WAAW,EAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EACvC,SAAS,CACZ,CAAC;QACV,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM;QACR,OAAO,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,QAAQ;QACV,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC;QAElC,IAAI,IAAI,CAAC,8BAA8B,CAAC,sBAAe,CAAC,eAAe,CAAC,EAAE,CAAC;YACvE,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YAEpC,IAAI,SAAS,YAAY,qBAAQ,EAAE,CAAC;gBAChC,OAAO,IAAI,qBAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YAC5D,CAAC;YAED,IAAI,SAAS,YAAY,iCAAoB,EAAE,CAAC;gBAC5C,OAAO,IAAI,gCAAmB,CAC1B,IAAI,CAAC,WAAW,EAChB,SAAS,CAAC,KAAK,EACf,SAAS,CAAC,eAAe,EACzB,SAAS,CAAC,MAAM,EAChB,KAAK,CACR,CAAC;YACN,CAAC;YAED,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,+BAA+B,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACnB,MAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAErD,gDAAgD;QAChD,MAAM,UAAU,GAAwB,EAAE,CAAC;QAC3C,GAAG,CAAC;YACA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAErC,UAAU,CAAC,IAAI,CACX,IAAI,8BAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAC7E,CAAC;QACN,CAAC,QAAQ,IAAI,CAAC,8BAA8B,CAAC,sBAAe,CAAC,OAAO,CAAC,EAAE;QAEvE,OAAO,IAAI,+BAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAC3F,CAAC;IAED,WAAW;QACP,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,YAAY;QACd,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,sBAAe,CAAC,KAAK,EAAE,kDAAkD,CAAC,CAAC;QACzF,IAAI,CAAC,QAAQ,CACT,sBAAe,CAAC,YAAY,EAC5B,oFAAoF,CACvF,CAAC;QAEF,MAAM,YAAY,GAAG,CAAC,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAU,CAAC;QAE3E,OAAO,IAAI,CAAC,8BAA8B,CAAC,sBAAe,CAAC,YAAY,CAAC;YAAC,CAAC;QAE1E,IAAI,YAAY,GAAG,IAAI,CAAC;QACxB,IAAI,IAAI,CAAC,8BAA8B,CAAC,sBAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,QAAQ,CACT,sBAAe,CAAC,YAAY,EAC5B,qFAAqF,CACxF,CAAC;YACF,YAAY,GAAG,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,QAAQ,CACT,sBAAe,CAAC,YAAY,EAC5B,oFAAoF,CACvF,CAAC;QACF,IAAI,CAAC,QAAQ,CACT,sBAAe,CAAC,KAAK,EACrB,wDAAwD,CAC3D,CAAC;QAEF,OAAO,IAAI,gBAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;IAC5D,CAAC;IAED,kBAAkB;QACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,cAAc;QACV,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,iBAAiB;QACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,eAAe;QACX,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,kBAAkB;QACpB,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,sBAAe,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAElE,MAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,GAAG,CAAC;YACA,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAC/B,sBAAe,CAAC,aAAa,EAC7B,0DAA0D,CAC7D,CAAC;YAEF,2DAA2D;YAC3D,IAAI,kBAAkB,GAAG,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,8BAA8B,CAAC,sBAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7D,MAAM,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CACtC,sBAAe,CAAC,OAAO,EACvB,2EAA2E,CAC9E,CAAC;gBACF,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YAC9D,CAAC;YAED,cAAc,CAAC,IAAI,CACf,IAAI,iBAAG,CACH,aAAa,EACb,IAAI,oBAAO,CACP,IAAI,CAAC,WAAW,EAChB,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,EAC5B,kBAAkB,EAClB,SAAS,CACZ,CACJ,CACJ,CAAC;QACN,CAAC,QAAQ,IAAI,CAAC,8BAA8B,CAAC,sBAAe,CAAC,OAAO,CAAC,EAAE;QAEvE,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa;QACf,MAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAErD,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,GAAG,CAAC;YACA,UAAU,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC;QAChE,CAAC,QAAQ,IAAI,CAAC,8BAA8B,CAAC,sBAAe,CAAC,OAAO,CAAC,EAAE;QAEvE,OAAO,IAAI,iBAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,aAAa,CAAC,IAAY;QACtB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,6BAA6B;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,QAAQ,YAAY,CAAC,IAAI,EAAE,CAAC;YACxB,KAAK,sBAAe,CAAC,QAAQ;gBACzB,OAAO,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC1C,KAAK,sBAAe,CAAC,OAAO;gBACxB,OAAO,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC3C,KAAK,sBAAe,CAAC,GAAG;gBACpB,OAAO,IAAI,uBAAS,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YACrD,KAAK,sBAAe,CAAC,YAAY;gBAC7B,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC;YAChB,KAAK,sBAAe,CAAC,EAAE;gBACnB,OAAO,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC;gBACI,OAAO,IAAI,uBAAS,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACrD,CAAC;IACL,CAAC;IAEO,qBAAqB;QACzB,IAAI,CAAC,QAAQ,CACT,sBAAe,CAAC,MAAM,EACtB,8DAA8D,CACjE,CAAC;IACN,CAAC;IAED,KAAK,CAAC,QAAQ,CACV,cAAgD,EAChD,WAAmB;QAEnB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAEhB,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,cAAc,EAAE,QAAQ,IAAI,EAAE,CAAC;QAE/C,OAAO,IAAI,CAAC,yBAAyB,CAAC,sBAAe,CAAC,YAAY,CAAC,EAAE,CAAC;YAClE,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACpC,CAAC;QAED,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,sBAAe,CAAC,GAAG,EAAE,CAAC;YACnF,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACvE,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBACrC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACJ,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC1C,CAAC;QACL,CAAC;QAED,OAAO;YACH,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACzC,KAAK,EAAE,IAAI,CAAC,KAAK;SACqB,CAAC;IAC/C,CAAC;CACJ;AAzPD,sEAyPC"}
1
+ {"version":3,"file":"avaliador-sintatico-portugol-ipt.js","sourceRoot":"","sources":["../../../fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.ts"],"names":[],"mappings":"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"}