@designliquido/delegua 0.46.2 → 0.48.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/analisador-semantico/analisador-semantico.d.ts.map +1 -1
- package/analisador-semantico/analisador-semantico.js +2 -1
- package/analisador-semantico/analisador-semantico.js.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico-base.js +1 -1
- package/avaliador-sintatico/avaliador-sintatico.d.ts +2 -0
- package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.js +49 -12
- package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/avaliador-sintatico/comum.d.ts +2 -2
- package/avaliador-sintatico/comum.d.ts.map +1 -1
- package/avaliador-sintatico/comum.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.d.ts.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.d.ts.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.js +28 -20
- package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.js.map +1 -1
- package/bibliotecas/biblioteca-global.d.ts.map +1 -1
- package/bibliotecas/biblioteca-global.js.map +1 -1
- package/bibliotecas/primitivas-dicionario.d.ts.map +1 -1
- package/bibliotecas/primitivas-dicionario.js +33 -18
- package/bibliotecas/primitivas-dicionario.js.map +1 -1
- package/bibliotecas/primitivas-numero.d.ts.map +1 -1
- package/bibliotecas/primitivas-numero.js +27 -0
- package/bibliotecas/primitivas-numero.js.map +1 -1
- package/bibliotecas/primitivas-texto.d.ts.map +1 -1
- package/bibliotecas/primitivas-texto.js +125 -11
- package/bibliotecas/primitivas-texto.js.map +1 -1
- package/bibliotecas/primitivas-vetor.d.ts.map +1 -1
- package/bibliotecas/primitivas-vetor.js +173 -12
- package/bibliotecas/primitivas-vetor.js.map +1 -1
- package/bin/package.json +1 -1
- package/construtos/referencia-biblioteca-global.d.ts.map +1 -1
- package/construtos/referencia-biblioteca-global.js.map +1 -1
- package/declaracoes/para-cada.d.ts +3 -3
- package/declaracoes/para-cada.d.ts.map +1 -1
- package/declaracoes/para-cada.js +2 -2
- package/declaracoes/para-cada.js.map +1 -1
- package/formatadores/formatador-delegua.js +1 -1
- package/formatadores/formatador-delegua.js.map +1 -1
- package/informacao-variavel-ou-constante.d.ts +2 -2
- package/informacao-variavel-ou-constante.d.ts.map +1 -1
- package/informacao-variavel-ou-constante.js +2 -1
- package/informacao-variavel-ou-constante.js.map +1 -1
- package/interfaces/escopo-execucao.d.ts +2 -2
- package/interfaces/escopo-execucao.d.ts.map +1 -1
- package/interfaces/interpretador-interface.d.ts +2 -2
- package/interfaces/interpretador-interface.d.ts.map +1 -1
- package/interfaces/pilha-escopos-execucao-interface.d.ts +2 -0
- package/interfaces/pilha-escopos-execucao-interface.d.ts.map +1 -1
- package/interpretador/depuracao/comum.d.ts +13 -13
- package/interpretador/depuracao/comum.d.ts.map +1 -1
- package/interpretador/depuracao/comum.js +24 -24
- package/interpretador/depuracao/comum.js.map +1 -1
- package/interpretador/depuracao/interpretador-base-com-depuracao.d.ts +9 -9
- package/interpretador/depuracao/interpretador-base-com-depuracao.d.ts.map +1 -1
- package/interpretador/depuracao/interpretador-base-com-depuracao.js.map +1 -1
- package/interpretador/depuracao/interpretador-com-depuracao.d.ts +3 -3
- package/interpretador/depuracao/interpretador-com-depuracao.d.ts.map +1 -1
- package/interpretador/depuracao/interpretador-com-depuracao.js +3 -3
- package/interpretador/depuracao/interpretador-com-depuracao.js.map +1 -1
- package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts +3 -2
- package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts.map +1 -1
- package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +24 -70
- package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js.map +1 -1
- package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts +2 -2
- package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts.map +1 -1
- package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js.map +1 -1
- package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts +3 -2
- package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts.map +1 -1
- package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js +18 -15
- package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js.map +1 -1
- package/{espaco-variaveis.d.ts → interpretador/espaco-memoria.d.ts} +10 -7
- package/interpretador/espaco-memoria.d.ts.map +1 -0
- package/{espaco-variaveis.js → interpretador/espaco-memoria.js} +10 -7
- package/interpretador/espaco-memoria.js.map +1 -0
- package/interpretador/estruturas/delegua-funcao.d.ts +2 -2
- package/interpretador/estruturas/delegua-funcao.d.ts.map +1 -1
- package/interpretador/estruturas/delegua-funcao.js +2 -2
- package/interpretador/estruturas/delegua-funcao.js.map +1 -1
- package/interpretador/estruturas/descritor-tipo-classe.d.ts +1 -1
- package/interpretador/estruturas/descritor-tipo-classe.d.ts.map +1 -1
- package/interpretador/estruturas/index.d.ts +1 -0
- package/interpretador/estruturas/index.d.ts.map +1 -1
- package/interpretador/estruturas/index.js +1 -0
- package/interpretador/estruturas/index.js.map +1 -1
- package/interpretador/estruturas/referencia-montao.d.ts +15 -0
- package/interpretador/estruturas/referencia-montao.d.ts.map +1 -0
- package/interpretador/estruturas/referencia-montao.js +24 -0
- package/interpretador/estruturas/referencia-montao.js.map +1 -0
- package/interpretador/interpretador-base.d.ts +7 -4
- package/interpretador/interpretador-base.d.ts.map +1 -1
- package/interpretador/interpretador-base.js +68 -59
- package/interpretador/interpretador-base.js.map +1 -1
- package/interpretador/interpretador-com-depuracao.d.ts +191 -0
- package/interpretador/interpretador-com-depuracao.d.ts.map +1 -0
- package/interpretador/interpretador-com-depuracao.js +585 -0
- package/interpretador/interpretador-com-depuracao.js.map +1 -0
- package/interpretador/interpretador.d.ts +45 -2
- package/interpretador/interpretador.d.ts.map +1 -1
- package/interpretador/interpretador.js +365 -13
- package/interpretador/interpretador.js.map +1 -1
- package/interpretador/montao.d.ts +38 -0
- package/interpretador/montao.d.ts.map +1 -0
- package/interpretador/montao.js +56 -0
- package/interpretador/montao.js.map +1 -0
- package/interpretador/pilha-escopos-execucao.d.ts +2 -0
- package/interpretador/pilha-escopos-execucao.d.ts.map +1 -1
- package/interpretador/pilha-escopos-execucao.js +45 -26
- package/interpretador/pilha-escopos-execucao.js.map +1 -1
- package/lexador/dialetos/lexador-tenda.d.ts.map +1 -1
- package/lexador/dialetos/lexador-tenda.js +4 -2
- package/lexador/dialetos/lexador-tenda.js.map +1 -1
- package/lexador/dialetos/palavras-reservadas/tenda.js +1 -1
- package/package.json +1 -1
- package/tipos-de-simbolos/tenda.d.ts.map +1 -1
- package/tipos-de-simbolos/tenda.js.map +1 -1
- package/tradutores/tradutor-assemblyscript.js +1 -1
- package/tradutores/tradutor-assemblyscript.js.map +1 -1
- package/tradutores/tradutor-javascript.d.ts.map +1 -1
- package/tradutores/tradutor-javascript.js +2 -1
- package/tradutores/tradutor-javascript.js.map +1 -1
- package/tradutores/tradutor-mermaidjs.d.ts.map +1 -1
- package/tradutores/tradutor-mermaidjs.js +2 -1
- package/tradutores/tradutor-mermaidjs.js.map +1 -1
- package/tradutores/tradutor-portugol-ipt.d.ts +1 -1
- package/tradutores/tradutor-portugol-ipt.d.ts.map +1 -1
- package/tradutores/tradutor-portugol-ipt.js +5 -5
- package/tradutores/tradutor-portugol-ipt.js.map +1 -1
- package/tradutores/tradutor-python.d.ts.map +1 -1
- package/tradutores/tradutor-python.js +2 -1
- package/tradutores/tradutor-python.js.map +1 -1
- package/tradutores/tradutor-reverso-tenda.d.ts.map +1 -1
- package/tradutores/tradutor-reverso-tenda.js +17 -8
- package/tradutores/tradutor-reverso-tenda.js.map +1 -1
- package/umd/delegua.js +1376 -533
- package/espaco-variaveis.d.ts.map +0 -1
- package/espaco-variaveis.js.map +0 -1
|
@@ -1,12 +1,23 @@
|
|
|
1
|
-
import { AcessoMetodo, AcessoMetodoOuPropriedade, AcessoPropriedade, ArgumentoReferenciaFuncao, ReferenciaFuncao, TipoDe } from '../construtos';
|
|
1
|
+
import { AcessoIndiceVariavel, AcessoMetodo, AcessoMetodoOuPropriedade, AcessoPropriedade, ArgumentoReferenciaFuncao, AtribuicaoPorIndice, Atribuir, Construto, DefinirValor, Dicionario, ReferenciaFuncao, TipoDe } from '../construtos';
|
|
2
|
+
import { ReferenciaMontao } from './estruturas';
|
|
3
|
+
import { RetornoInterpretador } from '../interfaces';
|
|
2
4
|
import { InterpretadorBase } from './interpretador-base';
|
|
3
|
-
import { FuncaoDeclaracao, Retorna } from '../declaracoes';
|
|
5
|
+
import { Const, ConstMultiplo, Declaracao, FuncaoDeclaracao, Retorna, Var, VarMultiplo } from '../declaracoes';
|
|
4
6
|
import { RetornoQuebra } from '../quebras';
|
|
7
|
+
import { Montao } from './montao';
|
|
5
8
|
/**
|
|
6
9
|
* O interpretador de Delégua.
|
|
7
10
|
*/
|
|
8
11
|
export declare class Interpretador extends InterpretadorBase {
|
|
12
|
+
montao: Montao;
|
|
13
|
+
constructor(diretorioBase: string, performance?: boolean, funcaoDeRetorno?: Function, funcaoDeRetornoMesmaLinha?: Function);
|
|
14
|
+
protected resolverReferenciaMontao(referenciaMontao: ReferenciaMontao): any;
|
|
15
|
+
resolverValor(objeto: any): any;
|
|
16
|
+
paraTexto(objeto: any): string;
|
|
17
|
+
avaliacaoDeclaracaoVarOuConst(declaracao: Const | ConstMultiplo | Var | VarMultiplo): Promise<any>;
|
|
18
|
+
avaliarArgumentosEscreva(argumentos: Construto[]): Promise<string>;
|
|
9
19
|
visitarDeclaracaoDefinicaoFuncao(declaracao: FuncaoDeclaracao): void;
|
|
20
|
+
visitarExpressaoAcessoIndiceVariavel(expressao: AcessoIndiceVariavel): Promise<any>;
|
|
10
21
|
visitarExpressaoAcessoMetodo(expressao: AcessoMetodo): Promise<any>;
|
|
11
22
|
/**
|
|
12
23
|
* Casos que ocorrem aqui:
|
|
@@ -20,8 +31,40 @@ export declare class Interpretador extends InterpretadorBase {
|
|
|
20
31
|
visitarExpressaoAcessoMetodoOuPropriedade(expressao: AcessoMetodoOuPropriedade): Promise<any>;
|
|
21
32
|
visitarExpressaoAcessoPropriedade(expressao: AcessoPropriedade): Promise<any>;
|
|
22
33
|
visitarExpressaoArgumentoReferenciaFuncao(expressao: ArgumentoReferenciaFuncao): Promise<any>;
|
|
34
|
+
visitarExpressaoAtribuicaoPorIndice(expressao: AtribuicaoPorIndice): Promise<any>;
|
|
35
|
+
/**
|
|
36
|
+
* Execução de uma expressão de atribuição.
|
|
37
|
+
* @param expressao A expressão.
|
|
38
|
+
* @returns O valor atribuído.
|
|
39
|
+
*/
|
|
40
|
+
visitarExpressaoDeAtribuicao(expressao: Atribuir): Promise<any>;
|
|
41
|
+
visitarExpressaoDefinirValor(expressao: DefinirValor): Promise<any>;
|
|
42
|
+
/**
|
|
43
|
+
* Dicionários em Delégua são passados por referência, portanto, são
|
|
44
|
+
* armazenados no montão.
|
|
45
|
+
*/
|
|
46
|
+
visitarExpressaoDicionario(expressao: Dicionario): Promise<any>;
|
|
23
47
|
visitarExpressaoReferenciaFuncao(expressao: ReferenciaFuncao): Promise<any>;
|
|
24
48
|
visitarExpressaoRetornar(declaracao: Retorna): Promise<RetornoQuebra>;
|
|
25
49
|
visitarExpressaoTipoDe(expressao: TipoDe): Promise<string>;
|
|
50
|
+
/**
|
|
51
|
+
* Executa o último escopo empilhado no topo na pilha de escopos do interpretador.
|
|
52
|
+
* Esse método pega exceções, mas apenas as devolve.
|
|
53
|
+
*
|
|
54
|
+
* O tratamento das exceções é feito de acordo com o bloco chamador.
|
|
55
|
+
* Por exemplo, em `tente ... pegue ... finalmente`, a exceção é capturada e tratada.
|
|
56
|
+
* Em outros blocos, pode ser desejável ter o erro em tela.
|
|
57
|
+
* @param manterAmbiente Se verdadeiro, ambiente do topo da pilha de escopo é copiado para o ambiente imediatamente abaixo.
|
|
58
|
+
* @returns O resultado da execução do escopo, se houver.
|
|
59
|
+
*/
|
|
60
|
+
executarUltimoEscopo(manterAmbiente?: boolean): Promise<any>;
|
|
61
|
+
/**
|
|
62
|
+
* Método que efetivamente inicia o processo de interpretação.
|
|
63
|
+
* @param declaracoes Um vetor de declarações gerado pelo Avaliador Sintático.
|
|
64
|
+
* @param manterAmbiente Se ambiente de execução (variáveis, classes, etc.) deve ser mantido. Normalmente usado
|
|
65
|
+
* pelo modo REPL (LAIR).
|
|
66
|
+
* @returns Um objeto com o resultado da interpretação.
|
|
67
|
+
*/
|
|
68
|
+
interpretar(declaracoes: Declaracao[], manterAmbiente?: boolean): Promise<RetornoInterpretador>;
|
|
26
69
|
}
|
|
27
70
|
//# sourceMappingURL=interpretador.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interpretador.d.ts","sourceRoot":"","sources":["../../fontes/interpretador/interpretador.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,
|
|
1
|
+
{"version":3,"file":"interpretador.d.ts","sourceRoot":"","sources":["../../fontes/interpretador/interpretador.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,oBAAoB,EACpB,YAAY,EACZ,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,EACzB,mBAAmB,EACnB,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,UAAU,EAEV,gBAAgB,EAChB,MAAM,EAGT,MAAM,eAAe,CAAC;AACvB,OAAO,EAOH,gBAAgB,EACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,oBAAoB,EAAuC,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC/G,OAAO,EAAU,aAAa,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAUlC;;GAEG;AACH,qBAAa,aAAc,SAAQ,iBAAiB;IAChD,MAAM,EAAE,MAAM,CAAC;gBAGX,aAAa,EAAE,MAAM,EACrB,WAAW,UAAQ,EACnB,eAAe,GAAE,QAAe,EAChC,yBAAyB,GAAE,QAAe;IAM9C,SAAS,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,gBAAgB;IAU5D,aAAa,CAAC,MAAM,EAAE,GAAG;IAoBzB,SAAS,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM;IAgFxB,6BAA6B,CACxC,UAAU,EAAE,KAAK,GAAG,aAAa,GAAG,GAAG,GAAG,WAAW,GACtD,OAAO,CAAC,GAAG,CAAC;IAcA,wBAAwB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAYxE,gCAAgC,CAAC,UAAU,EAAE,gBAAgB;IAOvD,oCAAoC,CAC/C,SAAS,EAAE,oBAAoB,GAChC,OAAO,CAAC,GAAG,CAAC;IAmGA,4BAA4B,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;IAiGlF;;;;;;;;OAQG;IACY,yCAAyC,CACpD,SAAS,EAAE,yBAAyB,GACrC,OAAO,CAAC,GAAG,CAAC;IA6FA,iCAAiC,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC;IAmE7E,yCAAyC,CACpD,SAAS,EAAE,yBAAyB,GACrC,OAAO,CAAC,GAAG,CAAC;IAQA,mCAAmC,CAAC,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;IAkEhG;;;;OAIG;IACY,4BAA4B,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;IA0DxE,4BAA4B,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;IA0BzE;;;OAGG;IACY,0BAA0B,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAsB/D,gCAAgC,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;IAK3E,wBAAwB,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAqBrE,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiDzE;;;;;;;;;OASG;IACY,oBAAoB,CAAC,cAAc,UAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;IA2CzE;;;;;;OAMG;IACY,WAAW,CACtB,WAAW,EAAE,UAAU,EAAE,EACzB,cAAc,CAAC,EAAE,OAAO,GACzB,OAAO,CAAC,oBAAoB,CAAC;CAInC"}
|
|
@@ -4,11 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.Interpretador = void 0;
|
|
7
|
+
const construtos_1 = require("../construtos");
|
|
7
8
|
const estruturas_1 = require("./estruturas");
|
|
8
9
|
const interpretador_base_1 = require("./interpretador-base");
|
|
9
10
|
const inferenciador_1 = require("../inferenciador");
|
|
10
11
|
const excecoes_1 = require("../excecoes");
|
|
11
12
|
const quebras_1 = require("../quebras");
|
|
13
|
+
const montao_1 = require("./montao");
|
|
12
14
|
const primitivas_dicionario_1 = __importDefault(require("../bibliotecas/primitivas-dicionario"));
|
|
13
15
|
const primitivas_numero_1 = __importDefault(require("../bibliotecas/primitivas-numero"));
|
|
14
16
|
const primitivas_texto_1 = __importDefault(require("../bibliotecas/primitivas-texto"));
|
|
@@ -19,12 +21,177 @@ const delegua_1 = __importDefault(require("../tipos-de-dados/delegua"));
|
|
|
19
21
|
* O interpretador de Delégua.
|
|
20
22
|
*/
|
|
21
23
|
class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
24
|
+
constructor(diretorioBase, performance = false, funcaoDeRetorno = null, funcaoDeRetornoMesmaLinha = null) {
|
|
25
|
+
super(diretorioBase, performance, funcaoDeRetorno, funcaoDeRetornoMesmaLinha);
|
|
26
|
+
this.montao = new montao_1.Montao();
|
|
27
|
+
}
|
|
28
|
+
resolverReferenciaMontao(referenciaMontao) {
|
|
29
|
+
const valorMontao = this.montao.obterReferencia(this.hashArquivoDeclaracaoAtual, this.linhaDeclaracaoAtual, referenciaMontao.endereco);
|
|
30
|
+
return valorMontao;
|
|
31
|
+
}
|
|
32
|
+
resolverValor(objeto) {
|
|
33
|
+
if (objeto === null || objeto === undefined) {
|
|
34
|
+
return objeto;
|
|
35
|
+
}
|
|
36
|
+
if (objeto instanceof estruturas_1.ReferenciaMontao) {
|
|
37
|
+
return this.resolverReferenciaMontao(objeto);
|
|
38
|
+
}
|
|
39
|
+
if (objeto.hasOwnProperty('valor')) {
|
|
40
|
+
if (objeto.valor instanceof estruturas_1.ReferenciaMontao) {
|
|
41
|
+
return this.resolverReferenciaMontao(objeto.valor);
|
|
42
|
+
}
|
|
43
|
+
return objeto.valor;
|
|
44
|
+
}
|
|
45
|
+
return objeto;
|
|
46
|
+
}
|
|
47
|
+
paraTexto(objeto) {
|
|
48
|
+
if (objeto === null || objeto === undefined)
|
|
49
|
+
return delegua_1.default.NULO;
|
|
50
|
+
if (typeof objeto === primitivos_1.default.BOOLEANO) {
|
|
51
|
+
return objeto ? 'verdadeiro' : 'falso';
|
|
52
|
+
}
|
|
53
|
+
if (objeto.valor instanceof estruturas_1.ObjetoPadrao)
|
|
54
|
+
return objeto.valor.paraTexto();
|
|
55
|
+
if (objeto instanceof estruturas_1.ObjetoDeleguaClasse ||
|
|
56
|
+
objeto instanceof estruturas_1.DeleguaFuncao ||
|
|
57
|
+
typeof objeto.paraTexto === 'function')
|
|
58
|
+
return objeto.paraTexto();
|
|
59
|
+
if (objeto instanceof quebras_1.RetornoQuebra) {
|
|
60
|
+
if (typeof objeto.valor === 'boolean')
|
|
61
|
+
return objeto.valor ? 'verdadeiro' : 'falso';
|
|
62
|
+
}
|
|
63
|
+
if (objeto instanceof Date) {
|
|
64
|
+
const formato = Intl.DateTimeFormat('pt', {
|
|
65
|
+
dateStyle: 'full',
|
|
66
|
+
timeStyle: 'full',
|
|
67
|
+
});
|
|
68
|
+
return formato.format(objeto);
|
|
69
|
+
}
|
|
70
|
+
if (Array.isArray(objeto)) {
|
|
71
|
+
let retornoVetor = '[';
|
|
72
|
+
for (let elemento of objeto) {
|
|
73
|
+
if (typeof elemento === 'object') {
|
|
74
|
+
retornoVetor += `${JSON.stringify(elemento)}, `;
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
retornoVetor +=
|
|
78
|
+
typeof elemento === 'string'
|
|
79
|
+
? `'${elemento}', `
|
|
80
|
+
: `${this.paraTexto(elemento)}, `;
|
|
81
|
+
}
|
|
82
|
+
if (retornoVetor.length > 1) {
|
|
83
|
+
retornoVetor = retornoVetor.slice(0, -2);
|
|
84
|
+
}
|
|
85
|
+
retornoVetor += ']';
|
|
86
|
+
return retornoVetor;
|
|
87
|
+
}
|
|
88
|
+
switch (objeto.constructor.name) {
|
|
89
|
+
case 'Object':
|
|
90
|
+
if ('tipo' in objeto) {
|
|
91
|
+
switch (objeto.tipo) {
|
|
92
|
+
case 'dicionário':
|
|
93
|
+
return JSON.stringify(objeto.valor);
|
|
94
|
+
default:
|
|
95
|
+
return objeto.valor;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (typeof objeto === primitivos_1.default.OBJETO) {
|
|
100
|
+
const objetoEscrita = {};
|
|
101
|
+
for (const propriedade in objeto) {
|
|
102
|
+
let valor = objeto[propriedade];
|
|
103
|
+
if (typeof valor === primitivos_1.default.BOOLEANO) {
|
|
104
|
+
valor = valor ? 'verdadeiro' : 'falso';
|
|
105
|
+
}
|
|
106
|
+
if (valor instanceof estruturas_1.ReferenciaMontao) {
|
|
107
|
+
valor = this.resolverValor(valor);
|
|
108
|
+
}
|
|
109
|
+
objetoEscrita[propriedade] = valor;
|
|
110
|
+
}
|
|
111
|
+
return JSON.stringify(objetoEscrita);
|
|
112
|
+
}
|
|
113
|
+
return objeto.toString();
|
|
114
|
+
}
|
|
115
|
+
async avaliacaoDeclaracaoVarOuConst(declaracao) {
|
|
116
|
+
let valorOuOutraVariavel = null;
|
|
117
|
+
if (declaracao.inicializador !== null) {
|
|
118
|
+
valorOuOutraVariavel = await this.avaliar(declaracao.inicializador);
|
|
119
|
+
}
|
|
120
|
+
let valorFinal = null;
|
|
121
|
+
if (valorOuOutraVariavel !== null && valorOuOutraVariavel !== undefined) {
|
|
122
|
+
valorFinal = this.resolverValor(valorOuOutraVariavel);
|
|
123
|
+
}
|
|
124
|
+
return valorFinal;
|
|
125
|
+
}
|
|
126
|
+
async avaliarArgumentosEscreva(argumentos) {
|
|
127
|
+
let formatoTexto = '';
|
|
128
|
+
for (const argumento of argumentos) {
|
|
129
|
+
const resultadoAvaliacao = await this.avaliar(argumento);
|
|
130
|
+
let valor = this.resolverValor(resultadoAvaliacao);
|
|
131
|
+
formatoTexto += `${this.paraTexto(valor)} `;
|
|
132
|
+
}
|
|
133
|
+
return formatoTexto.trimEnd();
|
|
134
|
+
}
|
|
22
135
|
visitarDeclaracaoDefinicaoFuncao(declaracao) {
|
|
23
136
|
const funcao = new estruturas_1.DeleguaFuncao(declaracao.simbolo.lexema, declaracao.funcao);
|
|
24
137
|
// TODO: Depreciar essa abordagem a favor do uso por referências.
|
|
25
138
|
this.pilhaEscoposExecucao.definirVariavel(declaracao.simbolo.lexema, funcao);
|
|
26
139
|
this.pilhaEscoposExecucao.registrarReferenciaFuncao(declaracao.id, funcao);
|
|
27
140
|
}
|
|
141
|
+
async visitarExpressaoAcessoIndiceVariavel(expressao) {
|
|
142
|
+
const promises = await Promise.all([
|
|
143
|
+
this.avaliar(expressao.entidadeChamada),
|
|
144
|
+
this.avaliar(expressao.indice),
|
|
145
|
+
]);
|
|
146
|
+
const variavelObjeto = promises[0];
|
|
147
|
+
const indice = promises[1];
|
|
148
|
+
const objeto = this.resolverValor(variavelObjeto);
|
|
149
|
+
let valorIndice = this.resolverValor(indice);
|
|
150
|
+
if (Array.isArray(objeto)) {
|
|
151
|
+
if (!Number.isInteger(valorIndice)) {
|
|
152
|
+
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.simboloFechamento, 'Somente inteiros podem ser usados para indexar um vetor.', expressao.linha));
|
|
153
|
+
}
|
|
154
|
+
if (valorIndice < 0 && objeto.length !== 0) {
|
|
155
|
+
while (valorIndice < 0) {
|
|
156
|
+
valorIndice += objeto.length;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (valorIndice >= objeto.length) {
|
|
160
|
+
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.simboloFechamento, 'Índice do vetor fora do intervalo.', expressao.linha));
|
|
161
|
+
}
|
|
162
|
+
return objeto[valorIndice];
|
|
163
|
+
}
|
|
164
|
+
if (objeto instanceof construtos_1.Vetor) {
|
|
165
|
+
return objeto.valores[valorIndice];
|
|
166
|
+
}
|
|
167
|
+
if (objeto.constructor === Object ||
|
|
168
|
+
objeto instanceof estruturas_1.ObjetoDeleguaClasse ||
|
|
169
|
+
objeto instanceof estruturas_1.DeleguaFuncao ||
|
|
170
|
+
objeto instanceof estruturas_1.DescritorTipoClasse ||
|
|
171
|
+
objeto instanceof estruturas_1.DeleguaModulo) {
|
|
172
|
+
if (objeto[valorIndice] === 0)
|
|
173
|
+
return 0;
|
|
174
|
+
return objeto[valorIndice] || null;
|
|
175
|
+
}
|
|
176
|
+
if (typeof objeto === primitivos_1.default.TEXTO) {
|
|
177
|
+
if (!Number.isInteger(valorIndice)) {
|
|
178
|
+
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.simboloFechamento, 'Somente inteiros podem ser usados para indexar um vetor.', expressao.linha));
|
|
179
|
+
}
|
|
180
|
+
if (valorIndice < 0 && objeto.length !== 0) {
|
|
181
|
+
while (valorIndice < 0) {
|
|
182
|
+
valorIndice += objeto.length;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (valorIndice >= objeto.length) {
|
|
186
|
+
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.simboloFechamento, 'Índice fora do tamanho.', expressao.linha));
|
|
187
|
+
}
|
|
188
|
+
return objeto.charAt(valorIndice);
|
|
189
|
+
}
|
|
190
|
+
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao({
|
|
191
|
+
hashArquivo: this.hashArquivoDeclaracaoAtual,
|
|
192
|
+
linha: this.linhaDeclaracaoAtual,
|
|
193
|
+
}, 'Somente listas, dicionários, classes e objetos podem ter seus valores indexados.', expressao.linha));
|
|
194
|
+
}
|
|
28
195
|
async visitarExpressaoAcessoMetodo(expressao) {
|
|
29
196
|
let variavelObjeto = await this.avaliar(expressao.objeto);
|
|
30
197
|
// Este caso acontece quando há encadeamento de métodos.
|
|
@@ -34,9 +201,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
34
201
|
if (variavelObjeto.constructor.name === 'RetornoQuebra') {
|
|
35
202
|
variavelObjeto = variavelObjeto.valor;
|
|
36
203
|
}
|
|
37
|
-
const objeto =
|
|
38
|
-
? variavelObjeto.valor
|
|
39
|
-
: variavelObjeto;
|
|
204
|
+
const objeto = this.resolverValor(variavelObjeto);
|
|
40
205
|
if (objeto.constructor.name === 'ObjetoDeleguaClasse') {
|
|
41
206
|
return objeto.obterMetodo(expressao.nomeMetodo) || null;
|
|
42
207
|
}
|
|
@@ -96,7 +261,10 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
96
261
|
}
|
|
97
262
|
break;
|
|
98
263
|
}
|
|
99
|
-
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(
|
|
264
|
+
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao({
|
|
265
|
+
hashArquivo: this.hashArquivoDeclaracaoAtual,
|
|
266
|
+
linha: this.linhaDeclaracaoAtual,
|
|
267
|
+
}, `Método para objeto ou primitiva não encontrado: ${expressao.nomeMetodo}.`, expressao.linha));
|
|
100
268
|
}
|
|
101
269
|
/**
|
|
102
270
|
* Casos que ocorrem aqui:
|
|
@@ -116,9 +284,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
116
284
|
if (variavelObjeto.constructor.name === 'RetornoQuebra') {
|
|
117
285
|
variavelObjeto = variavelObjeto.valor;
|
|
118
286
|
}
|
|
119
|
-
const objeto =
|
|
120
|
-
? variavelObjeto.valor
|
|
121
|
-
: variavelObjeto;
|
|
287
|
+
const objeto = this.resolverValor(variavelObjeto);
|
|
122
288
|
if (objeto.constructor.name === 'ObjetoDeleguaClasse') {
|
|
123
289
|
return objeto.obter(expressao.simbolo);
|
|
124
290
|
}
|
|
@@ -128,7 +294,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
128
294
|
const metodoDePrimitivaDicionario = primitivas_dicionario_1.default[expressao.simbolo.lexema].implementacao;
|
|
129
295
|
return new estruturas_1.MetodoPrimitiva(objeto, metodoDePrimitivaDicionario);
|
|
130
296
|
}
|
|
131
|
-
return objeto[expressao.simbolo.lexema]
|
|
297
|
+
return objeto[expressao.simbolo.lexema];
|
|
132
298
|
}
|
|
133
299
|
// A partir daqui, presume-se que o objeto é uma das estruturas
|
|
134
300
|
// de Delégua.
|
|
@@ -172,8 +338,9 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
172
338
|
break;
|
|
173
339
|
}
|
|
174
340
|
// Último caso válido: objeto de uma classe JavaScript que possua a propriedade.
|
|
175
|
-
// Exemplos: classes de LinConEs, como `RetornoComando
|
|
176
|
-
if (objeto.hasOwnProperty(expressao.simbolo.lexema) ||
|
|
341
|
+
// Exemplos: classes de LinConEs, como `RetornoComando`, ou bibliotecas globais com objetos próprios.
|
|
342
|
+
if (objeto.hasOwnProperty(expressao.simbolo.lexema) ||
|
|
343
|
+
typeof objeto[expressao.simbolo.lexema] !== 'undefined') {
|
|
177
344
|
return objeto[expressao.simbolo.lexema];
|
|
178
345
|
}
|
|
179
346
|
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(null, `Método ou propriedade para objeto ou primitiva não encontrado: ${expressao.simbolo.lexema}.`, expressao.linha));
|
|
@@ -187,9 +354,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
187
354
|
if (variavelObjeto.constructor.name === 'RetornoQuebra') {
|
|
188
355
|
variavelObjeto = variavelObjeto.valor;
|
|
189
356
|
}
|
|
190
|
-
const objeto =
|
|
191
|
-
? variavelObjeto.valor
|
|
192
|
-
: variavelObjeto;
|
|
357
|
+
const objeto = this.resolverValor(variavelObjeto);
|
|
193
358
|
// Outro caso que `instanceof` simplesmente não funciona para casos em Liquido,
|
|
194
359
|
// então testamos também o nome do construtor.
|
|
195
360
|
if (objeto instanceof estruturas_1.ObjetoDeleguaClasse ||
|
|
@@ -230,6 +395,134 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
230
395
|
const deleguaFuncao = this.pilhaEscoposExecucao.obterVariavelPorNome(expressao.simboloFuncao.lexema);
|
|
231
396
|
return deleguaFuncao;
|
|
232
397
|
}
|
|
398
|
+
async visitarExpressaoAtribuicaoPorIndice(expressao) {
|
|
399
|
+
const promises = await Promise.all([
|
|
400
|
+
this.avaliar(expressao.objeto),
|
|
401
|
+
this.avaliar(expressao.indice),
|
|
402
|
+
this.avaliar(expressao.valor),
|
|
403
|
+
]);
|
|
404
|
+
let objeto = promises[0];
|
|
405
|
+
let indice = promises[1];
|
|
406
|
+
const valor = promises[2];
|
|
407
|
+
if (objeto.tipo === delegua_1.default.TUPLA) {
|
|
408
|
+
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.objeto.simbolo.lexema, 'Não é possível modificar uma tupla. As tuplas são estruturas de dados imutáveis.', expressao.linha));
|
|
409
|
+
}
|
|
410
|
+
objeto = this.resolverValor(objeto);
|
|
411
|
+
indice = this.resolverValor(indice);
|
|
412
|
+
// Se o valor é uma referência ao montão, e o índice que a recebe é
|
|
413
|
+
// de uma variável/constante que vive num escopo superior, a referência
|
|
414
|
+
// precisa ser transferida para o escopo correspondente.
|
|
415
|
+
if (valor instanceof estruturas_1.ReferenciaMontao) {
|
|
416
|
+
// TODO: Terminar
|
|
417
|
+
const nomeVariavel = expressao.objeto.simbolo.lexema;
|
|
418
|
+
if (this.pilhaEscoposExecucao.obterVariavelEm(1, nomeVariavel) === undefined) {
|
|
419
|
+
this.pilhaEscoposExecucao.migrarReferenciaMontaoParaEscopoDeVariavel(nomeVariavel, valor.endereco);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
if (Array.isArray(objeto)) {
|
|
423
|
+
if (indice < 0 && objeto.length !== 0) {
|
|
424
|
+
while (indice < 0) {
|
|
425
|
+
indice += objeto.length;
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
while (objeto.length < indice) {
|
|
429
|
+
objeto.push(null);
|
|
430
|
+
}
|
|
431
|
+
objeto[indice] = valor;
|
|
432
|
+
}
|
|
433
|
+
else if (objeto.constructor === Object ||
|
|
434
|
+
objeto instanceof estruturas_1.ObjetoDeleguaClasse ||
|
|
435
|
+
objeto instanceof estruturas_1.DeleguaFuncao ||
|
|
436
|
+
objeto instanceof estruturas_1.DescritorTipoClasse ||
|
|
437
|
+
objeto instanceof estruturas_1.DeleguaModulo) {
|
|
438
|
+
objeto[indice] = valor;
|
|
439
|
+
}
|
|
440
|
+
else {
|
|
441
|
+
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.objeto.nome, 'Somente listas, dicionários, classes e objetos podem ser mudados por índice.', expressao.linha));
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Execução de uma expressão de atribuição.
|
|
446
|
+
* @param expressao A expressão.
|
|
447
|
+
* @returns O valor atribuído.
|
|
448
|
+
*/
|
|
449
|
+
async visitarExpressaoDeAtribuicao(expressao) {
|
|
450
|
+
const valor = await this.avaliar(expressao.valor);
|
|
451
|
+
const valorResolvido = this.resolverValor(valor);
|
|
452
|
+
let indice = null;
|
|
453
|
+
if (expressao.indice) {
|
|
454
|
+
indice = await this.avaliar(expressao.indice);
|
|
455
|
+
}
|
|
456
|
+
switch (expressao.alvo.constructor.name) {
|
|
457
|
+
case 'Variavel':
|
|
458
|
+
const alvoVariavel = expressao.alvo;
|
|
459
|
+
const variavelResolvida = this.pilhaEscoposExecucao.obterValorVariavel(alvoVariavel.simbolo);
|
|
460
|
+
if (variavelResolvida.valor instanceof estruturas_1.ReferenciaMontao) {
|
|
461
|
+
const referenciaMontao = this.montao.obterReferencia(this.hashArquivoDeclaracaoAtual, this.linhaDeclaracaoAtual, variavelResolvida.valor.endereco);
|
|
462
|
+
referenciaMontao[indice] = valorResolvido;
|
|
463
|
+
}
|
|
464
|
+
else {
|
|
465
|
+
this.pilhaEscoposExecucao.atribuirVariavel(alvoVariavel.simbolo, valorResolvido, indice);
|
|
466
|
+
}
|
|
467
|
+
break;
|
|
468
|
+
case 'AcessoMetodoOuPropriedade':
|
|
469
|
+
// Nunca será método aqui: apenas propriedade.
|
|
470
|
+
const alvoPropriedade = expressao.alvo;
|
|
471
|
+
const variavelObjeto = await this.avaliar(alvoPropriedade.objeto);
|
|
472
|
+
const objeto = this.resolverValor(variavelObjeto);
|
|
473
|
+
const valor = await this.avaliar(expressao.valor);
|
|
474
|
+
if (objeto.constructor.name === 'ObjetoDeleguaClasse') {
|
|
475
|
+
const objetoDeleguaClasse = objeto;
|
|
476
|
+
objetoDeleguaClasse.definir(alvoPropriedade.simbolo, valor);
|
|
477
|
+
}
|
|
478
|
+
else {
|
|
479
|
+
// Se cair aqui, provavelmente `objeto.constructor.name` é 'Object'.
|
|
480
|
+
objeto[alvoPropriedade.simbolo.lexema] = valor;
|
|
481
|
+
}
|
|
482
|
+
break;
|
|
483
|
+
default:
|
|
484
|
+
throw new excecoes_1.ErroEmTempoDeExecucao(null, `Atribuição com caso faltante: ${expressao.alvo.constructor.name}.`);
|
|
485
|
+
}
|
|
486
|
+
return valorResolvido;
|
|
487
|
+
}
|
|
488
|
+
async visitarExpressaoDefinirValor(expressao) {
|
|
489
|
+
const variavelObjeto = await this.avaliar(expressao.objeto);
|
|
490
|
+
const objeto = this.resolverValor(variavelObjeto);
|
|
491
|
+
if (objeto.constructor.name !== 'ObjetoDeleguaClasse' && objeto.constructor !== Object) {
|
|
492
|
+
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.nome, 'Somente instâncias e dicionários podem possuir campos.', expressao.linha));
|
|
493
|
+
}
|
|
494
|
+
const valor = await this.avaliar(expressao.valor);
|
|
495
|
+
const valorResolvido = this.resolverValor(valor);
|
|
496
|
+
if (objeto.constructor.name === 'ObjetoDeleguaClasse') {
|
|
497
|
+
objeto.definir(expressao.nome, valorResolvido);
|
|
498
|
+
return valorResolvido;
|
|
499
|
+
}
|
|
500
|
+
if (objeto.constructor === Object) {
|
|
501
|
+
objeto[expressao.nome.lexema] = valorResolvido;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* Dicionários em Delégua são passados por referência, portanto, são
|
|
506
|
+
* armazenados no montão.
|
|
507
|
+
*/
|
|
508
|
+
async visitarExpressaoDicionario(expressao) {
|
|
509
|
+
const dicionario = {};
|
|
510
|
+
for (let i = 0; i < expressao.chaves.length; i++) {
|
|
511
|
+
const promises = await Promise.all([
|
|
512
|
+
this.avaliar(expressao.chaves[i]),
|
|
513
|
+
this.avaliar(expressao.valores[i]),
|
|
514
|
+
]);
|
|
515
|
+
if (typeof promises[0] === 'boolean') {
|
|
516
|
+
const chaveLogico = promises[0] === true ? 'verdadeiro' : 'falso';
|
|
517
|
+
dicionario[chaveLogico] = promises[1];
|
|
518
|
+
continue;
|
|
519
|
+
}
|
|
520
|
+
dicionario[promises[0]] = this.resolverValor(promises[1]);
|
|
521
|
+
}
|
|
522
|
+
const enderecoDicionarioMontao = this.montao.adicionarReferencia(dicionario);
|
|
523
|
+
this.pilhaEscoposExecucao.registrarReferenciaMontao(enderecoDicionarioMontao);
|
|
524
|
+
return new estruturas_1.ReferenciaMontao(enderecoDicionarioMontao);
|
|
525
|
+
}
|
|
233
526
|
async visitarExpressaoReferenciaFuncao(expressao) {
|
|
234
527
|
const deleguaFuncao = this.pilhaEscoposExecucao.obterReferenciaFuncao(expressao.idFuncao);
|
|
235
528
|
return deleguaFuncao;
|
|
@@ -261,6 +554,9 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
261
554
|
case 'Dicionario':
|
|
262
555
|
case 'Unario':
|
|
263
556
|
valorTipoDe = await this.avaliar(valorTipoDe);
|
|
557
|
+
if (valorTipoDe instanceof estruturas_1.ReferenciaMontao) {
|
|
558
|
+
valorTipoDe = this.montao.obterReferencia(this.hashArquivoDeclaracaoAtual, this.linhaDeclaracaoAtual, valorTipoDe.endereco);
|
|
559
|
+
}
|
|
264
560
|
return valorTipoDe.tipo || (0, inferenciador_1.inferirTipoVariavel)(valorTipoDe);
|
|
265
561
|
case 'AcessoMetodo':
|
|
266
562
|
const acessoMetodo = valorTipoDe;
|
|
@@ -290,6 +586,62 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
290
586
|
return (0, inferenciador_1.inferirTipoVariavel)(valorTipoDe);
|
|
291
587
|
}
|
|
292
588
|
}
|
|
589
|
+
/**
|
|
590
|
+
* Executa o último escopo empilhado no topo na pilha de escopos do interpretador.
|
|
591
|
+
* Esse método pega exceções, mas apenas as devolve.
|
|
592
|
+
*
|
|
593
|
+
* O tratamento das exceções é feito de acordo com o bloco chamador.
|
|
594
|
+
* Por exemplo, em `tente ... pegue ... finalmente`, a exceção é capturada e tratada.
|
|
595
|
+
* Em outros blocos, pode ser desejável ter o erro em tela.
|
|
596
|
+
* @param manterAmbiente Se verdadeiro, ambiente do topo da pilha de escopo é copiado para o ambiente imediatamente abaixo.
|
|
597
|
+
* @returns O resultado da execução do escopo, se houver.
|
|
598
|
+
*/
|
|
599
|
+
async executarUltimoEscopo(manterAmbiente = false) {
|
|
600
|
+
const ultimoEscopo = this.pilhaEscoposExecucao.topoDaPilha();
|
|
601
|
+
let retornoExecucao;
|
|
602
|
+
try {
|
|
603
|
+
for (; !(retornoExecucao instanceof quebras_1.Quebra) &&
|
|
604
|
+
ultimoEscopo.declaracaoAtual < ultimoEscopo.declaracoes.length; ultimoEscopo.declaracaoAtual++) {
|
|
605
|
+
const declaracaoAtual = ultimoEscopo.declaracoes[ultimoEscopo.declaracaoAtual];
|
|
606
|
+
this.linhaDeclaracaoAtual = declaracaoAtual.linha;
|
|
607
|
+
this.hashArquivoDeclaracaoAtual = declaracaoAtual.hashArquivo;
|
|
608
|
+
retornoExecucao = await this.executar(declaracaoAtual);
|
|
609
|
+
}
|
|
610
|
+
return retornoExecucao;
|
|
611
|
+
}
|
|
612
|
+
catch (erro) {
|
|
613
|
+
const declaracaoAtual = ultimoEscopo.declaracoes[ultimoEscopo.declaracaoAtual];
|
|
614
|
+
if (!this.emDeclaracaoTente) {
|
|
615
|
+
this.erros.push({
|
|
616
|
+
erroInterno: erro,
|
|
617
|
+
linha: declaracaoAtual.linha,
|
|
618
|
+
hashArquivo: declaracaoAtual.hashArquivo,
|
|
619
|
+
});
|
|
620
|
+
}
|
|
621
|
+
else {
|
|
622
|
+
return Promise.reject(erro);
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
finally {
|
|
626
|
+
const escopoFinalizado = this.pilhaEscoposExecucao.removerUltimo();
|
|
627
|
+
const escopoAnterior = this.pilhaEscoposExecucao.topoDaPilha();
|
|
628
|
+
this.montao.excluirReferencias(...escopoFinalizado.espacoMemoria.enderecosMontao);
|
|
629
|
+
if (manterAmbiente || (retornoExecucao && retornoExecucao.preservarEscopo === true)) {
|
|
630
|
+
escopoAnterior.espacoMemoria.valores = Object.assign(escopoAnterior.espacoMemoria.valores, ultimoEscopo.espacoMemoria.valores);
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
/**
|
|
635
|
+
* Método que efetivamente inicia o processo de interpretação.
|
|
636
|
+
* @param declaracoes Um vetor de declarações gerado pelo Avaliador Sintático.
|
|
637
|
+
* @param manterAmbiente Se ambiente de execução (variáveis, classes, etc.) deve ser mantido. Normalmente usado
|
|
638
|
+
* pelo modo REPL (LAIR).
|
|
639
|
+
* @returns Um objeto com o resultado da interpretação.
|
|
640
|
+
*/
|
|
641
|
+
async interpretar(declaracoes, manterAmbiente) {
|
|
642
|
+
this.montao = new montao_1.Montao();
|
|
643
|
+
return super.interpretar(declaracoes, manterAmbiente);
|
|
644
|
+
}
|
|
293
645
|
}
|
|
294
646
|
exports.Interpretador = Interpretador;
|
|
295
647
|
//# sourceMappingURL=interpretador.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interpretador.js","sourceRoot":"","sources":["../../fontes/interpretador/interpretador.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"interpretador.js","sourceRoot":"","sources":["../../fontes/interpretador/interpretador.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* O montão, conhecido em inglês, como _heap_, guarda todas as estruturas de dados
|
|
3
|
+
* não primitivas durante a execução.
|
|
4
|
+
* Inicialmente trabalha apenas com dicionários, mas a ideia mais futuramente é
|
|
5
|
+
* trabalhar com toda e qualquer estrutura de dados mais complexa.
|
|
6
|
+
*
|
|
7
|
+
* Diferentemente da pilha de escopos de execução, o montão trabalha entre escopos.
|
|
8
|
+
* Por exemplo, se quisermos ter uma funcionalidade do interpretador em que uma
|
|
9
|
+
* referência é preservada entre escopos, podemos apagar o escopo e transferir facilmente
|
|
10
|
+
* a referência do montão para outro escopo.
|
|
11
|
+
*/
|
|
12
|
+
export declare class Montao {
|
|
13
|
+
referencias: {
|
|
14
|
+
[endereco: string]: any;
|
|
15
|
+
};
|
|
16
|
+
constructor();
|
|
17
|
+
/**
|
|
18
|
+
* Adiciona uma nova referência ao montão, retornando seu endereço.
|
|
19
|
+
* @param {any} objeto Qualquer objeto que pertença ao montão.
|
|
20
|
+
* @returns {string} O endereço onde a referência foi registrada.
|
|
21
|
+
*/
|
|
22
|
+
adicionarReferencia(objeto: any): string;
|
|
23
|
+
/**
|
|
24
|
+
* Exclui referências do montão, normalmente por finalização de um
|
|
25
|
+
* escopo de execução.
|
|
26
|
+
* @param enderecos
|
|
27
|
+
*/
|
|
28
|
+
excluirReferencias(...enderecos: string[]): void;
|
|
29
|
+
/**
|
|
30
|
+
* Obtém uma referência com base no símbolo executado e endereço da referência.
|
|
31
|
+
* @param {number} hashArquivo O _hash_ correspondente ao caminho do arquivo em execução.
|
|
32
|
+
* @param {number} linha A linha correspondente à declaração sendo executada.
|
|
33
|
+
* @param {string} endereco O endereço da referência.
|
|
34
|
+
* @returns {any} O objeto armazenado no endereço.
|
|
35
|
+
*/
|
|
36
|
+
obterReferencia(hashArquivo: number, linha: number, endereco: string): any;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=montao.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"montao.d.ts","sourceRoot":"","sources":["../../fontes/interpretador/montao.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,qBAAa,MAAM;IACf,WAAW,EAAE;QAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;;IAMzC;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM;IAMxC;;;;OAIG;IACH,kBAAkB,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAMhD;;;;;;OAMG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG;CAU7E"}
|