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
package/README_PT.md ADDED
@@ -0,0 +1,261 @@
1
+ # Trest Language - Linguagem de Programação Moderna
2
+
3
+ Uma linguagem de programação moderna e profissional, compilável para **Web** e **Desktop (.exe)** com suporte completo a caracteres especiais (Cirílico e português).
4
+
5
+ ## 🚀 Características Principais
6
+
7
+ - ✅ **Compilação para Web** - Gera JavaScript otimizado
8
+ - ✅ **Compilação para Desktop** - Cria executáveis nativos .exe
9
+ - ✅ **Sistema de Módulos** - Import/Export de módulos
10
+ - ✅ **Biblioteca Padrão** - std com funções matemáticas, strings, arrays e I/O
11
+ - ✅ **Tratamento de Erros** - Try/Catch/Throw completo
12
+ - ✅ **Sintaxe Flexível** - Suporta Cirílico e Português
13
+ - ✅ **Tipagem Dinâmica** - Tipos inferidos automaticamente
14
+ - ✅ **Sistema de Build Profissional**
15
+
16
+ ## 📦 Instalação
17
+
18
+ ### Instalação Global (Recomendado)
19
+
20
+ ```bash
21
+ npm install -g trest-language
22
+ ```
23
+
24
+ Após instalação, os comandos `trest` e `trestc` estarão disponíveis globalmente:
25
+ ```bash
26
+ trest --version
27
+ trestc --help
28
+ ```
29
+
30
+ ### Instalação Local em Projeto
31
+
32
+ ```bash
33
+ npm install trest-language
34
+ ```
35
+
36
+ Use via `npx`:
37
+ ```bash
38
+ npx trest programa.trest
39
+ npx trestc programa.trest --mode web
40
+ ```
41
+
42
+ ### Instalação a partir do Código
43
+
44
+ ```bash
45
+ git clone https://github.com/trest-language/trest.git
46
+ cd trest
47
+ npm install
48
+ npm run build
49
+ npm link # Para uso global
50
+ ```
51
+
52
+ ## 🎯 Início Rápido
53
+
54
+ ### Executar arquivo diretamente
55
+ ```bash
56
+ trest programa.trest
57
+ ```
58
+
59
+ ### Compilar para Web (JavaScript)
60
+ ```bash
61
+ trestc programa.trest --mode web -o app.js
62
+ ```
63
+
64
+ ### Compilar para Executável
65
+ ```bash
66
+ trestc programa.trest --mode exe -o app.exe
67
+ ```
68
+
69
+ ## 📚 Sintaxe da Linguagem
70
+
71
+ ### Variáveis
72
+
73
+ ```trest
74
+ перем nome = "Trest" // Cirílico
75
+ var idade = 25 // Português
76
+ конст pi = 3.14159 // Cirílico
77
+ ```
78
+
79
+ ### Funções
80
+
81
+ ```trest
82
+ // Cirílico
83
+ функция somar(a, b) {
84
+ вернуть a + b
85
+ }
86
+
87
+ // Português
88
+ funcao somar(a, b) {
89
+ retorne a + b
90
+ }
91
+ ```
92
+
93
+ ### Condicionais
94
+
95
+ ```trest
96
+ // Cirílico
97
+ если (idade >= 18) {
98
+ печать("Maior de idade")
99
+ } иначе {
100
+ печать("Menor de idade")
101
+ }
102
+
103
+ // Português
104
+ se (idade >= 18) {
105
+ imprima("Maior de idade")
106
+ } senao {
107
+ imprima("Menor de idade")
108
+ }
109
+ ```
110
+
111
+ ### Loops
112
+
113
+ ```trest
114
+ // While
115
+ пока (i < 10) {
116
+ печать(i)
117
+ i = i + 1
118
+ }
119
+
120
+ // For
121
+ для (пусть i = 0; i < 10; i = i + 1) {
122
+ печать(i)
123
+ }
124
+ ```
125
+
126
+ ### Biblioteca Padrão
127
+
128
+ ```trest
129
+ импорт * как Math из "std/math"
130
+ импорт * como Math de "std/math"
131
+
132
+ пусть resultado = Math.abs(-5)
133
+ Math.sqrt(16)
134
+ Math.PI
135
+ ```
136
+
137
+ ## 📖 Documentação
138
+
139
+ - [README Principal](README.md) - Visão geral completa
140
+ - [Guia de Instalação](INSTALL.md) - Instruções detalhadas
141
+ - [Documentação Completa](docs/README.md) - Referência completa
142
+ - [Guia de Início](docs/guide.md) - Tutorial passo a passo
143
+ - [Exemplos](docs/examples.md) - Códigos de exemplo
144
+ - [API Reference](docs/api.md) - Referência de API
145
+
146
+ ## 🛠️ Requisitos
147
+
148
+ - **Node.js**: >= 18.0.0
149
+ - **npm**: >= 9.0.0
150
+
151
+ Verifique suas versões:
152
+ ```bash
153
+ node --version
154
+ npm --version
155
+ ```
156
+
157
+ ## 🔧 Scripts Disponíveis
158
+
159
+ ```bash
160
+ npm run build # Compilar TypeScript
161
+ npm run build:watch # Compilar em modo watch
162
+ npm run clean # Limpar arquivos compilados
163
+ npm start <arquivo> # Executar arquivo Trest
164
+ ```
165
+
166
+ ## 📝 Palavras-Chave
167
+
168
+ ### Cirílico (Principal)
169
+ | Trest | Equivalente |
170
+ |-------|-------------|
171
+ | `если` | if |
172
+ | `иначе` | else |
173
+ | `пока` | while |
174
+ | `для` | for |
175
+ | `функция` | function |
176
+ | `вернуть` | return |
177
+ | `печать` | print |
178
+
179
+ ### Português (Alternativo)
180
+ | Trest | Equivalente |
181
+ |-------|-------------|
182
+ | `se` | if |
183
+ | `senao` | else |
184
+ | `enquanto` | while |
185
+ | `para` | for |
186
+ | `funcao` | function |
187
+ | `retorne` | return |
188
+ | `imprima` | print |
189
+
190
+ ## 🌐 Compilação
191
+
192
+ ### Para Web
193
+
194
+ O compilador web gera JavaScript moderno compatível com:
195
+ - Navegadores (via `<script>` ou bundler)
196
+ - Node.js
197
+ - React/Vue/Angular
198
+ - Qualquer ambiente JavaScript
199
+
200
+ ```bash
201
+ trestc programa.trest --mode web
202
+ ```
203
+
204
+ ### Para Executável
205
+
206
+ O compilador de executável cria arquivos `.exe` que:
207
+ - Não requerem Node.js instalado
208
+ - São autônomos (incluem todas as dependências)
209
+ - Executam diretamente no Windows
210
+
211
+ ```bash
212
+ trestc programa.trest --mode exe
213
+ ```
214
+
215
+ ## 🏗️ Estrutura do Projeto
216
+
217
+ ```
218
+ treste/
219
+ ├── src/
220
+ │ ├── lexer.ts # Analisador léxico
221
+ │ ├── parser.ts # Analisador sintático
222
+ │ ├── ast.ts # Definições AST
223
+ │ ├── interpreter.ts # Interpretador
224
+ │ ├── compiler.ts # CLI do compilador
225
+ │ ├── compiler/
226
+ │ │ ├── web.ts # Compilador Web
227
+ │ │ └── exe.ts # Compilador EXE
228
+ │ ├── std/ # Biblioteca padrão
229
+ │ └── ...
230
+ ├── dist/ # Código compilado
231
+ ├── exemplos/ # Programas exemplo
232
+ ├── docs/ # Documentação
233
+ └── package.json
234
+ ```
235
+
236
+ ## 🤝 Contribuindo
237
+
238
+ Contribuições são bem-vindas! Sinta-se à vontade para abrir issues e pull requests.
239
+
240
+ ## 📄 Licença
241
+
242
+ MIT - veja [LICENSE](LICENSE) para mais detalhes.
243
+
244
+ ## 👤 Autor
245
+
246
+ **PoktWeb**
247
+
248
+ - 📖 Site da Documentação: [https://trest-site.vercel.app](https://trest-site.vercel.app)
249
+ - 💻 GitHub: [@poktweb](https://github.com/poktweb)
250
+
251
+ ## 🔗 Links
252
+
253
+ - 📦 Site da Documentação: [https://trest-site.vercel.app](https://trest-site.vercel.app)
254
+ - 🔧 GitHub Repository: [https://github.com/trest-language/trest](https://github.com/trest-language/trest)
255
+ - 🐛 Issues: [https://github.com/trest-language/trest/issues](https://github.com/trest-language/trest/issues)
256
+ - 📚 Documentação Completa: [docs/README.md](docs/README.md)
257
+
258
+ ## 🙏 Agradecimentos
259
+
260
+ Obrigado por usar o Trest Language!
261
+
package/dist/ast.d.ts ADDED
@@ -0,0 +1,140 @@
1
+ export type ASTNode = Program | VariableDeclaration | FunctionDeclaration | BlockStatement | IfStatement | WhileStatement | ForStatement | ReturnStatement | ExpressionStatement | PrintStatement | ImportStatement | ExportStatement | BreakStatement | ContinueStatement | TryStatement | ThrowStatement | AssignmentExpression | BinaryExpression | UnaryExpression | CallExpression | Identifier | Literal | ArrayLiteral | IndexExpression | ObjectLiteral | MemberExpression;
2
+ export interface Program {
3
+ type: 'Program';
4
+ body: ASTNode[];
5
+ }
6
+ export interface VariableDeclaration {
7
+ type: 'VariableDeclaration';
8
+ kind: 'var' | 'let' | 'const';
9
+ name: string;
10
+ value?: Expression;
11
+ }
12
+ export interface FunctionDeclaration {
13
+ type: 'FunctionDeclaration';
14
+ name: string;
15
+ params: string[];
16
+ body: BlockStatement;
17
+ }
18
+ export interface BlockStatement {
19
+ type: 'BlockStatement';
20
+ body: ASTNode[];
21
+ }
22
+ export interface IfStatement {
23
+ type: 'IfStatement';
24
+ condition: Expression;
25
+ consequent: BlockStatement;
26
+ alternate?: BlockStatement | IfStatement;
27
+ }
28
+ export interface WhileStatement {
29
+ type: 'WhileStatement';
30
+ condition: Expression;
31
+ body: BlockStatement;
32
+ }
33
+ export interface ForStatement {
34
+ type: 'ForStatement';
35
+ init?: VariableDeclaration | ExpressionStatement;
36
+ condition?: Expression;
37
+ update?: Expression;
38
+ body: BlockStatement;
39
+ }
40
+ export interface ReturnStatement {
41
+ type: 'ReturnStatement';
42
+ argument?: Expression;
43
+ }
44
+ export interface ExpressionStatement {
45
+ type: 'ExpressionStatement';
46
+ expression: Expression;
47
+ }
48
+ export interface PrintStatement {
49
+ type: 'PrintStatement';
50
+ arguments: Expression[];
51
+ }
52
+ export interface ImportStatement {
53
+ type: 'ImportStatement';
54
+ specifiers: ImportSpecifier[];
55
+ source: string;
56
+ }
57
+ export interface ImportSpecifier {
58
+ imported: string;
59
+ local?: string;
60
+ }
61
+ export interface ExportStatement {
62
+ type: 'ExportStatement';
63
+ declaration: FunctionDeclaration | VariableDeclaration;
64
+ }
65
+ export interface BreakStatement {
66
+ type: 'BreakStatement';
67
+ }
68
+ export interface ContinueStatement {
69
+ type: 'ContinueStatement';
70
+ }
71
+ export interface TryStatement {
72
+ type: 'TryStatement';
73
+ block: BlockStatement;
74
+ handler?: CatchClause;
75
+ finalizer?: BlockStatement;
76
+ }
77
+ export interface CatchClause {
78
+ param?: string;
79
+ body: BlockStatement;
80
+ }
81
+ export interface ThrowStatement {
82
+ type: 'ThrowStatement';
83
+ argument: Expression;
84
+ }
85
+ export type Expression = AssignmentExpression | BinaryExpression | UnaryExpression | CallExpression | Identifier | Literal | ArrayLiteral | IndexExpression | ObjectLiteral | MemberExpression;
86
+ export interface AssignmentExpression {
87
+ type: 'AssignmentExpression';
88
+ left: Identifier | IndexExpression;
89
+ operator: '=';
90
+ right: Expression;
91
+ }
92
+ export interface BinaryExpression {
93
+ type: 'BinaryExpression';
94
+ left: Expression;
95
+ operator: string;
96
+ right: Expression;
97
+ }
98
+ export interface UnaryExpression {
99
+ type: 'UnaryExpression';
100
+ operator: string;
101
+ argument: Expression;
102
+ }
103
+ export interface CallExpression {
104
+ type: 'CallExpression';
105
+ callee: Identifier;
106
+ arguments: Expression[];
107
+ }
108
+ export interface Identifier {
109
+ type: 'Identifier';
110
+ name: string;
111
+ }
112
+ export interface Literal {
113
+ type: 'Literal';
114
+ value: string | number | boolean | null;
115
+ }
116
+ export interface ArrayLiteral {
117
+ type: 'ArrayLiteral';
118
+ elements: Expression[];
119
+ }
120
+ export interface IndexExpression {
121
+ type: 'IndexExpression';
122
+ object: Expression;
123
+ index: Expression;
124
+ }
125
+ export interface ObjectLiteral {
126
+ type: 'ObjectLiteral';
127
+ properties: Property[];
128
+ }
129
+ export interface Property {
130
+ key: string;
131
+ value: Expression;
132
+ computed?: boolean;
133
+ }
134
+ export interface MemberExpression {
135
+ type: 'MemberExpression';
136
+ object: Expression;
137
+ property: string | Expression;
138
+ computed: boolean;
139
+ }
140
+ //# sourceMappingURL=ast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../src/ast.ts"],"names":[],"mappings":"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"}
package/dist/ast.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.js","sourceRoot":"","sources":["../src/ast.ts"],"names":[],"mappings":""}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,201 @@
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 lexer_1 = require("./lexer");
43
+ const parser_1 = require("./parser");
44
+ const interpreter_1 = require("./interpreter");
45
+ const errors_1 = require("./errors");
46
+ const module_1 = require("./module");
47
+ const minimist_1 = __importDefault(require("minimist"));
48
+ const VERSION = '2.0.0';
49
+ function main() {
50
+ const args = (0, minimist_1.default)(process.argv.slice(2));
51
+ // Validação de argumentos
52
+ if (args._.length === 0 && !args.help && !args.h && !args.version && !args.v) {
53
+ showUsage();
54
+ process.exit(1);
55
+ }
56
+ if (args.help || args.h) {
57
+ showHelp();
58
+ process.exit(0);
59
+ }
60
+ if (args.version || args.v) {
61
+ console.log(`Trest Language v${VERSION}`);
62
+ process.exit(0);
63
+ }
64
+ const filePath = args._[0];
65
+ // Validações de arquivo
66
+ if (!filePath) {
67
+ console.error('❌ Error: No file specified');
68
+ console.error('Usage: trest <файл.trest> [опции]');
69
+ process.exit(1);
70
+ }
71
+ if (!fs.existsSync(filePath)) {
72
+ console.error(`❌ Error: File not found: ${filePath}`);
73
+ process.exit(1);
74
+ }
75
+ const fileStats = fs.statSync(filePath);
76
+ if (!fileStats.isFile()) {
77
+ console.error(`❌ Error: ${filePath} is not a file`);
78
+ process.exit(1);
79
+ }
80
+ // Log verbose
81
+ if (args.verbose || args.debug) {
82
+ console.log(`📄 Executing: ${filePath}`);
83
+ console.log(`📊 File size: ${fileStats.size} bytes`);
84
+ console.log('');
85
+ }
86
+ try {
87
+ const startTime = Date.now();
88
+ // Ler arquivo
89
+ const code = fs.readFileSync(filePath, 'utf-8');
90
+ if (code.length === 0) {
91
+ console.warn('⚠️ Warning: File is empty');
92
+ process.exit(0);
93
+ }
94
+ const basePath = path.dirname(filePath);
95
+ // Lexer
96
+ if (args.debug)
97
+ console.log('🔤 Tokenizing...');
98
+ const lexer = new lexer_1.Lexer(code);
99
+ const tokens = lexer.tokenize();
100
+ if (args.debug)
101
+ console.log(`✅ Generated ${tokens.length} tokens`);
102
+ // Parser
103
+ if (args.debug)
104
+ console.log('🌳 Parsing...');
105
+ const parser = new parser_1.Parser(tokens);
106
+ const program = parser.parse();
107
+ if (args.debug)
108
+ console.log('✅ AST generated successfully');
109
+ const moduleSystem = new module_1.ModuleSystem(basePath);
110
+ // Carregar módulos std se necessário
111
+ if (args.debug)
112
+ console.log('📦 Loading modules...');
113
+ loadStdModules(moduleSystem);
114
+ // Interpreter
115
+ if (args.debug)
116
+ console.log('⚡ Executing...\n');
117
+ const interpreter = new interpreter_1.Interpreter();
118
+ interpreter.interpret(program);
119
+ const duration = Date.now() - startTime;
120
+ if (args.verbose || args.debug) {
121
+ console.log(`\n✅ Execution completed in ${duration}ms`);
122
+ }
123
+ }
124
+ catch (error) {
125
+ handleError(error, args);
126
+ process.exit(1);
127
+ }
128
+ }
129
+ function handleError(error, args) {
130
+ if (error instanceof errors_1.TrestError) {
131
+ console.error(error.format());
132
+ }
133
+ else {
134
+ console.error('❌ Error:', error.message);
135
+ if (args.strict || args.debug) {
136
+ console.error('\nStack trace:');
137
+ console.error(error.stack);
138
+ }
139
+ if (args.debug) {
140
+ console.error('\nDebug info:');
141
+ console.error('Error type:', error.constructor.name);
142
+ if (error.code) {
143
+ console.error('Error code:', error.code);
144
+ }
145
+ }
146
+ }
147
+ }
148
+ function showUsage() {
149
+ console.log(`Trest Language v${VERSION}`);
150
+ console.log('');
151
+ console.log('Usage: trest <файл.trest> [опции]');
152
+ console.log('');
153
+ console.log('Options:');
154
+ console.log(' --help, -h Show help');
155
+ console.log(' --version, -v Show version');
156
+ console.log(' --strict Strict mode');
157
+ console.log(' --verbose, -V Verbose output');
158
+ console.log(' --debug, -d Debug mode');
159
+ console.log('');
160
+ console.log('Examples:');
161
+ console.log(' trest программа.trest');
162
+ console.log(' trest exemplos/hello_cyrillic.trest');
163
+ console.log(' trest script.trest --verbose');
164
+ console.log('');
165
+ console.log('Compilation:');
166
+ console.log(' trestc программа.trest --mode web');
167
+ console.log(' trestc программа.trest --mode exe');
168
+ }
169
+ function showHelp() {
170
+ console.log(`
171
+ Trest Language v${VERSION} - Interpreter
172
+
173
+ Usage:
174
+ trest <файл.trest> [опции]
175
+
176
+ Options:
177
+ --help, -h Show this help message
178
+ --version, -v Show version number
179
+ --strict Strict mode (show stack trace on errors)
180
+ --verbose, -V Verbose output
181
+ --debug, -d Debug mode (detailed execution info)
182
+
183
+ Examples:
184
+ trest программа.trest
185
+ trest exemplos/hello_cyrillic.trest --strict
186
+ trest script.trest --verbose
187
+ trest program.trest --debug
188
+
189
+ Compilation:
190
+ trestc программа.trest --mode web # Compile to JavaScript
191
+ trestc программа.trest --mode exe # Compile to executable
192
+
193
+ For more information visit: https://github.com/trest-language/trest
194
+ `);
195
+ }
196
+ function loadStdModules(moduleSystem) {
197
+ // Загрузка стандартных модулей при необходимости
198
+ // Пока интерпретатор управляет этим внутренне
199
+ }
200
+ main();
201
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export declare class ExeCompiler {
2
+ private webCompiler;
3
+ private tempDir;
4
+ constructor(basePath?: string);
5
+ compile(filePath: string, outputPath?: string, options?: {
6
+ minify?: boolean;
7
+ }): Promise<string>;
8
+ private createWrapper;
9
+ private buildExecutable;
10
+ private buildExecutableAlternative;
11
+ compileStandalone(filePath: string, outputPath?: string): Promise<string>;
12
+ }
13
+ //# sourceMappingURL=exe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exe.d.ts","sourceRoot":"","sources":["../../src/compiler/exe.ts"],"names":[],"mappings":"AAQA,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,OAAO,CAAS;gBAEZ,QAAQ,GAAE,MAAsB;IAK/B,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAkChH,OAAO,CAAC,aAAa;YAWP,eAAe;YAgBf,0BAA0B;IAgB3B,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAuBvF"}