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:
@@ -98,8 +98,9 @@ Tercera etapa: `Program` → `Ir`. Aquí se parsea cada `Sentence` cruda
|
||||
empieza el verbo del siguiente. El parser usa palabras "frontera"
|
||||
(verbos + terminadores `END-*`/`ELSE` + conectores `TO`/`GIVING`...)
|
||||
para delimitar listas de operandos.
|
||||
- `PERFORM` cubre las cuatro formas: párrafo / en línea, `n TIMES`,
|
||||
`UNTIL cond` y `VARYING var FROM x BY y UNTIL cond`.
|
||||
- `PERFORM` cubre las cuatro formas: párrafo (incluido el rango
|
||||
`THRU`) / en línea, `n TIMES`, `UNTIL cond` y `VARYING var FROM x
|
||||
BY y UNTIL cond`.
|
||||
- `EVALUATE` — el `case` de COBOL: `WHEN valor`, `WHEN lo THRU hi`
|
||||
(rango), `WHEN OTHER`, y la forma `EVALUATE TRUE WHEN condición`.
|
||||
- `STRING` (concatenación) y `UNSTRING` (partición por delimitador) —
|
||||
@@ -158,7 +159,7 @@ del programa COBOL.
|
||||
transpila a Rust que compila contra `charka-runtime` y produce la
|
||||
salida correcta.
|
||||
- Fuera de alcance v1: grupos como campo propio, `REDEFINES`,
|
||||
`OCCURS` de grupo, `PERFORM ... THRU` como rango, E/S de ficheros.
|
||||
`OCCURS` de grupo, E/S de ficheros.
|
||||
|
||||
## charka-shadow
|
||||
|
||||
@@ -181,8 +182,8 @@ que corre el `Ir` directamente sobre `charka-runtime`, sin compilar.
|
||||
|
||||
## El corpus
|
||||
|
||||
`crates/modules/charka/corpus/` — 16 programas COBOL graduados
|
||||
(`01-hola` … `16-bandera`), cada uno con su `.expected`. Ejercita el
|
||||
`crates/modules/charka/corpus/` — 17 programas COBOL graduados
|
||||
(`01-hola` … `17-rangopar`), cada uno con su `.expected`. Ejercita el
|
||||
pipeline completo de punta a punta. Ver su `README.md`.
|
||||
|
||||
## La CLI
|
||||
|
||||
Reference in New Issue
Block a user