Awesome
<img src="screenshots/logo.png" align="right" width="128" height="128"/>文言 wenyan-lang
wy-lang.org | Wiki | The Book
文言文編程語言。A programming language for the ancient Chinese. Try it online.
序
夫唐、虞之世,結繩而足治,屈指而足算。是時豈料百代之後,計算機械之巧,精於公輸之木鳶,善於武侯之流馬;程式語言之多,繁若《天官》之星宿,奇勝《山經》之走獸。鼠、蟹、鑽、魚,或以速稱。蛇、象、駱、犀,各爭文采。方知鬼之所以夜哭,天之所以雨粟。然以文言編程者 ,似所未有。此誠非文脈之所以傳,文心之所以保。嗟予小子,遂有斯志。然則數寸之烏絲猶覆於頭,萬卷之素書未破於手;一身長羈於遠邦,兩耳久曠于雅言。然夫文章者吾之所宿好,程式者偶承時人之謬譽。故希孟不慚年少,莊生不望無涯。乃作斯言。誠未能嘔瀝長吉之心血,亦庶幾免於義山之流沫。既成之後,復學干將鑄劍而自飼,越王嚐糞而當先。自謂偶追《十書》之筆意,但恨少八家之淋漓。此子山所謂士衡撫掌而甘心,平子見陋而固宜。然則雖實覆甕之質,尚存斧正之望;雖乏呂相之金,易字之渴蓋同。此亦開源之大義,吾輩之所以勉勵也。一笑。
Helloworld
Wenyan:
吾有一數。曰三。名之曰「甲」。
為是「甲」遍。
吾有一言。曰「「問天地好在。」」。書之。
云云。
Equivalent JavaScript:
var n = 3;
for (var i = 0; i < n; i++) {
console.log("問天地好在。");
}
Output:
問天地好在。
問天地好在。
問天地好在。
Punctuations and newlines are completely optional (just like they are in Classical Chinese), so the above code is equivalent to:
吾有一數曰三名之曰「甲」為是「甲」遍吾有一言曰「「問天地好在」」書之云云
More sophisticated examples, such as the Sieve of Eratosthenes, Quicksort, Mandelbrot set, and Tower of Hanoi, can be found in the ./examples
folder.
Features
- Natural Language Programming sharing the grammar of Classical Chinese
- Compiles to JavaScript, Python, or Ruby
- Turing complete
- An Online IDE
- Examples to get started
- A packages manager wyg(文淵閣) and awesome packages from the community.
Try it out
The Online IDE
Text Editor Plugins
Command Line Compiler
Install the compiler by
npm install -g @wenyan/cli
Try run the included examples, e.g.:
wenyan examples/helloworld.wy
# will output: 問天地好在。
The Decompiler
You can now translate JavaScript to wenyan-lang using the wenyanizer by zxch3n.
3rd Party Compilers
Documentation
Check out our Wiki pages
- Syntax Cheatsheet
- Standard Library Cheatsheet
- Library Packages
- Contributing
- API Specifications
- Browser Runtime
- Feature Requests
- Known Issues
Contributors
Code Contributors
This project exists thanks to all the people who contribute. [Contribute]. <a href="https://github.com/wenyan-lang/wenyan/graphs/contributors"><img src="https://opencollective.com/wenyan-lang/contributors.svg?width=890&button=false" /></a>
Financial Contributors
Become a financial contributor and help us sustain our community. [Contribute]
Individuals
<a href="https://opencollective.com/wenyan-lang"><img src="https://opencollective.com/wenyan-lang/individuals.svg?width=890"></a>
Organizations
Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]
<a href="https://opencollective.com/wenyan-lang/organization/0/website"><img src="https://opencollective.com/wenyan-lang/organization/0/avatar.svg"></a> <a href="https://opencollective.com/wenyan-lang/organization/1/website"><img src="https://opencollective.com/wenyan-lang/organization/1/avatar.svg"></a> <a href="https://opencollective.com/wenyan-lang/organization/2/website"><img src="https://opencollective.com/wenyan-lang/organization/2/avatar.svg"></a> <a href="https://opencollective.com/wenyan-lang/organization/3/website"><img src="https://opencollective.com/wenyan-lang/organization/3/avatar.svg"></a> <a href="https://opencollective.com/wenyan-lang/organization/4/website"><img src="https://opencollective.com/wenyan-lang/organization/4/avatar.svg"></a> <a href="https://opencollective.com/wenyan-lang/organization/5/website"><img src="https://opencollective.com/wenyan-lang/organization/5/avatar.svg"></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>