@designliquido/delegua-node 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/README.md +80 -80
  2. package/bin/delegua +2 -2
  3. package/bin/package.json +36 -36
  4. package/execucao.d.ts +1 -1
  5. package/execucao.js +42 -42
  6. package/fontes/delegua.d.ts +86 -86
  7. package/fontes/delegua.js +371 -371
  8. package/fontes/depuracao/index.d.ts +1 -1
  9. package/fontes/depuracao/index.js +17 -17
  10. package/fontes/depuracao/servidor-depuracao.d.ts +42 -42
  11. package/fontes/depuracao/servidor-depuracao.js +300 -300
  12. package/fontes/importador/importador.d.ts +27 -27
  13. package/fontes/importador/importador.js +90 -90
  14. package/fontes/importador/index.d.ts +2 -2
  15. package/fontes/importador/index.js +18 -18
  16. package/fontes/importador/retorno-importador.d.ts +9 -9
  17. package/fontes/importador/retorno-importador.js +2 -2
  18. package/fontes/interfaces/delegua-interface.d.ts +24 -24
  19. package/fontes/interfaces/delegua-interface.js +2 -2
  20. package/fontes/interfaces/importador-interface.d.ts +8 -8
  21. package/fontes/interfaces/importador-interface.js +2 -2
  22. package/fontes/interfaces/index.d.ts +2 -2
  23. package/fontes/interfaces/index.js +18 -18
  24. package/fontes/interpretador/dialetos/interpretador-visualg-com-depuracao-importacao.d.ts +14 -14
  25. package/fontes/interpretador/dialetos/interpretador-visualg-com-depuracao-importacao.js +76 -76
  26. package/fontes/interpretador/index.d.ts +1 -1
  27. package/fontes/interpretador/index.js +17 -17
  28. package/fontes/interpretador/interpretador-com-depuracao-importacao.d.ts +14 -14
  29. package/fontes/interpretador/interpretador-com-depuracao-importacao.js +76 -76
  30. package/fontes/interpretador/interpretador.d.ts +18 -18
  31. package/fontes/interpretador/interpretador.js +80 -80
  32. package/fontes/interpretador/mecanismo-importacao-bibliotecas.d.ts +2 -2
  33. package/fontes/interpretador/mecanismo-importacao-bibliotecas.js +131 -131
  34. package/package.json +36 -36
