@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
@@ -1 +1 @@
1
- {"version":3,"file":"avaliador-sintatico-potigol.d.ts","sourceRoot":"","sources":["../../fontes/avaliador-sintatico/avaliador-sintatico-potigol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"avaliador-sintatico-potigol.d.ts","sourceRoot":"","sources":["../../fontes/avaliador-sintatico/avaliador-sintatico-potigol.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ const declaracoes_1 = require("@designliquido/delegua/declaracoes");
9
9
  const avaliador_sintatico_base_1 = require("@designliquido/delegua/avaliador-sintatico/avaliador-sintatico-base");
10
10
  const lexador_1 = require("@designliquido/delegua/lexador");
11
11
  const erro_avaliador_sintatico_1 = require("@designliquido/delegua/avaliador-sintatico/erro-avaliador-sintatico");
12
- const potigol_1 = __importDefault(require("@designliquido/delegua/tipos-de-simbolos/potigol"));
12
+ const lexico_regular_1 = __importDefault(require("../tipos-de-simbolos/lexico-regular"));
13
13
  const tuplas_1 = require("@designliquido/delegua/construtos/tuplas");
14
14
  const micro_avaliador_sintatico_potigol_1 = require("./micro-avaliador-sintatico-potigol");
15
15
  /**
@@ -39,13 +39,13 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
39
39
  testePrimeiroParametro(simbolos) {
40
40
  let atual = 0;
41
41
  // Primeiro teste: literal ou identificador
42
- if ([potigol_1.default.INTEIRO, potigol_1.default.LOGICO, potigol_1.default.REAL, potigol_1.default.TEXTO].includes(simbolos[atual].tipo)) {
42
+ if ([lexico_regular_1.default.INTEIRO, lexico_regular_1.default.LOGICO, lexico_regular_1.default.REAL, lexico_regular_1.default.TEXTO].includes(simbolos[atual].tipo)) {
43
43
  return false;
44
44
  }
45
45
  // Segundo teste: vírgula imediatamente após identificador,
46
46
  // ou simplesmente fim da lista de símbolos.
47
47
  atual++;
48
- if (atual === simbolos.length || simbolos[atual].tipo === potigol_1.default.VIRGULA) {
48
+ if (atual === simbolos.length || simbolos[atual].tipo === lexico_regular_1.default.VIRGULA) {
49
49
  return false;
50
50
  }
51
51
  // Outros casos: dois-pontos após identificador, etc.
@@ -89,21 +89,21 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
89
89
  // fins de pragma.
90
90
  const parenteseEsquerdo = this.avancarEDevolverAnterior();
91
91
  const simbolosEntreParenteses = [];
92
- while (!this.verificarTipoSimboloAtual(potigol_1.default.PARENTESE_DIREITO)) {
92
+ while (!this.verificarTipoSimboloAtual(lexico_regular_1.default.PARENTESE_DIREITO)) {
93
93
  simbolosEntreParenteses.push(this.avancarEDevolverAnterior());
94
94
  }
95
95
  const resolucaoParametros = this.logicaComumParametrosPotigol(simbolosEntreParenteses);
96
- const parenteseDireito = this.consumir(potigol_1.default.PARENTESE_DIREITO, "Esperado ')' após parâmetros.");
96
+ const parenteseDireito = this.consumir(lexico_regular_1.default.PARENTESE_DIREITO, "Esperado ')' após parâmetros.");
97
97
  // Pode haver uma dica do tipo de retorno ou não.
98
98
  // Se houver, é uma declaração de função (verificado mais abaixo).
99
99
  let tipoRetorno = undefined;
100
- if (this.verificarSeSimboloAtualEIgualA(potigol_1.default.DOIS_PONTOS)) {
100
+ if (this.verificarSeSimboloAtualEIgualA(lexico_regular_1.default.DOIS_PONTOS)) {
101
101
  this.verificacaoTipo(this.simbolos[this.atual], 'Esperado tipo válido após dois-pontos como retorno de função.');
102
102
  tipoRetorno = this.simbolos[this.atual - 1];
103
103
  }
104
104
  // Se houver símbolo de igual, seja após fechamento de parênteses,
105
105
  // seja após a dica de retorno, é uma declaração de função.
106
- if (this.simbolos[this.atual].tipo === potigol_1.default.IGUAL) {
106
+ if (this.simbolos[this.atual].tipo === lexico_regular_1.default.IGUAL) {
107
107
  this.avancarEDevolverAnterior();
108
108
  this.declaracoesAnteriores[construtoPrimario.simbolo.lexema] = [];
109
109
  return this.declaracaoFuncaoPotigolIniciadaPorIgual(construtoPrimario.simbolo, parenteseEsquerdo, resolucaoParametros.parametros, tipoRetorno);
@@ -114,10 +114,10 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
114
114
  // Parêntese esquerdo
115
115
  // this.avancarEDevolverAnterior();
116
116
  const simbolosEntreParenteses = [];
117
- while (!this.verificarTipoSimboloAtual(potigol_1.default.PARENTESE_DIREITO)) {
117
+ while (!this.verificarTipoSimboloAtual(lexico_regular_1.default.PARENTESE_DIREITO)) {
118
118
  simbolosEntreParenteses.push(this.avancarEDevolverAnterior());
119
119
  }
120
- const parenteseDireito = this.consumir(potigol_1.default.PARENTESE_DIREITO, "Esperado ')' após parâmetros.");
120
+ const parenteseDireito = this.consumir(lexico_regular_1.default.PARENTESE_DIREITO, "Esperado ')' após parâmetros.");
121
121
  const argumentos = this.microAvaliadorSintatico.analisar({ simbolos: simbolosEntreParenteses }, entidadeChamada.linha);
122
122
  return new construtos_1.Chamada(this.hashArquivo, entidadeChamada, parenteseDireito, argumentos.declaracoes.filter((d) => d));
123
123
  }
@@ -128,7 +128,7 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
128
128
  * @param mensagemErro A mensagem de erro caso o símbolo atual não seja de tipo.
129
129
  */
130
130
  verificacaoTipo(simbolo, mensagemErro) {
131
- if (![potigol_1.default.INTEIRO, potigol_1.default.LOGICO, potigol_1.default.REAL, potigol_1.default.TEXTO].includes(simbolo.tipo)) {
131
+ if (![lexico_regular_1.default.INTEIRO, lexico_regular_1.default.LOGICO, lexico_regular_1.default.REAL, lexico_regular_1.default.TEXTO].includes(simbolo.tipo)) {
132
132
  throw this.erro(simbolo, mensagemErro);
133
133
  }
134
134
  }
@@ -149,12 +149,12 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
149
149
  parametro.abrangencia = 'padrao';
150
150
  } */
151
151
  parametro.abrangencia = 'padrao';
152
- if (simbolos[indice].tipo !== potigol_1.default.IDENTIFICADOR) {
152
+ if (simbolos[indice].tipo !== lexico_regular_1.default.IDENTIFICADOR) {
153
153
  throw this.erro(simbolos[indice], 'Esperado nome do parâmetro.');
154
154
  }
155
155
  parametro.nome = simbolos[indice];
156
156
  indice++;
157
- if (simbolos[indice].tipo === potigol_1.default.DOIS_PONTOS) {
157
+ if (simbolos[indice].tipo === lexico_regular_1.default.DOIS_PONTOS) {
158
158
  // throw this.erro(simbolos[indice], 'Esperado dois-pontos após nome de argumento para função.');
159
159
  indice++;
160
160
  this.verificacaoTipo(simbolos[indice], 'Esperado tipo do argumento após dois-pontos, em definição de função.');
@@ -173,7 +173,7 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
173
173
  parametros.push(parametro);
174
174
  // if (parametro.abrangencia === 'multiplo') break;
175
175
  indice++;
176
- if (indice < simbolos.length && simbolos[indice].tipo !== potigol_1.default.VIRGULA) {
176
+ if (indice < simbolos.length && simbolos[indice].tipo !== lexico_regular_1.default.VIRGULA) {
177
177
  throw this.erro(simbolos[indice], 'Esperado vírgula entre parâmetros de função.');
178
178
  }
179
179
  indice++;
@@ -186,60 +186,60 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
186
186
  primario() {
187
187
  const simboloAtual = this.simbolos[this.atual];
188
188
  switch (simboloAtual.tipo) {
189
- case potigol_1.default.PARENTESE_ESQUERDO:
189
+ case lexico_regular_1.default.PARENTESE_ESQUERDO:
190
190
  this.avancarEDevolverAnterior();
191
191
  const expressao = this.expressao();
192
192
  switch (this.simbolos[this.atual].tipo) {
193
- case potigol_1.default.VIRGULA:
193
+ case lexico_regular_1.default.VIRGULA:
194
194
  // Tupla
195
195
  const argumentos = [expressao];
196
- while (this.simbolos[this.atual].tipo === potigol_1.default.VIRGULA) {
196
+ while (this.simbolos[this.atual].tipo === lexico_regular_1.default.VIRGULA) {
197
197
  this.avancarEDevolverAnterior();
198
198
  argumentos.push(this.expressao());
199
199
  }
200
- this.consumir(potigol_1.default.PARENTESE_DIREITO, "Esperado ')' após a expressão.");
200
+ this.consumir(lexico_regular_1.default.PARENTESE_DIREITO, "Esperado ')' após a expressão.");
201
201
  return new tuplas_1.SeletorTuplas(...argumentos);
202
202
  default:
203
- this.consumir(potigol_1.default.PARENTESE_DIREITO, "Esperado ')' após a expressão.");
203
+ this.consumir(lexico_regular_1.default.PARENTESE_DIREITO, "Esperado ')' após a expressão.");
204
204
  return new construtos_1.Agrupamento(this.hashArquivo, Number(simboloAtual.linha), expressao);
205
205
  }
206
- case potigol_1.default.COLCHETE_ESQUERDO:
206
+ case lexico_regular_1.default.COLCHETE_ESQUERDO:
207
207
  this.avancarEDevolverAnterior();
208
208
  let valores = [];
209
- if (this.verificarSeSimboloAtualEIgualA(potigol_1.default.COLCHETE_DIREITO)) {
209
+ if (this.verificarSeSimboloAtualEIgualA(lexico_regular_1.default.COLCHETE_DIREITO)) {
210
210
  return new construtos_1.Vetor(this.hashArquivo, Number(simboloAtual.linha), []);
211
211
  }
212
- while (!this.verificarSeSimboloAtualEIgualA(potigol_1.default.COLCHETE_DIREITO)) {
212
+ while (!this.verificarSeSimboloAtualEIgualA(lexico_regular_1.default.COLCHETE_DIREITO)) {
213
213
  const valor = this.atribuir();
214
214
  valores.push(valor);
215
- if (this.simbolos[this.atual].tipo !== potigol_1.default.COLCHETE_DIREITO) {
216
- this.consumir(potigol_1.default.VIRGULA, 'Esperado vírgula antes da próxima expressão.');
215
+ if (this.simbolos[this.atual].tipo !== lexico_regular_1.default.COLCHETE_DIREITO) {
216
+ this.consumir(lexico_regular_1.default.VIRGULA, 'Esperado vírgula antes da próxima expressão.');
217
217
  }
218
218
  }
219
219
  return new construtos_1.Vetor(this.hashArquivo, Number(simboloAtual.linha), valores);
220
- case potigol_1.default.CARACTERE:
221
- case potigol_1.default.INTEIRO:
222
- case potigol_1.default.LOGICO:
223
- case potigol_1.default.REAL:
224
- case potigol_1.default.TEXTO:
220
+ case lexico_regular_1.default.CARACTERE:
221
+ case lexico_regular_1.default.INTEIRO:
222
+ case lexico_regular_1.default.LOGICO:
223
+ case lexico_regular_1.default.REAL:
224
+ case lexico_regular_1.default.TEXTO:
225
225
  const simboloLiteral = this.avancarEDevolverAnterior();
226
226
  return new construtos_1.Literal(this.hashArquivo, Number(simboloLiteral.linha), simboloLiteral.literal);
227
- case potigol_1.default.FALSO:
228
- case potigol_1.default.VERDADEIRO:
227
+ case lexico_regular_1.default.FALSO:
228
+ case lexico_regular_1.default.VERDADEIRO:
229
229
  const simboloVerdadeiroFalso = this.avancarEDevolverAnterior();
230
- return new construtos_1.Literal(this.hashArquivo, Number(simboloVerdadeiroFalso.linha), simboloVerdadeiroFalso.tipo === potigol_1.default.VERDADEIRO);
231
- case potigol_1.default.LEIA_INTEIRO:
232
- case potigol_1.default.LEIA_REAL:
233
- case potigol_1.default.LEIA_TEXTO:
230
+ return new construtos_1.Literal(this.hashArquivo, Number(simboloVerdadeiroFalso.linha), simboloVerdadeiroFalso.tipo === lexico_regular_1.default.VERDADEIRO);
231
+ case lexico_regular_1.default.LEIA_INTEIRO:
232
+ case lexico_regular_1.default.LEIA_REAL:
233
+ case lexico_regular_1.default.LEIA_TEXTO:
234
234
  const simboloLeia = this.avancarEDevolverAnterior();
235
235
  return new declaracoes_1.Leia(simboloLeia, []);
236
- case potigol_1.default.LEIA_INTEIROS:
237
- case potigol_1.default.LEIA_REAIS:
238
- case potigol_1.default.LEIA_TEXTOS:
236
+ case lexico_regular_1.default.LEIA_INTEIROS:
237
+ case lexico_regular_1.default.LEIA_REAIS:
238
+ case lexico_regular_1.default.LEIA_TEXTOS:
239
239
  const simboloLeiaDefinido = this.avancarEDevolverAnterior();
240
- this.consumir(potigol_1.default.PARENTESE_ESQUERDO, `Esperado parêntese esquerdo após ${simboloLeiaDefinido.lexema}.`);
240
+ this.consumir(lexico_regular_1.default.PARENTESE_ESQUERDO, `Esperado parêntese esquerdo após ${simboloLeiaDefinido.lexema}.`);
241
241
  const argumento = this.expressao();
242
- this.consumir(potigol_1.default.PARENTESE_DIREITO, `Esperado parêntese direito após número de parâmetros em chamada de ${simboloLeiaDefinido.lexema}.`);
242
+ this.consumir(lexico_regular_1.default.PARENTESE_DIREITO, `Esperado parêntese direito após número de parâmetros em chamada de ${simboloLeiaDefinido.lexema}.`);
243
243
  const leiaDefinido = new declaracoes_1.LeiaMultiplo(simboloLeiaDefinido, argumento);
244
244
  return leiaDefinido;
245
245
  default:
@@ -258,14 +258,14 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
258
258
  chamar() {
259
259
  let expressao = this.primario();
260
260
  while (true) {
261
- if (this.verificarSeSimboloAtualEIgualA(potigol_1.default.PARENTESE_ESQUERDO)) {
261
+ if (this.verificarSeSimboloAtualEIgualA(lexico_regular_1.default.PARENTESE_ESQUERDO)) {
262
262
  if (expressao instanceof construtos_1.ConstanteOuVariavel) {
263
263
  expressao = new construtos_1.Constante(expressao.hashArquivo, expressao.simbolo);
264
264
  }
265
265
  expressao = this.finalizarChamada(expressao);
266
266
  }
267
- else if (this.verificarSeSimboloAtualEIgualA(potigol_1.default.PONTO)) {
268
- if (this.verificarTipoSimboloAtual(potigol_1.default.QUAL_TIPO)) {
267
+ else if (this.verificarSeSimboloAtualEIgualA(lexico_regular_1.default.PONTO)) {
268
+ if (this.verificarTipoSimboloAtual(lexico_regular_1.default.QUAL_TIPO)) {
269
269
  const identificador = this.simbolos[this.atual - 2];
270
270
  const simbolo = this.simbolos[this.atual];
271
271
  const valor = expressao ? expressao : identificador.lexema;
@@ -273,14 +273,14 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
273
273
  return new construtos_1.QualTipo(this.hashArquivo, simbolo, valor);
274
274
  }
275
275
  else {
276
- const nome = this.consumir(potigol_1.default.IDENTIFICADOR, "Esperado nome do método após '.'.");
276
+ const nome = this.consumir(lexico_regular_1.default.IDENTIFICADOR, "Esperado nome do método após '.'.");
277
277
  const variavelMetodo = new construtos_1.Variavel(expressao.hashArquivo, expressao.simbolo);
278
278
  expressao = new construtos_1.AcessoMetodoOuPropriedade(this.hashArquivo, variavelMetodo, nome);
279
279
  }
280
280
  }
281
- else if (this.verificarSeSimboloAtualEIgualA(potigol_1.default.COLCHETE_ESQUERDO)) {
281
+ else if (this.verificarSeSimboloAtualEIgualA(lexico_regular_1.default.COLCHETE_ESQUERDO)) {
282
282
  const indice = this.expressao();
283
- const simboloFechamento = this.consumir(potigol_1.default.COLCHETE_DIREITO, "Esperado ']' após escrita do indice.");
283
+ const simboloFechamento = this.consumir(lexico_regular_1.default.COLCHETE_DIREITO, "Esperado ']' após escrita do indice.");
284
284
  const variavelVetor = new construtos_1.Variavel(expressao.hashArquivo, expressao.simbolo);
285
285
  expressao = new construtos_1.AcessoIndiceVariavel(this.hashArquivo, variavelVetor, indice, simboloFechamento);
286
286
  }
@@ -295,7 +295,7 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
295
295
  }
296
296
  comparacaoIgualdade() {
297
297
  let expressao = this.comparar();
298
- while (this.verificarSeSimboloAtualEIgualA(potigol_1.default.DIFERENTE, potigol_1.default.IGUAL_IGUAL)) {
298
+ while (this.verificarSeSimboloAtualEIgualA(lexico_regular_1.default.DIFERENTE, lexico_regular_1.default.IGUAL_IGUAL)) {
299
299
  const operador = this.simbolos[this.atual - 1];
300
300
  const direito = this.comparar();
301
301
  expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
@@ -305,11 +305,11 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
305
305
  declaracaoEscreva() {
306
306
  const simboloAtual = this.avancarEDevolverAnterior();
307
307
  const argumentos = [];
308
- this.verificarSeSimboloAtualEIgualA(potigol_1.default.PARENTESE_ESQUERDO);
308
+ this.verificarSeSimboloAtualEIgualA(lexico_regular_1.default.PARENTESE_ESQUERDO);
309
309
  do {
310
310
  argumentos.push(this.ou());
311
- } while (this.verificarSeSimboloAtualEIgualA(potigol_1.default.VIRGULA));
312
- this.verificarSeSimboloAtualEIgualA(potigol_1.default.PARENTESE_DIREITO);
311
+ } while (this.verificarSeSimboloAtualEIgualA(lexico_regular_1.default.VIRGULA));
312
+ this.verificarSeSimboloAtualEIgualA(lexico_regular_1.default.PARENTESE_DIREITO);
313
313
  return new declaracoes_1.Escreva(Number(simboloAtual.linha), simboloAtual.hashArquivo, argumentos);
314
314
  }
315
315
  declaracaoImprima() {
@@ -317,7 +317,7 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
317
317
  const argumentos = [];
318
318
  do {
319
319
  argumentos.push(this.expressao());
320
- } while (this.verificarSeSimboloAtualEIgualA(potigol_1.default.VIRGULA));
320
+ } while (this.verificarSeSimboloAtualEIgualA(lexico_regular_1.default.VIRGULA));
321
321
  return new declaracoes_1.EscrevaMesmaLinha(Number(simboloAtual.linha), simboloAtual.hashArquivo, argumentos);
322
322
  }
323
323
  /**
@@ -332,7 +332,7 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
332
332
  */
333
333
  blocoEscopo() {
334
334
  let declaracoes = [];
335
- while (!this.estaNoFinal() && !this.verificarTipoSimboloAtual(potigol_1.default.FIM)) {
335
+ while (!this.estaNoFinal() && !this.verificarTipoSimboloAtual(lexico_regular_1.default.FIM)) {
336
336
  const retornoDeclaracao = this.resolverDeclaracaoForaDeBloco();
337
337
  if (Array.isArray(retornoDeclaracao)) {
338
338
  declaracoes = declaracoes.concat(retornoDeclaracao);
@@ -346,43 +346,43 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
346
346
  declaracaoSe() {
347
347
  const simboloSe = this.avancarEDevolverAnterior();
348
348
  const condicao = this.expressao();
349
- this.consumir(potigol_1.default.ENTAO, "Esperado palavra reservada 'entao' após condição em declaração 'se'.");
349
+ this.consumir(lexico_regular_1.default.ENTAO, "Esperado palavra reservada 'entao' após condição em declaração 'se'.");
350
350
  const declaracoes = [];
351
351
  do {
352
352
  declaracoes.push(this.resolverDeclaracaoForaDeBloco());
353
- } while (![potigol_1.default.SENAO, potigol_1.default.FIM].includes(this.simbolos[this.atual].tipo));
353
+ } while (![lexico_regular_1.default.SENAO, lexico_regular_1.default.FIM].includes(this.simbolos[this.atual].tipo));
354
354
  let caminhoSenao = null;
355
- if (this.verificarSeSimboloAtualEIgualA(potigol_1.default.SENAO)) {
355
+ if (this.verificarSeSimboloAtualEIgualA(lexico_regular_1.default.SENAO)) {
356
356
  const simboloSenao = this.simbolos[this.atual - 1];
357
357
  const declaracoesSenao = [];
358
358
  do {
359
359
  declaracoesSenao.push(this.resolverDeclaracaoForaDeBloco());
360
- } while (![potigol_1.default.FIM].includes(this.simbolos[this.atual].tipo));
360
+ } while (![lexico_regular_1.default.FIM].includes(this.simbolos[this.atual].tipo));
361
361
  caminhoSenao = new declaracoes_1.Bloco(this.hashArquivo, Number(simboloSenao.linha), declaracoesSenao.filter((d) => d));
362
362
  }
363
- this.consumir(potigol_1.default.FIM, "Esperado palavra-chave 'fim' para fechamento de declaração 'se'.");
363
+ this.consumir(lexico_regular_1.default.FIM, "Esperado palavra-chave 'fim' para fechamento de declaração 'se'.");
364
364
  return new declaracoes_1.Se(condicao, new declaracoes_1.Bloco(this.hashArquivo, Number(simboloSe.linha), declaracoes.filter((d) => d)), [], caminhoSenao);
365
365
  }
366
366
  declaracaoEnquanto() {
367
367
  const simboloAtual = this.avancarEDevolverAnterior();
368
368
  const condicao = this.expressao();
369
- this.consumir(potigol_1.default.FACA, "Esperado paravra reservada 'faca' após condição de continuidade em declaracão 'enquanto'.");
369
+ this.consumir(lexico_regular_1.default.FACA, "Esperado paravra reservada 'faca' após condição de continuidade em declaracão 'enquanto'.");
370
370
  const declaracoes = [];
371
371
  do {
372
372
  declaracoes.push(this.resolverDeclaracaoForaDeBloco());
373
- } while (![potigol_1.default.FIM].includes(this.simbolos[this.atual].tipo));
374
- this.consumir(potigol_1.default.FIM, "Esperado palavra-chave 'fim' para fechamento de declaração 'enquanto'.");
373
+ } while (![lexico_regular_1.default.FIM].includes(this.simbolos[this.atual].tipo));
374
+ this.consumir(lexico_regular_1.default.FIM, "Esperado palavra-chave 'fim' para fechamento de declaração 'enquanto'.");
375
375
  return new declaracoes_1.Enquanto(condicao, new declaracoes_1.Bloco(simboloAtual.hashArquivo, Number(simboloAtual.linha), declaracoes.filter((d) => d)));
376
376
  }
377
377
  declaracaoPara() {
378
378
  const simboloPara = this.avancarEDevolverAnterior();
379
- const variavelIteracao = this.consumir(potigol_1.default.IDENTIFICADOR, "Esperado identificador de variável após 'para'.");
380
- this.consumir(potigol_1.default.DE, "Esperado palavra reservada 'de' após variável de controle de 'para'.");
379
+ const variavelIteracao = this.consumir(lexico_regular_1.default.IDENTIFICADOR, "Esperado identificador de variável após 'para'.");
380
+ this.consumir(lexico_regular_1.default.DE, "Esperado palavra reservada 'de' após variável de controle de 'para'.");
381
381
  const literalOuVariavelInicio = this.adicaoOuSubtracao();
382
- this.consumir(potigol_1.default.ATE, "Esperado palavra reservada 'ate' após valor inicial do laço de repetição 'para'.");
382
+ this.consumir(lexico_regular_1.default.ATE, "Esperado palavra reservada 'ate' após valor inicial do laço de repetição 'para'.");
383
383
  const literalOuVariavelFim = this.adicaoOuSubtracao();
384
- let operadorCondicao = new lexador_1.Simbolo(potigol_1.default.MENOR_IGUAL, '', '', Number(simboloPara.linha), this.hashArquivo);
385
- let operadorCondicaoIncremento = new lexador_1.Simbolo(potigol_1.default.MENOR, '', '', Number(simboloPara.linha), this.hashArquivo);
384
+ let operadorCondicao = new lexador_1.Simbolo(lexico_regular_1.default.MENOR_IGUAL, '', '', Number(simboloPara.linha), this.hashArquivo);
385
+ let operadorCondicaoIncremento = new lexador_1.Simbolo(lexico_regular_1.default.MENOR, '', '', Number(simboloPara.linha), this.hashArquivo);
386
386
  // Isso existe porque o laço `para` do Potigol pode ter o passo positivo ou negativo
387
387
  // dependendo dos operandos de início e fim, que só são possíveis de determinar
388
388
  // em tempo de execução.
@@ -390,15 +390,15 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
390
390
  // passo são considerados indefinidos aqui.
391
391
  let passo;
392
392
  let resolverIncrementoEmExecucao = false;
393
- if (this.verificarSeSimboloAtualEIgualA(potigol_1.default.PASSO)) {
393
+ if (this.verificarSeSimboloAtualEIgualA(lexico_regular_1.default.PASSO)) {
394
394
  passo = this.unario();
395
395
  }
396
396
  else {
397
397
  if (literalOuVariavelInicio instanceof construtos_1.Literal && literalOuVariavelFim instanceof construtos_1.Literal) {
398
398
  if (literalOuVariavelInicio.valor > literalOuVariavelFim.valor) {
399
- passo = new construtos_1.Unario(this.hashArquivo, new lexador_1.Simbolo(potigol_1.default.SUBTRACAO, '-', undefined, simboloPara.linha, simboloPara.hashArquivo), new construtos_1.Literal(this.hashArquivo, Number(simboloPara.linha), 1), 'ANTES');
400
- operadorCondicao = new lexador_1.Simbolo(potigol_1.default.MAIOR_IGUAL, '', '', Number(simboloPara.linha), this.hashArquivo);
401
- operadorCondicaoIncremento = new lexador_1.Simbolo(potigol_1.default.MAIOR, '', '', Number(simboloPara.linha), this.hashArquivo);
399
+ passo = new construtos_1.Unario(this.hashArquivo, new lexador_1.Simbolo(lexico_regular_1.default.SUBTRACAO, '-', undefined, simboloPara.linha, simboloPara.hashArquivo), new construtos_1.Literal(this.hashArquivo, Number(simboloPara.linha), 1), 'ANTES');
400
+ operadorCondicao = new lexador_1.Simbolo(lexico_regular_1.default.MAIOR_IGUAL, '', '', Number(simboloPara.linha), this.hashArquivo);
401
+ operadorCondicaoIncremento = new lexador_1.Simbolo(lexico_regular_1.default.MAIOR, '', '', Number(simboloPara.linha), this.hashArquivo);
402
402
  }
403
403
  else {
404
404
  passo = new construtos_1.Literal(this.hashArquivo, Number(simboloPara.linha), 1);
@@ -412,16 +412,16 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
412
412
  resolverIncrementoEmExecucao = true;
413
413
  }
414
414
  }
415
- this.consumir(potigol_1.default.FACA, "Esperado palavra reservada 'faca' após valor final do laço de repetição 'para'.");
415
+ this.consumir(lexico_regular_1.default.FACA, "Esperado palavra reservada 'faca' após valor final do laço de repetição 'para'.");
416
416
  const declaracoesBlocoPara = [];
417
417
  let simboloAtualBlocoPara = this.simbolos[this.atual];
418
- while (simboloAtualBlocoPara.tipo !== potigol_1.default.FIM) {
418
+ while (simboloAtualBlocoPara.tipo !== lexico_regular_1.default.FIM) {
419
419
  declaracoesBlocoPara.push(this.resolverDeclaracaoForaDeBloco());
420
420
  simboloAtualBlocoPara = this.simbolos[this.atual];
421
421
  }
422
- this.consumir(potigol_1.default.FIM, '');
422
+ this.consumir(lexico_regular_1.default.FIM, '');
423
423
  const corpo = new declaracoes_1.Bloco(this.hashArquivo, Number(simboloPara.linha) + 1, declaracoesBlocoPara.filter((d) => d));
424
- const para = new declaracoes_1.Para(this.hashArquivo, Number(simboloPara.linha), new construtos_1.Atribuir(this.hashArquivo, variavelIteracao, literalOuVariavelInicio), new construtos_1.Binario(this.hashArquivo, new construtos_1.Variavel(this.hashArquivo, variavelIteracao), operadorCondicao, literalOuVariavelFim), new construtos_1.FimPara(this.hashArquivo, Number(simboloPara.linha), new construtos_1.Binario(this.hashArquivo, new construtos_1.Variavel(this.hashArquivo, variavelIteracao), operadorCondicaoIncremento, literalOuVariavelFim), new declaracoes_1.Expressao(new construtos_1.Atribuir(this.hashArquivo, variavelIteracao, new construtos_1.Binario(this.hashArquivo, new construtos_1.Variavel(this.hashArquivo, variavelIteracao), new lexador_1.Simbolo(potigol_1.default.ADICAO, '', null, Number(simboloPara.linha), this.hashArquivo), passo)))), corpo);
424
+ const para = new declaracoes_1.Para(this.hashArquivo, Number(simboloPara.linha), new construtos_1.Atribuir(this.hashArquivo, variavelIteracao, literalOuVariavelInicio), new construtos_1.Binario(this.hashArquivo, new construtos_1.Variavel(this.hashArquivo, variavelIteracao), operadorCondicao, literalOuVariavelFim), new construtos_1.FimPara(this.hashArquivo, Number(simboloPara.linha), new construtos_1.Binario(this.hashArquivo, new construtos_1.Variavel(this.hashArquivo, variavelIteracao), operadorCondicaoIncremento, literalOuVariavelFim), new declaracoes_1.Expressao(new construtos_1.Atribuir(this.hashArquivo, variavelIteracao, new construtos_1.Binario(this.hashArquivo, new construtos_1.Variavel(this.hashArquivo, variavelIteracao), new lexador_1.Simbolo(lexico_regular_1.default.ADICAO, '', null, Number(simboloPara.linha), this.hashArquivo), passo)))), corpo);
425
425
  para.blocoPosExecucao = corpo;
426
426
  para.resolverIncrementoEmExecucao = resolverIncrementoEmExecucao;
427
427
  return para;
@@ -431,16 +431,16 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
431
431
  const condicao = this.expressao();
432
432
  const caminhos = [];
433
433
  let caminhoPadrao = null;
434
- while (!this.verificarSeSimboloAtualEIgualA(potigol_1.default.FIM)) {
435
- this.consumir(potigol_1.default.CASO, "Esperado palavra reservada 'caso' após condição de 'escolha'.");
436
- if (this.verificarSeSimboloAtualEIgualA(potigol_1.default.TRACO_BAIXO)) {
434
+ while (!this.verificarSeSimboloAtualEIgualA(lexico_regular_1.default.FIM)) {
435
+ this.consumir(lexico_regular_1.default.CASO, "Esperado palavra reservada 'caso' após condição de 'escolha'.");
436
+ if (this.verificarSeSimboloAtualEIgualA(lexico_regular_1.default.TRACO_BAIXO)) {
437
437
  // Caso padrão
438
438
  if (caminhoPadrao !== null) {
439
439
  const excecao = new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(this.simbolos[this.atual], "Você só pode ter um caminho padrão em cada declaração de 'escolha'.");
440
440
  this.erros.push(excecao);
441
441
  throw excecao;
442
442
  }
443
- this.consumir(potigol_1.default.SETA, "Esperado '=>' após palavra reservada 'caso'.");
443
+ this.consumir(lexico_regular_1.default.SETA, "Esperado '=>' após palavra reservada 'caso'.");
444
444
  const declaracoesPadrao = [this.resolverDeclaracaoForaDeBloco()];
445
445
  // TODO: Verificar se Potigol admite bloco de escopo para `escolha`.
446
446
  /* const declaracoesPadrao = [];
@@ -453,7 +453,7 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
453
453
  continue;
454
454
  }
455
455
  const caminhoCondicoes = [this.expressao()];
456
- this.consumir(potigol_1.default.SETA, "Esperado '=>' após palavra reservada 'caso'.");
456
+ this.consumir(lexico_regular_1.default.SETA, "Esperado '=>' após palavra reservada 'caso'.");
457
457
  const declaracoes = [this.resolverDeclaracaoForaDeBloco()];
458
458
  // TODO: Verificar se Potigol admite bloco de escopo para `escolha`.
459
459
  /* const declaracoes = [];
@@ -471,8 +471,8 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
471
471
  const identificadores = [];
472
472
  let tipo = null;
473
473
  do {
474
- identificadores.push(this.consumir(potigol_1.default.IDENTIFICADOR, 'Esperado nome da constante.'));
475
- } while (this.verificarSeSimboloAtualEIgualA(potigol_1.default.VIRGULA));
474
+ identificadores.push(this.consumir(lexico_regular_1.default.IDENTIFICADOR, 'Esperado nome da constante.'));
475
+ } while (this.verificarSeSimboloAtualEIgualA(lexico_regular_1.default.VIRGULA));
476
476
  /* if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.DOIS_PONTOS)) {
477
477
  const tipoConstante = this.verificarDefinicaoTipoAtual();
478
478
  if (!tipoConstante) {
@@ -481,7 +481,7 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
481
481
  tipo = tipoConstante;
482
482
  this.avancarEDevolverAnterior();
483
483
  } */
484
- this.consumir(potigol_1.default.IGUAL, "Esperado '=' após identificador em instrução 'constante'.");
484
+ this.consumir(lexico_regular_1.default.IGUAL, "Esperado '=' após identificador em instrução 'constante'.");
485
485
  const inicializadores = [];
486
486
  do {
487
487
  let inicializador = this.expressao();
@@ -489,7 +489,7 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
489
489
  inicializador = new declaracoes_1.LeiaMultiplo(inicializador.simbolo, new construtos_1.Literal(this.hashArquivo, Number(inicializador.simbolo.linha), identificadores.length));
490
490
  }
491
491
  inicializadores.push(inicializador);
492
- } while (this.verificarSeSimboloAtualEIgualA(potigol_1.default.VIRGULA));
492
+ } while (this.verificarSeSimboloAtualEIgualA(lexico_regular_1.default.VIRGULA));
493
493
  if (identificadores.length !== inicializadores.length) {
494
494
  // Pode ser que a inicialização seja feita por uma das
495
495
  // funções `leia`, que podem ler vários valores. Neste caso, não deve dar erro.
@@ -499,14 +499,14 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
499
499
  const inicializadorLeia = inicializadores[0];
500
500
  let tipoConversao;
501
501
  switch (inicializadorLeia.simbolo.tipo) {
502
- case potigol_1.default.LEIA_INTEIROS:
502
+ case lexico_regular_1.default.LEIA_INTEIROS:
503
503
  tipoConversao = 'inteiro[]';
504
504
  break;
505
- case potigol_1.default.LEIA_INTEIRO:
505
+ case lexico_regular_1.default.LEIA_INTEIRO:
506
506
  tipoConversao = 'inteiro';
507
507
  break;
508
- case potigol_1.default.LEIA_REAL:
509
- case potigol_1.default.LEIA_REAIS:
508
+ case lexico_regular_1.default.LEIA_REAL:
509
+ case lexico_regular_1.default.LEIA_REAIS:
510
510
  tipoConversao = 'real';
511
511
  break;
512
512
  default:
@@ -528,13 +528,13 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
528
528
  const simboloVar = this.avancarEDevolverAnterior();
529
529
  const identificadores = [];
530
530
  do {
531
- identificadores.push(this.consumir(potigol_1.default.IDENTIFICADOR, 'Esperado nome de variável.'));
532
- } while (this.verificarSeSimboloAtualEIgualA(potigol_1.default.VIRGULA));
533
- this.consumir(potigol_1.default.REATRIBUIR, "Esperado ':=' após identificador em instrução 'var'.");
531
+ identificadores.push(this.consumir(lexico_regular_1.default.IDENTIFICADOR, 'Esperado nome de variável.'));
532
+ } while (this.verificarSeSimboloAtualEIgualA(lexico_regular_1.default.VIRGULA));
533
+ this.consumir(lexico_regular_1.default.REATRIBUIR, "Esperado ':=' após identificador em instrução 'var'.");
534
534
  const inicializadores = [];
535
535
  do {
536
536
  inicializadores.push(this.expressao());
537
- } while (this.verificarSeSimboloAtualEIgualA(potigol_1.default.VIRGULA));
537
+ } while (this.verificarSeSimboloAtualEIgualA(lexico_regular_1.default.VIRGULA));
538
538
  if (identificadores.length !== inicializadores.length) {
539
539
  throw this.erro(simboloVar, 'Quantidade de identificadores à esquerda do igual é diferente da quantidade de valores à direita.');
540
540
  }
@@ -550,11 +550,12 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
550
550
  // podemos ter uma constante apenas.
551
551
  this.avancarEDevolverAnterior();
552
552
  if (![
553
- potigol_1.default.CARACTERE,
554
- potigol_1.default.INTEIRO,
555
- potigol_1.default.LOGICO,
556
- potigol_1.default.REAL,
557
- potigol_1.default.TEXTO,
553
+ lexico_regular_1.default.CARACTERE,
554
+ lexico_regular_1.default.INTEIRO,
555
+ lexico_regular_1.default.LOGICO,
556
+ lexico_regular_1.default.LÓGICO,
557
+ lexico_regular_1.default.REAL,
558
+ lexico_regular_1.default.TEXTO,
558
559
  ].includes(this.simbolos[this.atual].tipo)) {
559
560
  throw this.erro(this.simbolos[this.atual], 'Esperado tipo após dois-pontos e nome de identificador.');
560
561
  }
@@ -580,34 +581,34 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
580
581
  } */
581
582
  const metodos = [];
582
583
  const propriedades = [];
583
- while (!this.verificarTipoSimboloAtual(potigol_1.default.FIM) && !this.estaNoFinal()) {
584
- const identificador = this.consumir(potigol_1.default.IDENTIFICADOR, 'Esperado nome de propriedade ou método.');
585
- if (this.simbolos[this.atual].tipo === potigol_1.default.PARENTESE_ESQUERDO) {
584
+ while (!this.verificarTipoSimboloAtual(lexico_regular_1.default.FIM) && !this.estaNoFinal()) {
585
+ const identificador = this.consumir(lexico_regular_1.default.IDENTIFICADOR, 'Esperado nome de propriedade ou método.');
586
+ if (this.simbolos[this.atual].tipo === lexico_regular_1.default.PARENTESE_ESQUERDO) {
586
587
  // Método
587
588
  const construtoMetodo = new construtos_1.Constante(identificador.hashArquivo, identificador);
588
589
  metodos.push(this.declaracaoDeFuncaoOuMetodo(construtoMetodo));
589
590
  }
590
591
  else {
591
592
  // Propriedade
592
- this.consumir(potigol_1.default.DOIS_PONTOS, 'Esperado dois-pontos após nome de propriedade em declaração de tipo.');
593
+ this.consumir(lexico_regular_1.default.DOIS_PONTOS, 'Esperado dois-pontos após nome de propriedade em declaração de tipo.');
593
594
  this.verificacaoTipo(this.simbolos[this.atual], 'Esperado tipo do argumento após dois-pontos, em definição de função.');
594
595
  const tipoPropriedade = this.avancarEDevolverAnterior();
595
596
  propriedades.push(new declaracoes_1.PropriedadeClasse(identificador, this.tiposPotigolParaDelegua[tipoPropriedade.lexema]));
596
597
  }
597
598
  }
598
- this.consumir(potigol_1.default.FIM, "Esperado 'fim' após o escopo do tipo.");
599
+ this.consumir(lexico_regular_1.default.FIM, "Esperado 'fim' após o escopo do tipo.");
599
600
  // Depois de verificadas todas as propriedades anotadas com tipo,
600
601
  // Precisamos gerar um construtor com todas elas na ordem em que
601
602
  // foram lidas.
602
603
  const instrucoesConstrutor = [];
603
604
  for (let propriedade of propriedades) {
604
- instrucoesConstrutor.push(new declaracoes_1.Expressao(new construtos_1.DefinirValor(propriedade.hashArquivo, propriedade.linha, new construtos_1.Isto(propriedade.hashArquivo, propriedade.linha, new lexador_1.Simbolo(potigol_1.default.ISTO, 'isto', undefined, simboloTipo.linha, simboloTipo.hashArquivo)), propriedade.nome, new construtos_1.Variavel(propriedade.hashArquivo, propriedade.nome))));
605
+ instrucoesConstrutor.push(new declaracoes_1.Expressao(new construtos_1.DefinirValor(propriedade.hashArquivo, propriedade.linha, new construtos_1.Isto(propriedade.hashArquivo, propriedade.linha, new lexador_1.Simbolo(lexico_regular_1.default.ISTO, 'isto', undefined, simboloTipo.linha, simboloTipo.hashArquivo)), propriedade.nome, new construtos_1.Variavel(propriedade.hashArquivo, propriedade.nome))));
605
606
  }
606
607
  const construtorConstruto = new construtos_1.FuncaoConstruto(simboloTipo.hashArquivo, simboloTipo.linha, propriedades.map((p) => ({
607
608
  abrangencia: 'padrao',
608
609
  nome: p.nome,
609
610
  })), instrucoesConstrutor);
610
- const construtor = new declaracoes_1.FuncaoDeclaracao(new lexador_1.Simbolo(potigol_1.default.CONSTRUTOR, 'construtor', undefined, simboloTipo.hashArquivo, simboloTipo.linha), construtorConstruto, undefined);
611
+ const construtor = new declaracoes_1.FuncaoDeclaracao(new lexador_1.Simbolo(lexico_regular_1.default.CONSTRUTOR, 'construtor', undefined, simboloTipo.hashArquivo, simboloTipo.linha), construtorConstruto, undefined);
611
612
  metodos.unshift(construtor);
612
613
  return new declaracoes_1.Classe(construto.simbolo, undefined, metodos, propriedades);
613
614
  }
@@ -616,14 +617,14 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
616
617
  if (!this.estaNoFinal() && expressao instanceof construtos_1.Constante) {
617
618
  let tipoVariavelOuConstante;
618
619
  // Atribuição constante.
619
- if (this.simbolos[this.atual].tipo === potigol_1.default.DOIS_PONTOS) {
620
+ if (this.simbolos[this.atual].tipo === lexico_regular_1.default.DOIS_PONTOS) {
620
621
  tipoVariavelOuConstante = this.logicaAtribuicaoComDicaDeTipo(expressao);
621
622
  }
622
623
  switch (this.simbolos[this.atual].tipo) {
623
- case potigol_1.default.VIRGULA:
624
+ case lexico_regular_1.default.VIRGULA:
624
625
  this.atual--;
625
626
  return this.declaracaoDeConstantes();
626
- case potigol_1.default.IGUAL:
627
+ case lexico_regular_1.default.IGUAL:
627
628
  this.avancarEDevolverAnterior();
628
629
  const valorAtribuicao = this.ou();
629
630
  return new declaracoes_1.Const(expressao.simbolo, valorAtribuicao, tipoVariavelOuConstante
@@ -647,10 +648,10 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
647
648
  * ou uma chamada de função.
648
649
  */
649
650
  expressaoOuDefinicaoFuncao() {
650
- if (!this.estaNoFinal() && this.simbolos[this.atual].tipo === potigol_1.default.IDENTIFICADOR) {
651
+ if (!this.estaNoFinal() && this.simbolos[this.atual].tipo === lexico_regular_1.default.IDENTIFICADOR) {
651
652
  if (this.atual + 1 < this.simbolos.length) {
652
653
  switch (this.simbolos[this.atual + 1].tipo) {
653
- case potigol_1.default.PARENTESE_ESQUERDO:
654
+ case lexico_regular_1.default.PARENTESE_ESQUERDO:
654
655
  const construtoPrimario = this.primario();
655
656
  return this.declaracaoDeFuncaoOuMetodo(construtoPrimario);
656
657
  }
@@ -661,21 +662,21 @@ class AvaliadorSintaticoPotigol extends avaliador_sintatico_base_1.AvaliadorSint
661
662
  resolverDeclaracaoForaDeBloco() {
662
663
  const simboloAtual = this.simbolos[this.atual];
663
664
  switch (simboloAtual.tipo) {
664
- case potigol_1.default.ENQUANTO:
665
+ case lexico_regular_1.default.ENQUANTO:
665
666
  return this.declaracaoEnquanto();
666
- case potigol_1.default.ESCOLHA:
667
+ case lexico_regular_1.default.ESCOLHA:
667
668
  return this.declaracaoEscolha();
668
- case potigol_1.default.ESCREVA:
669
+ case lexico_regular_1.default.ESCREVA:
669
670
  return this.declaracaoEscreva();
670
- case potigol_1.default.IMPRIMA:
671
+ case lexico_regular_1.default.IMPRIMA:
671
672
  return this.declaracaoImprima();
672
- case potigol_1.default.PARA:
673
+ case lexico_regular_1.default.PARA:
673
674
  return this.declaracaoPara();
674
- case potigol_1.default.SE:
675
+ case lexico_regular_1.default.SE:
675
676
  return this.declaracaoSe();
676
- case potigol_1.default.TIPO:
677
+ case lexico_regular_1.default.TIPO:
677
678
  return this.declaracaoTipo();
678
- case potigol_1.default.VARIAVEL:
679
+ case lexico_regular_1.default.VARIAVEL:
679
680
  return this.declaracaoDeVariaveis();
680
681
  default:
681
682
  return this.expressaoOuDefinicaoFuncao();