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,195 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const minimist_1 = __importDefault(require("minimist"));
43
+ const web_1 = require("./compiler/web");
44
+ const exe_1 = require("./compiler/exe");
45
+ const VERSION = '2.0.0';
46
+ async function main() {
47
+ const args = (0, minimist_1.default)(process.argv.slice(2));
48
+ // Help
49
+ if (args.help || args.h) {
50
+ showHelp();
51
+ process.exit(0);
52
+ }
53
+ // Version
54
+ if (args.version || args.v) {
55
+ console.log(`Trest Compiler v${VERSION}`);
56
+ process.exit(0);
57
+ }
58
+ const inputFile = args._[0];
59
+ const outputFile = args.output || args.o;
60
+ const mode = args.mode || args.m || 'run';
61
+ const minify = args.minify !== undefined;
62
+ const expose = args.expose !== undefined;
63
+ if (!inputFile) {
64
+ showUsage();
65
+ process.exit(1);
66
+ }
67
+ // Validações
68
+ if (!fs.existsSync(inputFile)) {
69
+ console.error(`❌ Error: File not found: ${inputFile}`);
70
+ process.exit(1);
71
+ }
72
+ const fileStats = fs.statSync(inputFile);
73
+ if (!fileStats.isFile()) {
74
+ console.error(`❌ Error: ${inputFile} is not a file`);
75
+ process.exit(1);
76
+ }
77
+ try {
78
+ if (args.verbose || args.debug) {
79
+ console.log(`📄 Compiling: ${inputFile}`);
80
+ console.log(`📊 File size: ${fileStats.size} bytes`);
81
+ console.log(`🎯 Mode: ${mode}`);
82
+ console.log('');
83
+ }
84
+ const startTime = Date.now();
85
+ switch (mode) {
86
+ case 'web':
87
+ await compileWeb(inputFile, outputFile, { minify, expose }, args.verbose || args.debug);
88
+ break;
89
+ case 'exe':
90
+ await compileExe(inputFile, outputFile, { minify }, args.verbose || args.debug);
91
+ break;
92
+ case 'run':
93
+ default:
94
+ console.log('💡 Tip: Use "trest <arquivo>" to run directly');
95
+ process.exit(0);
96
+ }
97
+ const duration = Date.now() - startTime;
98
+ if (args.verbose || args.debug) {
99
+ console.log(`\n✅ Compilation completed in ${duration}ms`);
100
+ }
101
+ }
102
+ catch (error) {
103
+ console.error('❌ Compilation error:', error.message);
104
+ if (args.debug && error.stack) {
105
+ console.error('\nStack trace:');
106
+ console.error(error.stack);
107
+ }
108
+ process.exit(1);
109
+ }
110
+ }
111
+ function showUsage() {
112
+ console.log(`Trest Compiler v${VERSION}`);
113
+ console.log('');
114
+ console.log('Usage: trestc <файл.trest> [опции]');
115
+ console.log('');
116
+ console.log('Options:');
117
+ console.log(' --mode, -m <web|exe> Compilation mode');
118
+ console.log(' --output, -o <файл> Output file');
119
+ console.log(' --minify Minify code');
120
+ console.log(' --expose Expose functions globally (web only)');
121
+ console.log(' --verbose, -V Verbose output');
122
+ console.log(' --debug, -d Debug mode');
123
+ console.log(' --help, -h Show help');
124
+ console.log(' --version, -v Show version');
125
+ console.log('');
126
+ console.log('Examples:');
127
+ console.log(' trestc program.trest --mode web');
128
+ console.log(' trestc script.trest --mode exe -o app.exe');
129
+ }
130
+ function showHelp() {
131
+ console.log(`
132
+ Trest Compiler v${VERSION}
133
+
134
+ Usage:
135
+ trestc <файл.trest> [опции]
136
+
137
+ Compilation Modes:
138
+ web Compile to JavaScript
139
+ exe Compile to executable (.exe)
140
+
141
+ Options:
142
+ --mode, -m <mode> Compilation mode (web or exe)
143
+ --output, -o <file> Output file path
144
+ --minify Minify output code
145
+ --expose Expose functions globally (web only)
146
+ --verbose, -V Verbose output
147
+ --debug, -d Debug mode
148
+ --help, -h Show this help message
149
+ --version, -v Show version number
150
+
151
+ Examples:
152
+ trestc program.trest --mode web -o app.js
153
+ trestc script.trest --mode exe -o app.exe
154
+ trestc app.trest --mode web --minify --expose
155
+
156
+ For more information visit: https://github.com/trest-language/trest
157
+ `);
158
+ }
159
+ async function compileWeb(inputFile, outputFile, options = {}, verbose = false) {
160
+ try {
161
+ if (verbose)
162
+ console.log('🔤 Loading and parsing...');
163
+ const compiler = new web_1.WebCompiler(path.dirname(inputFile));
164
+ const jsCode = compiler.compile(inputFile, {
165
+ minify: options.minify,
166
+ bundle: true,
167
+ expose: options.expose
168
+ });
169
+ const finalOutput = outputFile || inputFile.replace(/\.trest$/, '.js');
170
+ if (verbose) {
171
+ console.log(`📝 Writing output: ${finalOutput}`);
172
+ console.log(`📊 Output size: ${jsCode.length} bytes`);
173
+ }
174
+ fs.writeFileSync(finalOutput, jsCode);
175
+ console.log(`✅ Compiled to JavaScript: ${finalOutput}`);
176
+ }
177
+ catch (error) {
178
+ throw new Error(`Web compilation failed: ${error.message}`);
179
+ }
180
+ }
181
+ async function compileExe(inputFile, outputFile, options = {}, verbose = false) {
182
+ try {
183
+ if (verbose)
184
+ console.log('🔧 Building executable...');
185
+ const compiler = new exe_1.ExeCompiler(path.dirname(inputFile));
186
+ await compiler.compile(inputFile, outputFile, options);
187
+ const finalOutput = outputFile || inputFile.replace(/\.trest$/, '.exe');
188
+ console.log(`✅ Compiled to executable: ${finalOutput}`);
189
+ }
190
+ catch (error) {
191
+ throw new Error(`Executable compilation failed: ${error.message}`);
192
+ }
193
+ }
194
+ main();
195
+ //# sourceMappingURL=compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export declare class TrestError extends Error {
2
+ message: string;
3
+ line: number;
4
+ column: number;
5
+ source?: string | undefined;
6
+ constructor(message: string, line: number, column: number, source?: string | undefined);
7
+ format(): string;
8
+ }
9
+ export declare class SyntaxError extends TrestError {
10
+ constructor(message: string, line: number, column: number, source?: string);
11
+ }
12
+ export declare class TypeError extends TrestError {
13
+ constructor(message: string, line: number, column: number, source?: string);
14
+ }
15
+ export declare class RuntimeError extends TrestError {
16
+ constructor(message: string, line: number, column: number, source?: string);
17
+ }
18
+ export declare class ImportError extends TrestError {
19
+ constructor(message: string, line: number, column: number, source?: string);
20
+ }
21
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAW,SAAQ,KAAK;IAE1B,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,MAAM;IACd,MAAM,CAAC,EAAE,MAAM;gBAHf,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,YAAA;IAOjB,MAAM,IAAI,MAAM;CAaxB;AAED,qBAAa,WAAY,SAAQ,UAAU;gBAC7B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAI3E;AAED,qBAAa,SAAU,SAAQ,UAAU;gBAC3B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAI3E;AAED,qBAAa,YAAa,SAAQ,UAAU;gBAC9B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAI3E;AAED,qBAAa,WAAY,SAAQ,UAAU;gBAC7B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAI3E"}
package/dist/errors.js ADDED
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ImportError = exports.RuntimeError = exports.TypeError = exports.SyntaxError = exports.TrestError = void 0;
4
+ class TrestError extends Error {
5
+ constructor(message, line, column, source) {
6
+ super(message);
7
+ this.message = message;
8
+ this.line = line;
9
+ this.column = column;
10
+ this.source = source;
11
+ this.name = 'TrestError';
12
+ Error.captureStackTrace(this, this.constructor);
13
+ }
14
+ format() {
15
+ const lines = this.source?.split('\n') || [];
16
+ const lineContent = lines[this.line - 1] || '';
17
+ const pointer = ' '.repeat(this.column - 1) + '^';
18
+ return [
19
+ `Erro na linha ${this.line}, coluna ${this.column}:`,
20
+ this.message,
21
+ '',
22
+ `${this.line} | ${lineContent}`,
23
+ ` | ${pointer}`,
24
+ ].join('\n');
25
+ }
26
+ }
27
+ exports.TrestError = TrestError;
28
+ class SyntaxError extends TrestError {
29
+ constructor(message, line, column, source) {
30
+ super(message, line, column, source);
31
+ this.name = 'SyntaxError';
32
+ }
33
+ }
34
+ exports.SyntaxError = SyntaxError;
35
+ class TypeError extends TrestError {
36
+ constructor(message, line, column, source) {
37
+ super(message, line, column, source);
38
+ this.name = 'TypeError';
39
+ }
40
+ }
41
+ exports.TypeError = TypeError;
42
+ class RuntimeError extends TrestError {
43
+ constructor(message, line, column, source) {
44
+ super(message, line, column, source);
45
+ this.name = 'RuntimeError';
46
+ }
47
+ }
48
+ exports.RuntimeError = RuntimeError;
49
+ class ImportError extends TrestError {
50
+ constructor(message, line, column, source) {
51
+ super(message, line, column, source);
52
+ this.name = 'ImportError';
53
+ }
54
+ }
55
+ exports.ImportError = ImportError;
56
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,UAAW,SAAQ,KAAK;IACnC,YACS,OAAe,EACf,IAAY,EACZ,MAAc,EACd,MAAe;QAEtB,KAAK,CAAC,OAAO,CAAC,CAAC;QALR,YAAO,GAAP,OAAO,CAAQ;QACf,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAS;QAGtB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IAEM,MAAM;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QAElD,OAAO;YACL,iBAAiB,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,MAAM,GAAG;YACpD,IAAI,CAAC,OAAO;YACZ,EAAE;YACF,GAAG,IAAI,CAAC,IAAI,MAAM,WAAW,EAAE;YAC/B,QAAQ,OAAO,EAAE;SAClB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACF;AAzBD,gCAyBC;AAED,MAAa,WAAY,SAAQ,UAAU;IACzC,YAAY,OAAe,EAAE,IAAY,EAAE,MAAc,EAAE,MAAe;QACxE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AALD,kCAKC;AAED,MAAa,SAAU,SAAQ,UAAU;IACvC,YAAY,OAAe,EAAE,IAAY,EAAE,MAAc,EAAE,MAAe;QACxE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AALD,8BAKC;AAED,MAAa,YAAa,SAAQ,UAAU;IAC1C,YAAY,OAAe,EAAE,IAAY,EAAE,MAAc,EAAE,MAAe;QACxE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AALD,oCAKC;AAED,MAAa,WAAY,SAAQ,UAAU;IACzC,YAAY,OAAe,EAAE,IAAY,EAAE,MAAc,EAAE,MAAe;QACxE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AALD,kCAKC"}
@@ -0,0 +1,5 @@
1
+ export { Lexer, Token, TokenType } from './lexer';
2
+ export { Parser } from './parser';
3
+ export { Interpreter } from './interpreter';
4
+ export * from './ast';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,cAAc,OAAO,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,26 @@
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
+ exports.Interpreter = exports.Parser = exports.TokenType = exports.Lexer = void 0;
18
+ var lexer_1 = require("./lexer");
19
+ Object.defineProperty(exports, "Lexer", { enumerable: true, get: function () { return lexer_1.Lexer; } });
20
+ Object.defineProperty(exports, "TokenType", { enumerable: true, get: function () { return lexer_1.TokenType; } });
21
+ var parser_1 = require("./parser");
22
+ Object.defineProperty(exports, "Parser", { enumerable: true, get: function () { return parser_1.Parser; } });
23
+ var interpreter_1 = require("./interpreter");
24
+ Object.defineProperty(exports, "Interpreter", { enumerable: true, get: function () { return interpreter_1.Interpreter; } });
25
+ __exportStar(require("./ast"), exports);
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iCAAkD;AAAzC,8FAAA,KAAK,OAAA;AAAS,kGAAA,SAAS,OAAA;AAChC,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AACpB,wCAAsB"}
@@ -0,0 +1,32 @@
1
+ import { Program } from './ast';
2
+ export declare class Interpreter {
3
+ private globalEnv;
4
+ constructor();
5
+ interpret(program: Program): void;
6
+ private evaluateStatement;
7
+ private evaluateVariableDeclaration;
8
+ private evaluateFunctionDeclaration;
9
+ private evaluateBlockStatement;
10
+ private evaluateIfStatement;
11
+ private evaluateReturnStatement;
12
+ private evaluatePrintStatement;
13
+ private evaluateExpression;
14
+ private evaluateAssignment;
15
+ private evaluateBinaryExpression;
16
+ private evaluateUnaryExpression;
17
+ private evaluateCallExpression;
18
+ private evaluateIdentifier;
19
+ private evaluateArrayLiteral;
20
+ private evaluateIndexExpression;
21
+ private evaluateObjectLiteral;
22
+ private evaluateMemberExpression;
23
+ private findEnvironment;
24
+ private isTruthy;
25
+ private isReturnValue;
26
+ private formatValue;
27
+ private evaluateTryStatement;
28
+ private evaluateThrowStatement;
29
+ private evaluateWhileStatement;
30
+ private evaluateForStatement;
31
+ }
32
+ //# sourceMappingURL=interpreter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../src/interpreter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,OAAO,EAmBR,MAAM,OAAO,CAAC;AAwBf,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAc;;IASxB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAMxC,OAAO,CAAC,iBAAiB;IAiDzB,OAAO,CAAC,2BAA2B;IAmBnC,OAAO,CAAC,2BAA2B;IAgBnC,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,kBAAkB;IA6B1B,OAAO,CAAC,kBAAkB;IAyC1B,OAAO,CAAC,wBAAwB;IA0ChC,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,sBAAsB;IAsC9B,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,wBAAwB;IAehC,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,sBAAsB;IAqB9B,OAAO,CAAC,oBAAoB;CA0C7B"}