@designliquido/delegua 0.20.3 → 0.20.5

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 (27) hide show
  1. package/bin/package.json +1 -1
  2. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.js +30 -1
  3. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.js.map +1 -1
  4. package/fontes/bibliotecas/primitivas-vetor.d.ts +1 -1
  5. package/fontes/bibliotecas/primitivas-vetor.js +6 -2
  6. package/fontes/bibliotecas/primitivas-vetor.js.map +1 -1
  7. package/fontes/interpretador/dialetos/birl/interpretador-birl.d.ts +120 -0
  8. package/fontes/interpretador/dialetos/birl/interpretador-birl.js +399 -0
  9. package/fontes/interpretador/dialetos/birl/interpretador-birl.js.map +1 -0
  10. package/fontes/interpretador/dialetos/index.d.ts +1 -0
  11. package/fontes/interpretador/dialetos/index.js +1 -0
  12. package/fontes/interpretador/dialetos/index.js.map +1 -1
  13. package/fontes/interpretador/dialetos/visualg/comum.d.ts +2 -0
  14. package/fontes/interpretador/dialetos/visualg/comum.js +34 -1
  15. package/fontes/interpretador/dialetos/visualg/comum.js.map +1 -1
  16. package/fontes/interpretador/dialetos/visualg/interpretador-visualg-com-depuracao.d.ts +2 -1
  17. package/fontes/interpretador/dialetos/visualg/interpretador-visualg-com-depuracao.js +44 -0
  18. package/fontes/interpretador/dialetos/visualg/interpretador-visualg-com-depuracao.js.map +1 -1
  19. package/fontes/interpretador/dialetos/visualg/interpretador-visualg.d.ts +2 -1
  20. package/fontes/interpretador/dialetos/visualg/interpretador-visualg.js +33 -0
  21. package/fontes/interpretador/dialetos/visualg/interpretador-visualg.js.map +1 -1
  22. package/fontes/interpretador/interpretador-base.js +1 -1
  23. package/fontes/interpretador/interpretador-base.js.map +1 -1
  24. package/fontes/lexador/dialetos/palavras-reservadas/visualg.d.ts +1 -0
  25. package/fontes/lexador/dialetos/palavras-reservadas/visualg.js +1 -0
  26. package/fontes/lexador/dialetos/palavras-reservadas/visualg.js.map +1 -1
  27. package/package.json +1 -1
