编程语言 wenyan-lang

wenyan-lang是一种创新的编程语言,它使用古汉语进行编程,让代码具有古典韵味。它的语法结构与JavaScript类似,但表达方式独特,旨在提供一种全新的编程体验。wenyan-lang支持变量、流程控制、运算和容器操作等功能,并且可以转换为JavaScript执行。该项目是开源的,鼓励社区参与和贡献。
摘要由CSDN通过智能技术生成

逛GitHub时候,发现了一个让我眼前一亮的编程语言。

wenyan-lang

 以下摘自wenyan-lang的github内容

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

Helloworld

文言:

吾有一數。曰三。名之曰「甲」。
為是「甲」遍。
	吾有一言。曰「「問天地好在。」」。書之。
云云。

等同于以下 JavaScript:

var n = 3;
for (var i = 0; i < n; i++) {
	console.log("問天地好在。");
}

输出:

問天地好在。
問天地好在。
問天地好在。

标点符号和换行都是可选的(就像古汉语中文字是连续的),所以上面的代码等同于:

吾有一數曰三名之曰「甲」為是「甲」遍吾有一言曰「「問天地好在」」書之云云

 screenshot02.png

语法表

上下文无关文法的语法描述还在构建中。同时,请查阅下面的语法表,或者在 src/parser.js 中学习其他更多语法。当然你也可以从在线 IDE 现有的例子中学习更多语法知识!

变量

wenyanJavaScript
吾有一數。曰三。名之曰「甲」。var a = 3;
有數五十。名之曰「大衍」。var dayan = 50;
昔之「甲」者。今「大衍」是也。a = dayan;
吾有一言。曰「「噫吁戲」」。名之曰「乙」。var b = "alas!";
吾有一爻。曰陰。名之曰「丙」。var c = false;
吾有一列。名之曰「丁」。var d = [];
吾有三數。曰一。曰三。曰五。名之曰「甲」曰「乙」曰「丙」。var a=1,b=3,c=5;

流程控制

wenyanJavaScript
若三大於二者。乃得「「想當然耳」」也。if (3>2){ return "of course"; }
若三不大於五者。乃得「「想當然耳」」。若非。乃得「「怪哉」」也。if(3<=5){return "of course"}else{return "no way"}
為是百遍。⋯⋯ 云云。for (var i = 0; i < 100; i++){ ... }
恆為是。⋯⋯ 云云。while (true) { ... }
凡「天地」中之「人」。⋯⋯ 云云。for (var human of world){ ... }
乃止。break;

运算

wenyanJavaScript
加一以二。1+2
加一於二。2+1
加一以二。乘其以三。(1+2)*3
除十以三。所餘幾何。10%3
減七百五十六以四百三十三。名之曰「甲」。var a = 756-433;
夫「甲」「乙」中有陽乎。a || b
夫「甲」「乙」中無陰乎。a && b

容器

数组下标从一开始。而不是零。

wenyanJavaScript
吾有一列。名之曰「甲」。充「甲」以四。以二。var a = []; a.push(4, 2);
銜「甲」以「乙」。以「丙」a.concat(b).concat(c);
夫「甲」之一。a[0]
夫「甲」之其餘。a.slice(1);
夫「玫瑰」之「「名」」。rose["name"]
夫「寶劍」之長。sword.length;

对象

wenyanJavaScript
吾有一物。名之曰「甲」。var a = {};
吾有一物。名之曰「甲」。其物如是。物之「「乙」」者。數曰三。物之「「丙」」者。言曰「「丁」」。是謂「甲」之物也。var a = {b:3, c:"d"}

函数

wenyanJavaScript
吾有一術。名之曰「吸星大法」。是術曰。⋯⋯是謂「吸星大法」之術也。function f(){...}
吾有一術。名之曰「六脈神劍」。欲行是術。必先得六數。曰「甲」。曰「乙」。曰「丙」。曰「丁」。曰「戊」。曰「己」乃行是術曰。⋯⋯是謂「六脈神劍」之術也。function f(a,b,c,d,e,f){...}
吾有一術。名之曰「翻倍」。欲行是術。必先得一數。曰「甲」。乃行是術曰。乘「甲」以二。名之曰「乙」。乃得「乙」。是謂「翻倍」之術也。function double(a){var b = a * 2; return b;}
施「翻倍」於「大衍」。double(dayan);
吾有一術。名之曰「甲」。欲行是術。必先得一數曰「乙」。二言。曰「丙」。曰「丁」function a(float b, string c, string d)
夫「甲」。夫「乙」。夫「丙」。取二以施「丁」。取二以施「戊」。名之曰「己」。var f = e(a,d(b,c))
夫「甲」。夫「乙」。夫「丙」。取二以施「丁」。取二以施「戊」。取一以施「己」。夫「庚」。夫「辛」。取三以施「壬」。名之曰「癸」。var j = i(f(e(a,d(b,c))),g,h)

导入

wenyanJavaScript
吾嘗觀「「算經」」之書。方悟「正弦」「餘弦」之義。var {sin,cos} = require("math");

杂项

wenyanJavaScript
吾有一數。曰五。書之。console.log(5);

注释

wenyanJavaScript
批曰。「「文氣淋灕。字句切實」」。/*文氣淋灕。字句切實*/
注曰。「「文言備矣」」。/*文言備矣*/
疏曰。「「居第一之位故稱初。以其陽爻故稱九」」。/*居第一之位故稱初。以其陽爻故稱九*/

 官网地址

https://github.com/wenyan-lang/wenyan

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cra te

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值