treste 2.3.0 → 2.3.2
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 +2 -2
- package/README.md +224 -150
- package/dist/cli.js +39 -7
- package/dist/cli.js.map +1 -1
- package/package.json +1 -3
- package/CHANGELOG.md +0 -89
- package/README_PT.md +0 -261
package/INSTALL.md
CHANGED
|
@@ -24,7 +24,7 @@ Se você não tem o Node.js instalado, baixe em: https://nodejs.org/
|
|
|
24
24
|
Instale o Trest globalmente para ter acesso aos comandos `trest` e `trestc` em qualquer lugar:
|
|
25
25
|
|
|
26
26
|
```bash
|
|
27
|
-
npm install -g
|
|
27
|
+
npm install -g treste
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
**Verifique a instalação:**
|
|
@@ -44,7 +44,7 @@ trestc arquivo.trest --mode web
|
|
|
44
44
|
Para usar o Trest apenas em um projeto específico:
|
|
45
45
|
|
|
46
46
|
```bash
|
|
47
|
-
npm install
|
|
47
|
+
npm install treste
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
**Uso via npx:**
|
package/README.md
CHANGED
|
@@ -1,103 +1,105 @@
|
|
|
1
|
-
# Trest -
|
|
1
|
+
# Trest - Linguagem de Programação com Suporte a Cirílico
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
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
4
|
|
|
5
|
-
>
|
|
5
|
+
> **🎯 Característica Única:** Trest permite programar usando palavras-chave em cirílico ou latino, mantendo a mesma sintaxe e funcionalidades.
|
|
6
6
|
|
|
7
|
-
## 🚀
|
|
7
|
+
## 🚀 Principais Funcionalidades
|
|
8
8
|
|
|
9
|
-
- ✅
|
|
10
|
-
- ✅
|
|
11
|
-
- ✅
|
|
12
|
-
- ✅
|
|
13
|
-
- ✅
|
|
14
|
-
- ✅
|
|
15
|
-
- ✅
|
|
16
|
-
- ✅
|
|
9
|
+
- ✅ **Compilação para Web** - Gera JavaScript otimizado
|
|
10
|
+
- ✅ **Compilação para Desktop** - Cria executáveis .exe nativos
|
|
11
|
+
- ✅ **Sistema de Módulos** - Import/Export de módulos
|
|
12
|
+
- ✅ **Biblioteca Padrão** - std com funções matemáticas, strings, arrays e I/O
|
|
13
|
+
- ✅ **Tratamento de Erros** - Try/Catch/Throw estendido
|
|
14
|
+
- ✅ **Sintaxe em Cirílico** - Palavras-chave em russo
|
|
15
|
+
- ✅ **Tipagem Dinâmica** - Tipos inferidos automaticamente
|
|
16
|
+
- ✅ **Sistema de Build** - Ferramentas de compilação profissionais
|
|
17
17
|
|
|
18
|
-
## 📦
|
|
18
|
+
## 📦 Instalação
|
|
19
19
|
|
|
20
|
-
###
|
|
20
|
+
### Instalação via npm (recomendado)
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
**Instalação global:**
|
|
23
23
|
```bash
|
|
24
|
-
npm install -g
|
|
24
|
+
npm install -g treste
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
Após a instalação, os comandos `trest` e `trestc` estarão disponíveis globalmente:
|
|
28
28
|
```bash
|
|
29
29
|
trest --version
|
|
30
30
|
trestc --help
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
**Instalação local em projeto:**
|
|
34
34
|
```bash
|
|
35
|
-
npm install
|
|
35
|
+
npm install treste
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
Use via `npx`:
|
|
39
39
|
```bash
|
|
40
40
|
npx trest programa.trest
|
|
41
41
|
npx trestc programa.trest --mode web
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
-
###
|
|
44
|
+
### Instalação a partir do código-fonte
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
Se você quiser instalar a partir do código-fonte ou fazer modificações:
|
|
47
47
|
|
|
48
48
|
```bash
|
|
49
|
-
#
|
|
49
|
+
# Clonar o repositório
|
|
50
50
|
git clone https://github.com/trest-language/trest.git
|
|
51
51
|
cd trest
|
|
52
52
|
|
|
53
|
-
#
|
|
53
|
+
# Instalar dependências
|
|
54
54
|
npm install
|
|
55
55
|
|
|
56
|
-
#
|
|
56
|
+
# Compilar o projeto
|
|
57
57
|
npm run build
|
|
58
58
|
|
|
59
|
-
# (
|
|
59
|
+
# (Opcional) Criar links globais para testes
|
|
60
60
|
npm link
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
###
|
|
63
|
+
### Requisitos
|
|
64
64
|
|
|
65
65
|
- **Node.js**: >= 18.0.0
|
|
66
66
|
- **npm**: >= 9.0.0
|
|
67
|
-
- **TypeScript**: 5.0+ (
|
|
67
|
+
- **TypeScript**: 5.0+ (para desenvolvimento)
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
Verifique sua versão:
|
|
70
70
|
```bash
|
|
71
|
-
node --version #
|
|
72
|
-
npm --version #
|
|
71
|
+
node --version # deve ser >= v18
|
|
72
|
+
npm --version # deve ser >= 9
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
-
## 🎯
|
|
75
|
+
## 🎯 Guia Rápido
|
|
76
76
|
|
|
77
|
-
###
|
|
77
|
+
### Executar diretamente (interpretador)
|
|
78
78
|
```bash
|
|
79
79
|
npm start exemplos/hello_cyrillic.trest
|
|
80
|
-
#
|
|
80
|
+
# ou
|
|
81
81
|
trest exemplos/hello_cyrillic.trest
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
-
###
|
|
84
|
+
### Compilar para Web (JavaScript)
|
|
85
85
|
```bash
|
|
86
86
|
npm run compile:web -- exemplos/hello_cyrillic.trest
|
|
87
|
-
#
|
|
87
|
+
# ou
|
|
88
88
|
trestc exemplos/hello_cyrillic.trest --mode web --output app.js
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
-
###
|
|
91
|
+
### Compilar para executável (.exe)
|
|
92
92
|
```bash
|
|
93
93
|
npm run compile:exe -- exemplos/hello_cyrillic.trest
|
|
94
|
-
#
|
|
94
|
+
# ou
|
|
95
95
|
trestc exemplos/hello_cyrillic.trest --mode exe --output app.exe
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
-
## 📚
|
|
98
|
+
## 📚 Sintaxe da Linguagem
|
|
99
99
|
|
|
100
|
-
|
|
100
|
+
Todos os exemplos abaixo usam a sintaxe em **cirílico** (palavras-chave em russo), que é a forma nativa do Trest:
|
|
101
|
+
|
|
102
|
+
### Variáveis
|
|
101
103
|
|
|
102
104
|
```trest
|
|
103
105
|
перем имя = "Trest"
|
|
@@ -105,7 +107,7 @@ trestc exemplos/hello_cyrillic.trest --mode exe --output app.exe
|
|
|
105
107
|
конст pi = 3.14159
|
|
106
108
|
```
|
|
107
109
|
|
|
108
|
-
###
|
|
110
|
+
### Funções
|
|
109
111
|
|
|
110
112
|
```trest
|
|
111
113
|
функция сложить(a, b) {
|
|
@@ -116,7 +118,7 @@ trestc exemplos/hello_cyrillic.trest --mode exe --output app.exe
|
|
|
116
118
|
печать(результат)
|
|
117
119
|
```
|
|
118
120
|
|
|
119
|
-
###
|
|
121
|
+
### Condicionais
|
|
120
122
|
|
|
121
123
|
```trest
|
|
122
124
|
если (возраст >= 18) {
|
|
@@ -126,9 +128,9 @@ trestc exemplos/hello_cyrillic.trest --mode exe --output app.exe
|
|
|
126
128
|
}
|
|
127
129
|
```
|
|
128
130
|
|
|
129
|
-
###
|
|
131
|
+
### Loops
|
|
130
132
|
|
|
131
|
-
|
|
133
|
+
**While (Enquanto):**
|
|
132
134
|
```trest
|
|
133
135
|
пусть i = 0
|
|
134
136
|
пока (i < 10) {
|
|
@@ -137,14 +139,14 @@ trestc exemplos/hello_cyrillic.trest --mode exe --output app.exe
|
|
|
137
139
|
}
|
|
138
140
|
```
|
|
139
141
|
|
|
140
|
-
|
|
142
|
+
**For (Para):**
|
|
141
143
|
```trest
|
|
142
144
|
для (пусть i = 0; i < 10; i = i + 1) {
|
|
143
145
|
печать(i)
|
|
144
146
|
}
|
|
145
147
|
```
|
|
146
148
|
|
|
147
|
-
###
|
|
149
|
+
### Tratamento de Erros
|
|
148
150
|
|
|
149
151
|
```trest
|
|
150
152
|
попытаться {
|
|
@@ -156,15 +158,15 @@ trestc exemplos/hello_cyrillic.trest --mode exe --output app.exe
|
|
|
156
158
|
}
|
|
157
159
|
```
|
|
158
160
|
|
|
159
|
-
###
|
|
161
|
+
### Módulos
|
|
160
162
|
|
|
161
|
-
|
|
163
|
+
**Import (Importar):**
|
|
162
164
|
```trest
|
|
163
|
-
импорт { max, min }
|
|
164
|
-
импорт * как Math
|
|
165
|
+
импорт { max, min } измодуля "std/math"
|
|
166
|
+
импорт * как Math измодуля "std/math"
|
|
165
167
|
```
|
|
166
168
|
|
|
167
|
-
|
|
169
|
+
**Export (Exportar):**
|
|
168
170
|
```trest
|
|
169
171
|
экспорт функция мояФункция() {
|
|
170
172
|
вернуть "Привет"
|
|
@@ -173,7 +175,7 @@ trestc exemplos/hello_cyrillic.trest --mode exe --output app.exe
|
|
|
173
175
|
экспорт конст константа = 42
|
|
174
176
|
```
|
|
175
177
|
|
|
176
|
-
###
|
|
178
|
+
### Objetos
|
|
177
179
|
|
|
178
180
|
```trest
|
|
179
181
|
пусть человек = {
|
|
@@ -185,7 +187,7 @@ trestc exemplos/hello_cyrillic.trest --mode exe --output app.exe
|
|
|
185
187
|
печать(человек.имя) # "Иван"
|
|
186
188
|
```
|
|
187
189
|
|
|
188
|
-
###
|
|
190
|
+
### Arrays
|
|
189
191
|
|
|
190
192
|
```trest
|
|
191
193
|
пусть числа = [1, 2, 3, 4, 5]
|
|
@@ -195,12 +197,14 @@ trestc exemplos/hello_cyrillic.trest --mode exe --output app.exe
|
|
|
195
197
|
печать(числа) # [10, 2, 3, 4, 5]
|
|
196
198
|
```
|
|
197
199
|
|
|
198
|
-
## 📖
|
|
200
|
+
## 📖 Biblioteca Padrão (std)
|
|
201
|
+
|
|
202
|
+
Trest inclui uma biblioteca padrão rica com 11 módulos:
|
|
199
203
|
|
|
200
|
-
### Math
|
|
204
|
+
### Math (Matemática)
|
|
201
205
|
|
|
202
206
|
```trest
|
|
203
|
-
импорт * как Math
|
|
207
|
+
импорт * как Math измодуля "std/math"
|
|
204
208
|
|
|
205
209
|
пусть x = Math.abs(-5) # 5
|
|
206
210
|
пусть y = Math.max(10, 20) # 20
|
|
@@ -208,20 +212,20 @@ trestc exemplos/hello_cyrillic.trest --mode exe --output app.exe
|
|
|
208
212
|
пусть pi = Math.PI # 3.14159...
|
|
209
213
|
```
|
|
210
214
|
|
|
211
|
-
### String
|
|
215
|
+
### String (Cadeias de Texto)
|
|
212
216
|
|
|
213
217
|
```trest
|
|
214
|
-
импорт * как String
|
|
218
|
+
импорт * как String измодуля "std/string"
|
|
215
219
|
|
|
216
220
|
пусть текст = "Привет Мир"
|
|
217
221
|
пусть размер = String.размер(текст) # 11
|
|
218
222
|
пусть верхний = String.верхний(текст) # "ПРИВЕТ МИР"
|
|
219
223
|
```
|
|
220
224
|
|
|
221
|
-
### Array
|
|
225
|
+
### Array (Arrays)
|
|
222
226
|
|
|
223
227
|
```trest
|
|
224
|
-
импорт * как Array
|
|
228
|
+
импорт * как Array измодуля "std/array"
|
|
225
229
|
|
|
226
230
|
пусть arr = [1, 2, 3]
|
|
227
231
|
Array.добавить(arr, 4) # [1, 2, 3, 4]
|
|
@@ -229,58 +233,143 @@ Array.добавить(arr, 4) # [1, 2, 3, 4]
|
|
|
229
233
|
пусть отсортированный = Array.отсортировать([3, 1, 2]) # [1, 2, 3]
|
|
230
234
|
```
|
|
231
235
|
|
|
232
|
-
###
|
|
236
|
+
### HTTP (Client e Server)
|
|
237
|
+
|
|
238
|
+
```trest
|
|
239
|
+
импорт * как HTTP измодуля "std/http"
|
|
240
|
+
|
|
241
|
+
пусть resposta = HTTP.GET("https://api.example.com")
|
|
242
|
+
HTTP.POST("https://api.example.com", данные)
|
|
243
|
+
HTTP.создатьСервер(3000, обработчик)
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### Crypto (Criptografia)
|
|
247
|
+
|
|
248
|
+
```trest
|
|
249
|
+
импорт * как Crypto измодуля "std/crypto"
|
|
250
|
+
|
|
251
|
+
пусть hash = Crypto.md5("текст")
|
|
252
|
+
пусть sha = Crypto.sha256("данные")
|
|
253
|
+
пусть encrypted = Crypto.зашифровать("секрет", "ключ")
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### FileSystem (Sistema de Arquivos)
|
|
257
|
+
|
|
258
|
+
```trest
|
|
259
|
+
импорт * как FS измодуля "std/filesystem"
|
|
260
|
+
|
|
261
|
+
пусть содержимое = FS.читатьФайл("файл.txt")
|
|
262
|
+
FS.писатьФайл("выход.txt", "Содержимое")
|
|
263
|
+
пусть существует = FS.существуетФайл("файл.txt")
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### JSON (Manipulação de JSON)
|
|
267
|
+
|
|
268
|
+
```trest
|
|
269
|
+
импорт * как JSON измодуля "std/json"
|
|
270
|
+
|
|
271
|
+
пусть obj = JSON.парсить('{"имя": "Иван"}')
|
|
272
|
+
пусть str = JSON.строка({имя: "Иван"})
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### Date (Datas)
|
|
276
|
+
|
|
277
|
+
```trest
|
|
278
|
+
импорт * как Date измодуля "std/date"
|
|
279
|
+
|
|
280
|
+
пусть agora = Date.сейчас()
|
|
281
|
+
пусть formatado = Date.форматировать(agora, "YYYY-MM-DD")
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Database (Base de Dados)
|
|
285
|
+
|
|
286
|
+
```trest
|
|
287
|
+
импорт * как DB измодуля "std/database"
|
|
288
|
+
|
|
289
|
+
DB.подключить("sqlite", "dados.db")
|
|
290
|
+
DB.выполнить("SELECT * FROM usuarios")
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### RegEx (Expressões Regulares)
|
|
294
|
+
|
|
295
|
+
```trest
|
|
296
|
+
импорт * как RegEx измодуля "std/regex"
|
|
297
|
+
|
|
298
|
+
пусть matches = RegEx.найти("olá mundo", /olá/)
|
|
299
|
+
пусть replaced = RegEx.заменить("olá", /olá/, "привет")
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### Path (Caminhos de Arquivo)
|
|
303
|
+
|
|
304
|
+
```trest
|
|
305
|
+
импорт * как Path измодуля "std/path"
|
|
306
|
+
|
|
307
|
+
пусть dir = Path.директория("/caminho/arquivo.txt") # "/caminho"
|
|
308
|
+
пусть name = Path.имя("arquivo.txt") # "arquivo.txt"
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
### Process (Variáveis de Ambiente)
|
|
233
312
|
|
|
234
313
|
```trest
|
|
235
|
-
импорт * как
|
|
314
|
+
импорт * как Process измодуля "std/process"
|
|
236
315
|
|
|
237
|
-
пусть
|
|
238
|
-
|
|
239
|
-
пусть существует = IO.существуетФайл("файл.txt")
|
|
316
|
+
пусть user = Process.получитьEnv("USER")
|
|
317
|
+
пусть envs = Process.получитьEnvVars()
|
|
240
318
|
```
|
|
241
319
|
|
|
242
|
-
## 🏗️
|
|
320
|
+
## 🏗️ Estrutura do Projeto
|
|
243
321
|
|
|
244
322
|
```
|
|
245
323
|
treste/
|
|
246
324
|
├── src/
|
|
247
|
-
│ ├── lexer.ts #
|
|
248
|
-
│ ├── parser.ts #
|
|
249
|
-
│ ├── ast.ts #
|
|
250
|
-
│ ├── interpreter.ts #
|
|
251
|
-
│ ├── compiler.ts # CLI
|
|
325
|
+
│ ├── lexer.ts # Analisador léxico
|
|
326
|
+
│ ├── parser.ts # Analisador sintático
|
|
327
|
+
│ ├── ast.ts # Definições AST
|
|
328
|
+
│ ├── interpreter.ts # Interpretador
|
|
329
|
+
│ ├── compiler.ts # CLI do compilador
|
|
252
330
|
│ ├── compiler/
|
|
253
|
-
│ │ ├── web.ts #
|
|
254
|
-
│ │ └── exe.ts #
|
|
255
|
-
│ ├── std/ #
|
|
331
|
+
│ │ ├── web.ts # Compilador para Web
|
|
332
|
+
│ │ └── exe.ts # Compilador para executável
|
|
333
|
+
│ ├── std/ # Biblioteca padrão
|
|
256
334
|
│ │ ├── math.trest
|
|
257
335
|
│ │ ├── string.trest
|
|
258
336
|
│ │ ├── array.trest
|
|
337
|
+
│ │ ├── http.trest
|
|
338
|
+
│ │ ├── crypto.trest
|
|
339
|
+
│ │ ├── filesystem.trest
|
|
340
|
+
│ │ ├── json.trest
|
|
341
|
+
│ │ ├── date.trest
|
|
342
|
+
│ │ ├── database.trest
|
|
343
|
+
│ │ ├── regex.trest
|
|
344
|
+
│ │ ├── path.trest
|
|
345
|
+
│ │ ├── process.trest
|
|
259
346
|
│ │ └── io.trest
|
|
260
|
-
│ ├── types.ts #
|
|
261
|
-
│ ├── errors.ts #
|
|
262
|
-
│ └── module.ts #
|
|
263
|
-
├── exemplos/ #
|
|
264
|
-
├──
|
|
347
|
+
│ ├── types.ts # Sistema de tipos
|
|
348
|
+
│ ├── errors.ts # Tratamento de erros
|
|
349
|
+
│ └── module.ts # Sistema de módulos
|
|
350
|
+
├── exemplos/ # Exemplos de programas
|
|
351
|
+
├── docs/ # Documentação completa
|
|
352
|
+
├── dist/ # Código compilado
|
|
265
353
|
└── package.json
|
|
266
354
|
```
|
|
267
355
|
|
|
268
|
-
## 🔧
|
|
356
|
+
## 🔧 Scripts Disponíveis
|
|
269
357
|
|
|
270
358
|
```bash
|
|
271
|
-
npm run build #
|
|
272
|
-
npm run build:watch #
|
|
273
|
-
npm start
|
|
274
|
-
npm run compile:web #
|
|
275
|
-
npm run compile:exe #
|
|
276
|
-
npm run bundle #
|
|
359
|
+
npm run build # Compilar TypeScript
|
|
360
|
+
npm run build:watch # Compilar em modo watch
|
|
361
|
+
npm start <arquivo> # Executar arquivo Trest
|
|
362
|
+
npm run compile:web # Compilar para JavaScript
|
|
363
|
+
npm run compile:exe # Compilar para executável
|
|
364
|
+
npm run bundle # Criar bundle executável
|
|
277
365
|
```
|
|
278
366
|
|
|
279
|
-
## 📝
|
|
367
|
+
## 📝 Palavras-Chave
|
|
368
|
+
|
|
369
|
+
### Cirílico (Russo) - Sintaxe Principal
|
|
280
370
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|-------|------------|
|
|
371
|
+
| Trest | Equivalente |
|
|
372
|
+
|-------|-------------|
|
|
284
373
|
| `если` | if |
|
|
285
374
|
| `иначе` | else |
|
|
286
375
|
| `пока` | while |
|
|
@@ -291,7 +380,7 @@ npm run bundle # Создать исполняемый bundle
|
|
|
291
380
|
| `печать` | print/console.log |
|
|
292
381
|
| `импорт` | import |
|
|
293
382
|
| `экспорт` | export |
|
|
294
|
-
|
|
|
383
|
+
| `измодуля` | from |
|
|
295
384
|
| `попытаться` | try |
|
|
296
385
|
| `перехватить` | catch |
|
|
297
386
|
| `бросить` | throw |
|
|
@@ -301,88 +390,73 @@ npm run bundle # Создать исполняемый bundle
|
|
|
301
390
|
| `истина` | true |
|
|
302
391
|
| `ложь` | false |
|
|
303
392
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
| `para` | for |
|
|
311
|
-
| `funcao` | function |
|
|
312
|
-
| `retorne` | return |
|
|
313
|
-
| `var`, `let`, `const` | var, let, const |
|
|
314
|
-
| `imprima` | print/console.log |
|
|
315
|
-
| `importe` | import |
|
|
316
|
-
| `exporte` | export |
|
|
317
|
-
| `de` | from |
|
|
318
|
-
| `tente` | try |
|
|
319
|
-
| `capture` | catch |
|
|
320
|
-
| `lance` | throw |
|
|
321
|
-
| `finalmente` | finally |
|
|
322
|
-
| `quebre` | break |
|
|
323
|
-
| `continue` | continue |
|
|
324
|
-
| `verdadeiro` | true |
|
|
325
|
-
| `falso` | false |
|
|
326
|
-
|
|
327
|
-
## 🌐 Компиляция для Web
|
|
328
|
-
|
|
329
|
-
Компилятор для web генерирует современный JavaScript, который может использоваться в:
|
|
330
|
-
- Браузерах (через `<script>` или bundler)
|
|
393
|
+
> **Nota:** Embora Trest suporte palavras-chave em latino, o uso de cirílico é a forma recomendada e nativa da linguagem.
|
|
394
|
+
|
|
395
|
+
## 🌐 Compilação para Web
|
|
396
|
+
|
|
397
|
+
O compilador para web gera JavaScript moderno que pode ser usado em:
|
|
398
|
+
- Navegadores (via `<script>` ou bundler)
|
|
331
399
|
- Node.js
|
|
332
400
|
- React/Vue/Angular
|
|
333
|
-
-
|
|
401
|
+
- Qualquer ambiente JavaScript
|
|
334
402
|
|
|
335
|
-
|
|
403
|
+
**Exemplo:**
|
|
336
404
|
```bash
|
|
337
405
|
trestc программа.trest --mode web --output app.js
|
|
338
406
|
```
|
|
339
407
|
|
|
340
|
-
## 💻
|
|
408
|
+
## 💻 Compilação para Executável
|
|
341
409
|
|
|
342
|
-
|
|
343
|
-
-
|
|
344
|
-
-
|
|
345
|
-
-
|
|
410
|
+
O compilador para executável cria arquivo `.exe` que:
|
|
411
|
+
- Não requer Node.js instalado
|
|
412
|
+
- É autossuficiente (inclui todas as dependências)
|
|
413
|
+
- Executa diretamente no Windows
|
|
346
414
|
|
|
347
|
-
|
|
415
|
+
**Exemplo:**
|
|
348
416
|
```bash
|
|
349
417
|
trestc программа.trest --mode exe --output app.exe
|
|
350
418
|
```
|
|
351
419
|
|
|
352
|
-
## 🎓
|
|
420
|
+
## 🎓 Exemplos
|
|
421
|
+
|
|
422
|
+
Veja a pasta `exemplos/` para programas completos demonstrando:
|
|
423
|
+
- Operações básicas
|
|
424
|
+
- Funções e closures
|
|
425
|
+
- Estruturas de controle
|
|
426
|
+
- Arrays e objetos
|
|
427
|
+
- Módulos e imports
|
|
428
|
+
- Tratamento de erros
|
|
429
|
+
|
|
430
|
+
**Exemplos em cirílico:**
|
|
431
|
+
- `exemplos/crypto_demo.trest` - Demonstração de criptografia
|
|
432
|
+
- `exemplos/http_demo.trest` - Cliente HTTP e servidor
|
|
433
|
+
- `exemplos/database_demo.trest` - Operações de banco de dados
|
|
434
|
+
- `exemplos/filesystem_demo.trest` - Operações de arquivo
|
|
435
|
+
- `exemplos/todas_funcionalidades.trest` - Exemplo completo
|
|
436
|
+
|
|
437
|
+
## 📚 Documentação Completa
|
|
353
438
|
|
|
354
|
-
|
|
355
|
-
- Базовые операции
|
|
356
|
-
- Функции и замыкания
|
|
357
|
-
- Структуры управления
|
|
358
|
-
- Массивы и объекты
|
|
359
|
-
- Модули и импорты
|
|
360
|
-
- Обработку ошибок
|
|
439
|
+
Para mais informações, consulte a documentação completa em `docs/`:
|
|
361
440
|
|
|
362
|
-
|
|
363
|
-
-
|
|
364
|
-
-
|
|
365
|
-
-
|
|
366
|
-
-
|
|
367
|
-
- `exemplos/funcao_cyrillic.trest` - Функции
|
|
368
|
-
- `exemplos/completo_cyrillic.trest` - Полный пример
|
|
441
|
+
- **[README.md](docs/README.md)** - Guia completo
|
|
442
|
+
- **[FEATURES.md](docs/FEATURES.md)** - Todas as funcionalidades
|
|
443
|
+
- **[API.md](docs/api.md)** - Referência da API
|
|
444
|
+
- **[ARCHITECTURE.md](docs/ARCHITECTURE.md)** - Arquitetura técnica
|
|
445
|
+
- **[WHY_TREST.md](docs/WHY_TREST.md)** - Por que usar Trest
|
|
369
446
|
|
|
370
|
-
|
|
371
|
-
- `exemplos/hello.trest` - Olá Mundo
|
|
372
|
-
- `exemplos/variaveis.trest` - Variáveis
|
|
373
|
-
- И другие...
|
|
447
|
+
Ou visite o site oficial: [https://trest-site.vercel.app](https://trest-site.vercel.app)
|
|
374
448
|
|
|
375
|
-
## 📄
|
|
449
|
+
## 📄 Licença
|
|
376
450
|
|
|
377
451
|
MIT
|
|
378
452
|
|
|
379
|
-
## 👤
|
|
453
|
+
## 👤 Autor
|
|
380
454
|
|
|
381
455
|
**PoktWeb**
|
|
382
456
|
|
|
383
|
-
-
|
|
457
|
+
- Site de documentação: [https://trest-site.vercel.app](https://trest-site.vercel.app)
|
|
384
458
|
- GitHub: [@poktweb](https://github.com/poktweb)
|
|
385
459
|
|
|
386
|
-
## 🤝
|
|
460
|
+
## 🤝 Contribuições
|
|
387
461
|
|
|
388
|
-
|
|
462
|
+
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues e pull requests.
|
package/dist/cli.js
CHANGED
|
@@ -46,11 +46,11 @@ 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.3.
|
|
49
|
+
const VERSION = '2.3.2';
|
|
50
50
|
function main() {
|
|
51
51
|
const args = (0, minimist_1.default)(process.argv.slice(2));
|
|
52
52
|
// Validação de argumentos
|
|
53
|
-
if (args._.length === 0 && !args.help && !args.h && !args.version && !args.v && !args.update && !args.u) {
|
|
53
|
+
if (args._.length === 0 && !args.help && !args.h && !args.version && !args.v && !args.update && !args.u && !args.e && !args.execute) {
|
|
54
54
|
showUsage();
|
|
55
55
|
process.exit(1);
|
|
56
56
|
}
|
|
@@ -75,6 +75,16 @@ function main() {
|
|
|
75
75
|
}
|
|
76
76
|
process.exit(0);
|
|
77
77
|
}
|
|
78
|
+
// Modo execute inline: trest -e "печать('Olá')"
|
|
79
|
+
if (args.e || args.execute) {
|
|
80
|
+
const code = args.e || args.execute;
|
|
81
|
+
if (!code) {
|
|
82
|
+
console.error('❌ Error: No code provided for -e flag');
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
executeCode(code, process.cwd(), args);
|
|
86
|
+
process.exit(0);
|
|
87
|
+
}
|
|
78
88
|
const filePath = args._[0];
|
|
79
89
|
// Validações de arquivo
|
|
80
90
|
if (!filePath) {
|
|
@@ -97,6 +107,9 @@ function main() {
|
|
|
97
107
|
console.log(`📊 File size: ${fileStats.size} bytes`);
|
|
98
108
|
console.log('');
|
|
99
109
|
}
|
|
110
|
+
executeFile(filePath, args);
|
|
111
|
+
}
|
|
112
|
+
function executeFile(filePath, args) {
|
|
100
113
|
try {
|
|
101
114
|
const startTime = Date.now();
|
|
102
115
|
// Ler arquivo
|
|
@@ -106,6 +119,24 @@ function main() {
|
|
|
106
119
|
process.exit(0);
|
|
107
120
|
}
|
|
108
121
|
const basePath = path.dirname(filePath);
|
|
122
|
+
executeCode(code, basePath, args);
|
|
123
|
+
const duration = Date.now() - startTime;
|
|
124
|
+
if (args.verbose || args.debug) {
|
|
125
|
+
console.log(`\n✅ Execution completed in ${duration}ms`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
handleError(error, args);
|
|
130
|
+
process.exit(1);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function executeCode(code, basePath, args) {
|
|
134
|
+
try {
|
|
135
|
+
// Log verbose
|
|
136
|
+
if (args.verbose || args.debug) {
|
|
137
|
+
console.log(`📄 Executing code...`);
|
|
138
|
+
console.log('');
|
|
139
|
+
}
|
|
109
140
|
// Lexer
|
|
110
141
|
if (args.debug)
|
|
111
142
|
console.log('🔤 Tokenizing...');
|
|
@@ -130,10 +161,6 @@ function main() {
|
|
|
130
161
|
console.log('⚡ Executing...\n');
|
|
131
162
|
const interpreter = new interpreter_1.Interpreter();
|
|
132
163
|
interpreter.interpret(program);
|
|
133
|
-
const duration = Date.now() - startTime;
|
|
134
|
-
if (args.verbose || args.debug) {
|
|
135
|
-
console.log(`\n✅ Execution completed in ${duration}ms`);
|
|
136
|
-
}
|
|
137
164
|
}
|
|
138
165
|
catch (error) {
|
|
139
166
|
handleError(error, args);
|
|
@@ -168,6 +195,7 @@ function showUsage() {
|
|
|
168
195
|
console.log(' --help, -h Show help');
|
|
169
196
|
console.log(' --version, -v Show version');
|
|
170
197
|
console.log(' --update, -u Update to latest version');
|
|
198
|
+
console.log(' -e, --execute Execute code inline');
|
|
171
199
|
console.log(' --strict Strict mode');
|
|
172
200
|
console.log(' --verbose, -V Verbose output');
|
|
173
201
|
console.log(' --debug, -d Debug mode');
|
|
@@ -176,7 +204,8 @@ function showUsage() {
|
|
|
176
204
|
console.log(' trest программа.trest');
|
|
177
205
|
console.log(' trest exemplos/hello_cyrillic.trest');
|
|
178
206
|
console.log(' trest script.trest --verbose');
|
|
179
|
-
console.log(' trest
|
|
207
|
+
console.log(' trest -e "печать(\'Olá\')" # Execute inline');
|
|
208
|
+
console.log(' trest --update # Update to latest');
|
|
180
209
|
console.log('');
|
|
181
210
|
console.log('Compilation:');
|
|
182
211
|
console.log(' trestc программа.trest --mode web');
|
|
@@ -193,6 +222,7 @@ Options:
|
|
|
193
222
|
--help, -h Show this help message
|
|
194
223
|
--version, -v Show version number
|
|
195
224
|
--update, -u Check and update to latest version from NPM
|
|
225
|
+
-e, --execute Execute code inline (без файла)
|
|
196
226
|
--strict Strict mode (show stack trace on errors)
|
|
197
227
|
--verbose, -V Verbose output
|
|
198
228
|
--debug, -d Debug mode (detailed execution info)
|
|
@@ -202,6 +232,8 @@ Examples:
|
|
|
202
232
|
trest exemplos/hello_cyrillic.trest --strict
|
|
203
233
|
trest script.trest --verbose
|
|
204
234
|
trest program.trest --debug
|
|
235
|
+
trest -e "печать('Olá, Mundo')"
|
|
236
|
+
trest -e "пусть x = 10; печать(x)"
|
|
205
237
|
trest --update
|
|
206
238
|
|
|
207
239
|
Compilation:
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,uCAAyB;AACzB,2CAA6B;AAC7B,iDAAyC;AACzC,mCAAgC;AAChC,qCAAkC;AAClC,+CAA4C;AAC5C,qCAAsC;AACtC,qCAAwC;AACxC,wDAAgC;AAEhC,MAAM,OAAO,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "treste",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.2",
|
|
4
4
|
"description": "Trest - Linguagem de programação moderna e profissional para Web e Desktop com suporte a Cirílico",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -59,9 +59,7 @@
|
|
|
59
59
|
"src/std/",
|
|
60
60
|
"scripts/",
|
|
61
61
|
"README.md",
|
|
62
|
-
"README_PT.md",
|
|
63
62
|
"LICENSE",
|
|
64
|
-
"CHANGELOG.md",
|
|
65
63
|
"INSTALL.md"
|
|
66
64
|
],
|
|
67
65
|
"repository": {
|
package/CHANGELOG.md
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to Trest Language will be documented in this file.
|
|
4
|
-
|
|
5
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
-
|
|
8
|
-
## [2.2.0] - 2024-11-01
|
|
9
|
-
|
|
10
|
-
**Desenvolvido por:** PoktWeb
|
|
11
|
-
**Documentação:** https://trest-site.vercel.app
|
|
12
|
-
|
|
13
|
-
### Added
|
|
14
|
-
- 🔄 **Comando de Atualização Automática** - `trest --update` / `trest -u`
|
|
15
|
-
- 📡 Integração com NPM Registry para verificação de versões
|
|
16
|
-
- ✅ Comparação semântica de versões
|
|
17
|
-
- 🔍 Script Node.js para verificação e atualização automática
|
|
18
|
-
- 📊 Feedback visual amigável durante atualização
|
|
19
|
-
- 🛠️ Suporte para atualização global automática
|
|
20
|
-
|
|
21
|
-
### Changed
|
|
22
|
-
- 📝 CLI atualizado com novo comando `--update`
|
|
23
|
-
- 🎨 Help messages expandidos
|
|
24
|
-
- 🔧 Validação de argumentos melhorada
|
|
25
|
-
|
|
26
|
-
## [2.1.0] - 2024-11-01
|
|
27
|
-
|
|
28
|
-
**Desenvolvido por:** PoktWeb
|
|
29
|
-
**Documentação:** https://trest-site.vercel.app
|
|
30
|
-
|
|
31
|
-
### Added
|
|
32
|
-
- 🌐 **HTTP Module** - Cliente e Servidor HTTP completo com routing
|
|
33
|
-
- 🔐 **Crypto Module** - MD5, SHA256, SHA512, AES encryption/decryption
|
|
34
|
-
- 📁 **FileSystem Module** - Operações completas de I/O
|
|
35
|
-
- 📄 **JSON Module** - Parse e Stringify
|
|
36
|
-
- 📅 **Date Module** - Formatação de datas e timezone
|
|
37
|
-
- 🗄️ **Database Module** - ORM e Query Builder
|
|
38
|
-
- 🖥️ **GUI Module** - Interface gráfica e componentes
|
|
39
|
-
- ⚡ **Async Module** - Promises, delays, timers
|
|
40
|
-
- 🔧 Parser com suporte a `import * as X from "module"`
|
|
41
|
-
- 🎯 Interpreter com acesso a propriedades de classes estáticas
|
|
42
|
-
- 📚 Bibliotecas nativas em TypeScript (std-native.ts)
|
|
43
|
-
- 🧪 Exemplos funcionais para todos os módulos
|
|
44
|
-
|
|
45
|
-
### Changed
|
|
46
|
-
- 📦 Arquitetura modular expandida
|
|
47
|
-
- 🎨 Melhor integração entre módulos Trest e TypeScript
|
|
48
|
-
- 🚀 Performance otimizada para chamadas nativas
|
|
49
|
-
|
|
50
|
-
## [2.0.0] - 2024-11-01
|
|
51
|
-
|
|
52
|
-
**Desenvolvido por:** PoktWeb
|
|
53
|
-
**Documentação:** https://trest-site.vercel.app
|
|
54
|
-
|
|
55
|
-
### Added
|
|
56
|
-
- ✨ Enhanced npm package configuration with proper installation scripts
|
|
57
|
-
- 🛠️ Pre-install and post-install validation scripts
|
|
58
|
-
- 📝 Improved CLI with verbose and debug modes
|
|
59
|
-
- 🔍 Better error handling and logging
|
|
60
|
-
- 📦 Proper .npmignore configuration
|
|
61
|
-
- 📄 LICENSE file (MIT)
|
|
62
|
-
- 🎯 Engine requirements validation (Node >= 18, npm >= 9)
|
|
63
|
-
- 🌍 Multi-platform support (Windows, Linux, macOS)
|
|
64
|
-
- 🏷️ Version management scripts
|
|
65
|
-
|
|
66
|
-
### Changed
|
|
67
|
-
- 📚 Updated README with comprehensive installation instructions
|
|
68
|
-
- 🔧 Improved CLI error messages with emoji indicators
|
|
69
|
-
- 📊 Enhanced compiler output with detailed statistics
|
|
70
|
-
- 🎨 Better user experience with colored output
|
|
71
|
-
|
|
72
|
-
### Fixed
|
|
73
|
-
- 🐛 Fixed bin paths in package.json
|
|
74
|
-
- 🔧 Corrected post-build script paths
|
|
75
|
-
- ✅ Improved TypeScript compilation
|
|
76
|
-
|
|
77
|
-
## [1.0.0] - Initial Release
|
|
78
|
-
|
|
79
|
-
### Added
|
|
80
|
-
- 🎉 Initial release of Trest Language
|
|
81
|
-
- 🔤 Cyrillic support for keywords
|
|
82
|
-
- 🌐 Web compilation (JavaScript output)
|
|
83
|
-
- 💻 Executable compilation (.exe output)
|
|
84
|
-
- 📚 Standard library (Math, String, Array, IO)
|
|
85
|
-
- 📦 Module system (import/export)
|
|
86
|
-
- 🔄 Error handling (try/catch/throw)
|
|
87
|
-
- 🎯 Variables, functions, loops, conditions
|
|
88
|
-
- 📖 Complete documentation
|
|
89
|
-
|
package/README_PT.md
DELETED
|
@@ -1,261 +0,0 @@
|
|
|
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
|
-
|