feat(charka): charka-lexer — tokenizador de COBOL
Primera etapa del transpilador COBOL→Rust (Fase D del plan macro): texto COBOL → secuencia de Token. Lexer deliberadamente tonto (emite Word para todo identificador, la clasificación es del parser). Tokens Word/Number/String/Period/Symbol con línea+columna; soporta formato fijo (tarjeta de 80 columnas) y libre; comentarios, comillas dobladas, operadores de 1 y 2 caracteres. LexError tipado. 17 tests; clippy limpio. Limitación v1: sin continuación de literales entre líneas. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -8,9 +8,10 @@ embebido, dialectos IBM Enterprise) es un esfuerzo multi-mes.
|
||||
|
||||
## Crates
|
||||
|
||||
| crate | tipo | rol |
|
||||
| ------------ | ---- | ------------------------------------------------------------ |
|
||||
| `charka-bcd` | lib | Aritmética decimal de punto fijo con semántica COBOL: `Picture`, `Decimal`, redondeo, `ON SIZE ERROR` |
|
||||
| crate | tipo | rol |
|
||||
| -------------- | ---- | ------------------------------------------------------------ |
|
||||
| `charka-bcd` | lib | Aritmética decimal de punto fijo con semántica COBOL: `Picture`, `Decimal`, redondeo, `ON SIZE ERROR` |
|
||||
| `charka-lexer` | lib | Tokenizador COBOL: formato fijo (tarjeta de 80 columnas) y libre |
|
||||
|
||||
## charka-bcd
|
||||
|
||||
@@ -26,14 +27,30 @@ reproducir esa aritmética dígito a dígito.
|
||||
- Determinista, sin dependencias de plataforma — mismo programa, mismos
|
||||
dígitos, en cualquier máquina.
|
||||
|
||||
## charka-lexer
|
||||
|
||||
Primera etapa del pipeline: texto COBOL → secuencia de `Token`.
|
||||
|
||||
- **Lexer tonto**: no conoce keywords ni la cláusula `PICTURE` — emite
|
||||
`Word` para todo identificador; la clasificación es del parser.
|
||||
- Tokens: `Word` (con guiones internos, `WORKING-STORAGE`), `Number`
|
||||
(sin signo), `String` (comillas dobladas colapsadas), `Period`,
|
||||
`Symbol` (`( ) , ; :` y operadores `+ - * / ** = < > <= >= <>`).
|
||||
- Dos formatos: **fijo** (cols 1-6 secuencia, 7 indicadora, 8-72
|
||||
código, 73-80 id) y **libre**. Comentarios por col 7 (`*`/`/`) o `*`
|
||||
inicial en formato libre.
|
||||
- Cada token lleva línea/columna 1-based. `LexError` tipado.
|
||||
- Limitación v1: sin continuación de literales entre líneas
|
||||
(indicador `-`).
|
||||
|
||||
## Estado
|
||||
|
||||
`charka-bcd` implementado y verde (22 tests). **Pendiente** — el grueso
|
||||
del transpilador (esfuerzo multi-mes, Fase D del plan macro):
|
||||
`charka-bcd` (22 tests) y `charka-lexer` (17 tests) implementados y
|
||||
verdes. **Pendiente** — el resto del transpilador (Fase D del plan
|
||||
macro):
|
||||
|
||||
| crate pendiente | rol |
|
||||
| ----------------- | ---------------------------------------------------- |
|
||||
| `charka-lexer` | tokenizador COBOL (formato fijo de columnas) |
|
||||
| `charka-parser` | parser COBOL'85 → AST (luego CICS + SQL embebido) |
|
||||
| `charka-ir` | representación intermedia |
|
||||
| `charka-codegen` | emisión de Rust |
|
||||
|
||||
Reference in New Issue
Block a user