@designliquido/delegua-node 0.22.7 → 0.24.0

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 (47) hide show
  1. package/README.md +1 -1
  2. package/bin/package.json +2 -2
  3. package/execucao.js +8 -8
  4. package/execucao.js.map +1 -1
  5. package/fontes/delegua.d.ts +11 -92
  6. package/fontes/delegua.js +24 -433
  7. package/fontes/delegua.js.map +1 -1
  8. package/fontes/depuracao/servidor-depuracao.d.ts +3 -3
  9. package/fontes/depuracao/servidor-depuracao.js +10 -10
  10. package/fontes/depuracao/servidor-depuracao.js.map +1 -1
  11. package/fontes/importador/importador-javascript.d.ts +14 -0
  12. package/fontes/importador/importador-javascript.js +60 -0
  13. package/fontes/importador/importador-javascript.js.map +1 -0
  14. package/fontes/importador/importador.d.ts +7 -6
  15. package/fontes/importador/importador.js +1 -8
  16. package/fontes/importador/importador.js.map +1 -1
  17. package/fontes/importador/retorno-importador.d.ts +3 -3
  18. package/fontes/interfaces/delegua-interface.d.ts +4 -22
  19. package/fontes/interfaces/importador-interface.d.ts +2 -2
  20. package/fontes/interfaces/nucleo-execucao-interface.d.ts +12 -0
  21. package/fontes/interfaces/nucleo-execucao-interface.js +3 -0
  22. package/fontes/interfaces/nucleo-execucao-interface.js.map +1 -0
  23. package/fontes/interpretador/dialetos/interpretador-birl-com-depuracao-importacao.d.ts +4 -3
  24. package/fontes/interpretador/dialetos/interpretador-birl-com-depuracao-importacao.js +1 -1
  25. package/fontes/interpretador/dialetos/interpretador-birl-com-depuracao-importacao.js.map +1 -1
  26. package/fontes/interpretador/dialetos/interpretador-mapler-com-depuracao-importacao.d.ts +4 -3
  27. package/fontes/interpretador/dialetos/interpretador-mapler-com-depuracao-importacao.js +1 -1
  28. package/fontes/interpretador/dialetos/interpretador-mapler-com-depuracao-importacao.js.map +1 -1
  29. package/fontes/interpretador/dialetos/interpretador-visualg-com-depuracao-importacao.d.ts +4 -3
  30. package/fontes/interpretador/dialetos/interpretador-visualg-com-depuracao-importacao.js +1 -1
  31. package/fontes/interpretador/dialetos/interpretador-visualg-com-depuracao-importacao.js.map +1 -1
  32. package/fontes/interpretador/interpretador-com-depuracao-importacao.d.ts +4 -3
  33. package/fontes/interpretador/interpretador-com-depuracao-importacao.js +1 -1
  34. package/fontes/interpretador/interpretador-com-depuracao-importacao.js.map +1 -1
  35. package/fontes/interpretador/interpretador.d.ts +4 -3
  36. package/fontes/interpretador/interpretador.js +1 -1
  37. package/fontes/interpretador/interpretador.js.map +1 -1
  38. package/fontes/nucleo-comum.d.ts +12 -0
  39. package/fontes/nucleo-comum.js +49 -0
  40. package/fontes/nucleo-comum.js.map +1 -0
  41. package/fontes/nucleo-execucao.d.ts +66 -0
  42. package/fontes/nucleo-execucao.js +309 -0
  43. package/fontes/nucleo-execucao.js.map +1 -0
  44. package/fontes/nucleo-traducao.d.ts +29 -0
  45. package/fontes/nucleo-traducao.js +108 -0
  46. package/fontes/nucleo-traducao.js.map +1 -0
  47. package/package.json +2 -2
