feat(charka): INSPECT — contar y reemplazar caracteres
El verbo de COBOL para analizar y limpiar campos de texto.
- IR: Stmt::Inspect { target, op } con InspectOp::TallyingForAll
(cuenta apariciones y las suma a un contador) y
InspectOp::ReplacingAll (reemplaza apariciones).
- Parser: INSPECT t TALLYING n FOR ALL lit y
INSPECT t REPLACING ALL a BY b. Una forma no soportada cae a
Stmt::Unknown.
- Codegen: TALLYING -> str::matches(..).count(); REPLACING ->
str::replace.
- Shadow: el intérprete cuenta / reemplaza el texto.
- Corpus: programa nuevo 13-inspeccion. Verificado: el intérprete
sombra y el crate compilado por scaffold dan la misma salida.
Alcance v1: TALLYING FOR ALL y REPLACING ALL; sin LEADING, FIRST,
CHARACTERS, BEFORE/AFTER.
Tests: charka-ir 26, charka-codegen 20, charka-shadow 18. fmt +
clippy limpios.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -3,6 +3,24 @@
|
||||
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): INSPECT — contar y reemplazar caracteres
|
||||
|
||||
El verbo de COBOL para analizar y limpiar campos de texto.
|
||||
|
||||
- IR: `Stmt::Inspect { target, op }` con `InspectOp::TallyingForAll`
|
||||
(cuenta apariciones y las suma a un contador) y
|
||||
`InspectOp::ReplacingAll` (reemplaza apariciones).
|
||||
- Parser: `INSPECT t TALLYING n FOR ALL lit` y
|
||||
`INSPECT t REPLACING ALL a BY b`. Una forma no soportada cae a
|
||||
`Stmt::Unknown`.
|
||||
- Codegen: `TALLYING` → `str::matches(..).count()`; `REPLACING` →
|
||||
`str::replace`.
|
||||
- Shadow: el intérprete cuenta / reemplaza el texto.
|
||||
- Corpus: programa nuevo `13-inspeccion`. Verificado: el intérprete
|
||||
sombra y el crate compilado dan la misma salida.
|
||||
- Alcance v1: `TALLYING FOR ALL` y `REPLACING ALL`; sin `LEADING`,
|
||||
`FIRST`, `CHARACTERS`, `BEFORE`/`AFTER`.
|
||||
|
||||
### feat(charka): STRING y UNSTRING — manejo de cadenas
|
||||
|
||||
Dos verbos comunes de COBOL para construir y partir cadenas.
|
||||
|
||||
Reference in New Issue
Block a user