An Oberon-07 to LLVM IR compiler.
LLVM IR code emitted by obc can then be compiled to native binary modules for a number of different architectures by using the LLVM llc compiler and the LLVM lld linker. Possible target architectures for LLVM's backend stack include AArch64, ARM, PowerPC, RISC-V, x86_32, and x86_64.
WebAssembly modules are also a possible target when the WebAssembly port of lld is used.
Oberon-07 is one of the amazing programming languages created by Prof. Niklaus Wirth, who unfortunately, passed away on January 1st. 2024. A summary of the projects of Prof. Niklaus Wirth between 1962 and 1999 can be found here.
obc is only my first take on writing a compiler and most probably nothing too useful will come out of it.
To get really serious about Oberon and its future, take a GOOD look at Oberon+.
"This has led NASA scientists to conclude that four of Uranus’ largest moons—Ariel, Umbriel, Titania, and Oberon —probably contain water oceans below their icy crusts. These oceans are likely dozens of kilometers deep and probably fairly salty in being sandwiched between the upper ice and inner rock core. These inner cores are likely producing enough heat from radioactive decay to create layers of liquid water, the scientists say. Additionally, chlorides, as well as ammonia, are likely abundant in the oceans of the icy giant’s largest moons and may be helping to keep them unfrozen."
from ArsTechnica.
To build obc, CMake version 3.20 or later is required.