Pipeline del compilador
Pipeline del compilador
Enlace a esta sección- Descubrimiento: la CLI busca
oxido.tomldeclarativo desde la fuente hasta la raíz Git, canonicaliza y resuelve el modo/edición sin ejecutar comandos de configuración. - Fuente: leer
.oxcon límite de tamaño y conservar bytes, líneas y offsets UTF-8. - Lexer: tokens Rust base, keywords alias, raw identifiers, comentarios/literales y grupos balanceados; detectar controles bidi.
- Modo: resolver configuración de proyecto y cabecera; rechazar falta o conflicto antes del cuerpo.
- Normalización estructural: convertir bloques indentation a grupos de bloque Rust, añadir terminadores definidos y normalizar keywords fuera de regiones opacas.
- Validación sintáctica: generar token stream/AST; Syn
parse_filevalida el Rust resultante confull+parsing. - Backend: emitir Rust estándar con
proc_macro2/quote; formatear estructuralmente conprettyplease. No interpolar input como texto. - Mapa: asociar spans de fragmentos fuente y generado; conservar rangos de item para tokens sintéticos.
- Cargo: crea un proyecto Cargo aislado; admite dependencias locales
pathdeclaradas enoxido.toml, validadas dentro de la raíz. EjecutacheckorunconCommand, argv separados,--offline,--lockedy--message-format=json. Los crates de registro y el lockfile persistente del proyecto siguen pendientes; compilar una dependencia local puede ejecutar subuild.rs/macro procedural únicamente por una acción CLI explícita. - Diagnósticos: parsear JSON, convertir spans generados a
.ox, conservar errores externos no mapeables. - Resultado: devolver estado/código de salida real. No ejecutar binario salvo comando explícito
ejecutaroprobar.
Fuente de verdad por tipo de error
Enlace a esta sección- Óxido detecta modo, alias, indentación, delimitadores, estructura propia y límites.
- Syn detecta sintaxis Rust inválida en el archivo/token stream transformado.
rustcdetecta resolución, tipos, traits, ownership, borrowing, macros/expansión y errores semánticos.- Cargo resuelve dependencias, perfiles, builds y procesos del proyecto.
El parser Syn no es borrow checker ni type checker. build.rs y macros procedurales ejecutan código durante compilación; no se compila un workspace no confiable automáticamente.
Importar/exportar
Enlace a esta secciónExportar emite el .rs generado y un mapa lateral sin rutas absolutas. Los comentarios ordinarios se recuperan del lexer y se insertan tras el formateo estructural; las posiciones del mapa se ajustan a las líneas resultantes. Importar acepta funciones libres que parsean y regeneran el mismo Rust semántico; conserva el texto de origen y solo reemplaza fn por funcion, con lo que mantiene comentarios y formato de entrada. Los comentarios ordinarios dentro de grupos opacos de macros/atributos se rechazan con diagnóstico explícito hasta que puedan conservarse sin tocar la DSL. La prueba CLI verifica la ida y vuelta y la ubicación de comentarios.