@designliquido/delegua 0.13.2 → 0.14.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/README.md +3 -54
- package/bin/package.json +2 -13
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.d.ts +20 -0
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.js +150 -0
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.js.map +1 -0
- package/fontes/depuracao/index.d.ts +0 -1
- package/fontes/depuracao/index.js +0 -1
- package/fontes/depuracao/index.js.map +1 -1
- package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts +2 -4
- package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +34 -43
- package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.js.map +1 -1
- package/fontes/interpretador/dialetos/visualg/interpretador-visualg.d.ts +2 -2
- package/fontes/interpretador/dialetos/visualg/interpretador-visualg.js +1 -1
- package/fontes/interpretador/dialetos/visualg/interpretador-visualg.js.map +1 -1
- package/fontes/interpretador/index.d.ts +0 -1
- package/fontes/interpretador/index.js +0 -1
- package/fontes/interpretador/index.js.map +1 -1
- package/fontes/interpretador/interpretador-com-depuracao.d.ts +2 -2
- package/fontes/interpretador/interpretador-com-depuracao.js +2 -2
- package/fontes/interpretador/interpretador-com-depuracao.js.map +1 -1
- package/fontes/lexador/dialetos/index.d.ts +1 -0
- package/fontes/lexador/dialetos/index.js +1 -0
- package/fontes/lexador/dialetos/index.js.map +1 -1
- package/fontes/lexador/dialetos/lexador-guarani.d.ts +9 -0
- package/fontes/lexador/dialetos/lexador-guarani.js +114 -0
- package/fontes/lexador/dialetos/lexador-guarani.js.map +1 -0
- package/fontes/lexador/dialetos/palavras-reservadas/guarani.d.ts +4 -0
- package/fontes/lexador/dialetos/palavras-reservadas/guarani.js +10 -0
- package/fontes/lexador/dialetos/palavras-reservadas/guarani.js.map +1 -0
- package/fontes/lexador/dialetos/palavras-reservadas/rantiaquin.d.ts +2 -0
- package/fontes/lexador/dialetos/palavras-reservadas/rantiaquin.js +4 -0
- package/fontes/lexador/dialetos/palavras-reservadas/rantiaquin.js.map +1 -0
- package/fontes/tipos-de-simbolos/guarani.d.ts +14 -0
- package/fontes/tipos-de-simbolos/guarani.js +16 -0
- package/fontes/tipos-de-simbolos/guarani.js.map +1 -0
- package/fontes/tipos-de-simbolos/rantiaquin.d.ts +2 -0
- package/fontes/tipos-de-simbolos/rantiaquin.js +4 -0
- package/fontes/tipos-de-simbolos/rantiaquin.js.map +1 -0
- package/index.d.ts +0 -1
- package/index.js +0 -1
- package/index.js.map +1 -1
- package/package.json +2 -13
- package/execucao.d.ts +0 -1
- package/execucao.js +0 -43
- package/execucao.js.map +0 -1
- package/fontes/bibliotecas/importar-biblioteca.d.ts +0 -2
- package/fontes/bibliotecas/importar-biblioteca.js +0 -132
- package/fontes/bibliotecas/importar-biblioteca.js.map +0 -1
- package/fontes/delegua.d.ts +0 -86
- package/fontes/delegua.js +0 -372
- package/fontes/delegua.js.map +0 -1
- package/fontes/depuracao/remota/servidor-depuracao.d.ts +0 -41
- package/fontes/depuracao/remota/servidor-depuracao.js +0 -301
- package/fontes/depuracao/remota/servidor-depuracao.js.map +0 -1
- package/fontes/interpretador/interpretador.d.ts +0 -17
- package/fontes/interpretador/interpretador.js +0 -80
- package/fontes/interpretador/interpretador.js.map +0 -1
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import * as net from 'net';
|
|
3
|
-
import { DeleguaInterface, InterpretadorComDepuracaoInterface } from '../../interfaces';
|
|
4
|
-
/**
|
|
5
|
-
* Esta foi a primeira implementacão do mecanismo de depuração, usando comunicação por _sockets_.
|
|
6
|
-
* Inicialmente uma integração foi implementada na extensão do VSCode, mas o protocolo de
|
|
7
|
-
* comunicação nunca foi exatamente maturado, em favor de uma implementação na extensão
|
|
8
|
-
* usando a linguagem diretamente.
|
|
9
|
-
*
|
|
10
|
-
* Mecanismo poderá ser maturado num futuro próximo. Para mais detalhes, ler `README.md`.
|
|
11
|
-
*/
|
|
12
|
-
export declare class ServidorDepuracao {
|
|
13
|
-
instanciaDelegua: DeleguaInterface;
|
|
14
|
-
servidor: net.Server;
|
|
15
|
-
conexoes: {
|
|
16
|
-
[chave: number]: any;
|
|
17
|
-
};
|
|
18
|
-
contadorConexoes: number;
|
|
19
|
-
interpretador: InterpretadorComDepuracaoInterface;
|
|
20
|
-
constructor(_instanciaDelegua: DeleguaInterface);
|
|
21
|
-
validarPontoParada: (caminhoArquivo: string, linha: number, conexao: net.Socket) => any;
|
|
22
|
-
comandoAdentrarEscopo: (conexao: net.Socket) => Promise<any>;
|
|
23
|
-
comandoAdicionarPontoParada: (comando: string[], conexao: net.Socket) => any;
|
|
24
|
-
comandoAvaliar: (comando: string[], conexao: net.Socket) => Promise<any>;
|
|
25
|
-
comandoAvaliarVariavel: (comando: string[], conexao: net.Socket) => Promise<any>;
|
|
26
|
-
comandoContinuar: (conexao: net.Socket) => Promise<any>;
|
|
27
|
-
comandoPilhaExecucao: (conexao: net.Socket) => any;
|
|
28
|
-
comandoPontosParada: (conexao: net.Socket) => any;
|
|
29
|
-
comandoProximo: (conexao: net.Socket) => Promise<any>;
|
|
30
|
-
comandoRemoverPontoParada: (comando: string[], conexao: net.Socket) => any;
|
|
31
|
-
comandoSairEscopo: (conexao: net.Socket) => Promise<any>;
|
|
32
|
-
comandoVariaveis: (conexao: net.Socket) => any;
|
|
33
|
-
/**
|
|
34
|
-
* Função que descreve como conexão com clientes de depuração deve ser operada.
|
|
35
|
-
* @param conexao Instância de conexão, tipo net.Socket.
|
|
36
|
-
*/
|
|
37
|
-
operarConexao: (conexao: net.Socket) => void;
|
|
38
|
-
iniciarServidorDepuracao(): net.AddressInfo;
|
|
39
|
-
escreverSaidaParaTodosClientes(mensagem: string): void;
|
|
40
|
-
finalizarServidorDepuracao(): void;
|
|
41
|
-
}
|
|
@@ -1,301 +0,0 @@
|
|
|
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
|
-
const net = __importStar(require("net"));
|
|
31
|
-
const cyrb53_1 = __importDefault(require("../cyrb53"));
|
|
32
|
-
/**
|
|
33
|
-
* Esta foi a primeira implementacão do mecanismo de depuração, usando comunicação por _sockets_.
|
|
34
|
-
* Inicialmente uma integração foi implementada na extensão do VSCode, mas o protocolo de
|
|
35
|
-
* comunicação nunca foi exatamente maturado, em favor de uma implementação na extensão
|
|
36
|
-
* usando a linguagem diretamente.
|
|
37
|
-
*
|
|
38
|
-
* Mecanismo poderá ser maturado num futuro próximo. Para mais detalhes, ler `README.md`.
|
|
39
|
-
*/
|
|
40
|
-
class ServidorDepuracao {
|
|
41
|
-
constructor(_instanciaDelegua) {
|
|
42
|
-
this.validarPontoParada = (caminhoArquivo, linha, conexao) => {
|
|
43
|
-
const hashArquivo = (0, cyrb53_1.default)(caminhoArquivo.toLowerCase());
|
|
44
|
-
if (!this.instanciaDelegua.arquivosAbertos.hasOwnProperty(hashArquivo)) {
|
|
45
|
-
conexao.write(`[adicionar-ponto-parada]: Arquivo '${caminhoArquivo}' não encontrado\n`);
|
|
46
|
-
return { sucesso: false };
|
|
47
|
-
}
|
|
48
|
-
if (this.instanciaDelegua.conteudoArquivosAbertos[hashArquivo].length < linha) {
|
|
49
|
-
conexao.write(`[adicionar-ponto-parada]: Linha ${linha} não existente em arquivo '${caminhoArquivo}'\n`);
|
|
50
|
-
return { sucesso: false };
|
|
51
|
-
}
|
|
52
|
-
return { sucesso: true, hashArquivo, linha };
|
|
53
|
-
};
|
|
54
|
-
this.comandoAdentrarEscopo = async (conexao) => {
|
|
55
|
-
let linhasResposta = '';
|
|
56
|
-
linhasResposta += "Recebido comando 'adentrar-escopo'\n";
|
|
57
|
-
linhasResposta += '--- adentrar-escopo-resposta ---\n';
|
|
58
|
-
this.interpretador.comando = 'adentrarEscopo';
|
|
59
|
-
this.interpretador.pontoDeParadaAtivo = false;
|
|
60
|
-
await this.interpretador.instrucaoPasso();
|
|
61
|
-
conexao.write(linhasResposta);
|
|
62
|
-
};
|
|
63
|
-
this.comandoAdicionarPontoParada = (comando, conexao) => {
|
|
64
|
-
conexao.write("Recebido comando 'adicionar-ponto-parada'\n");
|
|
65
|
-
if (comando.length < 3) {
|
|
66
|
-
conexao.write(`[adicionar-ponto-parada]: Formato: adicionar-ponto-parada /caminho/do/arquivo.egua 1\n`);
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
const validacaoPontoParada = this.validarPontoParada(comando[1], parseInt(comando[2]), conexao);
|
|
70
|
-
if (validacaoPontoParada.sucesso) {
|
|
71
|
-
this.interpretador.pontosParada.push({
|
|
72
|
-
hashArquivo: validacaoPontoParada.hashArquivo,
|
|
73
|
-
linha: validacaoPontoParada.linha,
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
this.comandoAvaliar = async (comando, conexao) => {
|
|
78
|
-
let linhasResposta = '';
|
|
79
|
-
comando.shift();
|
|
80
|
-
const expressaoAvaliar = comando.join(' ');
|
|
81
|
-
let retornoInterpretacao;
|
|
82
|
-
let resultadoInterpretacao;
|
|
83
|
-
try {
|
|
84
|
-
retornoInterpretacao = await this.instanciaDelegua.executarUmaLinha(expressaoAvaliar);
|
|
85
|
-
resultadoInterpretacao = retornoInterpretacao.resultado;
|
|
86
|
-
}
|
|
87
|
-
catch (erro) {
|
|
88
|
-
resultadoInterpretacao = [String(erro)];
|
|
89
|
-
}
|
|
90
|
-
linhasResposta += "Recebido comando 'avaliar'\n";
|
|
91
|
-
linhasResposta += '--- avaliar-resposta ---\n';
|
|
92
|
-
linhasResposta += JSON.stringify(resultadoInterpretacao[0]) + '\n';
|
|
93
|
-
linhasResposta += '--- fim-avaliar-resposta ---\n';
|
|
94
|
-
conexao.write(linhasResposta);
|
|
95
|
-
};
|
|
96
|
-
this.comandoAvaliarVariavel = async (comando, conexao) => {
|
|
97
|
-
let linhasResposta = '';
|
|
98
|
-
comando.shift();
|
|
99
|
-
const nomeVariavel = comando.join(' ');
|
|
100
|
-
linhasResposta += "Recebido comando 'avaliar-variavel'\n";
|
|
101
|
-
linhasResposta += '--- avaliar-variavel-resposta ---\n';
|
|
102
|
-
try {
|
|
103
|
-
linhasResposta += JSON.stringify(this.interpretador.obterVariavel(nomeVariavel)) + '\n';
|
|
104
|
-
}
|
|
105
|
-
catch (erro) {
|
|
106
|
-
linhasResposta += String(erro) + '\n';
|
|
107
|
-
}
|
|
108
|
-
linhasResposta += '--- fim-avaliar-variavel-resposta ---\n';
|
|
109
|
-
conexao.write(linhasResposta);
|
|
110
|
-
};
|
|
111
|
-
this.comandoContinuar = async (conexao) => {
|
|
112
|
-
let linhasResposta = '';
|
|
113
|
-
linhasResposta += "Recebido comando 'continuar'\n";
|
|
114
|
-
this.interpretador.pontoDeParadaAtivo = false;
|
|
115
|
-
await this.interpretador.instrucaoContinuarInterpretacao();
|
|
116
|
-
linhasResposta += '--- continuar-resposta ---\n';
|
|
117
|
-
conexao.write(linhasResposta);
|
|
118
|
-
};
|
|
119
|
-
this.comandoPilhaExecucao = (conexao) => {
|
|
120
|
-
let linhasResposta = '';
|
|
121
|
-
linhasResposta += "Recebido comando 'pilha-execucao'\n";
|
|
122
|
-
const pilhaEscoposExecucao = this.interpretador.pilhaEscoposExecucao;
|
|
123
|
-
linhasResposta += '--- pilha-execucao-resposta ---\n';
|
|
124
|
-
try {
|
|
125
|
-
for (let i = pilhaEscoposExecucao.pilha.length - 1; i > 0; i--) {
|
|
126
|
-
const elementoPilha = pilhaEscoposExecucao.pilha[i];
|
|
127
|
-
const posicaoDeclaracaoAtual = elementoPilha.declaracaoAtual >= elementoPilha.declaracoes.length
|
|
128
|
-
? elementoPilha.declaracoes.length - 1
|
|
129
|
-
: elementoPilha.declaracaoAtual;
|
|
130
|
-
const declaracaoAtual = elementoPilha.declaracoes[posicaoDeclaracaoAtual];
|
|
131
|
-
linhasResposta +=
|
|
132
|
-
this.instanciaDelegua.conteudoArquivosAbertos[declaracaoAtual.hashArquivo][declaracaoAtual.linha - 1].trim() +
|
|
133
|
-
' --- ' +
|
|
134
|
-
this.instanciaDelegua.arquivosAbertos[declaracaoAtual.hashArquivo] +
|
|
135
|
-
'::' +
|
|
136
|
-
declaracaoAtual.assinaturaMetodo +
|
|
137
|
-
'::' +
|
|
138
|
-
declaracaoAtual.linha +
|
|
139
|
-
'\n';
|
|
140
|
-
}
|
|
141
|
-
linhasResposta += '--- fim-pilha-execucao-resposta ---\n';
|
|
142
|
-
conexao.write(linhasResposta);
|
|
143
|
-
}
|
|
144
|
-
catch (erro) {
|
|
145
|
-
conexao.write(erro + '\n');
|
|
146
|
-
}
|
|
147
|
-
};
|
|
148
|
-
this.comandoPontosParada = (conexao) => {
|
|
149
|
-
let linhasResposta = '';
|
|
150
|
-
linhasResposta += "Recebido comando 'pontos-parada'\n";
|
|
151
|
-
for (const pontoParada of this.interpretador.pontosParada) {
|
|
152
|
-
linhasResposta +=
|
|
153
|
-
this.instanciaDelegua.arquivosAbertos[pontoParada.hashArquivo] + ': ' + pontoParada.linha + '\n';
|
|
154
|
-
}
|
|
155
|
-
conexao.write(linhasResposta);
|
|
156
|
-
};
|
|
157
|
-
this.comandoProximo = async (conexao) => {
|
|
158
|
-
let linhasResposta = '';
|
|
159
|
-
linhasResposta += "Recebido comando 'proximo'\n";
|
|
160
|
-
linhasResposta += '--- proximo-resposta ---\n';
|
|
161
|
-
this.interpretador.comando = 'proximo';
|
|
162
|
-
this.interpretador.pontoDeParadaAtivo = false;
|
|
163
|
-
try {
|
|
164
|
-
await this.interpretador.instrucaoPasso();
|
|
165
|
-
}
|
|
166
|
-
catch (erro) {
|
|
167
|
-
console.error(erro);
|
|
168
|
-
}
|
|
169
|
-
conexao.write(linhasResposta);
|
|
170
|
-
};
|
|
171
|
-
this.comandoRemoverPontoParada = (comando, conexao) => {
|
|
172
|
-
let linhasResposta = '';
|
|
173
|
-
linhasResposta += "Recebido comando 'remover-ponto-parada'\n";
|
|
174
|
-
if (comando.length < 3) {
|
|
175
|
-
linhasResposta += `[adicionar-ponto-parada]: Formato: adicionar-ponto-parada /caminho/do/arquivo.egua 1\n`;
|
|
176
|
-
conexao.write(linhasResposta);
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
const validacaoPontoParada = this.validarPontoParada(comando[1], parseInt(comando[2]), conexao);
|
|
180
|
-
if (validacaoPontoParada.sucesso) {
|
|
181
|
-
this.interpretador.pontosParada = this.interpretador.pontosParada.filter((p) => p.hashArquivo !== validacaoPontoParada.hashArquivo && p.linha !== validacaoPontoParada.linha);
|
|
182
|
-
}
|
|
183
|
-
};
|
|
184
|
-
this.comandoSairEscopo = async (conexao) => {
|
|
185
|
-
let linhasResposta = '';
|
|
186
|
-
linhasResposta += "Recebido comando 'sair-escopo'\n";
|
|
187
|
-
this.interpretador.pontoDeParadaAtivo = false;
|
|
188
|
-
await this.interpretador.instrucaoProximoESair();
|
|
189
|
-
linhasResposta += '--- sair-escopo-resposta ---\n';
|
|
190
|
-
conexao.write(linhasResposta);
|
|
191
|
-
};
|
|
192
|
-
this.comandoVariaveis = (conexao) => {
|
|
193
|
-
let linhasResposta = '';
|
|
194
|
-
linhasResposta += "Recebido comando 'variaveis'. Enviando variáveis do escopo atual\n";
|
|
195
|
-
const todasVariaveis = this.interpretador.pilhaEscoposExecucao.obterTodasVariaveis([]);
|
|
196
|
-
linhasResposta += '--- variaveis-resposta ---\n';
|
|
197
|
-
for (const variavel of todasVariaveis) {
|
|
198
|
-
linhasResposta += variavel.nome + ' :: ' + variavel.tipo + ' :: ' + variavel.valor + '\n';
|
|
199
|
-
}
|
|
200
|
-
linhasResposta += '--- fim-variaveis-resposta ---\n';
|
|
201
|
-
conexao.write(linhasResposta);
|
|
202
|
-
};
|
|
203
|
-
/**
|
|
204
|
-
* Função que descreve como conexão com clientes de depuração deve ser operada.
|
|
205
|
-
* @param conexao Instância de conexão, tipo net.Socket.
|
|
206
|
-
*/
|
|
207
|
-
this.operarConexao = (conexao) => {
|
|
208
|
-
const enderecoRemoto = conexao.remoteAddress + ':' + conexao.remotePort;
|
|
209
|
-
process.stdout.write('\n[Depurador] Nova conexão de cliente de ' + enderecoRemoto + '\ndelegua> ');
|
|
210
|
-
conexao.setEncoding('utf8');
|
|
211
|
-
this.conexoes[this.contadorConexoes++] = conexao;
|
|
212
|
-
// Aqui, dados pode ter uma série de comandos, sendo um por linha.
|
|
213
|
-
const aoReceberDados = (dados) => {
|
|
214
|
-
const comandos = String(dados).split('\n');
|
|
215
|
-
process.stdout.write('\n[Depurador] Dados da conexão vindos de ' + enderecoRemoto + ': ' + comandos + '\ndelegua> ');
|
|
216
|
-
for (const comando of comandos) {
|
|
217
|
-
const partesComando = comando.split(' ');
|
|
218
|
-
switch (partesComando[0]) {
|
|
219
|
-
case 'adentrar-escopo':
|
|
220
|
-
this.comandoAdentrarEscopo(conexao);
|
|
221
|
-
break;
|
|
222
|
-
case 'adicionar-ponto-parada':
|
|
223
|
-
this.comandoAdicionarPontoParada(partesComando, conexao);
|
|
224
|
-
break;
|
|
225
|
-
case 'avaliar':
|
|
226
|
-
this.comandoAvaliar(partesComando, conexao);
|
|
227
|
-
break;
|
|
228
|
-
case 'avaliar-variavel':
|
|
229
|
-
this.comandoAvaliarVariavel(partesComando, conexao);
|
|
230
|
-
break;
|
|
231
|
-
case 'continuar':
|
|
232
|
-
this.comandoContinuar(conexao);
|
|
233
|
-
break;
|
|
234
|
-
case 'pilha-execucao':
|
|
235
|
-
this.comandoPilhaExecucao(conexao);
|
|
236
|
-
break;
|
|
237
|
-
case 'pontos-parada':
|
|
238
|
-
this.comandoPontosParada(conexao);
|
|
239
|
-
break;
|
|
240
|
-
case 'proximo':
|
|
241
|
-
this.comandoProximo(conexao);
|
|
242
|
-
break;
|
|
243
|
-
case 'remover-ponto-parada':
|
|
244
|
-
this.comandoRemoverPontoParada(partesComando, conexao);
|
|
245
|
-
break;
|
|
246
|
-
case 'sair-escopo':
|
|
247
|
-
this.comandoSairEscopo(conexao);
|
|
248
|
-
break;
|
|
249
|
-
case 'tchau':
|
|
250
|
-
conexao.write("Recebido comando 'tchau'. Conexão será encerrada\n");
|
|
251
|
-
this.finalizarServidorDepuracao();
|
|
252
|
-
return;
|
|
253
|
-
case 'variaveis':
|
|
254
|
-
this.comandoVariaveis(conexao);
|
|
255
|
-
break;
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
};
|
|
259
|
-
const aoFecharConexao = () => {
|
|
260
|
-
process.stdout.write('\n[Depurador] Conexão de ' + enderecoRemoto + ' fechada\ndelegua> ');
|
|
261
|
-
};
|
|
262
|
-
const aoObterErro = (erro) => {
|
|
263
|
-
process.stdout.write('\n[Depurador] Conexão ' + enderecoRemoto + ' com erro: ' + erro.message + '\ndelegua> ');
|
|
264
|
-
};
|
|
265
|
-
// `.bind()` é necessário aqui para que os eventos não usem net.Socket ou net.Server como o `this`,
|
|
266
|
-
// como acontece normalmente se o `.bind()` não é chamado.
|
|
267
|
-
conexao.on('data', aoReceberDados.bind(this));
|
|
268
|
-
conexao.once('close', aoFecharConexao.bind(this));
|
|
269
|
-
conexao.on('error', aoObterErro.bind(this));
|
|
270
|
-
};
|
|
271
|
-
this.instanciaDelegua = _instanciaDelegua;
|
|
272
|
-
this.instanciaDelegua.funcaoDeRetorno = this.escreverSaidaParaTodosClientes.bind(this);
|
|
273
|
-
this.interpretador = this.instanciaDelegua.interpretador;
|
|
274
|
-
this.interpretador.funcaoDeRetorno = this.escreverSaidaParaTodosClientes.bind(this);
|
|
275
|
-
this.servidor = net.createServer();
|
|
276
|
-
this.conexoes = {};
|
|
277
|
-
this.contadorConexoes = 0;
|
|
278
|
-
this.operarConexao.bind(this);
|
|
279
|
-
}
|
|
280
|
-
iniciarServidorDepuracao() {
|
|
281
|
-
// É necessário mudar o `this` aqui por `.bind()`, senão `this` será net.Server dentro dos métodos.
|
|
282
|
-
this.servidor.on('connection', this.operarConexao.bind(this));
|
|
283
|
-
this.servidor.listen(7777);
|
|
284
|
-
process.stdout.write('\n[Depurador] Servidor de depuração iniciado na porta 7777');
|
|
285
|
-
return this.servidor.address();
|
|
286
|
-
}
|
|
287
|
-
escreverSaidaParaTodosClientes(mensagem) {
|
|
288
|
-
Object.keys(this.conexoes).forEach((chave) => {
|
|
289
|
-
this.conexoes[chave].write('Enviando mensagem de saída\n--- mensagem-saida ---\n' + mensagem + '\n');
|
|
290
|
-
});
|
|
291
|
-
}
|
|
292
|
-
finalizarServidorDepuracao() {
|
|
293
|
-
Object.keys(this.conexoes).forEach((chave) => {
|
|
294
|
-
this.conexoes[chave].write('--- finalizando ---\n');
|
|
295
|
-
this.conexoes[chave].end();
|
|
296
|
-
});
|
|
297
|
-
this.servidor.close();
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
exports.ServidorDepuracao = ServidorDepuracao;
|
|
301
|
-
//# sourceMappingURL=servidor-depuracao.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"servidor-depuracao.js","sourceRoot":"","sources":["../../../../fontes/depuracao/remota/servidor-depuracao.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Importar } from '../declaracoes';
|
|
2
|
-
import { DeleguaModulo } from '../estruturas';
|
|
3
|
-
import { ImportadorInterface } from '../interfaces/importador-interface';
|
|
4
|
-
import { InterpretadorBase } from './interpretador-base';
|
|
5
|
-
/**
|
|
6
|
-
* O Interpretador visita todos os elementos complexos gerados pelo avaliador sintático (_parser_),
|
|
7
|
-
* e de fato executa a lógica de programação descrita no código.
|
|
8
|
-
*/
|
|
9
|
-
export declare class Interpretador extends InterpretadorBase {
|
|
10
|
-
constructor(importador: ImportadorInterface, diretorioBase: string, performance?: boolean, funcaoDeRetorno?: Function);
|
|
11
|
-
/**
|
|
12
|
-
* Importa um arquivo como módulo.
|
|
13
|
-
* @param declaracao A declaração de importação.
|
|
14
|
-
* @returns Ou um `DeleguaModulo`, ou um dicionário de funções.
|
|
15
|
-
*/
|
|
16
|
-
visitarDeclaracaoImportar(declaracao: Importar): Promise<DeleguaModulo>;
|
|
17
|
-
}
|
|
@@ -1,80 +0,0 @@
|
|
|
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.Interpretador = void 0;
|
|
30
|
-
const caminho = __importStar(require("path"));
|
|
31
|
-
const estruturas_1 = require("../estruturas");
|
|
32
|
-
const interpretador_base_1 = require("./interpretador-base");
|
|
33
|
-
const importar_biblioteca_1 = __importDefault(require("../bibliotecas/importar-biblioteca"));
|
|
34
|
-
/**
|
|
35
|
-
* O Interpretador visita todos os elementos complexos gerados pelo avaliador sintático (_parser_),
|
|
36
|
-
* e de fato executa a lógica de programação descrita no código.
|
|
37
|
-
*/
|
|
38
|
-
class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
39
|
-
constructor(importador, diretorioBase, performance = false, funcaoDeRetorno = null) {
|
|
40
|
-
super(importador, diretorioBase, performance, funcaoDeRetorno);
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Importa um arquivo como módulo.
|
|
44
|
-
* @param declaracao A declaração de importação.
|
|
45
|
-
* @returns Ou um `DeleguaModulo`, ou um dicionário de funções.
|
|
46
|
-
*/
|
|
47
|
-
async visitarDeclaracaoImportar(declaracao) {
|
|
48
|
-
const caminhoRelativo = await this.avaliar(declaracao.caminho);
|
|
49
|
-
const caminhoTotal = caminho.join(this.diretorioBase, caminhoRelativo);
|
|
50
|
-
const nomeArquivo = caminho.basename(caminhoTotal);
|
|
51
|
-
if (!caminhoTotal.endsWith('.delegua')) {
|
|
52
|
-
try {
|
|
53
|
-
return await (0, importar_biblioteca_1.default)(caminhoRelativo);
|
|
54
|
-
}
|
|
55
|
-
catch (erro) {
|
|
56
|
-
this.erros.push(erro);
|
|
57
|
-
return null;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
const conteudoImportacao = this.importador.importar(caminhoRelativo, false, false);
|
|
61
|
-
const retornoInterpretador = await this.interpretar(conteudoImportacao.retornoAvaliadorSintatico.declaracoes, true);
|
|
62
|
-
const funcoesChamaveis = this.pilhaEscoposExecucao.obterTodasDeleguaFuncao();
|
|
63
|
-
const declaracoesClasse = this.pilhaEscoposExecucao.obterTodasDeclaracaoClasse();
|
|
64
|
-
if (declaracoesClasse.hasOwnProperty('super')) {
|
|
65
|
-
delete declaracoesClasse['super'];
|
|
66
|
-
}
|
|
67
|
-
const novoModulo = new estruturas_1.DeleguaModulo();
|
|
68
|
-
const chavesFuncoesChamaveis = Object.keys(funcoesChamaveis);
|
|
69
|
-
for (let i = 0; i < chavesFuncoesChamaveis.length; i++) {
|
|
70
|
-
novoModulo.componentes[chavesFuncoesChamaveis[i]] = funcoesChamaveis[chavesFuncoesChamaveis[i]];
|
|
71
|
-
}
|
|
72
|
-
const chavesDeclaracoesClasse = Object.keys(declaracoesClasse);
|
|
73
|
-
for (let i = 0; i < chavesDeclaracoesClasse.length; i++) {
|
|
74
|
-
novoModulo.componentes[chavesDeclaracoesClasse[i]] = declaracoesClasse[chavesDeclaracoesClasse[i]];
|
|
75
|
-
}
|
|
76
|
-
return novoModulo;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
exports.Interpretador = Interpretador;
|
|
80
|
-
//# sourceMappingURL=interpretador.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interpretador.js","sourceRoot":"","sources":["../../../fontes/interpretador/interpretador.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAgC;AAGhC,8CAA8C;AAG9C,6DAAyD;AAEzD,6FAAwE;AAGxE;;;GAGG;AACH,MAAa,aAAc,SAAQ,sCAAiB;IAChD,YACI,UAA+B,EAC/B,aAAqB,EACrB,WAAW,GAAG,KAAK,EACnB,kBAA4B,IAAI;QAEhC,KAAK,CAAC,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;IACnE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,yBAAyB,CAAC,UAAoB;QAChD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QACvE,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAEnD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YACpC,IAAI;gBACA,OAAO,MAAM,IAAA,6BAAsB,EAAC,eAAe,CAAC,CAAC;aACxD;YAAC,OAAO,IAAS,EAAE;gBAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtB,OAAO,IAAI,CAAC;aACf;SACJ;QAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACnF,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,WAAW,CAC/C,kBAAkB,CAAC,yBAAyB,CAAC,WAAW,EACxD,IAAI,CACP,CAAC;QAEF,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,EAAE,CAAC;QAE7E,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,0BAA0B,EAAE,CAAC;QAEjF,IAAI,iBAAiB,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;YAC3C,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;SACrC;QAED,MAAM,UAAU,GAAG,IAAI,0BAAa,EAAE,CAAC;QAEvC,MAAM,sBAAsB,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpD,UAAU,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;SACnG;QAED,MAAM,uBAAuB,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,uBAAuB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrD,UAAU,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;SACtG;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ;AAzDD,sCAyDC"}
|