@designliquido/delegua 0.46.1 → 0.47.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.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.js +12 -8
- 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.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 +27 -19
- 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 +6 -12
- package/bibliotecas/primitivas-dicionario.js.map +1 -1
- package/bibliotecas/primitivas-numero.js +6 -6
- package/bibliotecas/primitivas-numero.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/informacao-variavel-ou-constante.d.ts +1 -0
- package/informacao-variavel-ou-constante.d.ts.map +1 -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 +1 -0
- package/interfaces/pilha-escopos-execucao-interface.d.ts.map +1 -1
- package/interfaces/primitiva-interface.d.ts +3 -0
- package/interfaces/primitiva-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 +2 -2
- package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts.map +1 -1
- package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +5 -5
- 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 +2 -2
- package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts.map +1 -1
- package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js +4 -4
- 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 +6 -4
- package/interpretador/interpretador-base.d.ts.map +1 -1
- package/interpretador/interpretador-base.js +25 -15
- 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 +42 -2
- package/interpretador/interpretador.d.ts.map +1 -1
- package/interpretador/interpretador.js +230 -8
- 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 +1 -0
- package/interpretador/pilha-escopos-execucao.d.ts.map +1 -1
- package/interpretador/pilha-escopos-execucao.js +31 -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-assembly-x64.js +13 -13
- 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-reverso-tenda.d.ts.map +1 -1
- package/tradutores/tradutor-reverso-tenda.js +15 -7
- package/tradutores/tradutor-reverso-tenda.js.map +1 -1
- package/umd/delegua.js +785 -446
- package/espaco-variaveis.d.ts.map +0 -1
- package/espaco-variaveis.js.map +0 -1
|
@@ -1,12 +1,22 @@
|
|
|
1
|
-
import { AcessoMetodo, AcessoMetodoOuPropriedade, AcessoPropriedade, ArgumentoReferenciaFuncao, ReferenciaFuncao, TipoDe } from '../construtos';
|
|
1
|
+
import { AcessoIndiceVariavel, AcessoMetodo, AcessoMetodoOuPropriedade, AcessoPropriedade, ArgumentoReferenciaFuncao, Atribuir, Construto, 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
|
+
protected resolverValor(objeto: any): any;
|
|
16
|
+
avaliacaoDeclaracaoVarOuConst(declaracao: Const | ConstMultiplo | Var | VarMultiplo): Promise<any>;
|
|
17
|
+
avaliarArgumentosEscreva(argumentos: Construto[]): Promise<string>;
|
|
9
18
|
visitarDeclaracaoDefinicaoFuncao(declaracao: FuncaoDeclaracao): void;
|
|
19
|
+
visitarExpressaoAcessoIndiceVariavel(expressao: AcessoIndiceVariavel): Promise<any>;
|
|
10
20
|
visitarExpressaoAcessoMetodo(expressao: AcessoMetodo): Promise<any>;
|
|
11
21
|
/**
|
|
12
22
|
* Casos que ocorrem aqui:
|
|
@@ -20,8 +30,38 @@ export declare class Interpretador extends InterpretadorBase {
|
|
|
20
30
|
visitarExpressaoAcessoMetodoOuPropriedade(expressao: AcessoMetodoOuPropriedade): Promise<any>;
|
|
21
31
|
visitarExpressaoAcessoPropriedade(expressao: AcessoPropriedade): Promise<any>;
|
|
22
32
|
visitarExpressaoArgumentoReferenciaFuncao(expressao: ArgumentoReferenciaFuncao): Promise<any>;
|
|
33
|
+
/**
|
|
34
|
+
* Execução de uma expressão de atribuição.
|
|
35
|
+
* @param expressao A expressão.
|
|
36
|
+
* @returns O valor atribuído.
|
|
37
|
+
*/
|
|
38
|
+
visitarExpressaoDeAtribuicao(expressao: Atribuir): Promise<any>;
|
|
39
|
+
/**
|
|
40
|
+
* Dicionários em Delégua são passados por referência, portanto, são
|
|
41
|
+
* armazenados no montão.
|
|
42
|
+
*/
|
|
43
|
+
visitarExpressaoDicionario(expressao: Dicionario): Promise<any>;
|
|
23
44
|
visitarExpressaoReferenciaFuncao(expressao: ReferenciaFuncao): Promise<any>;
|
|
24
45
|
visitarExpressaoRetornar(declaracao: Retorna): Promise<RetornoQuebra>;
|
|
25
46
|
visitarExpressaoTipoDe(expressao: TipoDe): Promise<string>;
|
|
47
|
+
/**
|
|
48
|
+
* Executa o último escopo empilhado no topo na pilha de escopos do interpretador.
|
|
49
|
+
* Esse método pega exceções, mas apenas as devolve.
|
|
50
|
+
*
|
|
51
|
+
* O tratamento das exceções é feito de acordo com o bloco chamador.
|
|
52
|
+
* Por exemplo, em `tente ... pegue ... finalmente`, a exceção é capturada e tratada.
|
|
53
|
+
* Em outros blocos, pode ser desejável ter o erro em tela.
|
|
54
|
+
* @param manterAmbiente Se verdadeiro, ambiente do topo da pilha de escopo é copiado para o ambiente imediatamente abaixo.
|
|
55
|
+
* @returns O resultado da execução do escopo, se houver.
|
|
56
|
+
*/
|
|
57
|
+
executarUltimoEscopo(manterAmbiente?: boolean): Promise<any>;
|
|
58
|
+
/**
|
|
59
|
+
* Método que efetivamente inicia o processo de interpretação.
|
|
60
|
+
* @param declaracoes Um vetor de declarações gerado pelo Avaliador Sintático.
|
|
61
|
+
* @param manterAmbiente Se ambiente de execução (variáveis, classes, etc.) deve ser mantido. Normalmente usado
|
|
62
|
+
* pelo modo REPL (LAIR).
|
|
63
|
+
* @returns Um objeto com o resultado da interpretação.
|
|
64
|
+
*/
|
|
65
|
+
interpretar(declaracoes: Declaracao[], manterAmbiente?: boolean): Promise<RetornoInterpretador>;
|
|
26
66
|
}
|
|
27
67
|
//# 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,QAAQ,EACR,SAAS,EACT,UAAU,EAEV,gBAAgB,EAChB,MAAM,EAGT,MAAM,eAAe,CAAC;AACvB,OAAO,EAMH,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;IAUrE,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG;IAoBpB,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;IAqE7E,yCAAyC,CACpD,SAAS,EAAE,yBAAyB,GACrC,OAAO,CAAC,GAAG,CAAC;IAOf;;;;OAIG;IACY,4BAA4B,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;IAsD9E;;;OAGG;IACY,0BAA0B,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAwB/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,109 @@ 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
|
+
async avaliacaoDeclaracaoVarOuConst(declaracao) {
|
|
48
|
+
let valorOuOutraVariavel = null;
|
|
49
|
+
if (declaracao.inicializador !== null) {
|
|
50
|
+
valorOuOutraVariavel = await this.avaliar(declaracao.inicializador);
|
|
51
|
+
}
|
|
52
|
+
let valorFinal = null;
|
|
53
|
+
if (valorOuOutraVariavel !== null && valorOuOutraVariavel !== undefined) {
|
|
54
|
+
valorFinal = this.resolverValor(valorOuOutraVariavel);
|
|
55
|
+
}
|
|
56
|
+
return valorFinal;
|
|
57
|
+
}
|
|
58
|
+
async avaliarArgumentosEscreva(argumentos) {
|
|
59
|
+
let formatoTexto = '';
|
|
60
|
+
for (const argumento of argumentos) {
|
|
61
|
+
const resultadoAvaliacao = await this.avaliar(argumento);
|
|
62
|
+
let valor = this.resolverValor(resultadoAvaliacao);
|
|
63
|
+
formatoTexto += `${this.paraTexto(valor)} `;
|
|
64
|
+
}
|
|
65
|
+
return formatoTexto.trimEnd();
|
|
66
|
+
}
|
|
22
67
|
visitarDeclaracaoDefinicaoFuncao(declaracao) {
|
|
23
68
|
const funcao = new estruturas_1.DeleguaFuncao(declaracao.simbolo.lexema, declaracao.funcao);
|
|
24
69
|
// TODO: Depreciar essa abordagem a favor do uso por referências.
|
|
25
70
|
this.pilhaEscoposExecucao.definirVariavel(declaracao.simbolo.lexema, funcao);
|
|
26
71
|
this.pilhaEscoposExecucao.registrarReferenciaFuncao(declaracao.id, funcao);
|
|
27
72
|
}
|
|
73
|
+
async visitarExpressaoAcessoIndiceVariavel(expressao) {
|
|
74
|
+
const promises = await Promise.all([
|
|
75
|
+
this.avaliar(expressao.entidadeChamada),
|
|
76
|
+
this.avaliar(expressao.indice),
|
|
77
|
+
]);
|
|
78
|
+
const variavelObjeto = promises[0];
|
|
79
|
+
const indice = promises[1];
|
|
80
|
+
const objeto = this.resolverValor(variavelObjeto);
|
|
81
|
+
let valorIndice = this.resolverValor(indice);
|
|
82
|
+
if (Array.isArray(objeto)) {
|
|
83
|
+
if (!Number.isInteger(valorIndice)) {
|
|
84
|
+
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.simboloFechamento, 'Somente inteiros podem ser usados para indexar um vetor.', expressao.linha));
|
|
85
|
+
}
|
|
86
|
+
if (valorIndice < 0 && objeto.length !== 0) {
|
|
87
|
+
while (valorIndice < 0) {
|
|
88
|
+
valorIndice += objeto.length;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (valorIndice >= objeto.length) {
|
|
92
|
+
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.simboloFechamento, 'Índice do vetor fora do intervalo.', expressao.linha));
|
|
93
|
+
}
|
|
94
|
+
return objeto[valorIndice];
|
|
95
|
+
}
|
|
96
|
+
if (objeto instanceof construtos_1.Vetor) {
|
|
97
|
+
return objeto.valores[valorIndice];
|
|
98
|
+
}
|
|
99
|
+
if (objeto.constructor === Object ||
|
|
100
|
+
objeto instanceof estruturas_1.ObjetoDeleguaClasse ||
|
|
101
|
+
objeto instanceof estruturas_1.DeleguaFuncao ||
|
|
102
|
+
objeto instanceof estruturas_1.DescritorTipoClasse ||
|
|
103
|
+
objeto instanceof estruturas_1.DeleguaModulo) {
|
|
104
|
+
if (objeto[valorIndice] === 0)
|
|
105
|
+
return 0;
|
|
106
|
+
return objeto[valorIndice] || null;
|
|
107
|
+
}
|
|
108
|
+
if (typeof objeto === primitivos_1.default.TEXTO) {
|
|
109
|
+
if (!Number.isInteger(valorIndice)) {
|
|
110
|
+
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.simboloFechamento, 'Somente inteiros podem ser usados para indexar um vetor.', expressao.linha));
|
|
111
|
+
}
|
|
112
|
+
if (valorIndice < 0 && objeto.length !== 0) {
|
|
113
|
+
while (valorIndice < 0) {
|
|
114
|
+
valorIndice += objeto.length;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (valorIndice >= objeto.length) {
|
|
118
|
+
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.simboloFechamento, 'Índice fora do tamanho.', expressao.linha));
|
|
119
|
+
}
|
|
120
|
+
return objeto.charAt(valorIndice);
|
|
121
|
+
}
|
|
122
|
+
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao({
|
|
123
|
+
hashArquivo: this.hashArquivoDeclaracaoAtual,
|
|
124
|
+
linha: this.linhaDeclaracaoAtual,
|
|
125
|
+
}, 'Somente listas, dicionários, classes e objetos podem ter seus valores indexados.', expressao.linha));
|
|
126
|
+
}
|
|
28
127
|
async visitarExpressaoAcessoMetodo(expressao) {
|
|
29
128
|
let variavelObjeto = await this.avaliar(expressao.objeto);
|
|
30
129
|
// Este caso acontece quando há encadeamento de métodos.
|
|
@@ -34,9 +133,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
34
133
|
if (variavelObjeto.constructor.name === 'RetornoQuebra') {
|
|
35
134
|
variavelObjeto = variavelObjeto.valor;
|
|
36
135
|
}
|
|
37
|
-
const objeto =
|
|
38
|
-
? variavelObjeto.valor
|
|
39
|
-
: variavelObjeto;
|
|
136
|
+
const objeto = this.resolverValor(variavelObjeto);
|
|
40
137
|
if (objeto.constructor.name === 'ObjetoDeleguaClasse') {
|
|
41
138
|
return objeto.obterMetodo(expressao.nomeMetodo) || null;
|
|
42
139
|
}
|
|
@@ -96,7 +193,10 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
96
193
|
}
|
|
97
194
|
break;
|
|
98
195
|
}
|
|
99
|
-
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(
|
|
196
|
+
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao({
|
|
197
|
+
hashArquivo: this.hashArquivoDeclaracaoAtual,
|
|
198
|
+
linha: this.linhaDeclaracaoAtual,
|
|
199
|
+
}, `Método para objeto ou primitiva não encontrado: ${expressao.nomeMetodo}.`, expressao.linha));
|
|
100
200
|
}
|
|
101
201
|
/**
|
|
102
202
|
* Casos que ocorrem aqui:
|
|
@@ -116,9 +216,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
116
216
|
if (variavelObjeto.constructor.name === 'RetornoQuebra') {
|
|
117
217
|
variavelObjeto = variavelObjeto.valor;
|
|
118
218
|
}
|
|
119
|
-
const objeto =
|
|
120
|
-
? variavelObjeto.valor
|
|
121
|
-
: variavelObjeto;
|
|
219
|
+
const objeto = this.resolverValor(variavelObjeto);
|
|
122
220
|
if (objeto.constructor.name === 'ObjetoDeleguaClasse') {
|
|
123
221
|
return objeto.obter(expressao.simbolo);
|
|
124
222
|
}
|
|
@@ -173,7 +271,8 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
173
271
|
}
|
|
174
272
|
// Último caso válido: objeto de uma classe JavaScript que possua a propriedade.
|
|
175
273
|
// Exemplos: classes de LinConEs, como `RetornoComando, ou bibliotecas globais com objetos próprios`.
|
|
176
|
-
if (objeto.hasOwnProperty(expressao.simbolo.lexema) ||
|
|
274
|
+
if (objeto.hasOwnProperty(expressao.simbolo.lexema) ||
|
|
275
|
+
typeof objeto[expressao.simbolo.lexema] !== 'undefined') {
|
|
177
276
|
return objeto[expressao.simbolo.lexema];
|
|
178
277
|
}
|
|
179
278
|
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(null, `Método ou propriedade para objeto ou primitiva não encontrado: ${expressao.simbolo.lexema}.`, expressao.linha));
|
|
@@ -230,6 +329,70 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
230
329
|
const deleguaFuncao = this.pilhaEscoposExecucao.obterVariavelPorNome(expressao.simboloFuncao.lexema);
|
|
231
330
|
return deleguaFuncao;
|
|
232
331
|
}
|
|
332
|
+
/**
|
|
333
|
+
* Execução de uma expressão de atribuição.
|
|
334
|
+
* @param expressao A expressão.
|
|
335
|
+
* @returns O valor atribuído.
|
|
336
|
+
*/
|
|
337
|
+
async visitarExpressaoDeAtribuicao(expressao) {
|
|
338
|
+
const valor = await this.avaliar(expressao.valor);
|
|
339
|
+
const valorResolvido = this.resolverValor(valor);
|
|
340
|
+
let indice = null;
|
|
341
|
+
if (expressao.indice) {
|
|
342
|
+
indice = await this.avaliar(expressao.indice);
|
|
343
|
+
}
|
|
344
|
+
switch (expressao.alvo.constructor.name) {
|
|
345
|
+
case 'Variavel':
|
|
346
|
+
const alvoVariavel = expressao.alvo;
|
|
347
|
+
const variavelResolvida = this.pilhaEscoposExecucao.obterValorVariavel(alvoVariavel.simbolo);
|
|
348
|
+
if (variavelResolvida.valor instanceof estruturas_1.ReferenciaMontao) {
|
|
349
|
+
const referenciaMontao = this.montao.obterReferencia(this.hashArquivoDeclaracaoAtual, this.linhaDeclaracaoAtual, variavelResolvida.valor.endereco);
|
|
350
|
+
referenciaMontao[indice] = valorResolvido;
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
this.pilhaEscoposExecucao.atribuirVariavel(alvoVariavel.simbolo, valorResolvido, indice);
|
|
354
|
+
}
|
|
355
|
+
break;
|
|
356
|
+
case 'AcessoMetodoOuPropriedade':
|
|
357
|
+
// Nunca será método aqui: apenas propriedade.
|
|
358
|
+
const alvoPropriedade = expressao.alvo;
|
|
359
|
+
const variavelObjeto = await this.avaliar(alvoPropriedade.objeto);
|
|
360
|
+
const objeto = this.resolverValor(variavelObjeto);
|
|
361
|
+
const valor = await this.avaliar(expressao.valor);
|
|
362
|
+
if (objeto.constructor.name === 'ObjetoDeleguaClasse') {
|
|
363
|
+
const objetoDeleguaClasse = objeto;
|
|
364
|
+
objetoDeleguaClasse.definir(alvoPropriedade.simbolo, valor);
|
|
365
|
+
}
|
|
366
|
+
break;
|
|
367
|
+
default:
|
|
368
|
+
throw new excecoes_1.ErroEmTempoDeExecucao(null, `Atribuição com caso faltante: ${expressao.alvo.constructor.name}.`);
|
|
369
|
+
}
|
|
370
|
+
return valorResolvido;
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Dicionários em Delégua são passados por referência, portanto, são
|
|
374
|
+
* armazenados no montão.
|
|
375
|
+
*/
|
|
376
|
+
async visitarExpressaoDicionario(expressao) {
|
|
377
|
+
const dicionario = {};
|
|
378
|
+
for (let i = 0; i < expressao.chaves.length; i++) {
|
|
379
|
+
const promises = await Promise.all([
|
|
380
|
+
this.avaliar(expressao.chaves[i]),
|
|
381
|
+
this.avaliar(expressao.valores[i]),
|
|
382
|
+
]);
|
|
383
|
+
if (typeof promises[0] === 'boolean') {
|
|
384
|
+
const chaveLogico = promises[0] === true ? 'verdadeiro' : 'falso';
|
|
385
|
+
dicionario[chaveLogico] = promises[1];
|
|
386
|
+
continue;
|
|
387
|
+
}
|
|
388
|
+
dicionario[promises[0]] = promises[1].hasOwnProperty('valor')
|
|
389
|
+
? promises[1].valor
|
|
390
|
+
: promises[1];
|
|
391
|
+
}
|
|
392
|
+
const enderecoDicionarioMontao = this.montao.adicionarReferencia(dicionario);
|
|
393
|
+
this.pilhaEscoposExecucao.registrarReferenciaMontao(enderecoDicionarioMontao);
|
|
394
|
+
return new estruturas_1.ReferenciaMontao(enderecoDicionarioMontao);
|
|
395
|
+
}
|
|
233
396
|
async visitarExpressaoReferenciaFuncao(expressao) {
|
|
234
397
|
const deleguaFuncao = this.pilhaEscoposExecucao.obterReferenciaFuncao(expressao.idFuncao);
|
|
235
398
|
return deleguaFuncao;
|
|
@@ -261,6 +424,9 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
261
424
|
case 'Dicionario':
|
|
262
425
|
case 'Unario':
|
|
263
426
|
valorTipoDe = await this.avaliar(valorTipoDe);
|
|
427
|
+
if (valorTipoDe instanceof estruturas_1.ReferenciaMontao) {
|
|
428
|
+
valorTipoDe = this.montao.obterReferencia(this.hashArquivoDeclaracaoAtual, this.linhaDeclaracaoAtual, valorTipoDe.endereco);
|
|
429
|
+
}
|
|
264
430
|
return valorTipoDe.tipo || (0, inferenciador_1.inferirTipoVariavel)(valorTipoDe);
|
|
265
431
|
case 'AcessoMetodo':
|
|
266
432
|
const acessoMetodo = valorTipoDe;
|
|
@@ -290,6 +456,62 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
290
456
|
return (0, inferenciador_1.inferirTipoVariavel)(valorTipoDe);
|
|
291
457
|
}
|
|
292
458
|
}
|
|
459
|
+
/**
|
|
460
|
+
* Executa o último escopo empilhado no topo na pilha de escopos do interpretador.
|
|
461
|
+
* Esse método pega exceções, mas apenas as devolve.
|
|
462
|
+
*
|
|
463
|
+
* O tratamento das exceções é feito de acordo com o bloco chamador.
|
|
464
|
+
* Por exemplo, em `tente ... pegue ... finalmente`, a exceção é capturada e tratada.
|
|
465
|
+
* Em outros blocos, pode ser desejável ter o erro em tela.
|
|
466
|
+
* @param manterAmbiente Se verdadeiro, ambiente do topo da pilha de escopo é copiado para o ambiente imediatamente abaixo.
|
|
467
|
+
* @returns O resultado da execução do escopo, se houver.
|
|
468
|
+
*/
|
|
469
|
+
async executarUltimoEscopo(manterAmbiente = false) {
|
|
470
|
+
const ultimoEscopo = this.pilhaEscoposExecucao.topoDaPilha();
|
|
471
|
+
let retornoExecucao;
|
|
472
|
+
try {
|
|
473
|
+
for (; !(retornoExecucao instanceof quebras_1.Quebra) &&
|
|
474
|
+
ultimoEscopo.declaracaoAtual < ultimoEscopo.declaracoes.length; ultimoEscopo.declaracaoAtual++) {
|
|
475
|
+
const declaracaoAtual = ultimoEscopo.declaracoes[ultimoEscopo.declaracaoAtual];
|
|
476
|
+
this.linhaDeclaracaoAtual = declaracaoAtual.linha;
|
|
477
|
+
this.hashArquivoDeclaracaoAtual = declaracaoAtual.hashArquivo;
|
|
478
|
+
retornoExecucao = await this.executar(declaracaoAtual);
|
|
479
|
+
}
|
|
480
|
+
return retornoExecucao;
|
|
481
|
+
}
|
|
482
|
+
catch (erro) {
|
|
483
|
+
const declaracaoAtual = ultimoEscopo.declaracoes[ultimoEscopo.declaracaoAtual];
|
|
484
|
+
if (!this.emDeclaracaoTente) {
|
|
485
|
+
this.erros.push({
|
|
486
|
+
erroInterno: erro,
|
|
487
|
+
linha: declaracaoAtual.linha,
|
|
488
|
+
hashArquivo: declaracaoAtual.hashArquivo,
|
|
489
|
+
});
|
|
490
|
+
}
|
|
491
|
+
else {
|
|
492
|
+
return Promise.reject(erro);
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
finally {
|
|
496
|
+
const escopoFinalizado = this.pilhaEscoposExecucao.removerUltimo();
|
|
497
|
+
const escopoAnterior = this.pilhaEscoposExecucao.topoDaPilha();
|
|
498
|
+
this.montao.excluirReferencias(...escopoFinalizado.espacoMemoria.enderecosMontao);
|
|
499
|
+
if (manterAmbiente || (retornoExecucao && retornoExecucao.preservarEscopo === true)) {
|
|
500
|
+
escopoAnterior.espacoMemoria.valores = Object.assign(escopoAnterior.espacoMemoria.valores, ultimoEscopo.espacoMemoria.valores);
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* Método que efetivamente inicia o processo de interpretação.
|
|
506
|
+
* @param declaracoes Um vetor de declarações gerado pelo Avaliador Sintático.
|
|
507
|
+
* @param manterAmbiente Se ambiente de execução (variáveis, classes, etc.) deve ser mantido. Normalmente usado
|
|
508
|
+
* pelo modo REPL (LAIR).
|
|
509
|
+
* @returns Um objeto com o resultado da interpretação.
|
|
510
|
+
*/
|
|
511
|
+
async interpretar(declaracoes, manterAmbiente) {
|
|
512
|
+
this.montao = new montao_1.Montao();
|
|
513
|
+
return super.interpretar(declaracoes, manterAmbiente);
|
|
514
|
+
}
|
|
293
515
|
}
|
|
294
516
|
exports.Interpretador = Interpretador;
|
|
295
517
|
//# 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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Montao = void 0;
|
|
4
|
+
const excecoes_1 = require("../excecoes");
|
|
5
|
+
const geracao_identificadores_1 = require("../geracao-identificadores");
|
|
6
|
+
/**
|
|
7
|
+
* O montão, conhecido em inglês, como _heap_, guarda todas as estruturas de dados
|
|
8
|
+
* não primitivas durante a execução.
|
|
9
|
+
* Inicialmente trabalha apenas com dicionários, mas a ideia mais futuramente é
|
|
10
|
+
* trabalhar com toda e qualquer estrutura de dados mais complexa.
|
|
11
|
+
*
|
|
12
|
+
* Diferentemente da pilha de escopos de execução, o montão trabalha entre escopos.
|
|
13
|
+
* Por exemplo, se quisermos ter uma funcionalidade do interpretador em que uma
|
|
14
|
+
* referência é preservada entre escopos, podemos apagar o escopo e transferir facilmente
|
|
15
|
+
* a referência do montão para outro escopo.
|
|
16
|
+
*/
|
|
17
|
+
class Montao {
|
|
18
|
+
constructor() {
|
|
19
|
+
this.referencias = {};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Adiciona uma nova referência ao montão, retornando seu endereço.
|
|
23
|
+
* @param {any} objeto Qualquer objeto que pertença ao montão.
|
|
24
|
+
* @returns {string} O endereço onde a referência foi registrada.
|
|
25
|
+
*/
|
|
26
|
+
adicionarReferencia(objeto) {
|
|
27
|
+
const novoEndereco = (0, geracao_identificadores_1.uuidv4)();
|
|
28
|
+
this.referencias[novoEndereco] = objeto;
|
|
29
|
+
return novoEndereco;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Exclui referências do montão, normalmente por finalização de um
|
|
33
|
+
* escopo de execução.
|
|
34
|
+
* @param enderecos
|
|
35
|
+
*/
|
|
36
|
+
excluirReferencias(...enderecos) {
|
|
37
|
+
for (const endereco of enderecos) {
|
|
38
|
+
delete this.referencias[endereco];
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Obtém uma referência com base no símbolo executado e endereço da referência.
|
|
43
|
+
* @param {number} hashArquivo O _hash_ correspondente ao caminho do arquivo em execução.
|
|
44
|
+
* @param {number} linha A linha correspondente à declaração sendo executada.
|
|
45
|
+
* @param {string} endereco O endereço da referência.
|
|
46
|
+
* @returns {any} O objeto armazenado no endereço.
|
|
47
|
+
*/
|
|
48
|
+
obterReferencia(hashArquivo, linha, endereco) {
|
|
49
|
+
if (!(endereco in this.referencias)) {
|
|
50
|
+
throw new excecoes_1.ErroEmTempoDeExecucao({ hashArquivo, linha }, `Referência para montão com endereco ${endereco} não existe.`);
|
|
51
|
+
}
|
|
52
|
+
return this.referencias[endereco];
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.Montao = Montao;
|
|
56
|
+
//# sourceMappingURL=montao.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"montao.js","sourceRoot":"","sources":["../../fontes/interpretador/montao.ts"],"names":[],"mappings":";;;AAAA,0CAAoD;AACpD,wEAAoD;AAGpD;;;;;;;;;;GAUG;AACH,MAAa,MAAM;IAGf;QACI,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,MAAW;QAC3B,MAAM,YAAY,GAAG,IAAA,gCAAM,GAAE,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;QACxC,OAAO,YAAY,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,GAAG,SAAmB;QACrC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,eAAe,CAAC,WAAmB,EAAE,KAAa,EAAE,QAAgB;QAChE,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,gCAAqB,CAC3B,EAAE,WAAW,EAAE,KAAK,EAAsB,EAC1C,uCAAuC,QAAQ,cAAc,CAChE,CAAC;QACN,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;CACJ;AA9CD,wBA8CC"}
|
|
@@ -38,5 +38,6 @@ export declare class PilhaEscoposExecucao implements PilhaEscoposExecucaoInterfa
|
|
|
38
38
|
obterTodasDeclaracoesClasse(): any;
|
|
39
39
|
registrarReferenciaFuncao(idFuncao: string, funcao: DeleguaFuncao): void;
|
|
40
40
|
obterReferenciaFuncao(idFuncao: string): DeleguaFuncao;
|
|
41
|
+
registrarReferenciaMontao(endereco: string): void;
|
|
41
42
|
}
|
|
42
43
|
//# sourceMappingURL=pilha-escopos-execucao.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pilha-escopos-execucao.d.ts","sourceRoot":"","sources":["../../fontes/interpretador/pilha-escopos-execucao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,aAAa,
|
|
1
|
+
{"version":3,"file":"pilha-escopos-execucao.d.ts","sourceRoot":"","sources":["../../fontes/interpretador/pilha-escopos-execucao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,aAAa,EAAoB,MAAM,cAAc,CAAC;AAEpF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,6BAA6B,EAAE,MAAM,gDAAgD,CAAC;AAM/F,qBAAa,oBAAqB,YAAW,6BAA6B;IACtE,KAAK,EAAE,cAAc,EAAE,CAAC;;IAMxB,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAIpC,MAAM,IAAI,OAAO;IAIjB,SAAS,IAAI,MAAM;IAInB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;IAI1C,WAAW,IAAI,cAAc;IAK7B,aAAa,IAAI,cAAc;IAK/B,OAAO,CAAC,cAAc;IAiBtB,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAmCxE,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM;IAqC/D,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAerE,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM;IA6CvE,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAW5D,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,iBAAiB;IAKnE,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,GAAG,iBAAiB;IAchE,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB;IAcrD;;OAEG;IACH,mBAAmB,CAAC,cAAc,GAAE,iBAAiB,EAAO,GAAG,GAAG,EAAE;IAkBpE;;;OAGG;IACH,uBAAuB,IAAI;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAA;KAAE;IAa5D;;;OAGG;IACH,2BAA2B,IAAI,GAAG;IAalC,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAKxE,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa;IActD,yBAAyB,CAAC,QAAQ,EAAE,MAAM;CAI7C"}
|