feat(charka): PICTURE de edición — Z, coma de millares y punto decimal

El formateo de informes de COBOL: supresión de ceros a la izquierda,
coma de millares e inserción del punto decimal. Rebanada vertical.

- charka-lexer: el punto separador exige un espacio detrás; un punto
  pegado a un carácter (ZZ9.99) ya no es terminador, sino símbolo —
  el parser lo reensambla dentro de la cláusula PICTURE.
- charka-runtime: format_edited(valor, pic) — 9, Z, coma, punto, B.
- charka-ir: Field::edit guarda la PICTURE; el campo es texto.
- charka-codegen / charka-shadow: MOVE a un campo de edición pasa por
  format_edited antes de almacenar.
- Corpus: 19-reporte. Sombra y crate compilado dan la misma salida.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-21 23:00:15 +00:00
parent b3278bdb0c
commit 634a43006a
15 changed files with 264 additions and 23 deletions
+5 -5
View File
@@ -189,8 +189,8 @@ que corre el `Ir` directamente sobre `charka-runtime`, sin compilar.
## El corpus
`crates/modules/charka/corpus/` — 18 programas COBOL graduados
(`01-hola` … `18-fichero`), cada uno con su `.expected`. Ejercita el
`crates/modules/charka/corpus/` — 19 programas COBOL graduados
(`01-hola` … `19-reporte`), cada uno con su `.expected`. Ejercita el
pipeline completo de punta a punta. Ver su `README.md`.
## La CLI
@@ -203,9 +203,9 @@ no transpilados.
## Estado
Pipeline **completo** — `charka-bcd` (22 tests), `charka-lexer` (17),
`charka-parser` (15), `charka-ir` (17), `charka-runtime` (17),
`charka-codegen` (14), `charka-shadow` (11) y la CLI `charka` (4)
Pipeline **completo** — `charka-bcd` (22 tests), `charka-lexer` (18),
`charka-parser` (17), `charka-ir` (30), `charka-runtime` (22),
`charka-codegen` (26), `charka-shadow` (24) y la CLI `charka` (4)
implementados y verdes. COBOL → Rust corre de punta a punta, validado
contra el corpus. El crate que genera `scaffold` compila y su salida
coincide con la del intérprete sombra — las dos rutas de ejecución