@designliquido/delegua 0.59.0 → 0.59.1
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/bibliotecas/dialetos/pitugues/primitivas-texto.d.ts.map +1 -1
- package/bibliotecas/dialetos/pitugues/primitivas-texto.js +54 -0
- package/bibliotecas/dialetos/pitugues/primitivas-texto.js.map +1 -1
- package/bibliotecas/primitivas-texto.d.ts.map +1 -1
- package/bibliotecas/primitivas-texto.js +17 -0
- package/bibliotecas/primitivas-texto.js.map +1 -1
- package/bin/package.json +1 -1
- package/interfaces/interpretador-interface.d.ts +1 -1
- package/interfaces/interpretador-interface.d.ts.map +1 -1
- package/interfaces/primitiva-interface.d.ts +1 -0
- package/interfaces/primitiva-interface.d.ts.map +1 -1
- package/interfaces/retornos/index.d.ts +1 -0
- package/interfaces/retornos/index.d.ts.map +1 -1
- package/interfaces/retornos/index.js +1 -0
- package/interfaces/retornos/index.js.map +1 -1
- package/interpretador/dialetos/pitugues/comum.d.ts +16 -0
- package/interpretador/dialetos/pitugues/comum.d.ts.map +1 -0
- package/interpretador/dialetos/pitugues/comum.js +270 -0
- package/interpretador/dialetos/pitugues/comum.js.map +1 -0
- package/interpretador/dialetos/pitugues/index.d.ts +1 -0
- package/interpretador/dialetos/pitugues/index.d.ts.map +1 -1
- package/interpretador/dialetos/pitugues/index.js +1 -0
- package/interpretador/dialetos/pitugues/index.js.map +1 -1
- package/interpretador/dialetos/pitugues/interpretador-pitugues-com-depuracao.d.ts +8 -0
- package/interpretador/dialetos/pitugues/interpretador-pitugues-com-depuracao.d.ts.map +1 -0
- package/interpretador/dialetos/pitugues/interpretador-pitugues-com-depuracao.js +51 -0
- package/interpretador/dialetos/pitugues/interpretador-pitugues-com-depuracao.js.map +1 -0
- package/interpretador/dialetos/pitugues/interpretador-pitugues.d.ts +0 -9
- package/interpretador/dialetos/pitugues/interpretador-pitugues.d.ts.map +1 -1
- package/interpretador/dialetos/pitugues/interpretador-pitugues.js +37 -234
- package/interpretador/dialetos/pitugues/interpretador-pitugues.js.map +1 -1
- package/lexador/micro-lexador-pitugues.d.ts +1 -0
- package/lexador/micro-lexador-pitugues.d.ts.map +1 -1
- package/lexador/micro-lexador-pitugues.js +5 -1
- package/lexador/micro-lexador-pitugues.js.map +1 -1
- package/package.json +1 -1
- package/umd/delegua.js +324 -302
- package/interpretador/interpretador-com-depuracao.d.ts +0 -182
- package/interpretador/interpretador-com-depuracao.d.ts.map +0 -1
- package/interpretador/interpretador-com-depuracao.js +0 -563
- package/interpretador/interpretador-com-depuracao.js.map +0 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.InterpretadorPituguesComDepuracao = void 0;
|
|
37
|
+
const depuracao_1 = require("../../depuracao");
|
|
38
|
+
const comum = __importStar(require("./comum"));
|
|
39
|
+
class InterpretadorPituguesComDepuracao extends depuracao_1.InterpretadorComDepuracao {
|
|
40
|
+
async visitarExpressaoAcessoMetodo(expressao) {
|
|
41
|
+
return comum.visitarExpressaoAcessoMetodo(this, expressao);
|
|
42
|
+
}
|
|
43
|
+
async visitarExpressaoAcessoMetodoOuPropriedade(expressao) {
|
|
44
|
+
return comum.visitarExpressaoAcessoMetodoOuPropriedade(this, expressao);
|
|
45
|
+
}
|
|
46
|
+
async visitarExpressaoAcessoPropriedade(expressao) {
|
|
47
|
+
return comum.visitarExpressaoAcessoPropriedade(this, expressao);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.InterpretadorPituguesComDepuracao = InterpretadorPituguesComDepuracao;
|
|
51
|
+
//# sourceMappingURL=interpretador-pitugues-com-depuracao.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpretador-pitugues-com-depuracao.js","sourceRoot":"","sources":["../../../../fontes/interpretador/dialetos/pitugues/interpretador-pitugues-com-depuracao.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+CAA4D;AAE5D,+CAAiC;AAEjC,MAAa,iCAAkC,SAAQ,qCAAyB;IACnE,KAAK,CAAC,4BAA4B,CAAC,SAAuB;QAC/D,OAAO,KAAK,CAAC,4BAA4B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/D,CAAC;IAEQ,KAAK,CAAC,yCAAyC,CAAC,SAAoC;QACzF,OAAO,KAAK,CAAC,yCAAyC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC5E,CAAC;IAEQ,KAAK,CAAC,iCAAiC,CAAC,SAA4B;QACzE,OAAO,KAAK,CAAC,iCAAiC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACpE,CAAC;CACJ;AAZD,8EAYC"}
|
|
@@ -2,15 +2,6 @@ import { AcessoMetodo, AcessoMetodoOuPropriedade, AcessoPropriedade } from "../.
|
|
|
2
2
|
import { Interpretador } from "../../interpretador";
|
|
3
3
|
export declare class InterpretadorPitugues extends Interpretador {
|
|
4
4
|
visitarExpressaoAcessoMetodo(expressao: AcessoMetodo): Promise<any>;
|
|
5
|
-
/**
|
|
6
|
-
* Casos que ocorrem aqui:
|
|
7
|
-
*
|
|
8
|
-
* - Quando o método ou propriedade é ou 'qualquer', ou vetor
|
|
9
|
-
* de 'qualquer' ('qualquer[]'), e uma primitiva é usada.
|
|
10
|
-
* - Quando o objeto é uma classe definida em código.
|
|
11
|
-
* @param {AcessoMetodoOuPropriedade} expressao A expressão de acesso a método ou propriedade.
|
|
12
|
-
* @returns A primitiva encontrada.
|
|
13
|
-
*/
|
|
14
5
|
visitarExpressaoAcessoMetodoOuPropriedade(expressao: AcessoMetodoOuPropriedade): Promise<any>;
|
|
15
6
|
visitarExpressaoAcessoPropriedade(expressao: AcessoPropriedade): Promise<any>;
|
|
16
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interpretador-pitugues.d.ts","sourceRoot":"","sources":["../../../../fontes/interpretador/dialetos/pitugues/interpretador-pitugues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"interpretador-pitugues.d.ts","sourceRoot":"","sources":["../../../../fontes/interpretador/dialetos/pitugues/interpretador-pitugues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,qBAAa,qBAAsB,SAAQ,aAAa;IACrC,4BAA4B,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;IAInE,yCAAyC,CAAC,SAAS,EAAE,yBAAyB,GAAG,OAAO,CAAC,GAAG,CAAC;IAI7F,iCAAiC,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC;CAG/F"}
|
|
@@ -1,247 +1,50 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
5
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
36
|
exports.InterpretadorPitugues = void 0;
|
|
7
|
-
const excecoes_1 = require("../../../excecoes");
|
|
8
|
-
const inferenciador_1 = require("../../../inferenciador");
|
|
9
|
-
const quebras_1 = require("../../../quebras");
|
|
10
|
-
const estruturas_1 = require("../../estruturas");
|
|
11
37
|
const interpretador_1 = require("../../interpretador");
|
|
12
|
-
const
|
|
13
|
-
const primitivas_numero_1 = __importDefault(require("../../../bibliotecas/dialetos/pitugues/primitivas-numero"));
|
|
14
|
-
const primitivas_texto_1 = __importDefault(require("../../../bibliotecas/dialetos/pitugues/primitivas-texto"));
|
|
15
|
-
const primitivas_vetor_1 = __importDefault(require("../../../bibliotecas/dialetos/pitugues/primitivas-vetor"));
|
|
16
|
-
const primitivos_1 = __importDefault(require("../../../tipos-de-dados/primitivos"));
|
|
17
|
-
const pitugues_1 = __importDefault(require("../../../tipos-de-dados/dialetos/pitugues"));
|
|
38
|
+
const comum = __importStar(require("./comum"));
|
|
18
39
|
class InterpretadorPitugues extends interpretador_1.Interpretador {
|
|
19
40
|
async visitarExpressaoAcessoMetodo(expressao) {
|
|
20
|
-
|
|
21
|
-
let variavelObjeto = await this.avaliar(expressao.objeto);
|
|
22
|
-
// Este caso acontece quando há encadeamento de métodos.
|
|
23
|
-
// Por exemplo, `objeto1.metodo1().metodo2()`.
|
|
24
|
-
// Como `RetornoQuebra` também possui `valor`, precisamos extrair o
|
|
25
|
-
// valor dele primeiro.
|
|
26
|
-
if (variavelObjeto.constructor && variavelObjeto.constructor === quebras_1.RetornoQuebra) {
|
|
27
|
-
variavelObjeto = variavelObjeto.valor;
|
|
28
|
-
}
|
|
29
|
-
const objeto = this.resolverValor(variavelObjeto);
|
|
30
|
-
if (objeto.constructor && objeto.constructor.name === 'ObjetoDeleguaClasse') {
|
|
31
|
-
return objeto.obterMetodo(expressao.nomeMetodo) || null;
|
|
32
|
-
}
|
|
33
|
-
// Objeto simples do JavaScript, ou dicionário de Delégua.
|
|
34
|
-
if (objeto.constructor === Object) {
|
|
35
|
-
if (expressao.nomeMetodo in primitivas_dicionario_1.default) {
|
|
36
|
-
const metodoDePrimitivaDicionario = primitivas_dicionario_1.default[expressao.nomeMetodo].implementacao;
|
|
37
|
-
return new estruturas_1.MetodoPrimitiva(nomeObjeto, objeto, metodoDePrimitivaDicionario);
|
|
38
|
-
}
|
|
39
|
-
return objeto[expressao.nomeMetodo] || null;
|
|
40
|
-
}
|
|
41
|
-
// Casos em que o objeto possui algum outro tipo que não o de objeto simples.
|
|
42
|
-
// Normalmente executam quando uma biblioteca é importada, e estamos tentando
|
|
43
|
-
// obter alguma propriedade ou método desse objeto.
|
|
44
|
-
// Caso 1: Função tradicional do JavaScript.
|
|
45
|
-
if (typeof objeto[expressao.nomeMetodo] === primitivos_1.default.FUNCAO) {
|
|
46
|
-
return objeto[expressao.nomeMetodo];
|
|
47
|
-
}
|
|
48
|
-
// Caso 2: Objeto tradicional do JavaScript.
|
|
49
|
-
if (typeof objeto[expressao.nomeMetodo] === primitivos_1.default.OBJETO) {
|
|
50
|
-
return objeto[expressao.nomeMetodo];
|
|
51
|
-
}
|
|
52
|
-
// A partir daqui, presume-se que o objeto é uma das estruturas
|
|
53
|
-
// de Delégua.
|
|
54
|
-
if (objeto instanceof estruturas_1.DeleguaModulo) {
|
|
55
|
-
return objeto.componentes[expressao.nomeMetodo] || null;
|
|
56
|
-
}
|
|
57
|
-
let tipoObjeto = variavelObjeto.tipo;
|
|
58
|
-
if (tipoObjeto === null || tipoObjeto === undefined) {
|
|
59
|
-
tipoObjeto = (0, inferenciador_1.inferirTipoVariavel)(variavelObjeto);
|
|
60
|
-
}
|
|
61
|
-
// Como internamente um dicionário de Delégua é simplesmente um objeto de
|
|
62
|
-
// JavaScript, as primitivas de dicionário, especificamente, são tratadas
|
|
63
|
-
// mais acima.
|
|
64
|
-
switch (tipoObjeto) {
|
|
65
|
-
case pitugues_1.default.INTEIRO:
|
|
66
|
-
case pitugues_1.default.NUMERO:
|
|
67
|
-
case pitugues_1.default.NÚMERO:
|
|
68
|
-
const metodoDePrimitivaNumero = primitivas_numero_1.default[expressao.nomeMetodo].implementacao;
|
|
69
|
-
if (metodoDePrimitivaNumero) {
|
|
70
|
-
return new estruturas_1.MetodoPrimitiva(nomeObjeto, objeto, metodoDePrimitivaNumero);
|
|
71
|
-
}
|
|
72
|
-
break;
|
|
73
|
-
case pitugues_1.default.TEXTO:
|
|
74
|
-
const metodoDePrimitivaTexto = primitivas_texto_1.default[expressao.nomeMetodo].implementacao;
|
|
75
|
-
if (metodoDePrimitivaTexto) {
|
|
76
|
-
return new estruturas_1.MetodoPrimitiva(nomeObjeto, objeto, metodoDePrimitivaTexto);
|
|
77
|
-
}
|
|
78
|
-
break;
|
|
79
|
-
case pitugues_1.default.VETOR:
|
|
80
|
-
case pitugues_1.default.VETOR_NUMERO:
|
|
81
|
-
case pitugues_1.default.VETOR_NÚMERO:
|
|
82
|
-
case pitugues_1.default.VETOR_TEXTO:
|
|
83
|
-
const metodoDePrimitivaVetor = primitivas_vetor_1.default[expressao.nomeMetodo].implementacao;
|
|
84
|
-
if (metodoDePrimitivaVetor) {
|
|
85
|
-
return new estruturas_1.MetodoPrimitiva(nomeObjeto, objeto, metodoDePrimitivaVetor);
|
|
86
|
-
}
|
|
87
|
-
break;
|
|
88
|
-
}
|
|
89
|
-
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao({
|
|
90
|
-
hashArquivo: this.hashArquivoDeclaracaoAtual,
|
|
91
|
-
linha: this.linhaDeclaracaoAtual,
|
|
92
|
-
}, `Método para objeto ou primitiva não encontrado: ${expressao.nomeMetodo}.`, expressao.linha));
|
|
41
|
+
return comum.visitarExpressaoAcessoMetodo(this, expressao);
|
|
93
42
|
}
|
|
94
|
-
/**
|
|
95
|
-
* Casos que ocorrem aqui:
|
|
96
|
-
*
|
|
97
|
-
* - Quando o método ou propriedade é ou 'qualquer', ou vetor
|
|
98
|
-
* de 'qualquer' ('qualquer[]'), e uma primitiva é usada.
|
|
99
|
-
* - Quando o objeto é uma classe definida em código.
|
|
100
|
-
* @param {AcessoMetodoOuPropriedade} expressao A expressão de acesso a método ou propriedade.
|
|
101
|
-
* @returns A primitiva encontrada.
|
|
102
|
-
*/
|
|
103
43
|
async visitarExpressaoAcessoMetodoOuPropriedade(expressao) {
|
|
104
|
-
|
|
105
|
-
let variavelObjeto = await this.avaliar(expressao.objeto);
|
|
106
|
-
// Este caso acontece quando há encadeamento de métodos.
|
|
107
|
-
// Por exemplo, `objeto1.metodo1().metodo2()`.
|
|
108
|
-
// Como `RetornoQuebra` também possui `valor`, precisamos extrair o
|
|
109
|
-
// valor dele primeiro.
|
|
110
|
-
if (variavelObjeto.constructor === quebras_1.RetornoQuebra) {
|
|
111
|
-
const retornoQuebra = variavelObjeto;
|
|
112
|
-
variavelObjeto = retornoQuebra.valor;
|
|
113
|
-
}
|
|
114
|
-
const objeto = this.resolverValor(variavelObjeto, true);
|
|
115
|
-
if (objeto.constructor === estruturas_1.ObjetoDeleguaClasse) {
|
|
116
|
-
return objeto.obter(expressao.simbolo);
|
|
117
|
-
}
|
|
118
|
-
// Objeto simples do JavaScript, ou dicionário de Delégua.
|
|
119
|
-
if (objeto.constructor === Object) {
|
|
120
|
-
if (expressao.simbolo.lexema in primitivas_dicionario_1.default) {
|
|
121
|
-
if (!(expressao.simbolo.lexema in primitivas_numero_1.default)) {
|
|
122
|
-
throw new excecoes_1.ErroEmTempoDeExecucao(expressao.simbolo, `Método de primitiva '${expressao.simbolo.lexema}' não existe para o tipo dicionário.`);
|
|
123
|
-
}
|
|
124
|
-
const metodoDePrimitivaDicionario = primitivas_dicionario_1.default[expressao.simbolo.lexema].implementacao;
|
|
125
|
-
return new estruturas_1.MetodoPrimitiva(nomeObjeto, objeto, metodoDePrimitivaDicionario);
|
|
126
|
-
}
|
|
127
|
-
return objeto[expressao.simbolo.lexema];
|
|
128
|
-
}
|
|
129
|
-
// String do JavaScript, ou seja, primitiva de texto.
|
|
130
|
-
if (objeto.constructor === String) {
|
|
131
|
-
if (!(expressao.simbolo.lexema in primitivas_texto_1.default)) {
|
|
132
|
-
throw new excecoes_1.ErroEmTempoDeExecucao(expressao.simbolo, `Método de primitiva '${expressao.simbolo.lexema}' não existe para o tipo texto.`);
|
|
133
|
-
}
|
|
134
|
-
const metodoDePrimitivaTexto = primitivas_texto_1.default[expressao.simbolo.lexema].implementacao;
|
|
135
|
-
return new estruturas_1.MetodoPrimitiva(nomeObjeto, objeto, metodoDePrimitivaTexto);
|
|
136
|
-
}
|
|
137
|
-
// A partir daqui, presume-se que o objeto é uma das estruturas
|
|
138
|
-
// de Delégua.
|
|
139
|
-
if (objeto instanceof estruturas_1.DeleguaModulo) {
|
|
140
|
-
return objeto.componentes[expressao.simbolo.lexema] || null;
|
|
141
|
-
}
|
|
142
|
-
let tipoObjeto = variavelObjeto.tipo;
|
|
143
|
-
if (tipoObjeto === null || tipoObjeto === undefined) {
|
|
144
|
-
tipoObjeto = (0, inferenciador_1.inferirTipoVariavel)(variavelObjeto);
|
|
145
|
-
}
|
|
146
|
-
// Como internamente um dicionário de Delégua é simplesmente um objeto de
|
|
147
|
-
// JavaScript, as primitivas de dicionário, especificamente, são tratadas
|
|
148
|
-
// mais acima.
|
|
149
|
-
switch (tipoObjeto) {
|
|
150
|
-
case pitugues_1.default.INTEIRO:
|
|
151
|
-
case pitugues_1.default.NUMERO:
|
|
152
|
-
case pitugues_1.default.NÚMERO:
|
|
153
|
-
if (!(expressao.simbolo.lexema in primitivas_numero_1.default)) {
|
|
154
|
-
throw new excecoes_1.ErroEmTempoDeExecucao(expressao.simbolo, `Método de primitiva '${expressao.simbolo.lexema}' não existe para o tipo ${tipoObjeto}.`);
|
|
155
|
-
}
|
|
156
|
-
const metodoDePrimitivaNumero = primitivas_numero_1.default[expressao.simbolo.lexema].implementacao;
|
|
157
|
-
if (metodoDePrimitivaNumero) {
|
|
158
|
-
return new estruturas_1.MetodoPrimitiva(nomeObjeto, objeto, metodoDePrimitivaNumero);
|
|
159
|
-
}
|
|
160
|
-
break;
|
|
161
|
-
case pitugues_1.default.TEXTO:
|
|
162
|
-
if (!(expressao.simbolo.lexema in primitivas_texto_1.default)) {
|
|
163
|
-
throw new excecoes_1.ErroEmTempoDeExecucao(expressao.simbolo, `Método de primitiva '${expressao.simbolo.lexema}' não existe para o tipo ${tipoObjeto}.`);
|
|
164
|
-
}
|
|
165
|
-
const metodoDePrimitivaTexto = primitivas_texto_1.default[expressao.simbolo.lexema].implementacao;
|
|
166
|
-
if (metodoDePrimitivaTexto) {
|
|
167
|
-
return new estruturas_1.MetodoPrimitiva(nomeObjeto, objeto, metodoDePrimitivaTexto);
|
|
168
|
-
}
|
|
169
|
-
break;
|
|
170
|
-
case pitugues_1.default.VETOR:
|
|
171
|
-
case pitugues_1.default.VETOR_INTEIRO:
|
|
172
|
-
case pitugues_1.default.VETOR_LOGICO:
|
|
173
|
-
case pitugues_1.default.VETOR_LÓGICO:
|
|
174
|
-
case pitugues_1.default.VETOR_NUMERO:
|
|
175
|
-
case pitugues_1.default.VETOR_NÚMERO:
|
|
176
|
-
case pitugues_1.default.VETOR_QUALQUER:
|
|
177
|
-
case pitugues_1.default.VETOR_TEXTO:
|
|
178
|
-
if (!(expressao.simbolo.lexema in primitivas_vetor_1.default)) {
|
|
179
|
-
throw new excecoes_1.ErroEmTempoDeExecucao(expressao.simbolo, `Método de primitiva '${expressao.simbolo.lexema}' não existe para o tipo ${tipoObjeto}.`);
|
|
180
|
-
}
|
|
181
|
-
const metodoDePrimitivaVetor = primitivas_vetor_1.default[expressao.simbolo.lexema].implementacao;
|
|
182
|
-
if (metodoDePrimitivaVetor) {
|
|
183
|
-
return new estruturas_1.MetodoPrimitiva(nomeObjeto, objeto, metodoDePrimitivaVetor);
|
|
184
|
-
}
|
|
185
|
-
break;
|
|
186
|
-
}
|
|
187
|
-
// Objeto de uma classe JavaScript regular (ou seja, com construtor e propriedades)
|
|
188
|
-
// que possua a propriedade.
|
|
189
|
-
// Exemplos: classes de LinConEs, como `RetornoComando`, ou bibliotecas globais com objetos próprios.
|
|
190
|
-
if (objeto.hasOwnProperty && objeto.hasOwnProperty(expressao.simbolo.lexema)) {
|
|
191
|
-
return objeto[expressao.simbolo.lexema];
|
|
192
|
-
}
|
|
193
|
-
// Último caso: objeto simples, sem construtor, sem protótipo. Exemplo: {'a': 1, 'b': 2}
|
|
194
|
-
if (typeof objeto[expressao.simbolo.lexema] !== 'undefined') {
|
|
195
|
-
return objeto[expressao.simbolo.lexema];
|
|
196
|
-
}
|
|
197
|
-
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(null, `Método ou propriedade para objeto ou primitiva não encontrado: ${expressao.simbolo.lexema}.`, expressao.linha));
|
|
44
|
+
return comum.visitarExpressaoAcessoMetodoOuPropriedade(this, expressao);
|
|
198
45
|
}
|
|
199
46
|
async visitarExpressaoAcessoPropriedade(expressao) {
|
|
200
|
-
|
|
201
|
-
let variavelObjeto = await this.avaliar(expressao.objeto);
|
|
202
|
-
// Este caso acontece quando há encadeamento de métodos.
|
|
203
|
-
// Por exemplo, `objeto1.metodo1().metodo2()`.
|
|
204
|
-
// Como `RetornoQuebra` também possui `valor`, precisamos extrair o
|
|
205
|
-
// valor dele primeiro.
|
|
206
|
-
if (variavelObjeto.constructor && variavelObjeto.constructor === quebras_1.RetornoQuebra) {
|
|
207
|
-
variavelObjeto = variavelObjeto.valor;
|
|
208
|
-
}
|
|
209
|
-
const objeto = this.resolverValor(variavelObjeto);
|
|
210
|
-
// Outro caso que `instanceof` simplesmente não funciona para casos em Liquido,
|
|
211
|
-
// então testamos também o nome do construtor.
|
|
212
|
-
if (objeto instanceof estruturas_1.ObjetoDeleguaClasse ||
|
|
213
|
-
(objeto.constructor && objeto.constructor.name === 'ObjetoDeleguaClasse')) {
|
|
214
|
-
return objeto.obterMetodo(expressao.nomePropriedade) || null;
|
|
215
|
-
}
|
|
216
|
-
// Objeto simples do JavaScript, ou dicionário de Delégua.
|
|
217
|
-
if (objeto.constructor === Object) {
|
|
218
|
-
if (expressao.nomePropriedade in primitivas_dicionario_1.default) {
|
|
219
|
-
const metodoDePrimitivaDicionario = primitivas_dicionario_1.default[expressao.nomePropriedade].implementacao;
|
|
220
|
-
return new estruturas_1.MetodoPrimitiva(nomeObjeto, objeto, metodoDePrimitivaDicionario);
|
|
221
|
-
}
|
|
222
|
-
return objeto[expressao.nomePropriedade] || null;
|
|
223
|
-
}
|
|
224
|
-
// Casos em que o objeto possui algum outro tipo que não o de objeto simples.
|
|
225
|
-
// Normalmente executam quando uma biblioteca é importada, e estamos tentando
|
|
226
|
-
// obter alguma propriedade ou método desse objeto.
|
|
227
|
-
// Caso 1: Função tradicional do JavaScript.
|
|
228
|
-
if (typeof objeto[expressao.nomePropriedade] === primitivos_1.default.FUNCAO) {
|
|
229
|
-
return objeto[expressao.nomePropriedade];
|
|
230
|
-
}
|
|
231
|
-
// Caso 2: Objeto tradicional do JavaScript.
|
|
232
|
-
if (typeof objeto[expressao.nomePropriedade] === primitivos_1.default.OBJETO) {
|
|
233
|
-
return objeto[expressao.nomePropriedade];
|
|
234
|
-
}
|
|
235
|
-
// A partir daqui, presume-se que o objeto é uma das estruturas
|
|
236
|
-
// de Delégua.
|
|
237
|
-
if (objeto instanceof estruturas_1.DeleguaModulo) {
|
|
238
|
-
return objeto.componentes[expressao.nomePropriedade] || null;
|
|
239
|
-
}
|
|
240
|
-
let tipoObjeto = variavelObjeto.tipo;
|
|
241
|
-
if (tipoObjeto === null || tipoObjeto === undefined) {
|
|
242
|
-
tipoObjeto = (0, inferenciador_1.inferirTipoVariavel)(variavelObjeto);
|
|
243
|
-
}
|
|
244
|
-
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(null, `Propriedade para objeto ou primitiva não encontrado: ${expressao.nomePropriedade}.`, expressao.linha));
|
|
47
|
+
return comum.visitarExpressaoAcessoPropriedade(this, expressao);
|
|
245
48
|
}
|
|
246
49
|
}
|
|
247
50
|
exports.InterpretadorPitugues = InterpretadorPitugues;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interpretador-pitugues.js","sourceRoot":"","sources":["../../../../fontes/interpretador/dialetos/pitugues/interpretador-pitugues.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interpretador-pitugues.js","sourceRoot":"","sources":["../../../../fontes/interpretador/dialetos/pitugues/interpretador-pitugues.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uDAAoD;AAEpD,+CAAiC;AAEjC,MAAa,qBAAsB,SAAQ,6BAAa;IAC3C,KAAK,CAAC,4BAA4B,CAAC,SAAuB;QAC/D,OAAO,KAAK,CAAC,4BAA4B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/D,CAAC;IAEQ,KAAK,CAAC,yCAAyC,CAAC,SAAoC;QACzF,OAAO,KAAK,CAAC,yCAAyC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC5E,CAAC;IAEQ,KAAK,CAAC,iCAAiC,CAAC,SAA4B;QACzE,OAAO,KAAK,CAAC,iCAAiC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACpE,CAAC;CACJ;AAZD,sDAYC"}
|
|
@@ -12,6 +12,7 @@ export declare class MicroLexadorPitugues {
|
|
|
12
12
|
inicioSimbolo: number;
|
|
13
13
|
atual: number;
|
|
14
14
|
codigo: string;
|
|
15
|
+
regexInterpolacao: RegExp;
|
|
15
16
|
eDigito(caractere: string): boolean;
|
|
16
17
|
eAlfabeto(caractere: string): boolean;
|
|
17
18
|
eAlfabetoOuDigito(caractere: any): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"micro-lexador-pitugues.d.ts","sourceRoot":"","sources":["../../fontes/lexador/micro-lexador-pitugues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAO7C;;;;GAIG;AACH,qBAAa,oBAAoB;IAC7B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"micro-lexador-pitugues.d.ts","sourceRoot":"","sources":["../../fontes/lexador/micro-lexador-pitugues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAO7C;;;;GAIG;AACH,qBAAa,oBAAoB;IAC7B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IAGf,iBAAiB,EAAE,MAAM,CAAmC;IAC5D,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAInC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAoCrC,iBAAiB,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO;IAI1C,cAAc,IAAI,OAAO;IAIzB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,GAAU,GAAG,IAAI;IAKzD,aAAa,CAAC,WAAW,SAAM,GAAG,IAAI;IAkBtC,cAAc,IAAI,IAAI;IAkBtB,uBAAuB,IAAI,IAAI;IAe/B,aAAa,IAAI,IAAI;IA6FrB;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC,gBAAgB,CAAC;CAiB3D"}
|
|
@@ -13,6 +13,10 @@ const pitugues_1 = __importDefault(require("../tipos-de-simbolos/pitugues"));
|
|
|
13
13
|
* bastante reduzidos em relação ao lexador normal.
|
|
14
14
|
*/
|
|
15
15
|
class MicroLexadorPitugues {
|
|
16
|
+
constructor() {
|
|
17
|
+
// Aceita apenas interpolações no formato ${identificador} (equivalente a "f-string")
|
|
18
|
+
this.regexInterpolacao = /\$\{[a-zA-Z_][a-zA-Z0-9_]*\}/g;
|
|
19
|
+
}
|
|
16
20
|
eDigito(caractere) {
|
|
17
21
|
return caractere >= '0' && caractere <= '9';
|
|
18
22
|
}
|
|
@@ -130,7 +134,7 @@ class MicroLexadorPitugues {
|
|
|
130
134
|
case '*':
|
|
131
135
|
this.atual++;
|
|
132
136
|
switch (this.codigo[this.atual]) {
|
|
133
|
-
case '
|
|
137
|
+
case '**':
|
|
134
138
|
this.atual++;
|
|
135
139
|
this.adicionarSimbolo(pitugues_1.default.EXPONENCIACAO);
|
|
136
140
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"micro-lexador-pitugues.js","sourceRoot":"","sources":["../../fontes/lexador/micro-lexador-pitugues.ts"],"names":[],"mappings":";;;;;;AAIA,+DAA+F;AAC/F,uCAAoC;AAEpC,6EAA4D;AAE5D;;;;GAIG;AACH,MAAa,oBAAoB;
|
|
1
|
+
{"version":3,"file":"micro-lexador-pitugues.js","sourceRoot":"","sources":["../../fontes/lexador/micro-lexador-pitugues.ts"],"names":[],"mappings":";;;;;;AAIA,+DAA+F;AAC/F,uCAAoC;AAEpC,6EAA4D;AAE5D;;;;GAIG;AACH,MAAa,oBAAoB;IAAjC;QAOI,qFAAqF;QACrF,sBAAiB,GAAW,+BAA+B,CAAC;IA2NhE,CAAC;IA1NG,OAAO,CAAC,SAAiB;QACrB,OAAO,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,CAAC;IAChD,CAAC;IAED,SAAS,CAAC,SAAiB;QACvB,MAAM,WAAW,GAAG;YAChB,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;SACN,CAAC;QAEF,OAAO,CACH,CAAC,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,CAAC;YACtC,CAAC,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,CAAC;YACtC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAClC,CAAC;IACN,CAAC;IAED,iBAAiB,CAAC,SAAc;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IAED,cAAc;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC;IAC5C,CAAC;IAED,gBAAgB,CAAC,IAAY,EAAE,UAAe,IAAI;QAC9C,MAAM,KAAK,GAAW,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,iBAAO,CAAC,IAAI,EAAE,OAAO,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,aAAa,CAAC,WAAW,GAAG,GAAG;QAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YACvE,IAAI,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;gBACtC,QAAQ,EAAE,uBAAuB;aACrB,CAAC,CAAC;YAClB,OAAO;QACX,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACxE,IAAI,CAAC,gBAAgB,CAAC,kBAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,cAAc;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,IAAI,CAAC,KAAK,EAAE,CAAC;YAEb,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC;QACL,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAE7E,IAAI,CAAC,gBAAgB,CAAC,kBAAe,CAAC,MAAM,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,uBAAuB;QACnB,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;QAED,MAAM,MAAM,GAAW,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAE7E,MAAM,IAAI,GACN,MAAM,IAAI,sDAAkB;YACxB,CAAC,CAAC,sDAAkB,CAAC,MAAM,CAAC;YAC5B,CAAC,CAAC,kBAAe,CAAC,aAAa,CAAC;QAExC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,aAAa;QACT,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE1C,QAAQ,SAAS,EAAE,CAAC;YAChB,KAAK,GAAG;gBACJ,IAAI,CAAC,gBAAgB,CAAC,kBAAe,CAAC,kBAAkB,CAAC,CAAC;gBAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,MAAM;YACV,KAAK,GAAG;gBACJ,IAAI,CAAC,gBAAgB,CAAC,kBAAe,CAAC,iBAAiB,CAAC,CAAC;gBACzD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,MAAM;YACV,KAAK,GAAG;gBACJ,IAAI,CAAC,gBAAgB,CAAC,kBAAe,CAAC,iBAAiB,CAAC,CAAC;gBACzD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,MAAM;YACV,KAAK,GAAG;gBACJ,IAAI,CAAC,gBAAgB,CAAC,kBAAe,CAAC,gBAAgB,CAAC,CAAC;gBACxD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,MAAM;YACV,KAAK,GAAG;gBACJ,IAAI,CAAC,gBAAgB,CAAC,kBAAe,CAAC,OAAO,CAAC,CAAC;gBAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,MAAM;YACV,KAAK,GAAG;gBACJ,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,gBAAgB,CAAC,kBAAe,CAAC,MAAM,CAAC,CAAC;gBAC9C,MAAM;YACV,KAAK,GAAG;gBACJ,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,gBAAgB,CAAC,kBAAe,CAAC,SAAS,CAAC,CAAC;gBACjD,MAAM;YACV,KAAK,GAAG;gBACJ,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC9B,KAAK,IAAI;wBACL,IAAI,CAAC,KAAK,EAAE,CAAC;wBACb,IAAI,CAAC,gBAAgB,CAAC,kBAAe,CAAC,aAAa,CAAC,CAAC;wBACrD,MAAM;oBACV;wBACI,IAAI,CAAC,gBAAgB,CAAC,kBAAe,CAAC,aAAa,CAAC,CAAC;wBACrD,MAAM;gBACd,CAAC;gBAED,MAAM;YACV,KAAK,GAAG;gBACJ,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,gBAAgB,CAAC,kBAAe,CAAC,OAAO,CAAC,CAAC;gBAC/C,MAAM;YACV,KAAK,GAAG;gBACJ,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,gBAAgB,CAAC,kBAAe,CAAC,MAAM,CAAC,CAAC;gBAC9C,MAAM;YACV,KAAK,IAAI;gBACL,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,gBAAgB,CAAC,kBAAe,CAAC,eAAe,CAAC,CAAC;gBACvD,MAAM;YAEV,KAAK,GAAG,CAAC;YACT,KAAK,IAAI,CAAC;YACV,KAAK,IAAI,CAAC;YACV,KAAK,IAAI;gBACL,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,MAAM;YACV,KAAK,GAAG;gBACJ,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBACxB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,MAAM;YAEV,KAAK,GAAG;gBACJ,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBACxB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,MAAM;YACV,KAAK,GAAG;gBACJ,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,gBAAgB,CAAC,kBAAe,CAAC,KAAK,CAAC,CAAC;gBAC7C,MAAM;YACV;gBACI,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;oBAAE,IAAI,CAAC,cAAc,EAAE,CAAC;qBAC9C,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;oBAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC;qBAC9D,CAAC;oBACF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;wBACZ,KAAK,EAAE,CAAC;wBACR,SAAS,EAAE,SAAS;wBACpB,QAAQ,EAAE,uBAAuB;qBACrB,CAAC,CAAC;oBAClB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACjB,CAAC;QACT,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,MAAc;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QAEvB,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;YAChC,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC;QAED,OAAO;YACH,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;SACgB,CAAC;IAC1C,CAAC;CACJ;AAnOD,oDAmOC"}
|