Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rustq/3body-lang
三体编程语言 Three Body Language written in Rust
https://github.com/rustq/3body-lang
3bodyproblem compiler language programming-language rust threebody threebodyproblem
Last synced: about 1 month ago
JSON representation
三体编程语言 Three Body Language written in Rust
- Host: GitHub
- URL: https://github.com/rustq/3body-lang
- Owner: rustq
- License: mit
- Created: 2023-02-08T17:41:45.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-11-04T15:08:39.000Z (about 1 month ago)
- Last Synced: 2024-11-04T16:18:34.551Z (about 1 month ago)
- Topics: 3bodyproblem, compiler, language, programming-language, rust, threebody, threebodyproblem
- Language: Rust
- Homepage:
- Size: 240 KB
- Stars: 181
- Watchers: 2
- Forks: 5
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- awesome-rust - 3body-lang - The Three Body Language (Libraries / Scripting)
README
# 3body-lang
[![License](https://img.shields.io/badge/license-MIT%20License-blue.svg)](https://opensource.org/licenses/MIT)
[![Package version](https://img.shields.io/crates/v/three_body_lang.svg)](https://crates.io/crates/three_body_lang)
[![Workflow](https://github.com/rustq/3body-lang/actions/workflows/CI.yml/badge.svg)](https://github.com/rustq/3body-lang/actions)
[![HomeBrew](https://img.shields.io/homebrew/v/three-body
)](https://formulae.brew.sh/formula/three-body)三体编程语言 Three Body Language written in Rust
![carbon](https://user-images.githubusercontent.com/11075892/218237230-18000cfe-8db1-4bf7-979d-a11695039f35.png)
目前三体编程语言已经实现了如 "面壁"、"破壁"、"思想钢印"、"冬眠" 等语法,不过仍然是一个概念级的编程语言。
解释器的设计均来自于作者 Thorsten Ball 的原书,同时很感谢多个优秀开源仓库为本项目带来的灵感启发。
All from the book [Writing An Interpreter In Go](https://interpreterbook.com/)
Inspired by [wadackel/rs-monkey-lang](https://github.com/wadackel/rs-monkey-lang) + [flaneur2020/pua-lang](https://github.com/flaneur2020/pua-lang) which also inspired [Monkey-Rust-2021-Edition](https://github.com/meloalright/Monkey-Rust-2021-Edition)
## ⚡️ Installation
```shell
$ brew install three-body
```## ⚡️ Quick Start
```shell
$ 3body -h
``````shell
$ 3body
```## Syntax Overview
##### Variable bindings 变量绑定
```shell
给 以 ;
````example:`
```rust
给 岁月 以 "文明";给 时光 以 "生命";
```##### Constant bindings 常量绑定
```shell
思想钢印 = ;
````example:`
```rust
思想钢印 水 = "剧毒的";
```##### 前进(+) 运算符
```rust
给 自然选择 以 0;自然选择 前进 4
// > 4
```##### 降维(-) 运算符
```rust
给 宇宙 以 { "维度": 10 };宇宙.维度 降维 7
// > 3
```##### Boolean 布尔值
```rust
这是计划的一部分// > true
``````rust
主不在乎// > false
```##### Function 函数定义
```shell
法则 (, , ...) { };
````example:`
```rust
给 黑暗森林 以 法则() {
给 基本公理 以 ["生存是文明的第一需要", "文明不断增长和扩张,但宇宙中的物质总量保持不变"];
基本公理
}黑暗森林()
```##### Loop 循环语法
```shell
面壁 () { };
````example:`
```rust
给 危机纪年 以 3;
给 面壁者 以 ["泰勒", "雷迪亚兹", "希恩斯", "罗辑"];面壁 (危机纪年 < 400) {
危机纪年 = 危机纪年 + 1;
if (危机纪年 == 8) {
面壁者 = rest(面壁者);
延绪;
}
if (危机纪年 == 23) {
面壁者 = rest(面壁者);
延绪;
}
if (危机纪年 == 205) {
面壁者 = rest(面壁者);
}if (危机纪年 == 205) {
破壁;
}
}面壁者
```## Built-in Functions
```shell
广播(, , ...): void
````example:`
```rust
给 三体世界坐标 以 "半人马星系";广播(三体世界坐标);
// > "半人马星系"
```##### Sleep
```shell
冬眠(): void
````example:`
```rust
冬眠(1000);
```##### Deep-Equal
```shell
没关系的都一样(, ): bool
````example:`
```rust
没关系的都一样([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."|## 🧶 Threading
三体编程语言可以通过 "程心" 创建并管理线程。
Able to use threading to create and handle threads.
#### Threads Create
```rust
给 cx 以 程心();cx.thread(星环公司, ["掩体工程", 0, 11])
cx.thread(星环公司, ["研制曲率飞船", 5, 11])
```#### Threads Await
```rust
给 cx 以 程心();给 秘密研究 以 cx.thread(星环公司, ["重启光速飞船的研究", 11, 66]);
cx.join(秘密研究)
```⚛️ Example threading of "星环公司" in [runs/11302243115](https://github.com/rustq/3body-lang/actions/runs/11302243115/job/31437809217)
[//]: # ()
[//]: # (## 🤗 LLM)[//]: # ()
[//]: # (三体编程语言可以通过 "智子工程" 加载本地大语言模型进行推理。)[//]: # ()
[//]: # (Able to use three body language sophon to load a local large language model for reasoning, inspired by [wiki/sophon](https://three-body-problem.fandom.com/wiki/Sophon) and powered by [rustformers/llm](https://github.com/rustformers/llm).)[//]: # ()
[//]: # (![sophon](https://github.com/rustq/3body-lang/assets/11075892/4579ecbe-3e52-4b0f-8f0b-31e3b071a79b))[//]: # ()
[//]: # (#### Sophon Initializing)[//]: # ()
[//]: # (```shell)[//]: # (智子工程({ "type": , "path": , "prompt": }))
[//]: # (```)
[//]: # ()
[//]: # (|property|type|Explanation|)[//]: # (|---|---|---|)
[//]: # (|type|string|模型类型|)
[//]: # (|path|string|模型所在路径|)
[//]: # (|prompt|string|提示词|)
[//]: # (#### Reasoning)
[//]: # ()
[//]: # (```rust)[//]: # (let 智子 = fn () { let instance = 智子工程({ "type": "llama", "path": "./Vicuna-13B-chinese.bin", "prompt": "你是三体文明的智子" }); return { "回答": fn (问题) { instance.infer(instance, 问题) } } }();)
[//]: # ()
[//]: # (智子.回答("中国最佳科幻小说是哪个"))[//]: # ()
[//]: # (// > 推理中...)[//]: # (```)
[//]: # ()
[//]: # (|property|type|Explanation|)[//]: # (|---|---|---|)
[//]: # (|model||模型|)
[//]: # (|character|string|提示词角色|)
[//]: # (|infer|BuiltinFunc|执行推理|)
[//]: # (|close|BuiltinFunc|关闭会话|)
[//]: # ()
[//]: # ([![sophon workflow](https://github.com/rustq/3body-lang/actions/workflows/Sophon.yml/badge.svg)](https://github.com/rustq/3body-lang/actions/))[//]: # ()
[//]: # (⚛️ Example reasoning of "中国最佳科幻小说是哪个" in [runs/11092893924](https://github.com/rustq/3body-lang/actions/runs/11092893924/job/30818494323?pr=47#step:5:2676))[//]: # ()
[//]: # (Model powered by [huantian2415/vicuna-13b-chinese-4bit-ggml](https://huggingface.co/huantian2415/vicuna-13b-chinese-4bit-ggml))## Development
```bash
$ 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](https://github.com/rustq/3body-lang/issues)
## Visual Studio Code Extension
[3body-vscode-language-server](https://marketplace.visualstudio.com/items?itemName=meloalright.3body-vscode-language-server)
## License
[MIT](https://opensource.org/licenses/MIT)