treste 2.4.4 → 2.4.6

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.
package/INSTALL.md CHANGED
@@ -59,7 +59,7 @@ Se você quer contribuir ou customizar o Trest:
59
59
 
60
60
  ```bash
61
61
  # Clone o repositório
62
- git clone https://github.com/trest-language/trest.git
62
+ # Baixar o código-fonte do projeto
63
63
  cd trest
64
64
 
65
65
  # Instale as dependências
@@ -255,7 +255,7 @@ Veja [CONTRIBUTING.md](CONTRIBUTING.md) para informações sobre como contribuir
255
255
  Se você encontrar problemas:
256
256
 
257
257
  1. Verifique a seção de resolução de problemas acima
258
- 2. Consulte as [issues no GitHub](https://github.com/trest-language/trest/issues)
258
+ 2. Consulte a documentação em https://trest-site.vercel.app
259
259
  3. Abra uma nova issue se necessário
260
260
 
261
261
  ## 📄 Licença
package/README.md CHANGED
@@ -1,9 +1,16 @@
1
1
  # Trest - Linguagem de Programação com Suporte a Cirílico
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/treste.svg)](https://www.npmjs.com/package/treste)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+ [![Node.js Version](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen.svg)](https://nodejs.org/)
6
+ [![Active Maintenance](https://img.shields.io/badge/maintenance-active-green.svg)](https://trest-site.vercel.app)
7
+
3
8
  Linguagem de programação moderna e profissional, estruturalmente organizada e compilável para **Web** e **Desktop (.exe)** com suporte completo a cirílico (alfabeto russo).
4
9
 
5
10
  > **🎯 Característica Única:** Trest permite programar usando palavras-chave em cirílico ou latino, mantendo a mesma sintaxe e funcionalidades.
6
11
 
12
+ > **🔒 Segurança:** Versão 2.4.4 inclui correções de segurança da cadeia de suprimentos. Veja [SECURITY.md](./SECURITY.md) para detalhes.
13
+
7
14
  ## 🚀 Principais Funcionalidades
8
15
 
9
16
  - ✅ **Execução Inline** - Execute código direto na linha de comando com `-e`
@@ -47,9 +54,8 @@ npx trestc programa.trest --mode web
47
54
  Se você quiser instalar a partir do código-fonte ou fazer modificações:
48
55
 
49
56
  ```bash
50
- # Clonar o repositório
51
- git clone https://github.com/trest-language/trest.git
52
- cd trest
57
+ # Baixar o código-fonte
58
+ cd treste
53
59
 
54
60
  # Instalar dependências
55
61
  npm install
@@ -461,6 +467,18 @@ Veja a pasta `exemplos/` para programas completos demonstrando:
461
467
  - `exemplos/filesystem_demo.trest` - Operações de arquivo
462
468
  - `exemplos/todas_funcionalidades.trest` - Exemplo completo
463
469
 
470
+ ## 🔒 Segurança
471
+
472
+ **Versão 2.4.4** inclui correções de segurança da cadeia de suprimentos:
473
+ - ✅ Scripts de instalação removidos
474
+ - ✅ Sem acesso ao shell durante instalação
475
+ - ✅ Acesso à rede controlado e documentado
476
+
477
+ **Documentação de Segurança:**
478
+ - **[SECURITY.md](./SECURITY.md)** - Política de segurança completa
479
+ - **[SOCKET_ALERTS.md](./SOCKET_ALERTS.md)** - Resposta aos alertas do Socket
480
+ - **[CHANGELOG_SECURITY.md](./CHANGELOG_SECURITY.md)** - Changelog de segurança
481
+
464
482
  ## 📚 Documentação Completa
465
483
 
466
484
  Para mais informações, consulte a documentação completa em `docs/`:
@@ -470,6 +488,7 @@ Para mais informações, consulte a documentação completa em `docs/`:
470
488
  - **[API.md](docs/api.md)** - Referência da API
471
489
  - **[ARCHITECTURE.md](docs/ARCHITECTURE.md)** - Arquitetura técnica
