1 个不稳定版本
0.1.1 | 2022年2月27日 |
---|---|
0.1.0 |
|
783 在 编程语言 中
19KB
319 行
OOLANG
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