Metadata-Version: 2.4
Name: alvz-lenguaje
Version: 0.18.0
Summary: Lenguaje de programacion con sintaxis completamente en espanol
Author: Eder Alvarez
Author-email: Eder Alvarez <alvz-lenguaje@proton.me>
License-Expression: GPL-3.0-only
Project-URL: Homepage, https://alvzes.web.app
Project-URL: Repository, https://github.com/interpago/alvz
Project-URL: Documentation, https://alvzes.web.app
Project-URL: VS Code Marketplace, https://marketplace.visualstudio.com/items?itemName=alvz-project.alvz-language
Keywords: lenguaje,espanol,programacion,spanish,language,alvz
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Interpreters
Classifier: Topic :: Software Development :: Compilers
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: wasm
Requires-Dist: wasmtime>=45; extra == "wasm"
Provides-Extra: web
Requires-Dist: fastapi>=0.100; extra == "web"
Requires-Dist: uvicorn>=0.20; extra == "web"
Provides-Extra: dev
Requires-Dist: pytest>=7; extra == "dev"
Requires-Dist: ruff>=0.1; extra == "dev"
Provides-Extra: all
Requires-Dist: wasmtime>=45; extra == "all"
Requires-Dist: fastapi>=0.100; extra == "all"
Requires-Dist: uvicorn>=0.20; extra == "all"
Dynamic: author
Dynamic: license-file
Dynamic: requires-python

# Alvz Language v0.18.0

Lenguaje de programación interpretado con sintaxis completamente en español. Orientado a objetos, asíncrono, con tipado estático opcional. Basado en una VM de pila con 83 opcodes y compilación a WebAssembly.

## Características

- **Sintaxis en español** — keywords, errores y documentación en español
- **Orientado a objetos** — clases, herencia, métodos estáticos, getters/setters, `super`
- **Async/await** — ejecución concurrente con `ThreadPoolExecutor`
- **Tipado opcional** — anotaciones de tipo con verificación estática (`--no-check-types` para deshabilitar)
- **83 opcodes** — VM de pila con bytecode completo (aritmética, control de flujo, closures, excepciones, debug)
- **13 módulos stdlib** — `matematicas`, `cadenas`, `colecciones`, `testing`, `json`, `csv`, `sistema`, `fecha`, `http`, `sqlite`, `aleatorio`, `expresiones_regulares`, `consola`
- **Compilación WASM** — genera binarios `.wasm` compatibles con wasmtime 45+
- **LSP + DAP** — language server con diagnósticos, completado, ir a definición, hover; debugger con breakpoints, paso a paso, inspección de variables
- **Extension VS Code** — disponible en el Marketplace como "Alvz en Español": resaltado semántico, 48 snippets, autocompletado, iconos
- **Modo seguro** — `--safe` restringe FS, red, imports y recursos
- **CLI completa** — `alvz archivo.alvz`, `alvz test`, `alvz fmt`, `alvz nuevo`, `alvz build`, `alvz fix`, `alvz bench`, `alvz debug`, `alvz install`
- **Standalone** — `alvz build` genera ejecutables con PyInstaller o Nuitka
- **626 tests** — cobertura de VM, parser, lexer, WASM, LSP, DAP, tipos, formatter, fixer, benchmarks

## Instalación

```bash
pip install -e .
```

Requiere Python 3.10+.

## Uso rápido

```bash
# Ejecutar archivo
alvz programa.alvz

# Ejecutar via WebAssembly (37+ opcodes nativos)
alvz --wasm programa.alvz

# REPL interactivo
alvz

# Ejecutar tests
alvz test tests/

# Formatear código
alvz fmt programa.alvz

# Verificar tipos estáticamente
alvz --no-check-types programa.alvz   # deshabilita type checker

# Modo seguro (sin red, FS restringido)
alvz --safe programa.alvz

# Compilar a ejecutable o WASM
alvz build programa.alvz
alvz build programa.alvz --wasm

# Nuevo proyecto
alvz nuevo proyecto mi_app

# Analizar y corregir
alvz fix programa.alvz

# Benchmarks
alvz bench

# Depurar
alvz debug
```

## Sintaxis básica

```alvz
variable nombre = "Mundo"
imprimir("Hola " + nombre)

si (edad >= 18) {
    imprimir("Mayor de edad")
} sino {
    imprimir("Menor de edad")
}

mientras (x > 0) {
    imprimir(x)
    x = x - 1
}

funcion factorial(n) {
    si (n <= 1) {
        retornar 1
    }
    retornar n * factorial(n - 1)
}

clase Persona {
    variable nombre = ""
    variable edad = 0

    funcion inicializar(n, e) {
        nombre = n
        edad = e
    }

    funcion saludar() {
        imprimir("Hola, soy " + nombre)
    }
}
```

## Documentación

- [Especificación formal del lenguaje](ESPECIFICACION.md)
- [Documentación web](https://alvzes.web.app)

## Proyecto

- GitHub: https://github.com/interpago/alvz
- Web: https://alvzes.web.app
- VS Code Marketplace: https://marketplace.visualstudio.com/items?itemName=alvz-project.alvz-language
- Licencia: GPL-3.0