@@ -0,0 +1,309 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.NucleoExecucao = void 0;
30
+ const sistemaArquivos = __importStar(require("fs"));
31
+ const caminho = __importStar(require("path"));
32
+ const readline = __importStar(require("readline"));
33
+ const chalk_1 = __importDefault(require("chalk"));
34
+ const json_colorizer_1 = __importDefault(require("json-colorizer"));
35
+ const importador_1 = require("./importador");
36
+ const depuracao_1 = require("./depuracao");
37
+ const formatadores_1 = require("./formatadores");
38
+ const lexador_json_1 = require("./lexador/lexador-json");
39
+ const avaliador_sintatico_1 = require("@designliquido/delegua/fontes/avaliador-sintatico");
40
+ const dialetos_1 = require("@designliquido/delegua/fontes/avaliador-sintatico/dialetos");
41
+ const dialetos_2 = require("@designliquido/delegua/fontes/interpretador/dialetos");
42
+ const lexador_1 = require("@designliquido/delegua/fontes/lexador");
43
+ const dialetos_3 = require("@designliquido/delegua/fontes/lexador/dialetos");
44
+ const interpretador_1 = require("./interpretador");
45
+ const interpretador_mapler_com_depuracao_importacao_1 = require("./interpretador/dialetos/interpretador-mapler-com-depuracao-importacao");
46
+ const interpretador_visualg_com_depuracao_importacao_1 = require("./interpretador/dialetos/interpretador-visualg-com-depuracao-importacao");
47
+ const interpretador_com_depuracao_importacao_1 = require("./interpretador/interpretador-com-depuracao-importacao");
48
+ const nucleo_comum_1 = require("./nucleo-comum");
49
+ class NucleoExecucao extends nucleo_comum_1.NucleoComum {
50
+ constructor(funcaoDeRetorno = null, funcaoDeRetornoMesmaLinha = null) {
51
+ super();
52
+ this.dialetos = {
53
+ birl: 'BIRL',
54
+ delegua: 'padrão',
55
+ egua: 'Égua',
56
+ mapler: 'Mapler',
57
+ pitugues: 'Pituguês',
58
+ 'portugol-studio': 'Portugol Studio',
59
+ visualg: 'VisuAlg',
60
+ };
61
+ this.arquivosAbertos = {};
62
+ this.conteudoArquivosAbertos = {};
63
+ this.funcaoDeRetorno = funcaoDeRetorno || console.log;
64
+ // `process.stdout.write.bind(process.stdout)` é necessário por causa de
65
+ // https://stackoverflow.com/questions/28874665/node-js-cannot-read-property-defaultencoding-of-undefined
66
+ this.funcaoDeRetornoMesmaLinha = funcaoDeRetornoMesmaLinha || process.stdout.write.bind(process.stdout);
67
+ }
68
+ configurarDialeto(dialeto = 'delegua', performance = false, depurador = false) {
69
+ this.dialeto = dialeto;
70
+ this.modoDepuracao = depurador;
71
+ switch (dialeto) {
72
+ case 'birl':
73
+ this.lexador = new dialetos_3.LexadorBirl();
74
+ this.avaliadorSintatico = new dialetos_1.AvaliadorSintaticoBirl();
75
+ this.importador = new importador_1.Importador(this.lexador, this.avaliadorSintatico, this.arquivosAbertos, this.conteudoArquivosAbertos, depurador);
76
+ this.interpretador = new dialetos_2.InterpretadorBirl(process.cwd(), this.funcaoDeRetorno, this.funcaoDeRetornoMesmaLinha);
77
+ break;
78
+ case 'egua':
79
+ if (depurador) {
80
+ throw new Error('Dialeto ' + dialeto + ' não suporta depuração.');
81
+ }
82
+ this.lexador = new dialetos_3.LexadorEguaClassico();
83
+ this.avaliadorSintatico = new dialetos_1.AvaliadorSintaticoEguaClassico();
84
+ this.importador = new importador_1.Importador(this.lexador, this.avaliadorSintatico, this.arquivosAbertos, this.conteudoArquivosAbertos, depurador);
85
+ this.interpretador = new dialetos_2.InterpretadorEguaClassico(process.cwd());
86
+ break;
87
+ case 'pitugues':
88
+ this.lexador = new dialetos_3.LexadorPitugues();
89
+ this.avaliadorSintatico = new dialetos_1.AvaliadorSintaticoPitugues();
90
+ this.importador = new importador_1.Importador(this.lexador, this.avaliadorSintatico, this.arquivosAbertos, this.conteudoArquivosAbertos, depurador);
91
+ this.interpretador = depurador
92
+ ? new interpretador_com_depuracao_importacao_1.InterpretadorComDepuracaoImportacao(this.importador, process.cwd(), this.funcaoDeRetorno, this.funcaoDeRetornoMesmaLinha)
93
+ : new interpretador_1.Interpretador(this.importador, process.cwd(), performance, this.funcaoDeRetorno, this.funcaoDeRetornoMesmaLinha);
94
+ break;
95
+ case 'mapler':
96
+ this.lexador = new dialetos_3.LexadorMapler();
97
+ this.avaliadorSintatico = new dialetos_1.AvaliadorSintaticoMapler();
98
+ this.importador = new importador_1.Importador(this.lexador, this.avaliadorSintatico, this.arquivosAbertos, this.conteudoArquivosAbertos, depurador);
99
+ this.interpretador = depurador
100
+ ? new interpretador_mapler_com_depuracao_importacao_1.InterpretadorMaplerComDepuracaoImportacao(this.importador, process.cwd(), this.funcaoDeRetorno, this.funcaoDeRetornoMesmaLinha)
101
+ : new dialetos_2.InterpretadorMapler(process.cwd(), false, this.funcaoDeRetorno, this.funcaoDeRetornoMesmaLinha);
102
+ break;
103
+ case 'portugol-ipt':
104
+ this.lexador = new dialetos_3.LexadorPortugolIpt();
105
+ this.avaliadorSintatico = new dialetos_1.AvaliadorSintaticoPortugolIpt();
106
+ this.importador = new importador_1.Importador(this.lexador, this.avaliadorSintatico, this.arquivosAbertos, this.conteudoArquivosAbertos, depurador);
107
+ this.interpretador = depurador
108
+ ? new dialetos_2.InterpretadorPortugolIpt(process.cwd(), this.funcaoDeRetornoMesmaLinha, this.funcaoDeRetornoMesmaLinha)
109
+ : new dialetos_2.InterpretadorPortugolIpt(process.cwd(), this.funcaoDeRetornoMesmaLinha, this.funcaoDeRetornoMesmaLinha);
110
+ break;
111
+ case 'portugol-studio':
112
+ this.lexador = new dialetos_3.LexadorPortugolStudio();
113
+ this.avaliadorSintatico = new dialetos_1.AvaliadorSintaticoPortugolStudio();
114
+ this.importador = new importador_1.Importador(this.lexador, this.avaliadorSintatico, this.arquivosAbertos, this.conteudoArquivosAbertos, depurador);
115
+ this.interpretador = depurador
116
+ ? new dialetos_2.InterpretadorPortugolStudioComDepuracao(process.cwd(), this.funcaoDeRetorno, this.funcaoDeRetornoMesmaLinha)
117
+ : new dialetos_2.InterpretadorPortugolStudio(process.cwd(), performance, this.funcaoDeRetorno);
118
+ break;
119
+ case 'visualg':
120
+ this.lexador = new dialetos_3.LexadorVisuAlg();
121
+ this.avaliadorSintatico = new dialetos_1.AvaliadorSintaticoVisuAlg();
122
+ this.importador = new importador_1.Importador(this.lexador, this.avaliadorSintatico, this.arquivosAbertos, this.conteudoArquivosAbertos, depurador);
123
+ this.interpretador = depurador
124
+ ? new interpretador_visualg_com_depuracao_importacao_1.InterpretadorVisuAlgComDepuracaoImportacao(this.importador, process.cwd(), this.funcaoDeRetorno, this.funcaoDeRetornoMesmaLinha)
125
+ : new dialetos_2.InterpretadorVisuAlg(process.cwd(), false, this.funcaoDeRetorno, this.funcaoDeRetornoMesmaLinha);
126
+ break;
127
+ default:
128
+ this.lexador = new lexador_1.Lexador(performance);
129
+ this.avaliadorSintatico = new avaliador_sintatico_1.AvaliadorSintatico(performance);
130
+ this.importador = new importador_1.Importador(this.lexador, this.avaliadorSintatico, this.arquivosAbertos, this.conteudoArquivosAbertos, depurador);
131
+ this.interpretador = depurador
132
+ ? new interpretador_com_depuracao_importacao_1.InterpretadorComDepuracaoImportacao(this.importador, process.cwd(), this.funcaoDeRetorno, this.funcaoDeRetornoMesmaLinha)
133
+ : new interpretador_1.Interpretador(this.importador, process.cwd(), performance, this.funcaoDeRetorno, this.funcaoDeRetornoMesmaLinha);
134
+ break;
135
+ }
136
+ if (depurador) {
137
+ this.iniciarDepuracao();
138
+ }
139
+ }
140
+ async executarCodigoComoArgumento(codigo) {
141
+ const retornoLexador = this.lexador.mapear([codigo], -1);
142
+ const retornoAvaliadorSintatico = this.avaliadorSintatico.analisar(retornoLexador, -1);
143
+ const { erros } = await this.executar({
144
+ conteudoArquivo: [codigo],
145
+ nomeArquivo: '',
146
+ hashArquivo: -1,
147
+ retornoLexador: retornoLexador,
148
+ retornoAvaliadorSintatico: retornoAvaliadorSintatico,
149
+ });
150
+ if (erros.length > 0)
151
+ process.exit(70); // Código com exceções não tratadas
152
+ }
153
+ /**
154
+ * Execução por arquivo.
155
+ * @param caminhoRelativoArquivo O caminho no sistema operacional do arquivo a ser aberto.
156
+ */
157
+ async carregarEExecutarArquivo(caminhoRelativoArquivo) {
158
+ const caminhoAbsolutoPrimeiroArquivo = caminho.resolve(caminhoRelativoArquivo);
159
+ const novoDiretorioBase = caminho.dirname(caminhoAbsolutoPrimeiroArquivo);
160
+ this.importador.diretorioBase = novoDiretorioBase;
161
+ this.interpretador.diretorioBase = novoDiretorioBase;
162
+ const retornoImportador = this.importador.importar(caminhoRelativoArquivo, true);
163
+ if (this.afericaoErros(retornoImportador)) {
164
+ process.exit(65); // Código para erro de avaliação antes da execução
165
+ }
166
+ let errosExecucao = {
167
+ lexador: [],
168
+ avaliadorSintatico: [],
169
+ interpretador: [],
170
+ };
171
+ const interfaceLeitura = readline.createInterface({
172
+ input: process.stdin,
173
+ output: process.stdout,
174
+ prompt: '\n> ',
175
+ });
176
+ this.interpretador.interfaceEntradaSaida = interfaceLeitura;
177
+ if (this.modoDepuracao) {
178
+ try {
179
+ this.interpretador.prepararParaDepuracao(retornoImportador.retornoAvaliadorSintatico.declaracoes);
180
+ }
181
+ catch (erro) {
182
+ console.error(chalk_1.default.red(`[Erro de execução]`) + ` Dialeto ${this.dialeto} não suporta depuração.`);
183
+ }
184
+ }
185
+ else {
186
+ const { erros } = await this.executar(retornoImportador);
187
+ errosExecucao = erros;
188
+ }
189
+ interfaceLeitura.close();
190
+ if (errosExecucao.length > 0)
191
+ process.exit(70); // Código com exceções não tratadas
192
+ }
193
+ /**
194
+ * LAIR (Leia-Avalie-Imprima-Repita) é o modo em que Delégua executa em modo console,
195
+ * ou seja, esperando como entrada linhas de código fornecidas pelo usuário.
196
+ */
197
+ iniciarLairDelegua() {
198
+ const lexadorJson = new lexador_json_1.LexadorJson();
199
+ const formatadorJson = new formatadores_1.FormatadorJson();
200
+ this.funcaoDeRetorno(`Usando dialeto: ${this.dialetos[this.dialeto]}`);
201
+ this.funcaoDeRetorno(`Console da Linguagem Delégua v${this.versao()}`);
202
+ this.funcaoDeRetorno('Pressione Ctrl + C para sair');
203
+ const interfaceLeitura = readline.createInterface({
204
+ input: process.stdin,
205
+ output: process.stdout,
206
+ prompt: '\ndelegua> ',
207
+ });
208
+ const isto = this;
209
+ this.interpretador.interfaceEntradaSaida = interfaceLeitura;
210
+ interfaceLeitura.prompt();
211
+ interfaceLeitura.on('line', async (linha) => {
212
+ const { resultado } = await isto.executarUmaLinha(linha);
213
+ if (resultado && resultado.length) {
214
+ const resultadoLexacao = lexadorJson.getTokens(resultado[0]);
215
+ const resultadoFormatacao = formatadorJson.formatar(resultadoLexacao);
216
+ isto.funcaoDeRetorno((0, json_colorizer_1.default)(resultadoFormatacao));
217
+ }
218
+ interfaceLeitura.prompt();
219
+ });
220
+ }
221
+ versao() {
222
+ try {
223
+ const manifesto = caminho.resolve(__dirname, 'package.json');
224
+ return JSON.parse(sistemaArquivos.readFileSync(manifesto, { encoding: 'utf8' })).version || '0.24';
225
+ }
226
+ catch (error) {
227
+ return '0.24 (desenvolvimento)';
228
+ }
229
+ }
230
+ /**
231
+ * A execução do código de fato.
232
+ * @param retornoImportador Dados retornados do Importador, como o retorno do Lexador, do Avaliador
233
+ * Sintático e respectivos erros.
234
+ * @param manterAmbiente Indicação se ambiente deve ser mantido ou não. Normalmente verdadeiro
235
+ * para LAIR, falso para execução por arquivo.
236
+ * @returns Um objeto com o resultado da execução.
237
+ */
238
+ async executar(retornoImportador, manterAmbiente = false) {
239
+ var _a, _b;
240
+ const retornoInterpretador = await this.interpretador.interpretar(retornoImportador.retornoAvaliadorSintatico.declaracoes, manterAmbiente);
241
+ if (retornoInterpretador.erros.length > 0) {
242
+ for (const erroInterpretador of retornoInterpretador.erros) {
243
+ if (erroInterpretador.hasOwnProperty('simbolo')) {
244
+ this.erroEmTempoDeExecucao(erroInterpretador);
245
+ }
246
+ else {
247
+ if (erroInterpretador.hasOwnProperty('erroInterno')) {
248
+ const erroEmJavaScript = erroInterpretador;
249
+ console.error(chalk_1.default.red(`[Linha: ${erroEmJavaScript.linha}] Erro em JavaScript: `) +
250
+ `${(_a = erroEmJavaScript.erroInterno) === null || _a === void 0 ? void 0 : _a.message}`);
251
+ console.error(chalk_1.default.red(`Pilha de execução: `) + `${(_b = erroEmJavaScript.erroInterno) === null || _b === void 0 ? void 0 : _b.stack}`);
252
+ }
253
+ else {
254
+ console.error(chalk_1.default.red(`Erro em JavaScript: `) + JSON.stringify(erroInterpretador));
255
+ }
256
+ }
257
+ }
258
+ }
259
+ return {
260
+ erros: retornoInterpretador.erros,
261
+ resultado: retornoInterpretador.resultado,
262
+ };
263
+ }
264
+ /**
265
+ * Executa uma linha. Usado pelo modo LAIR e pelo servidor de depuração, quando recebe um comando 'avaliar'.
266
+ * @param linha A linha a ser avaliada.
267
+ * @returns O resultado da execução, com os retornos e respectivos erros, se houverem.
268
+ */
269
+ async executarUmaLinha(linha) {
270
+ const retornoLexador = this.lexador.mapear([linha], -1);
271
+ const retornoAvaliadorSintatico = this.avaliadorSintatico.analisar(retornoLexador, -1);
272
+ if (this.afericaoErros({
273
+ retornoLexador,
274
+ retornoAvaliadorSintatico,
275
+ })) {
276
+ return { resultado: [] };
277
+ }
278
+ return await this.executar({
279
+ retornoLexador,
280
+ retornoAvaliadorSintatico,
281
+ }, true);
282
+ }
283
+ /**
284
+ * Instancia um servidor de depuração, normalmente recebendo requisições na porta 7777.
285
+ */
286
+ iniciarDepuracao() {
287
+ this.servidorDepuracao = new depuracao_1.ServidorDepuracao(this);
288
+ this.servidorDepuracao.iniciarServidorDepuracao();
289
+ this.interpretador.finalizacaoDaExecucao = this.finalizarDepuracao.bind(this);
290
+ }
291
+ /**
292
+ * Pede ao servidor de depuração que finalize a execução.
293
+ * Se não for feito, o servidor de depuração mantém um _stream_ aberto e nunca finaliza.
294
+ * Mais informações: https://stackoverflow.com/a/47456805/1314276
295
+ */
296
+ finalizarDepuracao() {
297
+ if (this.servidorDepuracao) {
298
+ this.servidorDepuracao.finalizarServidorDepuracao();
299
+ }
300
+ }
301
+ erroEmTempoDeExecucao(erro) {
302
+ var _a;
303
+ const linha = ((_a = erro === null || erro === void 0 ? void 0 : erro.simbolo) === null || _a === void 0 ? void 0 : _a.linha) || (erro === null || erro === void 0 ? void 0 : erro.linha);
304
+ const mensagem = (erro === null || erro === void 0 ? void 0 : erro.mensagem) || (erro === null || erro === void 0 ? void 0 : erro.message);
305
+ console.error(chalk_1.default.red(`Erro: [Linha: ${linha}]`) + ` ${mensagem}`);
306
+ }
307
+ }
308
+ exports.NucleoExecucao = NucleoExecucao;
309
+ //# sourceMappingURL=nucleo-execucao.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nucleo-execucao.js","sourceRoot":"","sources":["../../fontes/nucleo-execucao.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { TradutorInterface } from '@designliquido/delegua/fontes/interfaces';
2
+ import { ImportadorInterface } from './interfaces';
3
+ import { NucleoComum } from './nucleo-comum';
4
+ export declare class NucleoTraducao extends NucleoComum {
5
+ importador: ImportadorInterface<any, any>;
6
+ tradutor: TradutorInterface;
7
+ funcaoDeRetorno: Function;
8
+ funcaoDeRetornoMesmaLinha: Function;
9
+ comandoTraducao: string;
10
+ extensoes: {
11
+ delegua: string;
12
+ javascript: string;
13
+ js: string;
14
+ alg: string;
15
+ visualg: string;
16
+ python: string;
17
+ py: string;
18
+ };
19
+ constructor(funcaoDeRetorno?: Function, funcaoDeRetornoMesmaLinha?: Function);
20
+ iniciarTradutor(comandoTraducao: string): void;
21
+ /**
22
+ * Realiza a tradução do arquivo passado como parâmetro no comando de execução.
23
+ * @param caminhoRelativoArquivo O caminho do arquivo.
24
+ * @param gerarArquivoSaida Se o resultado da tradução deve ser escrito em arquivo.
25
+ * Se verdadeiro, os arquivos de saída são escritos no mesmo diretório
26
+ * do arquivo passado no primeiro parâmetro.
27
+ */
28
+ traduzirArquivo(caminhoRelativoArquivo: string, gerarArquivoSaida: boolean): void;
29
+ }
@@ -0,0 +1,108 @@
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.NucleoTraducao = void 0;
27
+ const sistemaArquivos = __importStar(require("fs"));
28
+ const caminho = __importStar(require("path"));
29
+ const tradutores_1 = require("@designliquido/delegua/fontes/tradutores");
30
+ const nucleo_comum_1 = require("./nucleo-comum");
31
+ class NucleoTraducao extends nucleo_comum_1.NucleoComum {
32
+ constructor(funcaoDeRetorno = null, funcaoDeRetornoMesmaLinha = null) {
33
+ super();
34
+ this.comandoTraducao = '';
35
+ this.extensoes = {
36
+ delegua: '.delegua',
37
+ javascript: '.js',
38
+ js: '.js',
39
+ alg: '.alg',
40
+ visualg: '.alg',
41
+ python: '.py',
42
+ py: '.py',
43
+ };
44
+ this.funcaoDeRetorno = funcaoDeRetorno || console.log;
45
+ // `process.stdout.write.bind(process.stdout)` é necessário por causa de
46
+ // https://stackoverflow.com/questions/28874665/node-js-cannot-read-property-defaultencoding-of-undefined
47
+ this.funcaoDeRetornoMesmaLinha = funcaoDeRetornoMesmaLinha || process.stdout.write.bind(process.stdout);
48
+ }
49
+ iniciarTradutor(comandoTraducao) {
50
+ switch (comandoTraducao) {
51
+ case 'delegua-para-js':
52
+ case 'delegua-para-javascript':
53
+ this.tradutor = new tradutores_1.TradutorJavaScript();
54
+ break;
55
+ case 'delegua-para-py':
56
+ case 'delegua-para-python':
57
+ this.tradutor = new tradutores_1.TradutorPython();
58
+ break;
59
+ case 'js-para-delegua':
60
+ case 'javascript-para-delegua':
61
+ this.tradutor = new tradutores_1.TradutorReversoJavaScript();
62
+ break;
63
+ case 'alg-para-delegua':
64
+ case 'visualg-para-delegua':
65
+ this.tradutor = new tradutores_1.TradutorReversoVisuAlg();
66
+ break;
67
+ default:
68
+ throw new Error(`Tradutor '${comandoTraducao}' não implementado.`);
69
+ }
70
+ }
71
+ /**
72
+ * Realiza a tradução do arquivo passado como parâmetro no comando de execução.
73
+ * @param caminhoRelativoArquivo O caminho do arquivo.
74
+ * @param gerarArquivoSaida Se o resultado da tradução deve ser escrito em arquivo.
75
+ * Se verdadeiro, os arquivos de saída são escritos no mesmo diretório
76
+ * do arquivo passado no primeiro parâmetro.
77
+ */
78
+ traduzirArquivo(caminhoRelativoArquivo, gerarArquivoSaida) {
79
+ var _a;
80
+ const caminhoAbsolutoPrimeiroArquivo = caminho.resolve(caminhoRelativoArquivo);
81
+ const novoDiretorioBase = caminho.dirname(caminhoAbsolutoPrimeiroArquivo);
82
+ this.importador.diretorioBase = novoDiretorioBase;
83
+ const retornoImportador = this.importador.importar(caminhoRelativoArquivo, true);
84
+ let resultado = null;
85
+ if (this.afericaoErros(retornoImportador)) {
86
+ process.exit(65); // Código para erro de avaliação antes da tradução
87
+ }
88
+ resultado = this.tradutor.traduzir(retornoImportador.retornoAvaliadorSintatico.declaracoes);
89
+ if (gerarArquivoSaida) {
90
+ const linguagem = ((_a = this.comandoTraducao) === null || _a === void 0 ? void 0 : _a.split('-')[2]) || '';
91
+ const extensaoAlvo = this.extensoes[linguagem];
92
+ if (extensaoAlvo) {
93
+ ['.delegua', '.js', '.alg'].map((extensao) => {
94
+ if (caminhoAbsolutoPrimeiroArquivo.includes(extensao)) {
95
+ sistemaArquivos.writeFile(caminhoAbsolutoPrimeiroArquivo.replace(extensao, `${extensaoAlvo}`), resultado, (erro) => {
96
+ if (erro)
97
+ throw erro;
98
+ });
99
+ return;
100
+ }
101
+ });
102
+ }
103
+ }
104
+ this.funcaoDeRetorno(resultado);
105
+ }
106
+ }
107
+ exports.NucleoTraducao = NucleoTraducao;
108
+ //# sourceMappingURL=nucleo-traducao.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nucleo-traducao.js","sourceRoot":"","sources":["../../fontes/nucleo-traducao.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@designliquido/delegua-node",
3
- "version": "0.22.7",
3
+ "version": "0.24.0",
4
4
  "description": "Linguagem Delégua com capacidades para ecossistema Node.js.",
5
5
  "scripts": {
6
6
  "empacotar": "rimraf ./dist && tsc && copyfiles -V ./bin/delegua ./bin/delegua.cmd ./dist && copyfiles -V ./package.json ./dist/bin && copyfiles -V ./README.md ./dist",
@@ -12,7 +12,7 @@
12
12
  "testes:servidor-depuracao": "ts-node ./fontes/depuracao/servidor-depuracao.ts"
13
13
  },
14
14
  "dependencies": {
15
- "@designliquido/delegua": "0.22.7",
15
+ "@designliquido/delegua": "0.24.0",
16
16
  "chalk": "4.1.2",
17
17
  "commander": "^9.4.1",
18
18
  "json-colorizer": "^2.2.2",