@yakuzaa/jade-compiler 0.1.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 (65) hide show
  1. package/dist/ast/nodes.d.ts +219 -0
  2. package/dist/ast/nodes.d.ts.map +1 -0
  3. package/dist/ast/nodes.js +2 -0
  4. package/dist/ast/nodes.js.map +1 -0
  5. package/dist/cli.d.ts +14 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/cli.js +108 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/codegen/ir_generator.d.ts +42 -0
  10. package/dist/codegen/ir_generator.d.ts.map +1 -0
  11. package/dist/codegen/ir_generator.js +691 -0
  12. package/dist/codegen/ir_generator.js.map +1 -0
  13. package/dist/codegen/ir_nodes.d.ts +143 -0
  14. package/dist/codegen/ir_nodes.d.ts.map +1 -0
  15. package/dist/codegen/ir_nodes.js +3 -0
  16. package/dist/codegen/ir_nodes.js.map +1 -0
  17. package/dist/codegen/ir_printer.d.ts +10 -0
  18. package/dist/codegen/ir_printer.d.ts.map +1 -0
  19. package/dist/codegen/ir_printer.js +131 -0
  20. package/dist/codegen/ir_printer.js.map +1 -0
  21. package/dist/codegen/wasm_generator.d.ts +12 -0
  22. package/dist/codegen/wasm_generator.d.ts.map +1 -0
  23. package/dist/codegen/wasm_generator.js +48 -0
  24. package/dist/codegen/wasm_generator.js.map +1 -0
  25. package/dist/codegen/wat_generator.d.ts +29 -0
  26. package/dist/codegen/wat_generator.d.ts.map +1 -0
  27. package/dist/codegen/wat_generator.js +345 -0
  28. package/dist/codegen/wat_generator.js.map +1 -0
  29. package/dist/index.d.ts +61 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +79 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/lexer/lexer.d.ts +31 -0
  34. package/dist/lexer/lexer.d.ts.map +1 -0
  35. package/dist/lexer/lexer.js +475 -0
  36. package/dist/lexer/lexer.js.map +1 -0
  37. package/dist/lexer/token.d.ts +8 -0
  38. package/dist/lexer/token.d.ts.map +1 -0
  39. package/dist/lexer/token.js +2 -0
  40. package/dist/lexer/token.js.map +1 -0
  41. package/dist/lexer/token_type.d.ts +80 -0
  42. package/dist/lexer/token_type.d.ts.map +1 -0
  43. package/dist/lexer/token_type.js +98 -0
  44. package/dist/lexer/token_type.js.map +1 -0
  45. package/dist/parser/parse_result.d.ts +12 -0
  46. package/dist/parser/parse_result.d.ts.map +1 -0
  47. package/dist/parser/parse_result.js +2 -0
  48. package/dist/parser/parse_result.js.map +1 -0
  49. package/dist/parser/parser.d.ts +57 -0
  50. package/dist/parser/parser.d.ts.map +1 -0
  51. package/dist/parser/parser.js +1094 -0
  52. package/dist/parser/parser.js.map +1 -0
  53. package/dist/semantic/semantic_analyzer.d.ts +10 -0
  54. package/dist/semantic/semantic_analyzer.d.ts.map +1 -0
  55. package/dist/semantic/semantic_analyzer.js +16 -0
  56. package/dist/semantic/semantic_analyzer.js.map +1 -0
  57. package/dist/semantic/symbol_table.d.ts +33 -0
  58. package/dist/semantic/symbol_table.d.ts.map +1 -0
  59. package/dist/semantic/symbol_table.js +105 -0
  60. package/dist/semantic/symbol_table.js.map +1 -0
  61. package/dist/semantic/type_checker.d.ts +66 -0
  62. package/dist/semantic/type_checker.d.ts.map +1 -0
  63. package/dist/semantic/type_checker.js +963 -0
  64. package/dist/semantic/type_checker.js.map +1 -0
  65. package/package.json +84 -0
