feat(charka): STRING y UNSTRING — manejo de cadenas
Dos verbos comunes de COBOL para construir y partir cadenas.
- IR: Stmt::StringConcat { sources, into } y
Stmt::Unstring { source, delimiter, into }.
- Parser: STRING a b DELIMITED BY SIZE INTO t END-STRING y
UNSTRING s DELIMITED BY d INTO a b c END-UNSTRING.
- Codegen: STRING -> format! concatenado; UNSTRING -> un bloque que
parte con str::split y reparte los trozos a los destinos.
- Shadow: el intérprete concatena / parte el texto y lo reparte.
- Corpus: programa nuevo 12-cadenas. Verificado: el intérprete sombra
y el crate compilado por scaffold dan la misma salida.
Alcance v1: STRING con DELIMITED BY SIZE (otros delimitadores se
ignoran); sin WITH POINTER ni ON OVERFLOW.
Tests: charka-ir 25, charka-codegen 19, charka-shadow 17. fmt +
clippy limpios.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -3,6 +3,22 @@
|
||||
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): STRING y UNSTRING — manejo de cadenas
|
||||
|
||||
Dos verbos comunes de COBOL para construir y partir cadenas.
|
||||
|
||||
- IR: `Stmt::StringConcat { sources, into }` y
|
||||
`Stmt::Unstring { source, delimiter, into }`.
|
||||
- Parser: `STRING a b DELIMITED BY SIZE INTO t END-STRING` y
|
||||
`UNSTRING s DELIMITED BY d INTO a b c END-UNSTRING`.
|
||||
- Codegen: `STRING` → `format!` concatenado; `UNSTRING` → un bloque
|
||||
que parte con `str::split` y reparte los trozos.
|
||||
- Shadow: el intérprete concatena / parte el texto y lo reparte.
|
||||
- Corpus: programa nuevo `12-cadenas`. Verificado: el intérprete
|
||||
sombra y el crate compilado dan la misma salida.
|
||||
- Alcance v1: `STRING` con `DELIMITED BY SIZE` (los demás
|
||||
delimitadores se ignoran); sin `WITH POINTER` ni `ON OVERFLOW`.
|
||||
|
||||
### feat(charka): OCCURS — tablas y referencias con subíndice
|
||||
|
||||
Los arrays de COBOL, que antes el transpilador descartaba en silencio.
|
||||
|
||||
Reference in New Issue
Block a user