treste 2.5.3 → 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,524 +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
-
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.3 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.3 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.3 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.3** 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.
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.