@designliquido/delegua 0.24.0 → 0.24.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 (71) hide show
  1. package/README.md +4 -4
  2. package/bin/package.json +1 -1
  3. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.js.map +1 -1
  4. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-mapler.js +1 -1
  5. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-mapler.js.map +1 -1
  6. package/fontes/avaliador-sintatico/dialetos/index.d.ts +1 -1
  7. package/fontes/avaliador-sintatico/dialetos/index.js +1 -1
  8. package/fontes/avaliador-sintatico/dialetos/index.js.map +1 -1
  9. package/fontes/avaliador-sintatico/dialetos/potigol/avaliador-sintatico-potigol.js +1 -1
  10. package/fontes/avaliador-sintatico/dialetos/potigol/avaliador-sintatico-potigol.js.map +1 -1
  11. package/fontes/avaliador-sintatico/dialetos/{avaliador-sintatico-visualg.d.ts → visualg/avaliador-sintatico-visualg.d.ts} +5 -5
  12. package/fontes/avaliador-sintatico/dialetos/{avaliador-sintatico-visualg.js → visualg/avaliador-sintatico-visualg.js} +13 -8
  13. package/fontes/avaliador-sintatico/dialetos/visualg/avaliador-sintatico-visualg.js.map +1 -0
  14. package/fontes/avaliador-sintatico/dialetos/visualg/parametro-visualg.d.ts +7 -0
  15. package/fontes/avaliador-sintatico/dialetos/visualg/parametro-visualg.js +3 -0
  16. package/fontes/avaliador-sintatico/dialetos/visualg/parametro-visualg.js.map +1 -0
  17. package/fontes/bibliotecas/biblioteca-global.js +5 -4
  18. package/fontes/bibliotecas/biblioteca-global.js.map +1 -1
  19. package/fontes/bibliotecas/dialetos/visualg/caracteres.js +10 -5
  20. package/fontes/bibliotecas/dialetos/visualg/caracteres.js.map +1 -1
  21. package/fontes/bibliotecas/dialetos/visualg/numerica.js +7 -3
  22. package/fontes/bibliotecas/dialetos/visualg/numerica.js.map +1 -1
  23. package/fontes/declaracoes/var.d.ts +1 -0
  24. package/fontes/declaracoes/var.js +1 -0
  25. package/fontes/declaracoes/var.js.map +1 -1
  26. package/fontes/estruturas/chamavel.d.ts +2 -1
  27. package/fontes/estruturas/chamavel.js.map +1 -1
  28. package/fontes/estruturas/delegua-funcao.d.ts +2 -1
  29. package/fontes/estruturas/delegua-funcao.js +25 -10
  30. package/fontes/estruturas/delegua-funcao.js.map +1 -1
  31. package/fontes/interfaces/dialeto/interpretador-birl-interface.d.ts +11 -0
  32. package/fontes/interfaces/dialeto/interpretador-birl-interface.js +3 -0
  33. package/fontes/interfaces/dialeto/interpretador-birl-interface.js.map +1 -0
  34. package/fontes/interfaces/interpretador-interface-birl.d.ts +22 -0
  35. package/fontes/interfaces/interpretador-interface-birl.js +3 -0
  36. package/fontes/interfaces/interpretador-interface-birl.js.map +1 -0
  37. package/fontes/interfaces/interpretador-interface.d.ts +4 -1
  38. package/fontes/interfaces/parametro-interface.d.ts +1 -0
  39. package/fontes/interfaces/variavel-interface.d.ts +1 -0
  40. package/fontes/interpretador/argumento-interface.d.ts +4 -0
  41. package/fontes/interpretador/argumento-interface.js +3 -0
  42. package/fontes/interpretador/argumento-interface.js.map +1 -0
  43. package/fontes/interpretador/dialetos/birl/comum.d.ts +16 -3
  44. package/fontes/interpretador/dialetos/birl/comum.js +206 -1
  45. package/fontes/interpretador/dialetos/birl/comum.js.map +1 -1
  46. package/fontes/interpretador/dialetos/birl/interpretador-birl-com-depuracao.d.ts +26 -0
  47. package/fontes/interpretador/dialetos/birl/interpretador-birl-com-depuracao.js +68 -0
  48. package/fontes/interpretador/dialetos/birl/interpretador-birl-com-depuracao.js.map +1 -0
  49. package/fontes/interpretador/dialetos/birl/interpretador-birl.d.ts +25 -39
  50. package/fontes/interpretador/dialetos/birl/interpretador-birl.js +42 -235
  51. package/fontes/interpretador/dialetos/birl/interpretador-birl.js.map +1 -1
  52. package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts +4 -4
  53. package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +13 -6
  54. package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.js.map +1 -1
  55. package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts +6 -6
  56. package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js +1 -1
  57. package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js.map +1 -1
  58. package/fontes/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts +9 -9
  59. package/fontes/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js +33 -33
  60. package/fontes/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js.map +1 -1
  61. package/fontes/interpretador/interpretador-base.d.ts +2 -2
  62. package/fontes/interpretador/interpretador-base.js +10 -3
  63. package/fontes/interpretador/interpretador-base.js.map +1 -1
  64. package/fontes/interpretador/interpretador-com-depuracao.d.ts +1 -1
  65. package/fontes/interpretador/interpretador-com-depuracao.js.map +1 -1
  66. package/fontes/interpretador/pilha-escopos-execucao.js +3 -9
  67. package/fontes/interpretador/pilha-escopos-execucao.js.map +1 -1
  68. package/fontes/lexador/dialetos/lexador-birl.js +3 -2
  69. package/fontes/lexador/dialetos/lexador-birl.js.map +1 -1
  70. package/package.json +1 -1
  71. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.js.map +0 -1
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.atribuirVariavel = void 0;
3
+ exports.interpretar = exports.visitarDeclaracaoPara = exports.visitarExpressaoLiteral = exports.visitarExpressaoLeia = exports.substituirValor = exports.verificaTipoDaInterpolação = exports.resolveQuantidadeDeInterpolacoes = exports.avaliarArgumentosEscreva = exports.atribuirVariavel = void 0;
4
4
  const construtos_1 = require("../../../construtos");
