Dryad é uma linguagem de programação moderna, interpretada, com sintaxe expressiva e tipagem dinâmica.
- Test-Driven Development (TDD) - Cada funcionalidade possui testes abrangentes
- Sistema de Erros Padronizado - Códigos de erro categorizados e documentados
- CLI Intuitivo - Interface de linha de comando rica em funcionalidades
- Gestor de Pacotes (Oak) - Ferramenta independente para gerenciamento de projetos
- Modularidade - Componentes desacoplados para máxima testabilidade
- Completude sem Complexidade - Código completo mas sem over-engineering
- 🚀 Sintaxe Simples: Fácil de aprender e usar
- 📦 Sistema Oak: Package manager modular integrado
- 🔗 Imports/Exports: Sistema modular avançado (
usingvsuse) - 📚 Common Libraries: Bibliotecas nativas organizadas
- ⚡ Performance: Interpretador otimizado em Rust
- 🛠️ CLI Moderna: Interface de linha de comando completa
- 🔧 APIs Externas: Suporte para modificação do oak package manager e cli.
# Clone o repositório
git clone https://github.com/dryad-lang/dryad.git
cd dryad
# Compile o projeto
cargo build --release
# Execute um script
./target/release/dryad script.dryad// hello.dryad
print("Hello, Dryad!");
let nome = "Mundo";
print("Olá, " + nome + "!");
// Classes com métodos estáticos
class Math {
static function square(x) {
return x * x;
}
}
let resultado = Math.square(5);
print("5² = " + resultado);
# Inicializar projeto Oak
dryad oak init
# Listar dependências
dryad oak list
# Adicionar dependência (futuro)
dryad oak add math-utils// Bibliotecas do sistema (using)
using IO.Console;
using Core.Types;
// Arquivos locais (use)
use './utils/helper.dryad';
use '../shared/common.dryad';
// Uso das funcionalidades
Console.println("Hello World!");
let type = Types.typeof(42);
helper.processData();
dryad/
├── crates/
│ ├── dryad_errors/ # Sistema de erros e códigos padronizados
│ ├── dryad_lexer/ # Tokenização (análise léxica)
│ ├── dryad_parser/ # Parser e construção de AST
│ ├── dryad_runtime/ # Interpretador principal
│ ├── dryad_cli/ # CLI para rodar código Dryad
│ └── oak/ # Gestor de pacotes
├── Cargo.toml # Workspace principal
└── README.md
- Comentários de linha (
//) e bloco (/* */) - Tratamento de espaços em branco
- Completamente funcional
- Análise recursiva descendente
- Completamente funcional
- Tratamento robusto de erros de tipo
- Completamente funcional
- Códigos estruturados por categoria:
- 1000-1999: Erros do Lexer
- 2000-2999: Erros do Parser
- 3000-3999: Erros de Runtime
- 4000-4999: Erros do Sistema de Tipos
- 5000-5999: Erros de I/O
- 6000-6999: Erros do Sistema de Módulos
- 7000-7999: Erros de Sintaxe
- 8000-8999: Avisos (Warnings)
- 9000-9999: Erros de Sistema
- Mensagens de erro informativas
- Rastreamento de linha e coluna
-
dryad run <arquivo>- Executa código Dryad -
dryad run <arquivo> --verbose- Mostra tokens e AST -
dryad check <arquivo>- Valida sintaxe -
dryad tokens <arquivo>- Debug: mostra tokens -
dryad repl- Modo interativo -
dryad version- Informações da versão
-
oak init <nome>- Cria novo projeto -
oak info- Informações do projeto -
oak list- Lista dependências -
oak install <pacote>- Adiciona dependência (estrutura pronta) -
oak remove <pacote>- Remove dependência -
oak run <script>- Executa scripts definidos -
oak clean- Limpa cache - Arquivo
oaklibs.jsoncom configuração completa - Criação do registry (repositorio geral de dependencias)
Total: 79 testes passando
- Lexer: 24 testes
- Parser: 25 testes
- Runtime: 30 testes
- Sistema de erros integrado em todos os componentes
# Expressão simples
echo "5 + 3 * 2" > exemplo.dryad
cargo run --bin dryad run exemplo.dryad
# Output: 11
# Modo verboso (mostra tokens e AST)
cargo run --bin dryad run exemplo.dryad --verbose
# Validar sintaxe
cargo run --bin dryad check exemplo.dryad# Criar novo projeto
cargo run --bin oak init meu-projeto
# Navegar e ver informações
cd meu-projeto
cargo run --bin oak info
cargo run --bin oak listcargo run --bin dryad repl
# dryad> 2 + 3
# => 5
# dryad> "Hello" + " World"
# => Hello WorldCódigo Fonte (.dryad)
↓
Lexer → Tokens
↓
Parser → AST (Abstract Syntax Tree)
↓
Interpreter → Resultado
# Build do projeto
cargo build
# Executar todos os testes
cargo test
# Executar CLI
cargo run --bin dryad --help
# Executar Oak
cargo run --bin oak --help- Números:
42,3.14,-5 - Strings:
"Hello World","Olá\nMundo" - Booleanos:
true,false - Null:
null
- Aritméticos:
+,-,*,/ - Comparação:
==,!=,<,>,<=,>= - Lógicos:
&&,||,!
// Aritmética
(5 + 3) * 2
// Comparações
10 > 5
// Lógica
true && false || !true
// Strings
"Hello" + " " + "World"
// Expressões complexas
(2 + 3) * 4 == 20 && true
- Declarações de variáveis (
let x = 5;) - Estruturas de controle (
if,while,for) - Funções definidas pelo usuário
- Arrays e objetos
- Sistema de módulos e imports
- Instalação real de pacotes no Oak
Este projeto segue rigorosamente os princípios de TDD. Para contribuir:
- Escreva testes para a nova funcionalidade
- Implemente a funcionalidade para passar nos testes
- Refatore mantendo todos os testes passando
- Adicione códigos de erro apropriados quando necessário
MIT License - veja o arquivo LICENSE para detalhes.