@@ -0,0 +1,219 @@
1
+ export interface Node {
2
+ kind: string;
3
+ line: number;
4
+ column: number;
5
+ }
6
+ export interface ProgramaNode extends Node {
7
+ kind: 'Programa';
8
+ declaracoes: DeclaracaoNode[];
9
+ }
10
+ export type TipoPrimitivo = 'texto' | 'numero' | 'decimal' | 'booleano' | 'data' | 'hora' | 'id';
11
+ export interface TipoSimples extends Node {
12
+ kind: 'TipoSimples';
13
+ nome: TipoPrimitivo | string;
14
+ opcional: boolean;
15
+ obrigatorio: boolean;
16
+ }
17
+ export interface TipoLista extends Node {
18
+ kind: 'TipoLista';
19
+ elementoTipo: TipoNode;
20
+ }
21
+ export interface TipoMapa extends Node {
22
+ kind: 'TipoMapa';
23
+ chaveTipo: TipoNode;
24
+ valorTipo: TipoNode;
25
+ }
26
+ export interface TipoObjeto extends Node {
27
+ kind: 'TipoObjeto';
28
+ campos: CampoObjetoNode[];
29
+ }
30
+ export interface CampoObjetoNode extends Node {
31
+ kind: 'CampoObjeto';
32
+ nome: string;
33
+ tipo: TipoNode;
34
+ }
35
+ export type TipoNode = TipoSimples | TipoLista | TipoMapa | TipoObjeto;
36
+ export type DeclaracaoNode = ModuloNode | ClasseNode | EntidadeNode | ServicoNode | FuncaoNode | EventoNode | RegraNode | InterfaceNode | EnumNode | ImportacaoNode | VariavelNode | TelaNode;
37
+ export interface ModuloNode extends Node {
38
+ kind: 'Modulo';
39
+ nome: string;
40
+ declaracoes: DeclaracaoNode[];
41
+ }
42
+ export interface ClasseNode extends Node {
43
+ kind: 'Classe';
44
+ nome: string;
45
+ superClasse?: string;
46
+ interfaces: string[];
47
+ campos: CampoNode[];
48
+ metodos: FuncaoNode[];
49
+ }
50
+ export interface EntidadeNode extends Node {
51
+ kind: 'Entidade';
52
+ nome: string;
53
+ campos: CampoNode[];
54
+ }
55
+ export interface CampoNode extends Node {
56
+ kind: 'Campo';
57
+ nome: string;
58
+ tipo: TipoNode;
59
+ }
60
+ export interface ServicoNode extends Node {
61
+ kind: 'Servico';
62
+ nome: string;
63
+ metodos: FuncaoNode[];
64
+ ouvintes: OuvinteNode[];
65
+ }
66
+ export interface OuvinteNode extends Node {
67
+ kind: 'Ouvinte';
68
+ evento: string;
69
+ corpo: BlocoNode;
70
+ }
71
+ export interface FuncaoNode extends Node {
72
+ kind: 'Funcao';
73
+ nome: string;
74
+ parametros: ParametroNode[];
75
+ tipoRetorno?: TipoNode;
76
+ corpo: BlocoNode;
77
+ }
78
+ export interface ParametroNode extends Node {
79
+ kind: 'Parametro';
80
+ nome: string;
81
+ tipo: TipoNode;
82
+ }
83
+ export interface EventoNode extends Node {
84
+ kind: 'Evento';
85
+ nome: string;
86
+ campos: CampoNode[];
87
+ }
88
+ export interface RegraNode extends Node {
89
+ kind: 'Regra';
90
+ nome: string;
91
+ condicao: ExpressaoNode;
92
+ entao: BlocoNode;
93
+ senao?: BlocoNode;
94
+ }
95
+ export interface InterfaceNode extends Node {
96
+ kind: 'Interface';
97
+ nome: string;
98
+ assinaturas: AssinaturaNode[];
99
+ }
100
+ export interface AssinaturaNode extends Node {
101
+ kind: 'Assinatura';
102
+ nome: string;
103
+ parametros: ParametroNode[];
104
+ tipoRetorno: TipoNode;
105
+ }
106
+ export interface EnumNode extends Node {
107
+ kind: 'Enum';
108
+ nome: string;
109
+ valores: string[];
110
+ }
111
+ export interface ImportacaoNode extends Node {
112
+ kind: 'Importacao';
113
+ modulo: string;
114
+ item?: string;
115
+ wildcard: boolean;
116
+ alias?: string;
117
+ }
118
+ export type InstrucaoNode = VariavelNode | AtribuicaoNode | ChamadaFuncaoNode | RetornoNode | CondicionalNode | EnquantoNode | ParaNode | EmissaoEventoNode | ErroNode;
119
+ export interface BlocoNode extends Node {
120
+ kind: 'Bloco';
121
+ instrucoes: InstrucaoNode[];
122
+ }
123
+ export interface VariavelNode extends Node {
124
+ kind: 'Variavel';
125
+ nome: string;
126
+ tipo?: TipoNode;
127
+ inicializador?: ExpressaoNode;
128
+ }
129
+ export interface AtribuicaoNode extends Node {
130
+ kind: 'Atribuicao';
131
+ alvo: string | AcessoMembroNode;
132
+ valor: ExpressaoNode;
133
+ }
134
+ export interface RetornoNode extends Node {
135
+ kind: 'Retorno';
136
+ valor?: ExpressaoNode;
137
+ }
138
+ export interface CondicionalNode extends Node {
139
+ kind: 'Condicional';
140
+ condicao: ExpressaoNode;
141
+ entao: BlocoNode;
142
+ senao?: BlocoNode;
143
+ }
144
+ export interface EnquantoNode extends Node {
145
+ kind: 'Enquanto';
146
+ condicao: ExpressaoNode;
147
+ corpo: BlocoNode;
148
+ }
149
+ export interface ParaNode extends Node {
150
+ kind: 'Para';
151
+ variavel: string;
152
+ iteravel: ExpressaoNode;
153
+ corpo: BlocoNode;
154
+ }
155
+ export interface EmissaoEventoNode extends Node {
156
+ kind: 'EmissaoEvento';
157
+ evento: string;
158
+ argumentos: ExpressaoNode[];
159
+ }
160
+ export interface ErroNode extends Node {
161
+ kind: 'Erro';
162
+ mensagem: ExpressaoNode;
163
+ }
164
+ export type ExpressaoNode = LiteralNode | IdentificadorNode | BinarioNode | UnarioNode | ChamadaFuncaoNode | AcessoMembroNode | AtribuicaoNode;
165
+ export interface LiteralNode extends Node {
166
+ kind: 'Literal';
167
+ valor: string | number | boolean;
168
+ tipoLiteral: 'texto' | 'numero' | 'decimal' | 'booleano' | 'data' | 'hora';
169
+ }
170
+ export interface IdentificadorNode extends Node {
171
+ kind: 'Identificador';
172
+ nome: string;
173
+ }
174
+ export interface BinarioNode extends Node {
175
+ kind: 'Binario';
176
+ esquerda: ExpressaoNode;
177
+ operador: string;
178
+ direita: ExpressaoNode;
179
+ }
180
+ export interface UnarioNode extends Node {
181
+ kind: 'Unario';
182
+ operador: string;
183
+ operando: ExpressaoNode;
184
+ }
185
+ export interface ChamadaFuncaoNode extends Node {
186
+ kind: 'ChamadaFuncao';
187
+ nome: string;
188
+ argumentos: ExpressaoNode[];
189
+ }
190
+ export interface AcessoMembroNode extends Node {
191
+ kind: 'AcessoMembro';
192
+ objeto: ExpressaoNode;
193
+ membro: string;
194
+ chamada?: ExpressaoNode[];
195
+ }
196
+ export interface TelaNode extends Node {
197
+ kind: 'Tela';
198
+ nome: string;
199
+ titulo: string;
200
+ elementos: TelaElementoNode[];
201
+ }
202
+ export interface TelaElementoNode extends Node {
203
+ kind: 'TelaElemento';
204
+ tipo: string;
205
+ nome: string;
206
+ propriedades: {
207
+ chave: string;
208
+ valor: string | string[];
209
+ }[];
210
+ }
211
+ export interface Simbolo {
212
+ nome: string;
213
+ kind: string;
214
+ tipo: string;
215
+ linha: number;
216
+ coluna: number;
217
+ escopo: string;
218
+ }
219
+ //# sourceMappingURL=nodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../ast/nodes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=nodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../ast/nodes.ts"],"names":[],"mappings":""}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * jadec — Compilador JADE CLI
4
+ *
5
+ * Uso:
6
+ * jadec arquivo.jd → compila, gera arquivo.wasm + arquivo.wat
7
+ * jadec arquivo.jd -o saida → define prefixo de saída
8
+ * jadec arquivo.jd --wat-only → gera apenas WAT (sem WASM binário)
9
+ * jadec arquivo.jd --check → apenas verifica erros (sem gerar saída)
10
+ * jadec --version → exibe versão
11
+ * jadec --help → exibe ajuda
12
+ */
13
+ export {};
14
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG"}
package/dist/cli.js ADDED
@@ -0,0 +1,108 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * jadec — Compilador JADE CLI
4
+ *
5
+ * Uso:
6
+ * jadec arquivo.jd → compila, gera arquivo.wasm + arquivo.wat
7
+ * jadec arquivo.jd -o saida → define prefixo de saída
8
+ * jadec arquivo.jd --wat-only → gera apenas WAT (sem WASM binário)
9
+ * jadec arquivo.jd --check → apenas verifica erros (sem gerar saída)
10
+ * jadec --version → exibe versão
11
+ * jadec --help → exibe ajuda
12
+ */
13
+ import { readFileSync, writeFileSync } from 'fs';
14
+ import { resolve, basename, dirname, join } from 'path';
15
+ import { compile } from './index.js';
16
+ const VERSION = '0.1.0';
17
+ const HELP = `
18
+ jadec ${VERSION} — Compilador JADE
19
+
20
+ Uso:
21
+ jadec <arquivo.jd> [opções]
22
+
23
+ Opções:
24
+ -o <prefixo> Define prefixo dos arquivos de saída (padrão: mesmo nome do fonte)
25
+ --wat-only Gera apenas WAT (WebAssembly Text Format), sem binário .wasm
26
+ --check Verifica erros sem gerar arquivos de saída
27
+ --version Exibe a versão do compilador
28
+ --help Exibe esta ajuda
29
+
30
+ Exemplos:
31
+ jadec estoque.jd
32
+ jadec estoque.jd -o dist/estoque
33
+ jadec estoque.jd --check
34
+ `;
35
+ async function main() {
36
+ const args = process.argv.slice(2);
37
+ if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
38
+ console.log(HELP);
39
+ process.exit(0);
40
+ }
41
+ if (args.includes('--version') || args.includes('-v')) {
42
+ console.log(`jadec ${VERSION}`);
43
+ process.exit(0);
44
+ }
45
+ // Encontrar arquivo de entrada (primeiro arg que não é flag)
46
+ const inputFile = args.find(a => !a.startsWith('-'));
47
+ if (!inputFile) {
48
+ console.error('Erro: Nenhum arquivo de entrada especificado.\n');
49
+ console.error('Use: jadec --help para ver as opções disponíveis.');
50
+ process.exit(1);
51
+ }
52
+ const watOnly = args.includes('--wat-only');
53
+ const checkOnly = args.includes('--check');
54
+ // Prefixo de saída
55
+ const oIdx = args.indexOf('-o');
56
+ const outputPrefix = oIdx !== -1 && args[oIdx + 1]
57
+ ? args[oIdx + 1]
58
+ : join(dirname(resolve(inputFile)), basename(inputFile, '.jd'));
59
+ // Ler arquivo fonte
60
+ let source;
61
+ try {
62
+ source = readFileSync(resolve(inputFile), 'utf-8');
63
+ }
64
+ catch {
65
+ console.error(`Erro: Não foi possível ler o arquivo '${inputFile}'.`);
66
+ process.exit(1);
67
+ }
68
+ console.log(`jadec ${VERSION} — Compilando ${inputFile}...\n`);
69
+ const result = await compile(source, basename(inputFile, '.jd'));
70
+ if (!result.success) {
71
+ console.error('Erros encontrados:\n');
72
+ for (const err of result.errors) {
73
+ const fase = err.phase === 'parse' ? 'Sintaxe'
74
+ : err.phase === 'semantic' ? 'Semântica'
75
+ : 'CodeGen';
76
+ const pos = err.line > 0 ? ` [linha ${err.line}, col ${err.column}]` : '';
77
+ console.error(` [${fase}]${pos} ${err.message}`);
78
+ }
79
+ console.error(`\n${result.errors.length} erro(s) encontrado(s).`);
80
+ process.exit(1);
81
+ }
82
+ if (checkOnly) {
83
+ console.log('OK — nenhum erro encontrado.');
84
+ process.exit(0);
85
+ }
86
+ // Escrever WAT
87
+ if (result.wat) {
88
+ const watPath = `${outputPrefix}.wat`;
89
+ writeFileSync(watPath, result.wat, 'utf-8');
90
+ console.log(` WAT → ${watPath}`);
91
+ }
92
+ // Escrever WASM
93
+ if (!watOnly && result.wasm) {
94
+ const wasmPath = `${outputPrefix}.wasm`;
95
+ writeFileSync(wasmPath, result.wasm);
96
+ console.log(` WASM → ${wasmPath} (${result.wasm.byteLength} bytes)`);
97
+ }
98
+ else if (!watOnly && !result.wasm) {
99
+ console.warn(' Aviso: binário WASM não gerado (wabt não disponível).');
100
+ console.warn(' Instale com: npm install wabt');
101
+ }
102
+ console.log('\nCompilação concluída com sucesso.');
103
+ }
104
+ main().catch(err => {
105
+ console.error('Erro interno do compilador:', err);
106
+ process.exit(2);
107
+ });
108
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,MAAM,IAAI,GAAG;QACL,OAAO;;;;;;;;;;;;;;;;CAgBd,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,6DAA6D;IAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAE3C,mBAAmB;IACnB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAChD,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAChB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAElE,oBAAoB;IACpB,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,yCAAyC,SAAS,IAAI,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,iBAAiB,SAAS,OAAO,CAAC,CAAC;IAE/D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAEjE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACtC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS;gBAC5C,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW;oBACxC,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,yBAAyB,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,eAAe;IACf,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,GAAG,YAAY,MAAM,CAAC;QACtC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,gBAAgB;IAChB,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,GAAG,YAAY,OAAO,CAAC;QACxC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,KAAK,MAAM,CAAC,IAAI,CAAC,UAAU,SAAS,CAAC,CAAC;IACxE,CAAC;SAAM,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;AACrD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IACjB,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;IAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,42 @@
1
+ import * as N from '../ast/nodes';
2
+ import * as IR from './ir_nodes';
3
+ export declare class IRGenerator {
4
+ private module;
5
+ private currentFunction;
6
+ private currentBlock;
7
+ private tempCounter;
8
+ private blockCounter;
9
+ constructor(moduleName: string);
10
+ generate(program: N.ProgramaNode): IR.IRModule;
11
+ private generateEntidade;
12
+ private generateClasse;
13
+ private generateFuncao;
14
+ private generateServico;
15
+ private generateBloco;
16
+ private generateInstrucao;
17
+ private generateVariavel;
18
+ private generateAtribuicao;
19
+ private generateCondicional;
20
+ private generateEnquanto;
21
+ private generatePara;
22
+ private generateRetorno;
23
+ private generateErro;
24
+ private generateEmissaoEvento;
25
+ private generateExpressao;
26
+ private generateLiteral;
27
+ private generateIdentificador;
28
+ private generateBinario;
29
+ private generateUnario;
30
+ private generateChamadaFuncao;
31
+ private generateAcessoMembro;
32
+ private newTemp;
33
+ private newBlockLabel;
34
+ private emit;
35
+ private declareLocalIfNeeded;
36
+ private setTerminator;
37
+ private switchToBlock;
38
+ private createBlock;
39
+ private jadeTypeToIR;
40
+ private mapOperator;
41
+ }
42
+ //# sourceMappingURL=ir_generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ir_generator.d.ts","sourceRoot":"","sources":["../../codegen/ir_generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,YAAY,CAAa;gBAErB,UAAU,EAAE,MAAM;IAS9B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,YAAY,GAAG,EAAE,CAAC,QAAQ;IA0B9C,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,cAAc;IAmCtB,OAAO,CAAC,eAAe;IAyCvB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,mBAAmB;IAmC3B,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,YAAY;IAgHpB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,eAAe;IAoCvB,OAAO,CAAC,qBAAqB;IAqB7B,OAAO,CAAC,eAAe;IAyCvB,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,qBAAqB;IA0B7B,OAAO,CAAC,oBAAoB;IAwB5B,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,IAAI;IAQZ,OAAO,CAAC,oBAAoB;IA4B5B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,WAAW;CAiBpB"}