Skip to content

Latest commit

 

History

66 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wollok-rs 🦀

GitHub Release License Rust

Una implementación moderna de Wollok en Rust, enfocada en la enseñanza de programación orientada a objetos.

📋 Tabla de Contenidos

🎯 Objetivo

Wollok-rs es una reimplementación de Wollok en Rust que busca:

  • Mejor rendimiento: Aprovechando la velocidad y seguridad de Rust
  • Modularidad: Arquitectura basada en crates independientes
  • Extensibilidad: Diseño que facilita nuevas características
  • Compatibilidad: Mantener la esencia pedagógica de Wollok original

✨ Características

✅ Implementadas

  • Literales: Números, strings, booleanos, null
  • Colecciones: Arrays [1, 2, 3] y Sets #{1, 2, 3}
  • Objetos: Declaración con object y cuerpo con propiedades/métodos
  • Variables: const (inmutables) y let (mutables)
  • Propiedades: Con property para getters/setters automáticos
  • Métodos: Con parámetros y cuerpos de bloque o inline
  • Comentarios: Soporte para // comentarios de línea
  • Asignaciones: Expresiones de asignación con =

🚧 En Desarrollo

  • Clases: Declaración, constructores, herencia
  • Manejo de Errores: fallible methods con ? (propagación) y ! (assertion)
  • Closures: Sintaxis simple () => expr (sin llaves)
  • Imports: Sistema de módulos e importaciones
  • Tests: Framework de testing integrado
  • Wollok Game: Librería para juegos

📋 Planificadas

  • Mixins: Composición de comportamiento
  • Herencia: inherits keyword y super calls
  • Polimorfismo: Dynamic dispatch
  • REPL: Consola interactiva
  • LSP: Language Server Protocol
  • Debugging: Soporte para debuggers

🚀 Instalación

Prerrequisitos

Desde el código fuente

git clone https://github.com/romancitodev/wollok-rs.git
cd wollok-rs
cargo build --release

Ejecución

# Ejecutar el ejemplo incluido
cargo run

# Con logs de debug
RUST_LOG=debug cargo run

📚 Documentación del Lenguaje

La documentación completa del lenguaje está organizada en módulos:

Ejemplo Rápido

object calculadora {
    property memoria = 0
    
    method sumar(a, b) = a + b
    
    method guardarEnMemoria(valor) {
        memoria = valor
    }
    
    method recuperarMemoria() = memoria
}

const resultado = calculadora.sumar(5, 3)
calculadora.guardarEnMemoria(resultado)

🏗️ Arquitectura

El proyecto está organizado en varios crates:

wollok-rs/
├── crates/
│   ├── wollok-lexer/     # Tokenización y análisis léxico
│   ├── wollok-ast/       # Parser y AST
│   ├── wollok-common/    # Tipos y utilidades compartidas
│   └── wollok-cli/       # Interfaz de línea de comandos
└── src/                  # Ejecutable principal

Flujo de Procesamiento

  1. Lexer (wollok-lexer): Convierte texto a tokens
  2. Parser (wollok-ast): Genera AST desde tokens
  3. Análisis (planeado): Validación semántica
  4. Evaluación (planeado): Interpretación del código

🤝 Contribuir

¡Las contribuciones son bienvenidas! Por favor:

  1. Fork el proyecto
  2. Crea tu feature branch (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push al branch (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

Desarrollo

# Ejecutar tests
cargo test

# Formatear código
cargo fmt

# Linter
cargo clippy

# Con just (opcional)
just test
just fmt
just clippy

📜 Licencia

Este proyecto está licenciado bajo LICENSE - ver el archivo para detalles.


Nota: Este proyecto está en desarrollo activo. Muchas características están planeadas pero no implementadas. Ver issues para el estado actual.

About

The rust version of Wollok (see wollok.org)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages