Trest - Linguagem de programação moderna e profissional para Web e Desktop com suporte a Cirílico. Inclui módulo HTTP opcional para requisições de rede (acesso controlado pelo usuário, documentado em SECURITY.md).




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).
> 🎯 Característica Única: Trest permite programar usando palavras-chave em cirílico ou latino, mantendo a mesma sintaxe e funcionalidades.
> 🔒 Segurança: Versão 2.5.5 mantém todas as correções de segurança da cadeia de suprimentos. Veja DOCUMENTACAO_COMPLETA.md para detalhes.
> 🚀 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.
> 🌐 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.
- ✅ Execução Inline - Execute código direto na linha de comando com -e
- ✅ Compilação para Web - Gera JavaScript otimizado
- ✅ Compilação para Desktop - Cria executáveis .exe nativos
- ✅ Deploy na Vercel - Crie projetos otimizados para serverless functions
- ✅ Manipulação de DOM - Módulo std/dom para interação com páginas web
- ✅ Sistema de CSS - Módulo std/style para estilização e carregamento de CSS
- ✅ Interoperabilidade NPM - Importe qualquer pacote do ecossistema Node.js
- ✅ Framework de Testes - Módulo std/test para testes unitários
- ✅ Sistema de Módulos - Import/Export de módulos
- ✅ Biblioteca Padrão - std com funções matemáticas, strings, arrays e I/O
- ✅ Tratamento de Erros - Try/Catch/Throw estendido
- ✅ Sintaxe em Cirílico - Palavras-chave em russo
- ✅ Tipagem Dinâmica - Tipos inferidos automaticamente
- ✅ Sistema de Build - Ferramentas de compilação profissionais
Instalação global:
``bash`
npm install -g treste
Após a instalação, os comandos trest e trestc estarão disponíveis globalmente:`bash`
trest --version
trestc --help
Instalação local em projeto:
`bash`
npm install treste
Use via npx:`bash`
npx trest programa.trest
npx trestc programa.trest --mode web
Se você quiser instalar a partir do código-fonte ou fazer modificações:
`bashBaixar o código-fonte
cd treste
$3
- Node.js: >= 18.0.0
- npm: >= 9.0.0
- TypeScript: 5.0+ (para desenvolvimento)
Verifique sua versão:
`bash
node --version # deve ser >= v18
npm --version # deve ser >= 9
`🎯 Guia Rápido
$3
`bash
Opção 1: Usando npx (Recomendado)
npx create-trest-app meu-projetoOpção 2: Usando npx com alias
npx create-trest meu-projetoOpção 3: Se já tiver instalado globalmente
npm install -g treste@latest
create-trest-app meu-projeto
`Nota: O comando
npm create trest requer um pacote separado create-trest no npm. Use npx create-trest-app que funciona imediatamente.$3
`bash
trest -e "печать('Olá, Mundo!')"
trest -e "пусть x = 10; печать(x)"
`$3
`bash
trest exemplos/hello_cyrillic.trest
`$3
`bash
npm run compile:web -- exemplos/hello_cyrillic.trest
ou
trestc exemplos/hello_cyrillic.trest --mode web --output app.js
`$3
`bash
npm run compile:exe -- exemplos/hello_cyrillic.trest
ou
trestc exemplos/hello_cyrillic.trest --mode exe --output app.exe
`📚 Sintaxe da Linguagem
Todos os exemplos abaixo usam a sintaxe em cirílico (palavras-chave em russo), que é a forma nativa do Trest:
$3
`trest
перем имя = "Trest"
пусть возраст = 25
конст pi = 3.14159
`$3
`trest
функция сложить(a, b) {
вернуть a + b
}пусть результат = сложить(5, 3)
печать(результат)
`$3
`trest
если (возраст >= 18) {
печать("Совершеннолетний")
} иначе {
печать("Несовершеннолетний")
}
`$3
`trest
пусть result = возраст >= 18 ? "Adulto" : "Menor"
печать(result)
`$3
`trest
переключатель (день) {
случай 1:
печать("Понедельник")
прервать
случай 2:
печать("Вторник")
прервать
поумолчанию:
печать("Другой день")
}
`$3
While (Enquanto):
`trest
пусть i = 0
пока (i < 10) {
печать(i)
i = i + 1
}
`For (Para):
`trest
для (пусть i = 0; i < 10; i = i + 1) {
печать(i)
}
`$3
`trest
попытаться {
пусть результат = разделить(10, 0)
} перехватить (ошибка) {
печать("Ошибка:", ошибка)
} наконец {
печать("Операция завершена")
}
`$3
Import (Importar):
`trest
импорт { max, min } измодуля "std/math"
импорт * как Math измодуля "std/math"
`Export (Exportar):
`trest
экспорт функция мояФункция() {
вернуть "Привет"
}экспорт конст константа = 42
`$3
`trest
пусть человек = {
имя: "Иван",
возраст: 30,
город: "Москва"
}печать(человек.имя) # "Иван"
`$3
`trest
пусть числа = [1, 2, 3, 4, 5]
печать(числа[0]) # 1числа[0] = 10
печать(числа) # [10, 2, 3, 4, 5]
`📖 Biblioteca Padrão (std)
Trest inclui uma biblioteca padrão rica com 11 módulos:
$3
`trest
импорт * как Math измодуля "std/math"пусть x = Math.abs(-5) # 5
пусть y = Math.max(10, 20) # 20
пусть z = Math.sqrt(16) # 4
пусть pi = Math.PI # 3.14159...
`$3
`trest
импорт * как String измодуля "std/string"пусть текст = "Привет Мир"
пусть размер = String.размер(текст) # 11
пусть верхний = String.верхний(текст) # "ПРИВЕТ МИР"
`$3
`trest
импорт * как Array измодуля "std/array"пусть arr = [1, 2, 3]
Array.добавить(arr, 4) # [1, 2, 3, 4]
пусть обратный = Array.обратить(arr) # [4, 3, 2, 1]
пусть отсортированный = Array.отсортировать([3, 1, 2]) # [1, 2, 3]
`$3
`trest
импорт * как HTTP измодуля "std/http"пусть resposta = HTTP.GET("https://api.example.com")
HTTP.POST("https://api.example.com", данные)
HTTP.создатьСервер(3000, обработчик)
`$3
`trest
импорт * как Crypto измодуля "std/crypto"пусть hash = Crypto.md5("текст")
пусть sha = Crypto.sha256("данные")
пусть encrypted = Crypto.зашифровать("секрет", "ключ")
`$3
`trest
импорт * как FS измодуля "std/filesystem"пусть содержимое = FS.читатьФайл("файл.txt")
FS.писатьФайл("выход.txt", "Содержимое")
пусть существует = FS.существуетФайл("файл.txt")
`$3
`trest
импорт * как JSON измодуля "std/json"пусть obj = JSON.парсить('{"имя": "Иван"}')
пусть str = JSON.строка({имя: "Иван"})
`$3
`trest
импорт * как Date измодуля "std/date"пусть agora = Date.сейчас()
пусть formatado = Date.форматировать(agora, "YYYY-MM-DD")
`$3
`trest
импорт * как DB измодуля "std/database"DB.подключить("sqlite", "dados.db")
DB.выполнить("SELECT * FROM usuarios")
`$3
`trest
импорт * как RegEx измодуля "std/regex"пусть matches = RegEx.найти("olá mundo", /olá/)
пусть replaced = RegEx.заменить("olá", /olá/, "привет")
`$3
`trest
импорт * как Path измодуля "std/path"пусть dir = Path.директория("/caminho/arquivo.txt") # "/caminho"
пусть name = Path.имя("arquivo.txt") # "arquivo.txt"
`$3
`trest
импорт * как Process измодуля "std/process"пусть user = Process.получитьEnv("USER")
пусть envs = Process.получитьEnvVars()
`🏗️ Estrutura do Projeto
`
treste/
├── src/
│ ├── lexer.ts # Analisador léxico
│ ├── parser.ts # Analisador sintático
│ ├── ast.ts # Definições AST
│ ├── interpreter.ts # Interpretador
│ ├── compiler.ts # CLI do compilador
│ ├── compiler/
│ │ ├── web.ts # Compilador para Web
│ │ └── exe.ts # Compilador para executável
│ ├── std/ # Biblioteca padrão
│ │ ├── math.trest
│ │ ├── string.trest
│ │ ├── array.trest
│ │ ├── http.trest
│ │ ├── crypto.trest
│ │ ├── filesystem.trest
│ │ ├── json.trest
│ │ ├── date.trest
│ │ ├── database.trest
│ │ ├── regex.trest
│ │ ├── path.trest
│ │ ├── process.trest
│ │ └── io.trest
│ ├── types.ts # Sistema de tipos
│ ├── errors.ts # Tratamento de erros
│ └── module.ts # Sistema de módulos
├── exemplos/ # Exemplos de programas
├── DOCUMENTACAO_COMPLETA.md # Documentação completa unificada
├── dist/ # Código compilado
└── package.json
`🔧 Scripts Disponíveis
`bash
npm run build # Compilar TypeScript
npm run build:watch # Compilar em modo watch
npm start # Executar arquivo Trest
npm run compile:web # Compilar para JavaScript
npm run compile:exe # Compilar para executável
npm run bundle # Criar bundle executável
`📝 Palavras-Chave
$3
| Trest | Equivalente |
|-------|-------------|
|
если | if |
| иначе | else |
| пока | while |
| для | for |
| функция | function |
| вернуть | return |
| перем, пусть, конст | var, let, const |
| печать | print/console.log |
| импорт | import |
| экспорт | export |
| измодуля | from |
| попытаться | try |
| перехватить | catch |
| бросить | throw |
| наконец | finally |
| прервать | break |
| продолжить | continue |
| истина | true |
| ложь | false |> Nota: Embora Trest suporte palavras-chave em latino, o uso de cirílico é a forma recomendada e nativa da linguagem.
🌐 Compilação para Web
O compilador para web gera JavaScript moderno que pode ser usado em:
- Navegadores (via