@designliquido/delegua 1.23.5 → 1.24.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/bin/package.json +1 -1
- package/ffi/despachador-ffi-interface.d.ts +31 -0
- package/ffi/despachador-ffi-interface.d.ts.map +1 -0
- package/ffi/despachador-ffi-interface.js +3 -0
- package/ffi/despachador-ffi-interface.js.map +1 -0
- package/ffi/index.d.ts +3 -0
- package/ffi/index.d.ts.map +1 -0
- package/ffi/index.js +19 -0
- package/ffi/index.js.map +1 -0
- package/ffi/leitor-definicao.d.ts +23 -0
- package/ffi/leitor-definicao.d.ts.map +1 -0
- package/ffi/leitor-definicao.js +56 -0
- package/ffi/leitor-definicao.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +1 -0
- package/index.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/interpretador-base.d.ts +9 -0
- package/interpretador/interpretador-base.d.ts.map +1 -1
- package/interpretador/interpretador-base.js +14 -0
- package/interpretador/interpretador-base.js.map +1 -1
- package/interpretador/interpretador.d.ts.map +1 -1
- package/interpretador/interpretador.js +8 -0
- package/interpretador/interpretador.js.map +1 -1
- package/package.json +1 -1
- package/umd/delegua.js +501 -397
package/bin/package.json
CHANGED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Classe } from '../declaracoes';
|
|
2
|
+
import { DescritorTipoClasse } from '../interpretador/estruturas';
|
|
3
|
+
/**
|
|
4
|
+
* Contrato que qualquer runtime deve implementar para fornecer suporte a FFI
|
|
5
|
+
* em tempo de execução.
|
|
6
|
+
*
|
|
7
|
+
* O core (`InterpretadorBase`) depende apenas desta interface — sem qualquer
|
|
8
|
+
* referência a `koffi`, APIs de SO ou Node.js. Cada runtime (Node.js, Deno,
|
|
9
|
+
* Bun, etc.) fornece sua própria implementação concreta.
|
|
10
|
+
*/
|
|
11
|
+
export interface DespachadorFFIInterface {
|
|
12
|
+
/**
|
|
13
|
+
* Chamado quando o interpretador visita uma `classe estrangeira` com `@definicao`.
|
|
14
|
+
*
|
|
15
|
+
* Deve retornar um `DescritorTipoClasse` com os métodos estáticos já vinculados
|
|
16
|
+
* à biblioteca nativa, ou `null` se a declaração não tiver metadados FFI suficientes
|
|
17
|
+
* (ex.: `@definicao` sem atributo `biblioteca`).
|
|
18
|
+
*
|
|
19
|
+
* Quando retorna `null`, o interpretador mantém o comportamento padrão:
|
|
20
|
+
* `DescritorTipoClasse.estrangeira = true`, que lança erro ao tentar instanciar.
|
|
21
|
+
*/
|
|
22
|
+
resolverClasseEstrangeira(declaracao: Classe): DescritorTipoClasse | null;
|
|
23
|
+
/**
|
|
24
|
+
* Libera todos os recursos nativos carregados (handles de bibliotecas, etc.).
|
|
25
|
+
* Chamado automaticamente pelo interpretador quando `interpretar()` é invocado sem
|
|
26
|
+
* `manterAmbiente` (modo script). Em modo REPL (`manterAmbiente = true`), o
|
|
27
|
+
* runtime deve chamar este método manualmente ao encerrar a sessão.
|
|
28
|
+
*/
|
|
29
|
+
descarregarTudo(): void;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=despachador-ffi-interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"despachador-ffi-interface.d.ts","sourceRoot":"","sources":["../../fontes/ffi/despachador-ffi-interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE;;;;;;;GAOG;AACH,MAAM,WAAW,uBAAuB;IACpC;;;;;;;;;OASG;IACH,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAAC;IAE1E;;;;;OAKG;IACH,eAAe,IAAI,IAAI,CAAC;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"despachador-ffi-interface.js","sourceRoot":"","sources":["../../fontes/ffi/despachador-ffi-interface.ts"],"names":[],"mappings":""}
|
package/ffi/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../fontes/ffi/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC"}
|
package/ffi/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./despachador-ffi-interface"), exports);
|
|
18
|
+
__exportStar(require("./leitor-definicao"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
package/ffi/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../fontes/ffi/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,qDAAmC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Decorador } from '../construtos';
|
|
2
|
+
export interface MetadadosFFIClasse {
|
|
3
|
+
biblioteca: string;
|
|
4
|
+
prefixo: string;
|
|
5
|
+
}
|
|
6
|
+
export interface MetadadosFFIMetodo {
|
|
7
|
+
/** Nome do símbolo C resolvido, pronto para uso em `koffi.load(...).func(simbolo, ...)`. */
|
|
8
|
+
simbolo: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Lê os atributos de `@definicao` de uma lista de decoradores de uma classe estrangeira.
|
|
12
|
+
* Retorna `null` se nenhum decorador `definicao` com atributo `biblioteca` for encontrado.
|
|
13
|
+
*/
|
|
14
|
+
export declare function lerMetadadosClasse(decoradores: Decorador[]): MetadadosFFIClasse | null;
|
|
15
|
+
/**
|
|
16
|
+
* Resolve o nome do símbolo C para um método de uma classe estrangeira.
|
|
17
|
+
*
|
|
18
|
+
* Ordem de resolução:
|
|
19
|
+
* 1. `@definicao(simbolo="...")` no próprio método → usa o valor literal
|
|
20
|
+
* 2. Caso contrário → `prefixo + nomeMetodo`
|
|
21
|
+
*/
|
|
22
|
+
export declare function lerMetadadosMetodo(decoradores: Decorador[], nomeMetodo: string, prefixo: string): MetadadosFFIMetodo;
|
|
23
|
+
//# sourceMappingURL=leitor-definicao.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leitor-definicao.d.ts","sourceRoot":"","sources":["../../fontes/ffi/leitor-definicao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,MAAM,WAAW,kBAAkB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IAC/B,4FAA4F;IAC5F,OAAO,EAAE,MAAM,CAAC;CACnB;AAmBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,SAAS,EAAE,GAAG,kBAAkB,GAAG,IAAI,CAStF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAC9B,WAAW,EAAE,SAAS,EAAE,EACxB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GAChB,kBAAkB,CASpB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.lerMetadadosClasse = lerMetadadosClasse;
|
|
4
|
+
exports.lerMetadadosMetodo = lerMetadadosMetodo;
|
|
5
|
+
const construtos_1 = require("../construtos");
|
|
6
|
+
/**
|
|
7
|
+
* Extrai o valor primitivo de um atributo de decorador.
|
|
8
|
+
* O parser armazena `valorPadrao` como um `Literal` construto;
|
|
9
|
+
* aqui desembrulhamos para o valor JS puro.
|
|
10
|
+
*/
|
|
11
|
+
function resolverValorAtributo(valor) {
|
|
12
|
+
if (valor instanceof construtos_1.Literal)
|
|
13
|
+
return valor.valor;
|
|
14
|
+
return valor;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Normaliza o nome do decorador removendo o prefixo `@` adicionado pelo parser.
|
|
18
|
+
*/
|
|
19
|
+
function nomeDecorador(decorador) {
|
|
20
|
+
return decorador.nome.startsWith('@') ? decorador.nome.slice(1) : decorador.nome;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Lê os atributos de `@definicao` de uma lista de decoradores de uma classe estrangeira.
|
|
24
|
+
* Retorna `null` se nenhum decorador `definicao` com atributo `biblioteca` for encontrado.
|
|
25
|
+
*/
|
|
26
|
+
function lerMetadadosClasse(decoradores) {
|
|
27
|
+
for (const decorador of decoradores) {
|
|
28
|
+
if (nomeDecorador(decorador) !== 'definicao')
|
|
29
|
+
continue;
|
|
30
|
+
const biblioteca = resolverValorAtributo(decorador.atributos?.['biblioteca']);
|
|
31
|
+
if (!biblioteca)
|
|
32
|
+
continue;
|
|
33
|
+
const prefixo = resolverValorAtributo(decorador.atributos?.['prefixo']) ?? '';
|
|
34
|
+
return { biblioteca: String(biblioteca), prefixo: String(prefixo) };
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Resolve o nome do símbolo C para um método de uma classe estrangeira.
|
|
40
|
+
*
|
|
41
|
+
* Ordem de resolução:
|
|
42
|
+
* 1. `@definicao(simbolo="...")` no próprio método → usa o valor literal
|
|
43
|
+
* 2. Caso contrário → `prefixo + nomeMetodo`
|
|
44
|
+
*/
|
|
45
|
+
function lerMetadadosMetodo(decoradores, nomeMetodo, prefixo) {
|
|
46
|
+
for (const decorador of decoradores) {
|
|
47
|
+
if (nomeDecorador(decorador) !== 'definicao')
|
|
48
|
+
continue;
|
|
49
|
+
const simbolo = resolverValorAtributo(decorador.atributos?.['simbolo']);
|
|
50
|
+
if (simbolo) {
|
|
51
|
+
return { simbolo: String(simbolo) };
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return { simbolo: prefixo + nomeMetodo };
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=leitor-definicao.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leitor-definicao.js","sourceRoot":"","sources":["../../fontes/ffi/leitor-definicao.ts"],"names":[],"mappings":";;AAkCA,gDASC;AASD,gDAaC;AAhED,8CAAwC;AAYxC;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,KAAU;IACrC,IAAI,KAAK,YAAY,oBAAO;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC;IACjD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,SAAoB;IACvC,OAAO,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;AACrF,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,WAAwB;IACvD,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,aAAa,CAAC,SAAS,CAAC,KAAK,WAAW;YAAE,SAAS;QACvD,MAAM,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,UAAU;YAAE,SAAS;QAC1B,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACxE,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAC9B,WAAwB,EACxB,UAAkB,EAClB,OAAe;IAEf,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,aAAa,CAAC,SAAS,CAAC,KAAK,WAAW;YAAE,SAAS;QACvD,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QACxE,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU,EAAE,CAAC;AAC7C,CAAC"}
|
package/index.d.ts
CHANGED
package/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../fontes/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../fontes/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,OAAO,CAAC;AACtB,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
|
package/index.js
CHANGED
|
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./analisador-semantico"), exports);
|
|
18
|
+
__exportStar(require("./ffi"), exports);
|
|
18
19
|
__exportStar(require("./avaliador-sintatico"), exports);
|
|
19
20
|
__exportStar(require("./construtos"), exports);
|
|
20
21
|
__exportStar(require("./declaracoes"), exports);
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../fontes/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AACvC,wDAAsC;AACtC,+CAA6B;AAC7B,gDAA8B;AAE9B,gDAA8B;AAC9B,iDAA+B;AAC/B,4DAA0C;AAC1C,+CAA6B;AAC7B,kDAAgC;AAChC,4CAA0B;AAC1B,+CAA6B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../fontes/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AACvC,wCAAsB;AACtB,wDAAsC;AACtC,+CAA6B;AAC7B,gDAA8B;AAE9B,gDAA8B;AAC9B,iDAA+B;AAC/B,4DAA0C;AAC1C,+CAA6B;AAC7B,kDAAgC;AAChC,4CAA0B;AAC1B,+CAA6B"}
|
|
@@ -19,7 +19,7 @@ export declare class DescritorTipoClasse extends Chamavel {
|
|
|
19
19
|
[nome: string]: DeleguaFuncao | DeleguaFuncao[];
|
|
20
20
|
};
|
|
21
21
|
metodosEstaticos: {
|
|
22
|
-
[nome: string]:
|
|
22
|
+
[nome: string]: Chamavel | Chamavel[];
|
|
23
23
|
};
|
|
24
24
|
membrosEstaticos: {
|
|
25
25
|
[nome: string]: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"descritor-tipo-classe.d.ts","sourceRoot":"","sources":["../../../fontes/interpretador/estruturas/descritor-tipo-classe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AA4B9D;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,QAAQ;IAC7C,eAAe,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC9C,YAAY,EAAE,mBAAmB,EAAE,CAAC;IACpC;yDACqD;IACrD,IAAI,EAAE,mBAAmB,EAAE,CAAC;IAC5B,OAAO,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,aAAa,EAAE,CAAA;KAAE,CAAC;IAC7D,gBAAgB,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"descritor-tipo-classe.d.ts","sourceRoot":"","sources":["../../../fontes/interpretador/estruturas/descritor-tipo-classe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AA4B9D;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,QAAQ;IAC7C,eAAe,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC9C,YAAY,EAAE,mBAAmB,EAAE,CAAC;IACpC;yDACqD;IACrD,IAAI,EAAE,mBAAmB,EAAE,CAAC;IAC5B,OAAO,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,aAAa,EAAE,CAAA;KAAE,CAAC;IAC7D,gBAAgB,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,EAAE,CAAA;KAAE,CAAC;IAC5D,gBAAgB,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAC1C,WAAW,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAA;KAAE,CAAC;IAC/C,WAAW,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAA;KAAE,CAAC;IAC/C,oBAAoB,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAA;KAAE,CAAC;IACxD,oBAAoB,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAA;KAAE,CAAC;IACxD,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,8CAA8C,EAAE,OAAO,CAAS;IAChE,mCAAmC,EAAE,OAAO,CAAC;IAC7C,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAA;KAAE,CAAC;IACvE,kBAAkB,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAA;KAAE,CAAC;IAC5E,4BAA4B,EAAE,OAAO,CAAS;IAE9C,iGAAiG;IACjG,IAAI,WAAW,IAAI,mBAAmB,GAAG,IAAI,CAE5C;IAED,yGAAyG;IACzG,IAAI,WAAW,CAAC,CAAC,EAAE,mBAAmB,GAAG,IAAI,EAE5C;gBAGG,eAAe,CAAC,EAAE,gBAAgB,EAClC,YAAY,CAAC,EAAE,mBAAmB,GAAG,mBAAmB,EAAE,EAC1D,OAAO,CAAC,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,aAAa,EAAE,CAAA;KAAE,EAC7D,YAAY,CAAC,EAAE,iBAAiB,EAAE;IA+BtC,OAAO,CAAC,MAAM,CAAC,QAAQ;IAkCvB,iGAAiG;IACjG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,mBAAmB,GAAG,mBAAmB,EAAE;IAYpE;;;OAGG;IACH,8BAA8B,CAAC,SAAS,EAAE,mBAAmB,GAAG,IAAI;IAepE,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAe,GAAG,aAAa,GAAG,SAAS;IAgBtF,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAe,GAAG,aAAa,GAAG,SAAS;IAkBhF,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC;IAwB7E,eAAe,CACjB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,GAAG,EACV,SAAS,CAAC,EAAE,sBAAsB,GACnC,OAAO,CAAC,IAAI,CAAC;IAkBhB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,6BAA6B;IAgBrC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,iBAAiB,GAAG,SAAS;IA4B5E,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAuBjE;;;OAGG;IACH,SAAS,IAAI,MAAM;IAOnB;;;OAGG;IACH,QAAQ,IAAI,MAAM;IAIlB,OAAO,IAAI,MAAM;IAQX,MAAM,CACR,SAAS,EAAE,sBAAsB,EACjC,UAAU,EAAE,GAAG,EAAE,GAClB,OAAO,CAAC,mBAAmB,CAAC;CA8ClC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DespachadorFFIInterface } from '../ffi';
|
|
1
2
|
import { Bloco, CabecalhoPrograma, Classe, Comentario, Const, ConstMultiplo, Continua, Declaracao, Enquanto, Escolha, Escreva, EscrevaMesmaLinha, Expressao, Extensao, Falhar, Fazer, FuncaoDeclaracao, Importar, InicioAlgoritmo, InterfaceDeclaracao, Para, ParaCada, Retorna, Se, TendoComo, Tente, TextoDocumentacao, Var, VarMultiplo } from '../declaracoes';
|
|
2
3
|
import { Chamavel, DescritorTipoClasse, DeleguaFuncao, DeleguaModulo } from './estruturas';
|
|
3
4
|
import { AcessoIndiceVariavel, AcessoIntervaloVariavel, AcessoMetodo, AcessoMetodoOuPropriedade, AcessoPropriedade, Agrupamento, ArgumentoReferenciaFuncao, AtribuicaoPorIndice, Atribuir, Chamada, ComentarioComoConstruto, DefinirValor, Dicionario, ExpressaoRegular, FimPara, FormatacaoEscrita, FuncaoConstruto, Leia, Literal, Logico, ReferenciaFuncao, Separador, Super, TipoDe, Tupla, TuplaN, Unario, Variavel, Vetor, Isto, Binario } from '../construtos';
|
|
@@ -42,6 +43,14 @@ export declare class InterpretadorBase implements InterpretadorInterface {
|
|
|
42
43
|
extensoesModulo: Map<number, Map<string, Map<string, DeleguaFuncao>>>;
|
|
43
44
|
microLexador: MicroLexador;
|
|
44
45
|
microAvaliadorSintatico: MicroAvaliadorSintaticoBase;
|
|
46
|
+
/**
|
|
47
|
+
* Despachador FFI opcional. Quando presente, é invocado ao visitar uma
|
|
48
|
+
* `classe estrangeira` com `@definicao`, permitindo que o runtime forneça
|
|
49
|
+
* métodos vinculados a bibliotecas nativas (ex.: via `koffi` em Node.js).
|
|
50
|
+
* Quando ausente, o comportamento padrão é preservado: a classe recebe
|
|
51
|
+
* `estrangeira = true` e lança erro ao ser instanciada diretamente.
|
|
52
|
+
*/
|
|
53
|
+
despachadorFFI?: DespachadorFFIInterface;
|
|
45
54
|
regexInterpolacao: RegExp;
|
|
46
55
|
private iteracoesParaCederControle;
|
|
47
56
|
private tiposNumericos;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interpretador-base.d.ts","sourceRoot":"","sources":["../../fontes/interpretador/interpretador-base.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interpretador-base.d.ts","sourceRoot":"","sources":["../../fontes/interpretador/interpretador-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1701,6 +1701,14 @@ class InterpretadorBase {
|
|
|
1701
1701
|
return descritorTipoClasse;
|
|
1702
1702
|
}
|
|
1703
1703
|
resolverMetodoDeClasse(declaracao, superClassesResolvidas, _mesclaResolvidas) {
|
|
1704
|
+
if (declaracao.estrangeira && this.despachadorFFI) {
|
|
1705
|
+
const descritorFFI = this.despachadorFFI.resolverClasseEstrangeira(declaracao);
|
|
1706
|
+
if (descritorFFI) {
|
|
1707
|
+
descritorFFI.estrangeira = true;
|
|
1708
|
+
descritorFFI.orem = estruturas_1.DescritorTipoClasse.computarOReM(descritorFFI);
|
|
1709
|
+
return descritorFFI;
|
|
1710
|
+
}
|
|
1711
|
+
}
|
|
1704
1712
|
const metodos = {};
|
|
1705
1713
|
for (const metodoAtual of declaracao.metodos) {
|
|
1706
1714
|
const nomeMetodo = metodoAtual.simbolo.lexema;
|
|
@@ -1716,6 +1724,9 @@ class InterpretadorBase {
|
|
|
1716
1724
|
descritorTipoClasse.superClasses = [estruturas_1.OBJETO_BASE];
|
|
1717
1725
|
}
|
|
1718
1726
|
descritorTipoClasse.orem = estruturas_1.DescritorTipoClasse.computarOReM(descritorTipoClasse);
|
|
1727
|
+
if (declaracao.estrangeira) {
|
|
1728
|
+
descritorTipoClasse.estrangeira = true;
|
|
1729
|
+
}
|
|
1719
1730
|
return descritorTipoClasse;
|
|
1720
1731
|
}
|
|
1721
1732
|
/**
|
|
@@ -2273,6 +2284,9 @@ class InterpretadorBase {
|
|
|
2273
2284
|
const deltaInterpretacao = (0, browser_process_hrtime_1.default)(inicioInterpretacao);
|
|
2274
2285
|
console.log(`[Interpretador] Tempo para interpretaçao: ${deltaInterpretacao[0] * 1e9 + deltaInterpretacao[1]}ns`);
|
|
2275
2286
|
}
|
|
2287
|
+
if (!manterAmbiente) {
|
|
2288
|
+
this.despachadorFFI?.descarregarTudo();
|
|
2289
|
+
}
|
|
2276
2290
|
const retorno = {
|
|
2277
2291
|
erros: this.erros,
|
|
2278
2292
|
resultado: this.resultadoInterpretador,
|