@@ -0,0 +1,399 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InterpretadorBirl = void 0;
4
+ const espaco_variaveis_1 = require("../../../espaco-variaveis");
5
+ const estruturas_1 = require("../../../estruturas");
6
+ const excecoes_1 = require("../../../excecoes");
7
+ const quebras_1 = require("../../../quebras");
8
+ const pilha_escopos_execucao_1 = require("../../pilha-escopos-execucao");
9
+ class InterpretadorBirl {
10
+ constructor(diretorioBase, funcaoDeRetorno = null, funcaoDeRetornoMesmaLinha = null) {
11
+ this.funcaoDeRetorno = null;
12
+ this.funcaoDeRetornoMesmaLinha = null;
13
+ this.resultadoInterpretador = [];
14
+ this.regexInterpolacao = /\$\{([a-z_][\w]*)\}/gi;
15
+ this.diretorioBase = diretorioBase;
16
+ this.funcaoDeRetorno = funcaoDeRetorno || console.log;
17
+ this.funcaoDeRetornoMesmaLinha = funcaoDeRetornoMesmaLinha || process.stdout.write.bind(process.stdout);
18
+ this.erros = [];
19
+ this.declaracoes = [];
20
+ this.pilhaEscoposExecucao = new pilha_escopos_execucao_1.PilhaEscoposExecucao();
21
+ const escopoExecucao = {
22
+ declaracoes: [],
23
+ declaracaoAtual: 0,
24
+ ambiente: new espaco_variaveis_1.EspacoVariaveis(),
25
+ finalizado: false,
26
+ tipo: 'outro',
27
+ emLacoRepeticao: false
28
+ };
29
+ this.pilhaEscoposExecucao.empilhar(escopoExecucao);
30
+ }
31
+ async avaliar(expressao) {
32
+ // @todo: Implementar validação mais inteligente.
33
+ // Descomente o código abaixo quando precisar detectar expressões undefined ou nulas.
34
+ // Por algum motivo o depurador do VSCode não funciona direito aqui
35
+ // com breakpoint condicional.
36
+ /* if (expressao === null || expressao === undefined) {
37
+ console.log('Aqui');
38
+ } */
39
+ return await expressao.aceitar(this);
40
+ }
41
+ executarBloco(declaracoes, ambiente) {
42
+ throw new Error('Método não implementado.');
43
+ }
44
+ visitarExpressaoAgrupamento(expressao) {
45
+ throw new Error('Método não implementado.');
46
+ }
47
+ visitarExpressaoUnaria(expressao) {
48
+ throw new Error('Método não implementado.');
49
+ }
50
+ visitarExpressaoBinaria(expressao) {
51
+ throw new Error('Método não implementado.');
52
+ }
53
+ visitarExpressaoDeChamada(expressao) {
54
+ throw new Error('Método não implementado.');
55
+ }
56
+ visitarDeclaracaoDeAtribuicao(expressao) {
57
+ throw new Error('Método não implementado.');
58
+ }
59
+ visitarExpressaoDeVariavel(expressao) {
60
+ throw new Error('Método não implementado.');
61
+ }
62
+ visitarDeclaracaoDeExpressao(declaracao) {
63
+ throw new Error('Método não implementado.');
64
+ }
65
+ /**
66
+ * Execução da leitura de valores da entrada configurada no
67
+ * início da aplicação.
68
+ * @param expressao Expressão do tipo Leia
69
+ * @returns Promise com o resultado da leitura.
70
+ */
71
+ async visitarExpressaoLeia(expressao) {
72
+ const mensagem = expressao.argumentos && expressao.argumentos[0] ? expressao.argumentos[0].valor : '> ';
73
+ return new Promise((resolucao) => this.interfaceEntradaSaida.question(mensagem, (resposta) => {
74
+ resolucao(resposta);
75
+ }));
76
+ }
77
+ /**
78
+ * Busca variáveis interpoladas.
79
+ * @param {texto} textoOriginal O texto original com as variáveis interpoladas.
80
+ * @returns Uma lista de variáveis interpoladas.
81
+ */
82
+ buscarVariaveisInterpolacao(textoOriginal) {
83
+ const variaveis = textoOriginal.match(this.regexInterpolacao);
84
+ return variaveis.map((s) => {
85
+ const nomeVariavel = s.replace(/[\$\{\}]*/g, '');
86
+ return {
87
+ variavel: nomeVariavel,
88
+ valor: this.pilhaEscoposExecucao.obterVariavelPorNome(nomeVariavel),
89
+ };
90
+ });
91
+ }
92
+ /**
93
+ * Retira a interpolação de um texto.
94
+ * @param {texto} texto O texto
95
+ * @param {any[]} variaveis A lista de variaveis interpoladas
96
+ * @returns O texto com o valor das variaveis.
97
+ */
98
+ retirarInterpolacao(texto, variaveis) {
99
+ const valoresVariaveis = variaveis.map((v) => ({
100
+ valorResolvido: this.pilhaEscoposExecucao.obterVariavelPorNome(v.variavel),
101
+ variavel: v.variavel,
102
+ }));
103
+ let textoFinal = texto;
104
+ valoresVariaveis.forEach((elemento) => {
105
+ const valorFinal = elemento.valorResolvido.hasOwnProperty('valor')
106
+ ? elemento.valorResolvido.valor
107
+ : elemento.valorResolvido;
108
+ textoFinal = textoFinal.replace('${' + elemento.variavel + '}', valorFinal);
109
+ });
110
+ return textoFinal;
111
+ }
112
+ visitarExpressaoLiteral(expressao) {
113
+ if (this.regexInterpolacao.test(expressao.valor)) {
114
+ const variaveis = this.buscarVariaveisInterpolacao(expressao.valor);
115
+ return this.retirarInterpolacao(expressao.valor, variaveis);
116
+ }
117
+ return expressao.valor;
118
+ }
119
+ visitarExpressaoLogica(expressao) {
120
+ throw new Error('Método não implementado.');
121
+ }
122
+ visitarDeclaracaoPara(declaracao) {
123
+ throw new Error('Método não implementado.');
124
+ }
125
+ visitarDeclaracaoParaCada(declaracao) {
126
+ throw new Error('Método não implementado.');
127
+ }
128
+ eVerdadeiro(objeto) {
129
+ if (objeto === null)
130
+ return false;
131
+ if (typeof objeto === 'boolean')
132
+ return Boolean(objeto);
133
+ if (objeto.hasOwnProperty('valor')) {
134
+ return Boolean(objeto.valor);
135
+ }
136
+ return true;
137
+ }
138
+ /**
139
+ * Executa uma expressão Se, que tem uma condição, pode ter um bloco
140
+ * Senão, e múltiplos blocos Senão-se.
141
+ * @param declaracao A declaração Se.
142
+ * @returns O resultado da avaliação do bloco cuja condição é verdadeira.
143
+ */
144
+ async visitarDeclaracaoSe(declaracao) {
145
+ if (this.eVerdadeiro(await this.avaliar(declaracao.condicao))) {
146
+ return await this.executar(declaracao.caminhoEntao);
147
+ }
148
+ // @todo: Verificar se é necessário avaliar o caminho Senão.
149
+ for (let i = 0; i < declaracao.caminhosSeSenao.length; i++) {
150
+ const atual = declaracao.caminhosSeSenao[i];
151
+ if (this.eVerdadeiro(await this.avaliar(atual.condicao))) {
152
+ return await this.executar(atual.caminho);
153
+ }
154
+ }
155
+ if (declaracao.caminhoSenao !== null) {
156
+ return await this.executar(declaracao.caminhoSenao);
157
+ }
158
+ return null;
159
+ }
160
+ visitarExpressaoFimPara(declaracao) {
161
+ throw new Error('Método não implementado.');
162
+ }
163
+ visitarDeclaracaoFazer(declaracao) {
164
+ throw new Error('Método não implementado.');
165
+ }
166
+ visitarExpressaoFormatacaoEscrita(declaracao) {
167
+ throw new Error('Método não implementado.');
168
+ }
169
+ visitarDeclaracaoEscolha(declaracao) {
170
+ throw new Error('Método não implementado.');
171
+ }
172
+ visitarDeclaracaoTente(declaracao) {
173
+ throw new Error('Método não implementado.');
174
+ }
175
+ visitarDeclaracaoEnquanto(declaracao) {
176
+ throw new Error('Método não implementado.');
177
+ }
178
+ visitarDeclaracaoImportar(declaracao) {
179
+ throw new Error('Método não implementado.');
180
+ }
181
+ async avaliarArgumentosEscreva(argumentos) {
182
+ let formatoTexto = '';
183
+ for (const argumento of argumentos) {
184
+ const resultadoAvaliacao = await this.avaliar(argumento);
185
+ let valor = (resultadoAvaliacao === null || resultadoAvaliacao === void 0 ? void 0 : resultadoAvaliacao.hasOwnProperty('valor')) ? resultadoAvaliacao.valor : resultadoAvaliacao;
186
+ formatoTexto += `${this.paraTexto(valor)} `;
187
+ }
188
+ return formatoTexto;
189
+ }
190
+ /**
191
+ * Execução de uma escrita na saída configurada, que pode ser `console` (padrão) ou
192
+ * alguma função para escrever numa página Web.
193
+ * @param declaracao A declaração.
194
+ * @returns Sempre nulo, por convenção de visita.
195
+ */
196
+ async visitarDeclaracaoEscreva(declaracao) {
197
+ try {
198
+ const formatoTexto = await this.avaliarArgumentosEscreva(declaracao.argumentos);
199
+ this.funcaoDeRetorno(formatoTexto);
200
+ return null;
201
+ }
202
+ catch (erro) {
203
+ this.erros.push({
204
+ erroInterno: erro,
205
+ linha: declaracao.linha,
206
+ hashArquivo: declaracao.hashArquivo,
207
+ });
208
+ }
209
+ }
210
+ visitarExpressaoEscrevaMesmaLinha(declaracao) {
211
+ throw new Error('Método não implementado.');
212
+ }
213
+ visitarExpressaoBloco(declaracao) {
214
+ throw new Error('Método não implementado.');
215
+ }
216
+ async avaliacaoDeclaracaoVar(declaracao) {
217
+ let valorOuOutraVariavel = null;
218
+ if (declaracao.inicializador !== null) {
219
+ valorOuOutraVariavel = await this.avaliar(declaracao.inicializador);
220
+ }
221
+ let valorFinal = null;
222
+ if (valorOuOutraVariavel !== null && valorOuOutraVariavel !== undefined) {
223
+ valorFinal = valorOuOutraVariavel.hasOwnProperty('valor')
224
+ ? valorOuOutraVariavel.valor
225
+ : valorOuOutraVariavel;
226
+ }
227
+ return valorFinal;
228
+ }
229
+ /**
230
+ * Executa expressão de definição de variável.
231
+ * @param declaracao A declaração Var
232
+ * @returns Sempre retorna nulo.
233
+ */
234
+ async visitarDeclaracaoVar(declaracao) {
235
+ const valorFinal = await this.avaliacaoDeclaracaoVar(declaracao);
236
+ let subtipo;
237
+ if (declaracao.tipo !== undefined) {
238
+ subtipo = declaracao.tipo;
239
+ }
240
+ this.pilhaEscoposExecucao.definirVariavel(declaracao.simbolo.lexema, valorFinal, subtipo);
241
+ return null;
242
+ }
243
+ visitarDeclaracaoConst(declaracao) {
244
+ throw new Error('Método não implementado.');
245
+ }
246
+ visitarExpressaoContinua(declaracao) {
247
+ throw new Error('Método não implementado.');
248
+ }
249
+ visitarExpressaoSustar(declaracao) {
250
+ throw new Error('Método não implementado.');
251
+ }
252
+ async visitarExpressaoRetornar(declaracao) {
253
+ let valor = null;
254
+ if (declaracao.valor != null)
255
+ valor = await this.avaliar(declaracao.valor);
256
+ return new quebras_1.RetornoQuebra(valor);
257
+ }
258
+ visitarExpressaoDeleguaFuncao(expressao) {
259
+ throw new Error('Método não implementado.');
260
+ }
261
+ visitarExpressaoAtribuicaoSobrescrita(expressao) {
262
+ throw new Error('Método não implementado.');
263
+ }
264
+ visitarExpressaoAcessoIndiceVariavel(expressao) {
265
+ throw new Error('Método não implementado.');
266
+ }
267
+ visitarExpressaoDefinirValor(expressao) {
268
+ throw new Error('Método não implementado.');
269
+ }
270
+ visitarDeclaracaoDefinicaoFuncao(declaracao) {
271
+ throw new Error('Método não implementado.');
272
+ }
273
+ visitarDeclaracaoClasse(declaracao) {
274
+ throw new Error('Método não implementado.');
275
+ }
276
+ visitarExpressaoAcessoMetodo(expressao) {
277
+ throw new Error('Método não implementado.');
278
+ }
279
+ visitarExpressaoIsto(expressao) {
280
+ throw new Error('Método não implementado.');
281
+ }
282
+ visitarExpressaoDicionario(expressao) {
283
+ throw new Error('Método não implementado.');
284
+ }
285
+ visitarExpressaoVetor(expressao) {
286
+ throw new Error('Método não implementado.');
287
+ }
288
+ visitarExpressaoSuper(expressao) {
289
+ throw new Error('Método não implementado.');
290
+ }
291
+ paraTexto(objeto) {
292
+ if (objeto === null || objeto === undefined)
293
+ return 'nulo';
294
+ if (typeof objeto === 'boolean') {
295
+ return objeto ? 'verdadeiro' : 'falso';
296
+ }
297
+ if (objeto instanceof Date) {
298
+ const formato = Intl.DateTimeFormat('pt', {
299
+ dateStyle: 'full',
300
+ timeStyle: 'full',
301
+ });
302
+ return formato.format(objeto);
303
+ }
304
+ if (Array.isArray(objeto))
305
+ return objeto;
306
+ if (objeto.valor instanceof estruturas_1.ObjetoPadrao)
307
+ return objeto.valor.paraTexto();
308
+ if (typeof objeto === 'object')
309
+ return JSON.stringify(objeto);
310
+ return objeto.toString();
311
+ }
312
+ /**
313
+ * Efetivamente executa uma declaração.
314
+ * @param declaracao A declaração a ser executada.
315
+ * @param mostrarResultado Se resultado deve ser mostrado ou não. Normalmente usado
316
+ * pelo modo LAIR.
317
+ */
318
+ async executar(declaracao, mostrarResultado = false) {
319
+ const resultado = await declaracao.aceitar(this);
320
+ if (mostrarResultado) {
321
+ this.funcaoDeRetorno(this.paraTexto(resultado));
322
+ }
323
+ if (resultado || typeof resultado === 'boolean') {
324
+ this.resultadoInterpretador.push(this.paraTexto(resultado));
325
+ }
326
+ return resultado;
327
+ }
328
+ /**
329
+ * Executa o último escopo empilhado no topo na pilha de escopos do interpretador.
330
+ * Esse método pega exceções, mas apenas as devolve.
331
+ *
332
+ * O tratamento das exceções é feito de acordo com o bloco chamador.
333
+ * Por exemplo, em `tente ... pegue ... finalmente`, a exceção é capturada e tratada.
334
+ * Em outros blocos, pode ser desejável ter o erro em tela.
335
+ * @param manterAmbiente Se verdadeiro, ambiente do topo da pilha de escopo é copiado para o ambiente imediatamente abaixo.
336
+ * @returns O resultado da execução do escopo, se houver.
337
+ */
338
+ async executarUltimoEscopo(manterAmbiente = false) {
339
+ const ultimoEscopo = this.pilhaEscoposExecucao.topoDaPilha();
340
+ try {
341
+ let retornoExecucao;
342
+ for (; !(retornoExecucao instanceof quebras_1.Quebra) && ultimoEscopo.declaracaoAtual < ultimoEscopo.declaracoes.length; ultimoEscopo.declaracaoAtual++) {
343
+ retornoExecucao = await this.executar(ultimoEscopo.declaracoes[ultimoEscopo.declaracaoAtual]);
344
+ }
345
+ return retornoExecucao;
346
+ }
347
+ catch (erro) {
348
+ const declaracaoAtual = ultimoEscopo.declaracoes[ultimoEscopo.declaracaoAtual];
349
+ this.erros.push({
350
+ erroInterno: erro,
351
+ linha: declaracaoAtual.linha,
352
+ hashArquivo: declaracaoAtual.hashArquivo,
353
+ });
354
+ return Promise.reject(erro);
355
+ }
356
+ finally {
357
+ this.pilhaEscoposExecucao.removerUltimo();
358
+ if (manterAmbiente) {
359
+ const escopoAnterior = this.pilhaEscoposExecucao.topoDaPilha();
360
+ escopoAnterior.ambiente.valores = Object.assign(escopoAnterior.ambiente.valores, ultimoEscopo.ambiente.valores);
361
+ }
362
+ }
363
+ }
364
+ async interpretar(declaracoes, manterAmbiente) {
365
+ this.erros = [];
366
+ const escopoExecucao = {
367
+ declaracoes: declaracoes,
368
+ declaracaoAtual: 0,
369
+ ambiente: new espaco_variaveis_1.EspacoVariaveis(),
370
+ finalizado: false,
371
+ tipo: 'outro',
372
+ emLacoRepeticao: false,
373
+ };
374
+ this.pilhaEscoposExecucao.empilhar(escopoExecucao);
375
+ try {
376
+ const retornoOuErro = await this.executarUltimoEscopo(manterAmbiente);
377
+ if (retornoOuErro instanceof excecoes_1.ErroEmTempoDeExecucao) {
378
+ this.erros.push(retornoOuErro);
379
+ }
380
+ }
381
+ catch (erro) {
382
+ this.erros.push({
383
+ erroInterno: erro,
384
+ linha: -1,
385
+ hashArquivo: -1,
386
+ });
387
+ }
388
+ finally {
389
+ const retorno = {
390
+ erros: this.erros,
391
+ resultado: this.resultadoInterpretador,
392
+ };
393
+ this.resultadoInterpretador = [];
394
+ return retorno;
395
+ }
396
+ }
397
+ }
398
+ exports.InterpretadorBirl = InterpretadorBirl;
399
+ //# sourceMappingURL=interpretador-birl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpretador-birl.js","sourceRoot":"","sources":["../../../../../fontes/interpretador/dialetos/birl/interpretador-birl.ts"],"names":[],"mappings":"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"}
@@ -6,3 +6,4 @@ export * from './portugol-studio/interpretador-portugol-studio';
6
6
  export * from './portugol-studio/interpretador-portugol-studio-com-depuracao';
