treste 2.0.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 (68) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/INSTALL.md +264 -0
  3. package/LICENSE +22 -0
  4. package/README.md +388 -0
  5. package/README_PT.md +261 -0
  6. package/dist/ast.d.ts +140 -0
  7. package/dist/ast.d.ts.map +1 -0
  8. package/dist/ast.js +3 -0
  9. package/dist/ast.js.map +1 -0
  10. package/dist/cli.d.ts +3 -0
  11. package/dist/cli.d.ts.map +1 -0
  12. package/dist/cli.js +201 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/compiler/exe.d.ts +13 -0
  15. package/dist/compiler/exe.d.ts.map +1 -0
  16. package/dist/compiler/exe.js +129 -0
  17. package/dist/compiler/exe.js.map +1 -0
  18. package/dist/compiler/web.d.ts +43 -0
  19. package/dist/compiler/web.d.ts.map +1 -0
  20. package/dist/compiler/web.js +413 -0
  21. package/dist/compiler/web.js.map +1 -0
  22. package/dist/compiler.d.ts +3 -0
  23. package/dist/compiler.d.ts.map +1 -0
  24. package/dist/compiler.js +195 -0
  25. package/dist/compiler.js.map +1 -0
  26. package/dist/errors.d.ts +21 -0
  27. package/dist/errors.d.ts.map +1 -0
  28. package/dist/errors.js +56 -0
  29. package/dist/errors.js.map +1 -0
  30. package/dist/index.d.ts +5 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +26 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/interpreter.d.ts +32 -0
  35. package/dist/interpreter.d.ts.map +1 -0
  36. package/dist/interpreter.js +425 -0
  37. package/dist/interpreter.js.map +1 -0
  38. package/dist/lexer.d.ts +113 -0
  39. package/dist/lexer.d.ts.map +1 -0
  40. package/dist/lexer.js +446 -0
  41. package/dist/lexer.js.map +1 -0
  42. package/dist/module.d.ts +19 -0
  43. package/dist/module.d.ts.map +1 -0
  44. package/dist/module.js +112 -0
  45. package/dist/module.js.map +1 -0
  46. package/dist/parser.d.ts +45 -0
  47. package/dist/parser.d.ts.map +1 -0
  48. package/dist/parser.js +599 -0
  49. package/dist/parser.js.map +1 -0
  50. package/dist/std/array.trest +85 -0
  51. package/dist/std/index.trest +13 -0
  52. package/dist/std/io.trest +17 -0
  53. package/dist/std/math.trest +66 -0
  54. package/dist/std/string.trest +61 -0
  55. package/dist/types.d.ts +29 -0
  56. package/dist/types.d.ts.map +1 -0
  57. package/dist/types.js +86 -0
  58. package/dist/types.js.map +1 -0
  59. package/package.json +101 -0
  60. package/scripts/postbuild.js +90 -0
  61. package/scripts/postinstall.js +89 -0
  62. package/scripts/preinstall.js +92 -0
  63. package/scripts/version.js +52 -0
  64. package/src/std/array.trest +85 -0
  65. package/src/std/index.trest +13 -0
  66. package/src/std/io.trest +17 -0
  67. package/src/std/math.trest +66 -0
  68. package/src/std/string.trest +61 -0
