aontu 0.29.0 → 0.30.1

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.
Files changed (89) hide show
  1. package/dist/aontu.d.ts +17 -13
  2. package/dist/aontu.js +145 -60
  3. package/dist/aontu.js.map +1 -1
  4. package/package.json +18 -34
  5. package/aontu.ts +0 -92
  6. package/dist/lib/err.d.ts +0 -4
  7. package/dist/lib/err.js +0 -61
  8. package/dist/lib/err.js.map +0 -1
  9. package/dist/lib/lang.d.ts +0 -15
  10. package/dist/lib/lang.js +0 -409
  11. package/dist/lib/lang.js.map +0 -1
  12. package/dist/lib/op/disjunct.d.ts +0 -3
  13. package/dist/lib/op/disjunct.js +0 -28
  14. package/dist/lib/op/disjunct.js.map +0 -1
  15. package/dist/lib/op/op.d.ts +0 -6
  16. package/dist/lib/op/op.js +0 -9
  17. package/dist/lib/op/op.js.map +0 -1
  18. package/dist/lib/op/unite.d.ts +0 -3
  19. package/dist/lib/op/unite.js +0 -100
  20. package/dist/lib/op/unite.js.map +0 -1
  21. package/dist/lib/type.d.ts +0 -49
  22. package/dist/lib/type.js +0 -7
  23. package/dist/lib/type.js.map +0 -1
  24. package/dist/lib/unify.d.ts +0 -38
  25. package/dist/lib/unify.js +0 -67
  26. package/dist/lib/unify.js.map +0 -1
  27. package/dist/lib/utility.d.ts +0 -3
  28. package/dist/lib/utility.js +0 -16
  29. package/dist/lib/utility.js.map +0 -1
  30. package/dist/lib/val/ConjunctVal.d.ts +0 -17
  31. package/dist/lib/val/ConjunctVal.js +0 -171
  32. package/dist/lib/val/ConjunctVal.js.map +0 -1
  33. package/dist/lib/val/DisjunctVal.d.ts +0 -17
  34. package/dist/lib/val/DisjunctVal.js +0 -95
  35. package/dist/lib/val/DisjunctVal.js.map +0 -1
  36. package/dist/lib/val/ListVal.d.ts +0 -18
  37. package/dist/lib/val/ListVal.js +0 -120
  38. package/dist/lib/val/ListVal.js.map +0 -1
  39. package/dist/lib/val/MapVal.d.ts +0 -18
  40. package/dist/lib/val/MapVal.js +0 -117
  41. package/dist/lib/val/MapVal.js.map +0 -1
  42. package/dist/lib/val/Nil.d.ts +0 -22
  43. package/dist/lib/val/Nil.js +0 -84
  44. package/dist/lib/val/Nil.js.map +0 -1
  45. package/dist/lib/val/NullVal.d.ts +0 -15
  46. package/dist/lib/val/NullVal.js +0 -38
  47. package/dist/lib/val/NullVal.js.map +0 -1
  48. package/dist/lib/val/OpVal.d.ts +0 -17
  49. package/dist/lib/val/OpVal.js +0 -89
  50. package/dist/lib/val/OpVal.js.map +0 -1
  51. package/dist/lib/val/PlusVal.d.ts +0 -12
  52. package/dist/lib/val/PlusVal.js +0 -32
  53. package/dist/lib/val/PlusVal.js.map +0 -1
  54. package/dist/lib/val/PrefVal.d.ts +0 -17
  55. package/dist/lib/val/PrefVal.js +0 -87
  56. package/dist/lib/val/PrefVal.js.map +0 -1
  57. package/dist/lib/val/RefVal.d.ts +0 -22
  58. package/dist/lib/val/RefVal.js +0 -247
  59. package/dist/lib/val/RefVal.js.map +0 -1
  60. package/dist/lib/val/ValBase.d.ts +0 -26
  61. package/dist/lib/val/ValBase.js +0 -77
  62. package/dist/lib/val/ValBase.js.map +0 -1
  63. package/dist/lib/val/VarVal.d.ts +0 -15
  64. package/dist/lib/val/VarVal.js +0 -84
  65. package/dist/lib/val/VarVal.js.map +0 -1
  66. package/dist/lib/val.d.ts +0 -81
  67. package/dist/lib/val.js +0 -191
  68. package/dist/lib/val.js.map +0 -1
  69. package/lib/err.ts +0 -83
  70. package/lib/lang.ts +0 -585
  71. package/lib/op/disjunct.ts +0 -51
  72. package/lib/op/op.ts +0 -18
  73. package/lib/op/unite.ts +0 -143
  74. package/lib/type.ts +0 -95
  75. package/lib/unify.ts +0 -128
  76. package/lib/utility.ts +0 -24
  77. package/lib/val/ConjunctVal.ts +0 -265
  78. package/lib/val/DisjunctVal.ts +0 -160
  79. package/lib/val/ListVal.ts +0 -196
  80. package/lib/val/MapVal.ts +0 -181
  81. package/lib/val/Nil.ts +0 -144
  82. package/lib/val/NullVal.ts +0 -72
  83. package/lib/val/OpVal.ts +0 -159
  84. package/lib/val/PlusVal.ts +0 -76
  85. package/lib/val/PrefVal.ts +0 -154
  86. package/lib/val/RefVal.ts +0 -362
  87. package/lib/val/ValBase.ts +0 -109
  88. package/lib/val/VarVal.ts +0 -157
  89. package/lib/val.ts +0 -327
