feat(charka): PERFORM ... THRU como rango real de párrafos

PERFORM A THRU C ejecuta A, B y C; antes el transpilador sólo
ejecutaba A (lo marcaba como aproximado).

- charka-codegen: Symbols registra ahora los párrafos en orden con su
  nombre de método; Symbols::build toma el Ir completo.
  paragraph_range(name, thru) da los métodos del rango; emit_perform
  emite la llamada a cada uno.
- charka-shadow: run_paragraph_range ejecuta los párrafos de name a
  thru inclusive.
- Corpus: programa nuevo 17-rangopar (PERFORM PASO-A THRU PASO-C sobre
  tres párrafos). Verificado: el intérprete sombra y el crate
  compilado por scaffold dan la misma salida.

Tests: charka-codegen 24, charka-shadow 22. fmt + clippy limpios.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-21 22:36:53 +00:00
parent 82ba0b7a1a
commit f250fd0765
10 changed files with 155 additions and 41 deletions
+14
View File
@@ -3,6 +3,20 @@
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): PERFORM ... THRU como rango real de párrafos
`PERFORM A THRU C` ejecuta A, B y C; antes el transpilador sólo
ejecutaba A (lo marcaba como aproximado).
- `charka-codegen`: `Symbols` registra ahora los párrafos en orden con
su nombre de método; `Symbols::build` toma el `Ir` completo.
`paragraph_range(name, thru)` da los métodos del rango. `emit_perform`
emite la llamada a cada uno.
- `charka-shadow`: `run_paragraph_range` ejecuta los párrafos de
`name` a `thru` inclusive.
- Corpus: programa nuevo `17-rangopar` (`PERFORM PASO-A THRU PASO-C`
sobre tres párrafos). Verificado en ambas rutas.
### feat(charka): SET ... TO TRUE — escribir nombres de condición (88)
La cara de escritura de los nombres de condición de COBOL: si `IF