treste 2.5.4 → 2.5.5

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/README.md CHANGED
@@ -1,536 +1,524 @@
1
- # Trest - Linguagem de Programação com Suporte a Cirílico
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
- [![Liberapay](https://img.shields.io/liberapay/receives/poktweb.svg?logo=liberapay)](https://liberapay.com/poktweb/donate)
8
-
9
- 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).
10
-
11
- > **🎯 Característica Única:** Trest permite programar usando palavras-chave em cirílico ou latino, mantendo a mesma sintaxe e funcionalidades.
12
-
13
- > **🔒 Segurança:** Versão 2.5.4 mantém todas as correções de segurança da cadeia de suprimentos. Veja [DOCUMENTACAO_COMPLETA.md](./DOCUMENTACAO_COMPLETA.md#segurança) para detalhes.
14
-
15
- > **🚀 Deploy na Vercel:** Versão 2.5.4 inclui suporte completo para deploy na Vercel! Use `npm create trest` para criar projetos otimizados para serverless functions.
16
-
17
- > **🌐 Full Stack Revolution:** Versão 2.5.4 adiciona manipulação de DOM, CSS e interoperabilidade com NPM! Trest agora é uma linguagem completa para Web e Desktop.
18
-
19
- ## 🚀 Principais Funcionalidades
20
-
21
- - ✅ **Execução Inline** - Execute código direto na linha de comando com `-e`
22
- - ✅ **Compilação para Web** - Gera JavaScript otimizado
23
- - ✅ **Compilação para Desktop** - Cria executáveis .exe nativos
24
- - ✅ **Deploy na Vercel** - Crie projetos otimizados para serverless functions
25
- - ✅ **Manipulação de DOM** - Módulo std/dom para interação com páginas web
26
- - ✅ **Sistema de CSS** - Módulo std/style para estilização e carregamento de CSS
27
- - ✅ **Interoperabilidade NPM** - Importe qualquer pacote do ecossistema Node.js
28
- - ✅ **Framework de Testes** - Módulo std/test para testes unitários
29
- - ✅ **Sistema de Módulos** - Import/Export de módulos
30
- - ✅ **Biblioteca Padrão** - std com funções matemáticas, strings, arrays e I/O
31
- - ✅ **Tratamento de Erros** - Try/Catch/Throw estendido
32
- - ✅ **Sintaxe em Cirílico** - Palavras-chave em russo
33
- - ✅ **Tipagem Dinâmica** - Tipos inferidos automaticamente
34
- - ✅ **Sistema de Build** - Ferramentas de compilação profissionais
35
-
36
- ## 📦 Instalação
37
-
38
- ### Instalação via npm (recomendado)
39
-
40
- **Instalação global:**
41
- ```bash
42
- npm install -g treste
43
- ```
44
-
45
- Após a instalação, os comandos `trest` e `trestc` estarão disponíveis globalmente:
46
- ```bash
47
- trest --version
48
- trestc --help
49
- ```
50
-
51
- **Instalação local em projeto:**
52
- ```bash
53
- npm install treste
54
- ```
55
-
56
- Use via `npx`:
57
- ```bash
58
- npx trest programa.trest
59
- npx trestc programa.trest --mode web
60
- ```
61
-
62
- ### Instalação a partir do código-fonte
63
-
64
- Se você quiser instalar a partir do código-fonte ou fazer modificações:
65
-
66
- ```bash
67
- # Baixar o código-fonte
68
- cd treste
69
-
70
- # Instalar dependências
71
- npm install
72
-
73
- # Compilar o projeto
74
- npm run build
75
-
76
- # (Opcional) Criar links globais para testes
77
- npm link
78
- ```
79
-
80
- ### Requisitos
81
-
82
- - **Node.js**: >= 18.0.0
83
- - **npm**: >= 9.0.0
84
- - **TypeScript**: 5.0+ (para desenvolvimento)
85
-
86
- Verifique sua versão:
87
- ```bash
88
- node --version # deve ser >= v18
89
- npm --version # deve ser >= 9
90
- ```
91
-
92
- ## 🎯 Guia Rápido
93
-
94
- ### Criar novo projeto (Vercel-ready)
95
- ```bash
96
- # Opção 1: Usando npx (Recomendado)
97
- npx create-trest-app meu-projeto
98
-
99
- # Opção 2: Usando npx com alias
100
- npx create-trest meu-projeto
101
-
102
- # Opção 3: Se já tiver instalado globalmente
103
- npm install -g treste@latest
104
- create-trest-app meu-projeto
105
- ```
106
-
107
- **Nota:** O comando `npm create trest` requer um pacote separado `create-trest` no npm. Use `npx create-trest-app` que funciona imediatamente.
108
-
109
- ### Executar código inline (sem arquivo)
110
- ```bash
111
- trest -e "печать('Olá, Mundo!')"
112
- trest -e "пусть x = 10; печать(x)"
113
- ```
114
-
115
- ### Executar arquivo (interpretador)
116
- ```bash
117
- trest exemplos/hello_cyrillic.trest
118
- ```
119
-
120
- ### Compilar para Web (JavaScript)
121
- ```bash
122
- npm run compile:web -- exemplos/hello_cyrillic.trest
123
- # ou
124
- trestc exemplos/hello_cyrillic.trest --mode web --output app.js
125
- ```
126
-
127
- ### Compilar para executável (.exe)
128
- ```bash
129
- npm run compile:exe -- exemplos/hello_cyrillic.trest
130
- # ou
131
- trestc exemplos/hello_cyrillic.trest --mode exe --output app.exe
132
- ```
133
-
134
- ## 📚 Sintaxe da Linguagem
135
-
136
- Todos os exemplos abaixo usam a sintaxe em **cirílico** (palavras-chave em russo), que é a forma nativa do Trest:
137
-
138
- ### Variáveis
139
-
140
- ```trest
141
- перем имя = "Trest"
142
- пусть возраст = 25
143
- конст pi = 3.14159
144
- ```
145
-
146
- ### Funções
147
-
148
- ```trest
149
- функция сложить(a, b) {
150
- вернуть a + b
151
- }
152
-
153
- пусть результат = сложить(5, 3)
154
- печать(результат)
155
- ```
156
-
157
- ### Condicionais
158
-
159
- ```trest
160
- если (возраст >= 18) {
161
- печать("Совершеннолетний")
162
- } иначе {
163
- печать("Несовершеннолетний")
164
- }
165
- ```
166
-
167
- ### Operadores Ternários
168
-
169
- ```trest
170
- пусть result = возраст >= 18 ? "Adulto" : "Menor"
171
- печать(result)
172
- ```
173
-
174
- ### Switch/Case
175
-
176
- ```trest
177
- переключатель (день) {
178
- случай 1:
179
- печать("Понедельник")
180
- прервать
181
- случай 2:
182
- печать("Вторник")
183
- прервать
184
- поумолчанию:
185
- печать("Другой день")
186
- }
187
- ```
188
-
189
- ### Loops
190
-
191
- **While (Enquanto):**
192
- ```trest
193
- пусть i = 0
194
- пока (i < 10) {
195
- печать(i)
196
- i = i + 1
197
- }
198
- ```
199
-
200
- **For (Para):**
201
- ```trest
202
- для (пусть i = 0; i < 10; i = i + 1) {
203
- печать(i)
204
- }
205
- ```
206
-
207
- ### Tratamento de Erros
208
-
209
- ```trest
210
- попытаться {
211
- пусть результат = разделить(10, 0)
212
- } перехватить (ошибка) {
213
- печать("Ошибка:", ошибка)
214
- } наконец {
215
- печать("Операция завершена")
216
- }
217
- ```
218
-
219
- ### Módulos
220
-
221
- **Import (Importar):**
222
- ```trest
223
- импорт { max, min } измодуля "std/math"
224
- импорт * как Math измодуля "std/math"
225
- ```
226
-
227
- **Export (Exportar):**
228
- ```trest
229
- экспорт функция мояФункция() {
230
- вернуть "Привет"
231
- }
232
-
233
- экспорт конст константа = 42
234
- ```
235
-
236
- ### Objetos
237
-
238
- ```trest
239
- пусть человек = {
240
- имя: "Иван",
241
- возраст: 30,
242
- город: "Москва"
243
- }
244
-
245
- печать(человек.имя) # "Иван"
246
- ```
247
-
248
- ### Arrays
249
-
250
- ```trest
251
- пусть числа = [1, 2, 3, 4, 5]
252
- печать(числа[0]) # 1
253
-
254
- числа[0] = 10
255
- печать(числа) # [10, 2, 3, 4, 5]
256
- ```
257
-
258
- ## 📖 Biblioteca Padrão (std)
259
-
260
- Trest inclui uma biblioteca padrão rica com 11 módulos:
261
-
262
- ### Math (Matemática)
263
-
264
- ```trest
265
- импорт * как Math измодуля "std/math"
266
-
267
- пусть x = Math.abs(-5) # 5
268
- пусть y = Math.max(10, 20) # 20
269
- пусть z = Math.sqrt(16) # 4
270
- пусть pi = Math.PI # 3.14159...
271
- ```
272
-
273
- ### String (Cadeias de Texto)
274
-
275
- ```trest
276
- импорт * как String измодуля "std/string"
277
-
278
- пусть текст = "Привет Мир"
279
- пусть размер = String.размер(текст) # 11
280
- пусть верхний = String.верхний(текст) # "ПРИВЕТ МИР"
281
- ```
282
-
283
- ### Array (Arrays)
284
-
285
- ```trest
286
- импорт * как Array измодуля "std/array"
287
-
288
- пусть arr = [1, 2, 3]
289
- Array.добавить(arr, 4) # [1, 2, 3, 4]
290
- пусть обратный = Array.обратить(arr) # [4, 3, 2, 1]
291
- пусть отсортированный = Array.отсортировать([3, 1, 2]) # [1, 2, 3]
292
- ```
293
-
294
- ### HTTP (Client e Server)
295
-
296
- ```trest
297
- импорт * как HTTP измодуля "std/http"
298
-
299
- пусть resposta = HTTP.GET("https://api.example.com")
300
- HTTP.POST("https://api.example.com", данные)
301
- HTTP.создатьСервер(3000, обработчик)
302
- ```
303
-
304
- ### Crypto (Criptografia)
305
-
306
- ```trest
307
- импорт * как Crypto измодуля "std/crypto"
308
-
309
- пусть hash = Crypto.md5("текст")
310
- пусть sha = Crypto.sha256("данные")
311
- пусть encrypted = Crypto.зашифровать("секрет", "ключ")
312
- ```
313
-
314
- ### FileSystem (Sistema de Arquivos)
315
-
316
- ```trest
317
- импорт * как FS измодуля "std/filesystem"
318
-
319
- пусть содержимое = FS.читатьФайл("файл.txt")
320
- FS.писатьФайл("выход.txt", "Содержимое")
321
- пусть существует = FS.существуетФайл("файл.txt")
322
- ```
323
-
324
- ### JSON (Manipulação de JSON)
325
-
326
- ```trest
327
- импорт * как JSON измодуля "std/json"
328
-
329
- пусть obj = JSON.парсить('{"имя": "Иван"}')
330
- пусть str = JSON.строка({имя: "Иван"})
331
- ```
332
-
333
- ### Date (Datas)
334
-
335
- ```trest
336
- импорт * как Date измодуля "std/date"
337
-
338
- пусть agora = Date.сейчас()
339
- пусть formatado = Date.форматировать(agora, "YYYY-MM-DD")
340
- ```
341
-
342
- ### Database (Base de Dados)
343
-
344
- ```trest
345
- импорт * как DB измодуля "std/database"
346
-
347
- DB.подключить("sqlite", "dados.db")
348
- DB.выполнить("SELECT * FROM usuarios")
349
- ```
350
-
351
- ### RegEx (Expressões Regulares)
352
-
353
- ```trest
354
- импорт * как RegEx измодуля "std/regex"
355
-
356
- пусть matches = RegEx.найти("olá mundo", /olá/)
357
- пусть replaced = RegEx.заменить("olá", /olá/, "привет")
358
- ```
359
-
360
- ### Path (Caminhos de Arquivo)
361
-
362
- ```trest
363
- импорт * как Path измодуля "std/path"
364
-
365
- пусть dir = Path.директория("/caminho/arquivo.txt") # "/caminho"
366
- пусть name = Path.имя("arquivo.txt") # "arquivo.txt"
367
- ```
368
-
369
- ### Process (Variáveis de Ambiente)
370
-
371
- ```trest
372
- импорт * как Process измодуля "std/process"
373
-
374
- пусть user = Process.получитьEnv("USER")
375
- пусть envs = Process.получитьEnvVars()
376
- ```
377
-
378
- ## 🏗️ Estrutura do Projeto
379
-
380
- ```
381
- treste/
382
- ├── src/
383
- │ ├── lexer.ts # Analisador léxico
384
- │ ├── parser.ts # Analisador sintático
385
- │ ├── ast.ts # Definições AST
386
- │ ├── interpreter.ts # Interpretador
387
- │ ├── compiler.ts # CLI do compilador
388
- │ ├── compiler/
389
- │ │ ├── web.ts # Compilador para Web
390
- │ └── exe.ts # Compilador para executável
391
- │ ├── std/ # Biblioteca padrão
392
- │ │ ├── math.trest
393
- │ │ ├── string.trest
394
- │ │ ├── array.trest
395
- │ │ ├── http.trest
396
- │ │ ├── crypto.trest
397
- │ │ ├── filesystem.trest
398
- │ │ ├── json.trest
399
- │ │ ├── date.trest
400
- │ │ ├── database.trest
401
- │ │ ├── regex.trest
402
- │ │ ├── path.trest
403
- │ │ ├── process.trest
404
- │ └── io.trest
405
- │ ├── types.ts # Sistema de tipos
406
- ├── errors.ts # Tratamento de erros
407
- │ └── module.ts # Sistema de módulos
408
- ├── exemplos/ # Exemplos de programas
409
- ├── DOCUMENTACAO_COMPLETA.md # Documentação completa unificada
410
- ├── dist/ # Código compilado
411
- └── package.json
412
- ```
413
-
414
- ## 🔧 Scripts Disponíveis
415
-
416
- ```bash
417
- npm run build # Compilar TypeScript
418
- npm run build:watch # Compilar em modo watch
419
- npm start <arquivo> # Executar arquivo Trest
420
- npm run compile:web # Compilar para JavaScript
421
- npm run compile:exe # Compilar para executável
422
- npm run bundle # Criar bundle executável
423
- ```
424
-
425
- ## 📝 Palavras-Chave
426
-
427
- ### Cirílico (Russo) - Sintaxe Principal
428
-
429
- | Trest | Equivalente |
430
- |-------|-------------|
431
- | `если` | if |
432
- | `иначе` | else |
433
- | `пока` | while |
434
- | `для` | for |
435
- | `функция` | function |
436
- | `вернуть` | return |
437
- | `перем`, `пусть`, `конст` | var, let, const |
438
- | `печать` | print/console.log |
439
- | `импорт` | import |
440
- | `экспорт` | export |
441
- | `измодуля` | from |
442
- | `попытаться` | try |
443
- | `перехватить` | catch |
444
- | `бросить` | throw |
445
- | `наконец` | finally |
446
- | `прервать` | break |
447
- | `продолжить` | continue |
448
- | `истина` | true |
449
- | `ложь` | false |
450
-
451
- > **Nota:** Embora Trest suporte palavras-chave em latino, o uso de cirílico é a forma recomendada e nativa da linguagem.
452
-
453
- ## 🌐 Compilação para Web
454
-
455
- O compilador para web gera JavaScript moderno que pode ser usado em:
456
- - Navegadores (via `<script>` ou bundler)
457
- - Node.js
458
- - React/Vue/Angular
459
- - Qualquer ambiente JavaScript
460
-
461
- **Exemplo:**
462
- ```bash
463
- trestc программа.trest --mode web --output app.js
464
- ```
465
-
466
- ## 💻 Compilação para Executável
467
-
468
- O compilador para executável cria arquivo `.exe` que:
469
- - Não requer Node.js instalado
470
- - É autossuficiente (inclui todas as dependências)
471
- - Executa diretamente no Windows
472
-
473
- **Exemplo:**
474
- ```bash
475
- trestc программа.trest --mode exe --output app.exe
476
- ```
477
-
478
- ## 🎓 Exemplos
479
-
480
- Veja a pasta `exemplos/` para programas completos demonstrando:
481
- - Operações básicas
482
- - Funções e closures
483
- - Estruturas de controle
484
- - Arrays e objetos
485
- - Módulos e imports
486
- - Tratamento de erros
487
-
488
- **Exemplos em cirílico:**
489
- - `exemplos/crypto_demo.trest` - Demonstração de criptografia
490
- - `exemplos/http_demo.trest` - Cliente HTTP e servidor
491
- - `exemplos/database_demo.trest` - Operações de banco de dados
492
- - `exemplos/filesystem_demo.trest` - Operações de arquivo
493
- - `exemplos/todas_funcionalidades.trest` - Exemplo completo
494
-
495
- ## ☕ Support the development of Trest!
496
-
497
- Trest is a modern programming language with Cyrillic support,
498
- designed to compile for both Web and Desktop platforms. Your donation helps keep the project active and enables the development of new features.
499
-
500
- Thank you for supporting open source development!
501
-
502
- [![Liberapay](https://img.shields.io/liberapay/receives/poktweb.svg?logo=liberapay)](https://liberapay.com/poktweb/donate) - [Support via Liberapay](https://liberapay.com/poktweb/donate)
503
-
504
- ---
505
-
506
- ## 🔒 Segurança
507
-
508
- **Versão 2.5.4** mantém todas as correções de segurança da cadeia de suprimentos:
509
- - ✅ Scripts de instalação removidos
510
- - Sem acesso ao shell durante instalação
511
- - ✅ Acesso à rede controlado e documentado
512
-
513
- **Documentação de Segurança:**
514
- Consulte a seção de [Segurança](./DOCUMENTACAO_COMPLETA.md#segurança) na documentação completa.
515
-
516
- ## 📚 Documentação Completa
517
-
518
- Para mais informações, consulte a documentação completa:
519
-
520
- - **[DOCUMENTACAO_COMPLETA.md](./DOCUMENTACAO_COMPLETA.md)** - Documentação completa unificada (inclui guia, referência da API, exemplos e arquitetura)
521
-
522
- Ou visite o site oficial: [https://trest-site.vercel.app](https://trest-site.vercel.app)
523
-
524
- ## 📄 Licença
525
-
526
- MIT
527
-
528
- ## 👤 Autor
529
-
530
- **PoktWeb**
531
-
532
- - Site de documentação: [https://trest-site.vercel.app](https://trest-site.vercel.app)
533
-
534
- ## 🤝 Contribuições
535
-
536
- Contribuições são bem-vindas! Sinta-se à vontade para abrir issues e pull requests.
1
+ # Trest - Linguagem de Programação com Suporte a Cirílico
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
+
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).
9
+
10
+ > **🎯 Característica Única:** Trest permite programar usando palavras-chave em cirílico ou latino, mantendo a mesma sintaxe e funcionalidades.
11
+
12
+ > **🔒 Segurança:** Versão 2.5.5 mantém todas as correções de segurança da cadeia de suprimentos. Veja [DOCUMENTACAO_COMPLETA.md](./DOCUMENTACAO_COMPLETA.md#segurança) para detalhes.
13
+
14
+ > **🚀 Deploy na Vercel:** Versão 2.5.5 inclui suporte completo para deploy na Vercel! Use `npm create trest` para criar projetos otimizados para serverless functions.
15
+
16
+ > **🌐 Full Stack Revolution:** Versão 2.5.5 adiciona manipulação de DOM, CSS e interoperabilidade com NPM! Trest agora é uma linguagem completa para Web e Desktop.
17
+
18
+ ## 🚀 Principais Funcionalidades
19
+
20
+ - ✅ **Execução Inline** - Execute código direto na linha de comando com `-e`
21
+ - ✅ **Compilação para Web** - Gera JavaScript otimizado
22
+ - ✅ **Compilação para Desktop** - Cria executáveis .exe nativos
23
+ - ✅ **Deploy na Vercel** - Crie projetos otimizados para serverless functions
24
+ - ✅ **Manipulação de DOM** - Módulo std/dom para interação com páginas web
25
+ - ✅ **Sistema de CSS** - Módulo std/style para estilização e carregamento de CSS
26
+ - ✅ **Interoperabilidade NPM** - Importe qualquer pacote do ecossistema Node.js
27
+ - ✅ **Framework de Testes** - Módulo std/test para testes unitários
28
+ - ✅ **Sistema de Módulos** - Import/Export de módulos
29
+ - ✅ **Biblioteca Padrão** - std com funções matemáticas, strings, arrays e I/O
30
+ - ✅ **Tratamento de Erros** - Try/Catch/Throw estendido
31
+ - ✅ **Sintaxe em Cirílico** - Palavras-chave em russo
32
+ - ✅ **Tipagem Dinâmica** - Tipos inferidos automaticamente
33
+ - ✅ **Sistema de Build** - Ferramentas de compilação profissionais
34
+
35
+ ## 📦 Instalação
36
+
37
+ ### Instalação via npm (recomendado)
38
+
39
+ **Instalação global:**
40
+ ```bash
41
+ npm install -g treste
42
+ ```
43
+
44
+ Após a instalação, os comandos `trest` e `trestc` estarão disponíveis globalmente:
45
+ ```bash
46
+ trest --version
47
+ trestc --help
48
+ ```
49
+
50
+ **Instalação local em projeto:**
51
+ ```bash
52
+ npm install treste
53
+ ```
54
+
55
+ Use via `npx`:
56
+ ```bash
57
+ npx trest programa.trest
58
+ npx trestc programa.trest --mode web
59
+ ```
60
+
61
+ ### Instalação a partir do código-fonte
62
+
63
+ Se você quiser instalar a partir do código-fonte ou fazer modificações:
64
+
65
+ ```bash
66
+ # Baixar o código-fonte
67
+ cd treste
68
+
69
+ # Instalar dependências
70
+ npm install
71
+
72
+ # Compilar o projeto
73
+ npm run build
74
+
75
+ # (Opcional) Criar links globais para testes
76
+ npm link
77
+ ```
78
+
79
+ ### Requisitos
80
+
81
+ - **Node.js**: >= 18.0.0
82
+ - **npm**: >= 9.0.0
83
+ - **TypeScript**: 5.0+ (para desenvolvimento)
84
+
85
+ Verifique sua versão:
86
+ ```bash
87
+ node --version # deve ser >= v18
88
+ npm --version # deve ser >= 9
89
+ ```
90
+
91
+ ## 🎯 Guia Rápido
92
+
93
+ ### Criar novo projeto (Vercel-ready)
94
+ ```bash
95
+ # Opção 1: Usando npx (Recomendado)
96
+ npx create-trest-app meu-projeto
97
+
98
+ # Opção 2: Usando npx com alias
99
+ npx create-trest meu-projeto
100
+
101
+ # Opção 3: Se já tiver instalado globalmente
102
+ npm install -g treste@latest
103
+ create-trest-app meu-projeto
104
+ ```
105
+
106
+ **Nota:** O comando `npm create trest` requer um pacote separado `create-trest` no npm. Use `npx create-trest-app` que funciona imediatamente.
107
+
108
+ ### Executar código inline (sem arquivo)
109
+ ```bash
110
+ trest -e "печать('Olá, Mundo!')"
111
+ trest -e "пусть x = 10; печать(x)"
112
+ ```
113
+
114
+ ### Executar arquivo (interpretador)
115
+ ```bash
116
+ trest exemplos/hello_cyrillic.trest
117
+ ```
118
+
119
+ ### Compilar para Web (JavaScript)
120
+ ```bash
121
+ npm run compile:web -- exemplos/hello_cyrillic.trest
122
+ # ou
123
+ trestc exemplos/hello_cyrillic.trest --mode web --output app.js
124
+ ```
125
+
126
+ ### Compilar para executável (.exe)
127
+ ```bash
128
+ npm run compile:exe -- exemplos/hello_cyrillic.trest
129
+ # ou
130
+ trestc exemplos/hello_cyrillic.trest --mode exe --output app.exe
131
+ ```
132
+
133
+ ## 📚 Sintaxe da Linguagem
134
+
135
+ Todos os exemplos abaixo usam a sintaxe em **cirílico** (palavras-chave em russo), que é a forma nativa do Trest:
136
+
137
+ ### Variáveis
138
+
139
+ ```trest
140
+ перем имя = "Trest"
141
+ пусть возраст = 25
142
+ конст pi = 3.14159
143
+ ```
144
+
145
+ ### Funções
146
+
147
+ ```trest
148
+ функция сложить(a, b) {
149
+ вернуть a + b
150
+ }
151
+
152
+ пусть результат = сложить(5, 3)
153
+ печать(результат)
154
+ ```
155
+
156
+ ### Condicionais
157
+
158
+ ```trest
159
+ если (возраст >= 18) {
160
+ печать("Совершеннолетний")
161
+ } иначе {
162
+ печать("Несовершеннолетний")
163
+ }
164
+ ```
165
+
166
+ ### Operadores Ternários
167
+
168
+ ```trest
169
+ пусть result = возраст >= 18 ? "Adulto" : "Menor"
170
+ печать(result)
171
+ ```
172
+
173
+ ### Switch/Case
174
+
175
+ ```trest
176
+ переключатель (день) {
177
+ случай 1:
178
+ печать("Понедельник")
179
+ прервать
180
+ случай 2:
181
+ печать("Вторник")
182
+ прервать
183
+ поумолчанию:
184
+ печать("Другой день")
185
+ }
186
+ ```
187
+
188
+ ### Loops
189
+
190
+ **While (Enquanto):**
191
+ ```trest
192
+ пусть i = 0
193
+ пока (i < 10) {
194
+ печать(i)
195
+ i = i + 1
196
+ }
197
+ ```
198
+
199
+ **For (Para):**
200
+ ```trest
201
+ для (пусть i = 0; i < 10; i = i + 1) {
202
+ печать(i)
203
+ }
204
+ ```
205
+
206
+ ### Tratamento de Erros
207
+
208
+ ```trest
209
+ попытаться {
210
+ пусть результат = разделить(10, 0)
211
+ } перехватить (ошибка) {
212
+ печать("Ошибка:", ошибка)
213
+ } наконец {
214
+ печать("Операция завершена")
215
+ }
216
+ ```
217
+
218
+ ### Módulos
219
+
220
+ **Import (Importar):**
221
+ ```trest
222
+ импорт { max, min } измодуля "std/math"
223
+ импорт * как Math измодуля "std/math"
224
+ ```
225
+
226
+ **Export (Exportar):**
227
+ ```trest
228
+ экспорт функция мояФункция() {
229
+ вернуть "Привет"
230
+ }
231
+
232
+ экспорт конст константа = 42
233
+ ```
234
+
235
+ ### Objetos
236
+
237
+ ```trest
238
+ пусть человек = {
239
+ имя: "Иван",
240
+ возраст: 30,
241
+ город: "Москва"
242
+ }
243
+
244
+ печать(человек.имя) # "Иван"
245
+ ```
246
+
247
+ ### Arrays
248
+
249
+ ```trest
250
+ пусть числа = [1, 2, 3, 4, 5]
251
+ печать(числа[0]) # 1
252
+
253
+ числа[0] = 10
254
+ печать(числа) # [10, 2, 3, 4, 5]
255
+ ```
256
+
257
+ ## 📖 Biblioteca Padrão (std)
258
+
259
+ Trest inclui uma biblioteca padrão rica com 11 módulos:
260
+
261
+ ### Math (Matemática)
262
+
263
+ ```trest
264
+ импорт * как Math измодуля "std/math"
265
+
266
+ пусть x = Math.abs(-5) # 5
267
+ пусть y = Math.max(10, 20) # 20
268
+ пусть z = Math.sqrt(16) # 4
269
+ пусть pi = Math.PI # 3.14159...
270
+ ```
271
+
272
+ ### String (Cadeias de Texto)
273
+
274
+ ```trest
275
+ импорт * как String измодуля "std/string"
276
+
277
+ пусть текст = "Привет Мир"
278
+ пусть размер = String.размер(текст) # 11
279
+ пусть верхний = String.верхний(текст) # "ПРИВЕТ МИР"
280
+ ```
281
+
282
+ ### Array (Arrays)
283
+
284
+ ```trest
285
+ импорт * как Array измодуля "std/array"
286
+
287
+ пусть arr = [1, 2, 3]
288
+ Array.добавить(arr, 4) # [1, 2, 3, 4]
289
+ пусть обратный = Array.обратить(arr) # [4, 3, 2, 1]
290
+ пусть отсортированный = Array.отсортировать([3, 1, 2]) # [1, 2, 3]
291
+ ```
292
+
293
+ ### HTTP (Client e Server)
294
+
295
+ ```trest
296
+ импорт * как HTTP измодуля "std/http"
297
+
298
+ пусть resposta = HTTP.GET("https://api.example.com")
299
+ HTTP.POST("https://api.example.com", данные)
300
+ HTTP.создатьСервер(3000, обработчик)
301
+ ```
302
+
303
+ ### Crypto (Criptografia)
304
+
305
+ ```trest
306
+ импорт * как Crypto измодуля "std/crypto"
307
+
308
+ пусть hash = Crypto.md5("текст")
309
+ пусть sha = Crypto.sha256("данные")
310
+ пусть encrypted = Crypto.зашифровать("секрет", "ключ")
311
+ ```
312
+
313
+ ### FileSystem (Sistema de Arquivos)
314
+
315
+ ```trest
316
+ импорт * как FS измодуля "std/filesystem"
317
+
318
+ пусть содержимое = FS.читатьФайл("файл.txt")
319
+ FS.писатьФайл("выход.txt", "Содержимое")
320
+ пусть существует = FS.существуетФайл("файл.txt")
321
+ ```
322
+
323
+ ### JSON (Manipulação de JSON)
324
+
325
+ ```trest
326
+ импорт * как JSON измодуля "std/json"
327
+
328
+ пусть obj = JSON.парсить('{"имя": "Иван"}')
329
+ пусть str = JSON.строка({имя: "Иван"})
330
+ ```
331
+
332
+ ### Date (Datas)
333
+
334
+ ```trest
335
+ импорт * как Date измодуля "std/date"
336
+
337
+ пусть agora = Date.сейчас()
338
+ пусть formatado = Date.форматировать(agora, "YYYY-MM-DD")
339
+ ```
340
+
341
+ ### Database (Base de Dados)
342
+
343
+ ```trest
344
+ импорт * как DB измодуля "std/database"
345
+
346
+ DB.подключить("sqlite", "dados.db")
347
+ DB.выполнить("SELECT * FROM usuarios")
348
+ ```
349
+
350
+ ### RegEx (Expressões Regulares)
351
+
352
+ ```trest
353
+ импорт * как RegEx измодуля "std/regex"
354
+
355
+ пусть matches = RegEx.найти("olá mundo", /olá/)
356
+ пусть replaced = RegEx.заменить("olá", /olá/, "привет")
357
+ ```
358
+
359
+ ### Path (Caminhos de Arquivo)
360
+
361
+ ```trest
362
+ импорт * как Path измодуля "std/path"
363
+
364
+ пусть dir = Path.директория("/caminho/arquivo.txt") # "/caminho"
365
+ пусть name = Path.имя("arquivo.txt") # "arquivo.txt"
366
+ ```
367
+
368
+ ### Process (Variáveis de Ambiente)
369
+
370
+ ```trest
371
+ импорт * как Process измодуля "std/process"
372
+
373
+ пусть user = Process.получитьEnv("USER")
374
+ пусть envs = Process.получитьEnvVars()
375
+ ```
376
+
377
+ ## 🏗️ Estrutura do Projeto
378
+
379
+ ```
380
+ treste/
381
+ ├── src/
382
+ ├── lexer.ts # Analisador léxico
383
+ │ ├── parser.ts # Analisador sintático
384
+ │ ├── ast.ts # Definições AST
385
+ │ ├── interpreter.ts # Interpretador
386
+ │ ├── compiler.ts # CLI do compilador
387
+ │ ├── compiler/
388
+ ├── web.ts # Compilador para Web
389
+ │ │ └── exe.ts # Compilador para executável
390
+ ├── std/ # Biblioteca padrão
391
+ ├── math.trest
392
+ │ │ ├── string.trest
393
+ │ │ ├── array.trest
394
+ │ │ ├── http.trest
395
+ │ │ ├── crypto.trest
396
+ │ │ ├── filesystem.trest
397
+ │ │ ├── json.trest
398
+ │ │ ├── date.trest
399
+ │ │ ├── database.trest
400
+ │ │ ├── regex.trest
401
+ │ │ ├── path.trest
402
+ │ │ ├── process.trest
403
+ │ │ └── io.trest
404
+ ├── types.ts # Sistema de tipos
405
+ │ ├── errors.ts # Tratamento de erros
406
+ └── module.ts # Sistema de módulos
407
+ ├── exemplos/ # Exemplos de programas
408
+ ├── DOCUMENTACAO_COMPLETA.md # Documentação completa unificada
409
+ ├── dist/ # Código compilado
410
+ └── package.json
411
+ ```
412
+
413
+ ## 🔧 Scripts Disponíveis
414
+
415
+ ```bash
416
+ npm run build # Compilar TypeScript
417
+ npm run build:watch # Compilar em modo watch
418
+ npm start <arquivo> # Executar arquivo Trest
419
+ npm run compile:web # Compilar para JavaScript
420
+ npm run compile:exe # Compilar para executável
421
+ npm run bundle # Criar bundle executável
422
+ ```
423
+
424
+ ## 📝 Palavras-Chave
425
+
426
+ ### Cirílico (Russo) - Sintaxe Principal
427
+
428
+ | Trest | Equivalente |
429
+ |-------|-------------|
430
+ | `если` | if |
431
+ | `иначе` | else |
432
+ | `пока` | while |
433
+ | `для` | for |
434
+ | `функция` | function |
435
+ | `вернуть` | return |
436
+ | `перем`, `пусть`, `конст` | var, let, const |
437
+ | `печать` | print/console.log |
438
+ | `импорт` | import |
439
+ | `экспорт` | export |
440
+ | `измодуля` | from |
441
+ | `попытаться` | try |
442
+ | `перехватить` | catch |
443
+ | `бросить` | throw |
444
+ | `наконец` | finally |
445
+ | `прервать` | break |
446
+ | `продолжить` | continue |
447
+ | `истина` | true |
448
+ | `ложь` | false |
449
+
450
+ > **Nota:** Embora Trest suporte palavras-chave em latino, o uso de cirílico é a forma recomendada e nativa da linguagem.
451
+
452
+ ## 🌐 Compilação para Web
453
+
454
+ O compilador para web gera JavaScript moderno que pode ser usado em:
455
+ - Navegadores (via `<script>` ou bundler)
456
+ - Node.js
457
+ - React/Vue/Angular
458
+ - Qualquer ambiente JavaScript
459
+
460
+ **Exemplo:**
461
+ ```bash
462
+ trestc программа.trest --mode web --output app.js
463
+ ```
464
+
465
+ ## 💻 Compilação para Executável
466
+
467
+ O compilador para executável cria arquivo `.exe` que:
468
+ - Não requer Node.js instalado
469
+ - É autossuficiente (inclui todas as dependências)
470
+ - Executa diretamente no Windows
471
+
472
+ **Exemplo:**
473
+ ```bash
474
+ trestc программа.trest --mode exe --output app.exe
475
+ ```
476
+
477
+ ## 🎓 Exemplos
478
+
479
+ Veja a pasta `exemplos/` para programas completos demonstrando:
480
+ - Operações básicas
481
+ - Funções e closures
482
+ - Estruturas de controle
483
+ - Arrays e objetos
484
+ - Módulos e imports
485
+ - Tratamento de erros
486
+
487
+ **Exemplos em cirílico:**
488
+ - `exemplos/crypto_demo.trest` - Demonstração de criptografia
489
+ - `exemplos/http_demo.trest` - Cliente HTTP e servidor
490
+ - `exemplos/database_demo.trest` - Operações de banco de dados
491
+ - `exemplos/filesystem_demo.trest` - Operações de arquivo
492
+ - `exemplos/todas_funcionalidades.trest` - Exemplo completo
493
+
494
+ ## 🔒 Segurança
495
+
496
+ **Versão 2.5.5** mantém todas as correções de segurança da cadeia de suprimentos:
497
+ - Scripts de instalação removidos
498
+ - Sem acesso ao shell durante instalação
499
+ - ✅ Acesso à rede controlado e documentado
500
+
501
+ **Documentação de Segurança:**
502
+ Consulte a seção de [Segurança](./DOCUMENTACAO_COMPLETA.md#segurança) na documentação completa.
503
+
504
+ ## 📚 Documentação Completa
505
+
506
+ Para mais informações, consulte a documentação completa:
507
+
508
+ - **[DOCUMENTACAO_COMPLETA.md](./DOCUMENTACAO_COMPLETA.md)** - Documentação completa unificada (inclui guia, referência da API, exemplos e arquitetura)
509
+
510
+ Ou visite o site oficial: [https://trest-site.vercel.app](https://trest-site.vercel.app)
511
+
512
+ ## 📄 Licença
513
+
514
+ MIT
515
+
516
+ ## 👤 Autor
517
+
518
+ **PoktWeb**
519
+
520
+ - Site de documentação: [https://trest-site.vercel.app](https://trest-site.vercel.app)
521
+
522
+ ## 🤝 Contribuições
523
+
524
+ Contribuições são bem-vindas! Sinta-se à vontade para abrir issues e pull requests.