@@ -0,0 +1,129 @@
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.ExeCompiler = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const web_1 = require("./web");
40
+ const child_process_1 = require("child_process");
41
+ const util_1 = require("util");
42
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
43
+ class ExeCompiler {
44
+ constructor(basePath = process.cwd()) {
45
+ this.webCompiler = new web_1.WebCompiler(basePath);
46
+ this.tempDir = path.join(basePath, '.trest-build');
47
+ }
48
+ async compile(filePath, outputPath, options = {}) {
49
+ // Compilar para JavaScript
50
+ const jsCode = this.webCompiler.compile(filePath, { minify: options.minify, bundle: true });
51
+ // Criar diretório temporário se não existir
52
+ if (!fs.existsSync(this.tempDir)) {
53
+ fs.mkdirSync(this.tempDir, { recursive: true });
54
+ }
55
+ // Salvar JavaScript temporário
56
+ const tempJsPath = path.join(this.tempDir, path.basename(filePath, '.trest') + '.js');
57
+ fs.writeFileSync(tempJsPath, jsCode);
58
+ // Criar arquivo wrapper para executável
59
+ const wrapperPath = path.join(this.tempDir, 'wrapper.js');
60
+ const wrapperCode = this.createWrapper(tempJsPath);
61
+ fs.writeFileSync(wrapperPath, wrapperCode);
62
+ // Determinar caminho de saída
63
+ const finalOutputPath = outputPath || path.join(path.dirname(filePath), path.basename(filePath, '.trest') + '.exe');
64
+ // Usar pkg para criar executável
65
+ try {
66
+ await this.buildExecutable(wrapperPath, finalOutputPath);
67
+ console.log(`✓ Executável criado: ${finalOutputPath}`);
68
+ return finalOutputPath;
69
+ }
70
+ catch (error) {
71
+ throw new Error(`Erro ao criar executável: ${error.message}`);
72
+ }
73
+ }
74
+ createWrapper(jsPath) {
75
+ return `
76
+ const fs = require('fs');
77
+ const path = require('path');
78
+
79
+ // Carregar e executar código compilado
80
+ const code = fs.readFileSync(__dirname + '/${path.basename(jsPath)}', 'utf-8');
81
+ eval(code);
82
+ `.trim();
83
+ }
84
+ async buildExecutable(wrapperPath, outputPath) {
85
+ const pkgPath = path.join(process.cwd(), 'node_modules', '.bin', 'pkg');
86
+ const command = `"${pkgPath}" "${wrapperPath}" --target node18-win-x64 --output "${outputPath}"`;
87
+ try {
88
+ const { stdout, stderr } = await execAsync(command);
89
+ if (stderr && !stderr.includes('warning')) {
90
+ console.warn(stderr);
91
+ }
92
+ }
93
+ catch (error) {
94
+ // Se pkg não estiver disponível, tentar método alternativo
95
+ console.warn('pkg não disponível, tentando método alternativo...');
96
+ await this.buildExecutableAlternative(wrapperPath, outputPath);
97
+ }
98
+ }
99
+ async buildExecutableAlternative(wrapperPath, outputPath) {
100
+ // Método alternativo: usar nexe ou criar um script Node.js standalone
101
+ const outputDir = path.dirname(outputPath);
102
+ const outputName = path.basename(outputPath, '.exe');
103
+ // Criar um script batch para Windows que executa o Node.js
104
+ const batPath = outputPath.replace('.exe', '.bat');
105
+ const batContent = `@echo off
106
+ node "%~dp0${path.basename(wrapperPath)}" %*
107
+ `;
108
+ fs.writeFileSync(batPath, batContent);
109
+ console.log(`✓ Script batch criado: ${batPath}`);
110
+ console.log(` Nota: Para um executável real .exe, instale pkg: npm install -g pkg`);
111
+ }
112
+ async compileStandalone(filePath, outputPath) {
113
+ // Compilar tudo em um único arquivo JavaScript standalone
114
+ const jsCode = this.webCompiler.compile(filePath, { minify: false, bundle: true });
115
+ const finalOutputPath = outputPath || path.join(path.dirname(filePath), path.basename(filePath, '.trest') + '.js');
116
+ fs.writeFileSync(finalOutputPath, jsCode);
117
+ console.log(`✓ JavaScript standalone criado: ${finalOutputPath}`);
118
+ // Criar arquivo de inicialização
119
+ const initPath = finalOutputPath.replace('.js', '_init.js');
120
+ const initContent = `#!/usr/bin/env node
121
+ ${jsCode}
122
+ `;
123
+ fs.writeFileSync(initPath, initContent);
124
+ fs.chmodSync(initPath, 0o755);
125
+ return finalOutputPath;
126
+ }
127
+ }
128
+ exports.ExeCompiler = ExeCompiler;
129
+ //# sourceMappingURL=exe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exe.js","sourceRoot":"","sources":["../../src/compiler/exe.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,+BAAoC;AACpC,iDAAqC;AACrC,+BAAiC;AAEjC,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAElC,MAAa,WAAW;IAItB,YAAY,WAAmB,OAAO,CAAC,GAAG,EAAE;QAC1C,IAAI,CAAC,WAAW,GAAG,IAAI,iBAAW,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,UAAmB,EAAE,UAAgC,EAAE;QAC5F,2BAA2B;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5F,4CAA4C;QAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,+BAA+B;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC;QACtF,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAErC,wCAAwC;QACxC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACnD,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAE3C,8BAA8B;QAC9B,MAAM,eAAe,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,CAC7C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EACtB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,MAAM,CAC3C,CAAC;QAEF,iCAAiC;QACjC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,wBAAwB,eAAe,EAAE,CAAC,CAAC;YACvD,OAAO,eAAe,CAAC;QACzB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,MAAc;QAClC,OAAO;;;;;6CAKkC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;;CAEjE,CAAC,IAAI,EAAE,CAAC;IACP,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,WAAmB,EAAE,UAAkB;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,IAAI,OAAO,MAAM,WAAW,uCAAuC,UAAU,GAAG,CAAC;QAEjG,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;YACpD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,2DAA2D;YAC3D,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;YACnE,MAAM,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,0BAA0B,CAAC,WAAmB,EAAE,UAAkB;QAC9E,sEAAsE;QACtE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAErD,2DAA2D;QAC3D,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG;aACV,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;CACtC,CAAC;QAEE,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;IACvF,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,QAAgB,EAAE,UAAmB;QAClE,0DAA0D;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAEnF,MAAM,eAAe,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,CAC7C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EACtB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,KAAK,CAC1C,CAAC;QAEF,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,mCAAmC,eAAe,EAAE,CAAC,CAAC;QAElE,iCAAiC;QACjC,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG;EACtB,MAAM;CACP,CAAC;QAEE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACxC,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAE9B,OAAO,eAAe,CAAC;IACzB,CAAC;CACF;AA7GD,kCA6GC"}
@@ -0,0 +1,43 @@
1
+ export declare class WebCompiler {
2
+ private moduleSystem;
3
+ private output;
4
+ private indentLevel;
5
+ private imports;
6
+ constructor(basePath?: string);
7
+ compile(filePath: string, options?: {
8
+ minify?: boolean;
9
+ bundle?: boolean;
10
+ expose?: boolean;
11
+ }): string;
12
+ private compileProgram;
13
+ private compileProgramBundled;
14
+ private compileNode;
15
+ private compileVariableDeclaration;
16
+ private compileFunctionDeclaration;
17
+ private compileBlockStatement;
18
+ private compileIfStatement;
19
+ private compileWhileStatement;
20
+ private compileForStatement;
21
+ private compileVariableDeclarationInline;
22
+ private compileReturnStatement;
23
+ private compilePrintStatement;
24
+ private compileExpressionStatement;
25
+ private compileImportStatement;
26
+ private compileTryStatement;
27
+ private compileThrowStatement;
28
+ private compileExpression;
29
+ private compileBinaryExpression;
30
+ private compileUnaryExpression;
31
+ private compileCallExpression;
32
+ private compileAssignmentExpression;
33
+ private compileArrayLiteral;
34
+ private compileIndexExpression;
35
+ private compileObjectLiteral;
36
+ private compileMemberExpression;
37
+ private formatLiteral;
38
+ private addLine;
39
+ private indent;
40
+ private dedent;
41
+ private minify;
42
+ }
43
+ //# sourceMappingURL=web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/compiler/web.ts"],"names":[],"mappings":"AAOA,qBAAa,WAAW;IACtB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,OAAO,CAA0B;gBAE7B,QAAQ,GAAE,MAAsB;IAIrC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,MAAM;IA0BhH,OAAO,CAAC,cAAc;IAsCtB,OAAO,CAAC,qBAAqB;IA+C7B,OAAO,CAAC,WAAW;IAiDnB,OAAO,CAAC,0BAA0B;IASlC,OAAO,CAAC,0BAA0B;IASlC,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,gCAAgC;IASxC,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,0BAA0B;IAIlC,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,2BAA2B;IAMnC,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,MAAM;CASf"}
@@ -0,0 +1,413 @@
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.WebCompiler = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const lexer_1 = require("../lexer");
39
+ const parser_1 = require("../parser");
40
+ const module_1 = require("../module");
41
+ class WebCompiler {
42
+ constructor(basePath = process.cwd()) {
43
+ this.output = [];
44
+ this.indentLevel = 0;
45
+ this.imports = new Set();
46
+ this.moduleSystem = new module_1.ModuleSystem(basePath);
47
+ }
48
+ compile(filePath, options = {}) {
49
+ const source = fs.readFileSync(filePath, 'utf-8');
50
+ const lexer = new lexer_1.Lexer(source);
51
+ const tokens = lexer.tokenize();
52
+ const parser = new parser_1.Parser(tokens);
53
+ const program = parser.parse();
54
+ this.output = [];
55
+ this.imports.clear();
56
+ this.indentLevel = 0;
57
+ if (options.bundle) {
58
+ this.compileProgramBundled(program, filePath, options.expose);
59
+ }
60
+ else {
61
+ this.compileProgram(program, options.expose);
62
+ }
63
+ let result = this.output.join('');
64
+ if (options.minify) {
65
+ result = this.minify(result);
66
+ }
67
+ return result;
68
+ }
69
+ compileProgram(program, expose = false) {
70
+ if (expose) {
71
+ // Expor funções e variáveis globalmente
72
+ this.addLine('(function(window) {');
73
+ this.indent();
74
+ this.addLine('"use strict";');
75
+ }
76
+ else {
77
+ this.addLine('(function() {');
78
+ this.indent();
79
+ }
80
+ // Compilar declarações
81
+ for (const node of program.body) {
82
+ this.compileNode(node, expose);
83
+ }
84
+ if (expose) {
85
+ // Expor funções e variáveis globais
86
+ this.addLine('');
87
+ this.addLine('// Expor funções e variáveis globais');
88
+ for (const node of program.body) {
89
+ if (node.type === 'FunctionDeclaration') {
90
+ const funcName = node.name;
91
+ this.addLine(`window.${funcName} = ${funcName};`);
92
+ }
93
+ else if (node.type === 'VariableDeclaration' && !node.value) {
94
+ // Variáveis globais (sem valor inicial)
95
+ const varName = node.name;
96
+ this.addLine(`window.${varName} = ${varName};`);
97
+ }
98
+ }
99
+ this.dedent();
100
+ this.addLine('})(typeof window !== "undefined" ? window : global);');
101
+ }
102
+ else {
103
+ this.dedent();
104
+ this.addLine('})();');
105
+ }
106
+ }
107
+ compileProgramBundled(program, mainPath, expose = false) {
108
+ // Adicionar imports
109
+ if (this.imports.size > 0) {
110
+ for (const imp of this.imports) {
111
+ this.addLine(`// Import: ${imp}`);
112
+ }
113
+ this.addLine('');
114
+ }
115
+ if (expose) {
116
+ this.addLine('(function(window) {');
117
+ this.indent();
118
+ this.addLine('"use strict";');
119
+ }
120
+ else {
121
+ this.addLine('(function() {');
122
+ this.indent();
123
+ }
124
+ // Compilar módulos dependentes primeiro
125
+ // TODO: Implementar resolução de dependências
126
+ // Compilar programa principal
127
+ for (const node of program.body) {
128
+ this.compileNode(node, expose);
129
+ }
130
+ if (expose) {
131
+ // Expor funções e variáveis globais
132
+ this.addLine('');
133
+ this.addLine('// Expor funções e variáveis globais');
134
+ for (const node of program.body) {
135
+ if (node.type === 'FunctionDeclaration') {
136
+ const funcName = node.name;
137
+ this.addLine(`window.${funcName} = ${funcName};`);
138
+ }
139
+ else if (node.type === 'VariableDeclaration') {
140
+ const varName = node.name;
141
+ this.addLine(`window.${varName} = ${varName};`);
142
+ }
143
+ }
144
+ this.dedent();
145
+ this.addLine('})(typeof window !== "undefined" ? window : global);');
146
+ }
147
+ else {
148
+ this.dedent();
149
+ this.addLine('})();');
150
+ }
151
+ }
152
+ compileNode(node, expose = false) {
153
+ switch (node.type) {
154
+ case 'VariableDeclaration':
155
+ this.compileVariableDeclaration(node);
156
+ break;
157
+ case 'FunctionDeclaration':
158
+ this.compileFunctionDeclaration(node);
159
+ break;
160
+ case 'BlockStatement':
161
+ this.compileBlockStatement(node, expose);
162
+ break;
163
+ case 'IfStatement':
164
+ this.compileIfStatement(node);
165
+ break;
166
+ case 'WhileStatement':
167
+ this.compileWhileStatement(node);
168
+ break;
169
+ case 'ForStatement':
170
+ this.compileForStatement(node);
171
+ break;
172
+ case 'ReturnStatement':
173
+ this.compileReturnStatement(node);
174
+ break;
175
+ case 'PrintStatement':
176
+ this.compilePrintStatement(node);
177
+ break;
178
+ case 'ExpressionStatement':
179
+ this.compileExpressionStatement(node);
180
+ break;
181
+ case 'ImportStatement':
182
+ this.compileImportStatement(node);
183
+ break;
184
+ case 'BreakStatement':
185
+ this.addLine('break;');
186
+ break;
187
+ case 'ContinueStatement':
188
+ this.addLine('continue;');
189
+ break;
190
+ case 'TryStatement':
191
+ this.compileTryStatement(node);
192
+ break;
193
+ case 'ThrowStatement':
194
+ this.compileThrowStatement(node);
195
+ break;
196
+ default:
197
+ throw new Error(`Tipo de nó não suportado: ${node.type}`);
198
+ }
199
+ }
200
+ compileVariableDeclaration(node) {
201
+ const kind = node.kind === 'const' ? 'const' : node.kind === 'let' ? 'let' : 'var';
202
+ let code = `${kind} ${node.name}`;
203
+ if (node.value) {
204
+ code += ` = ${this.compileExpression(node.value)}`;
205
+ }
206
+ this.addLine(code + ';');
207
+ }
208
+ compileFunctionDeclaration(node) {
209
+ const params = node.params.join(', ');
210
+ this.addLine(`function ${node.name}(${params}) {`);
211
+ this.indent();
212
+ this.compileBlockStatement(node.body);
213
+ this.dedent();
214
+ this.addLine('}');
215
+ }
216
+ compileBlockStatement(node, expose = false) {
217
+ this.addLine('{');
218
+ this.indent();
219
+ for (const stmt of node.body) {
220
+ this.compileNode(stmt, expose);
221
+ }
222
+ this.dedent();
223
+ this.addLine('}');
224
+ }
225
+ compileIfStatement(node) {
226
+ this.addLine(`if (${this.compileExpression(node.condition)}) {`);
227
+ this.indent();
228
+ this.compileBlockStatement(node.consequent);
229
+ this.dedent();
230
+ if (node.alternate) {
231
+ this.addLine('} else {');
232
+ this.indent();
233
+ if (node.alternate.type === 'BlockStatement') {
234
+ this.compileBlockStatement(node.alternate);
235
+ }
236
+ else {
237
+ this.compileIfStatement(node.alternate);
238
+ }
239
+ this.dedent();
240
+ }
241
+ this.addLine('}');
242
+ }
243
+ compileWhileStatement(node) {
244
+ this.addLine(`while (${this.compileExpression(node.condition)}) {`);
245
+ this.indent();
246
+ this.compileBlockStatement(node.body);
247
+ this.dedent();
248
+ this.addLine('}');
249
+ }
250
+ compileForStatement(node) {
251
+ let init = '';
252
+ if (node.init) {
253
+ if (node.init.type === 'VariableDeclaration') {
254
+ init = this.compileVariableDeclarationInline(node.init);
255
+ }
256
+ else {
257
+ init = this.compileExpression(node.init.expression);
258
+ }
259
+ }
260
+ const condition = node.condition ? this.compileExpression(node.condition) : '';
261
+ const update = node.update ? this.compileExpression(node.update) : '';
262
+ this.addLine(`for (${init}; ${condition}; ${update}) {`);
263
+ this.indent();
264
+ this.compileBlockStatement(node.body);
265
+ this.dedent();
266
+ this.addLine('}');
267
+ }
268
+ compileVariableDeclarationInline(node) {
269
+ const kind = node.kind === 'const' ? 'const' : node.kind === 'let' ? 'let' : 'var';
270
+ let code = `${kind} ${node.name}`;
271
+ if (node.value) {
272
+ code += ` = ${this.compileExpression(node.value)}`;
273
+ }
274
+ return code;
275
+ }
276
+ compileReturnStatement(node) {
277
+ if (node.argument) {
278
+ this.addLine(`return ${this.compileExpression(node.argument)};`);
279
+ }
280
+ else {
281
+ this.addLine('return;');
282
+ }
283
+ }
284
+ compilePrintStatement(node) {
285
+ const args = node.arguments.map((arg) => this.compileExpression(arg)).join(', ');
286
+ this.addLine(`console.log(${args});`);
287
+ }
288
+ compileExpressionStatement(node) {
289
+ this.addLine(`${this.compileExpression(node.expression)};`);
290
+ }
291
+ compileImportStatement(node) {
292
+ // Marcar como importado para bundling
293
+ this.imports.add(node.source);
294
+ // Em compilação web, imports podem ser convertidos para require ou import ES6
295
+ this.addLine(`// import ${node.specifiers.map((s) => s.local || s.imported).join(', ')} from '${node.source}'`);
296
+ }
297
+ compileTryStatement(node) {
298
+ this.addLine('try {');
299
+ this.indent();
300
+ this.compileBlockStatement(node.block);
301
+ this.dedent();
302
+ if (node.handler) {
303
+ const param = node.handler.param || 'error';
304
+ this.addLine(`} catch (${param}) {`);
305
+ this.indent();
306
+ this.compileBlockStatement(node.handler.body);
307
+ this.dedent();
308
+ }
309
+ if (node.finalizer) {
310
+ this.addLine('} finally {');
311
+ this.indent();
312
+ this.compileBlockStatement(node.finalizer);
313
+ this.dedent();
314
+ }
315
+ this.addLine('}');
316
+ }
317
+ compileThrowStatement(node) {
318
+ this.addLine(`throw ${this.compileExpression(node.argument)};`);
319
+ }
320
+ compileExpression(expr) {
321
+ switch (expr.type) {
322
+ case 'Identifier':
323
+ return expr.name;
324
+ case 'Literal':
325
+ return this.formatLiteral(expr.value);
326
+ case 'BinaryExpression':
327
+ return this.compileBinaryExpression(expr);
328
+ case 'UnaryExpression':
329
+ return this.compileUnaryExpression(expr);
330
+ case 'CallExpression':
331
+ return this.compileCallExpression(expr);
332
+ case 'AssignmentExpression':
333
+ return this.compileAssignmentExpression(expr);
334
+ case 'ArrayLiteral':
335
+ return this.compileArrayLiteral(expr);
336
+ case 'IndexExpression':
337
+ return this.compileIndexExpression(expr);
338
+ case 'ObjectLiteral':
339
+ return this.compileObjectLiteral(expr);
340
+ case 'MemberExpression':
341
+ return this.compileMemberExpression(expr);
342
+ default:
343
+ throw new Error(`Tipo de expressão não suportado: ${expr.type}`);
344
+ }
345
+ }
346
+ compileBinaryExpression(expr) {
347
+ return `(${this.compileExpression(expr.left)} ${expr.operator} ${this.compileExpression(expr.right)})`;
348
+ }
349
+ compileUnaryExpression(expr) {
350
+ return `${expr.operator}${this.compileExpression(expr.argument)}`;
351
+ }
352
+ compileCallExpression(expr) {
353
+ const callee = this.compileExpression(expr.callee);
354
+ const args = expr.arguments.map((arg) => this.compileExpression(arg)).join(', ');
355
+ return `${callee}(${args})`;
356
+ }
357
+ compileAssignmentExpression(expr) {
358
+ const left = this.compileExpression(expr.left);
359
+ const right = this.compileExpression(expr.right);
360
+ return `${left} = ${right}`;
361
+ }
362
+ compileArrayLiteral(expr) {
363
+ const elements = expr.elements.map((el) => this.compileExpression(el)).join(', ');
364
+ return `[${elements}]`;
365
+ }
366
+ compileIndexExpression(expr) {
367
+ return `${this.compileExpression(expr.object)}[${this.compileExpression(expr.index)}]`;
368
+ }
369
+ compileObjectLiteral(expr) {
370
+ const props = expr.properties.map((p) => {
371
+ const key = p.computed ? `[${this.compileExpression(p.key)}]` : p.key;
372
+ return `${key}: ${this.compileExpression(p.value)}`;
373
+ }).join(', ');
374
+ return `{${props}}`;
375
+ }
376
+ compileMemberExpression(expr) {
377
+ const obj = this.compileExpression(expr.object);
378
+ const prop = expr.computed
379
+ ? `[${this.compileExpression(expr.property)}]`
380
+ : `.${expr.property}`;
381
+ return `${obj}${prop}`;
382
+ }
383
+ formatLiteral(value) {
384
+ if (value === null)
385
+ return 'null';
386
+ if (typeof value === 'boolean')
387
+ return value ? 'true' : 'false';
388
+ if (typeof value === 'string')
389
+ return JSON.stringify(value);
390
+ return String(value);
391
+ }
392
+ addLine(line) {
393
+ const indent = ' '.repeat(this.indentLevel);
394
+ this.output.push(indent + line + '\n');
395
+ }
396
+ indent() {
397
+ this.indentLevel++;
398
+ }
399
+ dedent() {
400
+ this.indentLevel--;
401
+ }
402
+ minify(code) {
403
+ // Minificação básica
404
+ return code
405
+ .replace(/\s+/g, ' ')
406
+ .replace(/;\s*}/g, ';}')
407
+ .replace(/{\s+/g, '{')
408
+ .replace(/\s+}/g, '}')
409
+ .trim();
410
+ }
411
+ }
412
+ exports.WebCompiler = WebCompiler;
413
+ //# sourceMappingURL=web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/compiler/web.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":""}