#编程语言 #字符 #指令 #奥秘 #不同 #变体 #基于栈

bin+lib OOLANG

一种奥秘的基于栈的编程语言,其中所有指令都是字符'O'的不同变体

1 个不稳定版本

0.1.1 2022年2月27日
0.1.0 2022年2月26日

783编程语言

MIT 许可证

19KB
319

OOLANG

GitHub Workflow Status (branch) GitHub Crates.io Crates.io

OOLANG 是一种奥秘的基于栈的编程语言,其中所有指令/命令都是不同的 Unicode O 字符

使用方法

我们在 https://oolang.tech 提供了一个自定义的 Web IDE,可以在浏览器中进行实验。

您也可以使用 Cargo 在您的系统上安装 OOLANG

cargo install oolang

OOLANG 文件以 .oo 结尾,并包含由单个 Unicode 符号指定的多个命令。任何其他字符都将被忽略。使用 # 字符支持注释,该字符注释直到行尾。

oorun file.oo 将执行您的 OOLANG 程序,从 stdin 读取并输出到 stdout

语言规范

OOLANG 模拟 栈机器,与 JVM 或 Python 的字节码解释器的工作方式相似。

虚拟机由一个字节数组栈和 256 个字节的寻址内存组成。有效的 OOLANG 程序可能由以下 10 个命令的任何组合组成

命令 Unicode 字符名称 命令名称 描述
O 大写拉丁字母 O PUSH 将值 1 压入栈顶
0 数字零 POP 从栈顶弹出一个值,并丢弃它
Ǿ 带横线和重音的大写拉丁字母 O INC 弹出栈顶的值,增加它,然后推入结果
切罗基字母 Wi DEC 弹出栈顶的值,减少它,然后推入结果
粗大圆圈 ADD 弹出栈顶的两个值,将它们相加,然后推入结果
𐍉 哥特字母 Othal JNZ 如果第二高的值非零,则跳转到栈顶的地址
带环的大写拉丁字母 O JZ 如果第二高的值是零,则跳转到栈顶的地址
靶心 LOAD 从堆栈中弹出,并将指定内存地址处的值压入堆栈
大圆圈 存储 从堆栈中弹出顶部两个值,将第二个值存储在第一个值指定的地址处
括号内的拉丁小写字母O 读取 从stdin读取下一个字节并将其压入堆栈顶部,如果stdin为空,则为0
拉丁下标小写字母O 写入 从堆栈中弹出并将值写入stdin作为ASCII字符

架构

该语言和解释器是用Rust编写的。编译后的二进制可执行文件作为命令行程序,但解释器crate也公开了公共API。当编译为WebAssembly时,此API用于在浏览器中提供Web IDE的功能。

依赖项

~555KB