轻源码

  • QingYuanMa.com
  • 全球最大的互联网技术和资源下载平台
搜索
轻源码 门户 IT时讯 查看主题

文言文亦能编程,该项目在GitHub摘得5500星

发布者: 云文章 | 发布时间: 2021-5-5 16:30| 查看数: 8796| 评论数: 0|帖子模式

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

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

GitHub地址:

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

Hello world

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

  • 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] [input files]
Options:
--eval    -<string>  : Give a string instead of a file (default: `')
--exec    -x <boolean> : Execute output (default: `
false') --inspect -i <boolean> : Interactive REPL (default: `false') --lang    -<string>  : Language: js/py (default: `js') --log        <string>  : Log file (default: `/dev/null') --output  -o <string>  : Output file (default: `/dev/stdout') --roman   -<boolean> : Romanize identifiers (default: `true')

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

./build/wenyan.js examples/helloworld.wy -o helloworld.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.

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!

最新评论

轻源码让程序更轻更快

QingYuanMa.com

工作时间 周一至周六 8:00-17:30

客服QQ点击咨询

关注抖音号

定期抽VIP

Copyright © 2016-2021 https://www.qingyuanma.com/ 鲁ICP备17014494号

快速回复 返回顶部 返回列表