aontu 0.29.0 → 0.30.2

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 (270) 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/dist/ctx.d.ts +51 -0
  5. package/dist/ctx.js +105 -0
  6. package/dist/ctx.js.map +1 -0
  7. package/dist/err.d.ts +12 -0
  8. package/dist/err.js +123 -0
  9. package/dist/err.js.map +1 -0
  10. package/dist/hints.d.ts +8 -0
  11. package/dist/hints.js +84 -0
  12. package/dist/hints.js.map +1 -0
  13. package/dist/lang.d.ts +11 -0
  14. package/dist/lang.js +569 -0
  15. package/dist/lang.js.map +1 -0
  16. package/dist/site.d.ts +12 -0
  17. package/dist/site.js +27 -0
  18. package/dist/site.js.map +1 -0
  19. package/dist/tsconfig.tsbuildinfo +1 -0
  20. package/dist/type.d.ts +32 -0
  21. package/dist/type.js +16 -0
  22. package/dist/type.js.map +1 -0
  23. package/dist/unify.d.ts +14 -0
  24. package/dist/unify.js +156 -0
  25. package/dist/unify.js.map +1 -0
  26. package/dist/utility.d.ts +14 -0
  27. package/dist/utility.js +122 -0
  28. package/dist/utility.js.map +1 -0
  29. package/dist/val/BagVal.d.ts +10 -0
  30. package/dist/val/BagVal.js +15 -0
  31. package/dist/val/BagVal.js.map +1 -0
  32. package/dist/val/BooleanVal.d.ts +9 -0
  33. package/dist/val/BooleanVal.js +16 -0
  34. package/dist/val/BooleanVal.js.map +1 -0
  35. package/dist/val/CloseFuncVal.d.ts +11 -0
  36. package/dist/val/CloseFuncVal.js +32 -0
  37. package/dist/val/CloseFuncVal.js.map +1 -0
  38. package/dist/val/ConjunctVal.d.ts +14 -0
  39. package/dist/val/ConjunctVal.js +187 -0
  40. package/dist/val/ConjunctVal.js.map +1 -0
  41. package/dist/val/CopyFuncVal.d.ts +13 -0
  42. package/dist/val/CopyFuncVal.js +35 -0
  43. package/dist/val/CopyFuncVal.js.map +1 -0
  44. package/dist/val/DisjunctVal.d.ts +19 -0
  45. package/dist/val/DisjunctVal.js +194 -0
  46. package/dist/val/DisjunctVal.js.map +1 -0
  47. package/dist/val/FeatureVal.d.ts +10 -0
  48. package/dist/val/FeatureVal.js +29 -0
  49. package/dist/val/FeatureVal.js.map +1 -0
  50. package/dist/val/FuncBaseVal.d.ts +15 -0
  51. package/dist/val/FuncBaseVal.js +127 -0
  52. package/dist/val/FuncBaseVal.js.map +1 -0
  53. package/dist/val/HideFuncVal.d.ts +12 -0
  54. package/dist/val/HideFuncVal.js +48 -0
  55. package/dist/val/HideFuncVal.js.map +1 -0
  56. package/dist/val/IntegerVal.d.ts +9 -0
  57. package/dist/val/IntegerVal.js +46 -0
  58. package/dist/val/IntegerVal.js.map +1 -0
  59. package/dist/val/JunctionVal.d.ts +12 -0
  60. package/dist/val/JunctionVal.js +31 -0
  61. package/dist/val/JunctionVal.js.map +1 -0
  62. package/dist/val/KeyFuncVal.d.ts +12 -0
  63. package/dist/val/KeyFuncVal.js +34 -0
  64. package/dist/val/KeyFuncVal.js.map +1 -0
  65. package/dist/val/ListVal.d.ts +17 -0
  66. package/dist/val/ListVal.js +186 -0
  67. package/dist/val/ListVal.js.map +1 -0
  68. package/dist/val/LowerFuncVal.d.ts +12 -0
  69. package/dist/val/LowerFuncVal.js +40 -0
  70. package/dist/val/LowerFuncVal.js.map +1 -0
  71. package/dist/val/MapVal.d.ts +16 -0
  72. package/dist/val/MapVal.js +211 -0
  73. package/dist/val/MapVal.js.map +1 -0
  74. package/dist/val/MoveFuncVal.d.ts +11 -0
  75. package/dist/val/MoveFuncVal.js +41 -0
  76. package/dist/val/MoveFuncVal.js.map +1 -0
  77. package/dist/val/NilVal.d.ts +25 -0
  78. package/dist/{lib/val/Nil.js → val/NilVal.js} +38 -30
  79. package/dist/val/NilVal.js.map +1 -0
  80. package/dist/val/NullVal.d.ts +9 -0
  81. package/dist/val/NullVal.js +18 -0
  82. package/dist/val/NullVal.js.map +1 -0
  83. package/dist/val/NumberVal.d.ts +9 -0
  84. package/dist/val/NumberVal.js +44 -0
  85. package/dist/val/NumberVal.js.map +1 -0
  86. package/dist/val/OpBaseVal.d.ts +18 -0
  87. package/dist/val/OpBaseVal.js +152 -0
  88. package/dist/val/OpBaseVal.js.map +1 -0
  89. package/dist/val/OpenFuncVal.d.ts +11 -0
  90. package/dist/val/OpenFuncVal.js +30 -0
  91. package/dist/val/OpenFuncVal.js.map +1 -0
  92. package/dist/val/PathFuncVal.d.ts +13 -0
  93. package/dist/val/PathFuncVal.js +42 -0
  94. package/dist/val/PathFuncVal.js.map +1 -0
  95. package/dist/val/PlusOpVal.d.ts +16 -0
  96. package/dist/val/PlusOpVal.js +59 -0
  97. package/dist/val/PlusOpVal.js.map +1 -0
  98. package/dist/val/PrefFuncVal.d.ts +11 -0
  99. package/dist/val/PrefFuncVal.js +39 -0
  100. package/dist/val/PrefFuncVal.js.map +1 -0
  101. package/dist/val/PrefVal.d.ts +15 -0
  102. package/dist/val/PrefVal.js +104 -0
  103. package/dist/val/PrefVal.js.map +1 -0
  104. package/dist/val/RefVal.d.ts +22 -0
  105. package/dist/val/RefVal.js +276 -0
  106. package/dist/val/RefVal.js.map +1 -0
  107. package/dist/val/ScalarKindVal.d.ts +16 -0
  108. package/dist/val/ScalarKindVal.js +76 -0
  109. package/dist/val/ScalarKindVal.js.map +1 -0
  110. package/dist/val/ScalarVal.d.ts +16 -0
  111. package/dist/val/ScalarVal.js +61 -0
  112. package/dist/val/ScalarVal.js.map +1 -0
  113. package/dist/val/StringVal.d.ts +10 -0
  114. package/dist/val/StringVal.js +19 -0
  115. package/dist/val/StringVal.js.map +1 -0
  116. package/dist/val/SuperFuncVal.d.ts +11 -0
  117. package/dist/val/SuperFuncVal.js +22 -0
  118. package/dist/val/SuperFuncVal.js.map +1 -0
  119. package/dist/val/TopVal.d.ts +16 -0
  120. package/dist/val/TopVal.js +38 -0
  121. package/dist/val/TopVal.js.map +1 -0
  122. package/dist/val/TypeFuncVal.d.ts +12 -0
  123. package/dist/val/TypeFuncVal.js +35 -0
  124. package/dist/val/TypeFuncVal.js.map +1 -0
  125. package/dist/val/UpperFuncVal.d.ts +12 -0
  126. package/dist/val/UpperFuncVal.js +40 -0
  127. package/dist/val/UpperFuncVal.js.map +1 -0
  128. package/dist/val/Val.d.ts +89 -0
  129. package/dist/val/Val.js +186 -0
  130. package/dist/val/Val.js.map +1 -0
  131. package/dist/val/VarVal.d.ts +13 -0
  132. package/dist/val/VarVal.js +109 -0
  133. package/dist/val/VarVal.js.map +1 -0
  134. package/dist/val/top.d.ts +2 -0
  135. package/dist/val/top.js +10 -0
  136. package/dist/val/top.js.map +1 -0
  137. package/dist/val/valutil.d.ts +2 -0
  138. package/dist/val/valutil.js +30 -0
  139. package/dist/val/valutil.js.map +1 -0
  140. package/package.json +20 -38
  141. package/src/aontu.ts +218 -0
  142. package/src/ctx.ts +201 -0
  143. package/src/err.ts +172 -0
  144. package/src/hints.ts +119 -0
  145. package/src/lang.ts +782 -0
  146. package/src/site.ts +34 -0
  147. package/src/tsconfig.json +16 -0
  148. package/src/type.ts +72 -0
  149. package/src/unify.ts +225 -0
  150. package/src/utility.ts +179 -0
  151. package/src/val/BagVal.ts +33 -0
  152. package/src/val/BooleanVal.ts +32 -0
  153. package/src/val/CloseFuncVal.ts +61 -0
  154. package/src/val/ConjunctVal.ts +285 -0
  155. package/src/val/CopyFuncVal.ts +69 -0
  156. package/src/val/DisjunctVal.ts +288 -0
  157. package/src/val/FeatureVal.ts +56 -0
  158. package/src/val/FuncBaseVal.ts +198 -0
  159. package/src/val/HideFuncVal.ts +85 -0
  160. package/src/val/IntegerVal.ts +75 -0
  161. package/src/val/JunctionVal.ts +54 -0
  162. package/src/val/KeyFuncVal.ts +67 -0
  163. package/src/val/ListVal.ts +286 -0
  164. package/src/val/LowerFuncVal.ts +73 -0
  165. package/src/val/MapVal.ts +316 -0
  166. package/src/val/MoveFuncVal.ts +79 -0
  167. package/{lib/val/Nil.ts → src/val/NilVal.ts} +49 -37
  168. package/src/val/NullVal.ts +38 -0
  169. package/src/val/NumberVal.ts +75 -0
  170. package/src/val/OpBaseVal.ts +231 -0
  171. package/src/val/OpenFuncVal.ts +60 -0
  172. package/src/val/PathFuncVal.ts +75 -0
  173. package/src/val/PlusOpVal.ts +92 -0
  174. package/src/val/PrefFuncVal.ts +73 -0
  175. package/src/val/PrefVal.ts +159 -0
  176. package/src/val/RefVal.ts +384 -0
  177. package/src/val/ScalarKindVal.ts +125 -0
  178. package/src/val/ScalarVal.ts +105 -0
  179. package/src/val/StringVal.ts +37 -0
  180. package/src/val/SuperFuncVal.ts +46 -0
  181. package/src/val/TopVal.ts +69 -0
  182. package/src/val/TypeFuncVal.ts +69 -0
  183. package/src/val/UpperFuncVal.ts +72 -0
  184. package/src/val/Val.ts +294 -0
  185. package/src/val/VarVal.ts +171 -0
  186. package/src/val/top.ts +12 -0
  187. package/src/val/valutil.ts +31 -0
  188. package/aontu.ts +0 -92
  189. package/dist/lib/err.d.ts +0 -4
  190. package/dist/lib/err.js +0 -61
  191. package/dist/lib/err.js.map +0 -1
  192. package/dist/lib/lang.d.ts +0 -15
  193. package/dist/lib/lang.js +0 -409
  194. package/dist/lib/lang.js.map +0 -1
  195. package/dist/lib/op/disjunct.d.ts +0 -3
  196. package/dist/lib/op/disjunct.js +0 -28
  197. package/dist/lib/op/disjunct.js.map +0 -1
  198. package/dist/lib/op/op.d.ts +0 -6
  199. package/dist/lib/op/op.js +0 -9
  200. package/dist/lib/op/op.js.map +0 -1
  201. package/dist/lib/op/unite.d.ts +0 -3
  202. package/dist/lib/op/unite.js +0 -100
  203. package/dist/lib/op/unite.js.map +0 -1
  204. package/dist/lib/type.d.ts +0 -49
  205. package/dist/lib/type.js +0 -7
  206. package/dist/lib/type.js.map +0 -1
  207. package/dist/lib/unify.d.ts +0 -38
  208. package/dist/lib/unify.js +0 -67
  209. package/dist/lib/unify.js.map +0 -1
  210. package/dist/lib/utility.d.ts +0 -3
  211. package/dist/lib/utility.js +0 -16
  212. package/dist/lib/utility.js.map +0 -1
  213. package/dist/lib/val/ConjunctVal.d.ts +0 -17
  214. package/dist/lib/val/ConjunctVal.js +0 -171
  215. package/dist/lib/val/ConjunctVal.js.map +0 -1
  216. package/dist/lib/val/DisjunctVal.d.ts +0 -17
  217. package/dist/lib/val/DisjunctVal.js +0 -95
  218. package/dist/lib/val/DisjunctVal.js.map +0 -1
  219. package/dist/lib/val/ListVal.d.ts +0 -18
  220. package/dist/lib/val/ListVal.js +0 -120
  221. package/dist/lib/val/ListVal.js.map +0 -1
  222. package/dist/lib/val/MapVal.d.ts +0 -18
  223. package/dist/lib/val/MapVal.js +0 -117
  224. package/dist/lib/val/MapVal.js.map +0 -1
  225. package/dist/lib/val/Nil.d.ts +0 -22
  226. package/dist/lib/val/Nil.js.map +0 -1
  227. package/dist/lib/val/NullVal.d.ts +0 -15
  228. package/dist/lib/val/NullVal.js +0 -38
  229. package/dist/lib/val/NullVal.js.map +0 -1
  230. package/dist/lib/val/OpVal.d.ts +0 -17
  231. package/dist/lib/val/OpVal.js +0 -89
  232. package/dist/lib/val/OpVal.js.map +0 -1
  233. package/dist/lib/val/PlusVal.d.ts +0 -12
  234. package/dist/lib/val/PlusVal.js +0 -32
  235. package/dist/lib/val/PlusVal.js.map +0 -1
  236. package/dist/lib/val/PrefVal.d.ts +0 -17
  237. package/dist/lib/val/PrefVal.js +0 -87
  238. package/dist/lib/val/PrefVal.js.map +0 -1
  239. package/dist/lib/val/RefVal.d.ts +0 -22
  240. package/dist/lib/val/RefVal.js +0 -247
  241. package/dist/lib/val/RefVal.js.map +0 -1
  242. package/dist/lib/val/ValBase.d.ts +0 -26
  243. package/dist/lib/val/ValBase.js +0 -77
  244. package/dist/lib/val/ValBase.js.map +0 -1
  245. package/dist/lib/val/VarVal.d.ts +0 -15
  246. package/dist/lib/val/VarVal.js +0 -84
  247. package/dist/lib/val/VarVal.js.map +0 -1
  248. package/dist/lib/val.d.ts +0 -81
  249. package/dist/lib/val.js +0 -191
  250. package/dist/lib/val.js.map +0 -1
  251. package/lib/err.ts +0 -83
  252. package/lib/lang.ts +0 -585
  253. package/lib/op/disjunct.ts +0 -51
  254. package/lib/op/op.ts +0 -18
  255. package/lib/op/unite.ts +0 -143
  256. package/lib/type.ts +0 -95
  257. package/lib/unify.ts +0 -128
  258. package/lib/utility.ts +0 -24
  259. package/lib/val/ConjunctVal.ts +0 -265
  260. package/lib/val/DisjunctVal.ts +0 -160
  261. package/lib/val/ListVal.ts +0 -196
  262. package/lib/val/MapVal.ts +0 -181
  263. package/lib/val/NullVal.ts +0 -72
  264. package/lib/val/OpVal.ts +0 -159
  265. package/lib/val/PlusVal.ts +0 -76
  266. package/lib/val/PrefVal.ts +0 -154
  267. package/lib/val/RefVal.ts +0 -362
  268. package/lib/val/ValBase.ts +0 -109
  269. package/lib/val/VarVal.ts +0 -157
  270. package/lib/val.ts +0 -327
