@designliquido/delegua 1.26.2 → 1.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/README.md +7 -3
  2. package/avaliador-sintatico/avaliador-sintatico.d.ts +25 -0
  3. package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
  4. package/avaliador-sintatico/avaliador-sintatico.js +95 -6
  5. package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
  6. package/bin/package.json +1 -1
  7. package/interfaces/simbolo-interface.d.ts +1 -0
  8. package/interfaces/simbolo-interface.d.ts.map +1 -1
  9. package/interpretador/interpretador.d.ts +1 -1
  10. package/interpretador/interpretador.d.ts.map +1 -1
  11. package/interpretador/interpretador.js +12 -3
  12. package/interpretador/interpretador.js.map +1 -1
  13. package/lexador/lexador-base.d.ts +1 -1
  14. package/lexador/lexador-base.d.ts.map +1 -1
  15. package/lexador/lexador-base.js +2 -2
  16. package/lexador/lexador-base.js.map +1 -1
  17. package/lexador/lexador.d.ts +1 -1
  18. package/lexador/lexador.d.ts.map +1 -1
  19. package/lexador/lexador.js +3 -3
  20. package/lexador/lexador.js.map +1 -1
  21. package/lexador/simbolo.d.ts +2 -1
  22. package/lexador/simbolo.d.ts.map +1 -1
  23. package/lexador/simbolo.js +2 -1
  24. package/lexador/simbolo.js.map +1 -1
  25. package/package.json +1 -1
  26. package/tradutores/index.d.ts +0 -4
  27. package/tradutores/index.d.ts.map +1 -1
  28. package/tradutores/index.js +0 -4
  29. package/tradutores/index.js.map +1 -1
  30. package/tradutores/tradutor-elixir.d.ts +17 -0
  31. package/tradutores/tradutor-elixir.d.ts.map +1 -1
  32. package/tradutores/tradutor-elixir.js +82 -2
  33. package/tradutores/tradutor-elixir.js.map +1 -1
  34. package/tradutores/tradutor-javascript.d.ts.map +1 -1
  35. package/tradutores/tradutor-javascript.js +5 -0
  36. package/tradutores/tradutor-javascript.js.map +1 -1
  37. package/tradutores/tradutor-python.d.ts.map +1 -1
  38. package/tradutores/tradutor-python.js +5 -0
  39. package/tradutores/tradutor-python.js.map +1 -1
  40. package/tradutores/tradutor-ruby.d.ts.map +1 -1
  41. package/tradutores/tradutor-ruby.js +5 -0
  42. package/tradutores/tradutor-ruby.js.map +1 -1
  43. package/umd/delegua.js +457 -4800
  44. package/tradutores/tradutor-assembly-arm.d.ts +0 -98
  45. package/tradutores/tradutor-assembly-arm.d.ts.map +0 -1
  46. package/tradutores/tradutor-assembly-arm.js +0 -711
  47. package/tradutores/tradutor-assembly-arm.js.map +0 -1
  48. package/tradutores/tradutor-assembly-risc-v.d.ts +0 -100
  49. package/tradutores/tradutor-assembly-risc-v.d.ts.map +0 -1
  50. package/tradutores/tradutor-assembly-risc-v.js +0 -688
  51. package/tradutores/tradutor-assembly-risc-v.js.map +0 -1
  52. package/tradutores/tradutor-assembly-x64.d.ts +0 -17
  53. package/tradutores/tradutor-assembly-x64.d.ts.map +0 -1
  54. package/tradutores/tradutor-assembly-x64.js +0 -38
  55. package/tradutores/tradutor-assembly-x64.js.map +0 -1
  56. package/tradutores/tradutor-webassembly.d.ts +0 -159
  57. package/tradutores/tradutor-webassembly.d.ts.map +0 -1
  58. package/tradutores/tradutor-webassembly.js +0 -886
  59. package/tradutores/tradutor-webassembly.js.map +0 -1
  60. package/tradutores/x64/alocador-registradores.d.ts +0 -29
  61. package/tradutores/x64/alocador-registradores.d.ts.map +0 -1
  62. package/tradutores/x64/alocador-registradores.js +0 -192
  63. package/tradutores/x64/alocador-registradores.js.map +0 -1
  64. package/tradutores/x64/codegen.d.ts +0 -43
  65. package/tradutores/x64/codegen.d.ts.map +0 -1
  66. package/tradutores/x64/codegen.js +0 -416
  67. package/tradutores/x64/codegen.js.map +0 -1
  68. package/tradutores/x64/dessa.d.ts +0 -9
  69. package/tradutores/x64/dessa.d.ts.map +0 -1
  70. package/tradutores/x64/dessa.js +0 -124
  71. package/tradutores/x64/dessa.js.map +0 -1
  72. package/tradutores/x64/dominancia.d.ts +0 -25
  73. package/tradutores/x64/dominancia.d.ts.map +0 -1
  74. package/tradutores/x64/dominancia.js +0 -129
  75. package/tradutores/x64/dominancia.js.map +0 -1
  76. package/tradutores/x64/ir.d.ts +0 -144
  77. package/tradutores/x64/ir.d.ts.map +0 -1
  78. package/tradutores/x64/ir.js +0 -44
  79. package/tradutores/x64/ir.js.map +0 -1
  80. package/tradutores/x64/liveness.d.ts +0 -12
  81. package/tradutores/x64/liveness.d.ts.map +0 -1
  82. package/tradutores/x64/liveness.js +0 -159
  83. package/tradutores/x64/liveness.js.map +0 -1
  84. package/tradutores/x64/lowering.d.ts +0 -7
  85. package/tradutores/x64/lowering.d.ts.map +0 -1
  86. package/tradutores/x64/lowering.js +0 -904
  87. package/tradutores/x64/lowering.js.map +0 -1
  88. package/tradutores/x64/ssa.d.ts +0 -9
  89. package/tradutores/x64/ssa.d.ts.map +0 -1
  90. package/tradutores/x64/ssa.js +0 -170
  91. package/tradutores/x64/ssa.js.map +0 -1
  92. package/tradutores/x64/tipos-x64.d.ts +0 -12
  93. package/tradutores/x64/tipos-x64.d.ts.map +0 -1
  94. package/tradutores/x64/tipos-x64.js +0 -59
  95. package/tradutores/x64/tipos-x64.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"tradutor-webassembly.js","sourceRoot":"","sources":["../../fontes/tradutores/tradutor-webassembly.ts"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- import { IRFuncao } from './ir';
2
- export type Alocacao = {
3
- tipo: 'registrador';
4
- fisico: string;
5
- } | {
6
- tipo: 'pilha';
7
- offsetBytes: number;
8
- };
9
- export interface ResultadoAlocacao {
10
- alocacao: Map<string, Alocacao>;
11
- /** Bytes de pilha reservados só para slots de spill (função ainda soma vetores locais por cima). */
12
- tamanhoSpillBytes: number;
13
- }
14
- /**
15
- * Aloca registradores por coloração de grafo (Chaitin: simplifica removendo nós de grau
16
- * < k, desempata heurística de spill pelo maior grau, depois seleciona cores na ordem
17
- * inversa da pilha de simplificação).
18
- *
19
- * Simplificação deliberada em relação ao Chaitin-Briggs "clássico": um nó que não
20
- * consegue cor na seleção não gera reescrita do IR com nova ronda de vivacidade — ele é
21
- * marcado como residente em memória (`pilha`) permanentemente. Como valores em memória
22
- * nunca ocupam a paleta, eles não geram pressão de registrador nenhuma, e o
23
- * carregamento/gravação em torno de cada uso/definição é sintetizado depois, direto no
24
- * codegen, usando os escradores rax/rdx (sempre reservados, fora da paleta). Isso evita
25
- * o laço iterativo clássico de reescrita+recoloração mantendo a alocação corretamente
26
- * livre de conflitos.
27
- */
28
- export declare function alocarRegistradores(funcao: IRFuncao, paleta: string[]): ResultadoAlocacao;
29
- //# sourceMappingURL=alocador-registradores.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"alocador-registradores.d.ts","sourceRoot":"","sources":["../../../fontes/tradutores/x64/alocador-registradores.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAW,MAAM,MAAM,CAAC;AAEzC,MAAM,MAAM,QAAQ,GACd;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,oGAAoG;IACpG,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAuGD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,iBAAiB,CA4EzF"}
@@ -1,192 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.alocarRegistradores = alocarRegistradores;
4
- const liveness_1 = require("./liveness");
5
- function usosEDstDoValor(valor, saida) {
6
- if (valor.classe === 'registrador')
7
- saida.add(valor.nome);
8
- }
9
- /**
10
- * Constrói o grafo de interferência de `funcao` (já em SSA) varrendo cada bloco de trás
11
- * para frente a partir de liveOut, no estilo clássico (Appel, "Modern Compiler
12
- * Implementation"). Phis são tratados como definições paralelas no topo do bloco: cada
13
- * phi.dst interfere com liveIn(bloco) e com os demais phis do mesmo bloco.
14
- */
15
- function construirGrafoInterferencia(funcao) {
16
- const vivacidade = (0, liveness_1.analisarVivacidade)(funcao);
17
- const grafo = new Map();
18
- function no(nome) {
19
- if (!grafo.has(nome))
20
- grafo.set(nome, new Set());
21
- return grafo.get(nome);
22
- }
23
- function ligar(a, b) {
24
- if (a === b)
25
- return;
26
- no(a).add(b);
27
- no(b).add(a);
28
- }
29
- for (const [blocoId, bloco] of funcao.blocos) {
30
- const vivacidadeBloco = vivacidade.get(blocoId);
31
- const live = new Set(vivacidadeBloco.liveOut);
32
- for (let i = bloco.instrucoes.length - 1; i >= 0; i--) {
33
- const instrucao = bloco.instrucoes[i];
34
- let dst = null;
35
- if (instrucao.op === 'const' ||
36
- instrucao.op === 'copia' ||
37
- instrucao.op === 'bin' ||
38
- instrucao.op === 'neg' ||
39
- instrucao.op === 'nao' ||
40
- instrucao.op === 'enderecoRotulo' ||
41
- instrucao.op === 'carregarGlobal' ||
42
- instrucao.op === 'indiceLer') {
43
- dst = instrucao.dst;
44
- }
45
- else if (instrucao.op === 'chamada') {
46
- dst = instrucao.dst;
47
- }
48
- if (dst) {
49
- no(dst);
50
- for (const outro of live)
51
- ligar(dst, outro);
52
- live.delete(dst);
53
- }
54
- const usos = new Set();
55
- switch (instrucao.op) {
56
- case 'copia':
57
- usosEDstDoValor(instrucao.src, usos);
58
- break;
59
- case 'bin':
60
- usosEDstDoValor(instrucao.esquerda, usos);
61
- usosEDstDoValor(instrucao.direita, usos);
62
- break;
63
- case 'neg':
64
- case 'nao':
65
- usosEDstDoValor(instrucao.src, usos);
66
- break;
67
- case 'indiceLer':
68
- usosEDstDoValor(instrucao.indice, usos);
69
- break;
70
- case 'indiceEscrever':
71
- usosEDstDoValor(instrucao.indice, usos);
72
- usosEDstDoValor(instrucao.valor, usos);
73
- break;
74
- case 'armazenarGlobal':
75
- usosEDstDoValor(instrucao.valor, usos);
76
- break;
77
- case 'chamada':
78
- for (const argumento of instrucao.argumentos)
79
- usosEDstDoValor(argumento, usos);
80
- break;
81
- case 'imprimirNumero':
82
- usosEDstDoValor(instrucao.valor, usos);
83
- break;
84
- default:
85
- break;
86
- }
87
- for (const reg of usos)
88
- live.add(reg);
89
- }
90
- for (let i = 0; i < bloco.phis.length; i++) {
91
- const phi = bloco.phis[i];
92
- no(phi.dst);
93
- for (const outro of live)
94
- ligar(phi.dst, outro);
95
- for (let j = 0; j < bloco.phis.length; j++) {
96
- if (i !== j)
97
- ligar(phi.dst, bloco.phis[j].dst);
98
- }
99
- }
100
- }
101
- return grafo;
102
- }
103
- /**
104
- * Aloca registradores por coloração de grafo (Chaitin: simplifica removendo nós de grau
105
- * < k, desempata heurística de spill pelo maior grau, depois seleciona cores na ordem
106
- * inversa da pilha de simplificação).
107
- *
108
- * Simplificação deliberada em relação ao Chaitin-Briggs "clássico": um nó que não
109
- * consegue cor na seleção não gera reescrita do IR com nova ronda de vivacidade — ele é
110
- * marcado como residente em memória (`pilha`) permanentemente. Como valores em memória
111
- * nunca ocupam a paleta, eles não geram pressão de registrador nenhuma, e o
112
- * carregamento/gravação em torno de cada uso/definição é sintetizado depois, direto no
113
- * codegen, usando os escradores rax/rdx (sempre reservados, fora da paleta). Isso evita
114
- * o laço iterativo clássico de reescrita+recoloração mantendo a alocação corretamente
115
- * livre de conflitos.
116
- */
117
- function alocarRegistradores(funcao, paleta) {
118
- const grafo = construirGrafoInterferencia(funcao);
119
- const grauAtual = new Map();
120
- for (const [no, vizinhos] of grafo)
121
- grauAtual.set(no, vizinhos.size);
122
- const removidos = new Set();
123
- const pilha = [];
124
- const todosOsNos = [...grafo.keys()];
125
- function grauEfetivo(no) {
126
- let grau = 0;
127
- for (const vizinho of grafo.get(no)) {
128
- if (!removidos.has(vizinho))
129
- grau++;
130
- }
131
- return grau;
132
- }
133
- while (removidos.size < todosOsNos.length) {
134
- let escolhido = null;
135
- for (const no of todosOsNos) {
136
- if (removidos.has(no))
137
- continue;
138
- if (grauEfetivo(no) < paleta.length) {
139
- escolhido = no;
140
- break;
141
- }
142
- }
143
- if (!escolhido) {
144
- let maiorGrau = -1;
145
- for (const no of todosOsNos) {
146
- if (removidos.has(no))
147
- continue;
148
- const grau = grauEfetivo(no);
149
- if (grau > maiorGrau) {
150
- maiorGrau = grau;
151
- escolhido = no;
152
- }
153
- }
154
- }
155
- if (!escolhido)
156
- break;
157
- pilha.push(escolhido);
158
- removidos.add(escolhido);
159
- }
160
- const corPorNo = new Map();
161
- const spilled = new Set();
162
- while (pilha.length > 0) {
163
- const no = pilha.pop();
164
- const coresVizinhas = new Set();
165
- for (const vizinho of grafo.get(no)) {
166
- const cor = corPorNo.get(vizinho);
167
- if (cor)
168
- coresVizinhas.add(cor);
169
- }
170
- const disponivel = paleta.find((cor) => !coresVizinhas.has(cor));
171
- if (disponivel) {
172
- corPorNo.set(no, disponivel);
173
- }
174
- else {
175
- spilled.add(no);
176
- }
177
- }
178
- const alocacao = new Map();
179
- let proximoSlot = 0;
180
- for (const no of todosOsNos) {
181
- const cor = corPorNo.get(no);
182
- if (cor) {
183
- alocacao.set(no, { tipo: 'registrador', fisico: cor });
184
- }
185
- else {
186
- proximoSlot++;
187
- alocacao.set(no, { tipo: 'pilha', offsetBytes: -8 * proximoSlot });
188
- }
189
- }
190
- return { alocacao, tamanhoSpillBytes: 8 * proximoSlot };
191
- }
192
- //# sourceMappingURL=alocador-registradores.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"alocador-registradores.js","sourceRoot":"","sources":["../../../fontes/tradutores/x64/alocador-registradores.ts"],"names":[],"mappings":"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"}
@@ -1,43 +0,0 @@
1
- import { Alocacao } from './alocador-registradores';
2
- import { IRFuncao, IRPrograma } from './ir';
3
- export type PlataformaAlvo = 'linux' | 'windows';
4
- export interface FuncaoProcessada {
5
- funcao: IRFuncao;
6
- alocacao: Map<string, Alocacao>;
7
- }
8
- /**
9
- * Gera NASM a partir do IR já processado (SSA destruída, com alocação de registradores).
10
- * Quadro de pilha de cada função real, de cima (perto de rbp) para baixo:
11
- * 1) área de salvamento dos registradores callee-saved usados pela paleta (a função,
12
- * como "callee", é responsável por preservá-los perante quem a chamou);
13
- * 2) slots de spill decididos pelo alocador de registradores;
14
- * 3) vetores de tamanho fixo locais à função.
15
- * `_start`/`main` (o "principal" implícito) não tem quem preservar registradores para —
16
- * ninguém retorna para ele — então pula a área (1).
17
- */
18
- export declare class CodegenX64 {
19
- private alvo;
20
- private paleta;
21
- private linhas;
22
- /** Deslocamento (negativo) onde começam spills/vetores da função atual, abaixo da área de registradores salvos. */
23
- private deslocamentoBase;
24
- constructor(alvo: PlataformaAlvo, paleta: string[]);
25
- gerar(programa: IRPrograma, funcoes: FuncaoProcessada[]): string;
26
- private rotuloDoBloco;
27
- private resolverOperando;
28
- private armazenar;
29
- private enderecoBaseArranjo;
30
- private gerarInstrucao;
31
- private gerarBinario;
32
- private gerarEnderecoIndice;
33
- private gerarTerminador;
34
- private gerarSaidaDoPrograma;
35
- /** Offsets (relativos a rbp) dos vetores locais, logo abaixo dos slots de spill (que começam em `deslocamentoBase`). */
36
- private calcularOffsetsArranjosLocais;
37
- private gerarFuncaoPrincipal;
38
- private gerarFuncao;
39
- private tamanhoSpillBytes;
40
- private gerarBlocosSemRotuloEntrada;
41
- private gerarHelperImprimirNumero;
42
- }
43
- //# sourceMappingURL=codegen.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../../fontes/tradutores/x64/codegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAW,QAAQ,EAAe,UAAU,EAAW,MAAM,MAAM,CAAC;AAE3E,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACnC;AAmBD;;;;;;;;;GASG;AACH,qBAAa,UAAU;IAMf,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,MAAM;IANlB,OAAO,CAAC,MAAM,CAAgB;IAC9B,mHAAmH;IACnH,OAAO,CAAC,gBAAgB,CAAK;gBAGjB,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,EAAE;IAG5B,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM;IA8ChE,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,cAAc;IAmGtB,OAAO,CAAC,YAAY;IA0DpB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,eAAe;IA+BvB,OAAO,CAAC,oBAAoB;IAW5B,wHAAwH;IACxH,OAAO,CAAC,6BAA6B;IAUrC,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,2BAA2B;IAiBnC,OAAO,CAAC,yBAAyB;CA8BpC"}