文言文编程大法好

亲自体验了一把最近github上很火的文言文编程的项目。

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

clone下来repo了然后yarn && yarn run make_cmdline编译了编译器。

文言编译器可以把你的文言文代码编译成JavaScript或者Python。

vscode有语言支持的插件,但是还做的不是很完善。

自己写了一段判断素数的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
吾有一術。名之曰「開方」。欲行是術。必先得一數。曰「數」。乃行是術曰。
有數零。名之曰「左」。吾有一數。曰「數」。名之曰「右」。
恆為是。加「左」以「右」。除其以二。名之曰「中」。
乘「中」以「中」。名之曰「方」。減「數」以「方」。名之曰「差」。
若「差」小於零者。減零以「差」。名之曰「負差」。昔之「差」者。今「負差」也也。
除一以千。除其以百。名之曰「極小數」。
若「差」小於「極小數」者。乃得「中」也。
若「數」大於「方」者。昔之「左」者。今「中」也。
若非。昔之「右」者。今「中」也也云云。
是謂「開方」之術也。

吾有一術。名之曰「質數否」。欲行是術。必先得一數。曰「數」。乃行是術曰。
若「數」不大於一者。乃得陰也。若「數」等於二者。乃得陽也。
有數二。名之曰「除數」。施「開方」於「數」。名之曰「冪」。
恆為是。若 「除數」不小於「冪」者。乃止也。
除「數」以「除數」。所餘幾何。名之曰「餘」。若「餘」等於零者。乃得陰也。
加「除數」以一。名之曰「新除數」。昔之「除數」者。今「新除數」也云云。乃得陽。
是謂「質數否」之術也。

吾有一列。名之曰「數列」。
充「數列」以一。以二。以五。以九。以十九。以二十一。以九十七。以九十九。以十億零七。
凡「數列」中之「數」。施「質數否」於「數」。名之曰「果」。
若「果」者。加「數」以「「是素數」」。書之。
若非。加「數」以「「不是素數」」。書之也云云。

编译出来的JavaScript是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
var 開方 = () => 0;
開方 = function() {
var 左 = 0;
var 右 = 數;
while (true) {
var _ans1 = 左 + 右;
var _ans2 = _ans1 / 2;
var 中 = _ans2;
var _ans3 = 中 * 中;
var 方 = _ans3;
var _ans4 = 數 - 方;
var 差 = _ans4;
if (差 < 0) {
var _ans5 = 0 - 差;
var 負差 = _ans5;
差 = 負差;
};
var _ans6 = 1 / 1000;
var _ans7 = _ans6 / 100;
var 極小數 = _ans7;
if (差 < 極小數) {
return
};
if (數 > 方) {
左 = 中;
} else {
右 = 中;
};
};
};
var 質數否 = () => 0;
質數否 = function() {
if (數 <= 1) {
return false
};
if (數 == 2) {
return true
};
var 除數 = 2;
var _ans8 = 開方(數);
var 冪 = _ans8;
while (true) {
if (除數 >= 冪) {
break;
};
var _ans9 = 數 % 除數;
var 餘 = _ans9;
if (餘 == 0) {
return false
};
var _ans10 = 除數 + 1;
var 新除數 = _ans10;
除數 = 新除數;
};
return true
};
var 數列 = [];
數列.push(1, 2, 5, 9, 19, 21, 97, 99, 1000000007);
for (varof 數列) {
var _ans11 = 質數否(數);
var 果 = _ans11;
if (果) {
var _ans12 = 數 + "是素數";
console.log(_ans12);
} else {
var _ans13 = 數 + "不是素數";
console.log(_ans13);
};
};

开发者提供了一个在线IDE,有兴趣的同学可以去玩一玩。

vscode的插件可以把你的代码整成书一样的矢量图。