这是一个大学生开源的一个文言文编程语言。
关键是这门文言文的编程语言,是一位卡内基梅隆大学(CMU)的大四学生开发。利用 NLP 的一些技术,将文言文程序语法转换到 JavaScript 或 Python 运行,并不是简单的将程序中的英文字符换成了中文。
如要体验这门语言就到Wenyan Online IDE
下面就是这门语言的操作。
1.定义数据
文言 javascript
吾有一數。曰三。名之曰⌈甲⌋。 var a = 3;
有數五十。名之曰⌈大衍⌋。 var dayan = 50;
昔之⌈甲⌋者。今⌈大衍⌋是也。 a = dayan;
吾有一言。曰⌈⌈abc⌋⌋。名之曰⌈乙⌋。 var b =" abc";
吾有一爻。曰蔭。名之曰⌈丙⌋。 var c = false;
吾有一列。名之曰⌈丁⌋。 var d = [];
吾有三數。曰一。曰二。曰五。名之曰⌈甲⌋。曰⌈乙⌋。曰⌈丙⌋。 var a =1,b = 2,c=5;
2.流程控制
利用这些我们可以编写一些简单程序
文言 JavaScript
若三大於二者。乃得⌈⌈想當然耳⌋⌋也。 if (3>2){return "of course";}
若三不大於五者。乃得「「想當然耳」」 if(3<=5){return "of course"}else{return "noway"}
為是百遍。……云云。 for(vari=0;i100;i++){...}
恒為是。……云云。 while (true){...}
凡「天地」中之「人」。……云云。 for (var human of world){...}
乃止。 break;
3.运算
最基本的运算是必须的
文言 JavaScript
加一以二。 1+2
加一於二。 2+1
加一以二。乘其以三。 (1+2)*3
除十以三。所餘幾何。 10%3
減七百五十六以四百三十三。名之曰「甲」。 var a=756-433;
夫「甲」「乙」中有陽乎。 a||b
夫「甲」「乙」中無陰乎。 a&&b
4.容器
使存储数据更加方便
文言 JavaScript
吾有一列。名之曰⌈甲⌋。充⌈甲⌋以四。以二。 var a = []; a.push(4,2);
銜⌈甲⌋以⌈乙⌋。以⌈丙⌋。 a.concat(b).concat(c);
夫⌈甲⌋之一。 a[0];
夫⌈甲⌋之其餘。 a.slice(1);
夫⌈玫瑰⌋之⌈⌈名⌋⌋。 rose["name"]
夫⌈寳劍⌋之辰。 sword.lengh;
5.函数
文言 JavaScript
吾有一術。名之曰⌈吸星大法⌋。是術曰。……是謂⌈吸星大法⌋之術也。 function f(){……}
吾有一術.名之曰⌈六脈神劍⌋。欲行是術。必先得六數。曰⌈甲⌋。曰⌈乙⌋。
曰⌈丙⌋。曰⌈丁⌋。曰⌈戊⌋。曰⌈己⌋乃行是術曰。……是謂⌈六脈神劍⌋之術也。 function f(a,b,c,d,e,f){……}
吾有一術.名之曰⌈翻倍⌋。欲行是術。必先得一數。。曰⌈甲⌋。乃行是術曰。
乘⌈甲⌋以二。名之曰⌈乙⌋。乃得⌈乙⌋。是謂⌈翻倍⌋之術也。 function double(a){var b = a * 2;return b;}
施⌈翻倍⌋於⌈大衍⌋。 double(dayan);
吾有一數。曰一。書之。 console.log(1);
这样我们就可以实现一些基本操作,如:
吾有一術名之曰「乘算口訣」。是術曰。
有數一名之曰「甲」。
恆為是。若「甲」不小於十者乃止也。
有數一名之曰「乙」。
加「甲」以「乙」名之曰「丙」。
恆為是。若「乙」不小於「丙」者乃止也。
乘「甲」以「乙」名之曰「果」。
若「果」不小於十者吾有三言。曰「乙」曰「甲」曰「果」書之。
若非吾有四言。曰「乙」曰「甲」曰「「得」」曰「果」書之也。
加「乙」以一。昔之「乙」者今其是矣。
云云。
加「甲」以一。昔之「甲」者今其是矣。
云云。
是謂「乘算口訣」之術也。
施「乘算口訣」。
//乘法口决
//摘自https://ide.wy-lang.org/?file=multiplication_table
从上面可以看出在Wenyan中 甲 为 a ,乙 为 b ,以此类推。