package/README.md CHANGED
@@ -1,80 +1,80 @@
1
- # delegua-node
2
-
3
- Versão de Delégua com suporte a importação de pacotes pelo ecossistema do Node.js.
4
-
5
- ## Motivação
6
-
7
- Em versões anteriores, o suporte ao ecossistema Node vinha embutido no pacote do núcleo da linguagem. Isso virou um problema quando tentamos importar o pacote numa aplicação com [Webpack](https://webpack.js.org/).
8
-
9
- Como o Webpack tenta ler todas as referências de todos os módulos recursivamente, independente se estamos importando um módulo ou vários, há problemas quando tentamos importar `node:child_process` na parte de navegador de internet e as aplicações falham.
10
-
11
- ### Implicações
12
-
13
- Se sua aplicação:
14
-
15
- - Precisa suportar importações, seja de outros fontes, seja de bibliotecas NPM
16
- - Pode executar no ambiente Node.js
17
-
18
- Ela pode, então, usar este pacote. Caso contrário, o uso apenas do núcleo da linguagem é uma escolha melhor.
19
-
20
- ## Instalação
21
-
22
- Se quiser instalar no seu computador,
23
- [você deve ter antes o Node.js instalado em seu ambiente](https://dicasdejavascript.com.br/instalacao-do-nodejs-e-npm-no-windows-passo-a-passo).
24
-
25
- Com o Node.js instalado, execute o seguinte comando em um _prompt_ de comando (Terminal, PowerShell ou `cmd` no Windows, Terminal ou `sh` em Mac e Linux):
26
-
27
- ```
28
- npm install -g delegua
29
- ```
30
-
31
- ### Usando como LAIR (Leia-Avalie-Imprima-Repita) em console
32
-
33
- Feita a instalação no seu ambiente, execute o seguinte comando:
34
-
35
- ```
36
- delegua
37
- ```
38
-
39
- Você terá um interpretador Delégua que avalia expressões linha a linha.
40
-
41
- Um exemplo de uso é como uma calculadora:
42
-
43
- ```js
44
- delegua> 2 + 2
45
- 4
46
-
47
- delegua> 2 * 3
48
- 6
49
-
50
- delegua> 2 ** 10
51
- 1024
52
- ```
53
-
54
- Para finalizar a execução do interpretador LAIR Delégua, use o atalho <key>Ctrl</key> + <key>C</key> (todos os sistemas operacionais).
55
-
56
- #### Dialetos que suportam o modo LAIR
57
-
58
- - Delégua
59
- - Égua Clássico
60
- - EguaP
61
-
62
- ### Executando arquivos
63
-
64
- É possível usar o interpretador com outros dialetos, como Égua.
65
-
66
- ```
67
- delegua --dialeto egua
68
- ```
69
-
70
- [Veja aqui todos os dialetos suportados](https://github.com/DesignLiquido/delegua/wiki/Dialetos).
71
-
72
- Se não quiser instalar as bibliotecas que acompanham Delégua, apenas [o núcleo da linguagem](https://github.com/DesignLiquido/delegua) pode ser instalado:
73
-
74
- ```
75
- npm install -g @designliquido/delegua
76
- ```
77
-
78
- ## Tradução para outras linguagens
79
-
80
- Delégua traduz para JavaScript e vice-versa. [Mais informações aqui](https://github.com/DesignLiquido/delegua/wiki/Tradu%C3%A7%C3%A3o-para-outras-linguagens).
1
+ # delegua-node
2
+
3
+ Versão de Delégua com suporte a importação de pacotes pelo ecossistema do Node.js.
4
+
5
+ ## Motivação
6
+
7
+ Em versões anteriores, o suporte ao ecossistema Node vinha embutido no pacote do núcleo da linguagem. Isso virou um problema quando tentamos importar o pacote numa aplicação com [Webpack](https://webpack.js.org/).
8
+
9
+ Como o Webpack tenta ler todas as referências de todos os módulos recursivamente, independente se estamos importando um módulo ou vários, há problemas quando tentamos importar `node:child_process` na parte de navegador de internet e as aplicações falham.
10
+
11
+ ### Implicações
12
+
13
+ Se sua aplicação:
14
+
15
+ - Precisa suportar importações, seja de outros fontes, seja de bibliotecas NPM
16
+ - Pode executar no ambiente Node.js
17
+
18
+ Ela pode, então, usar este pacote. Caso contrário, o uso apenas do núcleo da linguagem é uma escolha melhor.
19
+
20
+ ## Instalação
21
+
22
+ Se quiser instalar no seu computador,
23
+ [você deve ter antes o Node.js instalado em seu ambiente](https://dicasdejavascript.com.br/instalacao-do-nodejs-e-npm-no-windows-passo-a-passo).
24
+
25
+ Com o Node.js instalado, execute o seguinte comando em um _prompt_ de comando (Terminal, PowerShell ou `cmd` no Windows, Terminal ou `sh` em Mac e Linux):
26
+
27
+ ```
28
+ npm install -g delegua
29
+ ```
30
+
31
+ ### Usando como LAIR (Leia-Avalie-Imprima-Repita) em console
32
+
33
+ Feita a instalação no seu ambiente, execute o seguinte comando:
34
+
35
+ ```
36
+ delegua
37
+ ```
38
+
39
+ Você terá um interpretador Delégua que avalia expressões linha a linha.
40
+
41
+ Um exemplo de uso é como uma calculadora:
42
+
43
+ ```js
44
+ delegua> 2 + 2
45
+ 4
46
+
47
+ delegua> 2 * 3
48
+ 6
49
+
50
+ delegua> 2 ** 10
51
+ 1024
52
+ ```
53
+
54
+ Para finalizar a execução do interpretador LAIR Delégua, use o atalho <key>Ctrl</key> + <key>C</key> (todos os sistemas operacionais).
55
+
56
+ #### Dialetos que suportam o modo LAIR
57
+
58
+ - Delégua
59
+ - Égua Clássico
60
+ - EguaP
61
+
62
+ ### Executando arquivos
63
+
64
+ É possível usar o interpretador com outros dialetos, como Égua.
65
+
66
+ ```
67
+ delegua --dialeto egua
68
+ ```
69
+
70
+ [Veja aqui todos os dialetos suportados](https://github.com/DesignLiquido/delegua/wiki/Dialetos).
71
+
72
+ Se não quiser instalar as bibliotecas que acompanham Delégua, apenas [o núcleo da linguagem](https://github.com/DesignLiquido/delegua) pode ser instalado:
73
+
74
+ ```
75
+ npm install -g @designliquido/delegua
76
+ ```
77
+
78
+ ## Tradução para outras linguagens
79
+
80
+ Delégua traduz para JavaScript e vice-versa. [Mais informações aqui](https://github.com/DesignLiquido/delegua/wiki/Tradu%C3%A7%C3%A3o-para-outras-linguagens).
package/bin/delegua CHANGED
@@ -1,3 +1,3 @@
1
- #! /usr/bin/env node
2
-
1
+ #! /usr/bin/env node
2
+
3
3
  require('../execucao.js');
package/bin/package.json CHANGED
@@ -1,36 +1,36 @@
1
- {
2
- "name": "@designliquido/delegua-node",
3
- "version": "0.6.0",
4
- "description": "Linguagem Delégua com capacidades para ecossistema Node.js.",
5
- "scripts": {
6
- "empacotar": "rimraf ./dist && tsc && copyfiles -V ./bin/delegua ./bin/delegua.cmd ./dist && copyfiles -V ./package.json ./dist/bin && copyfiles -V ./README.md ./dist",
7
- "testes-unitarios": "jest --coverage",
8
- "testes:egua": "./bin/delegua-ts exemplos/dialetos/egua-classico/testes.egua",
9
- "testes:delegua:bhaskara": "./bin/delegua-ts exemplos/dialetos/egua-classico/bhaskara.egua",
10
- "testes:delegua:fibonacci": "./bin/delegua-ts exemplos/dialetos/egua-classico/fibonacci.egua",
11
- "testes:egua-classico": "./bin/delegua-ts --dialeto egua exemplos/dialetos/egua-classico/testes.egua",
12
- "testes:servidor-depuracao": "ts-node ./fontes/depuracao/servidor-depuracao.ts"
13
- },
14
- "dependencies": {
15
- "@designliquido/delegua": "^0.14.7",
16
- "chalk": "4.1.2",
17
- "commander": "^9.4.1"
18
- },
19
- "devDependencies": {
20
- "@designliquido/delegua-estatistica": "^0.0.5",
21
- "@designliquido/delegua-fisica": "^0.0.2",
22
- "@designliquido/delegua-json": "^0.0.0",
23
- "@designliquido/delegua-matematica": "^0.2.0",
24
- "@designliquido/delegua-tempo": "^0.0.1",
25
- "@types/estree": "^1.0.0",
26
- "@types/jest": "^29.4.0",
27
- "@types/node": "^18.11.19",
28
- "copyfiles": "^2.4.1",
29
- "jest": "^29.4.1",
30
- "release-it": "^15.6.0",
31
- "rimraf": "^4.1.2",
32
- "ts-jest": "^29.0.5",
33
- "ts-node": "^10.9.1",
34
- "typescript": "^4.9.5"
35
- }
36
- }
1
+ {
2
+ "name": "@designliquido/delegua-node",
3
+ "version": "0.8.0",
4
+ "description": "Linguagem Delégua com capacidades para ecossistema Node.js.",
5
+ "scripts": {
6
+ "empacotar": "rimraf ./dist && tsc && copyfiles -V ./bin/delegua ./bin/delegua.cmd ./dist && copyfiles -V ./package.json ./dist/bin && copyfiles -V ./README.md ./dist",
7
+ "testes-unitarios": "jest --coverage",
8
+ "testes:egua": "./bin/delegua-ts exemplos/dialetos/egua-classico/testes.egua",
9
+ "testes:delegua:bhaskara": "./bin/delegua-ts exemplos/dialetos/egua-classico/bhaskara.egua",
10
+ "testes:delegua:fibonacci": "./bin/delegua-ts exemplos/dialetos/egua-classico/fibonacci.egua",
11
+ "testes:egua-classico": "./bin/delegua-ts --dialeto egua exemplos/dialetos/egua-classico/testes.egua",
12
+ "testes:servidor-depuracao": "ts-node ./fontes/depuracao/servidor-depuracao.ts"
13
+ },
14
+ "dependencies": {
15
+ "@designliquido/delegua": "^0.15.0",
16
+ "chalk": "4.1.2",
17
+ "commander": "^9.4.1"
18
+ },
19
+ "devDependencies": {
20
+ "@designliquido/delegua-estatistica": "^0.0.5",
21
+ "@designliquido/delegua-fisica": "^0.0.2",
22
+ "@designliquido/delegua-json": "^0.0.0",
23
+ "@designliquido/delegua-matematica": "^0.2.0",
24
+ "@designliquido/delegua-tempo": "^0.0.1",
25
+ "@types/estree": "^1.0.0",
26
+ "@types/jest": "^29.4.0",
27
+ "@types/node": "^18.11.19",
28
+ "copyfiles": "^2.4.1",
29
+ "jest": "^29.4.1",
30
+ "release-it": "^15.6.0",
31
+ "rimraf": "^4.1.2",
32
+ "ts-jest": "^29.0.5",
33
+ "ts-node": "^10.9.1",
34
+ "typescript": "^4.9.5"
35
+ }
36
+ }
package/execucao.d.ts CHANGED
@@ -1 +1 @@
1
- export {};
1
+ export {};
package/execucao.js CHANGED
@@ -1,43 +1,43 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const delegua_1 = require("./fontes/delegua");
4
- const commander_1 = require("commander");
5
- const principal = () => {
6
- const analisadorArgumentos = new commander_1.Command();
7
- let codigoOuNomeArquivo;
8
- analisadorArgumentos
9
- .option('-c, --codigo <codigo>', 'Código a ser avaliado.', '')
10
- .option('-d, --dialeto <dialeto>', 'Dialeto a ser usado. Padrão: delegua.', 'delegua')
11
- .option('-D, --depurador', 'Habilita o depurador, permitindo depuração em um ambiente como o VSCode. Sempre desabilitada em modo LAIR.', false)
12
- .option('-p, --performance', 'Visualizar indicadores de performance. Desabilitado por padrão.', false)
13
- .option('-s, --saida', 'Gera arquivo de saida ao traduzir arquivo.', false)
14
- .option('-t, --traduzir <linguagem>', 'Traduz o código do arquivo passado como parâmetro.')
15
- .argument('[arquivos...]', 'Nomes dos arquivos (opcional)')
16
- .action((argumentos) => {
17
- if (argumentos.length > 0) {
18
- codigoOuNomeArquivo = argumentos[0];
19
- }
20
- });
21
- analisadorArgumentos.parse();
22
- const opcoes = analisadorArgumentos.opts();
23
- const delegua = new delegua_1.Delegua(opcoes.dialeto, opcoes.performance, codigoOuNomeArquivo ? opcoes.depurador : false, opcoes.traduzir);
24
- if (opcoes.codigo) {
25
- delegua.executarCodigoComoArgumento(opcoes.codigo || codigoOuNomeArquivo);
26
- }
27
- else {
28
- if (codigoOuNomeArquivo) {
29
- if (opcoes.traduzir) {
30
- const extensaoSaida = opcoes.traduzir;
31
- delegua.traduzirArquivo(codigoOuNomeArquivo, opcoes.saida, extensaoSaida);
32
- }
33
- else {
34
- delegua.carregarArquivo(codigoOuNomeArquivo);
35
- }
36
- }
37
- else {
38
- delegua.iniciarLairDelegua();
39
- }
40
- }
41
- };
42
- principal();
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const delegua_1 = require("./fontes/delegua");
4
+ const commander_1 = require("commander");
5
+ const principal = () => {
6
+ const analisadorArgumentos = new commander_1.Command();
7
+ let codigoOuNomeArquivo;
8
+ analisadorArgumentos
9
+ .option('-c, --codigo <codigo>', 'Código a ser avaliado.', '')
10
+ .option('-d, --dialeto <dialeto>', 'Dialeto a ser usado. Padrão: delegua.', 'delegua')
11
+ .option('-D, --depurador', 'Habilita o depurador, permitindo depuração em um ambiente como o VSCode. Sempre desabilitada em modo LAIR.', false)
12
+ .option('-p, --performance', 'Visualizar indicadores de performance. Desabilitado por padrão.', false)
13
+ .option('-s, --saida', 'Gera arquivo de saida ao traduzir arquivo.', false)
14
+ .option('-t, --traduzir <linguagem>', 'Traduz o código do arquivo passado como parâmetro.')
15
+ .argument('[arquivos...]', 'Nomes dos arquivos (opcional)')
16
+ .action((argumentos) => {
17
+ if (argumentos.length > 0) {
18
+ codigoOuNomeArquivo = argumentos[0];
19
+ }
20
+ });
21
+ analisadorArgumentos.parse();
22
+ const opcoes = analisadorArgumentos.opts();
23
+ const delegua = new delegua_1.Delegua(opcoes.dialeto, opcoes.performance, codigoOuNomeArquivo ? opcoes.depurador : false, opcoes.traduzir);
24
+ if (opcoes.codigo) {
25
+ delegua.executarCodigoComoArgumento(opcoes.codigo || codigoOuNomeArquivo);
26
+ }
27
+ else {
28
+ if (codigoOuNomeArquivo) {
29
+ if (opcoes.traduzir) {
30
+ const extensaoSaida = opcoes.traduzir;
31
+ delegua.traduzirArquivo(codigoOuNomeArquivo, opcoes.saida, extensaoSaida);
32
+ }
33
+ else {
34
+ delegua.carregarArquivo(codigoOuNomeArquivo);
35
+ }
36
+ }
37
+ else {
38
+ delegua.iniciarLairDelegua();
39
+ }
40
+ }
41
+ };
42
+ principal();
43
43
  //# sourceMappingURL=execucao.js.map
@@ -1,86 +1,86 @@
1
- import { AvaliadorSintaticoInterface, InterpretadorInterface, LexadorInterface, RetornoExecucaoInterface, SimboloInterface } from '@designliquido/delegua/fontes/interfaces';
2
- import { RetornoImportador } from './importador';
3
- import { TradutorJavaScript, TradutorReversoJavaScript } from '@designliquido/delegua/fontes/tradutores';
4
- import { ServidorDepuracao } from './depuracao';
5
- import { DeleguaInterface, ImportadorInterface } from './interfaces';
6
- /**
7
- * O núcleo da linguagem.
8
- *
9
- * Responsável por avaliar a entrada fornecida, entender o código e executá-lo.
10
- */
11
- export declare class Delegua implements DeleguaInterface {
12
- dialeto: string;
13
- dialetos: {
14
- [identificador: string]: string;
15
- };
16
- arquivosAbertos: {
17
- [identificador: string]: string;
18
- };
19
- conteudoArquivosAbertos: {
20
- [identificador: string]: string[];
21
- };
22
- interpretador: InterpretadorInterface;
23
- lexador: LexadorInterface;
24
- avaliadorSintatico: AvaliadorSintaticoInterface;
25
- importador: ImportadorInterface;
26
- tradutorJavaScript: TradutorJavaScript;
27
- tradutorReversoJavascript: TradutorReversoJavaScript;
28
- funcaoDeRetorno: Function;
29
- modoDepuracao: boolean;
30
- servidorDepuracao: ServidorDepuracao;
31
- constructor(dialeto?: string, performance?: boolean, depurador?: boolean, traduzir?: any, funcaoDeRetorno?: Function);
32
- versao(): string;
33
- /**
34
- * LAIR (Leia-Avalie-Imprima-Repita) é o modo em que Delégua executa em modo console,
35
- * ou seja, esperando como entrada linhas de código fornecidas pelo usuário.
36
- */
37
- iniciarLairDelegua(): void;
38
- /**
39
- * Executa uma linha. Usado pelo modo LAIR e pelo servidor de depuração, quando recebe um comando 'avaliar'.
40
- * @param linha A linha a ser avaliada.
41
- * @returns O resultado da execução, com os retornos e respectivos erros, se houverem.
42
- */
43
- executarUmaLinha(linha: string): Promise<RetornoExecucaoInterface>;
44
- /**
45
- * Instancia um servidor de depuração, normalmente recebendo requisições na porta 7777.
46
- */
47
- iniciarDepuracao(): void;
48
- /**
49
- * Pede ao servidor de depuração que finalize a execução.
50
- * Se não for feito, o servidor de depuração mantém um _stream_ aberto e nunca finaliza.
51
- * Mais informações: https://stackoverflow.com/a/47456805/1314276
52
- */
53
- finalizarDepuracao(): void;
54
- /**
55
- * Verifica erros nas etapas de lexação e avaliação sintática.
56
- * @param retornoImportador Um objeto que implementa a interface RetornoImportador.
57
- * @returns Verdadeiro se há erros. Falso caso contrário.
58
- */
59
- afericaoErros(retornoImportador: RetornoImportador): boolean;
60
- /**
61
- * Realiza a tradução do arquivo passado como parâmetro no comando de execução.
62
- * @param caminhoRelativoArquivo O caminho do arquivo.
63
- * @param gerarArquivoSaida Se o resultado da tradução deve ser escrito em arquivo.
64
- * Se verdadeiro, os arquivos de saída são escritos no mesmo diretório
65
- * do arquivo passado no primeiro parâmetro.
66
- */
67
- traduzirArquivo(caminhoRelativoArquivo: string, gerarArquivoSaida: boolean, extensaoArquivoSaida: string): any;
68
- executarCodigoComoArgumento(codigo: string): Promise<void>;
69
- /**
70
- * Execução por arquivo.
71
- * @param caminhoRelativoArquivo O caminho no sistema operacional do arquivo a ser aberto.
72
- */
73
- carregarArquivo(caminhoRelativoArquivo: string): Promise<any>;
74
- /**
75
- * A execução do código de fato.
76
- * @param retornoImportador Dados retornados do Importador, como o retorno do Lexador, do Avaliador
77
- * Sintático e respectivos erros.
78
- * @param manterAmbiente Indicação se ambiente deve ser mantido ou não. Normalmente verdadeiro
79
- * para LAIR, falso para execução por arquivo.
80
- * @returns Um objeto com o resultado da execução.
81
- */
82
- executar(retornoImportador: RetornoImportador, manterAmbiente?: boolean): Promise<RetornoExecucaoInterface>;
83
- reportar(linha: number, onde: any, mensagem: string): void;
84
- erro(simbolo: SimboloInterface, mensagemDeErro: string): void;
85
- erroEmTempoDeExecucao(erro: any): void;
86
- }
1
+ import { AvaliadorSintaticoInterface, InterpretadorInterface, LexadorInterface, RetornoExecucaoInterface, SimboloInterface } from '@designliquido/delegua/fontes/interfaces';
2
+ import { RetornoImportador } from './importador';
3
+ import { TradutorJavaScript, TradutorReversoJavaScript } from '@designliquido/delegua/fontes/tradutores';
4
+ import { ServidorDepuracao } from './depuracao';
5
+ import { DeleguaInterface, ImportadorInterface } from './interfaces';
6
+ /**
7
+ * O núcleo da linguagem.
8
+ *
9
+ * Responsável por avaliar a entrada fornecida, entender o código e executá-lo.
10
+ */
11
+ export declare class Delegua implements DeleguaInterface {
12
+ dialeto: string;
13
+ dialetos: {
14
+ [identificador: string]: string;
15
+ };
16
+ arquivosAbertos: {
17
+ [identificador: string]: string;
18
+ };
19
+ conteudoArquivosAbertos: {
20
+ [identificador: string]: string[];
21
+ };
22
+ interpretador: InterpretadorInterface;
23
+ lexador: LexadorInterface;
24
+ avaliadorSintatico: AvaliadorSintaticoInterface;
25
+ importador: ImportadorInterface;
26
+ tradutorJavaScript: TradutorJavaScript;
27
+ tradutorReversoJavascript: TradutorReversoJavaScript;
28
+ funcaoDeRetorno: Function;
29
+ modoDepuracao: boolean;
30
+ servidorDepuracao: ServidorDepuracao;
31
+ constructor(dialeto?: string, performance?: boolean, depurador?: boolean, traduzir?: any, funcaoDeRetorno?: Function);
32
+ versao(): string;
33
+ /**
34
+ * LAIR (Leia-Avalie-Imprima-Repita) é o modo em que Delégua executa em modo console,
35
+ * ou seja, esperando como entrada linhas de código fornecidas pelo usuário.
36
+ */
37
+ iniciarLairDelegua(): void;
38
+ /**
39
+ * Executa uma linha. Usado pelo modo LAIR e pelo servidor de depuração, quando recebe um comando 'avaliar'.
40
+ * @param linha A linha a ser avaliada.
41
+ * @returns O resultado da execução, com os retornos e respectivos erros, se houverem.
42
+ */
43
+ executarUmaLinha(linha: string): Promise<RetornoExecucaoInterface>;
44
+ /**
45
+ * Instancia um servidor de depuração, normalmente recebendo requisições na porta 7777.
46
+ */
47
+ iniciarDepuracao(): void;
48
+ /**
49
+ * Pede ao servidor de depuração que finalize a execução.
50
+ * Se não for feito, o servidor de depuração mantém um _stream_ aberto e nunca finaliza.
51
+ * Mais informações: https://stackoverflow.com/a/47456805/1314276
52
+ */
53
+ finalizarDepuracao(): void;
54
+ /**
55
+ * Verifica erros nas etapas de lexação e avaliação sintática.
56
+ * @param retornoImportador Um objeto que implementa a interface RetornoImportador.
57
+ * @returns Verdadeiro se há erros. Falso caso contrário.
58
+ */
59
+ afericaoErros(retornoImportador: RetornoImportador): boolean;
60
+ /**
61
+ * Realiza a tradução do arquivo passado como parâmetro no comando de execução.
62
+ * @param caminhoRelativoArquivo O caminho do arquivo.
63
+ * @param gerarArquivoSaida Se o resultado da tradução deve ser escrito em arquivo.
64
+ * Se verdadeiro, os arquivos de saída são escritos no mesmo diretório
65
+ * do arquivo passado no primeiro parâmetro.
66
+ */
67
+ traduzirArquivo(caminhoRelativoArquivo: string, gerarArquivoSaida: boolean, extensaoArquivoSaida: string): any;
68
+ executarCodigoComoArgumento(codigo: string): Promise<void>;
69
+ /**
70
+ * Execução por arquivo.
71
+ * @param caminhoRelativoArquivo O caminho no sistema operacional do arquivo a ser aberto.
72
+ */
73
+ carregarArquivo(caminhoRelativoArquivo: string): Promise<any>;
74
+ /**
75
+ * A execução do código de fato.
76
+ * @param retornoImportador Dados retornados do Importador, como o retorno do Lexador, do Avaliador
77
+ * Sintático e respectivos erros.
78
+ * @param manterAmbiente Indicação se ambiente deve ser mantido ou não. Normalmente verdadeiro
79
+ * para LAIR, falso para execução por arquivo.
80
+ * @returns Um objeto com o resultado da execução.
81
+ */
82
+ executar(retornoImportador: RetornoImportador, manterAmbiente?: boolean): Promise<RetornoExecucaoInterface>;
83
+ reportar(linha: number, onde: any, mensagem: string): void;
84
+ erro(simbolo: SimboloInterface, mensagemDeErro: string): void;
85
+ erroEmTempoDeExecucao(erro: any): void;
86
+ }