40

国人太强大了,竟然能用文言文来编程...

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzA5MTkxNTMzNg%3D%3D&%3Bmid=2650265698&%3Bidx=2&%3Bsn=20226fd823f8262a2d912e90636a1ca0
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

UNFnMr7.gif

作者: IT之家

来源:https://urlify.cn/ri6ZFj

据可靠消息 有中国开发者上传的文言文編程語言项目已经在GitHub上摘得了5500星,你可知如何用文言文输出“Hello World”?吾有一言。曰「「問天地好在。」」。書之。

据悉,该文言文编程语言来自CMU本科生Huang Lingdong。可编译成Javascript,也可编译成Python,亦有线上编辑器 (IDE) 可直接运行。

GitHub地址:https://github.com/LingDong-/wenyan-lang

iI3iq23.jpg!web

# 序

夫唐、虞之世,結繩而足治,屈指而足算。是時豈料百代之後,計算機械之巧,精於公輸之木鳶,善於武侯之流馬;程式語言之多,繁若《天官》之星宿,奇勝《山經》之走獸。鼠、蟹、鑽、魚,或以速稱。蛇、象、駱、犀,各爭文采。方知鬼之所以夜哭,天之所以雨粟。然以文言編程者 ,似所未有。此誠非文脈之所以傳,文心之所以保。嗟予小子,遂有斯志。然則數寸之烏絲猶覆於頭,萬卷之素書未破於手;一身長羁于远邦,兩耳久旷于雅言。然夫文章者吾之所宿好,程式者偶承時人之謬譽。故希孟不慚年少,莊生不望無涯。乃作斯言。誠未能嘔瀝長吉之心血,亦庶幾免於義山之流沫。既成之後,復學干將鑄劍而自飼,越王嚐糞而當先。自謂偶追《十書》之筆意,但恨少八家之淋漓。此子山所謂士衡抚掌而甘心,平子見陋而固宜。然則雖實覆甕之質,尚存斧正之望;雖乏呂相之金,易字之渴蓋同。此亦開源之大義,吾輩之所以勉勵也。一笑。

# Hello world

Wenyan:

吾有一數。曰三。名之曰「甲」。

為是「甲」遍。

吾有一言。曰「「問天地好在。」」。書之。

云云。

Equivalent JavaScript:

varn=3;

for(vari=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

  • An NLP sharing the grammar of Classical Chinese

  • Compiles to JavaScript or Python

  • Turing complete

  • An online IDE

  • Examples to get started

InstallationThe Compiler

Clone the repo, (OR simply download ./build/wenyan.js and set its executable bit using the terminal command chmod +x wenyan.js). Then run ./build/wenyan.js to compile your wenyan souce code to target language. Calling the compiler without arguments prints the help message, reproduced below:

Usage:wenyan[options][inputfiles]

Options:

--eval-e<string>:Giveastringinsteadofafile(default:`')

--exec-x<boolean>:Executeoutput(default:`false')

--inspect-i<boolean>:InteractiveREPL(default:`false')

--lang-l<string>:Language:js/py(default:`js')

--log<string>:Logfile(default:`/dev/null')

--output-o<string>:Outputfile(default:`/dev/stdout')

--roman-r<boolean>:Romanizeidentifiers(default:`true')

Try building the included examples first, e.g.:

./build/wenyan.jsexamples/helloworld.wy-ohelloworld.js

Building platform-specific binaries

  • Clone the repo

  • npm install

  • npm run make_cmdline

The macOS, Windows and Linux binaries will be in the ./build folder.

bARRZjI.jpg!web

Syntax Cheatsheet

A context-free grammar description is under construction. Meanwhile, please check the cheatsheet below, or look into src/parser.js to learn about the syntax. Be sure to check out the examples from the online IDE too!

NjUzIbA.jpg!web

B3Enqyn.png!web

完美世界暴力裁员:工作996、生病被关小黑屋,有摄像头监控!

十大经典排序算法(Python版本)

这几个 Pycharm 插件能让你撸代码撸到高潮

f2eEFvj.png!web

faUFJrF.png!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK