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.