@designliquido/delegua 0.3.2 → 0.4.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 +3 -1
- package/fontes/ambiente.js.map +1 -1
- package/fontes/avaliador-sintatico/avaliador-sintatico.d.ts +6 -5
- package/fontes/avaliador-sintatico/avaliador-sintatico.js +44 -41
- package/fontes/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.d.ts +4 -3
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js +38 -37
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-eguap.d.ts +4 -3
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-eguap.js +38 -37
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-eguap.js.map +1 -1
- package/fontes/bibliotecas/biblioteca-global.d.ts +2 -2
- package/fontes/bibliotecas/biblioteca-global.js.map +1 -1
- package/fontes/construtos/acesso-indice-variavel.d.ts +2 -1
- package/fontes/construtos/acesso-indice-variavel.js +2 -1
- package/fontes/construtos/acesso-indice-variavel.js.map +1 -1
- package/fontes/construtos/acesso-metodo.d.ts +4 -3
- package/fontes/construtos/acesso-metodo.js +2 -1
- package/fontes/construtos/acesso-metodo.js.map +1 -1
- package/fontes/construtos/agrupamento.d.ts +2 -1
- package/fontes/construtos/agrupamento.js +2 -1
- package/fontes/construtos/agrupamento.js.map +1 -1
- package/fontes/construtos/atribuicao-sobrescrita.d.ts +2 -1
- package/fontes/construtos/atribuicao-sobrescrita.js +2 -1
- package/fontes/construtos/atribuicao-sobrescrita.js.map +1 -1
- package/fontes/construtos/atribuir.d.ts +2 -1
- package/fontes/construtos/atribuir.js +2 -1
- package/fontes/construtos/atribuir.js.map +1 -1
- package/fontes/construtos/binario.d.ts +2 -1
- package/fontes/construtos/binario.js +2 -1
- package/fontes/construtos/binario.js.map +1 -1
- package/fontes/construtos/chamada.d.ts +2 -1
- package/fontes/construtos/chamada.js +2 -1
- package/fontes/construtos/chamada.js.map +1 -1
- package/fontes/construtos/conjunto.d.ts +2 -1
- package/fontes/construtos/conjunto.js +2 -1
- package/fontes/construtos/conjunto.js.map +1 -1
- package/fontes/construtos/construto.d.ts +1 -0
- package/fontes/construtos/dicionario.d.ts +2 -1
- package/fontes/construtos/dicionario.js +2 -1
- package/fontes/construtos/dicionario.js.map +1 -1
- package/fontes/construtos/funcao.d.ts +2 -1
- package/fontes/construtos/funcao.js +2 -1
- package/fontes/construtos/funcao.js.map +1 -1
- package/fontes/construtos/isto.d.ts +2 -1
- package/fontes/construtos/isto.js +2 -1
- package/fontes/construtos/isto.js.map +1 -1
- package/fontes/construtos/literal.d.ts +2 -1
- package/fontes/construtos/literal.js +2 -1
- package/fontes/construtos/literal.js.map +1 -1
- package/fontes/construtos/logico.d.ts +2 -1
- package/fontes/construtos/logico.js +2 -1
- package/fontes/construtos/logico.js.map +1 -1
- package/fontes/construtos/super.d.ts +4 -2
- package/fontes/construtos/super.js +4 -3
- package/fontes/construtos/super.js.map +1 -1
- package/fontes/construtos/unario.d.ts +2 -1
- package/fontes/construtos/unario.js +2 -1
- package/fontes/construtos/unario.js.map +1 -1
- package/fontes/construtos/variavel.d.ts +2 -1
- package/fontes/construtos/variavel.js +2 -1
- package/fontes/construtos/variavel.js.map +1 -1
- package/fontes/construtos/vetor.d.ts +2 -1
- package/fontes/construtos/vetor.js +2 -1
- package/fontes/construtos/vetor.js.map +1 -1
- package/fontes/declaracoes/bloco.js +1 -1
- package/fontes/declaracoes/bloco.js.map +1 -1
- package/fontes/declaracoes/classe.js +1 -1
- package/fontes/declaracoes/classe.js.map +1 -1
- package/fontes/declaracoes/continua.d.ts +2 -1
- package/fontes/declaracoes/continua.js +2 -2
- package/fontes/declaracoes/continua.js.map +1 -1
- package/fontes/declaracoes/declaracao.d.ts +2 -1
- package/fontes/declaracoes/declaracao.js +2 -1
- package/fontes/declaracoes/declaracao.js.map +1 -1
- package/fontes/declaracoes/enquanto.d.ts +3 -2
- package/fontes/declaracoes/enquanto.js +1 -1
- package/fontes/declaracoes/enquanto.js.map +1 -1
- package/fontes/declaracoes/escolha.d.ts +2 -1
- package/fontes/declaracoes/escolha.js +1 -1
- package/fontes/declaracoes/escolha.js.map +1 -1
- package/fontes/declaracoes/escreva.d.ts +3 -2
- package/fontes/declaracoes/escreva.js +1 -1
- package/fontes/declaracoes/escreva.js.map +1 -1
- package/fontes/declaracoes/expressao.js +1 -1
- package/fontes/declaracoes/expressao.js.map +1 -1
- package/fontes/declaracoes/fazer.js +1 -1
- package/fontes/declaracoes/fazer.js.map +1 -1
- package/fontes/declaracoes/funcao.js +1 -1
- package/fontes/declaracoes/funcao.js.map +1 -1
- package/fontes/declaracoes/importar.js +1 -1
- package/fontes/declaracoes/importar.js.map +1 -1
- package/fontes/declaracoes/para.d.ts +1 -1
- package/fontes/declaracoes/para.js +2 -2
- package/fontes/declaracoes/para.js.map +1 -1
- package/fontes/declaracoes/retorna.d.ts +3 -3
- package/fontes/declaracoes/retorna.js +3 -3
- package/fontes/declaracoes/retorna.js.map +1 -1
- package/fontes/declaracoes/se.js +1 -1
- package/fontes/declaracoes/se.js.map +1 -1
- package/fontes/declaracoes/sustar.d.ts +2 -1
- package/fontes/declaracoes/sustar.js +2 -2
- package/fontes/declaracoes/sustar.js.map +1 -1
- package/fontes/declaracoes/tente.js +1 -1
- package/fontes/declaracoes/tente.js.map +1 -1
- package/fontes/declaracoes/var.js +1 -1
- package/fontes/declaracoes/var.js.map +1 -1
- package/fontes/delegua.d.ts +28 -5
- package/fontes/delegua.js +65 -18
- package/fontes/delegua.js.map +1 -1
- package/fontes/depuracao/cyrb53.d.ts +9 -0
- package/fontes/depuracao/cyrb53.js +25 -0
- package/fontes/depuracao/cyrb53.js.map +1 -0
- package/fontes/depuracao/index.d.ts +3 -0
- package/fontes/depuracao/index.js +20 -0
- package/fontes/depuracao/index.js.map +1 -0
- package/fontes/depuracao/ponto-parada.d.ts +4 -0
- package/fontes/depuracao/ponto-parada.js +3 -0
- package/fontes/depuracao/ponto-parada.js.map +1 -0
- package/fontes/depuracao/servidor-depuracao.d.ts +15 -0
- package/fontes/depuracao/servidor-depuracao.js +187 -0
- package/fontes/depuracao/servidor-depuracao.js.map +1 -0
- package/fontes/estruturas/funcao.d.ts +1 -1
- package/fontes/estruturas/funcao.js.map +1 -1
- package/fontes/importador/importador.d.ts +18 -1
- package/fontes/importador/importador.js +23 -5
- package/fontes/importador/importador.js.map +1 -1
- package/fontes/importador/retorno-importador.d.ts +2 -3
- package/fontes/interfaces/avaliador-sintatico-interface.d.ts +3 -3
- package/fontes/interfaces/delegua-interface.d.ts +2 -4
- package/fontes/interfaces/index.d.ts +2 -1
- package/fontes/interfaces/index.js +2 -1
- package/fontes/interfaces/index.js.map +1 -1
- package/fontes/interfaces/interpretador-com-depuracao-interface.d.ts +11 -0
- package/fontes/interfaces/interpretador-com-depuracao-interface.js +3 -0
- package/fontes/interfaces/interpretador-com-depuracao-interface.js.map +1 -0
- package/fontes/interfaces/interpretador-interface.d.ts +3 -4
- package/fontes/interfaces/lexador-interface.d.ts +2 -2
- package/fontes/interfaces/pilha-escopos-execucao-interface.d.ts +17 -0
- package/fontes/interfaces/pilha-escopos-execucao-interface.js +3 -0
- package/fontes/interfaces/pilha-escopos-execucao-interface.js.map +1 -0
- package/fontes/interfaces/pilha-interface.d.ts +2 -2
- package/fontes/interfaces/retornos/index.d.ts +4 -0
- package/fontes/interfaces/retornos/index.js +21 -0
- package/fontes/interfaces/retornos/index.js.map +1 -0
- package/fontes/interfaces/retornos/retorno-avaliador-sintatico.d.ts +6 -0
- package/fontes/{avaliador-sintatico → interfaces/retornos}/retorno-avaliador-sintatico.js +0 -0
- package/fontes/interfaces/retornos/retorno-avaliador-sintatico.js.map +1 -0
- package/fontes/interfaces/{retorno-execucao-interface.d.ts → retornos/retorno-execucao-interface.d.ts} +3 -3
- package/fontes/interfaces/{retorno-execucao-interface.js → retornos/retorno-execucao-interface.js} +0 -0
- package/fontes/interfaces/retornos/retorno-execucao-interface.js.map +1 -0
- package/fontes/{interpretador → interfaces/retornos}/retorno-interpretador.d.ts +1 -1
- package/fontes/{interpretador → interfaces/retornos}/retorno-interpretador.js +0 -0
- package/fontes/interfaces/retornos/retorno-interpretador.js.map +1 -0
- package/fontes/interfaces/retornos/retorno-lexador.d.ts +10 -0
- package/fontes/{lexador → interfaces/retornos}/retorno-lexador.js +0 -0
- package/fontes/interfaces/retornos/retorno-lexador.js.map +1 -0
- package/fontes/interfaces/simbolo-interface.d.ts +1 -0
- package/fontes/interpretador/dialetos/egua-classico.d.ts +1 -1
- package/fontes/interpretador/dialetos/egua-classico.js +2 -2
- package/fontes/interpretador/dialetos/egua-classico.js.map +1 -1
- package/fontes/interpretador/index.d.ts +1 -1
- package/fontes/interpretador/index.js +1 -1
- package/fontes/interpretador/index.js.map +1 -1
- package/fontes/interpretador/interpretador-com-depuracao.d.ts +94 -0
- package/fontes/interpretador/interpretador-com-depuracao.js +278 -0
- package/fontes/interpretador/interpretador-com-depuracao.js.map +1 -0
- package/fontes/interpretador/interpretador.d.ts +16 -8
- package/fontes/interpretador/interpretador.js +16 -8
- package/fontes/interpretador/interpretador.js.map +1 -1
- package/fontes/interpretador/pilha-escopos-execucao.d.ts +12 -5
- package/fontes/interpretador/pilha-escopos-execucao.js +19 -2
- package/fontes/interpretador/pilha-escopos-execucao.js.map +1 -1
- package/fontes/lexador/dialetos/lexador-egua-classico.d.ts +1 -1
- package/fontes/lexador/dialetos/lexador-egua-classico.js +2 -2
- package/fontes/lexador/dialetos/lexador-egua-classico.js.map +1 -1
- package/fontes/lexador/dialetos/lexador-eguap.d.ts +3 -2
- package/fontes/lexador/dialetos/lexador-eguap.js +6 -5
- package/fontes/lexador/dialetos/lexador-eguap.js.map +1 -1
- package/fontes/lexador/lexador.d.ts +3 -2
- package/fontes/lexador/lexador.js +4 -2
- package/fontes/lexador/lexador.js.map +1 -1
- package/fontes/lexador/simbolo.d.ts +2 -1
- package/fontes/lexador/simbolo.js +2 -1
- package/fontes/lexador/simbolo.js.map +1 -1
- package/fontes/resolvedor/dialetos/egua-classico.d.ts +1 -1
- package/fontes/resolvedor/dialetos/egua-classico.js +3 -3
- package/fontes/resolvedor/dialetos/egua-classico.js.map +1 -1
- package/fontes/resolvedor/resolvedor.js +3 -3
- package/index.js +6 -4
- package/index.js.map +1 -1
- package/package.json +3 -1
- package/testes/avaliador-sintatico.test.js +1 -1
- package/testes/avaliador-sintatico.test.js.map +1 -1
- package/testes/biblioteca-global.test.js +14 -14
- package/testes/biblioteca-global.test.js.map +1 -1
- package/testes/egua-classico/avaliador-sintatico.test.js +1 -1
- package/testes/egua-classico/avaliador-sintatico.test.js.map +1 -1
- package/testes/egua-classico/interpretador.test.js +20 -20
- package/testes/egua-classico/interpretador.test.js.map +1 -1
- package/testes/egua-classico/lexador.test.js +8 -8
- package/testes/egua-classico/lexador.test.js.map +1 -1
- package/testes/egua-classico/resolvedor.test.js +1 -1
- package/testes/egua-classico/resolvedor.test.js.map +1 -1
- package/testes/eguap/lexador.test.js +6 -6
- package/testes/eguap/lexador.test.js.map +1 -1
- package/testes/interpretador.test.js +20 -20
- package/testes/interpretador.test.js.map +1 -1
- package/testes/lexador.test.js +8 -8
- package/testes/lexador.test.js.map +1 -1
- package/testes/resolvedor.test.js +1 -1
- package/testes/resolvedor.test.js.map +1 -1
- package/fontes/avaliador-sintatico/retorno-avaliador-sintatico.d.ts +0 -6
- package/fontes/avaliador-sintatico/retorno-avaliador-sintatico.js.map +0 -1
- package/fontes/interfaces/retorno-execucao-interface.js.map +0 -1
- package/fontes/interpretador/retorno-interpretador.js.map +0 -1
- package/fontes/lexador/retorno-lexador.d.ts +0 -10
- package/fontes/lexador/retorno-lexador.js.map +0 -1
|
@@ -0,0 +1,187 @@
|
|
|
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.ServidorDepuracao = void 0;
|
|
30
|
+
var net = __importStar(require("net"));
|
|
31
|
+
var cyrb53_1 = __importDefault(require("./cyrb53"));
|
|
32
|
+
var ServidorDepuracao = /** @class */ (function () {
|
|
33
|
+
function ServidorDepuracao(_instanciaDelegua) {
|
|
34
|
+
var _this = this;
|
|
35
|
+
this.operarConexao = function (conexao) {
|
|
36
|
+
var enderecoRemoto = conexao.remoteAddress + ':' + conexao.remotePort;
|
|
37
|
+
// process.stdout.write('\n[Depurador] Nova conexão de cliente de ' + enderecoRemoto + '\ndelegua> ');
|
|
38
|
+
conexao.setEncoding('utf8');
|
|
39
|
+
_this.conexoes[_this.contadorConexoes++] = conexao;
|
|
40
|
+
var aoReceberDados = function (dados) {
|
|
41
|
+
var comando = String(dados).replace(/\r?\n|\r/g, "").split(' ');
|
|
42
|
+
// process.stdout.write('\n[Depurador] Dados da conexão vindos de ' + enderecoRemoto + ': ' + comando + '\ndelegua> ');
|
|
43
|
+
var interpretadorInterface = _this.instanciaDelegua.interpretador;
|
|
44
|
+
var arquivosAbertos = _this.instanciaDelegua.arquivosAbertos;
|
|
45
|
+
var conteudoArquivosAbertos = _this.instanciaDelegua.conteudoArquivosAbertos;
|
|
46
|
+
var validarPontoParada = function (caminhoArquivo, linha) {
|
|
47
|
+
var hashArquivo = (0, cyrb53_1.default)(caminhoArquivo);
|
|
48
|
+
if (!arquivosAbertos.hasOwnProperty(hashArquivo)) {
|
|
49
|
+
conexao.write("[adicionar-ponto-parada]: Arquivo '".concat(caminhoArquivo, "' n\u00E3o encontrado\n"));
|
|
50
|
+
return { sucesso: false };
|
|
51
|
+
}
|
|
52
|
+
if (conteudoArquivosAbertos[hashArquivo].length < linha) {
|
|
53
|
+
conexao.write("[adicionar-ponto-parada]: Linha ".concat(linha, " n\u00E3o existente em arquivo '").concat(caminhoArquivo, "'\n"));
|
|
54
|
+
return { sucesso: false };
|
|
55
|
+
}
|
|
56
|
+
return { sucesso: true, hashArquivo: hashArquivo, linha: linha };
|
|
57
|
+
};
|
|
58
|
+
var validacaoPontoParada;
|
|
59
|
+
switch (comando[0]) {
|
|
60
|
+
case "adentrar-escopo":
|
|
61
|
+
conexao.write("Recebido comando 'adentrar-escopo'\n");
|
|
62
|
+
interpretadorInterface.adentrarEscopoAtivo = true;
|
|
63
|
+
interpretadorInterface.pontoDeParadaAtivo = false;
|
|
64
|
+
interpretadorInterface.interpretacaoApenasUmaInstrucao();
|
|
65
|
+
break;
|
|
66
|
+
case "adicionar-ponto-parada":
|
|
67
|
+
conexao.write("Recebido comando 'adicionar-ponto-parada'\n");
|
|
68
|
+
if (comando.length < 3) {
|
|
69
|
+
conexao.write("[adicionar-ponto-parada]: Formato: adicionar-ponto-parada /caminho/do/arquivo.egua 1\n");
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
validacaoPontoParada = validarPontoParada(comando[1], parseInt(comando[2]));
|
|
73
|
+
if (validacaoPontoParada.sucesso) {
|
|
74
|
+
interpretadorInterface.pontosParada.push({
|
|
75
|
+
hashArquivo: validacaoPontoParada.hashArquivo,
|
|
76
|
+
linha: validacaoPontoParada.linha
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
break;
|
|
80
|
+
case "continuar":
|
|
81
|
+
conexao.write("Recebido comando 'continuar'\n");
|
|
82
|
+
interpretadorInterface.pontoDeParadaAtivo = false;
|
|
83
|
+
interpretadorInterface.continuarInterpretacao();
|
|
84
|
+
break;
|
|
85
|
+
case "pilha-execucao":
|
|
86
|
+
conexao.write("Recebido comando 'pilha-execucao'\n");
|
|
87
|
+
var pilhaEscoposExecucao = interpretadorInterface.pilhaEscoposExecucao;
|
|
88
|
+
for (var i = 1; i < pilhaEscoposExecucao.pilha.length; i++) {
|
|
89
|
+
var elementoPilha = pilhaEscoposExecucao.pilha[i];
|
|
90
|
+
var posicaoDeclaracaoAtual = elementoPilha.declaracaoAtual >= elementoPilha.declaracoes.length ? elementoPilha.declaracoes.length - 1 : elementoPilha.declaracaoAtual;
|
|
91
|
+
var declaracaoAtual = elementoPilha.declaracoes[posicaoDeclaracaoAtual];
|
|
92
|
+
conexao.write(conteudoArquivosAbertos[declaracaoAtual.hashArquivo][declaracaoAtual.linha - 1].trim() + ' - ' +
|
|
93
|
+
_this.instanciaDelegua.arquivosAbertos[declaracaoAtual.hashArquivo] + ':' +
|
|
94
|
+
declaracaoAtual.linha + '\n');
|
|
95
|
+
}
|
|
96
|
+
break;
|
|
97
|
+
case "pontos-parada":
|
|
98
|
+
conexao.write("Recebido comando 'pontos-parada'\n");
|
|
99
|
+
for (var _i = 0, _a = interpretadorInterface.pontosParada; _i < _a.length; _i++) {
|
|
100
|
+
var pontoParada = _a[_i];
|
|
101
|
+
conexao.write(_this.instanciaDelegua.arquivosAbertos[pontoParada.hashArquivo] + ": " +
|
|
102
|
+
pontoParada.linha + "\n");
|
|
103
|
+
}
|
|
104
|
+
break;
|
|
105
|
+
case "proximo":
|
|
106
|
+
conexao.write("Recebido comando 'proximo'\n");
|
|
107
|
+
interpretadorInterface.pontoDeParadaAtivo = false;
|
|
108
|
+
interpretadorInterface.interpretacaoApenasUmaInstrucao();
|
|
109
|
+
break;
|
|
110
|
+
case "remover-ponto-parada":
|
|
111
|
+
conexao.write("Recebido comando 'remover-ponto-parada'\n");
|
|
112
|
+
if (comando.length < 3) {
|
|
113
|
+
conexao.write("[adicionar-ponto-parada]: Formato: adicionar-ponto-parada /caminho/do/arquivo.egua 1\n");
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
validacaoPontoParada = validarPontoParada(comando[1], parseInt(comando[2]));
|
|
117
|
+
if (validacaoPontoParada.sucesso) {
|
|
118
|
+
interpretadorInterface.pontosParada = interpretadorInterface.pontosParada.filter(function (p) {
|
|
119
|
+
return p.hashArquivo !== validacaoPontoParada.hashArquivo &&
|
|
120
|
+
p.linha !== validacaoPontoParada.linha;
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
break;
|
|
124
|
+
case "sair-escopo":
|
|
125
|
+
conexao.write("Recebido comando 'sair-escopo'\n");
|
|
126
|
+
interpretadorInterface.pontoDeParadaAtivo = false;
|
|
127
|
+
interpretadorInterface.proximoESair();
|
|
128
|
+
break;
|
|
129
|
+
case "tchau":
|
|
130
|
+
conexao.write("Recebido comando 'tchau'. Conexão será encerrada\n");
|
|
131
|
+
conexao.destroy();
|
|
132
|
+
break;
|
|
133
|
+
case "variaveis":
|
|
134
|
+
conexao.write("Recebido comando 'variaveis'. Enviando variáveis do escopo atual\n");
|
|
135
|
+
var todasVariaveis = interpretadorInterface.pilhaEscoposExecucao.obterTodasVariaveis([]);
|
|
136
|
+
for (var _b = 0, todasVariaveis_1 = todasVariaveis; _b < todasVariaveis_1.length; _b++) {
|
|
137
|
+
var grupoVariavel = todasVariaveis_1[_b];
|
|
138
|
+
for (var _c = 0, _d = Object.entries(grupoVariavel); _c < _d.length; _c++) {
|
|
139
|
+
var _e = _d[_c], nomeVariavel = _e[0], valor = _e[1];
|
|
140
|
+
conexao.write(nomeVariavel + ": " + valor + '\n');
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
var aoFecharConexao = function () {
|
|
147
|
+
process.stdout.write('\n[Depurador] Conexão de ' + enderecoRemoto + ' fechada\ndelegua> ');
|
|
148
|
+
};
|
|
149
|
+
var aoObterErro = function (erro) {
|
|
150
|
+
process.stdout.write('\n[Depurador] Conexão ' + enderecoRemoto + ' com erro: ' + erro.message + '\ndelegua> ');
|
|
151
|
+
};
|
|
152
|
+
// `.bind()` é necessário aqui para que os eventos não usem net.Socket ou net.Server como o `this`,
|
|
153
|
+
// como acontece normalmente se o `.bind()` não é chamado.
|
|
154
|
+
conexao.on('data', aoReceberDados.bind(_this));
|
|
155
|
+
conexao.once('close', aoFecharConexao.bind(_this));
|
|
156
|
+
conexao.on('error', aoObterErro.bind(_this));
|
|
157
|
+
};
|
|
158
|
+
this.instanciaDelegua = _instanciaDelegua;
|
|
159
|
+
// Isso é só um exemplo de definição de ponto de parada para testar
|
|
160
|
+
// `Interpretador.executar()`.
|
|
161
|
+
// Deve ser removido num futuro próximo.
|
|
162
|
+
/* (this.instanciaDelegua.interpretador as any).pontosParada.push({
|
|
163
|
+
hashArquivo: cyrb53('./testes/exemplos/importacao/importacao-2.egua'),
|
|
164
|
+
linha: 4
|
|
165
|
+
}); */
|
|
166
|
+
this.servidor = net.createServer();
|
|
167
|
+
this.conexoes = {};
|
|
168
|
+
this.contadorConexoes = 0;
|
|
169
|
+
this.operarConexao.bind(this);
|
|
170
|
+
}
|
|
171
|
+
ServidorDepuracao.prototype.iniciarServidorDepuracao = function () {
|
|
172
|
+
// É necessário mudar o `this` aqui por `.bind()`, senão `this` será net.Server dentro dos métodos.
|
|
173
|
+
this.servidor.on('connection', this.operarConexao.bind(this));
|
|
174
|
+
this.servidor.listen(7777);
|
|
175
|
+
return this.servidor.address();
|
|
176
|
+
};
|
|
177
|
+
ServidorDepuracao.prototype.finalizarServidorDepuracao = function () {
|
|
178
|
+
var _this = this;
|
|
179
|
+
Object.keys(this.conexoes).forEach(function (chave) {
|
|
180
|
+
_this.conexoes[chave].destroy();
|
|
181
|
+
});
|
|
182
|
+
this.servidor.close();
|
|
183
|
+
};
|
|
184
|
+
return ServidorDepuracao;
|
|
185
|
+
}());
|
|
186
|
+
exports.ServidorDepuracao = ServidorDepuracao;
|
|
187
|
+
//# sourceMappingURL=servidor-depuracao.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"servidor-depuracao.js","sourceRoot":"","sources":["../../../fontes/depuracao/servidor-depuracao.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ export declare class DeleguaFuncao extends Chamavel {
|
|
|
6
6
|
declaracao: any;
|
|
7
7
|
eInicializador: boolean;
|
|
8
8
|
instancia: ObjetoDeleguaClasse;
|
|
9
|
-
constructor(nome: string, declaracao:
|
|
9
|
+
constructor(nome: string, declaracao: any, instancia?: ObjetoDeleguaClasse, eInicializador?: boolean);
|
|
10
10
|
aridade(): number;
|
|
11
11
|
paraTexto(): string;
|
|
12
12
|
chamar(interpretador: InterpretadorInterface, argumentos: any): any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"funcao.js","sourceRoot":"","sources":["../../../fontes/estruturas/funcao.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,uCAAsC;AACtC,wCAAuC;AAGvC,sCAA2C;AAG3C;IAAmC,iCAAQ;IAMvC,uBAAY,IAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"funcao.js","sourceRoot":"","sources":["../../../fontes/estruturas/funcao.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,uCAAsC;AACtC,wCAAuC;AAGvC,sCAA2C;AAG3C;IAAmC,iCAAQ;IAMvC,uBAAY,IAAY,EAAE,UAAe,EAAE,SAA0C,EAAE,cAAsB;QAAlE,0BAAA,EAAA,qBAA0C;QAAE,+BAAA,EAAA,sBAAsB;QAA7G,YACI,iBAAO,SAKV;QAJG,KAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,KAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,KAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,KAAI,CAAC,cAAc,GAAG,cAAc,CAAC;;IACzC,CAAC;IAED,+BAAO,GAAP;;QACI,OAAO,CAAA,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,UAAU,0CAAE,MAAM,KAAI,CAAC,CAAC;IACpD,CAAC;IAED,iCAAS,GAAT;QACI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,UAAU,CAAC;QAC1C,OAAO,4BAAW,IAAI,CAAC,IAAI,MAAG,CAAC;IACnC,CAAC;IAED,8BAAM,GAAN,UAAO,aAAqC,EAAE,UAAe;QACzD,IAAI,QAAQ,GAAG,IAAI,mBAAQ,EAAE,CAAC;QAC9B,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAE5C,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE;YACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,IAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAEhC,IAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;gBACtC,IAAI,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;oBACxB,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;iBAClE;gBAED,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;aAClC;SACJ;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;YAC9B,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;SAC7C;QAED,IAAM,YAAY,GAAQ,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACvF,IAAI,YAAY,YAAY,uBAAa,EAAE;YACvC,OAAO,YAAY,CAAC,KAAK,CAAC;SAC7B;QAED,IAAI,IAAI,CAAC,cAAc,EAAG;YACtB,OAAO,IAAI,CAAC,SAAS,CAAC;SACzB;QAED,OAAO,YAAY,CAAC;IAExB,CAAC;IAED,wCAAgB,GAAhB,UAAiB,SAA8B;QAC3C,OAAO,IAAI,aAAa,CACpB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,UAAU,EACf,SAAS,EACT,IAAI,CAAC,cAAc,CACtB,CAAC;IACN,CAAC;IACL,oBAAC;AAAD,CAAC,AAlED,CAAmC,mBAAQ,GAkE1C;AAlEY,sCAAa"}
|
|
@@ -1,9 +1,26 @@
|
|
|
1
1
|
import { AvaliadorSintaticoInterface, LexadorInterface } from '../interfaces';
|
|
2
2
|
import { ImportadorInterface } from "../interfaces/importador-interface";
|
|
3
3
|
import { RetornoImportador } from './retorno-importador';
|
|
4
|
+
/**
|
|
5
|
+
* O Importador é responsável por manusear arquivos. Coordena as fases de lexação, avaliação sintática,
|
|
6
|
+
* cataloga informações do arquivo no núcleo da linguagem (através das referências `arquivosAbertos` e
|
|
7
|
+
* `conteudoArquivosAbertos`) e aponta erros caso ocorram.
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
4
10
|
export declare class Importador implements ImportadorInterface {
|
|
5
11
|
lexador: LexadorInterface;
|
|
6
12
|
avaliadorSintatico: AvaliadorSintaticoInterface;
|
|
7
|
-
|
|
13
|
+
arquivosAbertos: {
|
|
14
|
+
[identificador: string]: string;
|
|
15
|
+
};
|
|
16
|
+
conteudoArquivosAbertos: {
|
|
17
|
+
[identificador: string]: string[];
|
|
18
|
+
};
|
|
19
|
+
depuracao: boolean;
|
|
20
|
+
constructor(lexador: LexadorInterface, avaliadorSintatico: AvaliadorSintaticoInterface, arquivosAbertos: {
|
|
21
|
+
[identificador: string]: string;
|
|
22
|
+
}, conteudoArquivosAbertos: {
|
|
23
|
+
[identificador: string]: string[];
|
|
24
|
+
}, depuracao: boolean);
|
|
8
25
|
importar(caminhoRelativoArquivo: string): RetornoImportador;
|
|
9
26
|
}
|
|
@@ -22,19 +22,33 @@ 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
|
exports.Importador = void 0;
|
|
27
30
|
var fs = __importStar(require("fs"));
|
|
28
31
|
var caminho = __importStar(require("path"));
|
|
32
|
+
var cyrb53_1 = __importDefault(require("../depuracao/cyrb53"));
|
|
33
|
+
/**
|
|
34
|
+
* O Importador é responsável por manusear arquivos. Coordena as fases de lexação, avaliação sintática,
|
|
35
|
+
* cataloga informações do arquivo no núcleo da linguagem (através das referências `arquivosAbertos` e
|
|
36
|
+
* `conteudoArquivosAbertos`) e aponta erros caso ocorram.
|
|
37
|
+
*
|
|
38
|
+
*/
|
|
29
39
|
var Importador = /** @class */ (function () {
|
|
30
|
-
function Importador(lexador, avaliadorSintatico) {
|
|
40
|
+
function Importador(lexador, avaliadorSintatico, arquivosAbertos, conteudoArquivosAbertos, depuracao) {
|
|
31
41
|
this.lexador = lexador;
|
|
32
42
|
this.avaliadorSintatico = avaliadorSintatico;
|
|
43
|
+
this.arquivosAbertos = arquivosAbertos;
|
|
44
|
+
this.conteudoArquivosAbertos = conteudoArquivosAbertos;
|
|
45
|
+
this.depuracao = depuracao;
|
|
33
46
|
}
|
|
34
47
|
Importador.prototype.importar = function (caminhoRelativoArquivo) {
|
|
35
48
|
var nomeArquivo = caminho.basename(caminhoRelativoArquivo);
|
|
36
|
-
|
|
49
|
+
var hashArquivo = (0, cyrb53_1.default)(caminhoRelativoArquivo);
|
|
37
50
|
if (!fs.existsSync(nomeArquivo)) {
|
|
51
|
+
// TODO: Terminar.
|
|
38
52
|
/* throw new ErroEmTempoDeExecucao(
|
|
39
53
|
declaracao.simboloFechamento,
|
|
40
54
|
'Não foi possível encontrar arquivo importado.',
|
|
@@ -45,11 +59,15 @@ var Importador = /** @class */ (function () {
|
|
|
45
59
|
var conteudoDoArquivo = dadosDoArquivo
|
|
46
60
|
.toString()
|
|
47
61
|
.split('\n');
|
|
48
|
-
var retornoLexador = this.lexador.mapear(conteudoDoArquivo);
|
|
49
|
-
var retornoAvaliadorSintatico = this.avaliadorSintatico.analisar(retornoLexador);
|
|
62
|
+
var retornoLexador = this.lexador.mapear(conteudoDoArquivo, hashArquivo);
|
|
63
|
+
var retornoAvaliadorSintatico = this.avaliadorSintatico.analisar(retornoLexador, hashArquivo);
|
|
64
|
+
this.arquivosAbertos[hashArquivo] = caminho.resolve(caminhoRelativoArquivo);
|
|
65
|
+
if (this.depuracao) {
|
|
66
|
+
this.conteudoArquivosAbertos[hashArquivo] = conteudoDoArquivo;
|
|
67
|
+
}
|
|
50
68
|
return {
|
|
51
69
|
nomeArquivo: nomeArquivo,
|
|
52
|
-
|
|
70
|
+
hashArquivo: hashArquivo,
|
|
53
71
|
retornoLexador: retornoLexador,
|
|
54
72
|
retornoAvaliadorSintatico: retornoAvaliadorSintatico
|
|
55
73
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"importador.js","sourceRoot":"","sources":["../../../fontes/importador/importador.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"importador.js","sourceRoot":"","sources":["../../../fontes/importador/importador.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAyB;AACzB,4CAAgC;AAEhC,+DAAyC;AAOzC;;;;;GAKG;AACH;IAOI,oBACI,OAAyB,EACzB,kBAA+C,EAC/C,eAAoD,EACpD,uBAA8D,EAC9D,SAAkB;QAElB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;QACvD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,6BAAQ,GAAR,UAAS,sBAA8B;QACnC,IAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;QAC7D,IAAM,WAAW,GAAG,IAAA,gBAAM,EAAC,sBAAsB,CAAC,CAAC;QAEnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;YAC7B,kBAAkB;YAClB;;;;iBAIK;SACR;QAED,IAAM,cAAc,GAAW,EAAE,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC;QACvE,IAAM,iBAAiB,GAAa,cAAc;aAC7C,QAAQ,EAAE;aACV,KAAK,CAAC,IAAI,CAAC,CAAC;QAEjB,IAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;QAC3E,IAAM,yBAAyB,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAChG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAE5E,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,GAAG,iBAAiB,CAAC;SACjE;QAED,OAAO;YACH,WAAW,aAAA;YACX,WAAW,aAAA;YACX,cAAc,gBAAA;YACd,yBAAyB,2BAAA;SACP,CAAC;IAC3B,CAAC;IACL,iBAAC;AAAD,CAAC,AAtDD,IAsDC;AAtDY,gCAAU"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { RetornoAvaliadorSintatico } from "../
|
|
2
|
-
import { RetornoLexador } from "../
|
|
1
|
+
import { RetornoAvaliadorSintatico } from "../interfaces/retornos/retorno-avaliador-sintatico";
|
|
2
|
+
import { RetornoLexador } from "../interfaces/retornos/retorno-lexador";
|
|
3
3
|
export interface RetornoImportador {
|
|
4
4
|
nomeArquivo: string;
|
|
5
5
|
hashArquivo: number;
|
|
6
|
-
codigo: string[];
|
|
7
6
|
retornoLexador: RetornoLexador;
|
|
8
7
|
retornoAvaliadorSintatico: RetornoAvaliadorSintatico;
|
|
9
8
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ErroAvaliadorSintatico } from '../avaliador-sintatico/erro-avaliador-sintatico';
|
|
2
|
-
import { RetornoAvaliadorSintatico } from '
|
|
2
|
+
import { RetornoAvaliadorSintatico } from './retornos/retorno-avaliador-sintatico';
|
|
3
3
|
import { Construto, Funcao } from '../construtos';
|
|
4
4
|
import { Classe, Continua, Enquanto, Escolha, Escreva, Fazer, Funcao as FuncaoDeclaracao, Importar, Para, Retorna, Se, Sustar, Tente, Var } from '../declaracoes';
|
|
5
|
-
import { RetornoLexador } from '
|
|
5
|
+
import { RetornoLexador } from './retornos/retorno-lexador';
|
|
6
6
|
import { SimboloInterface } from './simbolo-interface';
|
|
7
7
|
export interface AvaliadorSintaticoInterface {
|
|
8
8
|
simbolos: SimboloInterface[];
|
|
@@ -56,5 +56,5 @@ export interface AvaliadorSintaticoInterface {
|
|
|
56
56
|
corpoDaFuncao(tipo: any): Funcao;
|
|
57
57
|
declaracaoDeClasse(): Classe;
|
|
58
58
|
declaracao(): any;
|
|
59
|
-
analisar(retornoLexador: RetornoLexador): RetornoAvaliadorSintatico;
|
|
59
|
+
analisar(retornoLexador: RetornoLexador, hashArquivo?: number): RetornoAvaliadorSintatico;
|
|
60
60
|
}
|
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
import { RetornoImportador } from "../importador";
|
|
2
|
-
import { AvaliadorSintaticoInterface, ImportadorInterface, InterpretadorInterface, LexadorInterface, ResolvedorInterface, RetornoExecucaoInterface, SimboloInterface } from "../interfaces";
|
|
2
|
+
import { AvaliadorSintaticoInterface, ImportadorInterface, InterpretadorComDepuracaoInterface, InterpretadorInterface, LexadorInterface, ResolvedorInterface, RetornoExecucaoInterface, SimboloInterface } from "../interfaces";
|
|
3
3
|
export interface DeleguaInterface {
|
|
4
|
-
nomeArquivo: string;
|
|
5
4
|
teveErro: boolean;
|
|
6
5
|
teveErroEmTempoDeExecucao: boolean;
|
|
7
6
|
dialeto: string;
|
|
8
7
|
arquivosAbertos: {
|
|
9
8
|
[identificador: string]: string;
|
|
10
9
|
};
|
|
11
|
-
interpretador: InterpretadorInterface;
|
|
10
|
+
interpretador: InterpretadorInterface | InterpretadorComDepuracaoInterface;
|
|
12
11
|
lexador: LexadorInterface;
|
|
13
12
|
avaliadorSintatico: AvaliadorSintaticoInterface;
|
|
14
13
|
resolvedor: ResolvedorInterface;
|
|
15
14
|
importador: ImportadorInterface;
|
|
16
15
|
versao(): string;
|
|
17
|
-
iniciarDelegua(): void;
|
|
18
16
|
carregarArquivo(caminhoRelativoArquivo: string): void;
|
|
19
17
|
executar(retornoImportador: RetornoImportador): RetornoExecucaoInterface;
|
|
20
18
|
reportar(linha: number, onde: any, mensagem: string): void;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
export * from './avaliador-sintatico-interface';
|
|
2
2
|
export * from './delegua-interface';
|
|
3
3
|
export * from './importador-interface';
|
|
4
|
+
export * from './interpretador-com-depuracao-interface';
|
|
4
5
|
export * from './interpretador-interface';
|
|
5
6
|
export * from './lexador-interface';
|
|
6
7
|
export * from './pilha-interface';
|
|
7
8
|
export * from './resolvedor-interface';
|
|
8
|
-
export * from './retorno-execucao-interface';
|
|
9
|
+
export * from './retornos/retorno-execucao-interface';
|
|
9
10
|
export * from './simbolo-interface';
|
|
@@ -17,10 +17,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./avaliador-sintatico-interface"), exports);
|
|
18
18
|
__exportStar(require("./delegua-interface"), exports);
|
|
19
19
|
__exportStar(require("./importador-interface"), exports);
|
|
20
|
+
__exportStar(require("./interpretador-com-depuracao-interface"), exports);
|
|
20
21
|
__exportStar(require("./interpretador-interface"), exports);
|
|
21
22
|
__exportStar(require("./lexador-interface"), exports);
|
|
22
23
|
__exportStar(require("./pilha-interface"), exports);
|
|
23
24
|
__exportStar(require("./resolvedor-interface"), exports);
|
|
24
|
-
__exportStar(require("./retorno-execucao-interface"), exports);
|
|
25
|
+
__exportStar(require("./retornos/retorno-execucao-interface"), exports);
|
|
25
26
|
__exportStar(require("./simbolo-interface"), exports);
|
|
26
27
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../fontes/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kEAAgD;AAChD,sDAAoC;AACpC,yDAAuC;AACvC,4DAA0C;AAC1C,sDAAoC;AACpC,oDAAkC;AAClC,yDAAuC;AACvC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../fontes/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kEAAgD;AAChD,sDAAoC;AACpC,yDAAuC;AACvC,0EAAwD;AACxD,4DAA0C;AAC1C,sDAAoC;AACpC,oDAAkC;AAClC,yDAAuC;AACvC,wEAAsD;AACtD,sDAAoC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PontoParada } from "../depuracao";
|
|
2
|
+
import { InterpretadorInterface } from "./interpretador-interface";
|
|
3
|
+
export interface InterpretadorComDepuracaoInterface extends InterpretadorInterface {
|
|
4
|
+
adentrarEscopoAtivo: boolean;
|
|
5
|
+
pontoDeParadaAtivo: boolean;
|
|
6
|
+
pontosParada: PontoParada[];
|
|
7
|
+
interpretacaoApenasUmaInstrucao(): void;
|
|
8
|
+
continuarInterpretacao(): void;
|
|
9
|
+
interpretacaoApenasUmaInstrucao(): void;
|
|
10
|
+
proximoESair(): void;
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpretador-com-depuracao-interface.js","sourceRoot":"","sources":["../../../fontes/interfaces/interpretador-com-depuracao-interface.ts"],"names":[],"mappings":""}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { Ambiente } from "../ambiente";
|
|
2
2
|
import { Construto } from "../construtos";
|
|
3
3
|
import { Declaracao } from "../declaracoes";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { PilhaInterface } from "./pilha-interface";
|
|
4
|
+
import { PilhaEscoposExecucaoInterface } from "./pilha-escopos-execucao-interface";
|
|
5
|
+
import { RetornoInterpretador } from "./retornos/retorno-interpretador";
|
|
7
6
|
export interface InterpretadorInterface {
|
|
8
7
|
diretorioBase: any;
|
|
9
8
|
locais: Map<Construto, number>;
|
|
10
|
-
pilhaEscoposExecucao:
|
|
9
|
+
pilhaEscoposExecucao: PilhaEscoposExecucaoInterface;
|
|
11
10
|
visitarExpressaoLiteral(expressao: any): any;
|
|
12
11
|
avaliar(expressao: any): any;
|
|
13
12
|
visitarExpressaoAgrupamento(expressao: any): any;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RetornoLexador } from "
|
|
1
|
+
import { RetornoLexador } from "./retornos/retorno-lexador";
|
|
2
2
|
import { SimboloInterface } from "./simbolo-interface";
|
|
3
3
|
export interface LexadorInterface {
|
|
4
4
|
simbolos: SimboloInterface[];
|
|
@@ -20,5 +20,5 @@ export interface LexadorInterface {
|
|
|
20
20
|
analisarNumero(): void;
|
|
21
21
|
identificarPalavraChave(): void;
|
|
22
22
|
analisarToken(): void;
|
|
23
|
-
mapear(codigo
|
|
23
|
+
mapear(codigo: string[], hashArquivo: number): RetornoLexador;
|
|
24
24
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DeleguaFuncao } from "../estruturas";
|
|
2
|
+
import { EscopoExecucao } from "./escopo-execucao";
|
|
3
|
+
import { PilhaInterface } from "./pilha-interface";
|
|
4
|
+
import { SimboloInterface } from "./simbolo-interface";
|
|
5
|
+
export interface PilhaEscoposExecucaoInterface extends PilhaInterface<EscopoExecucao> {
|
|
6
|
+
atribuirVariavel(simbolo: SimboloInterface, valor: any): void;
|
|
7
|
+
atribuirVariavelEm(distancia: number, simbolo: any, valor: any): void;
|
|
8
|
+
definirVariavel(nomeVariavel: string, valor: any): void;
|
|
9
|
+
elementos(): number;
|
|
10
|
+
naPosicao(posicao: number): EscopoExecucao;
|
|
11
|
+
obterTodasVariaveis(todasVariaveis: any[]): any[];
|
|
12
|
+
obterVariavel(simbolo: SimboloInterface): any;
|
|
13
|
+
obterVariavelEm(distancia: number, nome: string): any;
|
|
14
|
+
obterTodasDeleguaFuncao(): {
|
|
15
|
+
[nome: string]: DeleguaFuncao;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pilha-escopos-execucao-interface.js","sourceRoot":"","sources":["../../../fontes/interfaces/pilha-escopos-execucao-interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./retorno-avaliador-sintatico"), exports);
|
|
18
|
+
__exportStar(require("./retorno-execucao-interface"), exports);
|
|
19
|
+
__exportStar(require("./retorno-interpretador"), exports);
|
|
20
|
+
__exportStar(require("./retorno-lexador"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../fontes/interfaces/retornos/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,+DAA6C;AAC7C,0DAAwC;AACxC,oDAAkC"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retorno-avaliador-sintatico.js","sourceRoot":"","sources":["../../../../fontes/interfaces/retornos/retorno-avaliador-sintatico.ts"],"names":[],"mappings":""}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ErroAvaliadorSintatico } from "
|
|
2
|
-
import { ErroInterpretador } from "
|
|
3
|
-
import { ErroLexador } from "
|
|
1
|
+
import { ErroAvaliadorSintatico } from "../../avaliador-sintatico";
|
|
2
|
+
import { ErroInterpretador } from "../../interpretador";
|
|
3
|
+
import { ErroLexador } from "../../lexador/erro-lexador";
|
|
4
4
|
export interface RetornoExecucaoInterface {
|
|
5
5
|
erros: {
|
|
6
6
|
avaliadorSintatico?: Array<ErroAvaliadorSintatico>;
|
package/fontes/interfaces/{retorno-execucao-interface.js → retornos/retorno-execucao-interface.js}
RENAMED
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retorno-execucao-interface.js","sourceRoot":"","sources":["../../../../fontes/interfaces/retornos/retorno-execucao-interface.ts"],"names":[],"mappings":""}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retorno-interpretador.js","sourceRoot":"","sources":["../../../../fontes/interfaces/retornos/retorno-interpretador.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SimboloInterface } from "..";
|
|
2
|
+
import { Pragma } from "../../lexador/dialetos/pragma";
|
|
3
|
+
import { ErroLexador } from "../../lexador/erro-lexador";
|
|
4
|
+
export interface RetornoLexador {
|
|
5
|
+
simbolos: SimboloInterface[];
|
|
6
|
+
erros: ErroLexador[];
|
|
7
|
+
pragmas?: {
|
|
8
|
+
[linha: number]: Pragma;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retorno-lexador.js","sourceRoot":"","sources":["../../../../fontes/interfaces/retornos/retorno-lexador.ts"],"names":[],"mappings":""}
|
|
@@ -4,7 +4,7 @@ import { DeleguaFuncao } from '../../estruturas/funcao';
|
|
|
4
4
|
import { InterpretadorInterface, SimboloInterface } from '../../interfaces';
|
|
5
5
|
import { Classe, Declaracao, Enquanto, Escolha, Escreva, Expressao, Fazer, Funcao, Importar, Para, Se, Tente, Var } from '../../declaracoes';
|
|
6
6
|
import { Atribuir, Construto, Literal, Super, Variavel } from '../../construtos';
|
|
7
|
-
import { RetornoInterpretador } from '
|
|
7
|
+
import { RetornoInterpretador } from '../../interfaces/retornos/retorno-interpretador';
|
|
8
8
|
import { ErroInterpretador } from '../erro-interpretador';
|
|
9
9
|
import { PilhaEscoposExecucao } from '../pilha-escopos-execucao';
|
|
10
10
|
import { ContinuarQuebra, RetornoQuebra, SustarQuebra } from '../../quebras';
|