package/lib/val.ts DELETED
@@ -1,327 +0,0 @@
1
- /* Copyright (c) 2021-2023 Richard Rodger, MIT License */
2
-
3
- // TODO: infinite recursion protection
4
-
5
-
6
- // NOTES
7
- // - Vals are immutable
8
- // - each Val must handle all parent and child unifications explicitly
9
- // - performance is not considered yet
10
-
11
-
12
-
13
- /*
14
-
15
- TOP -> Scalar/Boolean -> BooleanVal
16
- -> Scalar/String -> StringVal
17
- -> Scalar/Number -> NumberVal -> IntegerVal
18
- -> Scalar/Integer
19
- -> Scalar/Integer -> IntegerVal
20
-
21
- */
22
-
23
-
24
-
25
- import type {
26
- Val,
27
- ValSpec,
28
- } from './type'
29
-
30
- import {
31
- DONE,
32
- } from './type'
33
-
34
- import {
35
- Context,
36
- } from './unify'
37
-
38
-
39
- import {
40
- Site
41
- } from './lang'
42
-
43
-
44
-
45
- import { Nil } from './val/Nil'
46
- import { RefVal } from './val/RefVal'
47
- import { ValBase } from './val/ValBase'
48
-
49
-
50
- // There can be only one.
51
- class TopVal extends ValBase {
52
- isTop = true
53
-
54
- id = 0
55
- top = true
56
- peg = undefined
57
- done = DONE
58
- path = []
59
- row = -1
60
- col = -1
61
- url = ''
62
-
63
- constructor() {
64
- super(null)
65
-
66
- // TOP is always DONE, by definition.
67
- this.done = DONE
68
- }
69
-
70
- unify(peer: Val, _ctx?: Context): Val {
71
- return peer
72
- }
73
-
74
- get canon() { return 'top' }
75
-
76
- get site(): Site { return new Site(this) }
77
-
78
- same(peer: Val): boolean {
79
- return this === peer
80
- }
81
-
82
- clone() {
83
- return this
84
- }
85
-
86
- gen(_ctx?: Context) {
87
- return undefined
88
- }
89
- }
90
-
91
-
92
-
93
- const TOP = new TopVal()
94
-
95
-
96
- // A ScalarType for integers. Number includes floats.
97
- class Integer { }
98
-
99
-
100
-
101
- type ScalarConstructor =
102
- StringConstructor |
103
- NumberConstructor |
104
- BooleanConstructor |
105
- (typeof Integer.constructor)
106
-
107
-
108
- class ScalarTypeVal extends ValBase {
109
- isScalarTypeVal = true
110
-
111
- constructor(
112
- spec: {
113
- peg: ScalarConstructor
114
- },
115
- ctx?: Context
116
- ) {
117
- super(spec, ctx)
118
- this.done = DONE
119
- }
120
-
121
- unify(peer: any, ctx?: Context): Val {
122
- if (peer?.isScalarVal) {
123
- if (peer.type === this.peg) {
124
- return peer
125
- }
126
- else if (Number === this.peg && Integer === peer.type) {
127
- return peer
128
- }
129
- return Nil.make(ctx, 'no-scalar-unify', this, peer)
130
- }
131
- else {
132
- if (peer?.isScalarTypeVal) {
133
- if (Number === this.peg && Integer === peer.peg) {
134
- return peer
135
- }
136
- else if (Number === peer.peg && Integer === this.peg) {
137
- return this
138
- }
139
- }
140
- return Nil.make(ctx, 'scalar-type', this, peer)
141
- }
142
- }
143
-
144
- get canon() {
145
- let ctor = (this.peg as any)
146
- return ctor.name.toLowerCase()
147
- }
148
-
149
- same(peer: any): boolean {
150
- let out = peer?.isScalarTypeVal ? this.peg === peer?.peg : super.same(peer)
151
- return out
152
- }
153
-
154
- gen(_ctx?: Context) {
155
- return undefined
156
- }
157
-
158
- }
159
-
160
-
161
-
162
- class ScalarVal<T> extends ValBase {
163
- type: any
164
- isScalarVal = true
165
-
166
- constructor(
167
- spec: {
168
- peg: T,
169
- type: ScalarConstructor
170
- },
171
- ctx?: Context
172
- ) {
173
- super(spec, ctx)
174
- this.type = spec.type
175
- this.done = DONE
176
- }
177
-
178
- clone(spec?: ValSpec, ctx?: Context): Val {
179
- let out = (super.clone({
180
- peg: this.peg,
181
- type: this.type,
182
- ...(spec || {})
183
- }, ctx) as RefVal)
184
- return out
185
- }
186
-
187
- unify(peer: any, ctx?: Context): Val {
188
- // Exactly equal scalars are handled in op/unite
189
- if (peer?.isScalarTypeVal) {
190
- return peer.unify(this, ctx)
191
- }
192
- else if (peer.top) {
193
- return this
194
- }
195
- return Nil.make(ctx, 'scalar', this, peer)
196
- }
197
-
198
- get canon() {
199
- return (this.peg as any).toString()
200
- }
201
-
202
- same(peer: any): boolean {
203
- return peer?.isScalarVal ? peer.peg === this.peg : super.same(peer)
204
- }
205
-
206
- gen(_ctx?: Context) {
207
- return this.peg
208
- }
209
- }
210
-
211
-
212
- class NumberVal extends ScalarVal<number> {
213
- isNumberVal = true
214
-
215
- constructor(
216
- spec: {
217
- peg: number
218
- },
219
- ctx?: Context
220
- ) {
221
- super({ peg: spec.peg, type: Number }, ctx)
222
- }
223
-
224
- unify(peer: any, ctx?: Context): Val {
225
- if (null != peer) {
226
- if (peer.isScalarTypeVal && peer.type === Number) {
227
- return this
228
- }
229
- else if (
230
- peer.isScalarVal &&
231
- peer.peg === this.peg
232
- ) {
233
- return peer.isIntegerVal ? peer : this
234
- }
235
- }
236
-
237
- return super.unify(peer, ctx)
238
- }
239
- }
240
-
241
-
242
- class IntegerVal extends ScalarVal<number> {
243
- isIntegerVal = true
244
-
245
- constructor(
246
- spec: {
247
- peg: number
248
- },
249
- ctx?: Context
250
- ) {
251
- if (!Number.isInteger(spec.peg)) {
252
- // TODO: use Nil?
253
- throw new Error('not-integer')
254
- }
255
- super({ peg: spec.peg, type: Integer }, ctx)
256
- }
257
-
258
- unify(peer: any, ctx?: Context): Val {
259
- if (null != peer) {
260
- if (peer.isScalarTypeVal && (peer.peg === Number || peer.peg === Integer)) {
261
- return this
262
- }
263
- else if (
264
- peer.isScalarVal &&
265
- // peer.type === Number &&
266
- peer.peg === this.peg
267
- ) {
268
- return this
269
- }
270
- }
271
-
272
- return super.unify(peer, ctx)
273
- }
274
- }
275
-
276
-
277
- class StringVal extends ScalarVal<string> {
278
- isStringVal = true
279
-
280
- constructor(
281
- spec: {
282
- peg: string
283
- },
284
- ctx?: Context
285
- ) {
286
- super({ peg: spec.peg, type: String }, ctx)
287
- }
288
- unify(peer: Val, ctx?: Context): Val {
289
- return super.unify(peer, ctx)
290
- }
291
- get canon() {
292
- return JSON.stringify(this.peg)
293
- }
294
-
295
- }
296
-
297
-
298
- class BooleanVal extends ScalarVal<boolean> {
299
- isBooleanVal = true
300
-
301
- constructor(
302
- spec: {
303
- peg: boolean
304
- },
305
- ctx?: Context
306
- ) {
307
- super({ peg: spec.peg, type: Boolean }, ctx)
308
- }
309
- unify(peer: Val, ctx?: Context): Val {
310
- return super.unify(peer, ctx)
311
- }
312
-
313
- static TRUE = new BooleanVal({ peg: true }, new Context({ vc: 1, root: TOP }))
314
- static FALSE = new BooleanVal({ peg: false }, new Context({ vc: 2, root: TOP }))
315
- }
316
-
317
-
318
-
319
- export {
320
- TOP,
321
- Integer,
322
- ScalarTypeVal,
323
- NumberVal,
324
- StringVal,
325
- BooleanVal,
326
- IntegerVal,
327
- }