7
7
  export * from './visualg/interpretador-visualg';
8
8
  export * from './visualg/interpretador-visualg-com-depuracao';
9
+ export * from './birl/interpretador-birl';
@@ -22,4 +22,5 @@ __exportStar(require("./portugol-studio/interpretador-portugol-studio"), exports
22
22
  __exportStar(require("./portugol-studio/interpretador-portugol-studio-com-depuracao"), exports);
23
23
  __exportStar(require("./visualg/interpretador-visualg"), exports);
24
24
  __exportStar(require("./visualg/interpretador-visualg-com-depuracao"), exports);
25
+ __exportStar(require("./birl/interpretador-birl"), exports);
25
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../fontes/interpretador/dialetos/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,gEAA8C;AAC9C,8EAA4D;AAC5D,4EAA0D;AAC1D,kFAAgE;AAChE,gGAA8E;AAC9E,kEAAgD;AAChD,gFAA8D"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../fontes/interpretador/dialetos/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,gEAA8C;AAC9C,8EAA4D;AAC5D,4EAA0D;AAC1D,kFAAgE;AAChE,gGAA8E;AAC9E,kEAAgD;AAChD,gFAA8D;AAC9D,4DAAyC"}
@@ -1,4 +1,5 @@
1
1
  import { Binario, Logico } from "../../../construtos";
