aontu 0.5.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/aontu.ts +3 -2
- package/dist/aontu.d.ts +2 -2
- package/dist/aontu.js +3 -4
- package/dist/aontu.js.map +1 -1
- package/dist/aontu.min.js +1 -63
- package/dist/lib/lang.d.ts +1 -3
- package/dist/lib/lang.js +53 -25
- package/dist/lib/lang.js.map +1 -1
- package/dist/lib/op/disjunct.js +10 -10
- package/dist/lib/op/disjunct.js.map +1 -1
- package/dist/lib/op/op.d.ts +2 -2
- package/dist/lib/op/op.js.map +1 -1
- package/dist/lib/op/unite.js +19 -14
- package/dist/lib/op/unite.js.map +1 -1
- package/dist/lib/type.d.ts +34 -22
- package/dist/lib/type.js +23 -76
- package/dist/lib/type.js.map +1 -1
- package/dist/lib/unify.d.ts +5 -2
- package/dist/lib/unify.js +7 -5
- package/dist/lib/unify.js.map +1 -1
- package/dist/lib/val/ConjunctVal.d.ts +12 -0
- package/dist/lib/val/ConjunctVal.js +191 -0
- package/dist/lib/val/ConjunctVal.js.map +1 -0
- package/dist/lib/val/DisjunctVal.d.ts +12 -0
- package/dist/lib/val/DisjunctVal.js +85 -0
- package/dist/lib/val/DisjunctVal.js.map +1 -0
- package/dist/lib/val/ListVal.d.ts +14 -0
- package/dist/lib/val/ListVal.js +91 -0
- package/dist/lib/val/ListVal.js.map +1 -0
- package/dist/lib/val/MapVal.d.ts +14 -0
- package/dist/lib/val/MapVal.js +141 -0
- package/dist/lib/val/MapVal.js.map +1 -0
- package/dist/lib/val/Nil.d.ts +15 -0
- package/dist/lib/val/Nil.js +54 -0
- package/dist/lib/val/Nil.js.map +1 -0
- package/dist/lib/val/PrefVal.d.ts +12 -0
- package/dist/lib/val/PrefVal.js +60 -0
- package/dist/lib/val/PrefVal.js.map +1 -0
- package/dist/lib/val/RefVal.d.ts +15 -0
- package/dist/lib/val/RefVal.js +73 -0
- package/dist/lib/val/RefVal.js.map +1 -0
- package/dist/lib/val/ValBase.d.ts +22 -0
- package/dist/lib/val/ValBase.js +27 -0
- package/dist/lib/val/ValBase.js.map +1 -0
- package/dist/lib/val.d.ts +6 -93
- package/dist/lib/val.js +13 -609
- package/dist/lib/val.js.map +1 -1
- package/lib/lang.ts +79 -49
- package/lib/op/disjunct.ts +14 -8
- package/lib/op/op.ts +2 -1
- package/lib/op/unite.ts +14 -12
- package/lib/type.ts +108 -0
- package/lib/unify.ts +10 -8
- package/lib/val/ConjunctVal.ts +284 -0
- package/lib/val/DisjunctVal.ts +145 -0
- package/lib/val/ListVal.ts +154 -0
- package/lib/val/MapVal.ts +226 -0
- package/lib/val/Nil.ts +94 -0
- package/lib/val/PrefVal.ts +113 -0
- package/lib/val/RefVal.ts +126 -0
- package/lib/val/RefVal.ts~ +319 -0
- package/lib/val/ValBase.ts +78 -0
- package/lib/val.ts +15 -825
- package/package.json +27 -24
- package/lib/common.ts +0 -19
package/dist/lib/lang.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* Copyright (c) 2021 Richard Rodger, MIT License */
|
|
2
|
+
/* Copyright (c) 2021-2022 Richard Rodger, MIT License */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.includeFileResolver = exports.Site = exports.Lang = void 0;
|
|
5
5
|
const jsonic_next_1 = require("@jsonic/jsonic-next");
|
|
@@ -7,8 +7,18 @@ const multisource_1 = require("@jsonic/multisource");
|
|
|
7
7
|
const file_1 = require("@jsonic/multisource/dist/resolver/file");
|
|
8
8
|
const expr_1 = require("@jsonic/expr");
|
|
9
9
|
const path_1 = require("@jsonic/path");
|
|
10
|
+
const type_1 = require("./type");
|
|
11
|
+
const ConjunctVal_1 = require("./val/ConjunctVal");
|
|
12
|
+
const DisjunctVal_1 = require("./val/DisjunctVal");
|
|
13
|
+
const MapVal_1 = require("./val/MapVal");
|
|
14
|
+
const ListVal_1 = require("./val/ListVal");
|
|
15
|
+
const PrefVal_1 = require("./val/PrefVal");
|
|
16
|
+
const RefVal_1 = require("./val/RefVal");
|
|
17
|
+
const Nil_1 = require("./val/Nil");
|
|
10
18
|
const val_1 = require("./val");
|
|
19
|
+
// console.log('TOP', TOP)
|
|
11
20
|
class Site {
|
|
21
|
+
// static NONE = new Site(TOP)
|
|
12
22
|
constructor(val) {
|
|
13
23
|
this.row = -1;
|
|
14
24
|
this.col = -1;
|
|
@@ -21,7 +31,6 @@ class Site {
|
|
|
21
31
|
}
|
|
22
32
|
}
|
|
23
33
|
exports.Site = Site;
|
|
24
|
-
Site.NONE = new Site(val_1.TOP);
|
|
25
34
|
let AontuJsonic = function aontu(jsonic) {
|
|
26
35
|
jsonic.use(path_1.Path);
|
|
27
36
|
// TODO: refactor Val constructor
|
|
@@ -46,26 +55,35 @@ let AontuJsonic = function aontu(jsonic) {
|
|
|
46
55
|
val: (r) => addpath(new val_1.ScalarTypeVal(Boolean), r.keep.path)
|
|
47
56
|
},
|
|
48
57
|
'nil': {
|
|
49
|
-
val: (r) => addpath(new
|
|
58
|
+
val: (r) => addpath(new Nil_1.Nil('literal'), r.keep.path)
|
|
50
59
|
},
|
|
51
60
|
// TODO: FIX: need a TOP instance to hold path
|
|
52
|
-
'top': { val: () =>
|
|
61
|
+
'top': { val: () => type_1.TOP },
|
|
53
62
|
}
|
|
54
63
|
},
|
|
55
64
|
map: {
|
|
56
65
|
merge: (prev, curr) => {
|
|
57
66
|
let pval = prev;
|
|
58
67
|
let cval = curr;
|
|
59
|
-
|
|
68
|
+
if ((pval === null || pval === void 0 ? void 0 : pval.isVal) && (cval === null || cval === void 0 ? void 0 : cval.isVal)) {
|
|
69
|
+
return addpath(new ConjunctVal_1.ConjunctVal([pval, cval]), prev.path);
|
|
70
|
+
}
|
|
71
|
+
// Handle defered conjuncts, where MapVal does not yet
|
|
72
|
+
// exist, by creating ConjunctVal later.
|
|
73
|
+
else {
|
|
74
|
+
prev.___merge = (prev.___merge || []);
|
|
75
|
+
prev.___merge.push(curr);
|
|
76
|
+
return prev;
|
|
77
|
+
}
|
|
60
78
|
}
|
|
61
79
|
}
|
|
62
80
|
});
|
|
63
81
|
let opmap = {
|
|
64
|
-
'conjunct-infix': (r, _op, terms) => addpath(new
|
|
65
|
-
'disjunct-infix': (r, _op, terms) => addpath(new
|
|
66
|
-
'dot-prefix': (r, _op, terms) => addpath(new
|
|
67
|
-
'dot-infix': (r, _op, terms) => addpath(new
|
|
68
|
-
'star-prefix': (r, _op, terms) => addpath(new
|
|
82
|
+
'conjunct-infix': (r, _op, terms) => addpath(new ConjunctVal_1.ConjunctVal(terms), r.keep.path),
|
|
83
|
+
'disjunct-infix': (r, _op, terms) => addpath(new DisjunctVal_1.DisjunctVal(terms), r.keep.path),
|
|
84
|
+
'dot-prefix': (r, _op, terms) => addpath(new RefVal_1.RefVal(terms, true), r.keep.path),
|
|
85
|
+
'dot-infix': (r, _op, terms) => addpath(new RefVal_1.RefVal(terms), r.keep.path),
|
|
86
|
+
'star-prefix': (r, _op, terms) => addpath(new PrefVal_1.PrefVal(terms[0]), r.keep.path),
|
|
69
87
|
};
|
|
70
88
|
jsonic
|
|
71
89
|
.use(expr_1.Expr, {
|
|
@@ -105,11 +123,9 @@ let AontuJsonic = function aontu(jsonic) {
|
|
|
105
123
|
let CJ = jsonic.token['#E&'];
|
|
106
124
|
let CL = jsonic.token.CL;
|
|
107
125
|
jsonic.rule('val', (rs) => {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
// let out = orig_bc.call(this, rule, ctx)
|
|
112
|
-
rs.bc((r, ctx) => {
|
|
126
|
+
rs
|
|
127
|
+
.open([{ s: [CJ, CL], p: 'map', b: 2, g: 'spread' }])
|
|
128
|
+
.bc((r, ctx) => {
|
|
113
129
|
let valnode = r.node;
|
|
114
130
|
let valtype = typeof valnode;
|
|
115
131
|
// console.log('VAL RULE', valtype, r.use, r.node)
|
|
@@ -142,9 +158,20 @@ let AontuJsonic = function aontu(jsonic) {
|
|
|
142
158
|
// let orig_bc = rs.def.bc
|
|
143
159
|
// rs.def.bc = function(rule: Rule, ctx: Context) {
|
|
144
160
|
// let out = orig_bc ? orig_bc.call(this, rule, ctx) : undefined
|
|
145
|
-
rs
|
|
146
|
-
|
|
147
|
-
|
|
161
|
+
rs
|
|
162
|
+
.open([{ s: [CJ, CL], p: 'pair', b: 2, g: 'spread' }])
|
|
163
|
+
.bc((r) => {
|
|
164
|
+
let mo = r.node;
|
|
165
|
+
// Handle defered conjuncts, e.g. `{x:1 @"foo"}`
|
|
166
|
+
if (mo.___merge) {
|
|
167
|
+
let mop = { ...mo };
|
|
168
|
+
delete mop.___merge;
|
|
169
|
+
let mopv = new MapVal_1.MapVal(mop);
|
|
170
|
+
r.node = addpath(new ConjunctVal_1.ConjunctVal([mopv, ...mo.___merge]), r.keep.path);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
r.node = addpath(new MapVal_1.MapVal(mo), r.keep.path);
|
|
174
|
+
}
|
|
148
175
|
// return out
|
|
149
176
|
return undefined;
|
|
150
177
|
});
|
|
@@ -155,7 +182,7 @@ let AontuJsonic = function aontu(jsonic) {
|
|
|
155
182
|
// rs.def.bc = function(rule: Rule, ctx: Context) {
|
|
156
183
|
// let out = orig_bc ? orig_bc.call(this, rule, ctx) : undefined
|
|
157
184
|
rs.bc((r) => {
|
|
158
|
-
r.node = addpath(new
|
|
185
|
+
r.node = addpath(new ListVal_1.ListVal(r.node), r.keep.path);
|
|
159
186
|
// return out
|
|
160
187
|
return undefined;
|
|
161
188
|
});
|
|
@@ -167,9 +194,9 @@ let AontuJsonic = function aontu(jsonic) {
|
|
|
167
194
|
.bc((rule) => {
|
|
168
195
|
// TRAVERSE PARENTS TO GET PATH
|
|
169
196
|
if (rule.use.spread) {
|
|
170
|
-
rule.node[
|
|
171
|
-
(rule.node[
|
|
172
|
-
rule.node[
|
|
197
|
+
rule.node[MapVal_1.MapVal.SPREAD] =
|
|
198
|
+
(rule.node[MapVal_1.MapVal.SPREAD] || { o: rule.o0.src, v: [] });
|
|
199
|
+
rule.node[MapVal_1.MapVal.SPREAD].v.push(rule.child.node);
|
|
173
200
|
}
|
|
174
201
|
return undefined;
|
|
175
202
|
});
|
|
@@ -181,9 +208,9 @@ let AontuJsonic = function aontu(jsonic) {
|
|
|
181
208
|
.bc((rule) => {
|
|
182
209
|
// TRAVERSE PARENTS TO GET PATH
|
|
183
210
|
if (rule.use.spread) {
|
|
184
|
-
rule.node[
|
|
185
|
-
(rule.node[
|
|
186
|
-
rule.node[
|
|
211
|
+
rule.node[ListVal_1.ListVal.SPREAD] =
|
|
212
|
+
(rule.node[ListVal_1.ListVal.SPREAD] || { o: rule.o0.src, v: [] });
|
|
213
|
+
rule.node[ListVal_1.ListVal.SPREAD].v.push(rule.child.node);
|
|
187
214
|
}
|
|
188
215
|
return undefined;
|
|
189
216
|
});
|
|
@@ -202,6 +229,7 @@ class Lang {
|
|
|
202
229
|
};
|
|
203
230
|
this.options = Object.assign({}, this.options, options);
|
|
204
231
|
this.jsonic = jsonic_next_1.Jsonic.make()
|
|
232
|
+
// .use(Debug, { trace: true })
|
|
205
233
|
.use(AontuJsonic)
|
|
206
234
|
.use(multisource_1.MultiSource, {
|
|
207
235
|
resolver: (options === null || options === void 0 ? void 0 : options.resolver) || includeFileResolver
|
package/dist/lib/lang.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lang.js","sourceRoot":"","sources":["../../lib/lang.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"lang.js","sourceRoot":"","sources":["../../lib/lang.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/op/disjunct.js
CHANGED
|
@@ -2,27 +2,27 @@
|
|
|
2
2
|
/* Copyright (c) 2021 Richard Rodger, MIT License */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.disjunct = void 0;
|
|
5
|
-
const
|
|
6
|
-
const
|
|
5
|
+
const DisjunctVal_1 = require("../val/DisjunctVal");
|
|
6
|
+
const ValBase_1 = require("../val/ValBase");
|
|
7
7
|
const disjunct = (ctx, a, b) => {
|
|
8
8
|
let peers = [];
|
|
9
9
|
let origsites = [];
|
|
10
|
-
origsites.push(append(peers, a))
|
|
11
|
-
origsites.push(append(peers, b))
|
|
12
|
-
let out = new
|
|
10
|
+
// origsites.push(append(peers, a))
|
|
11
|
+
// origsites.push(append(peers, b))
|
|
12
|
+
let out = new DisjunctVal_1.DisjunctVal(peers, ctx, origsites);
|
|
13
13
|
return out;
|
|
14
14
|
};
|
|
15
15
|
exports.disjunct = disjunct;
|
|
16
16
|
function append(peers, v) {
|
|
17
|
-
let origsite =
|
|
18
|
-
if (v instanceof
|
|
17
|
+
// let origsite: Site = Site.NONE
|
|
18
|
+
if (v instanceof DisjunctVal_1.DisjunctVal) {
|
|
19
19
|
peers.push(...v.peg);
|
|
20
|
-
origsite = v.site
|
|
20
|
+
// origsite = v.site
|
|
21
21
|
}
|
|
22
22
|
// TODO: handle no-error Nil (drop) and error Nil (keep and become)
|
|
23
|
-
else if (v instanceof
|
|
23
|
+
else if (v instanceof ValBase_1.ValBase) {
|
|
24
24
|
peers.push(v);
|
|
25
25
|
}
|
|
26
|
-
return origsite
|
|
26
|
+
// return origsite
|
|
27
27
|
}
|
|
28
28
|
//# sourceMappingURL=disjunct.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disjunct.js","sourceRoot":"","sources":["../../../lib/op/disjunct.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;
|
|
1
|
+
{"version":3,"file":"disjunct.js","sourceRoot":"","sources":["../../../lib/op/disjunct.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAOpD,oDAAgD;AAKhD,4CAAwC;AAGxC,MAAM,QAAQ,GAAc,CAAC,GAAa,EAAE,CAAO,EAAE,CAAO,EAAE,EAAE;IAC9D,IAAI,KAAK,GAAU,EAAE,CAAA;IACrB,IAAI,SAAS,GAAW,EAAE,CAAA;IAC1B,mCAAmC;IACnC,mCAAmC;IACnC,IAAI,GAAG,GAAG,IAAI,yBAAW,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAA;IAChD,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAqBC,4BAAQ;AAjBV,SAAS,MAAM,CAAC,KAAY,EAAE,CAAO;IACnC,iCAAiC;IAEjC,IAAI,CAAC,YAAY,yBAAW,EAAE;QAC5B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;QACpB,oBAAoB;KACrB;IAED,mEAAmE;SAC9D,IAAI,CAAC,YAAY,iBAAO,EAAE;QAC7B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KACd;IAED,kBAAkB;AACpB,CAAC"}
|
package/dist/lib/op/op.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Context } from '../unify';
|
|
2
|
-
import { Val } from '../
|
|
2
|
+
import { Val } from '../type';
|
|
3
3
|
import { disjunct } from './disjunct';
|
|
4
4
|
import { unite } from './unite';
|
|
5
|
-
|
|
5
|
+
type Operation = (ctx: Context, a?: Val, b?: Val, whence?: string) => Val;
|
|
6
6
|
export { Operation, disjunct, unite, };
|
package/dist/lib/op/op.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"op.js","sourceRoot":"","sources":["../../../lib/op/op.ts"],"names":[],"mappings":";AAAA,qDAAqD;;;AAMrD,yCAAqC;
|
|
1
|
+
{"version":3,"file":"op.js","sourceRoot":"","sources":["../../../lib/op/op.ts"],"names":[],"mappings":";AAAA,qDAAqD;;;AAMrD,yCAAqC;AASnC,yFATO,mBAAQ,OASP;AARV,mCAA+B;AAS7B,sFATO,aAAK,OASP"}
|
package/dist/lib/op/unite.js
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* Copyright (c) 2021 Richard Rodger, MIT License */
|
|
2
|
+
/* Copyright (c) 2021-2022 Richard Rodger, MIT License */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.unite = void 0;
|
|
5
|
-
const
|
|
5
|
+
const type_1 = require("../type");
|
|
6
|
+
const ConjunctVal_1 = require("../val/ConjunctVal");
|
|
7
|
+
const DisjunctVal_1 = require("../val/DisjunctVal");
|
|
8
|
+
const PrefVal_1 = require("../val/PrefVal");
|
|
9
|
+
const RefVal_1 = require("../val/RefVal");
|
|
10
|
+
const Nil_1 = require("../val/Nil");
|
|
6
11
|
// Vals should only have to unify downwards (in .unify) over Vals they understand.
|
|
7
12
|
// and for complex Vals, TOP, which means self unify if not yet done
|
|
8
13
|
const unite = (ctx, a, b, whence) => {
|
|
@@ -10,25 +15,25 @@ const unite = (ctx, a, b, whence) => {
|
|
|
10
15
|
// console.log('AA OP unite IN', a?.canon, b?.canon,
|
|
11
16
|
// 'W', whence,
|
|
12
17
|
// 'E', 0 < ctx?.err?.length ? ctx.err.map((e: Val) => e.canon) : '')
|
|
13
|
-
if (b && (
|
|
18
|
+
if (b && (type_1.TOP === a || !a)) {
|
|
14
19
|
//console.log('Utb', b.canon)
|
|
15
20
|
out = b;
|
|
16
21
|
}
|
|
17
|
-
else if (a && (
|
|
22
|
+
else if (a && (type_1.TOP === b || !b)) {
|
|
18
23
|
//console.log('Uta', a.canon)
|
|
19
24
|
out = a;
|
|
20
25
|
}
|
|
21
|
-
else if (a && b &&
|
|
22
|
-
if (a instanceof
|
|
26
|
+
else if (a && b && type_1.TOP !== b) {
|
|
27
|
+
if (a instanceof Nil_1.Nil) {
|
|
23
28
|
out = update(a, b);
|
|
24
29
|
}
|
|
25
|
-
else if (b instanceof
|
|
30
|
+
else if (b instanceof Nil_1.Nil) {
|
|
26
31
|
out = update(b, a);
|
|
27
32
|
}
|
|
28
|
-
else if (b instanceof
|
|
29
|
-
b instanceof
|
|
30
|
-
b instanceof
|
|
31
|
-
b instanceof
|
|
33
|
+
else if (b instanceof ConjunctVal_1.ConjunctVal ||
|
|
34
|
+
b instanceof DisjunctVal_1.DisjunctVal ||
|
|
35
|
+
b instanceof RefVal_1.RefVal ||
|
|
36
|
+
b instanceof PrefVal_1.PrefVal) {
|
|
32
37
|
//console.log('U', a.canon, b.canon)
|
|
33
38
|
return b.unify(a, ctx);
|
|
34
39
|
}
|
|
@@ -41,10 +46,10 @@ const unite = (ctx, a, b, whence) => {
|
|
|
41
46
|
}
|
|
42
47
|
}
|
|
43
48
|
if (!out || !out.unify) {
|
|
44
|
-
out =
|
|
49
|
+
out = Nil_1.Nil.make(ctx, 'unite', a, b);
|
|
45
50
|
}
|
|
46
|
-
if (
|
|
47
|
-
out = out.unify(
|
|
51
|
+
if (type_1.DONE !== out.done) {
|
|
52
|
+
out = out.unify(type_1.TOP, ctx);
|
|
48
53
|
}
|
|
49
54
|
// console.log('AA OP unite OUT', a?.canon, b?.canon, '->', out && out.canon,
|
|
50
55
|
// 0 < ctx?.err?.length ? ctx.err.map((e: Val) => e.canon) : '')
|
package/dist/lib/op/unite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unite.js","sourceRoot":"","sources":["../../../lib/op/unite.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"unite.js","sourceRoot":"","sources":["../../../lib/op/unite.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAKzD,kCAAmC;AAGnC,oDAAgD;AAChD,oDAAgD;AAChD,4CAAwC;AACxC,0CAAsC;AACtC,oCAAgC;AAQhC,kFAAkF;AAClF,oEAAoE;AACpE,MAAM,KAAK,GAAc,CAAC,GAAY,EAAE,CAAO,EAAE,CAAO,EAAE,MAAe,EAAE,EAAE;IAC3E,IAAI,GAAG,GAAG,CAAC,CAAA;IAEX,qDAAqD;IACrD,iBAAiB;IACjB,uEAAuE;IAGvE,IAAI,CAAC,IAAI,CAAC,UAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QAC1B,6BAA6B;QAC7B,GAAG,GAAG,CAAC,CAAA;KACR;SAEI,IAAI,CAAC,IAAI,CAAC,UAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QAC/B,6BAA6B;QAC7B,GAAG,GAAG,CAAC,CAAA;KACR;SAEI,IAAI,CAAC,IAAI,CAAC,IAAI,UAAG,KAAK,CAAC,EAAE;QAC5B,IAAI,CAAC,YAAY,SAAG,EAAE;YACpB,GAAG,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;SACnB;aACI,IAAI,CAAC,YAAY,SAAG,EAAE;YACzB,GAAG,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;SACnB;aACI,IACH,CAAC,YAAY,yBAAW;YACxB,CAAC,YAAY,yBAAW;YACxB,CAAC,YAAY,eAAM;YACnB,CAAC,YAAY,iBAAO,EACpB;YAEA,oCAAoC;YACpC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;SACvB;QAED,yBAAyB;aACpB,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,EAAE;YAC3D,GAAG,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;SACnB;aAEI;YACH,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;SACtB;KACF;IAED,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;QACtB,GAAG,GAAG,SAAG,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;KACnC;IAED,IAAI,WAAI,KAAK,GAAG,CAAC,IAAI,EAAE;QACrB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,UAAG,EAAE,GAAG,CAAC,CAAA;KAC1B;IAED,6EAA6E;IAC7E,kEAAkE;IAElE,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAUC,sBAAK;AAPP,SAAS,MAAM,CAAC,CAAM,EAAE,EAAO;IAC7B,6BAA6B;IAC7B,OAAO,CAAC,CAAA;AACV,CAAC"}
|
package/dist/lib/type.d.ts
CHANGED
|
@@ -1,23 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { Resolver } from '@jsonic/multisource';
|
|
2
|
+
import { Context } from './unify';
|
|
3
|
+
import { Site } from './lang';
|
|
4
|
+
type Options = {
|
|
5
|
+
src: string;
|
|
6
|
+
print: number;
|
|
7
|
+
resolver?: Resolver;
|
|
8
|
+
base?: string;
|
|
9
|
+
};
|
|
10
|
+
interface Val {
|
|
11
|
+
isVal: boolean;
|
|
12
|
+
id: number;
|
|
13
|
+
done: number;
|
|
14
|
+
path: string[];
|
|
15
|
+
row: number;
|
|
16
|
+
col: number;
|
|
17
|
+
url: string;
|
|
18
|
+
top?: boolean;
|
|
19
|
+
peg?: any;
|
|
20
|
+
err?: any[];
|
|
21
|
+
deps?: any;
|
|
22
|
+
same(peer: Val): boolean;
|
|
23
|
+
get site(): Site;
|
|
24
|
+
unify(peer: Val, ctx?: Context): Val;
|
|
25
|
+
get canon(): string;
|
|
26
|
+
gen(ctx?: Context): any;
|
|
6
27
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
declare
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
declare class ScalarVal extends Val<unknown> {
|
|
16
|
-
constructor(val: String | Number | Boolean);
|
|
17
|
-
unify(peer: Val<any>): Val<any>;
|
|
18
|
-
}
|
|
19
|
-
declare class NumVal extends Val<number> {
|
|
20
|
-
constructor(val: number);
|
|
21
|
-
unify(peer: Val<any>): Val<any>;
|
|
22
|
-
}
|
|
23
|
-
export { Val, TOP, Bottom, ScalarVal, NumVal, Integer, };
|
|
28
|
+
type ValMap = {
|
|
29
|
+
[key: string]: Val;
|
|
30
|
+
};
|
|
31
|
+
type ValList = Val[];
|
|
32
|
+
declare const DONE = -1;
|
|
33
|
+
declare const TOP: Val;
|
|
34
|
+
export type { Val, ValMap, ValList, Options, };
|
|
35
|
+
export { DONE, TOP, Resolver, };
|
package/dist/lib/type.js
CHANGED
|
@@ -1,85 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
2
|
+
/* Copyright (c) 2022 Richard Rodger, MIT License */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.
|
|
4
|
+
exports.TOP = exports.DONE = void 0;
|
|
5
|
+
const lang_1 = require("./lang");
|
|
6
|
+
const DONE = -1;
|
|
7
|
+
exports.DONE = DONE;
|
|
5
8
|
// There can be only one.
|
|
6
9
|
const TOP = {
|
|
7
|
-
|
|
8
|
-
|
|
10
|
+
isVal: true,
|
|
11
|
+
id: 0,
|
|
12
|
+
top: true,
|
|
13
|
+
peg: undefined,
|
|
14
|
+
done: DONE,
|
|
15
|
+
path: [],
|
|
16
|
+
row: -1,
|
|
17
|
+
col: -1,
|
|
18
|
+
url: '',
|
|
19
|
+
unify(peer, _ctx) {
|
|
9
20
|
return peer;
|
|
10
21
|
},
|
|
22
|
+
get canon() { return 'top'; },
|
|
23
|
+
get site() { return new lang_1.Site(this); },
|
|
24
|
+
same(peer) {
|
|
25
|
+
return TOP === peer;
|
|
26
|
+
},
|
|
27
|
+
gen: (_ctx) => {
|
|
28
|
+
return undefined;
|
|
29
|
+
},
|
|
11
30
|
};
|
|
12
31
|
exports.TOP = TOP;
|
|
13
|
-
const UNIFIER = (self, peer) => {
|
|
14
|
-
if (peer === TOP) {
|
|
15
|
-
return self;
|
|
16
|
-
}
|
|
17
|
-
else if (self === TOP) {
|
|
18
|
-
return peer;
|
|
19
|
-
}
|
|
20
|
-
else if (self.constructor === peer.constructor) {
|
|
21
|
-
return self;
|
|
22
|
-
}
|
|
23
|
-
else if (peer instanceof Bottom) {
|
|
24
|
-
return peer;
|
|
25
|
-
}
|
|
26
|
-
else if (self instanceof Bottom) {
|
|
27
|
-
return self;
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
return new Bottom('no-unify');
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
class Val {
|
|
34
|
-
constructor(val) {
|
|
35
|
-
this.val = val;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
exports.Val = Val;
|
|
39
|
-
class Bottom extends Val {
|
|
40
|
-
constructor(why) {
|
|
41
|
-
super();
|
|
42
|
-
this.why = why;
|
|
43
|
-
}
|
|
44
|
-
unify(_peer) {
|
|
45
|
-
return this;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
exports.Bottom = Bottom;
|
|
49
|
-
class Integer {
|
|
50
|
-
static subsume(child) { return Number.isInteger(child.val); }
|
|
51
|
-
}
|
|
52
|
-
exports.Integer = Integer;
|
|
53
|
-
// TODO: should handle multiple types, rename to ScalarVal
|
|
54
|
-
class ScalarVal extends Val {
|
|
55
|
-
constructor(val) {
|
|
56
|
-
super(val);
|
|
57
|
-
}
|
|
58
|
-
unify(peer) {
|
|
59
|
-
if (peer instanceof this.val) {
|
|
60
|
-
return peer;
|
|
61
|
-
}
|
|
62
|
-
else if (this.val.subsume && this.val.subsume(peer)) {
|
|
63
|
-
return peer;
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
return UNIFIER(this, peer);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
exports.ScalarVal = ScalarVal;
|
|
71
|
-
class NumVal extends Val {
|
|
72
|
-
constructor(val) {
|
|
73
|
-
super(val);
|
|
74
|
-
}
|
|
75
|
-
unify(peer) {
|
|
76
|
-
if (peer instanceof ScalarVal) {
|
|
77
|
-
return peer.unify(this);
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
return UNIFIER(this, peer);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
exports.NumVal = NumVal;
|
|
85
32
|
//# sourceMappingURL=type.js.map
|
package/dist/lib/type.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.js","sourceRoot":"","sources":["../../lib/type.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"type.js","sourceRoot":"","sources":["../../lib/type.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AASpD,iCAEe;AAgDf,MAAM,IAAI,GAAG,CAAC,CAAC,CAAA;AA4Cb,oBAAI;AAzCN,yBAAyB;AACzB,MAAM,GAAG,GAAQ;IACf,KAAK,EAAE,IAAI;IAEX,EAAE,EAAE,CAAC;IACL,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,SAAS;IACd,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,EAAE;IACR,GAAG,EAAE,CAAC,CAAC;IACP,GAAG,EAAE,CAAC,CAAC;IACP,GAAG,EAAE,EAAE;IAEP,KAAK,CAAC,IAAS,EAAE,IAAa;QAC5B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,KAAK,KAAK,OAAO,KAAK,CAAA,CAAC,CAAC;IAE5B,IAAI,IAAI,KAAK,OAAO,IAAI,WAAI,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC;IAEpC,IAAI,CAAC,IAAS;QACZ,OAAO,GAAG,KAAK,IAAI,CAAA;IACrB,CAAC;IAED,GAAG,EAAE,CAAC,IAAc,EAAE,EAAE;QACtB,OAAO,SAAS,CAAA;IAClB,CAAC;CAEF,CAAA;AAaC,kBAAG"}
|
package/dist/lib/unify.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { Val
|
|
1
|
+
import type { Val } from './type';
|
|
2
2
|
import { Lang } from './lang';
|
|
3
|
-
|
|
3
|
+
import { MapVal } from '../lib/val/MapVal';
|
|
4
|
+
import { RefVal } from '../lib/val/RefVal';
|
|
5
|
+
import { Nil } from '../lib/val/Nil';
|
|
6
|
+
type Path = string[];
|
|
4
7
|
declare class Context {
|
|
5
8
|
root: Val;
|
|
6
9
|
path: Path;
|
package/dist/lib/unify.js
CHANGED
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
/* Copyright (c) 2021 Richard Rodger, MIT License */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.Unify = exports.Context = void 0;
|
|
5
|
-
const
|
|
5
|
+
const type_1 = require("./type");
|
|
6
6
|
const lang_1 = require("./lang");
|
|
7
7
|
const op_1 = require("./op/op");
|
|
8
|
+
const MapVal_1 = require("../lib/val/MapVal");
|
|
8
9
|
class Context {
|
|
9
10
|
constructor(cfg) {
|
|
10
11
|
this.root = cfg.root;
|
|
@@ -29,10 +30,10 @@ class Context {
|
|
|
29
30
|
find(ref) {
|
|
30
31
|
// console.log('FIND', ref.path, ref.peg)
|
|
31
32
|
// TODO: relative paths
|
|
32
|
-
if (this.root instanceof
|
|
33
|
+
if (this.root instanceof MapVal_1.MapVal && ref.absolute) {
|
|
33
34
|
let node = this.root;
|
|
34
35
|
let pI = 0;
|
|
35
|
-
for (; pI < ref.parts.length && node instanceof
|
|
36
|
+
for (; pI < ref.parts.length && node instanceof MapVal_1.MapVal; pI++) {
|
|
36
37
|
let part = ref.parts[pI];
|
|
37
38
|
node = node.peg[part];
|
|
38
39
|
}
|
|
@@ -60,8 +61,9 @@ class Unify {
|
|
|
60
61
|
// TODO: derive maxdc from res deterministically
|
|
61
62
|
// perhaps parse should count intial vals, paths, etc?
|
|
62
63
|
let maxdc = 999;
|
|
63
|
-
for (this.dc = 0; this.dc < maxdc &&
|
|
64
|
-
res = (0, op_1.unite)(ctx, res,
|
|
64
|
+
for (this.dc = 0; this.dc < maxdc && type_1.DONE !== res.done; this.dc++) {
|
|
65
|
+
res = (0, op_1.unite)(ctx, res, type_1.TOP);
|
|
66
|
+
// console.log('U', this.dc, res.canon)
|
|
65
67
|
ctx = ctx.clone({ root: res });
|
|
66
68
|
}
|
|
67
69
|
this.res = res;
|
package/dist/lib/unify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unify.js","sourceRoot":"","sources":["../../lib/unify.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;
|
|
1
|
+
{"version":3,"file":"unify.js","sourceRoot":"","sources":["../../lib/unify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Val } from '../type';
|
|
2
|
+
import { ValBase } from '../val/ValBase';
|
|
3
|
+
import { Context } from '../unify';
|
|
4
|
+
declare class ConjunctVal extends ValBase {
|
|
5
|
+
constructor(peg: Val[], ctx?: Context);
|
|
6
|
+
append(peer: Val): ConjunctVal;
|
|
7
|
+
unify(peer: Val, ctx: Context): Val;
|
|
8
|
+
get canon(): any;
|
|
9
|
+
gen(ctx?: Context): any;
|
|
10
|
+
}
|
|
11
|
+
declare function norm(terms: Val[]): Val[];
|
|
12
|
+
export { norm, ConjunctVal, };
|