@tabnas/expr 0.5.16 → 0.5.18

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/dist/expr.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Plugin, Rule, Context, Token } from '@tabnas/parser';
1
+ import { Tabnas, Plugin, Rule, Context, Token } from '@tabnas/parser';
2
2
  type OpDef = {
3
3
  src?: string | string[];
4
4
  osrc?: string;
@@ -56,12 +56,14 @@ declare const OP_MARK: {};
56
56
  declare let Expr: Plugin;
57
57
  declare function prattify(expr: any, op?: Op, whence?: string): any[];
58
58
  declare function evaluation(rule: Rule, ctx: Context, expr: any, evaluate: Evaluate): any;
59
+ declare function simplify(value: any): any;
60
+ declare function parseSimplified(tn: Tabnas, src: string, meta?: any): any;
59
61
  declare const testing: {
60
62
  prattify: typeof prattify;
61
63
  opify: (x: any) => any;
62
64
  };
63
- export { VERSION, Expr, evaluation, testing };
65
+ declare const VERSION = "0.5.18";
66
+ export { VERSION, Expr, evaluation, simplify, parseSimplified, testing };
64
67
  export type { ExprOptions, OpDef, Op, Evaluate };
65
- declare const VERSION = "0.5.16";
66
68
  export { translate } from './translate';
67
69
  export type { TranslationPart, TranslationParts } from './translate';
package/dist/expr.js CHANGED
@@ -3,6 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.translate = exports.testing = exports.Expr = exports.VERSION = void 0;
5
5
  exports.evaluation = evaluation;
6
+ exports.simplify = simplify;
7
+ exports.parseSimplified = parseSimplified;
6
8
  // This algorithm is based on Pratt parsing, and draws heavily from
7
9
  // the explanation written by Aleksey Kladov here:
8
10
  // https://matklad.github.io/2020/04/13/simple-but-powerful-pratt-parsing.html
@@ -1366,6 +1368,50 @@ function p(node, seen) {
1366
1368
  }
1367
1369
  return node;
1368
1370
  }
