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/OpVal.ts DELETED
@@ -1,159 +0,0 @@
1
- /* Copyright (c) 2024 Richard Rodger, MIT License */
2
-
3
-
4
- import type {
5
- Val,
6
- ValSpec,
7
- } from '../type'
8
-
9
- import {
10
- DONE,
11
- } from '../type'
12
-
13
- import {
14
- descErr
15
- } from '../err'
16
-
17
- import {
18
- Context,
19
- } from '../unify'
20
-
21
- import {
22
- unite
23
- } from '../op/op'
24
-
25
- import {
26
- TOP,
27
- StringVal,
28
- } from '../val'
29
-
30
-
31
- import { ConjunctVal } from '../val/ConjunctVal'
32
- import { MapVal } from '../val/MapVal'
33
- import { Nil } from '../val/Nil'
34
- import { VarVal } from '../val/VarVal'
35
- import { ValBase } from '../val/ValBase'
36
-
37
-
38
-
39
-
40
-
41
- class OpVal extends ValBase {
42
- isOpVal = true
43
-
44
- constructor(
45
- spec: {
46
- peg: any[],
47
- },
48
- ctx?: Context
49
- ) {
50
- super(spec, ctx)
51
- this.peg = []
52
-
53
- for (let pI = 0; pI < spec.peg.length; pI++) {
54
- this.append(spec.peg[pI])
55
- }
56
- }
57
-
58
-
59
- append(part: any) {
60
- this.peg.push(part)
61
- }
62
-
63
-
64
- unify(peer: Val, ctx: Context): Val {
65
- let out: Val = this
66
-
67
- if (this.id !== peer.id) {
68
- let result: Val | undefined = null == ctx ? this : this.operate(ctx)
69
-
70
- result = result || this
71
-
72
- if (null == result && this.canon === peer.canon) {
73
- out = this
74
- }
75
- else if (result instanceof OpVal) {
76
- if (TOP === peer) {
77
- out = this
78
- }
79
- else if (peer instanceof Nil) {
80
- out = Nil.make(ctx, 'op[' + this.peg + ']', this, peer)
81
- }
82
-
83
- else if (this.canon === peer.canon) {
84
- out = this
85
- }
86
-
87
- else {
88
- this.done = DONE === this.done ? DONE : this.done + 1
89
- out = new ConjunctVal({ peg: [this, peer] }, ctx)
90
- }
91
- }
92
- else {
93
- out = unite(ctx, result, peer, 'op')
94
- }
95
-
96
- out.done = DONE === out.done ? DONE : this.done + 1
97
- }
98
-
99
- return out
100
- }
101
-
102
-
103
- same(peer: Val): boolean {
104
- return null == peer ? false : this.peg === peer.peg
105
- }
106
-
107
-
108
- clone(_spec?: ValSpec, ctx?: Context): Val {
109
- let out = (super.clone({
110
- peg: this.peg,
111
- }, ctx) as OpVal)
112
- return out
113
- }
114
-
115
-
116
- operate(ctx: Context): Val | undefined {
117
- this.peg = this.peg.map((v: any) => v.isRefVal ? v.unify(TOP, ctx) : v)
118
- return undefined
119
- }
120
-
121
-
122
-
123
- get canon() {
124
- return ''
125
- }
126
-
127
-
128
- gen(ctx?: Context) {
129
- // Unresolved op cannot be generated, so always an error.
130
- let nil = Nil.make(
131
- ctx,
132
- 'op',
133
- this,
134
- undefined
135
- )
136
-
137
- // TODO: refactor to use Site
138
- nil.path = this.path
139
- nil.url = this.url
140
- nil.row = this.row
141
- nil.col = this.col
142
-
143
- descErr(nil, ctx)
144
-
145
- if (ctx) {
146
- ctx.err.push(nil)
147
- }
148
- else {
149
- throw new Error(nil.msg)
150
- }
151
-
152
- return undefined
153
- }
154
- }
155
-
156
-
157
- export {
158
- OpVal,
159
- }
@@ -1,76 +0,0 @@
1
- /* Copyright (c) 2024 Richard Rodger, MIT License */
2
-
3
-
4
- import type {
5
- Val,
6
- ValSpec,
7
- } from '../type'
8
-
9
- import {
10
- DONE,
11
- } from '../type'
12
-
13
- import {
14
- descErr
15
- } from '../err'
16
-
17
- import {
18
- Context,
19
- } from '../unify'
20
-
21
- import {
22
- unite
23
- } from '../op/op'
24
-
25
-
26
- import { TOP, IntegerVal, NumberVal, StringVal } from '../val'
27
- import { Nil } from '../val/Nil'
28
- import { OpVal } from '../val/OpVal'
29
-
30
-
31
-
32
-
33
-
34
- class PlusVal extends OpVal {
35
- isOpVal = true
36
-
37
- constructor(
38
- spec: {
39
- peg: any[],
40
- },
41
- ctx?: Context
42
- ) {
43
- super(spec, ctx)
44
- }
45
-
46
-
47
- operate(ctx: Context) {
48
- super.operate(ctx)
49
-
50
- if (this.peg.find((v: any) => v.isRefVal)) {
51
- return undefined
52
- }
53
-
54
- let peg = this.peg[0].peg + this.peg[1].peg
55
- let pegtype = typeof peg
56
- if ('string' === pegtype) {
57
- return new StringVal({ peg })
58
- }
59
- else if ('number' === pegtype) {
60
- return Number.isInteger(peg) ? new IntegerVal({ peg }) : new NumberVal({ peg })
61
- }
62
-
63
- return undefined
64
- }
65
-
66
-
67
- get canon() {
68
- return this.peg[0].canon + '+' + this.peg[1].canon
69
- }
70
-
71
- }
72
-
73
-
74
- export {
75
- PlusVal,
76
- }
@@ -1,154 +0,0 @@
1
- /* Copyright (c) 2021-2023 Richard Rodger, MIT License */
2
-
3
-
4
-
5
- import type {
6
- Val,
7
- ValSpec,
8
- } from '../type'
9
-
10
- import {
11
- DONE,
12
- } from '../type'
13
-
14
- import {
15
- descErr
16
- } from '../err'
17
-
18
- import {
19
- Context,
20
- } from '../unify'
21
-
22
-
23
- import {
24
- Site
25
- } from '../lang'
26
-
27
-
28
- import {
29
- unite
30
- } from '../op/op'
31
-
32
-
33
-
34
- // import { TOP } from '../val'
35
- // import { ConjunctVal } from '../val/ConjunctVal'
36
- // import { DisjunctVal } from '../val/DisjunctVal'
37
- // import { ListVal } from '../val/ListVal'
38
- // import { MapVal } from '../val/MapVal'
39
- import { Nil } from '../val/Nil'
40
- // import { RefVal } from '../val/RefVal'
41
- import { ValBase } from '../val/ValBase'
42
-
43
-
44
- class PrefVal extends ValBase {
45
- isPrefVal = true
46
-
47
- pref: Val
48
-
49
- constructor(
50
- spec: {
51
- peg: any,
52
- pref?: any
53
- },
54
- ctx?: Context
55
- ) {
56
- super(spec, ctx)
57
- this.pref = spec.pref || spec.peg
58
- }
59
-
60
- // PrefVal unify always returns a PrefVal
61
- // PrefVals can only be removed by becoming Nil in a Disjunct
62
- unify(peer: Val, ctx: Context): Val {
63
- let done = true
64
- let out: Val
65
-
66
- if (peer instanceof PrefVal) {
67
- out = new PrefVal(
68
- {
69
- peg: unite(ctx, this.peg, peer.peg, 'Pref000'),
70
- pref: unite(ctx, this.pref, peer.pref, 'Pref010'),
71
- },
72
- ctx
73
- )
74
- }
75
-
76
- else {
77
- out = new PrefVal(
78
- {
79
- // TODO: find a better way to drop Nil non-errors
80
- peg: unite(ctx?.clone({ err: [] }), this.peg, peer, 'Pref020'),
81
- pref: unite(ctx?.clone({ err: [] }), this.pref, peer, 'Pref030'),
82
- },
83
- ctx
84
- )
85
- }
86
-
87
- done = done && DONE === out.peg.done &&
88
- (null != (out as PrefVal).pref ? DONE === (out as PrefVal).pref.done : true)
89
-
90
- if (out.peg instanceof Nil) {
91
- out = (out as PrefVal).pref
92
- }
93
- else if ((out as PrefVal).pref instanceof Nil) {
94
- out = out.peg
95
- }
96
-
97
- out.done = done ? DONE : this.done + 1
98
-
99
- return out
100
- }
101
-
102
-
103
- same(peer: Val): boolean {
104
- if (null == peer) {
105
- return false
106
- }
107
-
108
- let pegsame = (this.peg === peer.peg) ||
109
- (this.peg instanceof ValBase && this.peg.same(peer.peg))
110
-
111
- let prefsame = peer instanceof PrefVal &&
112
- ((this.pref === peer.pref) ||
113
- (this.pref instanceof ValBase && this.pref.same(peer.pref)))
114
-
115
- return pegsame && prefsame
116
- }
117
-
118
-
119
- clone(spec?: ValSpec, ctx?: Context): Val {
120
- let out = (super.clone(spec, ctx) as PrefVal)
121
- out.pref = this.pref.clone(null, ctx)
122
- return out
123
- }
124
-
125
-
126
- get canon() {
127
- return this.pref instanceof Nil ? this.peg.canon : '*' + this.pref.canon
128
- }
129
-
130
- gen(ctx?: Context) {
131
- let val = !(this.pref instanceof Nil) ? this.pref :
132
- (!(this.peg instanceof Nil) ? this.peg :
133
- this.pref)
134
-
135
- if (val instanceof Nil) {
136
- descErr(val, ctx)
137
-
138
- if (ctx) {
139
- ctx.err.push(val)
140
- }
141
- else {
142
- throw new Error(val.msg)
143
- }
144
- }
145
-
146
- return val.gen(ctx)
147
- }
148
- }
149
-
150
-
151
-
152
- export {
153
- PrefVal,
154
- }