#three #body #interpreter #language #go #wall #book

app three_body_lang

Rust编写的三体编程语言

14 个版本 (5 个重大更新)

0.6.1 2024年5月11日
0.4.5 2023年11月18日
0.1.0 2023年3月16日

#57 in 编程语言

MIT 许可证

15KB
151

3body-lang

License Package version Workflow HomeBrew

三体编程语言,用Rust编写

carbon

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

解释器的设计均来自作者 Thorsten Ball 的原书,同时感谢多个优秀开源仓库为本项目带来的灵感启发。

所有内容来自书籍 《用Go编写解释器》

灵感来自 wadackel/rs-monkey-lang + flaneur2020/pua-lang,这些项目也启发了 Monkey-Rust-2021-Edition

⚡️ 安装

$ brew install three-body

⚡️ 快速入门

$ 3body -h
$ 3body

语法概览

变量绑定
 <identifier><expression>;

示例:

给 岁月 以 "文明";

给 时光 以 "生命";
常量绑定
思想钢印 <identifier> = <expression>;

示例:

思想钢印 水 = "剧毒的";
前进(+) 运算符
给 自然选择 以 0;

自然选择 前进 4

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

宇宙.维度 降维 7

// > 3
布尔值
这是计划的一部分

// > true
主不在乎

// > false
函数定义
法则 (<parameter one>, <parameter two>, ...) { <block statement> };

示例:

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

黑暗森林()
循环语法
面壁 (<expression>) { <block statement> };

示例:

给 危机纪年 以 3;
给 面壁者 以 ["泰勒", "雷迪亚兹", "希恩斯", "罗辑"];

面壁 (危机纪年 < 400) {

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

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

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

面壁者

内置函数

打印
广播(<arg1>, <arg2>, ...): void

示例:

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

广播(三体世界坐标);

// > "半人马星系"
睡眠
冬眠(<arg1>): void

示例:

冬眠(1000);
深度相等
没关系的都一样(<arg1>, <arg2>): bool

示例:

没关系的都一样([1, [2, 3], { "4": 5 }], [1, [2, 3], { "4": 5 }]);

// > true

总结

词法 3body-lang 解释
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."

🤗 LLM

三体编程语言可以通过 "智子工程" 加载本地大语言模型进行推理。

能够使用三体编程语言Sophon加载本地大语言模型进行推理,灵感来自 wiki/sophon,并由 rustformers/llm 支持。

sophon

Sophon 初始化

智子工程({ "type": <string>, "path": <string>, "prompt": <string> })
属性 类型 解释
类型 string 模型类型
path string 模型所在路径
prompt string 提示词

推理

let 智子 = fn () { let instance = 智子工程({ "type": "llama", "path": "./Vicuna-13B-chinese.bin", "prompt": "你是三体文明的智子" }); return { "回答": fn (问题) { instance.infer(instance, 问题) } } }();

智子.回答("中国最佳科幻小说是哪个")

// > 推理中...
属性 类型 解释
model NativeObject::LLMModel 模型
character string 提示词角色
infer BuiltinFunc 执行推理
close BuiltinFunc 关闭会话

sophon workflow

⚛️ "中国最佳科幻小说是哪个" 的示例推理,请见 runs/8582743599

huantian2415/vicuna-13b-chinese-4bit-ggml 驱动的模型

开发

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

$ cd 3body-lang

$ cargo run --features="repl"
$ cargo test -p three_body_interpreter

有更多建议和想法 💡

创建问题: issues

Visual Studio Code 扩展

3body-vscode-language-server

许可证

MIT

依赖

~0.2–11MB
~71K SLoC