Descripción de Arquitectura del Sistema

1. Visión general

AymaraLang está compuesto por un compilador modular (aymc), un runtime mínimo y herramientas de apoyo. La arquitectura sigue el flujo clásico de compiladores con módulos desacoplados.

2. Arquitectura funcional

flowchart LR A[Fuente .aym] --> B[Lexer] B --> C[Parser] C --> D[AST] D --> E[Semántica] E --> F[Codegen NASM] F --> G[Linker]
Módulo Responsabilidad Entradas Salidas
Lexer Tokenización de código fuente .aym Tokens
Parser Construcción de AST Tokens AST
Semantic Análisis semántico y tipos AST AST validado + símbolos
Codegen Generación de NASM AST validado .asm
Linker Ensamblado/enlace .asm Binario

3. Arquitectura física (deployment)

  • Entorno local: Linux/Windows.
  • Dependencias: NASM, GCC/LD o MinGW, compilador C++17.
  • Artefactos: .asm, binario nativo, logs de error.

4. Interfaces clave

  • CLI: aymc [opciones] archivo.aym.
  • Sistema de archivos: lectura de fuentes, escritura de artefactos.
  • Runtime: funciones básicas de E/S utilizadas por el ejecutable.

5. Datos e información

  • Tokens: tipo, texto, línea y columna.
  • AST: nodos de expresiones y sentencias.
  • Símbolos: tablas de alcance para variables y funciones.

6. Restricciones de diseño

  • C++17 como estándar base.
  • Codegen x86_64 (NASM) como backend principal.