Arquitectura del compilador¶
Pipeline¶
flowchart LR
A[Fuente .aym] --> B[Lexer]
B --> C[Parser]
C --> D[AST]
D --> E[Semántica]
E --> F[Codegen]
F --> G[NASM + GCC/LD]
G --> H[Binario nativo]
Componentes¶
| Módulo | Ruta | Responsabilidad |
|---|---|---|
| Lexer | compiler/lexer/ |
Tokenización |
| Parser | compiler/parser/ |
Análisis sintáctico y construcción AST |
| AST | compiler/ast/ |
Estructuras intermedias del programa |
| Semántica | compiler/semantic/ |
Validación de tipos, símbolos y reglas |
| Codegen | compiler/codegen/ |
Emisión de ASM/objeto/binario |
| Backend | compiler/backend/ |
Coordinación de modos de salida y pipeline |
| Utilidades | compiler/utils/ |
Diagnósticos, procesos, resolver de módulos |
| Runtime | runtime/ |
Soporte de ejecución para built-ins |
Artefactos intermedios¶
*.asm*.o/*.obj- binario final
Decisiones de diseño vigentes¶
- Backend principal nativo basado en NASM.
- Integración de diagnósticos estructurados en frontend.
- Pipeline por etapas con métricas y timeout configurable.
- Resolución de dependencias vinculada a
aym.tomlyaym.lock.
Observabilidad¶
--time-pipelinepara tiempos por etapa.--time-pipeline-jsonpara exporte estructurado.--diagnostics-jsonpara integración con tooling externo.