1 个不稳定版本
0.1.0 | 2023年3月5日 |
---|
#2208 在 命令行工具
125KB
3.5K SLoC
Wenyan-rs
Wenyan-lang 的字节码解释器。
用法
wyr path/to/filename.wy
示例
吾有一術 名之曰「階乘」 欲行是術 必先得一數 曰「甲」 乃行是術曰
若「甲」等於一者。
乃得「甲」
若非
減「甲」以一名之曰「乙」
施「階乘」於「乙」名之曰「丙」
乘「丙」以「甲」。名之曰「丁」
乃得「丁」
云云
是謂「階乘」之術也
施「階乘」於五書之
输出
120
该项目仍在开发中,许多功能尚未实现。您可以在 示例 文件夹中查看更多支持的示例。
差异
在线 IDE 有许多友好的增强功能,我的某些规则可能更加严格,以便于实现。
变量需要用单引号括起来。
吾有一數曰五名之曰「甲」 // ✅
吾有一數曰五名之曰甲 // ❌
昔之「甲」者今其是矣 // ✅
昔之甲者今其是矣 // ❌
禁用部分定义的变量。
吾有二數曰五曰六 // ✅
吾有二數曰五曰六名之曰「甲」名之曰「乙」 // ✅
吾有二數曰五曰六名之曰「甲」 // ❌
具有隐式块作用域。
吾有一數曰十名之曰「甲」
若陽者
吾有一數曰一名之曰「甲」
加「甲」以五書之
云云
加「甲」以五書之
输出与在线 IDE
-6
-6
+6
+15
布尔代数语句始终得到布尔值。
吾有一數曰五名之曰「甲」
吾有一數曰六名之曰「乙」
夫「甲」「乙」中有陽乎
書之
吾有一數曰五名之曰「甲」
吾有一數曰六名之曰「乙」
夫「甲」「乙」中無陰乎
書之
输出与在线 IDE
-5
-6
+true
+true
将单个 数据 作为表达式处理,并将其推入堆栈。
吾有一數曰五名之曰「甲」
「甲」書之
「「黃河流水鳴濺濺」」書之
输出与在线 IDE
+5
+黃河流水鳴濺濺
将 '也' 视为一种空白字符,您可以使用它使代码更易于阅读,但不能将其用作块的结束符。
Function will be added into stack, and "書之" will drain values produced by current function.
```bash
吾有一數曰五名之曰「甲」
吾有一術名之曰「你好」是術曰
夫「「世界,你好」」書之
是謂 「你好」 之術也
施「你好」
在 夫「「世界,你好」」書之
之后,堆栈将是
[2] <fn 你好>
[1] Value::Number(5)
[0] <global context>
当函数 你好
返回时,堆栈将是
[1] Value::Number(5)
[0] <global context>
利用我们自己的虚拟机,它具有报告更多类型运行时错误的能力。
吾有二言曰『你』曰『好』名之曰「甲」名之曰「乙」
減「甲」以「乙」書之
输出
[line 2] errors: two string can only be added
未来工作
还有许多功能尚未实现!其中一部分在 此问题 中列出。
鸣谢
许可证
依赖关系
~2.6–4MB
~66K SLoC