Skip to content

Commit c8f2bfd

Browse files
LingDong-Lingdong Huang
authored andcommitted
platform-specific stdlib steup
1 parent 1079c4c commit c8f2bfd

File tree

7 files changed

+77
-34
lines changed

7 files changed

+77
-34
lines changed
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
11
今有一術。名之曰「左移」。欲行是術。必先得二數。曰「甲」。曰「乙」。乃行是術曰。
2-
施「((x,y)=>(x<<y))」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
2+
施「(x=>y=>(x<<y))」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
33
是謂「左移」之術也。
44

55
今有一術。名之曰「右移」。欲行是術。必先得二數。曰「甲」。曰「乙」。乃行是術曰。
6-
施「((x,y)=>(x>>y))」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
6+
施「(x=>y=>(x>>y))」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
77
是謂「右移」之術也。
88

99
今有一術。名之曰「補零右移」。欲行是術。必先得二數。曰「甲」。曰「乙」。乃行是術曰。
10-
施「((x,y)=>(x>>>y))」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
10+
施「(x=>y=>(x>>>y))」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
1111
是謂「補零右移」之術也。
1212

1313
今有一術。名之曰「位与」。欲行是術。必先得二數。曰「甲」。曰「乙」。乃行是術曰。
14-
施「((x,y)=>(x&y))」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
14+
施「(x=>y=>(x&y))」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
1515
是謂「位与」之術也。
1616

1717
今有一術。名之曰「位或」。欲行是術。必先得二數。曰「甲」。曰「乙」。乃行是術曰。
18-
施「((x,y)=>(x|y))」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
18+
施「(x=>y=>(x|y))」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
1919
是謂「位或」之術也。
2020

2121
今有一術。名之曰「异或」。欲行是術。必先得二數。曰「甲」。曰「乙」。乃行是術曰。
22-
施「((x,y)=>(x|y))」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
22+
施「(x=>y=>(x^y))」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
2323
是謂「异或」之術也。
2424

2525
今有一術。名之曰「与非」。欲行是術。必先得二數。曰「甲」。曰「乙」。乃行是術曰。
26-
施「((x,y)=>(~(x&y)))」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
26+
施「(x=>y=>(~(x&y)))」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
2727
是謂「与非」之術也。
2828

2929
今有一術。名之曰「位變」。欲行是術。必先得一數。曰「甲」。乃行是術曰。
30-
施「((x)=>(~x))」於「甲」。名之曰「乙」。乃得「乙」。
30+
施「(x=>y=>(~x))」於「甲」。名之曰「乙」。乃得「乙」。
3131
是謂「位變」之術也。

lib/py/位經.wy

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
今有一術。名之曰「左移」。欲行是術。必先得二數。曰「甲」。曰「乙」。乃行是術曰。
2+
吾有一術。名之曰
3+
施「(lambda x: lambda y : x<<y)」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
4+
是謂「左移」之術也。
5+
6+
今有一術。名之曰「右移」。欲行是術。必先得二數。曰「甲」。曰「乙」。乃行是術曰。
7+
施「(lambda x: lambda y : x>>y)」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
8+
是謂「右移」之術也。
9+
10+
今有一術。名之曰「補零右移」。欲行是術。必先得二數。曰「甲」。曰「乙」。乃行是術曰。
11+
施「(lambda x: lambda y : return (x % 0x100000000) >> y)」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
12+
是謂「補零右移」之術也。
13+
14+
今有一術。名之曰「位与」。欲行是術。必先得二數。曰「甲」。曰「乙」。乃行是術曰。
15+
施「(lambda x: lambda y : x&y)」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
16+
是謂「位与」之術也。
17+
18+
今有一術。名之曰「位或」。欲行是術。必先得二數。曰「甲」。曰「乙」。乃行是術曰。
19+
施「(lambda x: lambda y : x|y)」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
20+
是謂「位或」之術也。
21+
22+
今有一術。名之曰「异或」。欲行是術。必先得二數。曰「甲」。曰「乙」。乃行是術曰。
23+
施「(lambda x: lambda y : x^y)」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
24+
是謂「异或」之術也。
25+
26+
今有一術。名之曰「与非」。欲行是術。必先得二數。曰「甲」。曰「乙」。乃行是術曰。
27+
施「(lambda x: lambda y : ~(x&y))」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
28+
是謂「与非」之術也。
29+
30+
今有一術。名之曰「位變」。欲行是術。必先得一數。曰「甲」。乃行是術曰。
31+
施「(lambda x: ~x」於「甲」。名之曰「乙」。乃得「乙」。
32+
是謂「位變」之術也。
File renamed without changes.

site/ide.html

Lines changed: 4 additions & 2 deletions
Large diffs are not rendered by default.

site/index.html

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -33273,11 +33273,11 @@
3327333273
var out = [];
3327433274
var i = 0;
3327533275
while (i < txt.length) {
33276-
if (txt[i] == "「") {
33277-
off ++;
33276+
if (txt[i] == "「" || txt[i] == "『") {
33277+
off++;
3327833278
out.push("quot");
33279-
} else if (txt[i] == "」") {
33280-
off --;
33279+
} else if (txt[i] == "」" || txt[i] == "』") {
33280+
off--;
3328133281
out.push("quot");
3328233282
} else {
3328333283
if (off) {
@@ -33601,33 +33601,38 @@
3360133601
tok += txt[i];
3360233602
}
3360333603
} else if ((txt[i] == "「" && txt[i + 1] == "「") || txt[i] == "『") {
33604-
var is_sin = (txt[i] == "「")
33604+
var is_sin = txt[i] == "「";
3360533605
if (litlvl == 0) {
3360633606
enddata();
3360733607
endnum();
3360833608
idt = true;
3360933609
tok = "";
33610-
}else{
33611-
tok += txt[i]
33612-
if (is_sin){
33613-
tok += txt[i+1]
33610+
} else {
33611+
tok += txt[i];
33612+
if (is_sin) {
33613+
tok += txt[i + 1];
3361433614
}
3361533615
}
3361633616
litlvl++;
3361733617
if (is_sin) {
3361833618
i++;
3361933619
}
33620-
} else if ((txt[i] == "」" && txt[i + 1] == "」") || txt[i] == "』") {
33621-
var is_sin = (txt[i] == "」");
33620+
} else if (
33621+
(txt[i] == "」" &&
33622+
txt[i + 1] == "」" &&
33623+
(txt[i + 2] != "」" || txt[i + 3] == "」")) ||
33624+
txt[i] == "』"
33625+
) {
33626+
var is_sin = txt[i] == "」";
3362233627
litlvl--;
3362333628
if (litlvl == 0) {
3362433629
tokens.push(["lit", `"${tok}"`, i + 1]);
3362533630
idt = false;
3362633631
tok = "";
33627-
}else{
33628-
tok += txt[i]
33629-
if (is_sin){
33630-
tok += txt[i+1]
33632+
} else {
33633+
tok += txt[i];
33634+
if (is_sin) {
33635+
tok += txt[i + 1];
3363133636
}
3363233637
}
3363333638
if (is_sin) {
@@ -33977,7 +33982,7 @@
3397733982
gettok(i + 2, 0) == "ctnr" &&
3397833983
gettok(i + 2, 1) == "subs"
3397933984
) {
33980-
typeassert(i + 1, ["iden", "lit"]);
33985+
typeassert(i + 1, ["iden", "lit", "ans"]);
3398133986
var x = {
3398233987
op: "subscript",
3398333988
container: tokens[i + 1],
@@ -33992,7 +33997,7 @@
3399233997
gettok(i + 2, 0) == "ctnr" &&
3399333998
gettok(i + 2, 1) == "len"
3399433999
) {
33995-
typeassert(i + 1, ["iden", "lit"]);
34000+
typeassert(i + 1, ["iden", "lit", "subs"]);
3399634001
var x = { op: "length", container: tokens[i + 1], pos };
3399734002
asc.push(x);
3399834003
i += 3;
@@ -34239,7 +34244,9 @@
3423934244
imports = Array.from(new Set(imports));
3424034245
for (var i = 0; i < imports.length; i++) {
3424134246
var isrc;
34242-
if (imports[i] in lib) {
34247+
if (imports[i] in lib[lang]){
34248+
isrc = lib[lang][imports[i]];
34249+
}else if (imports[i] in lib) {
3424334250
isrc = lib[imports[i]];
3424434251
} else {
3424534252
isrc = reader(imports[i]);

src/parser.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -688,7 +688,9 @@ function compile(
688688
imports = Array.from(new Set(imports));
689689
for (var i = 0; i < imports.length; i++) {
690690
var isrc;
691-
if (imports[i] in lib) {
691+
if (imports[i] in lib[lang]) {
692+
isrc = lib[lang][imports[i]];
693+
} else if (imports[i] in lib) {
692694
isrc = lib[imports[i]];
693695
} else {
694696
isrc = reader(imports[i]);

tools/utils.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,14 @@ function catsrc() {
3232
return s;
3333
}
3434

35-
function loadlib() {
35+
function loadlib(pth = "../lib/") {
3636
var lib = {};
37-
var srcs = fs.readdirSync("../lib/");
37+
var srcs = fs.readdirSync(pth);
3838
for (var i = 0; i < srcs.length; i++) {
3939
if (srcs[i].endsWith(".wy")) {
40-
lib[srcs[i].split(".")[0]] = fs
41-
.readFileSync("../lib/" + srcs[i])
42-
.toString();
40+
lib[srcs[i].split(".")[0]] = fs.readFileSync(pth + srcs[i]).toString();
41+
} else if (fs.lstatSync(pth + srcs[i]).isDirectory()) {
42+
lib[srcs[i]] = loadlib((path = pth + srcs[i] + "/"));
4343
}
4444
}
4545
return lib;

0 commit comments

Comments
 (0)