OBNC

OBNC 是 Niklaus Wirth 的编程语言 Oberon 的编译器。 它实现了 该语言 的 2016 年最终版本。OBNC 将用 Oberon 编写的源代码翻译为低级编程语言 C。 然后,使用宿主操作系统的 C 编译器和链接器编译和链接翻译后的代码。 构建命令 obnc 执行所有这些任务,并跟踪哪些文件需要编译或重新编译。

该编译器在 GNU General Public License 下发布,而库在 Mozilla Public License 下发布。 通过 Mozilla 许可证,可以使用 OBNC 编译的 Oberon 项目可以在任何许可证下发布。

请参阅 changelog 获取最新更新,并参阅 MD5SUMS 以验证下载文件的完整性。

下载

源代码包 obnc 包含编译器、构建工具、文档生成器和一个小型基本库,该库包含在 The Oakwood Guidelines for Oberon-2 Compiler Developers 中定义的七个模块。 它还包含一个(非标准)库 _ext_,该库扩展了基本库,提供了用于访问命令行参数和环境变量、打印到标准错误流、将数字转换为字符串以及反之亦然,以及用于自定义 trap handler 的模块。 _ext_ 库以前是作为单独的软件包分发的,但现在为了方便起见已包含在主软件包中。

obnc_0.17.2.tar.gz[](https://miasap.se/obnc/<downloads/obnc_0.17.2.tar.gz>) (228 KB)

Obnc 用 C 语言实现,应该可以在任何 POSIX 兼容的操作系统上编译。 要构建 obnc,还需要 Boehm-Demers-Weiser 垃圾回收器 GC。 更多说明包含在软件包根目录的 README 文件中。

对于 MS Windows 用户,还有一个预编译版本的 OBNC,其中包含所有依赖项(GC, SDL, Gawk 和 TCC):

obnc_0.17.2_win32.zip[](https://miasap.se/obnc/<downloads/obnc_0.17.2_win32.zip>) (2.3 MB)

注意:OBNC 0.15 或更早版本生成的输出文件与 OBNC 0.17 不兼容。 如果您使用了以前的版本,则需要重新编译您的模块;只需在使用新版本之前删除模块目录中生成的 .obnc 目录即可。

文本编辑器扩展

为了使编辑 Oberon 源文件更加愉快,我为文本编辑器 Gedit 创建了一种语言模式,该模式提供语法高亮显示,还提供了一个插件,该插件会在您键入时自动将保留字和预定义字从所有小写字母转换为大写字母。 这些扩展也与文本编辑器 Pluma 兼容,Pluma 是 Gedit 的一个分支,具有更传统的外观。

gtksourceview-oberon_1.0.0.zip[](https://miasap.se/obnc/<downloads/gtksourceview-oberon_1.0.0.zip>) (18.9 KB) gedit-convertwords_1.0.0.zip[](https://miasap.se/obnc/<downloads/gedit-convertwords_1.0.0.zip>) (16.7 KB)

文档

Oberon:

OBNC 命令:

OBNC – Frequently Asked Questions (FAQ)

文章

书籍

Object-Oriented Programming in Oberon-2 (PDF, 1.4 MB) by Hanspeter Mössenböck Oberon-2 具有对类型绑定过程(方法)的语言支持,否则它与 OBNC 目标的标准 Oberon 非常相似(文章 Data abstraction in Oberon 描述了如何在标准 Oberon 中实现类)。

联系方式

如果您发现错误或有改进建议,可以联系 karl@miasap.se。 有关 Oberon 的问题可以在 Stack OverflowOberon mailing list 上发布。 还有 Usenet 新闻组 comp.lang.oberon(这需要 Usenet 帐户和 Usenet newsreader,例如 [Mozilla Thunderbird](https://miasap.se/obnc/https:/www.thunderbird.net))。

✅ Javascript free | ✅ Cookie free ---|--- *[C]: The C Programming Language *[POSIX]: Portable Operating System Interface *[GC]: Boehm-Demers-Weiser Garbage Collector *[ETHZ]: Eidgenössische Technische Hochschule Zürich