@@ -1,38 +0,0 @@
1
- import type { Val } from './type';
2
- import { FST } from './type';
3
- import { Lang } from './lang';
4
- import { Nil } from '../lib/val/Nil';
5
- type Path = string[];
6
- declare class Context {
7
- root: Val;
8
- path: Path;
9
- err: Nil[];
10
- vc: number;
11
- cc: number;
12
- var: Record<string, Val>;
13
- src?: string;
14
- fs?: FST;
15
- constructor(cfg: {
16
- root: Val;
17
- path?: Path;
18
- err?: Nil[];
19
- vc?: number;
20
- cc?: number;
21
- var?: Record<string, Val>;
22
- });
23
- clone(cfg: {
24
- root?: Val;
25
- path?: Path;
26
- err?: Nil[];
27
- }): Context;
28
- descend(key: string): Context;
29
- }
30
- declare class Unify {
31
- root: Val;
32
- res: Val;
33
- err: Nil[];
34
- cc: number;
35
- lang: Lang;
36
- constructor(root: Val | string, lang?: Lang, ctx?: Context);
37
- }
38
- export { Context, Path, Unify, };
package/dist/lib/unify.js DELETED
@@ -1,67 +0,0 @@
1
- "use strict";
2
- /* Copyright (c) 2021-2023 Richard Rodger, MIT License */
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.Unify = exports.Context = void 0;
5
- const type_1 = require("./type");
6
- const val_1 = require("./val");
7
- const lang_1 = require("./lang");
8
- const op_1 = require("./op/op");
9
- class Context {
10
- constructor(cfg) {
11
- this.cc = -1;
12
- this.var = {};
13
- this.root = cfg.root;
14
- this.path = cfg.path || [];
15
- this.err = cfg.err || [];
16
- // Multiple unify passes will keep incrementing Val counter.
17
- this.vc = null == cfg.vc ? 1000000000 : cfg.vc;
18
- this.cc = null == cfg.cc ? this.cc : cfg.cc;
19
- this.var = cfg.var || this.var;
20
- }
21
- clone(cfg) {
22
- return new Context({
23
- root: cfg.root || this.root,
24
- path: cfg.path,
25
- err: cfg.err || this.err,
26
- vc: this.vc,
27
- cc: this.cc,
28
- var: { ...this.var },
29
- });
30
- }
31
- descend(key) {
32
- return this.clone({
33
- root: this.root,
34
- path: this.path.concat(key),
35
- });
36
- }
37
- }
38
- exports.Context = Context;
39
- class Unify {
40
- constructor(root, lang, ctx) {
41
- this.lang = lang || new lang_1.Lang();
42
- if ('string' === typeof root) {
43
- root = this.lang.parse(root);
44
- }
45
- this.cc = 0;
46
- this.root = root;
47
- this.res = root;
48
- this.err = root.err || [];
49
- let res = root;
50
- // Only unify if no syntax errors
51
- if (!root.nil) {
52
- ctx = ctx || new Context({
53
- root: res,
54
- err: this.err,
55
- });
56
- let maxdc = 9; // 99
57
- for (; this.cc < maxdc && type_1.DONE !== res.done; this.cc++) {
58
- ctx.cc = this.cc;
59
- res = (0, op_1.unite)(ctx, res, val_1.TOP);
60
- ctx = ctx.clone({ root: res });
61
- }
62
- }
63
- this.res = res;
64
- }
65
- }
66
- exports.Unify = Unify;
67
- //# sourceMappingURL=unify.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unify.js","sourceRoot":"","sources":["../../lib/unify.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { Val } from './type';
2
- declare function formatPath(path: Val | string[], absolute?: boolean): string;
3
- export { formatPath };
@@ -1,16 +0,0 @@
1
- "use strict";
2
- /* Copyright (c) 2023 Richard Rodger, MIT License */
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.formatPath = formatPath;
5
- function formatPath(path, absolute) {
6
- let parts;
7
- if (Array.isArray(path)) {
8
- parts = path;
9
- }
10
- else {
11
- parts = path.path;
12
- }
13
- let pathstr = (0 < parts.length && false !== absolute ? '$.' : '') + parts.join('.');
14
- return pathstr;
15
- }
16
- //# sourceMappingURL=utility.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utility.js","sourceRoot":"","sources":["../../lib/utility.ts"],"names":[],"mappings":";AAAA,oDAAoD;;AAqBlD,gCAAU;AAfZ,SAAS,UAAU,CAAC,IAAoB,EAAE,QAAkB;IAC1D,IAAI,KAAe,CAAA;IACnB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,GAAG,IAAI,CAAA;IACd,CAAC;SACI,CAAC;QACJ,KAAK,GAAG,IAAI,CAAC,IAAI,CAAA;IACnB,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEpF,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -1,17 +0,0 @@
1
- import type { Val, ValSpec } from '../type';
2
- import { Context } from '../unify';
3
- import { ValBase } from '../val/ValBase';
4
- declare class ConjunctVal extends ValBase {
5
- isBinaryOp: boolean;
6
- isConjunctVal: boolean;
7
- constructor(spec: {
8
- peg: Val[];
9
- }, ctx?: Context);
10
- append(peer: Val): ConjunctVal;
11
- unify(peer: Val, ctx: Context): Val;
12
- clone(spec?: ValSpec, ctx?: Context): Val;
13
- get canon(): any;
14
- gen(ctx?: Context): undefined;
15
- }
16
- declare function norm(terms: Val[]): Val[];
17
- export { norm, ConjunctVal, };
@@ -1,171 +0,0 @@
1
- "use strict";
2
- /* Copyright (c) 2021-2023 Richard Rodger, MIT License */
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.ConjunctVal = void 0;
5
- exports.norm = norm;
6
- const type_1 = require("../type");
7
- const err_1 = require("../err");
8
- const op_1 = require("../op/op");
9
- const val_1 = require("../val");
10
- // import { DisjunctVal } from '../val/DisjunctVal'
11
- const ListVal_1 = require("../val/ListVal");
12
- const MapVal_1 = require("../val/MapVal");
13
- const Nil_1 = require("../val/Nil");
14
- // import { PrefVal } from '../val/PrefVal'
15
- const RefVal_1 = require("../val/RefVal");
16
- const ValBase_1 = require("../val/ValBase");
17
- // TODO: move main logic to op/conjunct
18
- class ConjunctVal extends ValBase_1.ValBase {
19
- constructor(spec, ctx) {
20
- super(spec, ctx);
21
- this.isBinaryOp = true;
22
- this.isConjunctVal = true;
23
- // console.log('NEWCJ')
24
- // console.trace()
25
- }
26
- // NOTE: mutation!
27
- append(peer) {
28
- this.peg.push(peer);
29
- return this;
30
- }
31
- unify(peer, ctx) {
32
- const mark = (Math.random() * 1e7) % 1e6 | 0;
33
- let done = true;
34
- // Unify each term of conjunct against peer
35
- let upeer = [];
36
- for (let vI = 0; vI < this.peg.length; vI++) {
37
- upeer[vI] = (0, op_1.unite)(ctx, this.peg[vI], peer, 'cj-own' + mark);
38
- // let prevdone = done
39
- done = done && (type_1.DONE === upeer[vI].done);
40
- if (upeer[vI] instanceof Nil_1.Nil) {
41
- return Nil_1.Nil.make(ctx, '&peer[' + upeer[vI].canon + ',' + peer.canon + ']', this.peg[vI], peer);
42
- }
43
- }
44
- upeer = norm(upeer);
45
- upeer.sort((a, b) => {
46
- return (a.constructor.name === b.constructor.name) ? 0 :
47
- (a.constructor.name < b.constructor.name ? -1 : 1);
48
- });
49
- // Unify terms against each other
50
- let outvals = [];
51
- let val;
52
- // for (let pI = 0; pI < upeer.length; pI++) {
53
- // let pt = upeer[pI]
54
- // for (let qI = pI; qI < upeer.length; qI++) {
55
- // let qt = upeer[pI]
56
- // let pq = unite(ctx, pt, qt, 'cj-pq')
57
- // }
58
- // }
59
- let t0 = upeer[0];
60
- next_term: for (let pI = 0; pI < upeer.length; pI++) {
61
- // console.log('CJ TERM t0', pI, t0.done, t0.canon)
62
- if (type_1.DONE !== t0.done) {
63
- let u0 = (0, op_1.unite)(ctx, t0, val_1.TOP, 'cj-peer-t0');
64
- if (type_1.DONE !== u0.done
65
- // Maps and Lists are still unified so that path refs will work
66
- // TODO: || ListVal - test!
67
- && !(u0 instanceof MapVal_1.MapVal
68
- || u0 instanceof ListVal_1.ListVal
69
- || u0 instanceof RefVal_1.RefVal)) {
70
- outvals.push(u0);
71
- continue next_term;
72
- }
73
- else {
74
- t0 = u0;
75
- }
76
- }
77
- let t1 = upeer[pI + 1];
78
- if (null == t1) {
79
- outvals.push(t0);
80
- }
81
- // Can't unite with a RefVal, unless also a RefVal with same path.
82
- else if (t0 instanceof RefVal_1.RefVal && !(t1 instanceof RefVal_1.RefVal)) {
83
- outvals.push(t0);
84
- t0 = t1;
85
- }
86
- else if (t1 instanceof RefVal_1.RefVal && !(t0 instanceof RefVal_1.RefVal)) {
87
- outvals.push(t0);
88
- t0 = t1;
89
- }
90
- else {
91
- val = (0, op_1.unite)(ctx, t0, t1, 'cj-peer-t0t1');
92
- done = done && type_1.DONE === val.done;
93
- // Unite was just a conjunt anyway, so discard.
94
- if (val instanceof ConjunctVal) {
95
- outvals.push(t0);
96
- t0 = t1;
97
- }
98
- else if (val instanceof Nil_1.Nil) {
99
- return val;
100
- }
101
- else {
102
- t0 = val;
103
- }
104
- // TODO: t0 should become this to avoid unnecessary repasses
105
- // outvals.push(val)
106
- // pI++
107
- }
108
- }
109
- let out;
110
- if (0 === outvals.length) {
111
- // Empty conjuncts evaporate.
112
- out = val_1.TOP;
113
- }
114
- // TODO: corrects CV[CV[1&/x]] issue above, but swaps term order!
115
- else if (1 === outvals.length) {
116
- out = outvals[0];
117
- }
118
- else {
119
- out = new ConjunctVal({ peg: outvals }, ctx);
120
- }
121
- out.done = done ? type_1.DONE : this.done + 1;
122
- return out;
123
- }
124
- clone(spec, ctx) {
125
- let out = super.clone(spec, ctx);
126
- out.peg = this.peg.map((entry) => entry.clone(null, ctx));
127
- return out;
128
- }
129
- // TODO: need a well-defined val order so conjunt canon is always the same
130
- get canon() {
131
- return this.peg.map((v) => {
132
- return v.isBinaryOp && Array.isArray(v.peg) && 1 < v.peg.length ?
133
- '(' + v.canon + ')' : v.canon;
134
- }).join('&');
135
- }
136
- gen(ctx) {
137
- // Unresolved conjunct cannot be generated, so always an error.
138
- let nil = Nil_1.Nil.make(ctx, 'conjunct', this, // (formatPath(this.peg, this.absolute) as any),
139
- undefined);
140
- // TODO: refactor to use Site
141
- nil.path = this.path;
142
- nil.url = this.url;
143
- nil.row = this.row;
144
- nil.col = this.col;
145
- (0, err_1.descErr)(nil, ctx);
146
- if (ctx) {
147
- ctx.err.push(nil);
148
- }
149
- else {
150
- throw new Error(nil.msg);
151
- }
152
- return undefined;
153
- }
154
- }
155
- exports.ConjunctVal = ConjunctVal;
156
- // Normalize Conjuct:
157
- // - flatten child conjuncts
158
- function norm(terms) {
159
- let expand = [];
160
- for (let tI = 0, pI = 0; tI < terms.length; tI++, pI++) {
161
- if (terms[tI] instanceof ConjunctVal) {
162
- expand.push(...terms[tI].peg);
163
- pI += terms[tI].peg.length - 1;
164
- }
165
- else {
166
- expand[pI] = terms[tI];
167
- }
168
- }
169
- return expand;
170
- }
171
- //# sourceMappingURL=ConjunctVal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConjunctVal.js","sourceRoot":"","sources":["../../../lib/val/ConjunctVal.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import type { Val, ValSpec } from '../type';
2
- import { Context } from '../unify';
3
- import { Site } from '../lang';
4
- import { ValBase } from '../val/ValBase';
5
- declare class DisjunctVal extends ValBase {
6
- isDisjunctVal: boolean;
7
- isBinaryOp: boolean;
8
- constructor(spec: {
9
- peg: Val[];
10
- }, ctx?: Context, _sites?: Site[]);
11
- append(peer: Val): DisjunctVal;
12
- unify(peer: Val, ctx: Context): Val;
13
- clone(spec?: ValSpec, ctx?: Context): Val;
14
- get canon(): any;
15
- gen(ctx?: Context): any;
16
- }
17
- export { DisjunctVal, };
@@ -1,95 +0,0 @@
1
- "use strict";
2
- /* Copyright (c) 2021-2023 Richard Rodger, MIT License */
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.DisjunctVal = void 0;
5
- const type_1 = require("../type");
6
- const op_1 = require("../op/op");
7
- // import { TOP } from '../val'
8
- // import { ConjunctVal } from '../val/ConjunctVal'
9
- // import { ListVal } from '../val/ListVal'
10
- // import { MapVal } from '../val/MapVal'
11
- const Nil_1 = require("../val/Nil");
12
- const PrefVal_1 = require("../val/PrefVal");
13
- // import { RefVal } from '../val/RefVal'
14
- const ValBase_1 = require("../val/ValBase");
15
- // TODO: move main logic to op/disjunct
16
- class DisjunctVal extends ValBase_1.ValBase {
17
- // TODO: sites from normalization of orginal Disjuncts, as well as child pegs
18
- constructor(spec, ctx, _sites) {
19
- super(spec, ctx);
20
- this.isDisjunctVal = true;
21
- this.isBinaryOp = true;
22
- }
23
- // NOTE: mutation!
24
- append(peer) {
25
- this.peg.push(peer);
26
- return this;
27
- }
28
- unify(peer, ctx) {
29
- let done = true;
30
- let oval = [];
31
- // Conjunction (&) distributes over disjunction (|)
32
- for (let vI = 0; vI < this.peg.length; vI++) {
33
- //oval[vI] = this.peg[vI].unify(peer, ctx)
34
- oval[vI] = (0, op_1.unite)(ctx, this.peg[vI], peer);
35
- done = done && type_1.DONE === oval[vI].done;
36
- }
37
- // Remove duplicates, and normalize
38
- if (1 < oval.length) {
39
- for (let vI = 0; vI < oval.length; vI++) {
40
- if (oval[vI] instanceof DisjunctVal) {
41
- oval.splice(vI, 1, ...oval[vI].peg);
42
- }
43
- }
44
- // TODO: not an error Nil!
45
- let remove = new Nil_1.Nil();
46
- for (let vI = 0; vI < oval.length; vI++) {
47
- for (let kI = vI + 1; kI < oval.length; kI++) {
48
- if (oval[kI].same(oval[vI])) {
49
- oval[kI] = remove;
50
- }
51
- }
52
- }
53
- oval = oval.filter(v => !(v instanceof Nil_1.Nil));
54
- }
55
- let out;
56
- if (1 == oval.length) {
57
- out = oval[0];
58
- }
59
- else if (0 == oval.length) {
60
- return Nil_1.Nil.make(ctx, '|:empty', this);
61
- }
62
- else {
63
- out = new DisjunctVal({ peg: oval }, ctx);
64
- }
65
- out.done = done ? type_1.DONE : this.done + 1;
66
- return out;
67
- }
68
- clone(spec, ctx) {
69
- let out = super.clone(spec, ctx);
70
- out.peg = this.peg.map((entry) => entry.clone(null, ctx));
71
- return out;
72
- }
73
- get canon() {
74
- return this.peg.map((v) => {
75
- return v.isBinaryOp && Array.isArray(v.peg) && 1 < v.peg.length ?
76
- '(' + v.canon + ')' : v.canon;
77
- }).join('|');
78
- }
79
- gen(ctx) {
80
- // TODO: this is not right - unresolved Disjuncts eval to undef
81
- if (0 < this.peg.length) {
82
- let vals = this.peg.filter((v) => v instanceof PrefVal_1.PrefVal);
83
- vals = 0 === vals.length ? this.peg : vals;
84
- let val = vals[0];
85
- for (let vI = 1; vI < this.peg.length; vI++) {
86
- let valnext = val.unify(this.peg[vI], ctx);
87
- val = valnext;
88
- }
89
- return val.gen(ctx);
90
- }
91
- return undefined;
92
- }
93
- }
94
- exports.DisjunctVal = DisjunctVal;
95
- //# sourceMappingURL=DisjunctVal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DisjunctVal.js","sourceRoot":"","sources":["../../../lib/val/DisjunctVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AASzD,kCAEgB;AAYhB,iCAEiB;AAKjB,+BAA+B;AAC/B,mDAAmD;AACnD,2CAA2C;AAC3C,yCAAyC;AACzC,oCAAgC;AAChC,4CAAwC;AACxC,yCAAyC;AACzC,4CAAwC;AAKxC,uCAAuC;AACvC,MAAM,WAAY,SAAQ,iBAAO;IAI/B,6EAA6E;IAC7E,YACE,IAEC,EACD,GAAa,EACb,MAAe;QAEf,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAXlB,kBAAa,GAAG,IAAI,CAAA;QACpB,eAAU,GAAG,IAAI,CAAA;IAWjB,CAAC;IAED,kBAAkB;IAClB,MAAM,CAAC,IAAS;QACd,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,IAAS,EAAE,GAAY;QAC3B,IAAI,IAAI,GAAG,IAAI,CAAA;QAEf,IAAI,IAAI,GAAU,EAAE,CAAA;QAEpB,mDAAmD;QACnD,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YAC5C,0CAA0C;YAC1C,IAAI,CAAC,EAAE,CAAC,GAAG,IAAA,UAAK,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;YACzC,IAAI,GAAG,IAAI,IAAI,WAAI,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAA;QACvC,CAAC;QAED,mCAAmC;QACnC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;gBACxC,IAAI,IAAI,CAAC,EAAE,CAAC,YAAY,WAAW,EAAE,CAAC;oBACpC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;gBACrC,CAAC;YACH,CAAC;YAED,0BAA0B;YAC1B,IAAI,MAAM,GAAG,IAAI,SAAG,EAAE,CAAA;YACtB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;gBACxC,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;oBAC7C,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;wBAC5B,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,CAAA;oBACnB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,SAAG,CAAC,CAAC,CAAA;QAC9C,CAAC;QAED,IAAI,GAAQ,CAAA;QAEZ,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACrB,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QACf,CAAC;aACI,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1B,OAAO,SAAG,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;QACvC,CAAC;aACI,CAAC;YACJ,GAAG,GAAG,IAAI,WAAW,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;QAC3C,CAAC;QAED,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,WAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QAEtC,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,KAAK,CAAC,IAAc,EAAE,GAAa;QACjC,IAAI,GAAG,GAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAiB,CAAA;QACjD,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;QAC9D,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;YAC7B,OAAQ,CAAS,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACxE,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QACjC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;IAGD,GAAG,CAAC,GAAa;QAEf,+DAA+D;QAC/D,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAExB,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,YAAY,iBAAO,CAAC,CAAA;YAE5D,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAA;YAE1C,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YAEjB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;gBAC5C,IAAI,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;gBAC1C,GAAG,GAAG,OAAO,CAAA;YACf,CAAC;YAED,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACrB,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;CACF;AAOC,kCAAW"}
@@ -1,18 +0,0 @@
1
- import type { Val, ValList, ValSpec } from '../type';
2
- import { Context } from '../unify';
3
- import { ValBase } from '../val/ValBase';
4
- declare class ListVal extends ValBase {
5
- isListVal: boolean;
6
- static SPREAD: symbol;
7
- spread: {
8
- cj: Val | undefined;
9
- };
10
- constructor(spec: {
11
- peg: ValList;
12
- }, ctx?: Context);
13
- unify(peer: Val, ctx: Context): Val;
14
- clone(spec?: ValSpec, ctx?: Context): Val;
15
- get canon(): string;
16
- gen(ctx?: Context): any;
17
- }
18
- export { ListVal, };
@@ -1,120 +0,0 @@
1
- "use strict";
2
- /* Copyright (c) 2021-2022 Richard Rodger, MIT License */
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.ListVal = void 0;
5
- const type_1 = require("../type");
6
- const op_1 = require("../op/op");
7
- const val_1 = require("../val");
8
- const ConjunctVal_1 = require("../val/ConjunctVal");
9
- // import { DisjunctVal } from '../val/DisjunctVal'
10
- // import { MapVal } from '../val/MapVal'
11
- const Nil_1 = require("../val/Nil");
12
- // import { PrefVal } from '../val/PrefVal'
13
- // import { RefVal } from '../val/RefVal'
14
- const ValBase_1 = require("../val/ValBase");
15
- class ListVal extends ValBase_1.ValBase {
16
- constructor(spec, ctx) {
17
- super(spec, ctx);
18
- this.isListVal = true;
19
- this.spread = {
20
- cj: undefined,
21
- };
22
- if (null == this.peg) {
23
- throw new Error('ListVal spec.peg undefined');
24
- }
25
- let spread = this.peg[ListVal.SPREAD];
26
- delete this.peg[ListVal.SPREAD];
27
- if (spread) {
28
- if ('&' === spread.o) {
29
- // TODO: handle existing spread!
30
- this.spread.cj =
31
- Array.isArray(spread.v) ?
32
- 1 < spread.v.length ?
33
- new ConjunctVal_1.ConjunctVal({ peg: spread.v }, ctx) :
34
- spread.v :
35
- spread.v;
36
- // let tmv = Array.isArray(spread.v) ? spread.v : [spread.v]
37
- // this.spread.cj = new ConjunctVal({ peg: tmv }, ctx)
38
- }
39
- }
40
- }
41
- // NOTE: order of keys is not preserved!
42
- // not possible in any case - consider {a,b} unify {b,a}
43
- unify(peer, ctx) {
44
- let done = true;
45
- let out = val_1.TOP === peer ? this : new ListVal({ peg: [] }, ctx);
46
- out.spread.cj = this.spread.cj;
47
- if (peer instanceof ListVal) {
48
- out.spread.cj = null == out.spread.cj ? peer.spread.cj : (null == peer.spread.cj ? out.spread.cj : (out.spread.cj =
49
- // new ConjunctVal({ peg: [out.spread.cj, peer.spread.cj] }, ctx)
50
- (0, op_1.unite)(ctx, out.spread.cj, peer.spread.cj)));
51
- }
52
- out.done = this.done + 1;
53
- // if (this.spread.cj) {
54
- // out.spread.cj =
55
- // DONE !== this.spread.cj.done ? unite(ctx, this.spread.cj) :
56
- // this.spread.cj
57
- // }
58
- let spread_cj = out.spread.cj || val_1.TOP;
59
- // Always unify children first
60
- for (let key in this.peg) {
61
- let keyctx = ctx.descend(key);
62
- let key_spread_cj = spread_cj.clone(null, keyctx);
63
- out.peg[key] = (0, op_1.unite)(keyctx, this.peg[key], key_spread_cj, 'list-own');
64
- done = (done && type_1.DONE === out.peg[key].done);
65
- }
66
- if (peer instanceof ListVal) {
67
- let upeer = (0, op_1.unite)(ctx, peer, undefined, 'list-peer-list');
68
- // NOTE: peerkey is the index
69
- for (let peerkey in upeer.peg) {
70
- let peerchild = upeer.peg[peerkey];
71
- let child = out.peg[peerkey];
72
- let oval = out.peg[peerkey] =
73
- undefined === child ? peerchild :
74
- child instanceof Nil_1.Nil ? child :
75
- peerchild instanceof Nil_1.Nil ? peerchild :
76
- (0, op_1.unite)(ctx.descend(peerkey), child, peerchild, 'list-peer');
77
- if (this.spread.cj) {
78
- let key_ctx = ctx.descend(peerkey);
79
- let key_spread_cj = spread_cj.clone(null, key_ctx);
80
- // out.peg[peerkey] = unite(ctx, out.peg[peerkey], spread_cj)
81
- oval = out.peg[peerkey] =
82
- // new ConjunctVal({ peg: [out.peg[peerkey], key_spread_cj] }, key_ctx)
83
- // done = false
84
- (0, op_1.unite)(key_ctx, out.peg[peerkey], key_spread_cj);
85
- }
86
- done = (done && type_1.DONE === oval.done);
87
- }
88
- }
89
- else if (val_1.TOP !== peer) {
90
- return Nil_1.Nil.make(ctx, 'map', this, peer);
91
- }
92
- out.done = done ? type_1.DONE : out.done;
93
- return out;
94
- }
95
- clone(spec, ctx) {
96
- let out = super.clone(spec, ctx);
97
- out.peg = this.peg.map((entry) => entry.clone(null, ctx));
98
- if (this.spread.cj) {
99
- out.spread.cj = this.spread.cj.clone(null, ctx);
100
- }
101
- return out;
102
- }
103
- get canon() {
104
- let keys = Object.keys(this.peg);
105
- return '[' +
106
- (this.spread.cj ? '&:' + this.spread.cj.canon +
107
- (0 < keys.length ? ',' : '') : '') +
108
- keys
109
- // NOTE: handle array non-index key vals
110
- .map(k => [this.peg[k].canon]).join(',') +
111
- ']';
112
- }
113
- gen(ctx) {
114
- let out = this.peg.map((v) => v.gen(ctx));
115
- return out;
116
- }
117
- }
118
- exports.ListVal = ListVal;
119
- ListVal.SPREAD = Symbol('spread');
120
- //# sourceMappingURL=ListVal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ListVal.js","sourceRoot":"","sources":["../../../lib/val/ListVal.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import type { Val, ValMap, ValSpec } from '../type';
2
- import { Context } from '../unify';
3
- import { ValBase } from '../val/ValBase';
4
- declare class MapVal extends ValBase {
5
- isMapVal: boolean;
6
- static SPREAD: symbol;
7
- spread: {
8
- cj: Val | undefined;
9
- };
10
- constructor(spec: {
11
- peg: ValMap;
12
- }, ctx?: Context);
13
- unify(peer: Val, ctx: Context): Val;
14
- clone(spec?: ValSpec, ctx?: Context): Val;
15
- get canon(): string;
16
- gen(ctx?: Context): any;
17
- }
18
- export { MapVal };