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

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

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

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

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

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:Giveastringinsteadofafile(default:') --exec-x<boolean>:Executeoutput(default:false’)
–inspect-i:InteractiveREPL(default:false') --lang-l<string>:Language:js/py(default:js’)
–log:Logfile(default:/dev/null') --output-o<string>:Outputfile(default:/dev/stdout’)
–roman-r: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.

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

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!

新一配:文言文也能编程?该项目在GitHub摘得5500星相关推荐

  1. 新一配:一篇看懂加油站产业链解决方案

    新一配:一篇看懂加油站产业链解决方案的文章 一.加油站市场规模 截至2018年9月,全国机动车保有量达3.22亿辆,机动车驾驶人达4.03亿人.在这庞大的汽车生活消费生态链中,加油是汽车消费必不可少的 ...

  2. 新一配:perl循环调用python爬虫批量下载喜马拉雅音频

    新一配:perl循环调用python爬虫批量下载喜马拉雅音频 手机下载喜马拉雅音频后,获得的音频文件虽然可以转成mp3格式,但其文件名却是一长串字符串,无法辨别是哪一集,网上找了各种工具,都有局限性, ...

  3. 新一配:看懂直销银行、互联网银行、开放银行的概念和区别

    新一配:看懂直销银行.互联网银行.开放银行的概念和区别 银行业在数字化转型过程中,出现很多新的概念,例如数字银行.直销银行.虚拟银行.互联网银行.开放银行.智慧银行.智能银行等.追其本质,这些概念的背 ...

  4. 【新一配】量化大师系列之价值投资选股策略

    [新一配]量化大师系列之价值投资选股策略 国外证券市场比较悠久,曾出现过本杰明·格雷厄姆.彼得·林奇.詹姆斯·奥肖内西.查尔斯·布兰德斯等多位投资大师,这些投资大师有一个共同点,他们在证券市场上保持了 ...

  5. 【新一配】选股+择时策略组合

    [新一配]选股+择时策略组合 导语:本文讨论交易中两个非常重要的命题:选股+择时,并将其两者结合起来开发策略. 选股就是要选一只好股票,而择时就是选一个好的买卖时机.如果投资者选了一只很差劲的股票,无 ...

  6. 新一配:全球每天消耗上百亿个二维码,一旦用完了怎么办?

    新一配:全球每天消耗上百亿个二维码,一旦用完了怎么办? 二维码就这么大一点,每个格还只能是非黑即白,那它会不会被用掉所有排列组合呢 答案是会,但是却不会,嗯,没错 细心观察会发现,不同地方二维码横竖格 ...

  7. 《花雕学AI》01:尝试使用新必应制作《雕爷学编程》的栏目介绍

    跨年头尾三个月,花雕走完塔克拉玛干沙漠回来后,突然发现世界变了,微软投资的ChatGPT火起来了,特别是升级的ChatGPT4.0,更是异常火热!这一个多月来,人工智能AI突然爆发,能做的事情太多了, ...

  8. 【拉新有奖】2022云原生编程挑战赛,邀请小伙伴报名有奖

    [拉新有奖]2022云原生编程挑战赛,邀请小伙伴报名有奖! 即日起-9月6日,成功邀请其他选手报名即可获得天池粮票.  积累粮票即可兑换精美好礼!Switch游戏机.Cherry键盘等丰富好礼等你来兑 ...

  9. GitHub宝藏项目标星1.6w+,编程新手有福了

    作者 | Rocky0429 来源 | Python空间(ID: Devtogether) 特别惭愧的是,虽然我很早就知道 GitHub,但是学会逛 GitHub 的时间特别晚.当时一方面是因为菜,看 ...

  10. Netty网络编程聊天项目

                                     Netty网络编程聊天项目 后端编写 导入依赖    <dependencies><dependency>&l ...

最新文章

  1. 智能物联网(AIoT,2020年)(中)
  2. html如何设置多个模块,在webpack中如何实现多页面开发
  3. zabbix全网监控介绍
  4. php无法完成文件上传,php – Fine Uploader无法上传文件
  5. ueditor编辑器php上传配置,php版本UEditor编辑器图片上传设置
  6. 光彩集团小宇智能机器人_【青春关注】集团公司首台智能巡检机器人在我矿上线运行...
  7. thinkphp开启子域名无法正常访问_解决TP6报错“当前访问路由未定义或不匹配”...
  8. 047 Permutations II 有重复数字的全排列
  9. 米洛个人修炼术:注意这三方面,天天都早起
  10. python 读取sheet_python实现读取excel文件中所有sheet操作示例
  11. 力行《促进大数据发展行动纲要》 普元数据治理解决方案出炉
  12. 【数学建模】预测模型——多元回归分析 SPSS实现
  13. Spark学习笔记[3]-Spark安装部署
  14. 唐山解封炉料大涨,PTA认购大涨,玻璃纯碱套利继续大跌2022.4.12
  15. 如何预防计算机病毒英语作文,关于计算机病毒的英语作文
  16. Zigbee 应用层协议自定义
  17. 父元素上是mousedown.prevent,子元素会被携带方法,还阻止不了怎么办?
  18. rds是什么云模式_IaaS、PaaS、SaaS、DaaS都是什么?
  19. CSS实现固定宽高比响应式布局(附实例分析)
  20. aspose获取文件纸张方向以及设置纸张方向

热门文章

  1. IC卡参数公钥之 AID和RID
  2. BigDecimal实现加减乘除
  3. Java:关于“StringBuilder“的运用
  4. 厦门大学计算机保研学校,厦门大学计算机科学系(专业学位)计算机技术保研夏令营...
  5. Educational Codeforces Round 97 (Rated for Div. 2) F. Emotional Fishermen
  6. java 指纹匹配算法_java – 从生物识别指纹考勤设备中检索数据
  7. Java程序员必读书籍推荐
  8. 夺命雷公狗---微信开发61----在线点播电影网2之电影网之个人中心
  9. Unity给力插件之Final IK
  10. java代码-zip解压不可预料的压缩文件末端一级压缩包中的文件为0kb以及目录创建流会报错