5
+ const espaco_variaveis_1 = require("../../../espaco-variaveis");
6
+ const excecoes_1 = require("../../../excecoes");
7
+ const quebras_1 = require("../../../quebras");
5
8
  function converteTipoOuEstouraError(valor, tipo) {
6
9
  try {
7
10
  switch (tipo) {
@@ -63,4 +66,206 @@ async function atribuirVariavel(interpretador, expressao, valor, tipo) {
63
66
  }
64
67
  }
65
68
  exports.atribuirVariavel = atribuirVariavel;
69
+ async function avaliarArgumentosEscreva(interpretador, argumentos) {
70
+ let formatoTexto = '';
71
+ let quantidadeInterpolacoes;
72
+ if (argumentos.length < 1) {
73
+ throw new Error('Escreva precisa de pelo menos um argumento.');
74
+ }
75
+ if (typeof argumentos[0].valor !== 'string') {
76
+ throw new Error('O primeiro argumento de Escreva precisa ser uma string.');
77
+ }
78
+ quantidadeInterpolacoes = await interpretador.resolveQuantidadeDeInterpolacoes(argumentos[0]);
79
+ const resultadoAvaliacaoLiteral = await interpretador.avaliar(argumentos[0]);
80
+ if (quantidadeInterpolacoes === null) {
81
+ formatoTexto = (resultadoAvaliacaoLiteral === null || resultadoAvaliacaoLiteral === void 0 ? void 0 : resultadoAvaliacaoLiteral.hasOwnProperty('valor'))
82
+ ? resultadoAvaliacaoLiteral.valor
83
+ : resultadoAvaliacaoLiteral;
84
+ return formatoTexto;
85
+ }
86
+ if (!(argumentos.length - 1 === quantidadeInterpolacoes.length)) {
87
+ throw new Error('Quantidade de argumentos não bate com quantidade de interpolacoes.');
88
+ }
89
+ formatoTexto = resultadoAvaliacaoLiteral;
90
+ for (let i = 0; i < quantidadeInterpolacoes.length; i++) {
91
+ const dados = {
92
+ tipo: quantidadeInterpolacoes[i].replace('%', ''),
93
+ valor: await interpretador.avaliar(argumentos[i + 1]),
94
+ };
95
+ if (interpretador.verificaTipoDaInterpolação(dados)) {
96
+ formatoTexto = await interpretador.substituirValor(formatoTexto, dados.valor, dados.tipo);
97
+ }
98
+ }
99
+ return formatoTexto.trimEnd();
100
+ }
101
+ exports.avaliarArgumentosEscreva = avaliarArgumentosEscreva;
102
+ async function resolveQuantidadeDeInterpolacoes(texto) {
103
+ const stringOriginal = texto.valor;
104
+ const regex = /%[a-zA-Z]/g;
105
+ const matches = stringOriginal.match(regex);
106
+ return matches;
107
+ }
108
+ exports.resolveQuantidadeDeInterpolacoes = resolveQuantidadeDeInterpolacoes;
109
+ async function verificaTipoDaInterpolação(dados) {
110
+ switch (dados.tipo) {
111
+ case 'd':
112
+ case 'i':
113
+ case 'u':
114
+ const valor = dados.valor.hasOwnProperty('valor') ? dados.valor.valor : dados.valor;
115
+ if (typeof valor !== 'number') {
116
+ throw new Error('O valor interpolado não é um número.');
117
+ }
118
+ return true;
119
+ case 'c':
120
+ case 's':
121
+ const valorString = dados.valor.hasOwnProperty('valor') ? dados.valor.valor : dados.valor;
122
+ if (typeof valorString !== 'string') {
123
+ throw new Error('O valor interpolado não é um caractere.');
124
+ }
125
+ return true;
126
+ default:
127
+ throw new Error('Tipo de interpolação não suportado.');
128
+ }
129
+ }
130
+ exports.verificaTipoDaInterpolação = verificaTipoDaInterpolação;
131
+ async function substituirValor(stringOriginal, novoValor, simboloTipo) {
132
+ let substituida = false;
133
+ let resultado = '';
134
+ for (let i = 0; i < stringOriginal.length; i++) {
135
+ if (stringOriginal[i] === '%' && stringOriginal[i + 1] === simboloTipo && !substituida) {
136
+ switch (simboloTipo) {
137
+ case 'd':
138
+ case 'i':
139
+ case 'u':
140
+ case 'f':
141
+ case 'F':
142
+ case 'e':
143
+ case 'E':
144
+ case 'g':
145
+ case 'G':
146
+ case 'x':
147
+ case 'X':
148
+ case 'o':
149
+ case 'c':
150
+ case 's':
151
+ case 'p':
152
+ resultado += novoValor.hasOwnProperty('valor') ? novoValor.valor : novoValor;
153
+ break;
154
+ default:
155
+ resultado += stringOriginal[i];
156
+ break;
157
+ }
158
+ substituida = true;
159
+ i++;
160
+ }
161
+ else {
162
+ resultado += stringOriginal[i];
163
+ }
164
+ }
165
+ return resultado;
166
+ }
167
+ exports.substituirValor = substituirValor;
168
+ async function visitarExpressaoLeia(interpretador, expressao) {
169
+ // const mensagem = expressao.argumentos && expressao.argumentos[0] ? expressao.argumentos[0].valor : '> ';
170
+ /**
171
+ * Em Birl não se usa mensagem junto com o prompt, normalmente se usa um Escreva antes.
172
+ */
173
+ const mensagem = '> ';
174
+ const promessaLeitura = () => new Promise((resolucao) => interpretador.interfaceEntradaSaida.question(mensagem, (resposta) => {
175
+ resolucao(resposta);
176
+ }));
177
+ const valorLido = await promessaLeitura();
178
+ await atribuirVariavel(interpretador, expressao.argumentos[0], valorLido, expressao.argumentos[1].valor);
179
+ return;
180
+ }
181
+ exports.visitarExpressaoLeia = visitarExpressaoLeia;
182
+ async function visitarExpressaoLiteral(expressao) {
183
+ // TODO(Ítalo): Essa lógica não me parece correta.
184
+ // Além disso, o `return` deveria ser com `Promise.resolve`.
185
+ /* if (expressao.valor === tiposDeSimbolos.ADICAO) {
186
+ return 1;
187
+ }
188
+
189
+ if (expressao.valor === tiposDeSimbolos.SUBTRACAO) {
190
+ return -1;
191
+ } */
192
+ return Promise.resolve(expressao.valor);
193
+ }
194
+ exports.visitarExpressaoLiteral = visitarExpressaoLiteral;
195
+ async function visitarDeclaracaoPara(interpretador, declaracao) {
196
+ if (declaracao.inicializador !== null) {
197
+ if (declaracao.inicializador instanceof Array) {
198
+ if (declaracao.inicializador[0] instanceof construtos_1.Variavel) {
199
+ const valor = await interpretador.avaliar(declaracao.inicializador[1]);
200
+ interpretador.pilhaEscoposExecucao.atribuirVariavel(declaracao.inicializador[0].simbolo, valor);
201
+ }
202
+ }
203
+ else {
204
+ await interpretador.avaliar(declaracao.inicializador);
205
+ }
206
+ }
207
+ let retornoExecucao;
208
+ while (!(retornoExecucao instanceof quebras_1.Quebra)) {
209
+ if (declaracao.condicao !== null &&
210
+ !interpretador.eVerdadeiro(await interpretador.avaliar(declaracao.condicao))) {
211
+ break;
212
+ }
213
+ try {
214
+ retornoExecucao = await interpretador.executar(declaracao.corpo, false);
215
+ if (retornoExecucao instanceof quebras_1.SustarQuebra) {
216
+ return null;
217
+ }
218
+ if (retornoExecucao instanceof quebras_1.ContinuarQuebra) {
219
+ retornoExecucao = null;
220
+ }
221
+ }
222
+ catch (erro) {
223
+ interpretador.erros.push({
224
+ erroInterno: erro,
225
+ linha: declaracao.linha,
226
+ hashArquivo: declaracao.hashArquivo,
227
+ });
228
+ return Promise.reject(erro);
229
+ }
230
+ if (declaracao.incrementar !== null) {
231
+ await interpretador.avaliar(declaracao.incrementar);
232
+ }
233
+ }
234
+ return retornoExecucao;
235
+ }
236
+ exports.visitarDeclaracaoPara = visitarDeclaracaoPara;
237
+ async function interpretar(interpretador, declaracoes, manterAmbiente) {
238
+ interpretador.erros = [];
239
+ const escopoExecucao = {
240
+ declaracoes: declaracoes,
241
+ declaracaoAtual: 0,
242
+ ambiente: new espaco_variaveis_1.EspacoVariaveis(),
243
+ finalizado: false,
244
+ tipo: 'outro',
245
+ emLacoRepeticao: false,
246
+ };
247
+ interpretador.pilhaEscoposExecucao.empilhar(escopoExecucao);
248
+ try {
249
+ const retornoOuErro = await interpretador.executarUltimoEscopo(manterAmbiente);
250
+ if (retornoOuErro instanceof excecoes_1.ErroEmTempoDeExecucao) {
251
+ interpretador.erros.push(retornoOuErro);
252
+ }
253
+ }
254
+ catch (erro) {
255
+ interpretador.erros.push({
256
+ erroInterno: erro,
257
+ linha: -1,
258
+ hashArquivo: -1,
259
+ });
260
+ }
261
+ finally {
262
+ const retorno = {
263
+ erros: interpretador.erros,
264
+ resultado: interpretador.resultadoInterpretador,
265
+ };
266
+ interpretador.resultadoInterpretador = [];
267
+ return retorno;
268
+ }
269
+ }
270
+ exports.interpretar = interpretar;
66
271
  //# sourceMappingURL=comum.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"comum.js","sourceRoot":"","sources":["../../../../../fontes/interpretador/dialetos/birl/comum.ts"],"names":[],"mappings":";;;AAAA,oDAAgF;AAGhF,SAAS,0BAA0B,CAAC,KAAU,EAAE,IAAY;IACxD,IAAI;QACA,QAAQ,IAAI,EAAE;YACV,KAAK,OAAO;gBACR,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;YACzB,KAAK,QAAQ;gBACT,IAAK,KAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACjC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;iBAC5B;gBACD,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC3B,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;oBACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,iBAAiB,IAAI,GAAG,CAAC,CAAC;iBACzF;gBACD,OAAO,MAAM,CAAC;YAClB;gBACI,OAAO,KAAK,CAAC;SACpB;KACJ;IAAC,OAAO,GAAG,EAAE;QACV,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,iBAAiB,IAAI,GAAG,CAAC,CAAC;KACzF;AACL,CAAC;AAEM,KAAK,UAAU,gBAAgB,CAClC,aAAgC,EAChC,SAAoB,EACpB,KAAU,EACV,IAAY;IAEZ,KAAK,GAAG,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAEhD,IAAI,SAAS,YAAY,qBAAQ,EAAE;QAC/B,aAAa,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9E,OAAO;KACV;IAED,IAAI,SAAS,YAAY,iCAAoB,EAAE;QAC3C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC/B,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC;YAChD,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;SAC1C,CAAC,CAAC;QAEH,IAAI,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAE1E,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;YAC9B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;SACrB;QAED,IAAI,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;YAChC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;SACzB;QAED,IAAI,cAAc,CAAC;QACnB,QAAQ,OAAO,EAAE;YACb,KAAK,OAAO;gBACR,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/B,MAAM;YACV,KAAK,QAAQ;gBACT,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/B,MAAM;YACV,KAAK,QAAQ;gBACT,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;gBAChC,MAAM;YACV;gBACI,cAAc,GAAG,KAAK,CAAC;gBACvB,MAAM;SACb;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC;KACjC;AACL,CAAC;AAjDD,4CAiDC"}
1
+ {"version":3,"file":"comum.js","sourceRoot":"","sources":["../../../../../fontes/interpretador/dialetos/birl/comum.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { Construto, Literal } from '../../../construtos';
2
+ import { Declaracao, Leia, Para } from '../../../declaracoes';
3
+ import { InterpretadorBirlInterface } from '../../../interfaces/dialeto/interpretador-birl-interface';
4
+ import { RetornoInterpretador } from '../../../interfaces/retornos';
5
+ import { InterpretadorComDepuracao } from '../../interpretador-com-depuracao';
6
+ export declare class InterpretadorBirlComDepuracao extends InterpretadorComDepuracao implements InterpretadorBirlInterface {
7
+ constructor(diretorioBase: string, funcaoDeRetorno?: Function, funcaoDeRetornoMesmaLinha?: Function);
8
+ atribuirVariavel(interpretador: InterpretadorBirlInterface, expressao: Construto, valor: any, tipo: string): Promise<any>;
9
+ resolveQuantidadeDeInterpolacoes(expressao: Literal): Promise<RegExpMatchArray>;
10
+ verificaTipoDaInterpolação(dados: {
11
+ tipo: string;
12
+ valor: any;
13
+ }): Promise<boolean>;
14
+ substituirValor(stringOriginal: string, novoValor: any, simboloTipo: string): Promise<string>;
15
+ /**
16
+ * Execução da leitura de valores da entrada configurada no
17
+ * início da aplicação.
18
+ * @param expressao Expressão do tipo Leia
19
+ * @returns Promise com o resultado da leitura.
20
+ */
21
+ visitarExpressaoLeia(expressao: Leia): Promise<any>;
22
+ visitarExpressaoLiteral(expressao: Literal): Promise<any>;
23
+ visitarDeclaracaoPara(declaracao: Para): Promise<any>;
24
+ avaliarArgumentosEscreva(argumentos: Construto[]): Promise<string>;
25
+ interpretar(declaracoes: Declaracao[], manterAmbiente?: boolean): Promise<RetornoInterpretador>;
26
+ }
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.InterpretadorBirlComDepuracao = void 0;
27
+ const interpretador_com_depuracao_1 = require("../../interpretador-com-depuracao");
28
+ const comum = __importStar(require("./comum"));
29
+ class InterpretadorBirlComDepuracao extends interpretador_com_depuracao_1.InterpretadorComDepuracao {
30
+ constructor(diretorioBase, funcaoDeRetorno = null, funcaoDeRetornoMesmaLinha = null) {
31
+ super(diretorioBase, funcaoDeRetorno, funcaoDeRetornoMesmaLinha);
32
+ }
33
+ async atribuirVariavel(interpretador, expressao, valor, tipo) {
34
+ return comum.atribuirVariavel(interpretador, expressao, valor, tipo);
35
+ }
36
+ async resolveQuantidadeDeInterpolacoes(expressao) {
37
+ return comum.resolveQuantidadeDeInterpolacoes(expressao);
38
+ }
39
+ async verificaTipoDaInterpolação(dados) {
40
+ return comum.verificaTipoDaInterpolação(dados);
41
+ }
42
+ async substituirValor(stringOriginal, novoValor, simboloTipo) {
43
+ return comum.substituirValor(stringOriginal, novoValor, simboloTipo);
44
+ }
45
+ /**
46
+ * Execução da leitura de valores da entrada configurada no
47
+ * início da aplicação.
48
+ * @param expressao Expressão do tipo Leia
49
+ * @returns Promise com o resultado da leitura.
50
+ */
51
+ async visitarExpressaoLeia(expressao) {
52
+ await comum.visitarExpressaoLeia(this, expressao);
53
+ }
54
+ async visitarExpressaoLiteral(expressao) {
55
+ return comum.visitarExpressaoLiteral(expressao);
56
+ }
57
+ async visitarDeclaracaoPara(declaracao) {
58
+ return comum.visitarDeclaracaoPara(this, declaracao);
59
+ }
60
+ async avaliarArgumentosEscreva(argumentos) {
61
+ return comum.avaliarArgumentosEscreva(this, argumentos);
62
+ }
63
+ async interpretar(declaracoes, manterAmbiente) {
64
+ return comum.interpretar(this, declaracoes, manterAmbiente);
65
+ }
66
+ }
67
+ exports.InterpretadorBirlComDepuracao = InterpretadorBirlComDepuracao;
68
+ //# sourceMappingURL=interpretador-birl-com-depuracao.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpretador-birl-com-depuracao.js","sourceRoot":"","sources":["../../../../../fontes/interpretador/dialetos/birl/interpretador-birl-com-depuracao.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mFAA8E;AAC9E,+CAAiC;AAEjC,MAAa,6BAA8B,SAAQ,uDAAyB;IACxE,YAAY,aAAqB,EAAE,kBAA4B,IAAI,EAAE,4BAAsC,IAAI;QAC3G,KAAK,CAAC,aAAa,EAAE,eAAe,EAAE,yBAAyB,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,gBAAgB,CAClB,aAAyC,EACzC,SAAoB,EACpB,KAAU,EACV,IAAY;QAEZ,OAAO,KAAK,CAAC,gBAAgB,CAAC,aAAa,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,gCAAgC,CAAC,SAAkB;QACrD,OAAO,KAAK,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;IACD,KAAK,CAAC,0BAA0B,CAAC,KAAmC;QAChE,OAAO,KAAK,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IACD,KAAK,CAAC,eAAe,CAAC,cAAsB,EAAE,SAAc,EAAE,WAAmB;QAC7E,OAAO,KAAK,CAAC,eAAe,CAAC,cAAc,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IACzE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,oBAAoB,CAAC,SAAe;QACtC,MAAM,KAAK,CAAC,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,SAAkB;QAC5C,OAAO,KAAK,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,UAAgB;QACxC,OAAO,KAAK,CAAC,qBAAqB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,UAAuB;QAClD,OAAO,KAAK,CAAC,wBAAwB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,WAAyB,EAAE,cAAwB;QACjE,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;IAChE,CAAC;CACJ;AAjDD,sEAiDC"}
@@ -1,12 +1,14 @@
1
- import { Atribuir, Construto, FimPara, FormatacaoEscrita, Literal, Logico, Super, TipoDe, Unario, Variavel } from '../../../construtos';
2
- import { Bloco, Classe, Const, Continua, Declaracao, Enquanto, Escolha, Escreva, EscrevaMesmaLinha, Expressao, Fazer, FuncaoDeclaracao, Importar, Leia, Para, ParaCada, Retorna, Se, Tente, Var } from '../../../declaracoes';
1
+ import { Atribuir, Binario, Construto, FimPara, Literal, Logico, Super, TipoDe, Unario, Variavel } from '../../../construtos';
2
+ import { Bloco, Classe, Const, Continua, Declaracao, Enquanto, Escolha, Escreva, EscrevaMesmaLinha, Expressao, Fazer, FuncaoDeclaracao, Leia, Para, ParaCada, Retorna, Se, Tente, Var } from '../../../declaracoes';
3
3
  import { EspacoVariaveis } from '../../../espaco-variaveis';
4
- import { InterpretadorInterface, SimboloInterface, VariavelInterface } from '../../../interfaces';
4
+ import { SimboloInterface, VariavelInterface } from '../../../interfaces';
5
5
  import { ErroInterpretador } from '../../../interfaces/erros/erro-interpretador';
6
+ import { InterpretadorInterfaceBirl } from '../../../interfaces/interpretador-interface-birl';
6
7
  import { PilhaEscoposExecucaoInterface } from '../../../interfaces/pilha-escopos-execucao-interface';
7
8
  import { RetornoInterpretador } from '../../../interfaces/retornos';
8
9
  import { ContinuarQuebra, RetornoQuebra, SustarQuebra } from '../../../quebras';
9
- export declare class InterpretadorBirl implements InterpretadorInterface {
10
+ import { InterpretadorBase } from '../../interpretador-base';
11
+ export declare class InterpretadorBirl extends InterpretadorBase implements InterpretadorInterfaceBirl {
10
12
  diretorioBase: any;
11
13
  funcaoDeRetorno: Function;
12
14
  funcaoDeRetornoMesmaLinha: Function;
@@ -60,17 +62,17 @@ export declare class InterpretadorBirl implements InterpretadorInterface {
60
62
  * @returns Se ambos os operandos são números ou não.
61
63
  */
62
64
  protected verificarOperandosNumeros(operador: SimboloInterface, direita: VariavelInterface | any, esquerda: VariavelInterface | any): void;
63
- visitarExpressaoBinaria(expressao: any): Promise<any>;
65
+ visitarExpressaoBinaria(expressao: Binario): Promise<any>;
64
66
  /**
65
67
  * Executa uma chamada de função, método ou classe.
66
68
  * @param expressao A expressão chamada.
67
69
  * @returns O resultado da chamada.
68
70
  */
69
71
  visitarExpressaoDeChamada(expressao: any): Promise<any>;
70
- visitarDeclaracaoDeAtribuicao(expressao: Atribuir): void;
72
+ visitarDeclaracaoDeAtribuicao(expressao: Atribuir): Promise<void>;
71
73
  protected procurarVariavel(simbolo: SimboloInterface): any;
72
74
  visitarExpressaoDeVariavel(expressao: Variavel): any;
73
- visitarDeclaracaoDeExpressao(declaracao: Expressao): void;
75
+ visitarDeclaracaoDeExpressao(declaracao: Expressao): Promise<void>;
74
76
  /**
75
77
  * Execução da leitura de valores da entrada configurada no
76
78
  * início da aplicação.
@@ -78,24 +80,11 @@ export declare class InterpretadorBirl implements InterpretadorInterface {
78
80
  * @returns Promise com o resultado da leitura.
79
81
  */
80
82
  visitarExpressaoLeia(expressao: Leia): Promise<any>;
81
- /**
82
- * Busca variáveis interpoladas.
83
- * @param {texto} textoOriginal O texto original com as variáveis interpoladas.
84
- * @returns Uma lista de variáveis interpoladas.
85
- */
86
- private buscarVariaveisInterpolacao;
87
- /**
88
- * Retira a interpolação de um texto.
89
- * @param {texto} texto O texto
90
- * @param {any[]} variaveis A lista de variaveis interpoladas
91
- * @returns O texto com o valor das variaveis.
92
- */
93
- private retirarInterpolacao;
94
- visitarExpressaoLiteral(expressao: Literal): any;
83
+ visitarExpressaoLiteral(expressao: Literal): Promise<any>;
95
84
  visitarExpressaoLogica(expressao: Logico): Promise<any>;
96
85
  visitarDeclaracaoPara(declaracao: Para): Promise<any>;
97
86
  visitarDeclaracaoParaCada(declaracao: ParaCada): Promise<any>;
98
- protected eVerdadeiro(objeto: any): boolean;
87
+ eVerdadeiro(objeto: any): boolean;
99
88
  /**
100
89
  * Executa uma expressão Se, que tem uma condição, pode ter um bloco
101
90
  * Senão, e múltiplos blocos Senão-se.
@@ -103,20 +92,18 @@ export declare class InterpretadorBirl implements InterpretadorInterface {
103
92
  * @returns O resultado da avaliação do bloco cuja condição é verdadeira.
104
93
  */
105
94
  visitarDeclaracaoSe(declaracao: Se): Promise<any>;
106
- visitarExpressaoFimPara(declaracao: FimPara): void;
107
- visitarDeclaracaoFazer(declaracao: Fazer): void;
108
- visitarExpressaoFormatacaoEscrita(declaracao: FormatacaoEscrita): void;
109
- visitarDeclaracaoEscolha(declaracao: Escolha): void;
110
- visitarDeclaracaoTente(declaracao: Tente): void;
95
+ visitarExpressaoFimPara(declaracao: FimPara): Promise<void>;
96
+ visitarDeclaracaoFazer(declaracao: Fazer): Promise<void>;
97
+ visitarDeclaracaoEscolha(declaracao: Escolha): Promise<void>;
98
+ visitarDeclaracaoTente(declaracao: Tente): Promise<void>;
111
99
  visitarDeclaracaoEnquanto(declaracao: Enquanto): Promise<any>;
112
- visitarDeclaracaoImportar(declaracao: Importar): void;
113
- protected substituirValor(stringOriginal: string, novoValor: number | string | any, simboloTipo: string): Promise<string>;
114
- protected resolveQuantidadeDeInterpolacoes(texto: Literal): Promise<RegExpMatchArray>;
100
+ substituirValor(stringOriginal: string, novoValor: number | string | any, simboloTipo: string): Promise<string>;
101
+ resolveQuantidadeDeInterpolacoes(texto: Literal): Promise<RegExpMatchArray>;
115
102
  verificaTipoDaInterpolação(dados: {
116
103
  tipo: string;
117
104
  valor: any;
118
105
  }): Promise<boolean>;
119
- protected avaliarArgumentosEscreva(argumentos: Construto[]): Promise<string>;
106
+ avaliarArgumentosEscreva(argumentos: Construto[]): Promise<string>;
120
107
  /**
121
108
  * Execução de uma escrita na saída configurada, que pode ser `console` (padrão) ou
122
109
  * alguma função para escrever numa página Web.
@@ -124,7 +111,7 @@ export declare class InterpretadorBirl implements InterpretadorInterface {
124
111
  * @returns Sempre nulo, por convenção de visita.
125
112
  */
126
113
  visitarDeclaracaoEscreva(declaracao: Escreva): Promise<any>;
127
- visitarExpressaoEscrevaMesmaLinha(declaracao: EscrevaMesmaLinha): void;
114
+ visitarExpressaoEscrevaMesmaLinha(declaracao: EscrevaMesmaLinha): Promise<void>;
128
115
  visitarExpressaoBloco(declaracao: Bloco): Promise<any>;
129
116
  protected avaliacaoDeclaracaoVar(declaracao: Var): Promise<any>;
130
117
  /**
@@ -137,16 +124,15 @@ export declare class InterpretadorBirl implements InterpretadorInterface {
137
124
  visitarExpressaoContinua(declaracao?: Continua): ContinuarQuebra;
138
125
  visitarExpressaoSustar(declaracao?: any): SustarQuebra;
139
126
  visitarExpressaoRetornar(declaracao: Retorna): Promise<RetornoQuebra>;
140
- visitarExpressaoDeleguaFuncao(expressao: any): void;
141
127
  visitarExpressaoAtribuicaoPorIndice(expressao: any): Promise<any>;
142
- visitarExpressaoAcessoIndiceVariavel(expressao: any): void;
143
- visitarExpressaoDefinirValor(expressao: any): void;
128
+ visitarExpressaoAcessoIndiceVariavel(expressao: any): Promise<void>;
129
+ visitarExpressaoDefinirValor(expressao: any): Promise<void>;
144
130
  visitarDeclaracaoDefinicaoFuncao(declaracao: FuncaoDeclaracao): void;
145
- visitarDeclaracaoClasse(declaracao: Classe): void;
146
- visitarExpressaoAcessoMetodo(expressao: any): void;
131
+ visitarDeclaracaoClasse(declaracao: Classe): Promise<void>;
132
+ visitarExpressaoAcessoMetodo(expressao: any): Promise<void>;
147
133
  visitarExpressaoIsto(expressao: any): void;
148
- visitarExpressaoDicionario(expressao: any): void;
149
- visitarExpressaoVetor(expressao: any): void;
134
+ visitarExpressaoDicionario(expressao: any): Promise<void>;
135
+ visitarExpressaoVetor(expressao: any): Promise<void>;
150
136
  visitarExpressaoSuper(expressao: Super): void;
151
137
  paraTexto(objeto: any): any;
152
138
  /**