https://github.com/perceptronv/wuyu-lang
《無語》編譯器 — A statically-typed, dynamically-compiled language for esoteric Chinese.
https://github.com/perceptronv/wuyu-lang
aot esoteric-chinese esoteric-language jit llvm
Last synced: 5 months ago
JSON representation
《無語》編譯器 — A statically-typed, dynamically-compiled language for esoteric Chinese.
- Host: GitHub
- URL: https://github.com/perceptronv/wuyu-lang
- Owner: PerceptronV
- License: gpl-3.0
- Created: 2025-10-08T03:12:00.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-10-08T16:32:01.000Z (6 months ago)
- Last Synced: 2025-10-08T18:37:22.459Z (6 months ago)
- Topics: aot, esoteric-chinese, esoteric-language, jit, llvm
- Language: C++
- Homepage:
- Size: 53.7 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 🐲 無語
曰:「無語者,必將開天闢地」。
《無語》編譯器以上古之言納如今算術之式。例,求質數:
```wuyu
有數極限。
曰:「君欲求何數? 」。
求:極限。
有問列質否,廣極限益一者,為是。
順數現為二漸增至極限也
若質否其現者如是,則
曰:現:「 」。
順數倍為二漸增至極限拆現也
質否其現乘倍者為非。
```
施法而得:
```bash
君欲求何數? 五十
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
```
無語卻言章次:
- [第一回 · 速戰速決](#第一回--速戰速決)
- [第二回 · 查言觀澀](#第二回--查言觀澀)
- [第三回 · 編譯之法](#第三回--編譯之法)
- [第四回 · 學而時習](#第四回--學而時習)
- [第五回 · 法海無邊](#第五回--法海無邊)
## 第一回 · 速戰速決
**建基(原置 Ubuntu 25.04)**
```bash
sudo apt install -y build-essential cmake ninja-build \
llvm-20 llvm-20-dev lld-20 zlib1g-dev
```
**構築**
```bash
# 克隆此經文
git clone https://github.com/PerceptronV/wuyu-lang
cd wuyu-lang
# 構建
./build.sh
# 測試
./build/bin/wuyu --version
```
**開天**
運 `./build/bin/wuyu`,而後施[`盤古.🐲`](docs/examples/盤古.🐲)之法:
```wuyu
曰:「天地玄黃,宇宙洪荒。」:更。
```
**辟地**
```bash
./build/bin/wuyu docs/examples/質數.🐲
```
## 第二回 · 查言觀澀
### 物類
```wuyu
有數齡為二十五。 · int 齡 = 25;
有分價為九十九點九。 · float 價 = 99.9;
有文名為「小明」。 · string 名 = "小明";
有問真假為是。 · bool 真假 = true;
```
### 算術
```wuyu
有數甲為十。
有數乙為三。
曰:甲益乙:更。 · 甲 + 乙
曰:甲損乙:更。 · 甲 - 乙
曰:甲乘乙:更。 · 甲 * 乙
曰:甲除乙:更。 · 甲 / 乙
曰:甲拆乙:更。 · 甲 // 乙
曰:甲餘乙:更。 · 甲 % 乙
```
### 控流
```wuyu
若甲盈零則 · if (甲 > 0)
曰:「正數」:更。 · cout << "正數" << endl;
而則
曰:「非正數」:更。
循甲虧十也 · while (甲 < 10)
曰:甲:更。
甲增。
順數甲為零漸一至十也 · for (int i = 0; i <= 10; i++)
曰:甲:更。
```
### 函數
```wuyu
設術階乘參數量者得數 · int factorial(int n)
若量頂一則
奏一。
然則
奏量乘階乘執量損一者。 · return n * factorial(n - 1);
有數果為階乘執五者。
曰:果:更。 · 一百二十
```
### 陣列
```wuyu
有數列例廣十者。 · int 例[10];
例其零者為一。 · 例[0] = 1
曰:例其零者:更。 · cout << 例[0] << endl;
```
## 第三回 · 編譯之法
### 立時執行(JIT)
```bash
./build/bin/wuyu 心血來潮.🐲
```
### 編為標檔(AOT)
```bash
./build/bin/wuyu -c 心血來潮.🐲 -o 心血來潮.o
gcc 心血來潮.o -o 心血來潮
./心血來潮
```
### 編為 LLVM 中階之式
```bash
./build/bin/wuyu -l 心血來潮.🐲 -o 心血來潮.ll
cat 心血來潮.ll
```
無語其型多變:
- `.🐲` - 御用
- `.無` - 通行
- `.wuyu` - 西洋
## 第四回 · 學而時習
文法之例,乃藏[於此](docs/examples/)。
### 術語
| 術語 | 無語 |
|---------|---------|
| declare | 有 |
| define | 設 |
| if | 若 |
| then | 則 |
| else if | 而 |
| else | 然則 |
| while | 循 |
| for | 順 |
| function | 術 |
| return | 奏 |
| print | 曰 |
| input | 求 |
### 類別
| 類別 | 無語 |
|------|---------|
| integer | 數 |
| float | 分 |
| string | 文 |
| boolean | 問 |
| array | 列 |
### 算符
| 算符 | 無語 |
|----------|---------|
| + | 益 |
| - | 損 |
| * | 乘 |
| / | 除 |
| // | 拆 |
| % | 餘 |
| = | 為 |
| == | 如 |
| != | 弗 |
| > | 盈 |
| < | 虧 |
## 第五回 · 法海無邊
《無語》 版權所有 宋亦丁 二零二五 乙巳年。
此處《無語》代碼庫、軟件等之公用乃從「[GNU GENERAL PUBLIC LICENSE v3](LICENSE)」之條文。