2
+ import { Para } from "../../../declaracoes";
2
3
  import { VisitanteComumInterface } from "../../../interfaces";
3
4
  /**
4
5
  * Método de visita de expressão binária.
@@ -8,3 +9,4 @@ import { VisitanteComumInterface } from "../../../interfaces";
8
9
  */
9
10
  export declare function visitarExpressaoBinaria(interpretador: VisitanteComumInterface, expressao: Binario | any): Promise<any>;
10
11
  export declare function visitarExpressaoLogica(interpretador: VisitanteComumInterface, expressao: Logico): Promise<any>;
12
+ export declare function resolverIncrementoPara(interpretador: VisitanteComumInterface, declaracao: Para): Promise<any>;
@@ -3,7 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.visitarExpressaoLogica = exports.visitarExpressaoBinaria = void 0;
6
+ exports.resolverIncrementoPara = exports.visitarExpressaoLogica = exports.visitarExpressaoBinaria = void 0;
7
+ const construtos_1 = require("../../../construtos");
8
+ const lexador_1 = require("../../../lexador");
7
9
  const inferenciador_1 = require("../../inferenciador");
8
10
  const visualg_1 = __importDefault(require("../../../tipos-de-simbolos/visualg"));
9
11
  const excecoes_1 = require("../../../excecoes");
