17 releases
0.6.5 | Nov 7, 2024 |
---|---|
0.6.3 | Oct 12, 2024 |
0.6.1 | May 11, 2024 |
0.4.5 | Nov 18, 2023 |
0.1.0 | Mar 16, 2023 |
#49 in Programming languages
250 downloads per month
15KB
151 lines
3body-lang
三体编程语言 Three Body Language written in Rust
目前三体编程语言已经实现了如 "面壁"、"破壁"、"思想钢印"、"冬眠" 等语法,不过仍然是一个概念级的编程语言。
解释器的设计均来自于作者 Thorsten Ball 的原书,同时很感谢多个优秀开源仓库为本项目带来的灵感启发。
All from the book Writing An Interpreter In Go
Inspired by wadackel/rs-monkey-lang + flaneur2020/pua-lang which also inspired Monkey-Rust-2021-Edition
⚡️ Installation
$ brew install three-body
⚡️ Quick Start
$ 3body -h
$ 3body
Syntax Overview
Variable bindings 变量绑定
给 <identifier> 以 <expression>;
example:
给 岁月 以 "文明";
给 时光 以 "生命";
Constant bindings 常量绑定
思想钢印 <identifier> = <expression>;
example:
思想钢印 水 = "剧毒的";
前进(+) 运算符
给 自然选择 以 0;
自然选择 前进 4
// > 4
降维(-) 运算符
给 宇宙 以 { "维度": 10 };
宇宙.维度 降维 7
// > 3
Boolean 布尔值
这是计划的一部分
// > true
主不在乎
// > false
Function 函数定义
法则 (<parameter one>, <parameter two>, ...) { <block statement> };
example:
给 黑暗森林 以 法则() {
给 基本公理 以 ["生存是文明的第一需要", "文明不断增长和扩张,但宇宙中的物质总量保持不变"];
基本公理
}
黑暗森林()
Loop 循环语法
面壁 (<expression>) { <block statement> };
example:
给 危机纪年 以 3;
给 面壁者 以 ["泰勒", "雷迪亚兹", "希恩斯", "罗辑"];
面壁 (危机纪年 < 400) {
危机纪年 = 危机纪年 + 1;
if (危机纪年 == 8) {
面壁者 = rest(面壁者);
延绪;
}
if (危机纪年 == 23) {
面壁者 = rest(面壁者);
延绪;
}
if (危机纪年 == 205) {
面壁者 = rest(面壁者);
}
if (危机纪年 == 205) {
破壁;
}
}
面壁者
Built-in Functions
广播(<arg1>, <arg2>, ...): void
example:
给 三体世界坐标 以 "半人马星系";
广播(三体世界坐标);
// > "半人马星系"
Sleep
冬眠(<arg1>): void
example:
冬眠(1000);
Deep-Equal
没关系的都一样(<arg1>, <arg2>): bool
example:
没关系的都一样([1, [2, 3], { "4": 5 }], [1, [2, 3], { "4": 5 }]);
// > true
Summary
Token | 3body-lang | Explanation |
---|---|---|
let | 给 | "give" |
= | 以 | "as" |
const | 思想钢印 | "thoughtcontrou" |
+ | 前进 | "go forward" |
- | 降维 | "dimension reduction" |
true | 这是计划的一部分 | "It's part of the plan." |
false | 主不在乎 | "The Lord doesn't care." |
fn | 法则 | "rule" |
while | 面壁 | "face the wall" |
break | 破壁 | "break the wall" |
continue | 延绪 | "continue" |
广播 | "broadcast" | |
sleep | 冬眠 | "hibernation" |
clear | 二向箔清理 | "two-way foil cleaning" |
exit | 毁灭 | "destroy" |
deep-equal | 没关系的都一样 | "It's okay. It's all the same." |
🧶 Threading
三体编程语言可以通过 "程心" 创建并管理线程。
Able to use threading to create and handle threads.
Threads Create
给 cx 以 程心();
cx.thread(星环公司, ["掩体工程", 0, 11])
cx.thread(星环公司, ["研制曲率飞船", 5, 11])
Threads Await
给 cx 以 程心();
给 秘密研究 以 cx.thread(星环公司, ["重启光速飞船的研究", 11, 66]);
cx.join(秘密研究)
⚛️ Example threading of "星环公司" in runs/11302243115
Development
$ git clone https://github.com/rustq/3body-lang.git
$ cd 3body-lang
$ cargo run --features="repl"
$ cargo test -p three_body_interpreter
有更多建议和想法 💡
Create issues: issues
Visual Studio Code Extension
License
Dependencies
~0.2–6.5MB
~40K SLoC