Central Docs
Catálogo Inicio

Directivas condicionales

El preprocesador selecciona líneas antes del lexer y del parser de Bagron. Solo admite una condición abierta a la vez:

#if OS, "windows"
func platform() int32:
    return 1
#elif ARCH, "amd"
func platform() int32:
    return 2
#else
func platform() int32:
    return 0
#end

Las directivas válidas son #if, #elif, #else y #end. Las condiciones usan únicamente OS o ARCH y una cadena. OS compara el sistema del target; ARCH normaliza alias como amd/amd64/x86_64, x86/i386 y arm/arm64.

Las ramas no seleccionadas se reemplazan por líneas vacías para conservar las posiciones de los diagnósticos, pero su contenido no se analiza como Bagron. Por eso pueden contener una declaración válida solo para otro target.

No se permiten bloques anidados, condiciones compuestas ni argumentos después de #else o #end. Un #elif debe aparecer antes de #else y cada bloque debe cerrarse.

#end también cierra bloques #prep; por esa ambigüedad no anides un bloque de ensamblador dentro de un #if. Separa las fuentes o módulos por target.