@@ -142,4 +144,35 @@ async function visitarExpressaoLogica(interpretador, expressao) {
142
144
  return await avaliar(interpretador, expressao.direita);
143
145
  }
144
146
  exports.visitarExpressaoLogica = visitarExpressaoLogica;
147
+ /* Isso existe porque o laço `para` do VisuAlg pode ter o passo positivo ou negativo
148
+ * dependendo dos operandos de início e fim, que só são possíveis de determinar
149
+ * em tempo de execução.
150
+ * Quando um dos operandos é uma variável, tanto a condição do laço quanto o
151
+ * passo são considerados indefinidos aqui.
152
+ */
153
+ async function resolverIncrementoPara(interpretador, declaracao) {
154
+ if (declaracao.condicao.operador === undefined) {
155
+ const operandoEsquerdo = await avaliar(interpretador, declaracao.condicao.esquerda);
156
+ const operandoDireito = await avaliar(interpretador, declaracao.condicao.direita);
157
+ const valorAtualEsquerdo = operandoEsquerdo.hasOwnProperty('valor') ?
158
+ operandoEsquerdo.valor :
159
+ operandoEsquerdo;
160
+ const valorAtualDireito = operandoDireito.hasOwnProperty('valor') ?
161
+ operandoDireito.valor :
162
+ operandoDireito;
163
+ if (valorAtualEsquerdo < valorAtualDireito) {
164
+ declaracao.condicao.operador = new lexador_1.Simbolo(visualg_1.default.MENOR_IGUAL, '', '', Number(declaracao.linha), declaracao.hashArquivo);
165
+ declaracao.incrementar.condicaoPara.operador = new lexador_1.Simbolo(visualg_1.default.MENOR, '', '', Number(declaracao.linha), declaracao.hashArquivo);
166
+ declaracao.incrementar.incremento.expressao.valor.direita =
167
+ new construtos_1.Literal(declaracao.hashArquivo, Number(declaracao.linha), 1);
168
+ }
169
+ else {
170
+ declaracao.condicao.operador = new lexador_1.Simbolo(visualg_1.default.MAIOR_IGUAL, '', '', Number(declaracao.linha), declaracao.hashArquivo);
171
+ declaracao.incrementar.condicaoPara.operador = new lexador_1.Simbolo(visualg_1.default.MAIOR, '', '', Number(declaracao.linha), declaracao.hashArquivo);
172
+ declaracao.incrementar.incremento.expressao.valor.direita =
173
+ new construtos_1.Unario(declaracao.hashArquivo, new lexador_1.Simbolo(visualg_1.default.SUBTRACAO, '-', undefined, declaracao.linha, declaracao.hashArquivo), new construtos_1.Literal(declaracao.hashArquivo, Number(declaracao.linha), 1), "ANTES");
174
+ }
175
+ }
176
+ }
177
+ exports.resolverIncrementoPara = resolverIncrementoPara;
145
178
  //# sourceMappingURL=comum.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"comum.js","sourceRoot":"","sources":["../../../../../fontes/interpretador/dialetos/visualg/comum.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"comum.js","sourceRoot":"","sources":["../../../../../fontes/interpretador/dialetos/visualg/comum.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Binario, Construto, FimPara, Logico } from '../../../construtos';