472
490
  - **[WHY_TREST.md](docs/WHY_TREST.md)** - Por que usar Trest
491
+ - **[DOCUMENTACAO_COMPLETA.md](./DOCUMENTACAO_COMPLETA.md)** - Documentação completa unificada
473
492
 
474
493
  Ou visite o site oficial: [https://trest-site.vercel.app](https://trest-site.vercel.app)
475
494
 
@@ -482,7 +501,6 @@ MIT
482
501
  **PoktWeb**
483
502
 
484
503
  - Site de documentação: [https://trest-site.vercel.app](https://trest-site.vercel.app)
485
- - GitHub: [@poktweb](https://github.com/poktweb)
486
504
 
487
505
  ## 🤝 Contribuições
488
506
 
package/dist/ast.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type ASTNode = Program | VariableDeclaration | FunctionDeclaration | BlockStatement | IfStatement | SwitchStatement | CaseClause | DefaultClause | WhileStatement | ForStatement | ReturnStatement | ExpressionStatement | PrintStatement | ImportStatement | ExportStatement | BreakStatement | ContinueStatement | TryStatement | ThrowStatement | AssignmentExpression | BinaryExpression | UnaryExpression | TernaryExpression | CallExpression | Identifier | Literal | ArrayLiteral | IndexExpression | ObjectLiteral | MemberExpression;
1
+ export type ASTNode = Program | VariableDeclaration | FunctionDeclaration | ClassDeclaration | BlockStatement | IfStatement | SwitchStatement | CaseClause | DefaultClause | WhileStatement | ForStatement | ForOfStatement | ForInStatement | ReturnStatement | ExpressionStatement | PrintStatement | ImportStatement | ExportStatement | BreakStatement | ContinueStatement | TryStatement | ThrowStatement | AssignmentExpression | BinaryExpression | UnaryExpression | TernaryExpression | CallExpression | NewExpression | Identifier | Literal | ArrayLiteral | IndexExpression | ObjectLiteral | MemberExpression | FunctionExpression;
2
2
  export interface Program {
3
3
  type: 'Program';
4
4
  body: ASTNode[];
@@ -15,6 +15,29 @@ export interface FunctionDeclaration {
15
15
  params: string[];
16
16
  body: BlockStatement;
17
17
  }
18
+ export interface FunctionExpression {
19
+ type: 'FunctionExpression';
20
+ name?: string;
21
+ params: string[];
22
+ body: BlockStatement;
23
+ }
24
+ export interface ClassDeclaration {
25
+ type: 'ClassDeclaration';
26
+ name: string;
27
+ superClass?: Identifier;
28
+ body: ClassBody;
29
+ }
30
+ export interface ClassBody {
31
+ type: 'ClassBody';
32
+ body: ClassMethod[];
33
+ }
34
+ export interface ClassMethod {
35
+ type: 'ClassMethod';
36
+ key: string;
37
+ kind: 'constructor' | 'method';
38
+ params: string[];
39
+ body: BlockStatement;
40
+ }
18
41
  export interface BlockStatement {
19
42
  type: 'BlockStatement';
20
43
  body: ASTNode[];
@@ -51,6 +74,18 @@ export interface ForStatement {
51
74
  update?: Expression;
52
75
  body: BlockStatement;
53
76
  }
77
+ export interface ForOfStatement {
78
+ type: 'ForOfStatement';
79
+ left: VariableDeclaration | Identifier;
80
+ right: Expression;
81
+ body: BlockStatement;
82
+ }
83
+ export interface ForInStatement {
84
+ type: 'ForInStatement';
85
+ left: VariableDeclaration | Identifier;
86
+ right: Expression;
87
+ body: BlockStatement;
88
+ }
54
89
  export interface ReturnStatement {
55
90
  type: 'ReturnStatement';
56
91
  argument?: Expression;
@@ -96,13 +131,18 @@ export interface ThrowStatement {
96
131
  type: 'ThrowStatement';
97
132
  argument: Expression;
98
133
  }
99
- export type Expression = AssignmentExpression | BinaryExpression | UnaryExpression | TernaryExpression | CallExpression | Identifier | Literal | ArrayLiteral | IndexExpression | ObjectLiteral | MemberExpression;
134
+ export type Expression = AssignmentExpression | BinaryExpression | UnaryExpression | TernaryExpression | CallExpression | NewExpression | FunctionExpression | Identifier | Literal | ArrayLiteral | IndexExpression | ObjectLiteral | MemberExpression;
100
135
  export interface AssignmentExpression {
101
136
  type: 'AssignmentExpression';
102
137
  left: Identifier | IndexExpression;
103
- operator: '=';
138
+ operator: '=' | '+=' | '-=' | '*=' | '/=' | '%=';
104
139
  right: Expression;
105
140
  }
141
+ export interface NewExpression {
142
+ type: 'NewExpression';
143
+ callee: Identifier | MemberExpression;
144
+ arguments: Expression[];
145
+ }
106
146
  export interface BinaryExpression {
107
147
  type: 'BinaryExpression';
108
148
  left: Expression;
@@ -131,7 +171,7 @@ export interface Identifier {
131
171
  }
132
172
  export interface Literal {
133
173
  type: 'Literal';
134
- value: string | number | boolean | null;
174
+ value: string | number | boolean | null | undefined;
135
175
  }
136
176
  export interface ArrayLiteral {
137
177
  type: 'ArrayLiteral';
package/dist/ast.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../src/ast.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../src/ast.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -46,7 +46,8 @@ const interpreter_1 = require("./interpreter");
46
46
  const errors_1 = require("./errors");
47
47
  const module_1 = require("./module");
48
48
  const minimist_1 = __importDefault(require("minimist"));
49
- const VERSION = '2.4.0';
49
+ const packageJson = JSON.parse(fs.readFileSync(path.join(__dirname, '../package.json'), 'utf-8'));
50
+ const VERSION = packageJson.version;
50
51
  function main() {
51
52
  const args = (0, minimist_1.default)(process.argv.slice(2));
52
53
  // Validação de argumentos
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/compiler.js CHANGED
@@ -153,7 +153,7 @@ Examples:
153
153
  trestc script.trest --mode exe -o app.exe
154
154
  trestc app.trest --mode web --minify --expose
155
155
 
156
- For more information visit: https://github.com/trest-language/trest
156
+ For more information visit: https://trest-site.vercel.app
157
157
  `);
158
158
  }
159
159
  async function compileWeb(inputFile, outputFile, options = {}, verbose = false) {
@@ -17,6 +17,7 @@ export declare class Interpreter {
17
17
  private evaluatePrintStatement;
18
18
  private evaluateExpression;
19
19
  private evaluateAssignment;
20
+ private evaluateBinaryOperation;
20
21
  private evaluateBinaryExpression;
21
22
  private evaluateUnaryExpression;
22
23
  private evaluateTernaryExpression;
@@ -34,6 +35,13 @@ export declare class Interpreter {
34
35
  private evaluateThrowStatement;
35
36
  private evaluateWhileStatement;
36
37
  private evaluateForStatement;
38
+ private evaluateForOfStatement;
39
+ private evaluateForInStatement;
40
+ private evaluateClassDeclaration;
41
+ private evaluateNewExpression;
42
+ private findClass;
43
+ private instantiateClass;
44
+ private evaluateFunctionExpression;
37
45
  /**
38
46
  * Avalia import statement
39
47
  */
@@ -1 +1 @@
1
- {"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../src/interpreter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,OAAO,EAsBR,MAAM,OAAO,CAAC;AA+Bf,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAc;;IAY/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA2GtB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAMxC,OAAO,CAAC,iBAAiB;IAyDzB,OAAO,CAAC,2BAA2B;IAmBnC,OAAO,CAAC,2BAA2B;IAgBnC,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,uBAAuB;IA+C/B,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,kBAAkB;IAyC1B,OAAO,CAAC,wBAAwB;IA0ChC,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,yBAAyB;IAcjC,OAAO,CAAC,sBAAsB;IAkD9B,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,wBAAwB;IAkBhC,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;IA2C5B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA6H/B;;OAEG;IACH,OAAO,CAAC,cAAc;IAqBtB;;OAEG;IACH,OAAO,CAAC,eAAe;CA6BxB"}
1
+ {"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../src/interpreter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,OAAO,EA2BR,MAAM,OAAO,CAAC;AAyCf,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAc;;IAc/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA2GtB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAMxC,OAAO,CAAC,iBAAiB;IA+DzB,OAAO,CAAC,2BAA2B;IAyBnC,OAAO,CAAC,2BAA2B;IAgBnC,OAAO,CAAC,sBAAsB;IAsB9B,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,uBAAuB;IA+C/B,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,kBAAkB;IAuC1B,OAAO,CAAC,kBAAkB;IA4E1B,OAAO,CAAC,uBAAuB;IAwB/B,OAAO,CAAC,wBAAwB;IA4ChC,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,yBAAyB;IAcjC,OAAO,CAAC,sBAAsB;IAoD9B,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,oBAAoB;IA6B5B,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,sBAAsB;IAqB9B,OAAO,CAAC,oBAAoB;IA6C5B,OAAO,CAAC,sBAAsB;IA8C9B,OAAO,CAAC,sBAAsB;IA+C9B,OAAO,CAAC,wBAAwB;IA4ChC,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,gBAAgB;IAsExB,OAAO,CAAC,0BAA0B;IAelC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA6H/B;;OAEG;IACH,OAAO,CAAC,cAAc;IAqBtB;;OAEG;IACH,OAAO,CAAC,eAAe;CA+BxB"}
@@ -44,6 +44,8 @@ class Interpreter {
44
44
  this.globalEnv = {
45
45
  variables: new Map(),
46
46
  functions: new Map(),
47
+ classes: new Map(),
48
+ constants: new Set(),
47
49
  };
48
50
  // Registrar módulos nativos
49
51
  this.registerNativeModules();
@@ -168,6 +170,12 @@ class Interpreter {
168
170
  return this.evaluateWhileStatement(statement, env);
169
171
  case 'ForStatement':
170
172
  return this.evaluateForStatement(statement, env);
173
+ case 'ForOfStatement':
174
+ return this.evaluateForOfStatement(statement, env);
175
+ case 'ForInStatement':
176
+ return this.evaluateForInStatement(statement, env);
177
+ case 'ClassDeclaration':
178
+ return this.evaluateClassDeclaration(statement, env);
171
179
  case 'ReturnStatement':
172
180
  return this.evaluateReturnStatement(statement, env);
173
181
  case 'PrintStatement':
@@ -202,9 +210,14 @@ class Interpreter {
202
210
  if (decl.value) {
203
211
  value = this.evaluateExpression(decl.value, env);
204
212
  }
205
- if (decl.kind === 'const' && env.variables.has(name)) {
213
+ // Verificar se está tentando reatribuir uma constante
214
+ if (env.constants.has(name)) {
206
215
  throw new Error(`Variável constante '${name}' não pode ser reatribuída`);
207
216
  }
217
+ // Marcar constantes
218
+ if (decl.kind === 'const') {
219
+ env.constants.add(name);
220
+ }
208
221
  env.variables.set(name, value);
209
222
  return null;
210
223
  }
@@ -223,6 +236,8 @@ class Interpreter {
223
236
  const newEnv = {
224
237
  variables: new Map(),
225
238
  functions: new Map(),
239
+ classes: new Map(),
240
+ constants: new Set(),
226
241
  parent: env,
227
242
  };
228
243
  for (const statement of block.body) {
@@ -312,6 +327,10 @@ class Interpreter {
312
327
  return this.evaluateTernaryExpression(expr, env);
313
328
  case 'CallExpression':
314
329
  return this.evaluateCallExpression(expr, env);
330
+ case 'NewExpression':
331
+ return this.evaluateNewExpression(expr, env);
332
+ case 'FunctionExpression':
333
+ return this.evaluateFunctionExpression(expr, env);
315
334
  case 'Identifier':
316
335
  return this.evaluateIdentifier(expr, env);
317
336
  case 'Literal':
@@ -329,10 +348,45 @@ class Interpreter {
329
348
  }
330
349
  }
331
350
  evaluateAssignment(expr, env) {
332
- const value = this.evaluateExpression(expr.right, env);
351
+ // Para operadores compostos, calcular o valor primeiro
352
+ let value;
353
+ if (expr.operator !== '=') {
354
+ // Para +=, -=, *=, /=, %=, precisamos do valor atual
355
+ if (expr.left.type === 'Identifier') {
356
+ const name = expr.left.name;
357
+ const currentValue = this.findEnvironment(name, env)?.variables.get(name) || env.variables.get(name);
358
+ if (currentValue === undefined) {
359
+ throw new Error(`Variável '${name}' não definida`);
360
+ }
361
+ // Verificar se é constante
362
+ const targetEnv = this.findEnvironment(name, env) || env;
363
+ if (targetEnv.constants.has(name)) {
364
+ throw new Error(`Não é possível modificar constante '${name}'`);
365
+ }
366
+ // Calcular novo valor baseado no operador
367
+ const rightValue = this.evaluateExpression(expr.right, env);
368
+ const binaryOp = expr.operator.slice(0, -1);
369
+ value = this.evaluateBinaryOperation(binaryOp, currentValue, rightValue);
370
+ }
371
+ else {
372
+ // Para arrays, calcular normalmente
373
+ const currentValue = this.evaluateExpression(expr.left, env);
374
+ const rightValue = this.evaluateExpression(expr.right, env);
375
+ const binaryOp = expr.operator.slice(0, -1);
376
+ value = this.evaluateBinaryOperation(binaryOp, currentValue, rightValue);
377
+ }
378
+ }
379
+ else {
380
+ value = this.evaluateExpression(expr.right, env);
381
+ }
333
382
  if (expr.left.type === 'Identifier') {
334
383
  const name = expr.left.name;
335
384
  const targetEnv = this.findEnvironment(name, env);
385
+ // Verificar se é constante
386
+ const checkEnv = targetEnv || env;
387
+ if (checkEnv.constants.has(name)) {
388
+ throw new Error(`Não é possível reatribuir constante '${name}'`);
389
+ }
336
390
  if (targetEnv) {
337
391
  targetEnv.variables.set(name, value);
338
392
  }
@@ -361,6 +415,25 @@ class Interpreter {
361
415
  }
362
416
  return value;
363
417
  }
418
+ evaluateBinaryOperation(operator, left, right) {
419
+ switch (operator) {
420
+ case '+':
421
+ if (typeof left === 'string' || typeof right === 'string') {
422
+ return String(left) + String(right);
423
+ }
424
+ return left + right;
425
+ case '-':
426
+ return left - right;
427
+ case '*':
428
+ return left * right;
429
+ case '/':
430
+ return left / right;
431
+ case '%':
432
+ return left % right;
433
+ default:
434
+ throw new Error(`Operador binário não suportado: ${operator}`);
435
+ }
436
+ }
364
437
  evaluateBinaryExpression(expr, env) {
365
438
  const left = this.evaluateExpression(expr.left, env);
366
439
  const right = this.evaluateExpression(expr.right, env);
@@ -378,6 +451,8 @@ class Interpreter {
378
451
  return left / right;
379
452
  case '%':
380
453
  return left % right;
454
+ case '**':
455
+ return Math.pow(left, right);
381
456
  case '==':
382
457
  return left === right;
383
458
  case '!=':
@@ -442,6 +517,8 @@ class Interpreter {
442
517
  const newEnv = {
443
518
  variables: new Map(),
444
519
  functions: new Map(),
520
+ classes: new Map(),
521
+ constants: new Set(),
445
522
  parent: func.closure,
446
523
  };
447
524
  for (let i = 0; i < func.params.length; i++) {
@@ -569,6 +646,8 @@ class Interpreter {
569
646
  const newEnv = {
570
647
  variables: new Map(),
571
648
  functions: new Map(),
649
+ classes: new Map(),
650
+ constants: new Set(),
572
651
  parent: env,
573
652
  };
574
653
  if (stmt.handler.param) {
@@ -609,6 +688,8 @@ class Interpreter {
609
688
  const newEnv = {
610
689
  variables: new Map(),
611
690
  functions: new Map(),
691
+ classes: new Map(),
692
+ constants: new Set(),
612
693
  parent: env,
613
694
  };
614
695
  if (stmt.init) {
@@ -638,6 +719,200 @@ class Interpreter {
638
719
  }
639
720
  return null;
640
721
  }
722
+ evaluateForOfStatement(stmt, env) {
723
+ const iterable = this.evaluateExpression(stmt.right, env);
724
+ if (!Array.isArray(iterable)) {
725
+ throw new Error('For...of só funciona com arrays');
726
+ }
727
+ const newEnv = {
728
+ variables: new Map(),
729
+ functions: new Map(),
730
+ classes: new Map(),
731
+ constants: new Set(),
732
+ parent: env,
733
+ };
734
+ for (const item of iterable) {
735
+ if (stmt.left.type === 'VariableDeclaration') {
736
+ const decl = stmt.left;
737
+ newEnv.variables.set(decl.name, item);
738
+ if (decl.kind === 'const') {
739
+ newEnv.constants.add(decl.name);
740
+ }
741
+ }
742
+ else {
743
+ newEnv.variables.set(stmt.left.name, item);
744
+ }
745
+ const result = this.evaluateBlockStatement(stmt.body, newEnv);
746
+ if (result !== null) {
747
+ if (this.isReturnValue(result)) {
748
+ return result;
749
+ }
750
+ if (result.type === 'break') {
751
+ break;
752
+ }
753
+ if (result.type === 'continue') {
754
+ continue;
755
+ }
756
+ }
757
+ }
758
+ return null;
759
+ }
760
+ evaluateForInStatement(stmt, env) {
761
+ const object = this.evaluateExpression(stmt.right, env);
762
+ if (typeof object !== 'object' || object === null || Array.isArray(object)) {
763
+ throw new Error('For...in só funciona com objetos');
764
+ }
765
+ const newEnv = {
766
+ variables: new Map(),
767
+ functions: new Map(),
768
+ classes: new Map(),
769
+ constants: new Set(),
770
+ parent: env,
771
+ };
772
+ const obj = object;
773
+ for (const key in obj) {
774
+ if (stmt.left.type === 'VariableDeclaration') {
775
+ const decl = stmt.left;
776
+ newEnv.variables.set(decl.name, key);
777
+ if (decl.kind === 'const') {
778
+ newEnv.constants.add(decl.name);
779
+ }
780
+ }
781
+ else {
782
+ newEnv.variables.set(stmt.left.name, key);
783
+ }
784
+ const result = this.evaluateBlockStatement(stmt.body, newEnv);
785
+ if (result !== null) {
786
+ if (this.isReturnValue(result)) {
787
+ return result;
788
+ }
789
+ if (result.type === 'break') {
790
+ break;
791
+ }
792
+ if (result.type === 'continue') {
793
+ continue;
794
+ }
795
+ }
796
+ }
797
+ return null;
798
+ }
799
+ evaluateClassDeclaration(stmt, env) {
800
+ const methods = new Map();
801
+ let constructor;
802
+ // Avaliar métodos da classe
803
+ for (const method of stmt.body.body) {
804
+ const funcValue = {
805
+ type: 'function',
806
+ name: method.key,
807
+ params: method.params,
808
+ body: method.body,
809
+ closure: env,
810
+ };
811
+ if (method.kind === 'constructor') {
812
+ constructor = funcValue;
813
+ }
814
+ else {
815
+ methods.set(method.key, funcValue);
816
+ }
817
+ }
818
+ const classValue = {
819
+ type: 'class',
820
+ name: stmt.name,
821
+ methods,
822
+ constructor,
823
+ };
824
+ // Se tem superclasse, resolver
825
+ if (stmt.superClass) {
826
+ const superClass = env.classes.get(stmt.superClass.name);
827
+ if (!superClass) {
828
+ throw new Error(`Classe pai '${stmt.superClass.name}' não encontrada`);
829
+ }
830
+ classValue.superClass = superClass;
831
+ }
832
+ env.classes.set(stmt.name, classValue);
833
+ return null;
834
+ }
835
+ evaluateNewExpression(expr, env) {
836
+ const calleeName = expr.callee.name;
837
+ const classValue = this.findClass(calleeName, env);
838
+ if (!classValue) {
839
+ throw new Error(`Classe '${calleeName}' não encontrada`);
840
+ }
841
+ return this.instantiateClass(classValue, expr.arguments, env);
842
+ }
843
+ findClass(name, env) {
844
+ if (env.classes.has(name)) {
845
+ return env.classes.get(name);
846
+ }
847
+ if (env.parent) {
848
+ return this.findClass(name, env.parent);
849
+ }
850
+ return null;
851
+ }
852
+ instantiateClass(classValue, args, env) {
853
+ const instance = {};
854
+ // Se tem superclasse, criar instância pai
855
+ if (classValue.superClass) {
856
+ instance.__proto__ = this.instantiateClass(classValue.superClass, [], env);
857
+ }
858
+ // Executar construtor se existir
859
+ if (classValue.constructor) {
860
+ const constructorEnv = {
861
+ variables: new Map(),
862
+ functions: new Map(),
863
+ classes: new Map(),
864
+ constants: new Set(),
865
+ parent: env,
866
+ };
867
+ // Adicionar 'это' (this) ao ambiente
868
+ constructorEnv.variables.set('это', instance);
869
+ constructorEnv.variables.set('this', instance);
870
+ // Mapear argumentos
871
+ for (let i = 0; i < classValue.constructor.params.length; i++) {
872
+ const paramName = classValue.constructor.params[i];
873
+ const argValue = i < args.length
874
+ ? this.evaluateExpression(args[i], env)
875
+ : null;
876
+ constructorEnv.variables.set(paramName, argValue);
877
+ }
878
+ // Executar construtor
879
+ this.evaluateBlockStatement(classValue.constructor.body, constructorEnv);
880
+ }
881
+ // Adicionar métodos ao objeto
882
+ for (const [methodName, method] of classValue.methods) {
883
+ const methodFunc = (...methodArgs) => {
884
+ const methodEnv = {
885
+ variables: new Map(),
886
+ functions: new Map(),
887
+ classes: new Map(),
888
+ constants: new Set(),
889
+ parent: env,
890
+ };
891
+ methodEnv.variables.set('это', instance);
892
+ methodEnv.variables.set('this', instance);
893
+ for (let i = 0; i < method.params.length; i++) {
894
+ methodEnv.variables.set(method.params[i], methodArgs[i] || null);
895
+ }
896
+ const result = this.evaluateBlockStatement(method.body, methodEnv);
897
+ if (result !== null && this.isReturnValue(result)) {
898
+ return result.value;
899
+ }
900
+ return null;
901
+ };
902
+ instance[methodName] = methodFunc;
903
+ }
904
+ return instance;
905
+ }
906
+ evaluateFunctionExpression(expr, env) {
907
+ const funcValue = {
908
+ type: 'function',
909
+ name: expr.name || '<anonymous>',
910
+ params: expr.params,
911
+ body: expr.body,
912
+ closure: env,
913
+ };
914
+ return funcValue;
915
+ }
641
916
  /**
642
917
  * Avalia import statement
643
918
  */
@@ -794,6 +1069,8 @@ class Interpreter {
794
1069
  const moduleEnv = {
795
1070
  variables: new Map(),
796
1071
  functions: new Map(),
1072
+ classes: new Map(),
1073
+ constants: new Set(),
797
1074
  };
798
1075
  // Evaluate module statements
799
1076
  for (const statement of ast.body) {