@designliquido/delegua 0.10.6 → 0.11.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.
- package/bin/package.json +4 -2
- package/fontes/bibliotecas/importar-biblioteca.d.ts +1 -1
- package/fontes/bibliotecas/importar-biblioteca.js +33 -13
- package/fontes/bibliotecas/importar-biblioteca.js.map +1 -1
- package/fontes/delegua.d.ts +4 -1
- package/fontes/delegua.js +19 -23
- package/fontes/delegua.js.map +1 -1
- package/fontes/estruturas/classe-padrao.d.ts +4 -9
- package/fontes/estruturas/classe-padrao.js +3 -14
- package/fontes/estruturas/classe-padrao.js.map +1 -1
- package/fontes/estruturas/objeto-padrao.d.ts +1 -0
- package/fontes/estruturas/objeto-padrao.js +1 -0
- package/fontes/estruturas/objeto-padrao.js.map +1 -1
- package/fontes/interfaces/variavel-interface.d.ts +1 -1
- package/fontes/interpretador/inferenciador.d.ts +1 -1
- package/fontes/interpretador/inferenciador.js +2 -0
- package/fontes/interpretador/inferenciador.js.map +1 -1
- package/fontes/interpretador/interpretador.js +32 -6
- package/fontes/interpretador/interpretador.js.map +1 -1
- package/fontes/tradutores/{index.d.ts → tradutor-javascript.d.ts} +0 -0
- package/fontes/tradutores/{index.js → tradutor-javascript.js} +18 -3
- package/fontes/tradutores/tradutor-javascript.js.map +1 -0
- package/fontes/tradutores/tradutor-reverso-javascript.d.ts +9 -0
- package/fontes/tradutores/tradutor-reverso-javascript.js +43 -0
- package/fontes/tradutores/tradutor-reverso-javascript.js.map +1 -0
- package/package.json +4 -2
- package/coverage/lcov-report/block-navigation.d.ts +0 -1
- package/coverage/lcov-report/block-navigation.js +0 -70
- package/coverage/lcov-report/block-navigation.js.map +0 -1
- package/coverage/lcov-report/prettify.d.ts +0 -0
- package/coverage/lcov-report/prettify.js +0 -477
- package/coverage/lcov-report/prettify.js.map +0 -1
- package/coverage/lcov-report/sorter.d.ts +0 -1
- package/coverage/lcov-report/sorter.js +0 -163
- package/coverage/lcov-report/sorter.js.map +0 -1
- package/docs/assets/main.d.ts +0 -0
- package/docs/assets/main.js +0 -604
- package/docs/assets/main.js.map +0 -1
- package/docs/assets/search.d.ts +0 -0
- package/docs/assets/search.js +0 -2
- package/docs/assets/search.js.map +0 -1
- package/fontes/tradutores/index.js.map +0 -1
- package/jest.config.d.ts +0 -3
- package/jest.config.js +0 -12
- package/jest.config.js.map +0 -1
- package/testes/__mocks__/estatistica.d.ts +0 -2
- package/testes/__mocks__/estatistica.js +0 -4
- package/testes/__mocks__/estatistica.js.map +0 -1
- package/testes/__mocks__/fisica.d.ts +0 -2
- package/testes/__mocks__/fisica.js +0 -4
- package/testes/__mocks__/fisica.js.map +0 -1
- package/testes/__mocks__/matematica.d.ts +0 -2
- package/testes/__mocks__/matematica.js +0 -4
- package/testes/__mocks__/matematica.js.map +0 -1
- package/testes/avaliador-sintatico.test.d.ts +0 -1
- package/testes/avaliador-sintatico.test.js +0 -63
- package/testes/avaliador-sintatico.test.js.map +0 -1
- package/testes/biblioteca-global.test.d.ts +0 -1
- package/testes/biblioteca-global.test.js +0 -215
- package/testes/biblioteca-global.test.js.map +0 -1
- package/testes/birl/avaliador-sintatico.test.d.ts +0 -1
- package/testes/birl/avaliador-sintatico.test.js +0 -18
- package/testes/birl/avaliador-sintatico.test.js.map +0 -1
- package/testes/birl/lexador.test.d.ts +0 -1
- package/testes/birl/lexador.test.js +0 -31
- package/testes/birl/lexador.test.js.map +0 -1
- package/testes/delegua.test.d.ts +0 -1
- package/testes/delegua.test.js +0 -16
- package/testes/delegua.test.js.map +0 -1
- package/testes/egua-classico/avaliador-sintatico.test.d.ts +0 -1
- package/testes/egua-classico/avaliador-sintatico.test.js +0 -27
- package/testes/egua-classico/avaliador-sintatico.test.js.map +0 -1
- package/testes/egua-classico/delegua.test.d.ts +0 -1
- package/testes/egua-classico/delegua.test.js +0 -11
- package/testes/egua-classico/delegua.test.js.map +0 -1
- package/testes/egua-classico/interpretador.test.d.ts +0 -1
- package/testes/egua-classico/interpretador.test.js +0 -199
- package/testes/egua-classico/interpretador.test.js.map +0 -1
- package/testes/egua-classico/lexador.test.d.ts +0 -1
- package/testes/egua-classico/lexador.test.js +0 -80
- package/testes/egua-classico/lexador.test.js.map +0 -1
- package/testes/egua-classico/resolvedor.test.d.ts +0 -1
- package/testes/egua-classico/resolvedor.test.js +0 -37
- package/testes/egua-classico/resolvedor.test.js.map +0 -1
- package/testes/eguap/avaliador-sintatico.test.d.ts +0 -1
- package/testes/eguap/avaliador-sintatico.test.js +0 -30
- package/testes/eguap/avaliador-sintatico.test.js.map +0 -1
- package/testes/eguap/interpretador.test.d.ts +0 -1
- package/testes/eguap/interpretador.test.js +0 -208
- package/testes/eguap/interpretador.test.js.map +0 -1
- package/testes/eguap/lexador.test.d.ts +0 -1
- package/testes/eguap/lexador.test.js +0 -53
- package/testes/eguap/lexador.test.js.map +0 -1
- package/testes/interpretador.test.d.ts +0 -1
- package/testes/interpretador.test.js +0 -478
- package/testes/interpretador.test.js.map +0 -1
- package/testes/lexador.test.d.ts +0 -1
- package/testes/lexador.test.js +0 -166
- package/testes/lexador.test.js.map +0 -1
- package/testes/tradutores/tradutor-javascript.test.d.ts +0 -1
- package/testes/tradutores/tradutor-javascript.test.js +0 -413
- package/testes/tradutores/tradutor-javascript.test.js.map +0 -1
- package/testes/visualg/avaliador-sintatico.test.d.ts +0 -1
- package/testes/visualg/avaliador-sintatico.test.js +0 -113
- package/testes/visualg/avaliador-sintatico.test.js.map +0 -1
- package/testes/visualg/interpretador.test.d.ts +0 -1
- package/testes/visualg/interpretador.test.js +0 -24
- package/testes/visualg/interpretador.test.js.map +0 -1
- package/testes/visualg/lexador.test.d.ts +0 -1
- package/testes/visualg/lexador.test.js +0 -67
- package/testes/visualg/lexador.test.js.map +0 -1
package/bin/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@designliquido/delegua",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.7",
|
|
4
4
|
"description": "Linguagem de programação simples e moderna usando português estruturado",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -65,6 +65,7 @@
|
|
|
65
65
|
"@designliquido/delegua-json": "^0.0.0",
|
|
66
66
|
"@designliquido/delegua-matematica": "^0.2.0",
|
|
67
67
|
"@designliquido/delegua-tempo": "^0.0.1",
|
|
68
|
+
"@types/esprima": "^4.0.3",
|
|
68
69
|
"@types/jest": "^29.2.4",
|
|
69
70
|
"@types/node": "^18.11.13",
|
|
70
71
|
"@typescript-eslint/eslint-plugin": "^5.46.1",
|
|
@@ -86,6 +87,7 @@
|
|
|
86
87
|
"dependencies": {
|
|
87
88
|
"browser-process-hrtime": "^1.0.0",
|
|
88
89
|
"chalk": "4.1.2",
|
|
89
|
-
"commander": "^9.4.1"
|
|
90
|
+
"commander": "^9.4.1",
|
|
91
|
+
"esprima": "^4.0.1"
|
|
90
92
|
}
|
|
91
93
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { DeleguaModulo } from '../estruturas/modulo';
|
|
2
|
-
export default function (nome: string): DeleguaModulo
|
|
2
|
+
export default function (nome: string): Promise<DeleguaModulo>;
|
|
@@ -22,9 +22,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
25
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
29
|
const processoFilho = __importStar(require("child_process"));
|
|
27
30
|
const caminho = __importStar(require("path"));
|
|
31
|
+
const fs_1 = __importDefault(require("fs"));
|
|
28
32
|
const excecoes_1 = require("../excecoes");
|
|
29
33
|
const funcao_padrao_1 = require("../estruturas/funcao-padrao");
|
|
30
34
|
const modulo_1 = require("../estruturas/modulo");
|
|
@@ -45,13 +49,18 @@ const carregarBibliotecaDelegua = (nome) => {
|
|
|
45
49
|
}
|
|
46
50
|
return modularizarBiblioteca(dadosDoModulo, nome);
|
|
47
51
|
};
|
|
48
|
-
const carregarBiblioteca = (nomeDaBiblioteca, caminhoDaBiblioteca) => {
|
|
52
|
+
const carregarBiblioteca = async (nomeDaBiblioteca, caminhoDaBiblioteca) => {
|
|
49
53
|
let dadosDoModulo;
|
|
50
54
|
try {
|
|
51
55
|
dadosDoModulo = require(caminhoDaBiblioteca);
|
|
52
56
|
}
|
|
53
57
|
catch (erro) {
|
|
54
|
-
|
|
58
|
+
try {
|
|
59
|
+
dadosDoModulo = await importarPacoteExternoCompleto(nomeDaBiblioteca);
|
|
60
|
+
}
|
|
61
|
+
catch (erro2) {
|
|
62
|
+
throw new excecoes_1.ErroEmTempoDeExecucao(null, `Biblioteca ${nomeDaBiblioteca} não encontrada para importação. Informações adicionais: ${(erro2 === null || erro2 === void 0 ? void 0 : erro2.message) || "(nenhuma)"}`);
|
|
63
|
+
}
|
|
55
64
|
}
|
|
56
65
|
return modularizarBiblioteca(dadosDoModulo, nomeDaBiblioteca);
|
|
57
66
|
};
|
|
@@ -62,15 +71,13 @@ const modularizarBiblioteca = (dadosDoModulo, nome) => {
|
|
|
62
71
|
const moduloAtual = dadosDoModulo[chaves[i]];
|
|
63
72
|
if (typeof moduloAtual === 'function') {
|
|
64
73
|
// Por definição, funções tradicionais e classes são identificadas em JavaScript como "functions".
|
|
65
|
-
// A
|
|
66
|
-
//
|
|
67
|
-
//
|
|
74
|
+
// A primeira heurística era verificando a propriedade `prototype`, mas isso não funciona bem
|
|
75
|
+
// porque classes e funções avulsas todas possuem prototype.
|
|
76
|
+
// Uma heurística nova é converter `moduloAtual` para `string` e verificar se a declaração começa com `class`.
|
|
77
|
+
// Se sim, podemos dizer que a "function" é uma classe padrão.
|
|
68
78
|
// Caso contrário, é uma função (`FuncaoPadrao`).
|
|
69
|
-
if ((moduloAtual
|
|
79
|
+
if (String(moduloAtual).startsWith('class')) {
|
|
70
80
|
const classePadrao = new classe_padrao_1.ClassePadrao(chaves[i], moduloAtual);
|
|
71
|
-
for (const [nome, corpoMetodo] of Object.entries(moduloAtual.prototype)) {
|
|
72
|
-
classePadrao.metodos[nome] = corpoMetodo;
|
|
73
|
-
}
|
|
74
81
|
novoModulo.componentes[chaves[i]] = classePadrao;
|
|
75
82
|
}
|
|
76
83
|
else {
|
|
@@ -83,10 +90,23 @@ const modularizarBiblioteca = (dadosDoModulo, nome) => {
|
|
|
83
90
|
}
|
|
84
91
|
return novoModulo;
|
|
85
92
|
};
|
|
86
|
-
const
|
|
93
|
+
const importarPacoteCaminhoBase = async (caminhoRelativo) => {
|
|
94
|
+
var _a;
|
|
95
|
+
let resultado = null;
|
|
87
96
|
const npm = process.platform === 'win32' ? 'npm.cmd' : 'npm';
|
|
88
97
|
const global = processoFilho.spawnSync(npm, ['root', '--location=global']);
|
|
89
|
-
|
|
98
|
+
const caminhoAbsoluto = caminho.join((global.output[1]).toString().trim()) + `\\${caminhoRelativo}\\package.json`;
|
|
99
|
+
let arquivoInicio = JSON.parse(fs_1.default.readFileSync(caminhoAbsoluto, 'utf-8')).main || 'index.js';
|
|
100
|
+
await (_a = caminho.join('file:///' + (global.output[1]).toString().trim()) + `\\${caminhoRelativo}\\${arquivoInicio.replace('./', '')}`, Promise.resolve().then(() => __importStar(require(_a)))).then(resposta => {
|
|
101
|
+
resultado = resposta;
|
|
102
|
+
});
|
|
103
|
+
return resultado;
|
|
104
|
+
};
|
|
105
|
+
const importarPacoteDeleguaCompleto = async (nome) => {
|
|
106
|
+
return await importarPacoteCaminhoBase(`delegua\\node_modules\\${nome}`);
|
|
107
|
+
};
|
|
108
|
+
const importarPacoteExternoCompleto = async (nome) => {
|
|
109
|
+
return await importarPacoteCaminhoBase(nome);
|
|
90
110
|
};
|
|
91
111
|
const verificaModulosDelegua = (nome) => {
|
|
92
112
|
const modulos = {
|
|
@@ -104,11 +124,11 @@ const verificaModulosDelegua = (nome) => {
|
|
|
104
124
|
}
|
|
105
125
|
return false;
|
|
106
126
|
};
|
|
107
|
-
function default_1(nome) {
|
|
127
|
+
async function default_1(nome) {
|
|
108
128
|
const nomeBibliotecaResolvido = verificaModulosDelegua(nome);
|
|
109
129
|
return nomeBibliotecaResolvido
|
|
110
130
|
? carregarBibliotecaDelegua(String(nomeBibliotecaResolvido))
|
|
111
|
-
: carregarBiblioteca(nome, nome);
|
|
131
|
+
: await carregarBiblioteca(nome, nome);
|
|
112
132
|
}
|
|
113
133
|
exports.default = default_1;
|
|
114
134
|
//# sourceMappingURL=importar-biblioteca.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"importar-biblioteca.js","sourceRoot":"","sources":["../../../fontes/bibliotecas/importar-biblioteca.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"importar-biblioteca.js","sourceRoot":"","sources":["../../../fontes/bibliotecas/importar-biblioteca.ts"],"names":[],"mappings":"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"}
|
package/fontes/delegua.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { AvaliadorSintaticoInterface, DeleguaInterface, InterpretadorInterface,
|
|
|
2
2
|
import { ServidorDepuracao } from './depuracao';
|
|
3
3
|
import { ImportadorInterface } from './interfaces/importador-interface';
|
|
4
4
|
import { RetornoImportador } from './importador';
|
|
5
|
-
import { TradutorJavaScript } from './tradutores';
|
|
5
|
+
import { TradutorJavaScript } from './tradutores/tradutor-javascript';
|
|
6
6
|
/**
|
|
7
7
|
* O núcleo da linguagem.
|
|
8
8
|
*
|
|
@@ -10,6 +10,9 @@ import { TradutorJavaScript } from './tradutores';
|
|
|
10
10
|
*/
|
|
11
11
|
export declare class Delegua implements DeleguaInterface {
|
|
12
12
|
dialeto: string;
|
|
13
|
+
dialetos: {
|
|
14
|
+
[identificador: string]: string;
|
|
15
|
+
};
|
|
13
16
|
arquivosAbertos: {
|
|
14
17
|
[identificador: string]: string;
|
|
15
18
|
};
|
package/fontes/delegua.js
CHANGED
|
@@ -48,7 +48,7 @@ const lexador_visualg_1 = require("./lexador/dialetos/lexador-visualg");
|
|
|
48
48
|
const avaliador_sintatico_visualg_1 = require("./avaliador-sintatico/dialetos/avaliador-sintatico-visualg");
|
|
49
49
|
const lexador_birl_1 = require("./lexador/dialetos/lexador-birl");
|
|
50
50
|
const avaliador_sintatico_birl_1 = require("./avaliador-sintatico/dialetos/avaliador-sintatico-birl");
|
|
51
|
-
const
|
|
51
|
+
const tradutor_javascript_1 = require("./tradutores/tradutor-javascript");
|
|
52
52
|
/**
|
|
53
53
|
* O núcleo da linguagem.
|
|
54
54
|
*
|
|
@@ -56,6 +56,13 @@ const tradutores_1 = require("./tradutores");
|
|
|
56
56
|
*/
|
|
57
57
|
class Delegua {
|
|
58
58
|
constructor(dialeto = 'delegua', performance = false, depurador = false, traduzir = null, funcaoDeRetorno = null) {
|
|
59
|
+
this.dialetos = {
|
|
60
|
+
'birl': 'BIRL',
|
|
61
|
+
'delegua': 'padrão',
|
|
62
|
+
'egua': 'Égua',
|
|
63
|
+
'eguap': 'ÉguaP',
|
|
64
|
+
'visualg': 'VisuAlg'
|
|
65
|
+
};
|
|
59
66
|
this.arquivosAbertos = {};
|
|
60
67
|
this.conteudoArquivosAbertos = {};
|
|
61
68
|
this.dialeto = dialeto;
|
|
@@ -70,7 +77,6 @@ class Delegua {
|
|
|
70
77
|
this.avaliadorSintatico = new dialetos_1.AvaliadorSintaticoEguaClassico();
|
|
71
78
|
this.importador = new importador_1.Importador(this.lexador, this.avaliadorSintatico, this.arquivosAbertos, this.conteudoArquivosAbertos, depurador);
|
|
72
79
|
this.interpretador = new egua_classico_1.InterpretadorEguaClassico(this, new dialetos_2.ResolvedorEguaClassico(), process.cwd());
|
|
73
|
-
this.funcaoDeRetorno('Usando dialeto: Égua');
|
|
74
80
|
break;
|
|
75
81
|
case 'eguap':
|
|
76
82
|
this.lexador = new lexador_eguap_1.LexadorEguaP();
|
|
@@ -79,7 +85,6 @@ class Delegua {
|
|
|
79
85
|
this.interpretador = depurador
|
|
80
86
|
? new interpretador_com_depuracao_1.InterpretadorComDepuracao(this.importador, process.cwd(), funcaoDeRetorno)
|
|
81
87
|
: new interpretador_1.Interpretador(this.importador, process.cwd(), performance, funcaoDeRetorno);
|
|
82
|
-
this.funcaoDeRetorno('Usando dialeto: ÉguaP');
|
|
83
88
|
break;
|
|
84
89
|
case 'visualg':
|
|
85
90
|
this.lexador = new lexador_visualg_1.LexadorVisuAlg();
|
|
@@ -92,7 +97,6 @@ class Delegua {
|
|
|
92
97
|
this.avaliadorSintatico = new avaliador_sintatico_birl_1.AvaliadorSintaticoBirl();
|
|
93
98
|
this.importador = new importador_1.Importador(this.lexador, this.avaliadorSintatico, this.arquivosAbertos, this.conteudoArquivosAbertos, depurador);
|
|
94
99
|
this.interpretador = new interpretador_1.Interpretador(this.importador, process.cwd(), false, console.log);
|
|
95
|
-
this.funcaoDeRetorno('Usando dialeto: birl');
|
|
96
100
|
break;
|
|
97
101
|
default:
|
|
98
102
|
this.lexador = new lexador_1.Lexador(performance);
|
|
@@ -101,11 +105,10 @@ class Delegua {
|
|
|
101
105
|
this.interpretador = depurador
|
|
102
106
|
? new interpretador_com_depuracao_1.InterpretadorComDepuracao(this.importador, process.cwd(), funcaoDeRetorno)
|
|
103
107
|
: new interpretador_1.Interpretador(this.importador, process.cwd(), performance, funcaoDeRetorno);
|
|
104
|
-
this.funcaoDeRetorno('Usando dialeto: padrão');
|
|
105
108
|
break;
|
|
106
109
|
}
|
|
107
110
|
if (traduzir !== null && traduzir !== undefined) {
|
|
108
|
-
this.tradutor = new
|
|
111
|
+
this.tradutor = new tradutor_javascript_1.TradutorJavaScript();
|
|
109
112
|
}
|
|
110
113
|
if (depurador) {
|
|
111
114
|
this.iniciarDepuracao();
|
|
@@ -113,11 +116,11 @@ class Delegua {
|
|
|
113
116
|
}
|
|
114
117
|
versao() {
|
|
115
118
|
try {
|
|
116
|
-
const manifesto = caminho.resolve('package.json');
|
|
117
|
-
return JSON.parse(fs.readFileSync(manifesto, { encoding: 'utf8' })).version || '0.
|
|
119
|
+
const manifesto = caminho.resolve(__dirname, 'package.json');
|
|
120
|
+
return JSON.parse(fs.readFileSync(manifesto, { encoding: 'utf8' })).version || '0.11';
|
|
118
121
|
}
|
|
119
122
|
catch (error) {
|
|
120
|
-
return '0.
|
|
123
|
+
return '0.11 (desenvolvimento)';
|
|
121
124
|
}
|
|
122
125
|
}
|
|
123
126
|
/**
|
|
@@ -125,8 +128,9 @@ class Delegua {
|
|
|
125
128
|
* ou seja, esperando como entrada linhas de código fornecidas pelo usuário.
|
|
126
129
|
*/
|
|
127
130
|
iniciarLairDelegua() {
|
|
128
|
-
|
|
129
|
-
|
|
131
|
+
this.funcaoDeRetorno(`Usando dialeto: ${this.dialetos[this.dialeto]}`);
|
|
132
|
+
this.funcaoDeRetorno(`Console da Linguagem Delégua v${this.versao()}`);
|
|
133
|
+
this.funcaoDeRetorno('Pressione Ctrl + C para sair');
|
|
130
134
|
const interfaceLeitura = readline.createInterface({
|
|
131
135
|
input: process.stdin,
|
|
132
136
|
output: process.stdout,
|
|
@@ -300,18 +304,10 @@ class Delegua {
|
|
|
300
304
|
}
|
|
301
305
|
}
|
|
302
306
|
erroEmTempoDeExecucao(erro) {
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
chalk.red(`Erro: [Arquivo: ${this.nomeArquivo}] [Linha: ${erro.simbolo.linha}]`) + ` ${erro.mensagem}`
|
|
308
|
-
);
|
|
309
|
-
else */
|
|
310
|
-
console.error(chalk_1.default.red(`Erro: [Linha: ${erro.simbolo.linha}]`) + ` ${erro.mensagem}`);
|
|
311
|
-
}
|
|
312
|
-
else {
|
|
313
|
-
console.error(chalk_1.default.red(`Erro: [Linha: ${erro.linha || 0}]`) + ` ${erro.mensagem}`);
|
|
314
|
-
}
|
|
307
|
+
var _a;
|
|
308
|
+
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);
|
|
309
|
+
const mensagem = (erro === null || erro === void 0 ? void 0 : erro.mensagem) || (erro === null || erro === void 0 ? void 0 : erro.message);
|
|
310
|
+
console.error(chalk_1.default.red(`Erro: [Linha: ${linha}]`) + ` ${mensagem}`);
|
|
315
311
|
}
|
|
316
312
|
}
|
|
317
313
|
exports.Delegua = Delegua;
|
package/fontes/delegua.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegua.js","sourceRoot":"","sources":["../../fontes/delegua.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,8CAAgC;AAChC,mDAAqC;AACrC,kDAA0B;AAE1B,+CAA4C;AAC5C,mFAA+E;AAC/E,iEAA8D;AAC9D,0EAA0D;AAY1D,0EAAmF;AACnF,oFAA+E;AAC/E,oEAAgE;AAChE,wGAAmG;AACnG,6DAAgF;AAChF,2CAAgD;AAGhD,6CAA6D;AAC7D,6FAAwF;AACxF,oDAA+D;AAC/D,wEAAoE;AACpE,4GAAuG;AACvG,kEAA8D;AAC9D,sGAAiG;AACjG,
|
|
1
|
+
{"version":3,"file":"delegua.js","sourceRoot":"","sources":["../../fontes/delegua.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,17 +4,12 @@ import { Chamavel } from './chamavel';
|
|
|
4
4
|
*/
|
|
5
5
|
export declare class ClassePadrao extends Chamavel {
|
|
6
6
|
nome: string;
|
|
7
|
-
funcaoDeClasse:
|
|
8
|
-
|
|
9
|
-
[nome: string]: any;
|
|
10
|
-
};
|
|
11
|
-
constructor(nome: string, funcaoDeClasse: Function);
|
|
12
|
-
encontrarMetodo(nome: string): Function;
|
|
7
|
+
funcaoDeClasse: any;
|
|
8
|
+
constructor(nome: string, funcaoDeClasse: any);
|
|
13
9
|
paraTexto(): string;
|
|
14
10
|
/**
|
|
15
|
-
* Para o caso de uma classe padrão,
|
|
16
|
-
*
|
|
17
|
-
* os métodos implementados para a classe original.
|
|
11
|
+
* Para o caso de uma classe padrão, instanciá-la é chamá-la
|
|
12
|
+
* como função tendo a palavra 'new' na frente.
|
|
18
13
|
* @param argumentos
|
|
19
14
|
* @param simbolo
|
|
20
15
|
*/
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ClassePadrao = void 0;
|
|
4
4
|
const chamavel_1 = require("./chamavel");
|
|
5
|
-
const objeto_padrao_1 = require("./objeto-padrao");
|
|
6
5
|
/**
|
|
7
6
|
* Classe de importação de classes de bibliotecas do JavaScript.
|
|
8
7
|
*/
|
|
@@ -11,28 +10,18 @@ class ClassePadrao extends chamavel_1.Chamavel {
|
|
|
11
10
|
super();
|
|
12
11
|
this.nome = nome;
|
|
13
12
|
this.funcaoDeClasse = funcaoDeClasse;
|
|
14
|
-
this.metodos = {};
|
|
15
|
-
}
|
|
16
|
-
encontrarMetodo(nome) {
|
|
17
|
-
if (this.metodos.hasOwnProperty(nome)) {
|
|
18
|
-
return this.metodos[nome];
|
|
19
|
-
}
|
|
20
|
-
return undefined;
|
|
21
13
|
}
|
|
22
14
|
paraTexto() {
|
|
23
15
|
return `<classe-padrão ${this.nome}>`;
|
|
24
16
|
}
|
|
25
17
|
/**
|
|
26
|
-
* Para o caso de uma classe padrão,
|
|
27
|
-
*
|
|
28
|
-
* os métodos implementados para a classe original.
|
|
18
|
+
* Para o caso de uma classe padrão, instanciá-la é chamá-la
|
|
19
|
+
* como função tendo a palavra 'new' na frente.
|
|
29
20
|
* @param argumentos
|
|
30
21
|
* @param simbolo
|
|
31
22
|
*/
|
|
32
23
|
chamar(argumentos, simbolo) {
|
|
33
|
-
const novoObjeto = new
|
|
34
|
-
this.funcaoDeClasse.apply(novoObjeto, argumentos);
|
|
35
|
-
Object.assign(novoObjeto, this.metodos);
|
|
24
|
+
const novoObjeto = new this.funcaoDeClasse();
|
|
36
25
|
return novoObjeto;
|
|
37
26
|
}
|
|
38
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classe-padrao.js","sourceRoot":"","sources":["../../../fontes/estruturas/classe-padrao.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;
|
|
1
|
+
{"version":3,"file":"classe-padrao.js","sourceRoot":"","sources":["../../../fontes/estruturas/classe-padrao.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAGtC;;GAEG;AACH,MAAa,YAAa,SAAQ,mBAAQ;IAItC,YAAY,IAAY,EAAE,cAAmB;QACzC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACzC,CAAC;IAED,SAAS;QACL,OAAO,kBAAkB,IAAI,CAAC,IAAI,GAAG,CAAC;IAC1C,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAiB,EAAE,OAAY;QAClC,MAAM,UAAU,GAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QAClD,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ;AAxBD,oCAwBC"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ObjetoPadrao = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Um objeto padrão é uma instância de uma Classe Padrão (JavaScript).
|
|
6
|
+
* TODO: Marcado para depreciação na próxima versão.
|
|
6
7
|
*/
|
|
7
8
|
class ObjetoPadrao {
|
|
8
9
|
constructor(classePadrao) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objeto-padrao.js","sourceRoot":"","sources":["../../../fontes/estruturas/objeto-padrao.ts"],"names":[],"mappings":";;;AAAA
|
|
1
|
+
{"version":3,"file":"objeto-padrao.js","sourceRoot":"","sources":["../../../fontes/estruturas/objeto-padrao.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,MAAa,YAAY;IAGrB,YAAY,YAAoB;QAC5B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;IAED,SAAS;QACL,IAAI,YAAY,GAAG,4BAA4B,IAAI,CAAC,YAAY,KAAK,CAAC;QACtE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC9C,YAAY,IAAI,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;SAC/C;QACD,YAAY,IAAI,kBAAkB,CAAC;QACnC,OAAO,YAAY,CAAC;IACxB,CAAC;CACJ;AAfD,oCAeC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export interface VariavelInterface {
|
|
2
2
|
valor: any;
|
|
3
|
-
tipo: 'texto' | 'número' | 'longo' | 'vetor' | 'dicionário' | 'nulo' | 'lógico' | 'função' | 'símbolo' | 'objeto';
|
|
3
|
+
tipo: 'texto' | 'número' | 'longo' | 'vetor' | 'dicionário' | 'nulo' | 'lógico' | 'função' | 'símbolo' | 'objeto' | 'módulo';
|
|
4
4
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function inferirTipoVariavel(variavel: string | number | Array<any> | boolean | null | undefined): "texto" | "número" | "longo" | "vetor" | "dicionário" | "nulo" | "lógico" | "função" | "símbolo";
|
|
1
|
+
export declare function inferirTipoVariavel(variavel: string | number | Array<any> | boolean | null | undefined): "texto" | "número" | "longo" | "vetor" | "dicionário" | "nulo" | "lógico" | "função" | "símbolo" | "módulo";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inferenciador.js","sourceRoot":"","sources":["../../../fontes/interpretador/inferenciador.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"inferenciador.js","sourceRoot":"","sources":["../../../fontes/interpretador/inferenciador.ts"],"names":[],"mappings":";;;AAEA,SAAgB,mBAAmB,CAC/B,QAAmE;IAEnE,MAAM,IAAI,GAAG,OAAO,QAAQ,CAAC;IAC7B,QAAQ,IAAI,EAAE;QACV,KAAK,QAAQ;YACT,OAAO,OAAO,CAAC;QACnB,KAAK,QAAQ;YACT,OAAO,QAAQ,CAAC;QACpB,KAAK,QAAQ;YACT,OAAO,OAAO,CAAC;QACnB,KAAK,SAAS;YACV,OAAO,QAAQ,CAAC;QACpB,KAAK,WAAW;YACZ,OAAO,MAAM,CAAC;QAClB,KAAK,QAAQ;YACT,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAAE,OAAO,OAAO,CAAC;YAC5C,IAAI,QAAQ,KAAK,IAAI;gBAAE,OAAO,MAAM,CAAC;YACrC,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,eAAe;gBAAE,OAAO,QAAQ,CAAC;YACnE,OAAO,YAAY,CAAC;QACxB,KAAK,UAAU;YACX,OAAO,QAAQ,CAAC;QACpB,KAAK,QAAQ;YACT,OAAO,SAAS,CAAC;KACxB;AACL,CAAC;AAzBD,kDAyBC"}
|
|
@@ -307,8 +307,8 @@ class Interpretador {
|
|
|
307
307
|
for (let i = 0; i < expressao.argumentos.length; i++) {
|
|
308
308
|
argumentos.push(await this.avaliar(expressao.argumentos[i]));
|
|
309
309
|
}
|
|
310
|
-
if (
|
|
311
|
-
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.parentese, '
|
|
310
|
+
if (entidadeChamada instanceof estruturas_1.DeleguaModulo) {
|
|
311
|
+
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.parentese, 'Entidade chamada é um módulo de Delégua. Provavelmente você quer chamar um de seus componentes?', expressao.linha));
|
|
312
312
|
}
|
|
313
313
|
if (entidadeChamada instanceof metodo_primitiva_1.MetodoPrimitiva) {
|
|
314
314
|
const argumentosResolvidos = [];
|
|
@@ -332,9 +332,11 @@ class Interpretador {
|
|
|
332
332
|
else {
|
|
333
333
|
parametros = [];
|
|
334
334
|
}
|
|
335
|
+
const aridade = entidadeChamada.aridade ?
|
|
336
|
+
entidadeChamada.aridade() : entidadeChamada.length;
|
|
335
337
|
// Completar os parâmetros não preenchidos com nulos.
|
|
336
|
-
if (argumentos.length <
|
|
337
|
-
const diferenca =
|
|
338
|
+
if (argumentos.length < aridade) {
|
|
339
|
+
const diferenca = aridade - argumentos.length;
|
|
338
340
|
for (let i = 0; i < diferenca; i++) {
|
|
339
341
|
argumentos.push(null);
|
|
340
342
|
}
|
|
@@ -356,7 +358,19 @@ class Interpretador {
|
|
|
356
358
|
this.erros.push(erro);
|
|
357
359
|
}
|
|
358
360
|
}
|
|
359
|
-
|
|
361
|
+
if ((entidadeChamada instanceof estruturas_1.Chamavel)) {
|
|
362
|
+
return entidadeChamada.chamar(this, argumentos);
|
|
363
|
+
}
|
|
364
|
+
// A função chamada pode ser de uma biblioteca JavaScript.
|
|
365
|
+
// Neste caso apenas testamos se o tipo é uma função.
|
|
366
|
+
if (typeof entidadeChamada === 'function') {
|
|
367
|
+
let objeto = null;
|
|
368
|
+
if (expressao.entidadeChamada.objeto) {
|
|
369
|
+
objeto = await this.avaliar(expressao.entidadeChamada.objeto);
|
|
370
|
+
}
|
|
371
|
+
return entidadeChamada.apply(objeto.hasOwnProperty('valor') ? objeto.valor : objeto, argumentos);
|
|
372
|
+
}
|
|
373
|
+
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.parentese, 'Só pode chamar função ou classe.', expressao.linha));
|
|
360
374
|
}
|
|
361
375
|
catch (erro) {
|
|
362
376
|
console.log(erro);
|
|
@@ -540,7 +554,7 @@ class Interpretador {
|
|
|
540
554
|
if (!caminhoTotal.endsWith('.egua') &&
|
|
541
555
|
!caminhoTotal.endsWith('.delegua')) {
|
|
542
556
|
try {
|
|
543
|
-
return (0, importar_biblioteca_1.default)(caminhoRelativo);
|
|
557
|
+
return await (0, importar_biblioteca_1.default)(caminhoRelativo);
|
|
544
558
|
}
|
|
545
559
|
catch (erro) {
|
|
546
560
|
this.erros.push(erro);
|
|
@@ -793,9 +807,21 @@ class Interpretador {
|
|
|
793
807
|
if (objeto instanceof estruturas_1.ObjetoDeleguaClasse) {
|
|
794
808
|
return objeto.obter(expressao.simbolo) || null;
|
|
795
809
|
}
|
|
810
|
+
// TODO: Possivelmente depreciar esta forma.
|
|
811
|
+
// Não parece funcionar em momento algum.
|
|
796
812
|
if (objeto.constructor === Object) {
|
|
797
813
|
return objeto[expressao.simbolo.lexema] || null;
|
|
798
814
|
}
|
|
815
|
+
// Função tradicional do JavaScript.
|
|
816
|
+
// Normalmente executa quando uma biblioteca é importada.
|
|
817
|
+
if (typeof objeto[expressao.simbolo.lexema] === 'function') {
|
|
818
|
+
return objeto[expressao.simbolo.lexema];
|
|
819
|
+
}
|
|
820
|
+
// Objeto tradicional do JavaScript.
|
|
821
|
+
// Normalmente executa quando uma biblioteca é importada.
|
|
822
|
+
if (typeof objeto[expressao.simbolo.lexema] === 'object') {
|
|
823
|
+
return objeto[expressao.simbolo.lexema];
|
|
824
|
+
}
|
|
799
825
|
if (objeto instanceof estruturas_1.DeleguaModulo) {
|
|
800
826
|
return objeto.componentes[expressao.simbolo.lexema] || null;
|
|
801
827
|
}
|