2
- import { EscrevaMesmaLinha, Escreva, Fazer, Leia, Const } from '../../../declaracoes';
2
+ import { EscrevaMesmaLinha, Escreva, Fazer, Leia, Const, Para } from '../../../declaracoes';
3
3
  import { InterpretadorComDepuracao } from '../../interpretador-com-depuracao';
4
4
  /**
5
5
  * Interpretador com depuração para o dialeto VisuAlg.
@@ -44,6 +44,7 @@ export declare class InterpretadorVisuAlgComDepuracao extends InterpretadorComDe
44
44
  * @returns Promise com o resultado da leitura.
45
45
  */
46
46
  visitarExpressaoLeia(expressao: Leia): Promise<any>;
47
+ visitarDeclaracaoPara(declaracao: Para): Promise<any>;
47
48
  visitarExpressaoBinaria(expressao: Binario | any): Promise<any>;
48
49
  visitarExpressaoLogica(expressao: Logico): Promise<any>;
49
50
  }
@@ -179,6 +179,50 @@ class InterpretadorVisuAlgComDepuracao extends interpretador_com_depuracao_1.Int
179
179
  await this.atribuirVariavel(argumento, valorLido);
180
180
  }
181
181
  }
182
+ async visitarDeclaracaoPara(declaracao) {
183
+ const corpoExecucao = declaracao.corpo;
184
+ if (declaracao.inicializador !== null && !declaracao.inicializada) {
185
+ await this.avaliar(declaracao.inicializador);
186
+ // O incremento vai ao final do bloco de escopo.
187
+ if (declaracao.incrementar !== null) {
188
+ await comum.resolverIncrementoPara(this, declaracao);
189
+ corpoExecucao.declaracoes.push(declaracao.incrementar);
190
+ }
191
+ }
192
+ declaracao.inicializada = true;
193
+ const escopoAtual = this.pilhaEscoposExecucao.topoDaPilha();
194
+ switch (this.comando) {
195
+ case "proximo":
196
+ if (declaracao.condicao !== null && this.eVerdadeiro(await this.avaliar(declaracao.condicao))) {
197
+ escopoAtual.emLacoRepeticao = true;
198
+ const resultadoBloco = this.executarBloco(corpoExecucao.declaracoes);
199
+ return resultadoBloco;
200
+ }
201
+ escopoAtual.emLacoRepeticao = false;
202
+ return null;
203
+ default:
204
+ let retornoExecucao;
205
+ while (!(retornoExecucao instanceof quebras_1.Quebra) && !this.pontoDeParadaAtivo) {
206
+ if (declaracao.condicao !== null && !this.eVerdadeiro(await this.avaliar(declaracao.condicao))) {
207
+ break;
208
+ }
209
+ try {
210
+ retornoExecucao = await this.executar(corpoExecucao);
211
+ if (retornoExecucao instanceof quebras_1.SustarQuebra) {
212
+ return null;
213
+ }
214
+ if (retornoExecucao instanceof quebras_1.ContinuarQuebra) {
215
+ retornoExecucao = null;
216
+ }
217
+ }
218
+ catch (erro) {
219
+ return Promise.reject(erro);
220
+ }
221
+ }
222
+ // escopoAtual.emLacoRepeticao = false;
223
+ return retornoExecucao;
224
+ }
225
+ }
182
226
  async visitarExpressaoBinaria(expressao) {
183
227
  return comum.visitarExpressaoBinaria(this, expressao);
184
228
  }
