Central Docs
Catálogo Inicio

Tablas y cargas

Una tabla tiene una fila de encabezado, una fila separadora y una o más filas de datos:

@table registers
| name | opcode | bits |
________________________
| mov  | 1      | 32   |
________________________
| add  | 2      | 32   |
@end

La separación puede tener cualquier cantidad de _. Se requiere una separación entre filas y cada fila debe terminar en | antes del salto de línea.

Acceso a tablas

-> $registers.name, IDENT
-> put $registers.opcode 0000

La primera instrucción compara el token actual con name y selecciona la fila. Los accesos posteriores leen datos de esa fila.

El acceso indexado estático no consume un token MIR:

-> fits $registers.name[rax].bits

La columna selectora debe tener claves únicas cuando se usa como índice. Las demás columnas pueden repetir valores. El índice se construye al primer uso.

Cargar fuentes

@LOAD "tables.rif"
@LOAD "rules.rif"

@LOAD resuelve rutas relativas, exige la extensión .rif, detecta ciclos y conserva el alcance de la declaración. Un archivo cargado puede aportar tablas y Rules, pero no configuración raíz.

Tablas en paquetes

Al crear un .pack, las fuentes cargadas quedan en el manifiesto junto con su orden de dependencias. Un paquete precompilado guarda las filas en SQLite. Al abrirse, RIF reconstruye la matriz y los índices perezosos.