three_body_lang 0.4.0

Three Body Language written in Rust
three_body_lang-0.4.0 is not a library.
Visit the last successful build: three_body_lang-0.3.1

3body-lang

License Package version Workflow

三体编程语言 Three Body Language written in Rust

carbon

目前三体编程语言已经实现了如 "面壁"、"破壁"、"思想钢印"、"冬眠" 等语法,不过仍然是一个概念级的编程语言。

解释器的设计均来自于作者 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

Program in REPL

$ 3body

Get help message

$ 3body -h

Syntax overview

Variable bindings

Format
给 <identifier> 以 <expression>;
Example
给 岁月 以 "文明";

给 时光 以 "生命";

Constant bindings

Format
思想钢印 <identifier> = <expression>;
Example
思想钢印 水 = "剧毒的";

Operators

前进(+)运算符
给 自然选择 以 0;

自然选择 前进 4

// > 4
降维(-)运算符
给 宇宙 以 { "维度": 10 };

宇宙.维度 降维 7

// > 3

Boolean

这是计划的一部分

// > true
主不在乎

// > false

Function

Format
法则 (<parameter one>, <parameter two>, ...) { <block statement> };
Example
给 黑暗森林 以 法则() {
    给 基本公理 以 ["生存是文明的第一需要", "文明不断增长和扩张,但宇宙中的物质总量保持不变"];
    基本公理
}

黑暗森林()

Loop

Format
面壁 (<expression>) { <block statement> };
Example
给 危机纪年 以 3;
给 面壁者 以 ["泰勒", "雷迪亚兹", "希恩斯", "罗辑"];

面壁 (危机纪年 < 400) {

    危机纪年 = 危机纪年 + 1;

    if (危机纪年 == 8) {
        面壁者 = rest(面壁者);
        延绪;
    }
    if (危机纪年 == 23) {
        面壁者 = rest(面壁者);
        延绪;
    }
    if (危机纪年 == 205) {
        面壁者 = rest(面壁者);
    }

    if (危机纪年 == 205) {
        破壁;
    }
}

面壁者

Built-in Functions

Print 广播
给 三体世界坐标 以 "半人马星系";

广播(三体世界坐标);

// > "半人马星系"
Sleep 冬眠
冬眠(1000);
Clear 二向箔清理
二向箔清理();
Exit 毁灭
毁灭();
Deep Equal 没关系的都一样
没关系的都一样([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"
print 广播 "broadcast"
sleep 冬眠 "hibernation"
clear 二向箔清理 "two-way foil cleaning"
exit 毁灭 "destroy"
deep-equal 没关系的都一样 "It's okay. It's all the same."

Development

$ git clone https://github.com/rustq/3body-lang.git

$ cd 3body-lang

$ cargo run --features="repl"
$ make test

有更多建议和想法 💡

Create issues: issues

License

MIT