@@ -1 +1 @@
1
- {"version":3,"file":"interpretador-visualg-com-depuracao.js","sourceRoot":"","sources":["../../../../../fontes/interpretador/dialetos/visualg/interpretador-visualg-com-depuracao.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interpretador-visualg-com-depuracao.js","sourceRoot":"","sources":["../../../../../fontes/interpretador/dialetos/visualg/interpretador-visualg-com-depuracao.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Binario, Logico } from '../../../construtos';
2
- import { Const, Escreva, EscrevaMesmaLinha, Fazer, Leia } from '../../../declaracoes';
2
+ import { Const, Escreva, EscrevaMesmaLinha, Fazer, Leia, Para } from '../../../declaracoes';
3
3
  import { InterpretadorBase } from '../..';
4
4
  /**
5
5
  * O Interpretador VisuAlg possui algumas diferenças em relação ao
@@ -45,6 +45,7 @@ export declare class InterpretadorVisuAlg extends InterpretadorBase {
45
45
  * @returns Promise com o resultado da leitura.
46
46
  */
47
47
  visitarExpressaoLeia(expressao: Leia): Promise<any>;
48
+ visitarDeclaracaoPara(declaracao: Para): Promise<any>;
48
49
  visitarExpressaoBinaria(expressao: Binario | any): Promise<any>;
49
50
  visitarExpressaoLogica(expressao: Logico): Promise<any>;
50
51
  }