Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@

### [wy-lang.org](https://wy-lang.org) | [Wiki](https://github.com/wenyan-lang/wenyan/wiki)

English | [简体中文](./README.zh-Hans.md) | [繁体中文](./README.zh-Hant.md)
English | [简体中文](./README.zh-Hans.md) | [繁體中文](./README.zh-Hant.md)

文言文編程語言。A programming language for the ancient Chinese. [Try it online.](https://wy-lang.org/ide)
文言文編程語言。A programming language for the ancient Chinese. [Try it online.](https://ide.wy-lang.org/)

![](screenshots/screenshot01.png)

Expand Down Expand Up @@ -59,12 +59,12 @@ More sophisticated examples, such as the Sieve of Eratosthenes, Quicksort, Mande
- [Natural Language Programming](https://en.wikipedia.org/wiki/Natural-language_programming) sharing the grammar of [Classical Chinese](https://en.wikipedia.org/wiki/Classical_Chinese)
- Compiles to [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript), [Python](https://python.org), or [Ruby](http://ruby-lang.org)
- [Turing complete](https://github.com/LingDong-/wenyan-lang/blob/master/examples/turing.wy)
- An [Online IDE](https://wy-lang.org/ide)
- An [Online IDE](https://ide.wy-lang.org/)
- [Examples](https://github.com/LingDong-/wenyan-lang/tree/master/examples) to get started

## Try it out

### [The Online IDE](https://wy-lang.org/ide)
### [The Online IDE](https://ide.wy-lang.org/)

![](screenshots/screenshot02.png)

Expand Down Expand Up @@ -106,7 +106,7 @@ Check out our [Wiki pages](https://github.com/wenyan-lang/wenyan/wiki)
- [Standard Library Cheatsheet](https://github.com/wenyan-lang/wenyan/wiki/Standard-Library-Cheatsheet)
- [Library Packages](https://github.com/wenyan-lang/wenyan/wiki/Available-Packages)
- [Contributing](https://github.com/wenyan-lang/wenyan/wiki/Contributing)
- [API Specifcations](https://github.com/wenyan-lang/wenyan/wiki/Compiler-API)
- [API Specifications](https://github.com/wenyan-lang/wenyan/wiki/Compiler-API)
- [Browser Runtime](https://github.com/wenyan-lang/wenyan/wiki/Browser-Runtime)
- [Feature Requests](https://github.com/wenyan-lang/wenyan/wiki/Feature-Requests)
- [Known Issues](https://github.com/wenyan-lang/wenyan/wiki/Known-Issues)
Expand Down Expand Up @@ -139,4 +139,4 @@ Support this project with your organization. Your logo will show up here with a
<a href="https://opencollective.com/wenyan-lang/organization/6/website"><img src="https://opencollective.com/wenyan-lang/organization/6/avatar.svg"></a>
<a href="https://opencollective.com/wenyan-lang/organization/7/website"><img src="https://opencollective.com/wenyan-lang/organization/7/avatar.svg"></a>
<a href="https://opencollective.com/wenyan-lang/organization/8/website"><img src="https://opencollective.com/wenyan-lang/organization/8/avatar.svg"></a>
<a href="https://opencollective.com/wenyan-lang/organization/9/website"><img src="https://opencollective.com/wenyan-lang/organization/9/avatar.svg"></a>
<a href="https://opencollective.com/wenyan-lang/organization/9/website"><img src="https://opencollective.com/wenyan-lang/organization/9/avatar.svg"></a>
2 changes: 1 addition & 1 deletion README.zh-Hans.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

### [wy-lang.org](https://wy-lang.org) | [Wiki](https://github.com/wenyan-lang/wenyan/wiki)

[English](./README.md) | 简体中文 | [繁体中文](./README.zh-Hant.md)
[English](./README.md) | 简体中文 | [繁體中文](./README.zh-Hant.md)

文言文編程語言。 [在线体验](http://wenyan-lang.lingdong.works/ide.html)

Expand Down
2 changes: 1 addition & 1 deletion README.zh-Hant.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

### [wy-lang.org](https://wy-lang.org) | [Wiki](https://github.com/wenyan-lang/wenyan/wiki)

[English](./README.md) | [简体中文](./README.zh-Hans.md) | 繁体中文
[English](./README.md) | [简体中文](./README.zh-Hans.md) | 繁體中文

文言文編程語言。 [在線體驗](http://wenyan-lang.lingdong.works/ide.html)

Expand Down
10 changes: 8 additions & 2 deletions examples/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
<!-- GENERATED FILE, DO NOT MODIFY-->
<!-- GENERATED FILE, DO NOT MODIFY -->
<!-- "npm run build:docs" to regenerate -->

# Examples

| File | Remark |
Expand All @@ -7,19 +9,22 @@
| [clock.wy](clock.wy) | 畫鐘 |
| [collatz.wy](collatz.wy) | 考拉兹猜想 |
| [collatz2.wy](collatz2.wy) | 考拉兹猜想二 |
| [crt.wy](crt.wy) | 大衍總數術(中國剩餘定理)|
| [crt.wy](crt.wy) | 大衍總數 |
| [divination.wy](divination.wy) | 春秋古筮法 |
| [draw_heart.wy](draw_heart.wy) | 畫心 |
| [eightqueens.wy](eightqueens.wy) | 八皇后問題 |
| [euclidean.wy](euclidean.wy) | 歐幾里得法 |
| [factorial.wy](factorial.wy) | 階乘 |
| [fibonacci.wy](fibonacci.wy) | 斐氏列 |
| [fibonacci_array.wy](fibonacci_array.wy) | 斐氏列三 |
| [fibonacci2.wy](fibonacci2.wy) | 斐氏列二 |
| [fizzbuzz.wy](fizzbuzz.wy) | [嘶嘶嗡嗡][1] |
| [hanoi.wy](hanoi.wy) | 漢諾塔 |
| [hanoi_stack.wy](hanoi_stack.wy) | 漢諾塔二 |
| [helloworld.wy](helloworld.wy) | 問天地好在 |
| [helloworld+.wy](helloworld+.wy) | 問天地好在+ |
| [import.wy](import.wy) | 導入示例 |
| [linglong_tower.wy](linglong_tower.wy) | 玲瓏塔 |
| [macro.wy](macro.wy) | 宏示例 |
| [mandelbrot.wy](mandelbrot.wy) | 曼德博集 |
| [mergesort.wy](mergesort.wy) | 歸併排序 |
Expand All @@ -36,6 +41,7 @@
| [quine.wy](quine.wy) | [自產生程式][2] |
| [quine2.wy](quine2.wy) | 自產生程式二 |
| [selectionsort.wy](selectionsort.wy) | 選擇排序 |
| [serialization.wy](serialization.wy) | 渾沌經 |
| [sieve.wy](sieve.wy) | 埃氏篩 |
| [sqrt_newton.wy](sqrt_newton.wy) | 牛頓求根法 |
| [tree.wy](tree.wy) | 畫樹 |
Expand Down
19 changes: 19 additions & 0 deletions examples/fibonacci_array.wy
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
吾有一術。名之曰「斐氏列」。
欲行是術。必先得一數。曰「限」。乃行是術曰。
有數零。名之曰「計」。
吾有一列。名之曰「斐氏列」。
為是「限」遍。
若「計」小於二者。
充「斐氏列」以「計」。
若非。
減「計」以一。名之曰「計前」。
夫「斐氏列」之「計前」。名之曰「甲」。
夫「斐氏列」之「計」。名之曰「乙」。
加「甲」以「乙」。名之曰「新數」。
充「斐氏列」以「新數」。
云云。
加「計」以一。昔之「計」者。今其是也。
乃得「斐氏列」矣。
是謂「斐氏列」之術也。

施「斐氏列」於二十。書之。
164 changes: 164 additions & 0 deletions examples/hanoi_stack.wy
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
吾有一術。名之曰「漢諾塔」。
欲行是術。必先得四數。曰「盤數」。曰「起」。曰「過」。曰「訖」。乃行是術曰。
吾有五言。曰「「天竺有一漢諾塔。初置」」。曰「盤數」。曰「「金盤於柱」」。曰「起」。曰「「。」」。書之。
吾有五言。曰「「欲盡其過」」。曰「過」。曰「「移至」」。曰「訖」。曰「「。」」。書之。
施「三柱初始」於「盤數」。於「起」。於「過」。於「訖」。
吾有一列。名之曰「棧」。
吾有一列。名之曰「史」。
有數零。名之曰「步數」。
施「新步元」於「盤數」。於「起」。於「過」。於「訖」。名之曰「外元」。
恆為是。
夫「棧」之長。變其。名之曰「棧空」。
夫「外元」之「「盤數」」。變其。名之曰「外元盤零」。
夫「外元盤零」「棧空」中無陰乎。名之曰「當止」。
若「當止」者乃止也。
施「鏡步元」於「外元」。名之曰「內元」。
恆為是。
若「內元」之「「盤數」」不大於零者乃止也。
施「入棧」於「棧」。於「內元」。
夫「內元」之「「盤數」」者。減其以一。昔之「內元」之「「盤數」」者。今其是矣。
夫「內元」之「「過」」者。名之曰「臨甲」。
昔之「內元」之「「過」」者。今「內元」之「「訖」」是矣。
昔之「內元」之「「訖」」者。今「臨甲」是矣。
云云。
施「首元」於「棧」。名之曰「外元」。
施「出棧」於「棧」。昔之「棧」者。今其是矣。
吾有一列。名之曰「步」。
夫「外元」之「「起」」。名之曰「步起」。
夫「外元」之「「訖」」。名之曰「步訖」。
充「步」以「步起」。以「步訖」。
加「步數」以一。昔之「步數」者。今其是矣。
施「書步」於「步數」。於「步」。
施「三柱更新」於「步」。
施「畫步」。
夫「外元」之「「盤數」」者。減其以一。昔之「外元」之「「盤數」」者。今其是矣。
夫「外元」之「「起」」者。名之曰「臨乙」。
昔之「外元」之「「起」」者。今「外元」之「「過」」是矣。
昔之「外元」之「「過」」者。今「臨乙」是矣。
云云。
吾有三言。曰「「噫。吁嚱。共步」」。曰「步數」。曰「「也。」」。書之。
書之。
是謂「漢諾塔」之術也。

今有一物。名之曰「三柱」。其物如是。
物之「「柱名」」者。列曰零。
物之「「起」」者。數曰零。
物之「「過」」者。數曰零。
物之「「訖」」者。數曰零。
是謂「三柱」之物也。

吾有一物。名之曰「步元」。其物如是。
物之「「盤數」」者。數曰零。
物之「「起」」者。元曰零。
物之「「過」」者。元曰零。
物之「「訖」」者。元曰零。
是謂「步元」之物也。

今有一術。名之曰「三柱初始」。欲行是術。必先得四數。曰「盤數」。曰「起」。曰「過」。曰「訖」。乃行是術曰。
夫「盤數」。昔之「三柱」之「「起」」者。今其是矣。
吾有一列。名之曰「柱名」。
充「柱名」以「起」。以「過」。以「訖」。
夫「柱名」。昔之「三柱」之「「柱名」」者。今其是矣。
是謂「三柱更新」之術也。

今有一術。名之曰「三柱更新」。欲行是術。必先得一列。曰「步」。乃行是術曰。
夫「步」之一者。名之曰「步起」。
夫「步」之二者。名之曰「步訖」。
夫「三柱」之「「柱名」」者。名之曰「柱名」。
夫「柱名」之一。名之曰「起柱名」。
夫「柱名」之二。名之曰「過柱名」。
夫「柱名」之三。名之曰「訖柱名」。
若「步起」等於「起柱名」者。夫「三柱」之「「起」」者。減其以一。昔之「三柱」之「「起」」者。今其是矣云云。
若「步起」等於「過柱名」者。夫「三柱」之「「過」」者。減其以一。昔之「三柱」之「「過」」者。今其是矣云云。
若「步起」等於「訖柱名」者。夫「三柱」之「「訖」」者。減其以一。昔之「三柱」之「「訖」」者。今其是矣云云。
若「步訖」等於「起柱名」者。夫「三柱」之「「起」」者。加其以一。昔之「三柱」之「「起」」者。今其是矣云云。
若「步訖」等於「過柱名」者。夫「三柱」之「「過」」者。加其以一。昔之「三柱」之「「過」」者。今其是矣云云。
若「步訖」等於「訖柱名」者。夫「三柱」之「「訖」」者。加其以一。昔之「三柱」之「「訖」」者。今其是矣云云。
是謂「三柱更新」之術也。

吾有一術。名之曰「新步元」。欲行是術。必先得一數。曰「盤數」。三元。曰「起」。曰「過」。曰「訖」。乃行是術曰。
吾有一物。名之曰「新元」。
昔之「新元」之「「盤數」」者。今「盤數」矣。
昔之「新元」之「「起」」者。今「起」矣。
昔之「新元」之「「過」」者。今「過」矣。
昔之「新元」之「「訖」」者。今「訖」矣。
乃得「新元」矣。
是謂「新步元」之術也。

吾有一術。名之曰「鏡步元」。欲行是術。必先得一物。曰「步元」。乃行是術曰。
吾有一物。名之曰「新元」。
夫「步元」之「「盤數」」。
昔之「新元」之「「盤數」」者。今其是矣。
夫「步元」之「「起」」。
昔之「新元」之「「起」」者。今其是矣。
夫「步元」之「「過」」。
昔之「新元」之「「過」」者。今其是矣。
夫「步元」之「「訖」」。
昔之「新元」之「「訖」」者。今其是矣。
乃得「新元」矣。
是謂「鏡步元」之術也。

吾有一術。名之曰「截取」。欲行是術。必先得一列。曰「列」。二數。曰「起」。曰「止」。乃行是術曰。
吾有一列。名之曰「新列」。
吾有一數。曰「起」。名之曰「針」。
恆為是。若「針」大於「止」者乃止也。
夫「列」之「針」。充「新列」以其。
加「針」以一。昔之「針」者。今其是也。
乃得「新列」矣。
是謂「截取」之術也。

吾有一術。名之曰「入棧」。欲行是術。必先得一列。曰「棧」。一元。曰「元」。乃行是術曰。
吾有一列。曰「棧」。名之曰「新棧」。
施「鏡步元」於「元」。名之曰「新元」。
充「新棧」以「新元」。
乃得「新棧」矣。
是謂「入棧」之術也。

吾有一術。名之曰「首元」。欲行是術。必先得一列。曰「棧」。乃行是術曰。
夫「棧」之長。名之曰「尾」。
夫「棧」之「尾」。名之曰「出元」。
乃得「出元」矣。
是謂「首元」之術也。

吾有一術。名之曰「出棧」。欲行是術。必先得一列。曰「棧」。乃行是術曰。
夫「棧」之長。名之曰「尾」。
減「尾」以一。昔之「尾」者。今其是矣。
施「截取」於「棧」。於一。於「尾」。乃得其矣。
是謂「出棧」之術也。

吾有一術。名之曰「書步」。
欲行是術。必先得一數。曰「步數」。一列。曰「步」。乃行是術曰。
夫「步」之一者。名之曰「步起」。
夫「步」之二者。名之曰「步訖」。
吾有七言。曰「「步」」。曰「步數」。曰「「。自」」。曰「步起」。
曰「「移至」」。曰「步訖」。曰「「。」」。書之。
是謂「書步」之術也。

吾有一術。名之曰「畫步」。是術曰。
夫「三柱」之「「柱名」」者。名之曰「柱名」。
夫「三柱」之「「起」」者。名之曰「盤」。
減「盤數」以「盤」。名之曰「柱」。
夫「柱名」之一。名之曰「起柱名」。
銜「「【」」以「起柱名」。以「「】」」。名之曰「行」。
為是「盤」遍。加「行」以「「〇」」。昔之「行」者。今其是矣。云云。
為是「柱」遍。加「行」以「「一」」。昔之「行」者。今其是矣。云云。
夫「行」者。書之。
夫「三柱」之「「過」」者。名之曰「盤」。
減「盤數」以「盤」。名之曰「柱」。
夫「柱名」之二。名之曰「過柱名」。
銜「「【」」以「過柱名」。以「「】」」。名之曰「行」。
為是「盤」遍。加「行」以「「〇」」。昔之「行」者。今其是矣。云云。
為是「柱」遍。加「行」以「「一」」。昔之「行」者。今其是矣。云云。
夫「行」者。書之。
夫「三柱」之「「訖」」者。名之曰「盤」。
減「盤數」以「盤」。名之曰「柱」。
夫「柱名」之三。名之曰「訖柱名」。
銜「「【」」以「訖柱名」。以「「】」」。名之曰「行」。
為是「盤」遍。加「行」以「「〇」」。昔之「行」者。今其是矣。云云。
為是「柱」遍。加「行」以「「一」」。昔之「行」者。今其是矣。云云。
夫「行」者。書之。
書之。
是謂「畫步」之術也。

有數三。名之曰「盤數」。
施「漢諾塔」於「盤數」。於「「甲」」。於「「乙」」。於「「丙」」。
56 changes: 56 additions & 0 deletions examples/linglong_tower.wy
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
吾有一言。曰「「繞口令 玲瓏塔」」。書之。

吾有一術。名之曰「數玲瓏塔」。
欲行是術。必先得一數。曰「層」。乃行是術曰。

若「層」等於三者。
吾有一言。曰「「玲瓏塔。塔玲瓏。接過了二層數 三 層。」」。書之。
若非。若「層」等於一十三者。
吾有一言。曰「「玲瓏塔。塔玲瓏。到了尖兒的 一十三 層。」」。書之。
若非。
吾有三言。曰「「玲瓏塔。塔玲瓏。玲瓏寶塔第」」。曰「層」。曰「「層。」」。書之。
云云。云云。

乘「層」以四。名之曰「四倍之」。

若「層」等於二者。
吾有三言。曰「「兩 张高桌」」。曰「四倍之」。曰「「條腿。兩 個和尚 兩 本經。」」。書之。

吾有一言。曰「「兩 副铙钹 兩 口磬。兩 個木了魚子 兩 盞燈。」」。書之。

吾有四言。曰「「兩 個金玲整」」。曰「四倍之」。曰「「兩。風兒一刮響嘩楞。」」。書之乃得矣。
若非。
吾有八言。曰「層」。曰「「张高桌」」。曰「四倍之」。曰「「條腿。」」。
曰「層」。曰「「個和尚」」。曰「層」。曰「「本經。」」。書之。

吾有八言。曰「層」。曰「「副铙钹」」。曰「層」。曰「「口磬。」」。
曰「層」。曰「「個木了魚子」」。曰「層」。曰「「盞燈。」」。書之。
云云。

若「四倍之」不大於九者。
吾有四言。曰「層」。曰「「個金玲整」」。曰「四倍之」。曰「「兩。風兒一刮響嘩楞。」」。書之乃得矣。
若非。
吾有四言。曰「層」。曰「「個金玲」」。曰「四倍之」。曰「「兩。風兒一刮響嘩楞。」」。書之乃得矣。
云云。

是謂「數玲瓏塔」之術也。

有數一十又三。名之曰「最高層」。

有數一。名之曰「層」。

恆為是。若「層」大於「最高層」者乃止也。

施「數玲瓏塔」於「層」。

加「層」以二。昔之「層」者。今其是矣云云。

吾有一言。曰「「玲瓏寶塔往回數。」」。書之。

減「層」以三。昔之「層」者。今其是矣。

恆為是。若「層」小於二者乃止也。

施「數玲瓏塔」於「層」。

減「層」以二。昔之「層」者。今其是矣云云。
Loading