@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.
- package/README.md +4 -4
- package/bin/package.json +1 -1
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-mapler.js +1 -1
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-mapler.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/index.d.ts +1 -1
- package/fontes/avaliador-sintatico/dialetos/index.js +1 -1
- package/fontes/avaliador-sintatico/dialetos/index.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/potigol/avaliador-sintatico-potigol.js +1 -1
- package/fontes/avaliador-sintatico/dialetos/potigol/avaliador-sintatico-potigol.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/{avaliador-sintatico-visualg.d.ts → visualg/avaliador-sintatico-visualg.d.ts} +5 -5
- package/fontes/avaliador-sintatico/dialetos/{avaliador-sintatico-visualg.js → visualg/avaliador-sintatico-visualg.js} +13 -8
- package/fontes/avaliador-sintatico/dialetos/visualg/avaliador-sintatico-visualg.js.map +1 -0
- package/fontes/avaliador-sintatico/dialetos/visualg/parametro-visualg.d.ts +7 -0
- package/fontes/avaliador-sintatico/dialetos/visualg/parametro-visualg.js +3 -0
- package/fontes/avaliador-sintatico/dialetos/visualg/parametro-visualg.js.map +1 -0
- package/fontes/bibliotecas/biblioteca-global.js +5 -4
- package/fontes/bibliotecas/biblioteca-global.js.map +1 -1
- package/fontes/bibliotecas/dialetos/visualg/caracteres.js +10 -5
- package/fontes/bibliotecas/dialetos/visualg/caracteres.js.map +1 -1
- package/fontes/bibliotecas/dialetos/visualg/numerica.js +7 -3
- package/fontes/bibliotecas/dialetos/visualg/numerica.js.map +1 -1
- package/fontes/declaracoes/var.d.ts +1 -0
- package/fontes/declaracoes/var.js +1 -0
- package/fontes/declaracoes/var.js.map +1 -1
- package/fontes/estruturas/chamavel.d.ts +2 -1
- package/fontes/estruturas/chamavel.js.map +1 -1
- package/fontes/estruturas/delegua-funcao.d.ts +2 -1
- package/fontes/estruturas/delegua-funcao.js +25 -10
- package/fontes/estruturas/delegua-funcao.js.map +1 -1
- package/fontes/interfaces/dialeto/interpretador-birl-interface.d.ts +11 -0
- package/fontes/interfaces/dialeto/interpretador-birl-interface.js +3 -0
- package/fontes/interfaces/dialeto/interpretador-birl-interface.js.map +1 -0
- package/fontes/interfaces/interpretador-interface-birl.d.ts +22 -0
- package/fontes/interfaces/interpretador-interface-birl.js +3 -0
- package/fontes/interfaces/interpretador-interface-birl.js.map +1 -0
- package/fontes/interfaces/interpretador-interface.d.ts +4 -1
- package/fontes/interfaces/parametro-interface.d.ts +1 -0
- package/fontes/interfaces/variavel-interface.d.ts +1 -0
- package/fontes/interpretador/argumento-interface.d.ts +4 -0
- package/fontes/interpretador/argumento-interface.js +3 -0
- package/fontes/interpretador/argumento-interface.js.map +1 -0
- package/fontes/interpretador/dialetos/birl/comum.d.ts +16 -3
- package/fontes/interpretador/dialetos/birl/comum.js +206 -1
- package/fontes/interpretador/dialetos/birl/comum.js.map +1 -1
- package/fontes/interpretador/dialetos/birl/interpretador-birl-com-depuracao.d.ts +26 -0
- package/fontes/interpretador/dialetos/birl/interpretador-birl-com-depuracao.js +68 -0
- package/fontes/interpretador/dialetos/birl/interpretador-birl-com-depuracao.js.map +1 -0
- package/fontes/interpretador/dialetos/birl/interpretador-birl.d.ts +25 -39
- package/fontes/interpretador/dialetos/birl/interpretador-birl.js +42 -235
- package/fontes/interpretador/dialetos/birl/interpretador-birl.js.map +1 -1
- package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts +4 -4
- package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +13 -6
- package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.js.map +1 -1
- package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts +6 -6
- package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js +1 -1
- package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js.map +1 -1
- package/fontes/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts +9 -9
- package/fontes/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js +33 -33
- package/fontes/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js.map +1 -1
- package/fontes/interpretador/interpretador-base.d.ts +2 -2
- package/fontes/interpretador/interpretador-base.js +10 -3
- package/fontes/interpretador/interpretador-base.js.map +1 -1
- package/fontes/interpretador/interpretador-com-depuracao.d.ts +1 -1
- package/fontes/interpretador/interpretador-com-depuracao.js.map +1 -1
- package/fontes/interpretador/pilha-escopos-execucao.js +3 -9
- package/fontes/interpretador/pilha-escopos-execucao.js.map +1 -1
- package/fontes/lexador/dialetos/lexador-birl.js +3 -2
- package/fontes/lexador/dialetos/lexador-birl.js.map +1 -1
- package/package.json +1 -1
- 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,
|
|
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,
|
|
2
|
-
import { Bloco, Classe, Const, Continua, Declaracao, Enquanto, Escolha, Escreva, EscrevaMesmaLinha, Expressao, Fazer, FuncaoDeclaracao,
|
|
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 {
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
109
|
-
|
|
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
|
-
|
|
113
|
-
|
|
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
|
-
|
|
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
|
/**
|