feat(charka): CLI del transpilador — transpile / scaffold / run / check

App nueva crates/apps/charka — el binario `charka`, que vuelve usable
el pipeline COBOL->Rust desde la terminal.

- transpile <in.cob> [-o out.rs] — emite el código Rust.
- scaffold <in.cob> -o <dir> — genera un crate Rust completo
  (Cargo.toml + src/main.rs) que depende de charka-runtime y compila.
- run <in.cob> — ejecuta el programa con el intérprete sombra, sin
  compilar nada, y muestra su salida.
- check <in.cob> -e <esperado> — ejecuta y diferencia contra una
  salida esperada; reporta las líneas que difieren.

Avisa de los verbos COBOL que aún no se transpilan. Verificado de
punta a punta contra el corpus: scaffold de 06-nomina genera un crate
que compila y produce la misma salida que el intérprete sombra — las
dos rutas de ejecución concuerdan.

4 tests; fmt + clippy limpios.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-21 21:28:36 +00:00
parent 4d9ce11b1e
commit b052c41e3c
6 changed files with 374 additions and 2 deletions
+20
View File
@@ -3,6 +3,26 @@
Transpilador COBOL → Rust. El módulo más grande del ecosistema (Fase D
del plan macro) — el parser COBOL completo es un esfuerzo multi-mes.
### feat(charka): CLI del transpilador — transpile / scaffold / run / check
App nueva `crates/apps/charka` — el binario `charka`, que vuelve usable
el pipeline desde la terminal. Cuatro comandos:
- `transpile <in.cob> [-o out.rs]` — emite el código Rust (a un archivo
o a la salida estándar).
- `scaffold <in.cob> -o <dir>` — genera un crate Rust completo
(`Cargo.toml` + `src/main.rs`) que depende de `charka-runtime` y
compila tal cual.
- `run <in.cob>` — ejecuta el programa con el intérprete sombra y
muestra su salida, sin compilar nada.
- `check <in.cob> -e <esperado>` — ejecuta y diferencia la salida
contra un archivo esperado; reporta las líneas que difieren.
Avisa de los verbos COBOL que aún no se transpilan. Verificado de
punta a punta contra el corpus: `scaffold` de `06-nomina` genera un
crate que compila y produce la misma salida que el intérprete sombra —
las dos rutas de ejecución concuerdan. 4 tests; fmt + clippy limpios.
### feat(charka-shadow): validador en sombra + corpus COBOL
Crate nuevo `crates/modules/charka/charka-shadow` y un corpus de prueba