1371
+ // Reduce a parsed value to the plain S-expression form the shared
1372
+ // fixtures compare and the translation parts are written against:
1373
+ // `1+2*3` reads as `['+', 1, ['*', 2, 3]]`. An operation is an array whose
1374
+ // head is the operator description. The head becomes the operator's
1375
+ // source text (`src`, which for a paren operator is its opening source),
1376
+ // and a term never filled, `undefined`, is dropped. Every other array and
1377
+ // object, an empty one included, is reduced member by member into a new
1378
+ // value, so the result shares no container with the parse, and anything
1379
+ // else is returned as it is.
1380
+ //
1381
+ // A node that contains itself, which a rewrite can leave behind, reads as
1382
+ // '[CIRCLE]' rather than recursing forever. Only a node inside itself
1383
+ // does: a node reached twice by two paths is reduced both times. The test
1384
+ // helper this replaces marked any node it had seen before, and the two
1385
+ // agree on every row of the shared fixtures, where no parse shares a
1386
+ // node; this reading is the Rust port's.
1387
+ //
1388
+ // The Rust port's `simplify`, and the Go port's `Simplify` and its
1389
+ // order-keeping `SimplifyOrdered`, give the same value, and the shared
1390
+ // fixtures hold them to it.
1391
+ function simplify(value) {
1392
+ const open = new Set();
1393
+ const reduce = (node) => {
1394
+ if (null == node || 'object' !== typeof node)
1395
+ return node;
1396
+ if (open.has(node))
1397
+ return '[CIRCLE]';
1398
+ open.add(node);
1399
+ const out = Array.isArray(node)
1400
+ ? (0 === node.length ? [] : [
1401
+ null != node[0] && node[0].src ? node[0].src : reduce(node[0]),
1402
+ ...node.slice(1).map(reduce),
1403
+ ].filter((term) => undefined !== term))
1404
+ : omap(node, ([name, member]) => [name, reduce(member)]);
1405
+ open.delete(node);
1406
+ return out;
1407
+ };
1408
+ return reduce(value);
1409
+ }
1410
+ // Parse `src` on an instance with the plugin installed, and `simplify`
1411
+ // the result. The Rust port's `parse_simplified`.
1412
+ function parseSimplified(tn, src, meta) {
1413
+ return simplify(tn.parse(src, meta));
1414
+ }
1369
1415
  const testing = {
1370
1416
  prattify,
1371
1417
  opify: (x) => ((x.OP_MARK = OP_MARK), x),
@@ -1374,7 +1420,7 @@ exports.testing = testing;
1374
1420
  // VERSION is this package's version. It MUST equal package.json "version":
1375
1421
  // the release orchestrator rewrites both, and the version test fails the
1376
1422
  // build if they drift. Mirrors `const VERSION` in go/expr.go.
1377
- const VERSION = '0.5.16';
1423
+ const VERSION = '0.5.18';
1378
1424
  exports.VERSION = VERSION;
1379
1425
  // The translation parts a host composes a translation from (admin ADR-27):
1380
1426
  // the manifest and the alchemy sources, generated by ../embed-translate.js.
package/dist/expr.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"expr.js","sourceRoot":"","sources":["../src/expr.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expr.js","sourceRoot":"","sources":["../src/expr.ts"],"names":[],"mappings":"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"}
package/dist/translate.js CHANGED
@@ -39,7 +39,7 @@ const TRANSLATION = Object.freeze({
39
39
  "loss": [
40
40
  "Comments, spacing, implicit lists and maps, and the document's own spelling of strings and numbers are not kept: every list is written in brackets, every object in braces with its keys quoted, every string double-quoted and every number as JSON writes it.",
41
41
  "An operation of the default operators is written in infix, and a term that would need parentheses, which read back as a group, is written as a list instead, which reads back as the same tree.",
42
- "A list whose first element is an object whose src member is a default operator's source text, as the reader's own value describes an operator, is written with that text in the object's place, as an operation where its count makes one: only the src member is read, and the object's other members, the token the operator was read from among them, are not kept.",
42
+ "A list whose first element is an object whose src member is a default operator's source text, as the reader's own value describes an operator, is written with that text in the object's place, as an operation where its count makes one: only the src member is read, and the object's other members, the token the operator was read from among them, are not kept. A list whose first element is an object with any other src that is not empty, zero, false or null, as a C syntax tree's token has, is refused with TARGET_VALUE_UNREPRESENTABLE, since the reader would read that src alone as the list's operator.",
43
43
  "A negative number is written with its sign, which reads back as the operator - applied to the number's magnitude.",
44
44
  "A number that is not finite is written as the string Infinity, -Infinity or NaN."
45
45
  ]
@@ -54,7 +54,7 @@ const TRANSLATION = Object.freeze({
54
54
  ; its reverse, takes them back. Nothing else here is the host's to call.
55
55
  ;
56
56
  ; Both are the identity. The reader builds its trees on jsonic's values,
57
- ; so every plain tree is already an expression tree: a list whose first
57
+ ; so a plain tree is already an expression tree: a list whose first
58
58
  ; element is a default operator and whose count makes an operation is
59
59
  ; one, and the render writes it in infix, the operator being its source
60
60
  ; text (\`+\`, \`-\`, \`*\`, \`/\`, \`%\`, or \`(\` for a group) or an object that
@@ -63,11 +63,22 @@ const TRANSLATION = Object.freeze({
63
63
  ; render writes as jsonic. A list that only looks like an operation
64
64
  ; reads back as the same tree either way, once each operator is reduced
65
65
  ; to its source text as the shared fixtures' simplifier, Go's \`Simplify\`
66
- ; and Rust's \`simplify\` reduce it, so nothing needs refusing. What the
67
- ; round trip changes is what the render's conventions change (the
68
- ; manifest's loss list): an operator's description is written as its
69
- ; source text, a negative number reads back as the operator \`-\` applied
70
- ; to its magnitude, and a number that is not finite as a string.
66
+ ; and Rust's \`simplify\` reduce it.
67
+ ;
68
+ ; The plain trees that are not expression trees are the lists led by an
69
+ ; object whose \`src\` member the simplifiers read as an operator that is
70
+ ; not a default one, as they read a C syntax tree's tokens: they keep
71
+ ; that \`src\` alone, so no document reads back as such a list. The render
72
+ ; refuses it, with TARGET_VALUE_UNREPRESENTABLE and the object's path,
73
+ ; rather than this embedding, since the render meets such a list from
74
+ ; any source, one of the schema \`expr\` too, which reaches the render
75
+ ; without an embedding, and it already holds the first object of a list
76
+ ; to read the operator that object describes.
77
+ ;
78
+ ; What the round trip changes is what the render's conventions change
79
+ ; (the manifest's loss list): an operator's description is written as
80
+ ; its source text, a negative number reads back as the operator \`-\`
81
+ ; applied to its magnitude, and a number that is not finite as a string.
71
82
 
72
83
  ; The embedding: a plain tree's events in, the same events out.
73
84
  def expr-embed [input]
@@ -96,6 +107,15 @@ def expr-unembed [input]
96
107
  ; text is, or the operator an object describes, read by its \`src\` member
97
108
  ; as those simplifiers read it, when that is a default operator's source.
98
109
  ;
110
+ ; The simplifiers read any list led by an object with a \`src\` member that
111
+ ; way, and keep that member's value alone: TypeScript's \`simplify\` where
112
+ ; the \`src\` is not empty, zero, false or null, and Go's \`SimplifyOrdered\`
113
+ ; and Rust's \`simplify\` where it is a string other than the empty one. So
114
+ ; a list led by an object whose \`src\` they read and is not a default
115
+ ; operator's source, as the tokens a C syntax tree puts first in a node's
116
+ ; children are, is no tree of the reader's: no document reads back as
117
+ ; it, and the render refuses it (below).
118
+ ;
99
119
  ; Every value is written so that the reader builds the same tree from it:
100
120
  ;
101
121
  ; - An operation is written in infix: \`a+b\` for a list of an infix
@@ -118,6 +138,17 @@ def expr-unembed [input]
118
138
  ; its sign, which the reader reads as the operator \`-\` applied to the
119
139
  ; number's magnitude, and a number that is not finite, which jsonic
120
140
  ; has no spelling for, as the string \`Infinity\`, \`-Infinity\` or \`NaN\`.
141
+ ; - A list whose first element is an object with a \`src\` member that the
142
+ ; simplifiers read is written as an operation only where that \`src\` is
143
+ ; a default operator's source text, as the reader's own value describes
144
+ ; the operator (the manifest's loss list says the object's other
145
+ ; members are not kept). With any other such \`src\` the list fails with
146
+ ; TARGET_VALUE_UNREPRESENTABLE, naming the object's path, in jq's
147
+ ; syntax, and its \`src\` as the render writes it. The \`src\` is judged as
148
+ ; it is written, since that is what the reader reads: a number that is
149
+ ; not finite as a string, and a negative number as the operation its
150
+ ; sign makes, a list. An object whose \`src\` is empty, zero, false or
151
+ ; null is written as it is, and reads back as itself.
121
152
  ;
122
153
  ; No white space is written, since jsonic reads a space between two
123
154
  ; values as an implicit list, and the document ends with one line break.
@@ -143,16 +174,25 @@ def expr-unembed [input]
143
174
  ; [:list :first] a list whose first element, an object,
144
175
  ; is being held, which decides how the
145
176
  ; list is written
146
- ; [:list :stream first] a list written as it is read; first
147
- ; until an element is written
177
+ ; [:list :stream index] a list written as it is read; index is
178
+ ; [] until an element is written, and then
179
+ ; the decimal digits of the last one's
180
+ ; index, most significant first
148
181
  ; [:list :hold items] a held list, and the items read so far
149
- ; [:map :stream first :key] an object written as it is read, its
150
- ; next key or its end due
151
- ; [:map :stream :value] the same, a member's value due
182
+ ; [:map :stream :first :key] an object written as it is read, its
183
+ ; first key or its end due
184
+ ; [:map :stream [:value k]] the same, the value of the key k due
185
+ ; [:map :stream [:after k] :key] the same, after the member of the key
186
+ ; k, its next key or its end due
152
187
  ; [:map :hold parts :key] an object inside a held list, or the
153
188
  ; first element of a list, and its
154
189
  ; members' texts
155
- ; [:map :hold parts [:value k]] the same, the value of the key k due
190
+ ; [:map :hold parts [:value k]] the same, the value of the key k due,
191
+ ; k quoted
192
+ ;
193
+ ; The markers say where the render is, which only a refusal reads: the
194
+ ; list a value is in, and its index, or the object and its key. alchemy
195
+ ; has no arithmetic, so an index goes up a digit at a time.
156
196
  ;
157
197
  ; An item is \`[text class list head]\`: the text a value is written as;
158
198
  ; its class, \`:infix2\` for an operation of \`+\` or \`-\`, \`:infix3\` for one
@@ -190,19 +230,65 @@ def expr-src-op [part]
190
230
  case "\\"src\\":\\"(\\"" "("
191
231
  case _ :none
192
232
 
193
- def expr-is-op [op]
194
- match op
195
- case :none false
233
+ ; Whether a held object's member is its \`src\`: a member's text is its
234
+ ; quoted key, a colon and its value's text, and a quoted key ends at its
235
+ ; first unescaped quote, so the member is \`src\` exactly when its text
236
+ ; begins with "src":.
237
+ def expr-is-src [part]
238
+ expr-leads "\\"src\\":" part
239
+
240
+ ; The text of a \`src\` member's value, what follows its key and colon.
241
+ def expr-src-value [part]
242
+ let [pieces (split "\\"src\\":" part)]
243
+ string-join "\\"src\\":" (map (fn [i] (expr-at pieces i)) (filter expr-after-first (indices pieces)))
244
+
245
+ def expr-after-first [i]
246
+ match i
247
+ case 0 false
196
248
  case _ true
197
249
 
198
- ; The operator an object describes, from its members' texts: the one its
199
- ; \`src\` member names, as the reader's description of an operator does, or
200
- ; :none.
201
- def expr-described [parts]
202
- let [ops (filter expr-is-op (map expr-src-op parts))]
203
- match (count ops)
250
+ ; Whether a simplifier takes a list led by an object for an operation,
251
+ ; the object's \`src\` member's value written as this text: TypeScript's
252
+ ; does where the value is not empty, zero, false or null, and Go's and
253
+ ; Rust's where it is a string other than the empty one, a narrower set.
254
+ ; The value is judged as written, which is what the reader reads: a
255
+ ; number that is not finite is written as a string, and a negative one
256
+ ; with its sign, which reads back as an operation, a list.
257
+ def expr-src-read [text]
258
+ match text
259
+ case "\\"\\"" false
260
+ case "false" false
261
+ case "null" false
262
+ case _
263
+ match (is-number text)
264
+ case false true
265
+ case true
266
+ match (expr-at (split "-" text) 0)
267
+ case "" true
268
+ case _
269
+ match (compare (number text) 0)
270
+ case :equal false
271
+ case _ true
272
+
273
+ ; What a held object makes of a list it is the first element of, from its
274
+ ; members' texts: the default operator its \`src\` member names, as the
275
+ ; reader's description of an operator does; :none where it has no \`src\`,
276
+ ; or one no simplifier reads; and \`[:foreign text]\` for any other \`src\`,
277
+ ; text its value as written. Where a key repeats, the last member is the
278
+ ; one the reader keeps.
279
+ def expr-src-of [parts]
280
+ let [srcs (filter expr-is-src parts)]
281
+ match (count srcs)
204
282
  case 0 :none
205
- case _ (top ops)
283
+ case _
284
+ let [part (top srcs)]
285
+ match (expr-src-op part)
286
+ case :none
287
+ let [text (expr-src-value part)]
288
+ match (expr-src-read text)
289
+ case true [:foreign text]
290
+ case false :none
291
+ case op op
206
292
 
207
293
  ; An item as its list holds it: the first one, where it is an operator,
208
294
  ; as that operator's text, so that a description is written as the
@@ -306,6 +392,10 @@ def expr-top [s]
306
392
  case 0 :none
307
393
  case _ (top s)
308
394
 
395
+ ; A vector's item at a position.
396
+ def expr-at [v i]
397
+ get-path (path i) v
398
+
309
399
  def expr-mark [marker s]
310
400
  push marker (pop s)
311
401
 
@@ -316,11 +406,11 @@ def expr-mark [marker s]
316
406
  def expr-stream-value [s text inner]
317
407
  match (expr-top s)
318
408
  case :none (expr-push-or-done [] inner [text])
319
- case [:list :stream first]
320
- match first
321
- case true (expr-push-or-done (expr-mark [:list :stream false] s) inner [text])
322
- case false (expr-push-or-done (expr-mark [:list :stream false] s) inner ["," text])
323
- case [:map :stream :value] (expr-push-or-done (expr-mark [:map :stream false :key] s) inner [text])
409
+ case [:list :stream index]
410
+ match index
411
+ case [] (expr-push-or-done (expr-mark [:list :stream ["0"]] s) inner [text])
412
+ case _ (expr-push-or-done (expr-mark [:list :stream (expr-count-up index)] s) inner ["," text])
413
+ case [:map :stream [:value k]] (expr-push-or-done (expr-mark [:map :stream [:after k] :key] s) inner [text])
324
414
 
325
415
  def expr-push-or-done [s inner out]
326
416
  match inner
@@ -353,7 +443,7 @@ def expr-held [s item]
353
443
  ; \`[\` first, and the rest of the list as it is read.
354
444
  def expr-first-held [s item]
355
445
  match item
356
- case [text _ _ :none] (transition (expr-mark [:list :stream false] s) ["[" text])
446
+ case [text _ _ :none] (transition (expr-mark [:list :stream ["0"]] s) ["[" text])
357
447
  case _ (transition (expr-mark [:list :hold [(expr-lead [] item)]] s) [])
358
448
 
359
449
  ; Whether the top of the stack holds what is read.
@@ -374,10 +464,10 @@ def expr-decide [s mode event]
374
464
  match [mode event]
375
465
  case [:stream (scalar value)]
376
466
  match (expr-op value)
377
- case :none [(expr-mark [:list :stream true] s) "["]
467
+ case :none [(expr-mark [:list :stream []] s) "["]
378
468
  case _ [(expr-mark [:list :hold []] s) ""]
379
469
  case [:stream object-start] [(expr-mark [:list :first] s) ""]
380
- case [:stream _] [(expr-mark [:list :stream true] s) "["]
470
+ case [:stream _] [(expr-mark [:list :stream []] s) "["]
381
471
  case _ [(expr-mark [:list :hold []] s) ""]
382
472
 
383
473
  ; A value where one is due: a scalar, or a container's start.
@@ -391,7 +481,7 @@ def expr-value [s event]
391
481
  case false
392
482
  match event
393
483
  case (scalar value) (expr-stream-value s (expr-scalar-text value) :none)
394
- case object-start (expr-stream-value s "{" [:map :stream true :key])
484
+ case object-start (expr-stream-value s "{" [:map :stream :first :key])
395
485
  case array-start (expr-stream-value s "" [:pending :stream])
396
486
 
397
487
  ; The first element of a list, once the list has decided: what the
@@ -420,21 +510,130 @@ def expr-closed [s text]
420
510
 
421
511
  def expr-key [s name]
422
512
  match (expr-top s)
423
- case [:map :stream first :key]
424
- match first
425
- case true (transition (expr-mark [:map :stream :value] s) [(quoted name) ":"])
426
- case false (transition (expr-mark [:map :stream :value] s) ["," (quoted name) ":"])
513
+ case [:map :stream :first :key] (transition (expr-mark [:map :stream [:value name]] s) [(quoted name) ":"])
514
+ case [:map :stream [:after _] :key] (transition (expr-mark [:map :stream [:value name]] s) ["," (quoted name) ":"])
427
515
  case [:map :hold parts :key] (transition (expr-mark [:map :hold parts [:value (quoted name)]] s) [])
428
516
  case _ (fail :protocol-order "the events hold a key where a value is due, which a tree's never do")
429
517
 
518
+ ; An object ends. A held one becomes an item, which records the operator
519
+ ; it describes; one that is the first element of a list, with a \`src\` a
520
+ ; simplifier would read as that list's operator and no default one, is
521
+ ; refused.
430
522
  def expr-object-end [s]
431
523
  match (expr-top s)
432
524
  case [:map :stream _ :key] (expr-closed (pop s) "}")
433
525
  case [:map :hold parts :key]
434
526
  let [text (string-join "" ["{" (string-join "," parts) "}"])]
435
- expr-held (pop s) [text :atom text (expr-described parts)]
527
+ match (expr-src-of parts)
528
+ case [:foreign src]
529
+ match (expr-leads-list (pop s))
530
+ case true (expr-refuse (pop s) src)
531
+ case false (expr-held (pop s) [text :atom text :none])
532
+ case described (expr-held (pop s) [text :atom text described])
436
533
  case _ (fail :protocol-order "the events end an object that is not open, or one whose member has no value, which a tree's never do")
437
534
 
535
+ ; Whether the top of the stack is a list whose first element is due, so
536
+ ; that an object ending there is its first element.
537
+ def expr-leads-list [s]
538
+ match (expr-top s)
539
+ case [:list :first] true
540
+ case [:list :hold []] true
541
+ case _ false
542
+
543
+ ; A list led by an object whose \`src\` a simplifier would read as the
544
+ ; list's operator, and which is no default operator's source text: no
545
+ ; document reads back as the tree, so it is refused, naming the object,
546
+ ; by the markers of the containers it is in, and its \`src\` as the render
547
+ ; writes it.
548
+ def expr-refuse [s src]
549
+ fail :unrepresentable (string-join "" ["the object at " (expr-path-text s) " is the first element of a list and has the src " src ", which expr's reader would read back as the list's operator, keeping only the src; the render writes such a list only where the src is a default operator's source text"])
550
+
551
+ ; The path to the value being read, from the markers of the containers it
552
+ ; is in, in jq's syntax as aless prints and reads one: \`.name\` for a
553
+ ; member whose key is a word, \`."key"\` for one whose key is not, and \`[i]\`
554
+ ; for an element, \`.[i]\` at the root. While a value is read, the list it
555
+ ; is in is held, written as it is read or deciding on its first element,
556
+ ; and the object it is in has the value's key, held or written.
557
+ def expr-path-text [s]
558
+ let [text (string-join "" (map expr-path-part s))]
559
+ match (expr-at s 0)
560
+ case [:map _ _ _] text
561
+ case _ (string-join "" ["." text])
562
+
563
+ def expr-path-part [marker]
564
+ match marker
565
+ case [:list :first] "[0]"
566
+ case [:list :stream index] (string-join "" ["[" (string-join "" index) "]"])
567
+ case [:list :hold items] (string-join "" ["[" (scalar-text csv-options (count items)) "]"])
568
+ case [:map :stream [:after k] :key] (expr-path-key k)
569
+ case [:map :hold _ [:value k]] (expr-path-key (unquoted k))
570
+
571
+ ; A key as a path writes it: bare where it is a word, letters, digits and
572
+ ; underscores not led by a digit, and quoted otherwise.
573
+ def expr-path-key [name]
574
+ match [(length name) (chars-within [[48 57] [65 90] [95 95] [97 122]] name)]
575
+ case [0 _] (string-join "" ["." (quoted name)])
576
+ case [_ false] (string-join "" ["." (quoted name)])
577
+ case _
578
+ match (count (filter (fn [digit] (expr-leads digit name)) ["0" "1" "2" "3" "4" "5" "6" "7" "8" "9"]))
579
+ case 0 (string-join "" ["." name])
580
+ case _ (string-join "" ["." (quoted name)])
581
+
582
+ ; Whether a string that is not empty begins with another.
583
+ def expr-leads [lead text]
584
+ match (expr-at (split lead text) 0)
585
+ case "" true
586
+ case _ false
587
+
588
+ ; The digits of the next index: the last digit up by one, and a 9
589
+ ; carried.
590
+ def expr-count-up [digits]
591
+ match (top digits)
592
+ case "9" (expr-carry digits)
593
+ case digit (push (expr-digit-up digit) (pop digits))
594
+
595
+ def expr-digit-up [digit]
596
+ match digit
597
+ case "0" "1"
598
+ case "1" "2"
599
+ case "2" "3"
600
+ case "3" "4"
601
+ case "4" "5"
602
+ case "5" "6"
603
+ case "6" "7"
604
+ case "7" "8"
605
+ case "8" "9"
606
+
607
+ ; The digits after ones that end in a 9: the nines at the end become
608
+ ; zeros and the digit before them goes up, or, where every digit is a 9, a
609
+ ; 1 leads zeros one more than there were nines. Written as one string, a
610
+ ; 9 for each nine and a bar for any other digit, the digits split at the
611
+ ; bars, and what comes before the last bar is as long as the position of
612
+ ; the digit that goes up.
613
+ def expr-carry [digits]
614
+ let [runs (split "|" (string-join "" (map expr-nine-or-bar digits)))]
615
+ match (count runs)
616
+ case 1 (push "0" (map expr-one-then-zero (indices digits)))
617
+ case _
618
+ let [up (length (string-join "|" (pop runs)))]
619
+ map (fn [i] (expr-carried digits up i)) (indices digits)
620
+
621
+ def expr-nine-or-bar [digit]
622
+ match digit
623
+ case "9" "9"
624
+ case _ "|"
625
+
626
+ def expr-one-then-zero [i]
627
+ match i
628
+ case 0 "1"
629
+ case _ "0"
630
+
631
+ def expr-carried [digits up i]
632
+ match (compare i up)
633
+ case :less (expr-at digits i)
634
+ case :equal (expr-digit-up (expr-at digits i))
635
+ case _ "0"
636
+
438
637
  def expr-array-end [s]
439
638
  match (expr-top s)
440
639
  case [:pending mode] (expr-close s [:pending mode])
@@ -447,7 +646,7 @@ def expr-due [s event]
447
646
  case :none (expr-value s event)
448
647
  case [:pending mode] (expr-first s mode event)
449
648
  case [:list _ _] (expr-value s event)
450
- case [:map :stream :value] (expr-value s event)
649
+ case [:map :stream [:value _]] (expr-value s event)
451
650
  case [:map :hold _ [:value _]] (expr-value s event)
452
651
  case _ (fail :protocol-order "the events hold a value where a key is due, which a tree's never do")
453
652
 
@@ -1 +1 @@
1
- {"version":3,"file":"translate.js","sourceRoot":"","sources":["../src/translate.ts"],"names":[],"mappings":";AAAA,yDAAyD;;QA8evD,SAAS;AA7dX,MAAM,WAAW,GAAqB,MAAM,CAAC,MAAM,CAAC;IAClD,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CX;IACC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BrD,EAAE,CAAC;IACF,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0YvD,EAAE,CAAC;CACH,CAAC,CAAA;AAEF,SAAS,SAAS;IAChB,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"translate.js","sourceRoot":"","sources":["../src/translate.ts"],"names":[],"mappings":";AAAA,yDAAyD;;QAqrBvD,SAAS;AApqBX,MAAM,WAAW,GAAqB,MAAM,CAAC,MAAM,CAAC;IAClD,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CX;IACC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCrD,EAAE,CAAC;IACF,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAskBvD,EAAE,CAAC;CACH,CAAC,CAAA;AAEF,SAAS,SAAS;IAChB,OAAO,WAAW,CAAA;AACpB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tabnas/expr",
3
- "version": "0.5.16",
3
+ "version": "0.5.18",
4
4
  "description": "This plugin allows the [Tabnas](https://github.com/tabnas/jsonic) JSON parser to support expression syntax.",
5
5
  "main": "dist/expr.js",
6
6
  "type": "commonjs",
package/src/expr.ts CHANGED
@@ -1646,19 +1646,65 @@ function p(node: any, seen?: WeakSet<any>): any {
1646
1646
  }
1647
1647
 
1648
1648
 
1649
+ // Reduce a parsed value to the plain S-expression form the shared
1650
+ // fixtures compare and the translation parts are written against:
1651
+ // `1+2*3` reads as `['+', 1, ['*', 2, 3]]`. An operation is an array whose
1652
+ // head is the operator description. The head becomes the operator's
1653
+ // source text (`src`, which for a paren operator is its opening source),
1654
+ // and a term never filled, `undefined`, is dropped. Every other array and
1655
+ // object, an empty one included, is reduced member by member into a new
1656
+ // value, so the result shares no container with the parse, and anything
1657
+ // else is returned as it is.
1658
+ //
1659
+ // A node that contains itself, which a rewrite can leave behind, reads as
1660
+ // '[CIRCLE]' rather than recursing forever. Only a node inside itself
1661
+ // does: a node reached twice by two paths is reduced both times. The test
1662
+ // helper this replaces marked any node it had seen before, and the two
1663
+ // agree on every row of the shared fixtures, where no parse shares a
1664
+ // node; this reading is the Rust port's.
1665
+ //
1666
+ // The Rust port's `simplify`, and the Go port's `Simplify` and its
1667
+ // order-keeping `SimplifyOrdered`, give the same value, and the shared
1668
+ // fixtures hold them to it.
1669
+ function simplify(value: any): any {
1670
+ const open = new Set<any>()
1671
+ const reduce = (node: any): any => {
1672
+ if (null == node || 'object' !== typeof node) return node
1673
+ if (open.has(node)) return '[CIRCLE]'
1674
+ open.add(node)
1675
+ const out = Array.isArray(node)
1676
+ ? (0 === node.length ? [] : [
1677
+ null != node[0] && node[0].src ? node[0].src : reduce(node[0]),
1678
+ ...node.slice(1).map(reduce),
1679
+ ].filter((term: any) => undefined !== term))
1680
+ : omap(node, ([name, member]: [any, any]) => [name, reduce(member)])
1681
+ open.delete(node)
1682
+ return out
1683
+ }
1684
+ return reduce(value)
1685
+ }
1686
+
1687
+
1688
+ // Parse `src` on an instance with the plugin installed, and `simplify`
1689
+ // the result. The Rust port's `parse_simplified`.
1690
+ function parseSimplified(tn: Tabnas, src: string, meta?: any): any {
1691
+ return simplify(tn.parse(src, meta))
1692
+ }
1693
+
1694
+
1649
1695
  const testing = {
1650
1696
  prattify,
1651
1697
  opify: (x: any) => ((x.OP_MARK = OP_MARK), x),
1652
1698
  }
1653
1699
 
1654
- export { VERSION, Expr, evaluation, testing }
1655
-
1656
- export type { ExprOptions, OpDef, Op, Evaluate }
1657
-
1658
1700
  // VERSION is this package's version. It MUST equal package.json "version":
1659
1701
  // the release orchestrator rewrites both, and the version test fails the
1660
1702
  // build if they drift. Mirrors `const VERSION` in go/expr.go.
1661
- const VERSION = '0.5.16'
1703
+ const VERSION = '0.5.18'
1704
+
1705
+ export { VERSION, Expr, evaluation, simplify, parseSimplified, testing }
1706
+
1707
+ export type { ExprOptions, OpDef, Op, Evaluate }
1662
1708
 
1663
1709
  // The translation parts a host composes a translation from (admin ADR-27):
1664
1710
  // the manifest and the alchemy sources, generated by ../embed-translate.js.
package/src/translate.ts CHANGED
@@ -52,7 +52,7 @@ const TRANSLATION: TranslationParts = Object.freeze({
52
52
  "loss": [
53
53
  "Comments, spacing, implicit lists and maps, and the document's own spelling of strings and numbers are not kept: every list is written in brackets, every object in braces with its keys quoted, every string double-quoted and every number as JSON writes it.",
54
54
  "An operation of the default operators is written in infix, and a term that would need parentheses, which read back as a group, is written as a list instead, which reads back as the same tree.",
55
- "A list whose first element is an object whose src member is a default operator's source text, as the reader's own value describes an operator, is written with that text in the object's place, as an operation where its count makes one: only the src member is read, and the object's other members, the token the operator was read from among them, are not kept.",
55
+ "A list whose first element is an object whose src member is a default operator's source text, as the reader's own value describes an operator, is written with that text in the object's place, as an operation where its count makes one: only the src member is read, and the object's other members, the token the operator was read from among them, are not kept. A list whose first element is an object with any other src that is not empty, zero, false or null, as a C syntax tree's token has, is refused with TARGET_VALUE_UNREPRESENTABLE, since the reader would read that src alone as the list's operator.",
56
56
  "A negative number is written with its sign, which reads back as the operator - applied to the number's magnitude.",
57
57
  "A number that is not finite is written as the string Infinity, -Infinity or NaN."
58
58
  ]
@@ -67,7 +67,7 @@ const TRANSLATION: TranslationParts = Object.freeze({
67
67
  ; its reverse, takes them back. Nothing else here is the host's to call.
68
68
  ;
69
69
  ; Both are the identity. The reader builds its trees on jsonic's values,
70
- ; so every plain tree is already an expression tree: a list whose first
70
+ ; so a plain tree is already an expression tree: a list whose first
71
71
  ; element is a default operator and whose count makes an operation is
72
72
  ; one, and the render writes it in infix, the operator being its source
73
73
  ; text (\`+\`, \`-\`, \`*\`, \`/\`, \`%\`, or \`(\` for a group) or an object that
@@ -76,11 +76,22 @@ const TRANSLATION: TranslationParts = Object.freeze({
76
76
  ; render writes as jsonic. A list that only looks like an operation
77
77
  ; reads back as the same tree either way, once each operator is reduced
78
78
  ; to its source text as the shared fixtures' simplifier, Go's \`Simplify\`
79
- ; and Rust's \`simplify\` reduce it, so nothing needs refusing. What the
80
- ; round trip changes is what the render's conventions change (the
81
- ; manifest's loss list): an operator's description is written as its
82
- ; source text, a negative number reads back as the operator \`-\` applied
83
- ; to its magnitude, and a number that is not finite as a string.
79
+ ; and Rust's \`simplify\` reduce it.
80
+ ;
81
+ ; The plain trees that are not expression trees are the lists led by an
82
+ ; object whose \`src\` member the simplifiers read as an operator that is
83
+ ; not a default one, as they read a C syntax tree's tokens: they keep
84
+ ; that \`src\` alone, so no document reads back as such a list. The render
85
+ ; refuses it, with TARGET_VALUE_UNREPRESENTABLE and the object's path,
86
+ ; rather than this embedding, since the render meets such a list from
87
+ ; any source, one of the schema \`expr\` too, which reaches the render
88
+ ; without an embedding, and it already holds the first object of a list
89
+ ; to read the operator that object describes.
90
+ ;
91
+ ; What the round trip changes is what the render's conventions change
92
+ ; (the manifest's loss list): an operator's description is written as
93
+ ; its source text, a negative number reads back as the operator \`-\`
94
+ ; applied to its magnitude, and a number that is not finite as a string.
84
95
 
85
96
  ; The embedding: a plain tree's events in, the same events out.
86
97
  def expr-embed [input]
@@ -109,6 +120,15 @@ def expr-unembed [input]
109
120
  ; text is, or the operator an object describes, read by its \`src\` member
110
121
  ; as those simplifiers read it, when that is a default operator's source.
111
122
  ;
123
+ ; The simplifiers read any list led by an object with a \`src\` member that
124
+ ; way, and keep that member's value alone: TypeScript's \`simplify\` where
125
+ ; the \`src\` is not empty, zero, false or null, and Go's \`SimplifyOrdered\`
126
+ ; and Rust's \`simplify\` where it is a string other than the empty one. So
127
+ ; a list led by an object whose \`src\` they read and is not a default
128
+ ; operator's source, as the tokens a C syntax tree puts first in a node's
129
+ ; children are, is no tree of the reader's: no document reads back as
130
+ ; it, and the render refuses it (below).
131
+ ;
112
132
  ; Every value is written so that the reader builds the same tree from it:
113
133
  ;
114
134
  ; - An operation is written in infix: \`a+b\` for a list of an infix
@@ -131,6 +151,17 @@ def expr-unembed [input]
131
151
  ; its sign, which the reader reads as the operator \`-\` applied to the
132
152
  ; number's magnitude, and a number that is not finite, which jsonic
133
153
  ; has no spelling for, as the string \`Infinity\`, \`-Infinity\` or \`NaN\`.
154
+ ; - A list whose first element is an object with a \`src\` member that the
155
+ ; simplifiers read is written as an operation only where that \`src\` is
156
+ ; a default operator's source text, as the reader's own value describes
157
+ ; the operator (the manifest's loss list says the object's other
158
+ ; members are not kept). With any other such \`src\` the list fails with
159
+ ; TARGET_VALUE_UNREPRESENTABLE, naming the object's path, in jq's
160
+ ; syntax, and its \`src\` as the render writes it. The \`src\` is judged as
161
+ ; it is written, since that is what the reader reads: a number that is
162
+ ; not finite as a string, and a negative number as the operation its
163
+ ; sign makes, a list. An object whose \`src\` is empty, zero, false or
164
+ ; null is written as it is, and reads back as itself.
134
165
  ;
135
166
  ; No white space is written, since jsonic reads a space between two
136
167
  ; values as an implicit list, and the document ends with one line break.
@@ -156,16 +187,25 @@ def expr-unembed [input]
156
187
  ; [:list :first] a list whose first element, an object,
157
188
  ; is being held, which decides how the
158
189
  ; list is written
159
- ; [:list :stream first] a list written as it is read; first
160
- ; until an element is written
190
+ ; [:list :stream index] a list written as it is read; index is
191
+ ; [] until an element is written, and then
192
+ ; the decimal digits of the last one's
193
+ ; index, most significant first
161
194
  ; [:list :hold items] a held list, and the items read so far
162
- ; [:map :stream first :key] an object written as it is read, its
163
- ; next key or its end due
164
- ; [:map :stream :value] the same, a member's value due
195
+ ; [:map :stream :first :key] an object written as it is read, its
196
+ ; first key or its end due
197
+ ; [:map :stream [:value k]] the same, the value of the key k due
198
+ ; [:map :stream [:after k] :key] the same, after the member of the key
199
+ ; k, its next key or its end due
165
200
  ; [:map :hold parts :key] an object inside a held list, or the
166
201
  ; first element of a list, and its
167
202
  ; members' texts
168
- ; [:map :hold parts [:value k]] the same, the value of the key k due
203
+ ; [:map :hold parts [:value k]] the same, the value of the key k due,
204
+ ; k quoted
205
+ ;
206
+ ; The markers say where the render is, which only a refusal reads: the
207
+ ; list a value is in, and its index, or the object and its key. alchemy
208
+ ; has no arithmetic, so an index goes up a digit at a time.
169
209
  ;
170
210
  ; An item is \`[text class list head]\`: the text a value is written as;
171
211
  ; its class, \`:infix2\` for an operation of \`+\` or \`-\`, \`:infix3\` for one
@@ -203,19 +243,65 @@ def expr-src-op [part]
203
243
  case "\\"src\\":\\"(\\"" "("
204
244
  case _ :none
205
245
 
206
- def expr-is-op [op]
207
- match op
208
- case :none false
246
+ ; Whether a held object's member is its \`src\`: a member's text is its
247
+ ; quoted key, a colon and its value's text, and a quoted key ends at its
248
+ ; first unescaped quote, so the member is \`src\` exactly when its text
249
+ ; begins with "src":.
250
+ def expr-is-src [part]
251
+ expr-leads "\\"src\\":" part
252
+
253
+ ; The text of a \`src\` member's value, what follows its key and colon.
254
+ def expr-src-value [part]
255
+ let [pieces (split "\\"src\\":" part)]
256
+ string-join "\\"src\\":" (map (fn [i] (expr-at pieces i)) (filter expr-after-first (indices pieces)))
257
+
258
+ def expr-after-first [i]
259
+ match i
260
+ case 0 false
209
261
  case _ true
210
262
 
211
- ; The operator an object describes, from its members' texts: the one its
212
- ; \`src\` member names, as the reader's description of an operator does, or
213
- ; :none.
214
- def expr-described [parts]
215
- let [ops (filter expr-is-op (map expr-src-op parts))]
216
- match (count ops)
263
+ ; Whether a simplifier takes a list led by an object for an operation,
264
+ ; the object's \`src\` member's value written as this text: TypeScript's
265
+ ; does where the value is not empty, zero, false or null, and Go's and
266
+ ; Rust's where it is a string other than the empty one, a narrower set.
267
+ ; The value is judged as written, which is what the reader reads: a
268
+ ; number that is not finite is written as a string, and a negative one
269
+ ; with its sign, which reads back as an operation, a list.
270
+ def expr-src-read [text]
271
+ match text
272
+ case "\\"\\"" false
273
+ case "false" false
274
+ case "null" false
275
+ case _
276
+ match (is-number text)
277
+ case false true
278
+ case true
279
+ match (expr-at (split "-" text) 0)
280
+ case "" true
281
+ case _
282
+ match (compare (number text) 0)
283
+ case :equal false
284
+ case _ true
285
+
286
+ ; What a held object makes of a list it is the first element of, from its
287
+ ; members' texts: the default operator its \`src\` member names, as the
288
+ ; reader's description of an operator does; :none where it has no \`src\`,
289
+ ; or one no simplifier reads; and \`[:foreign text]\` for any other \`src\`,
290
+ ; text its value as written. Where a key repeats, the last member is the
291
+ ; one the reader keeps.
292
+ def expr-src-of [parts]
293
+ let [srcs (filter expr-is-src parts)]
294
+ match (count srcs)
217
295
  case 0 :none
218
- case _ (top ops)
296
+ case _
297
+ let [part (top srcs)]
298
+ match (expr-src-op part)
299
+ case :none
300
+ let [text (expr-src-value part)]
301
+ match (expr-src-read text)
302
+ case true [:foreign text]
303
+ case false :none
304
+ case op op
219
305
 
220
306
  ; An item as its list holds it: the first one, where it is an operator,
221
307
  ; as that operator's text, so that a description is written as the
@@ -319,6 +405,10 @@ def expr-top [s]
319
405
  case 0 :none
320
406
  case _ (top s)
321
407
 
408
+ ; A vector's item at a position.
409
+ def expr-at [v i]
410
+ get-path (path i) v
411
+
322
412
  def expr-mark [marker s]
323
413
  push marker (pop s)
324
414
 
@@ -329,11 +419,11 @@ def expr-mark [marker s]
329
419
  def expr-stream-value [s text inner]
330
420
  match (expr-top s)
331
421
  case :none (expr-push-or-done [] inner [text])
332
- case [:list :stream first]
333
- match first
334
- case true (expr-push-or-done (expr-mark [:list :stream false] s) inner [text])
335
- case false (expr-push-or-done (expr-mark [:list :stream false] s) inner ["," text])
336
- case [:map :stream :value] (expr-push-or-done (expr-mark [:map :stream false :key] s) inner [text])
422
+ case [:list :stream index]
423
+ match index
424
+ case [] (expr-push-or-done (expr-mark [:list :stream ["0"]] s) inner [text])
425
+ case _ (expr-push-or-done (expr-mark [:list :stream (expr-count-up index)] s) inner ["," text])
426
+ case [:map :stream [:value k]] (expr-push-or-done (expr-mark [:map :stream [:after k] :key] s) inner [text])
337
427
 
338
428
  def expr-push-or-done [s inner out]
339
429
  match inner
@@ -366,7 +456,7 @@ def expr-held [s item]
366
456
  ; \`[\` first, and the rest of the list as it is read.
367
457
  def expr-first-held [s item]
368
458
  match item
369
- case [text _ _ :none] (transition (expr-mark [:list :stream false] s) ["[" text])
459
+ case [text _ _ :none] (transition (expr-mark [:list :stream ["0"]] s) ["[" text])
370
460
  case _ (transition (expr-mark [:list :hold [(expr-lead [] item)]] s) [])
371
461
 
372
462
  ; Whether the top of the stack holds what is read.
@@ -387,10 +477,10 @@ def expr-decide [s mode event]
387
477
  match [mode event]
388
478
  case [:stream (scalar value)]
389
479
  match (expr-op value)
390
- case :none [(expr-mark [:list :stream true] s) "["]
480
+ case :none [(expr-mark [:list :stream []] s) "["]
391
481
  case _ [(expr-mark [:list :hold []] s) ""]
392
482
  case [:stream object-start] [(expr-mark [:list :first] s) ""]
393
- case [:stream _] [(expr-mark [:list :stream true] s) "["]
483
+ case [:stream _] [(expr-mark [:list :stream []] s) "["]
394
484
  case _ [(expr-mark [:list :hold []] s) ""]
395
485
 
396
486
  ; A value where one is due: a scalar, or a container's start.
@@ -404,7 +494,7 @@ def expr-value [s event]
404
494
  case false
405
495
  match event
406
496
  case (scalar value) (expr-stream-value s (expr-scalar-text value) :none)
407
- case object-start (expr-stream-value s "{" [:map :stream true :key])
497
+ case object-start (expr-stream-value s "{" [:map :stream :first :key])
408
498
  case array-start (expr-stream-value s "" [:pending :stream])
409
499
 
410
500
  ; The first element of a list, once the list has decided: what the
@@ -433,21 +523,130 @@ def expr-closed [s text]
433
523
 
434
524
  def expr-key [s name]
435
525
  match (expr-top s)
436
- case [:map :stream first :key]
437
- match first
438
- case true (transition (expr-mark [:map :stream :value] s) [(quoted name) ":"])
439
- case false (transition (expr-mark [:map :stream :value] s) ["," (quoted name) ":"])
526
+ case [:map :stream :first :key] (transition (expr-mark [:map :stream [:value name]] s) [(quoted name) ":"])
527
+ case [:map :stream [:after _] :key] (transition (expr-mark [:map :stream [:value name]] s) ["," (quoted name) ":"])
440
528
  case [:map :hold parts :key] (transition (expr-mark [:map :hold parts [:value (quoted name)]] s) [])
441
529
  case _ (fail :protocol-order "the events hold a key where a value is due, which a tree's never do")
442
530
 
531
+ ; An object ends. A held one becomes an item, which records the operator
532
+ ; it describes; one that is the first element of a list, with a \`src\` a
533
+ ; simplifier would read as that list's operator and no default one, is
534
+ ; refused.
443
535
  def expr-object-end [s]
444
536
  match (expr-top s)
445
537
  case [:map :stream _ :key] (expr-closed (pop s) "}")
446
538
  case [:map :hold parts :key]
447
539
  let [text (string-join "" ["{" (string-join "," parts) "}"])]
448
- expr-held (pop s) [text :atom text (expr-described parts)]
540
+ match (expr-src-of parts)
541
+ case [:foreign src]
542
+ match (expr-leads-list (pop s))
543
+ case true (expr-refuse (pop s) src)
544
+ case false (expr-held (pop s) [text :atom text :none])
545
+ case described (expr-held (pop s) [text :atom text described])
449
546
  case _ (fail :protocol-order "the events end an object that is not open, or one whose member has no value, which a tree's never do")
450
547
 
548
+ ; Whether the top of the stack is a list whose first element is due, so
549
+ ; that an object ending there is its first element.
550
+ def expr-leads-list [s]
551
+ match (expr-top s)
552
+ case [:list :first] true
553
+ case [:list :hold []] true
554
+ case _ false
555
+
556
+ ; A list led by an object whose \`src\` a simplifier would read as the
557
+ ; list's operator, and which is no default operator's source text: no
558
+ ; document reads back as the tree, so it is refused, naming the object,
559
+ ; by the markers of the containers it is in, and its \`src\` as the render
560
+ ; writes it.
561
+ def expr-refuse [s src]
562
+ fail :unrepresentable (string-join "" ["the object at " (expr-path-text s) " is the first element of a list and has the src " src ", which expr's reader would read back as the list's operator, keeping only the src; the render writes such a list only where the src is a default operator's source text"])
563
+
564
+ ; The path to the value being read, from the markers of the containers it
565
+ ; is in, in jq's syntax as aless prints and reads one: \`.name\` for a
566
+ ; member whose key is a word, \`."key"\` for one whose key is not, and \`[i]\`
567
+ ; for an element, \`.[i]\` at the root. While a value is read, the list it
568
+ ; is in is held, written as it is read or deciding on its first element,
569
+ ; and the object it is in has the value's key, held or written.
570
+ def expr-path-text [s]
571
+ let [text (string-join "" (map expr-path-part s))]
572
+ match (expr-at s 0)
573
+ case [:map _ _ _] text
574
+ case _ (string-join "" ["." text])
575
+
576
+ def expr-path-part [marker]
577
+ match marker
578
+ case [:list :first] "[0]"
579
+ case [:list :stream index] (string-join "" ["[" (string-join "" index) "]"])
580
+ case [:list :hold items] (string-join "" ["[" (scalar-text csv-options (count items)) "]"])
581
+ case [:map :stream [:after k] :key] (expr-path-key k)
582
+ case [:map :hold _ [:value k]] (expr-path-key (unquoted k))
583
+
584
+ ; A key as a path writes it: bare where it is a word, letters, digits and
585
+ ; underscores not led by a digit, and quoted otherwise.
586
+ def expr-path-key [name]
587
+ match [(length name) (chars-within [[48 57] [65 90] [95 95] [97 122]] name)]
588
+ case [0 _] (string-join "" ["." (quoted name)])
589
+ case [_ false] (string-join "" ["." (quoted name)])
590
+ case _
591
+ match (count (filter (fn [digit] (expr-leads digit name)) ["0" "1" "2" "3" "4" "5" "6" "7" "8" "9"]))
592
+ case 0 (string-join "" ["." name])
593
+ case _ (string-join "" ["." (quoted name)])
594
+
595
+ ; Whether a string that is not empty begins with another.
596
+ def expr-leads [lead text]
597
+ match (expr-at (split lead text) 0)
598
+ case "" true
599
+ case _ false
600
+
601
+ ; The digits of the next index: the last digit up by one, and a 9
602
+ ; carried.
603
+ def expr-count-up [digits]
604
+ match (top digits)
605
+ case "9" (expr-carry digits)
606
+ case digit (push (expr-digit-up digit) (pop digits))
607
+
608
+ def expr-digit-up [digit]
609
+ match digit
610
+ case "0" "1"
611
+ case "1" "2"
612
+ case "2" "3"
613
+ case "3" "4"
614
+ case "4" "5"
615
+ case "5" "6"
616
+ case "6" "7"
617
+ case "7" "8"
618
+ case "8" "9"
619
+
620
+ ; The digits after ones that end in a 9: the nines at the end become
621
+ ; zeros and the digit before them goes up, or, where every digit is a 9, a
622
+ ; 1 leads zeros one more than there were nines. Written as one string, a
623
+ ; 9 for each nine and a bar for any other digit, the digits split at the
624
+ ; bars, and what comes before the last bar is as long as the position of
625
+ ; the digit that goes up.
626
+ def expr-carry [digits]
627
+ let [runs (split "|" (string-join "" (map expr-nine-or-bar digits)))]
628
+ match (count runs)
629
+ case 1 (push "0" (map expr-one-then-zero (indices digits)))
630
+ case _
631
+ let [up (length (string-join "|" (pop runs)))]
632
+ map (fn [i] (expr-carried digits up i)) (indices digits)
633
+
634
+ def expr-nine-or-bar [digit]
635
+ match digit
636
+ case "9" "9"
637
+ case _ "|"
638
+
639
+ def expr-one-then-zero [i]
640
+ match i
641
+ case 0 "1"
642
+ case _ "0"
643
+
644
+ def expr-carried [digits up i]
645
+ match (compare i up)
646
+ case :less (expr-at digits i)
647
+ case :equal (expr-digit-up (expr-at digits i))
648
+ case _ "0"
649
+
451
650
  def expr-array-end [s]
452
651
  match (expr-top s)
453
652
  case [:pending mode] (expr-close s [:pending mode])
@@ -460,7 +659,7 @@ def expr-due [s event]
460
659
  case :none (expr-value s event)
461
660
  case [:pending mode] (expr-first s mode event)
462
661
  case [:list _ _] (expr-value s event)
463
- case [:map :stream :value] (expr-value s event)
662
+ case [:map :stream [:value _]] (expr-value s event)
464
663
  case [:map :hold _ [:value _]] (expr-value s event)
465
664
  case _ (fail :protocol-order "the events hold a value where a key is due, which a tree's never do")
466
665