1 unstable release
0.1.0 | Nov 22, 2024 |
---|
#1117 in Development tools
156 downloads per month
29KB
224 lines
R2Rust 🚀
R2Rust es un intérprete escrito en Rust inspirado en el lenguaje de programación R. Este proyecto reimplementa funcionalidades básicas de R con el objetivo de ser ligero, eficiente y modular.
Características
- Tokenización (Lexer): Convierte texto de entrada en tokens estructurados.
- Análisis Sintáctico (Parser): Convierte tokens en un AST (Abstract Syntax Tree).
- Evaluación (Evaluator): Procesa expresiones matemáticas y asignaciones.
- Entorno (Environment): Gestiona variables y su estado durante la ejecución.
- REPL (Read-Eval-Print Loop): Interfaz interactiva para evaluar expresiones en tiempo real.
Instalación
Prerrequisitos
- Rust: Necesitas tener instalado Rust en tu máquina. Puedes instalarlo siguiendo esta guía.
Clonar el Repositorio
Clona este proyecto desde GitHub:
git clone https://github.com/R2Rust/core.git
cd core
Compilar el Proyecto
Compila el proyecto utilizando cargo
:
cargo build
Uso
Ejecutar el REPL
Para iniciar el REPL interactivo:
cargo run
Ejemplo de sesión interactiva:
Welcome to R2Rust! 🚀
Type 'exit' to quit or 'help' for instructions.
rustr> x <- 10 + 20
Result: 30
rustr> y <- x + 5
Result: 35
rustr> exit
Goodbye!
Estructura del Proyecto
R2Rust/
├── src/
│ ├── ast.rs # Definición del Abstract Syntax Tree (AST)
│ ├── environment.rs # Manejo de variables y estado
│ ├── evaluator.rs # Evaluación de expresiones
│ ├── lexer.rs # Tokenización de entrada
│ ├── parser.rs # Análisis sintáctico
│ ├── repl.rs # Read-Eval-Print Loop
│ ├── lib.rs # Biblioteca central del proyecto
│ └── main.rs # Punto de entrada principal
├── tests/ # Pruebas para los módulos
│ ├── lexer_tests.rs
│ ├── parser_tests.rs
│ ├── evaluator_tests.rs
│ └── repl_tests.rs
├── Cargo.toml # Configuración del proyecto y dependencias
├── Cargo.lock # Bloqueo de versiones de dependencias
└── README.md # Documentación del proyecto
Contribuir
¡Las contribuciones son bienvenidas! Si quieres colaborar:
- Haz un fork del proyecto.
- Crea una rama para tu funcionalidad:
git checkout -b feature/nueva-funcionalidad
- Realiza tus cambios y haz un commit:
git commit -m "Añadir nueva funcionalidad"
- Sube tu rama al repositorio remoto:
git push origin feature/nueva-funcionalidad
- Abre un Pull Request en GitHub.
Pruebas
Ejecuta todas las pruebas para asegurarte de que todo funcione correctamente:
cargo test
Licencia
Este proyecto está licenciado bajo la GNU General Public License v3.0. Consulta el archivo LICENSE
para más información.
Dependencies
~5.5MB
~75K SLoC