OBNC: Un Compilador Oberon
OBNC es un compilador para el lenguaje de programación Oberon de Niklaus Wirth, que implementa la versión final del lenguaje de 2016. Traduce el código fuente escrito en Oberon al lenguaje de programación C de bajo nivel. El código traducido se compila y enlaza luego utilizando el compilador y el enlazador C del sistema operativo host. El comando de compilación `obnc` realiza todas estas tareas y lleva un registro de qué archivos necesitan ser compilados o recompilados. El compilador se publica bajo la Licencia Pública General GNU, mientras que las bibliotecas se publican bajo la Licencia Pública Mozilla. Con la licencia Mozilla, un proyecto Oberon compilado con OBNC puede publicarse bajo cualquier licencia. El paquete fuente `obnc` contiene el compilador con una herramienta de compilación, un generador de documentación y una pequeña biblioteca básica de siete módulos definidos en las Pautas de Oakwood para Desarrolladores de Compiladores Oberon-2. También contiene una biblioteca (no estándar) llamada `ext` que amplía la biblioteca básica con módulos para acceder a argumentos de línea de comandos y variables de entorno, imprimir en la corriente de error estándar, convertir números a cadenas y viceversa, y para personalizar el manejador de excepciones. La biblioteca `ext` se distribuía anteriormente como un paquete separado, pero ahora se ha incluido en el paquete principal por conveniencia. OBNC está implementado en C y debería compilar en cualquier sistema operativo compatible con POSIX. Para compilar OBNC, también necesita el recolector de basura Boehm-Demers-Weiser GC. Se incluyen más instrucciones en el archivo README en el directorio raíz del paquete. Para usuarios de MS Windows, también hay una versión precompilada de OBNC con todas las dependencias incluidas (GC, SDL, Gawk y TCC). Nota: Los archivos de salida generados por la versión 0.15 o anterior de OBNC no son compatibles con OBNC 0.17. Si ha utilizado una versión anterior, sus módulos deben recompilarse; simplemente elimine el directorio .obnc generado en los directorios de sus módulos antes de usar la nueva versión.