feat(charka): charka-shadow — validador en sombra + corpus COBOL
El pipeline COBOL->Rust queda completo (7 crates) y validado de punta a punta. charka-shadow certifica que el transpilador preserva la semántica del COBOL original con una ejecución sombra: un intérprete que corre el Ir directamente sobre charka-runtime, sin compilar nada. Es una segunda ruta de ejecución, independiente del código que emite charka-codegen — si la sombra y el transpilado divergieran, sería un bug. - interpret(&Ir) -> Outcome ejecuta el IR y captura las líneas de DISPLAY; run_source(&str) corre el pipeline completo. - Tope de pasos (Halt::StepLimit): un bucle que no termina se corta en vez de colgarse. - Módulos: field (datos -> campos vivos) / interp (el motor). Corpus nuevo crates/modules/charka/corpus/ — 7 programas COBOL de complejidad graduada (01-hola .. 07-clasificar) con sus salidas esperadas verificadas a mano: DISPLAY, aritmética con GIVING, IF/ELSE, PERFORM TIMES/UNTIL, grupos, COMPUTE con paréntesis, ROUNDED, IF anidado con AND. Material de prueba del pipeline entero. 11 tests (los 7 del corpus + fuente vacío, STOP RUN, tope de pasos, error de léxico); fmt + clippy limpios. No hay GnuCOBOL en la máquina: la referencia v1 es el corpus; un modo futuro diferenciará contra el compilador real. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -3,6 +3,31 @@
|
||||
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-shadow): validador en sombra + corpus COBOL
|
||||
|
||||
Crate nuevo `crates/modules/charka/charka-shadow` y un corpus de prueba
|
||||
`crates/modules/charka/corpus/` — el pipeline COBOL→Rust queda
|
||||
completo y validado de punta a punta.
|
||||
|
||||
- `charka-shadow` certifica que el transpilador preserva la semántica
|
||||
del COBOL original con una **ejecución sombra**: un intérprete que
|
||||
corre el `Ir` directamente sobre `charka-runtime`, sin compilar nada.
|
||||
Es una segunda ruta de ejecución, independiente del código que emite
|
||||
`charka-codegen`.
|
||||
- `interpret(&Ir) -> Outcome` ejecuta el IR y captura las líneas de
|
||||
`DISPLAY`; `run_source(&str)` corre el pipeline completo (lexer →
|
||||
parser → IR → intérprete).
|
||||
- Tope de pasos (`Halt::StepLimit`): un bucle que no termina se corta
|
||||
en vez de colgar la ejecución.
|
||||
- **Corpus**: 7 programas COBOL de complejidad graduada — `01-hola`
|
||||
(un `DISPLAY`), `02-aritmetica` (`ADD`/`SUBTRACT`/`MULTIPLY`),
|
||||
`03-condicional` (`IF`/`ELSE`), `04-bucle` (`PERFORM TIMES`),
|
||||
`05-factorial` (`PERFORM UNTIL`), `06-nomina` (grupos, `COMPUTE` con
|
||||
paréntesis, `ROUNDED`, `V99`), `07-clasificar` (`IF` anidado, `AND`).
|
||||
Cada uno con su `.expected` verificada a mano.
|
||||
- 11 tests: los 7 programas del corpus + fuente vacío, `STOP RUN`,
|
||||
corte por tope de pasos y propagación de error de léxico.
|
||||
|
||||
### feat(charka-codegen): emisión de Rust desde el IR
|
||||
|
||||
Crate nuevo `crates/modules/charka/charka-codegen` — la etapa final del
|
||||
|
||||
Reference in New Issue
Block a user