@tabnas/expr 0.5.15 → 0.5.16

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
@@ -62,4 +62,6 @@ declare const testing: {
62
62
  };
63
63
  export { VERSION, Expr, evaluation, testing };
64
64
  export type { ExprOptions, OpDef, Op, Evaluate };
65
- declare const VERSION = "0.5.15";
65
+ declare const VERSION = "0.5.16";
66
+ export { translate } from './translate';
67
+ export type { TranslationPart, TranslationParts } from './translate';
package/dist/expr.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  /* Copyright (c) 2021-2025 Richard Rodger, MIT License */
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.testing = exports.Expr = exports.VERSION = void 0;
4
+ exports.translate = exports.testing = exports.Expr = exports.VERSION = void 0;
5
5
  exports.evaluation = evaluation;
6
6
  // This algorithm is based on Pratt parsing, and draws heavily from
7
7
  // the explanation written by Aleksey Kladov here:
@@ -1374,6 +1374,10 @@ exports.testing = testing;
1374
1374
  // VERSION is this package's version. It MUST equal package.json "version":
1375
1375
  // the release orchestrator rewrites both, and the version test fails the
1376
1376
  // build if they drift. Mirrors `const VERSION` in go/expr.go.
1377
- const VERSION = '0.5.15';
1377
+ const VERSION = '0.5.16';
1378
1378
  exports.VERSION = VERSION;
1379
+ // The translation parts a host composes a translation from (admin ADR-27):
1380
+ // the manifest and the alchemy sources, generated by ../embed-translate.js.
1381
+ var translate_1 = require("./translate");
1382
+ Object.defineProperty(exports, "translate", { enumerable: true, get: function () { return translate_1.translate; } });
1379
1383
  //# sourceMappingURL=expr.js.map
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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"}
@@ -0,0 +1,13 @@
1
+ type TranslationPart = Readonly<{
2
+ entry: string;
3
+ source?: string;
4
+ }>;
5
+ type TranslationParts = Readonly<{
6
+ manifest: string;
7
+ lift?: TranslationPart;
8
+ embed?: TranslationPart;
9
+ render?: TranslationPart;
10
+ }>;
11
+ declare function translate(): TranslationParts | undefined;
12
+ export { translate, };
13
+ export type { TranslationPart, TranslationParts, };
@@ -0,0 +1,479 @@
1
+ "use strict";
2
+ /* Copyright (c) 2021-2026 Richard Rodger, MIT License */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.translate = translate;
5
+ const TRANSLATION = Object.freeze({
6
+ manifest: `{
7
+ "$schema": "https://tabnas.dev/schema/plugin.schema.json",
8
+ "name": "@tabnas/expr",
9
+ "go": "github.com/tabnas/expr/go",
10
+ "rust": "tabnas-expr",
11
+ "description": "Expression syntax with operators and precedence for the tabnas engine.",
12
+ "base": "@tabnas/jsonic",
13
+ "engine": "@tabnas/parser",
14
+ "languageId": "expr",
15
+ "pluginKind": "grammar",
16
+ "specDir": "test/spec",
17
+ "clib": {
18
+ "dir": "go/clib",
19
+ "library": "libtabnasexpr",
20
+ "abi": "v1",
21
+ "errorCodes": [
22
+ "usage",
23
+ "grammar",
24
+ "handle",
25
+ "internal"
26
+ ]
27
+ },
28
+ "errorCodes": [],
29
+ "docs": "https://tabnas.dev/docs/packages",
30
+ "repository": "https://github.com/tabnas/expr",
31
+ "versionSource": "ts/package.json",
32
+ "translate": {
33
+ "reads": "tree",
34
+ "writes": "tree",
35
+ "root": "any",
36
+ "schema": "expr",
37
+ "embed": "alchemy/embed.alc",
38
+ "render": "alchemy/render.alc",
39
+ "loss": [
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
+ "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.",
43
+ "A negative number is written with its sign, which reads back as the operator - applied to the number's magnitude.",
44
+ "A number that is not finite is written as the string Infinity, -Infinity or NaN."
45
+ ]
46
+ }
47
+ }
48
+ `,
49
+ embed: Object.freeze({ entry: "expr-embed", source: `; Expressions' embedding: a plain tree as an expression document's tree,
50
+ ; and back again. This is a library of definitions, each named
51
+ ; \`expr-...\`, which a host links with its own program and with the render
52
+ ; (alchemy's \`compile_sources\`). It has two entry points: \`expr-embed\`
53
+ ; takes a plain tree's events to an expression tree's, and \`expr-unembed\`,
54
+ ; its reverse, takes them back. Nothing else here is the host's to call.
55
+ ;
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
58
+ ; element is a default operator and whose count makes an operation is
59
+ ; one, and the render writes it in infix, the operator being its source
60
+ ; text (\`+\`, \`-\`, \`*\`, \`/\`, \`%\`, or \`(\` for a group) or an object that
61
+ ; describes it, whose \`src\` member is that text, as the reader's own
62
+ ; value carries it; every other value is a value of jsonic's, which the
63
+ ; render writes as jsonic. A list that only looks like an operation
64
+ ; reads back as the same tree either way, once each operator is reduced
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.
71
+
72
+ ; The embedding: a plain tree's events in, the same events out.
73
+ def expr-embed [input]
74
+ input
75
+
76
+ ; The reverse: an expression tree's events in, the same events out.
77
+ def expr-unembed [input]
78
+ input
79
+ ` }),
80
+ render: Object.freeze({ entry: "expr-render", source: `; Expressions' render: a tree's events written as an expression document,
81
+ ; jsonic text with the plugin's default operators. This is a library of
82
+ ; definitions, each named \`expr-...\`, which a host links with its own
83
+ ; program (alchemy's \`compile_sources\`); its entry point is \`expr-render\`,
84
+ ; and nothing else here is the host's to call.
85
+ ;
86
+ ; The tree is the one the reader builds with its default options:
87
+ ; jsonic's values, in which an operation is a list whose first element is
88
+ ; its operator and whose other elements are its terms. The reader's own
89
+ ; value puts the operator's description there, an object whose \`src\`
90
+ ; member is the operator's source text (TypeScript's parse, and Rust's
91
+ ; once realized, give it so); the shared fixtures' simplifier, Go's
92
+ ; \`Simplify\` and Rust's \`simplify\` reduce each description to that text,
93
+ ; \`+\`, \`-\`, \`*\`, \`/\` or \`%\` (\`1+2*3\` is \`["+", 1, ["*", 2, 3]]\`, \`-1\` is
94
+ ; \`["-", 1]\`) or \`(\` for a group (\`(1)\` is \`["(", 1]\`, \`()\` is \`["("]\`).
95
+ ; The render reads both: the first element of a list is the operator its
96
+ ; text is, or the operator an object describes, read by its \`src\` member
97
+ ; as those simplifiers read it, when that is a default operator's source.
98
+ ;
99
+ ; Every value is written so that the reader builds the same tree from it:
100
+ ;
101
+ ; - An operation is written in infix: \`a+b\` for a list of an infix
102
+ ; operator and two terms, \`-a\` or \`+a\` for a list of \`-\` or \`+\` and one
103
+ ; term, \`(a)\` for a group and \`()\` for an empty one. The default
104
+ ; operators' binding powers decide where a term needs grouping: \`*\`,
105
+ ; \`/\` and \`%\` bind tighter than \`+\` and \`-\`, every infix operator binds
106
+ ; to the left, and a prefix operator binds tighter than any infix one.
107
+ ; Parentheses would read back as a group, a list \`["(", ...]\`, so a
108
+ ; term that needs grouping (\`["+", 1, 2]\` under \`*\`, or on the right of
109
+ ; \`-\`) is written as a list instead, \`["+",1,2]*3\`, which the reader
110
+ ; builds as the same list.
111
+ ; - Any other list, one whose first element is no operator or which has
112
+ ; another number of terms (\`["*", 1]\`, \`["+", 1, 2, 3]\`), is written as
113
+ ; a list, \`[a,b]\`, each element in infix where it is an operation.
114
+ ; - An object is written \`{"k":v}\`, every key quoted.
115
+ ; - A string is quoted (JSON's escapes, which jsonic reads), so a word is
116
+ ; written \`"a"\`; a number by its lexeme, or as JSON writes it; a
117
+ ; boolean and null by their names. A negative number is written with
118
+ ; its sign, which the reader reads as the operator \`-\` applied to the
119
+ ; number's magnitude, and a number that is not finite, which jsonic
120
+ ; has no spelling for, as the string \`Infinity\`, \`-Infinity\` or \`NaN\`.
121
+ ;
122
+ ; No white space is written, since jsonic reads a space between two
123
+ ; values as an implicit list, and the document ends with one line break.
124
+ ;
125
+ ; Whether a list is written as an operation is known from its first
126
+ ; element and its count, so a list whose first element is a default
127
+ ; operator is held until it ends, its elements' texts with it, and then
128
+ ; written. A list whose first element is an object is held until that
129
+ ; object ends, since the object may describe an operator: if it does, the
130
+ ; list is held to its end as an operation is, and if not, the list is
131
+ ; written as it is read from then on. Every other list, and every object,
132
+ ; is written as it is read, one element at a time, so a document's own
133
+ ; lists and objects stream and only its operations, and the first object
134
+ ; of a list, are held. Events no tree has fail with PROTOCOL_ORDER_ERROR.
135
+ ;
136
+ ; The state is a stack of markers, one for each container the render is
137
+ ; inside:
138
+ ;
139
+ ; [:pending mode] a list whose first element is due, which
140
+ ; decides how it is written; mode is
141
+ ; :stream where it is written as it is
142
+ ; read and :hold inside a held list
143
+ ; [:list :first] a list whose first element, an object,
144
+ ; is being held, which decides how the
145
+ ; list is written
146
+ ; [:list :stream first] a list written as it is read; first
147
+ ; until an element is written
148
+ ; [: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
152
+ ; [:map :hold parts :key] an object inside a held list, or the
153
+ ; first element of a list, and its
154
+ ; members' texts
155
+ ; [:map :hold parts [:value k]] the same, the value of the key k due
156
+ ;
157
+ ; An item is \`[text class list head]\`: the text a value is written as;
158
+ ; its class, \`:infix2\` for an operation of \`+\` or \`-\`, \`:infix3\` for one
159
+ ; of \`*\`, \`/\` or \`%\`, and \`:atom\` for any other value, which binds as
160
+ ; tightly as a term can; the text of the value as a list, for a term that
161
+ ; needs grouping; and the operator a string is or an object describes, or
162
+ ; \`:none\`. A list's first item that is an operator is held as the
163
+ ; operator's text, so a description is written as its source, as the
164
+ ; simplifiers reduce it, wherever its list is written. Once the root
165
+ ; value is written the state is \`[:done]\`, and nothing may follow it.
166
+
167
+ ; The operator a value is, when it is the source of a default one.
168
+ def expr-op [value]
169
+ match (kind value)
170
+ case :string
171
+ match value
172
+ case "+" value
173
+ case "-" value
174
+ case "*" value
175
+ case "/" value
176
+ case "%" value
177
+ case "(" value
178
+ case _ :none
179
+ case _ :none
180
+
181
+ ; The operator a held object's member describes: the default operator a
182
+ ; \`src\` member's text names, or :none for any other member.
183
+ def expr-src-op [part]
184
+ match part
185
+ case "\\"src\\":\\"+\\"" "+"
186
+ case "\\"src\\":\\"-\\"" "-"
187
+ case "\\"src\\":\\"*\\"" "*"
188
+ case "\\"src\\":\\"/\\"" "/"
189
+ case "\\"src\\":\\"%\\"" "%"
190
+ case "\\"src\\":\\"(\\"" "("
191
+ case _ :none
192
+
193
+ def expr-is-op [op]
194
+ match op
195
+ case :none false
196
+ case _ true
197
+
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)
204
+ case 0 :none
205
+ case _ (top ops)
206
+
207
+ ; An item as its list holds it: the first one, where it is an operator,
208
+ ; as that operator's text, so that a description is written as the
209
+ ; source it describes; any other as it is.
210
+ def expr-lead [items item]
211
+ match (count items)
212
+ case 0
213
+ match item
214
+ case [_ _ _ :none] item
215
+ case [_ _ _ op] (expr-scalar-item op)
216
+ case _ item
217
+
218
+ ; An infix operator's class.
219
+ def expr-level [op]
220
+ match op
221
+ case "+" :infix2
222
+ case "-" :infix2
223
+ case _ :infix3
224
+
225
+ ; A number: its lexeme, or as JSON writes it; one that is not finite as
226
+ ; a string.
227
+ def expr-number [value]
228
+ match (number-class value)
229
+ case :finite (scalar-text csv-options value)
230
+ case :infinity (quoted "Infinity")
231
+ case :negative-infinity (quoted "-Infinity")
232
+ case :nan (quoted "NaN")
233
+
234
+ def expr-scalar-text [value]
235
+ match (kind value)
236
+ case :string (quoted value)
237
+ case :number (expr-number value)
238
+ case :boolean (scalar-text csv-options value)
239
+ case :null "null"
240
+
241
+ def expr-scalar-item [value]
242
+ let [text (expr-scalar-text value)]
243
+ [text :atom text (expr-op value)]
244
+
245
+ def expr-text [item]
246
+ match item
247
+ case [text _ _ _] text
248
+
249
+ ; A held list's elements written as a list.
250
+ def expr-list [items]
251
+ string-join "" ["[" (string-join "," (map expr-text items)) "]"]
252
+
253
+ ; A left term of an infix operator of the class given: an operation that
254
+ ; binds as tightly or more, or the term as a list.
255
+ def expr-left [item level]
256
+ match item
257
+ case [text :atom _ _] text
258
+ case [text :infix3 _ _] text
259
+ case [text :infix2 list _]
260
+ match level
261
+ case :infix2 text
262
+ case _ list
263
+
264
+ ; A right term: an operation that binds more tightly, or the term as a
265
+ ; list.
266
+ def expr-right [item level]
267
+ match item
268
+ case [text :atom _ _] text
269
+ case [text :infix3 list _]
270
+ match level
271
+ case :infix2 text
272
+ case _ list
273
+ case [_ :infix2 list _] list
274
+
275
+ ; A prefix operator's term: one that binds as tightly, or the term as a
276
+ ; list.
277
+ def expr-term [item]
278
+ match item
279
+ case [text :atom _ _] text
280
+ case [_ _ list _] list
281
+
282
+ ; An infix operation, when the first element is an infix operator.
283
+ def expr-infix [op a b list]
284
+ match op
285
+ case :none [list :atom list :none]
286
+ case "(" [list :atom list :none]
287
+ case _
288
+ let [level (expr-level op)]
289
+ [(string-join "" [(expr-left a level) op (expr-right b level)]) level list :none]
290
+
291
+ ; A held list, ended: an operation where its first element and its count
292
+ ; make one, and a list otherwise.
293
+ def expr-array [items]
294
+ let [list (expr-list items)]
295
+ match items
296
+ case [[_ _ _ "("]] ["()" :atom list :none]
297
+ case [[_ _ _ "("] x] [(string-join "" ["(" (expr-text x) ")"]) :atom list :none]
298
+ case [[_ _ _ "+"] x] [(string-join "" ["+" (expr-term x)]) :atom list :none]
299
+ case [[_ _ _ "-"] x] [(string-join "" ["-" (expr-term x)]) :atom list :none]
300
+ case [[_ _ _ op] a b] (expr-infix op a b list)
301
+ case _ [list :atom list :none]
302
+
303
+ ; The top marker, or :none before the root value.
304
+ def expr-top [s]
305
+ match (count s)
306
+ case 0 :none
307
+ case _ (top s)
308
+
309
+ def expr-mark [marker s]
310
+ push marker (pop s)
311
+
312
+ ; A value written where it is read: at the root, which then is done, in
313
+ ; a list written as it is read, after a comma unless it is the first,
314
+ ; or as an object's member, whose next key is then due. \`text\` is what
315
+ ; the value writes now, and \`inner\` the marker it opens, or :none.
316
+ def expr-stream-value [s text inner]
317
+ match (expr-top s)
318
+ 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])
324
+
325
+ def expr-push-or-done [s inner out]
326
+ match inner
327
+ case :none
328
+ match (count s)
329
+ case 0 (transition [[:done]] (push "\\n" out))
330
+ case _ (transition s out)
331
+ case _ (transition (push inner s) out)
332
+
333
+ ; A value completed inside a held list or object: its item is added.
334
+ def expr-hold-value [s item]
335
+ match (expr-top s)
336
+ case [:list :hold items] (transition (expr-mark [:list :hold (push (expr-lead items item) items)] s) [])
337
+ case [:map :hold parts [:value k]] (transition (expr-mark [:map :hold (push (string-join "" [k ":" (expr-text item)]) parts) :key] s) [])
338
+
339
+ ; A held value has ended: it is added to the held container around it,
340
+ ; decides the list it is the first element of, or is written where
341
+ ; values are written as they are read, where what led it (a comma, a
342
+ ; key) was written when it began.
343
+ def expr-held [s item]
344
+ match (expr-top s)
345
+ case [:list :hold _] (expr-hold-value s item)
346
+ case [:map :hold _ _] (expr-hold-value s item)
347
+ case [:list :first] (expr-first-held s item)
348
+ case _ (expr-closed s (expr-text item))
349
+
350
+ ; A list whose first element, an object, has ended: one that describes
351
+ ; an operator makes the list an operation, held as one whose first
352
+ ; element is that operator's text is; any other is written, the list's
353
+ ; \`[\` first, and the rest of the list as it is read.
354
+ def expr-first-held [s item]
355
+ match item
356
+ case [text _ _ :none] (transition (expr-mark [:list :stream false] s) ["[" text])
357
+ case _ (transition (expr-mark [:list :hold [(expr-lead [] item)]] s) [])
358
+
359
+ ; Whether the top of the stack holds what is read.
360
+ def expr-holding [s]
361
+ match (expr-top s)
362
+ case [:list :hold _] true
363
+ case [:map :hold _ _] true
364
+ case [:list :first] true
365
+ case _ false
366
+
367
+ ; A list whose first element is due decides on that element's first
368
+ ; event, and answers its marker and the text it writes: one whose first
369
+ ; element is a default operator may be an operation and is held; one
370
+ ; whose first element is an object waits for the object, which may
371
+ ; describe an operator; any other is written as it is read, \`[\` first,
372
+ ; unless it is inside a held one.
373
+ def expr-decide [s mode event]
374
+ match [mode event]
375
+ case [:stream (scalar value)]
376
+ match (expr-op value)
377
+ case :none [(expr-mark [:list :stream true] s) "["]
378
+ case _ [(expr-mark [:list :hold []] s) ""]
379
+ case [:stream object-start] [(expr-mark [:list :first] s) ""]
380
+ case [:stream _] [(expr-mark [:list :stream true] s) "["]
381
+ case _ [(expr-mark [:list :hold []] s) ""]
382
+
383
+ ; A value where one is due: a scalar, or a container's start.
384
+ def expr-value [s event]
385
+ match (expr-holding s)
386
+ case true
387
+ match event
388
+ case (scalar value) (expr-hold-value s (expr-scalar-item value))
389
+ case object-start (transition (push [:map :hold [] :key] s) [])
390
+ case array-start (transition (push [:pending :hold] s) [])
391
+ case false
392
+ match event
393
+ case (scalar value) (expr-stream-value s (expr-scalar-text value) :none)
394
+ case object-start (expr-stream-value s "{" [:map :stream true :key])
395
+ case array-start (expr-stream-value s "" [:pending :stream])
396
+
397
+ ; The first element of a list, once the list has decided: what the
398
+ ; decision writes, then what the element does.
399
+ def expr-first [s mode event]
400
+ match (expr-decide s mode event)
401
+ case [s2 lead]
402
+ match (expr-value s2 event)
403
+ case (transition s3 []) (transition s3 [lead])
404
+ case (transition s3 [text]) (transition s3 [(string-join "" [lead text])])
405
+
406
+ ; A container ends; a held one's item is added or written.
407
+ def expr-close [s marker]
408
+ match marker
409
+ case [:pending :stream] (expr-closed (pop s) "[]")
410
+ case [:pending :hold] (expr-held (pop s) ["[]" :atom "[]" :none])
411
+ case [:list :stream _] (expr-closed (pop s) "]")
412
+ case [:list :hold items] (expr-held (pop s) (expr-array items))
413
+
414
+ ; A container written as it was read has ended: its closing text, and
415
+ ; the document's end at the root.
416
+ def expr-closed [s text]
417
+ match (count s)
418
+ case 0 (transition [[:done]] [text "\\n"])
419
+ case _ (transition s [text])
420
+
421
+ def expr-key [s name]
422
+ 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) ":"])
427
+ case [:map :hold parts :key] (transition (expr-mark [:map :hold parts [:value (quoted name)]] s) [])
428
+ case _ (fail :protocol-order "the events hold a key where a value is due, which a tree's never do")
429
+
430
+ def expr-object-end [s]
431
+ match (expr-top s)
432
+ case [:map :stream _ :key] (expr-closed (pop s) "}")
433
+ case [:map :hold parts :key]
434
+ let [text (string-join "" ["{" (string-join "," parts) "}"])]
435
+ expr-held (pop s) [text :atom text (expr-described parts)]
436
+ 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
+
438
+ def expr-array-end [s]
439
+ match (expr-top s)
440
+ case [:pending mode] (expr-close s [:pending mode])
441
+ case [:list mode x] (expr-close s [:list mode x])
442
+ case _ (fail :protocol-order "the events end an array that is not open, which a tree's never do")
443
+
444
+ ; Where a value is due: at the root, in a list, or after a key.
445
+ def expr-due [s event]
446
+ match (expr-top s)
447
+ case :none (expr-value s event)
448
+ case [:pending mode] (expr-first s mode event)
449
+ case [:list _ _] (expr-value s event)
450
+ case [:map :stream :value] (expr-value s event)
451
+ case [:map :hold _ [:value _]] (expr-value s event)
452
+ case _ (fail :protocol-order "the events hold a value where a key is due, which a tree's never do")
453
+
454
+ def expr-step [s event]
455
+ match (expr-top s)
456
+ case [:done] (fail :protocol-order "the events hold more after the root value, which a tree's never do")
457
+ case _
458
+ match event
459
+ case (key name) (expr-key s name)
460
+ case object-end (expr-object-end s)
461
+ case array-end (expr-array-end s)
462
+ case _ (expr-due s event)
463
+
464
+ def expr-finish [s]
465
+ match (expr-top s)
466
+ case [:done] []
467
+ case :none (fail :protocol-order "the events hold no value, where a tree's hold one")
468
+ case _ (fail :protocol-order "the events ended inside a container, which a tree's never do")
469
+
470
+ ; The render: a tree's events in, the expression document's text out.
471
+ def expr-render [input]
472
+ join ""
473
+ scan-emit [] expr-step expr-finish (events input)
474
+ ` })
475
+ });
476
+ function translate() {
477
+ return TRANSLATION;
478
+ }
479
+ //# sourceMappingURL=translate.js.map
@@ -0,0 +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 +1 @@
1
- {"version":"7.0.2","root":["../src/expr.ts"],"packageJsons":["../node_modules/@tabnas/parser/package.json","../package.json"],"missingPackageJsons":["../node_modules/@tabnas/parser/dist/package.json"]}
1
+ {"version":"7.0.2","root":["../src/expr.ts","../src/translate.ts"],"packageJsons":["../node_modules/@tabnas/parser/package.json","../package.json"],"missingPackageJsons":["../node_modules/@tabnas/parser/dist/package.json"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tabnas/expr",
3
- "version": "0.5.15",
3
+ "version": "0.5.16",
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",
@@ -25,7 +25,8 @@
25
25
  "pretest-some": "npm run build",
26
26
  "test-some": "node --enable-source-maps --test-name-pattern=\"$npm_config_pattern\" --test dist-test/**/*.test.js",
27
27
  "watch": "tsc --build src test -w",
28
- "build": "tsc --build src && tsc --build test",
28
+ "embed": "node embed-translate.js",
29
+ "build": "npm run embed && tsc --build src && tsc --build test",
29
30
  "clean": "rm -rf node_modules yarn.lock package-lock.json",
30
31
  "reset": "npm run clean && npm i && npm run build && npm test",
31
32
  "repo-tag": "REPO_VERSION=`node -e \"console.log(require('./package').version)\"` && echo TAG: ts/v$REPO_VERSION && git commit -a -m v$REPO_VERSION && git push && git tag ts/v$REPO_VERSION && git push origin ts/v$REPO_VERSION;",
package/src/expr.ts CHANGED
@@ -1658,4 +1658,9 @@ export type { ExprOptions, OpDef, Op, Evaluate }
1658
1658
  // VERSION is this package's version. It MUST equal package.json "version":
1659
1659
  // the release orchestrator rewrites both, and the version test fails the
1660
1660
  // build if they drift. Mirrors `const VERSION` in go/expr.go.
1661
- const VERSION = '0.5.15'
1661
+ const VERSION = '0.5.16'
1662
+
1663
+ // The translation parts a host composes a translation from (admin ADR-27):
1664
+ // the manifest and the alchemy sources, generated by ../embed-translate.js.
1665
+ export { translate } from './translate'
1666
+ export type { TranslationPart, TranslationParts } from './translate'
@@ -0,0 +1,501 @@
1
+ /* Copyright (c) 2021-2026 Richard Rodger, MIT License */
2
+
3
+ // Generated by ../embed-translate.js. Edit tabnas.plugin.json or alchemy/*,
4
+ // then run npm run embed.
5
+
6
+ type TranslationPart = Readonly<{
7
+ entry: string
8
+ source?: string
9
+ }>
10
+
11
+ type TranslationParts = Readonly<{
12
+ manifest: string
13
+ lift?: TranslationPart
14
+ embed?: TranslationPart
15
+ render?: TranslationPart
16
+ }>
17
+
18
+ const TRANSLATION: TranslationParts = Object.freeze({
19
+ manifest: `{
20
+ "$schema": "https://tabnas.dev/schema/plugin.schema.json",
21
+ "name": "@tabnas/expr",
22
+ "go": "github.com/tabnas/expr/go",
23
+ "rust": "tabnas-expr",
24
+ "description": "Expression syntax with operators and precedence for the tabnas engine.",
25
+ "base": "@tabnas/jsonic",
26
+ "engine": "@tabnas/parser",
27
+ "languageId": "expr",
28
+ "pluginKind": "grammar",
29
+ "specDir": "test/spec",
30
+ "clib": {
31
+ "dir": "go/clib",
32
+ "library": "libtabnasexpr",
33
+ "abi": "v1",
34
+ "errorCodes": [
35
+ "usage",
36
+ "grammar",
37
+ "handle",
38
+ "internal"
39
+ ]
40
+ },
41
+ "errorCodes": [],
42
+ "docs": "https://tabnas.dev/docs/packages",
43
+ "repository": "https://github.com/tabnas/expr",
44
+ "versionSource": "ts/package.json",
45
+ "translate": {
46
+ "reads": "tree",
47
+ "writes": "tree",
48
+ "root": "any",
49
+ "schema": "expr",
50
+ "embed": "alchemy/embed.alc",
51
+ "render": "alchemy/render.alc",
52
+ "loss": [
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
+ "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.",
56
+ "A negative number is written with its sign, which reads back as the operator - applied to the number's magnitude.",
57
+ "A number that is not finite is written as the string Infinity, -Infinity or NaN."
58
+ ]
59
+ }
60
+ }
61
+ `,
62
+ embed: Object.freeze({ entry: "expr-embed", source: `; Expressions' embedding: a plain tree as an expression document's tree,
63
+ ; and back again. This is a library of definitions, each named
64
+ ; \`expr-...\`, which a host links with its own program and with the render
65
+ ; (alchemy's \`compile_sources\`). It has two entry points: \`expr-embed\`
66
+ ; takes a plain tree's events to an expression tree's, and \`expr-unembed\`,
67
+ ; its reverse, takes them back. Nothing else here is the host's to call.
68
+ ;
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
71
+ ; element is a default operator and whose count makes an operation is
72
+ ; one, and the render writes it in infix, the operator being its source
73
+ ; text (\`+\`, \`-\`, \`*\`, \`/\`, \`%\`, or \`(\` for a group) or an object that
74
+ ; describes it, whose \`src\` member is that text, as the reader's own
75
+ ; value carries it; every other value is a value of jsonic's, which the
76
+ ; render writes as jsonic. A list that only looks like an operation
77
+ ; reads back as the same tree either way, once each operator is reduced
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.
84
+
85
+ ; The embedding: a plain tree's events in, the same events out.
86
+ def expr-embed [input]
87
+ input
88
+
89
+ ; The reverse: an expression tree's events in, the same events out.
90
+ def expr-unembed [input]
91
+ input
92
+ ` }),
93
+ render: Object.freeze({ entry: "expr-render", source: `; Expressions' render: a tree's events written as an expression document,
94
+ ; jsonic text with the plugin's default operators. This is a library of
95
+ ; definitions, each named \`expr-...\`, which a host links with its own
96
+ ; program (alchemy's \`compile_sources\`); its entry point is \`expr-render\`,
97
+ ; and nothing else here is the host's to call.
98
+ ;
99
+ ; The tree is the one the reader builds with its default options:
100
+ ; jsonic's values, in which an operation is a list whose first element is
101
+ ; its operator and whose other elements are its terms. The reader's own
102
+ ; value puts the operator's description there, an object whose \`src\`
103
+ ; member is the operator's source text (TypeScript's parse, and Rust's
104
+ ; once realized, give it so); the shared fixtures' simplifier, Go's
105
+ ; \`Simplify\` and Rust's \`simplify\` reduce each description to that text,
106
+ ; \`+\`, \`-\`, \`*\`, \`/\` or \`%\` (\`1+2*3\` is \`["+", 1, ["*", 2, 3]]\`, \`-1\` is
107
+ ; \`["-", 1]\`) or \`(\` for a group (\`(1)\` is \`["(", 1]\`, \`()\` is \`["("]\`).
108
+ ; The render reads both: the first element of a list is the operator its
109
+ ; text is, or the operator an object describes, read by its \`src\` member
110
+ ; as those simplifiers read it, when that is a default operator's source.
111
+ ;
112
+ ; Every value is written so that the reader builds the same tree from it:
113
+ ;
114
+ ; - An operation is written in infix: \`a+b\` for a list of an infix
115
+ ; operator and two terms, \`-a\` or \`+a\` for a list of \`-\` or \`+\` and one
116
+ ; term, \`(a)\` for a group and \`()\` for an empty one. The default
117
+ ; operators' binding powers decide where a term needs grouping: \`*\`,
118
+ ; \`/\` and \`%\` bind tighter than \`+\` and \`-\`, every infix operator binds
119
+ ; to the left, and a prefix operator binds tighter than any infix one.
120
+ ; Parentheses would read back as a group, a list \`["(", ...]\`, so a
121
+ ; term that needs grouping (\`["+", 1, 2]\` under \`*\`, or on the right of
122
+ ; \`-\`) is written as a list instead, \`["+",1,2]*3\`, which the reader
123
+ ; builds as the same list.
124
+ ; - Any other list, one whose first element is no operator or which has
125
+ ; another number of terms (\`["*", 1]\`, \`["+", 1, 2, 3]\`), is written as
126
+ ; a list, \`[a,b]\`, each element in infix where it is an operation.
127
+ ; - An object is written \`{"k":v}\`, every key quoted.
128
+ ; - A string is quoted (JSON's escapes, which jsonic reads), so a word is
129
+ ; written \`"a"\`; a number by its lexeme, or as JSON writes it; a
130
+ ; boolean and null by their names. A negative number is written with
131
+ ; its sign, which the reader reads as the operator \`-\` applied to the
132
+ ; number's magnitude, and a number that is not finite, which jsonic
133
+ ; has no spelling for, as the string \`Infinity\`, \`-Infinity\` or \`NaN\`.
134
+ ;
135
+ ; No white space is written, since jsonic reads a space between two
136
+ ; values as an implicit list, and the document ends with one line break.
137
+ ;
138
+ ; Whether a list is written as an operation is known from its first
139
+ ; element and its count, so a list whose first element is a default
140
+ ; operator is held until it ends, its elements' texts with it, and then
141
+ ; written. A list whose first element is an object is held until that
142
+ ; object ends, since the object may describe an operator: if it does, the
143
+ ; list is held to its end as an operation is, and if not, the list is
144
+ ; written as it is read from then on. Every other list, and every object,
145
+ ; is written as it is read, one element at a time, so a document's own
146
+ ; lists and objects stream and only its operations, and the first object
147
+ ; of a list, are held. Events no tree has fail with PROTOCOL_ORDER_ERROR.
148
+ ;
149
+ ; The state is a stack of markers, one for each container the render is
150
+ ; inside:
151
+ ;
152
+ ; [:pending mode] a list whose first element is due, which
153
+ ; decides how it is written; mode is
154
+ ; :stream where it is written as it is
155
+ ; read and :hold inside a held list
156
+ ; [:list :first] a list whose first element, an object,
157
+ ; is being held, which decides how the
158
+ ; list is written
159
+ ; [:list :stream first] a list written as it is read; first
160
+ ; until an element is written
161
+ ; [: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
165
+ ; [:map :hold parts :key] an object inside a held list, or the
166
+ ; first element of a list, and its
167
+ ; members' texts
168
+ ; [:map :hold parts [:value k]] the same, the value of the key k due
169
+ ;
170
+ ; An item is \`[text class list head]\`: the text a value is written as;
171
+ ; its class, \`:infix2\` for an operation of \`+\` or \`-\`, \`:infix3\` for one
172
+ ; of \`*\`, \`/\` or \`%\`, and \`:atom\` for any other value, which binds as
173
+ ; tightly as a term can; the text of the value as a list, for a term that
174
+ ; needs grouping; and the operator a string is or an object describes, or
175
+ ; \`:none\`. A list's first item that is an operator is held as the
176
+ ; operator's text, so a description is written as its source, as the
177
+ ; simplifiers reduce it, wherever its list is written. Once the root
178
+ ; value is written the state is \`[:done]\`, and nothing may follow it.
179
+
180
+ ; The operator a value is, when it is the source of a default one.
181
+ def expr-op [value]
182
+ match (kind value)
183
+ case :string
184
+ match value
185
+ case "+" value
186
+ case "-" value
187
+ case "*" value
188
+ case "/" value
189
+ case "%" value
190
+ case "(" value
191
+ case _ :none
192
+ case _ :none
193
+
194
+ ; The operator a held object's member describes: the default operator a
195
+ ; \`src\` member's text names, or :none for any other member.
196
+ def expr-src-op [part]
197
+ match part
198
+ case "\\"src\\":\\"+\\"" "+"
199
+ case "\\"src\\":\\"-\\"" "-"
200
+ case "\\"src\\":\\"*\\"" "*"
201
+ case "\\"src\\":\\"/\\"" "/"
202
+ case "\\"src\\":\\"%\\"" "%"
203
+ case "\\"src\\":\\"(\\"" "("
204
+ case _ :none
205
+
206
+ def expr-is-op [op]
207
+ match op
208
+ case :none false
209
+ case _ true
210
+
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)
217
+ case 0 :none
218
+ case _ (top ops)
219
+
220
+ ; An item as its list holds it: the first one, where it is an operator,
221
+ ; as that operator's text, so that a description is written as the
222
+ ; source it describes; any other as it is.
223
+ def expr-lead [items item]
224
+ match (count items)
225
+ case 0
226
+ match item
227
+ case [_ _ _ :none] item
228
+ case [_ _ _ op] (expr-scalar-item op)
229
+ case _ item
230
+
231
+ ; An infix operator's class.
232
+ def expr-level [op]
233
+ match op
234
+ case "+" :infix2
235
+ case "-" :infix2
236
+ case _ :infix3
237
+
238
+ ; A number: its lexeme, or as JSON writes it; one that is not finite as
239
+ ; a string.
240
+ def expr-number [value]
241
+ match (number-class value)
242
+ case :finite (scalar-text csv-options value)
243
+ case :infinity (quoted "Infinity")
244
+ case :negative-infinity (quoted "-Infinity")
245
+ case :nan (quoted "NaN")
246
+
247
+ def expr-scalar-text [value]
248
+ match (kind value)
249
+ case :string (quoted value)
250
+ case :number (expr-number value)
251
+ case :boolean (scalar-text csv-options value)
252
+ case :null "null"
253
+
254
+ def expr-scalar-item [value]
255
+ let [text (expr-scalar-text value)]
256
+ [text :atom text (expr-op value)]
257
+
258
+ def expr-text [item]
259
+ match item
260
+ case [text _ _ _] text
261
+
262
+ ; A held list's elements written as a list.
263
+ def expr-list [items]
264
+ string-join "" ["[" (string-join "," (map expr-text items)) "]"]
265
+
266
+ ; A left term of an infix operator of the class given: an operation that
267
+ ; binds as tightly or more, or the term as a list.
268
+ def expr-left [item level]
269
+ match item
270
+ case [text :atom _ _] text
271
+ case [text :infix3 _ _] text
272
+ case [text :infix2 list _]
273
+ match level
274
+ case :infix2 text
275
+ case _ list
276
+
277
+ ; A right term: an operation that binds more tightly, or the term as a
278
+ ; list.
279
+ def expr-right [item level]
280
+ match item
281
+ case [text :atom _ _] text
282
+ case [text :infix3 list _]
283
+ match level
284
+ case :infix2 text
285
+ case _ list
286
+ case [_ :infix2 list _] list
287
+
288
+ ; A prefix operator's term: one that binds as tightly, or the term as a
289
+ ; list.
290
+ def expr-term [item]
291
+ match item
292
+ case [text :atom _ _] text
293
+ case [_ _ list _] list
294
+
295
+ ; An infix operation, when the first element is an infix operator.
296
+ def expr-infix [op a b list]
297
+ match op
298
+ case :none [list :atom list :none]
299
+ case "(" [list :atom list :none]
300
+ case _
301
+ let [level (expr-level op)]
302
+ [(string-join "" [(expr-left a level) op (expr-right b level)]) level list :none]
303
+
304
+ ; A held list, ended: an operation where its first element and its count
305
+ ; make one, and a list otherwise.
306
+ def expr-array [items]
307
+ let [list (expr-list items)]
308
+ match items
309
+ case [[_ _ _ "("]] ["()" :atom list :none]
310
+ case [[_ _ _ "("] x] [(string-join "" ["(" (expr-text x) ")"]) :atom list :none]
311
+ case [[_ _ _ "+"] x] [(string-join "" ["+" (expr-term x)]) :atom list :none]
312
+ case [[_ _ _ "-"] x] [(string-join "" ["-" (expr-term x)]) :atom list :none]
313
+ case [[_ _ _ op] a b] (expr-infix op a b list)
314
+ case _ [list :atom list :none]
315
+
316
+ ; The top marker, or :none before the root value.
317
+ def expr-top [s]
318
+ match (count s)
319
+ case 0 :none
320
+ case _ (top s)
321
+
322
+ def expr-mark [marker s]
323
+ push marker (pop s)
324
+
325
+ ; A value written where it is read: at the root, which then is done, in
326
+ ; a list written as it is read, after a comma unless it is the first,
327
+ ; or as an object's member, whose next key is then due. \`text\` is what
328
+ ; the value writes now, and \`inner\` the marker it opens, or :none.
329
+ def expr-stream-value [s text inner]
330
+ match (expr-top s)
331
+ 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])
337
+
338
+ def expr-push-or-done [s inner out]
339
+ match inner
340
+ case :none
341
+ match (count s)
342
+ case 0 (transition [[:done]] (push "\\n" out))
343
+ case _ (transition s out)
344
+ case _ (transition (push inner s) out)
345
+
346
+ ; A value completed inside a held list or object: its item is added.
347
+ def expr-hold-value [s item]
348
+ match (expr-top s)
349
+ case [:list :hold items] (transition (expr-mark [:list :hold (push (expr-lead items item) items)] s) [])
350
+ case [:map :hold parts [:value k]] (transition (expr-mark [:map :hold (push (string-join "" [k ":" (expr-text item)]) parts) :key] s) [])
351
+
352
+ ; A held value has ended: it is added to the held container around it,
353
+ ; decides the list it is the first element of, or is written where
354
+ ; values are written as they are read, where what led it (a comma, a
355
+ ; key) was written when it began.
356
+ def expr-held [s item]
357
+ match (expr-top s)
358
+ case [:list :hold _] (expr-hold-value s item)
359
+ case [:map :hold _ _] (expr-hold-value s item)
360
+ case [:list :first] (expr-first-held s item)
361
+ case _ (expr-closed s (expr-text item))
362
+
363
+ ; A list whose first element, an object, has ended: one that describes
364
+ ; an operator makes the list an operation, held as one whose first
365
+ ; element is that operator's text is; any other is written, the list's
366
+ ; \`[\` first, and the rest of the list as it is read.
367
+ def expr-first-held [s item]
368
+ match item
369
+ case [text _ _ :none] (transition (expr-mark [:list :stream false] s) ["[" text])
370
+ case _ (transition (expr-mark [:list :hold [(expr-lead [] item)]] s) [])
371
+
372
+ ; Whether the top of the stack holds what is read.
373
+ def expr-holding [s]
374
+ match (expr-top s)
375
+ case [:list :hold _] true
376
+ case [:map :hold _ _] true
377
+ case [:list :first] true
378
+ case _ false
379
+
380
+ ; A list whose first element is due decides on that element's first
381
+ ; event, and answers its marker and the text it writes: one whose first
382
+ ; element is a default operator may be an operation and is held; one
383
+ ; whose first element is an object waits for the object, which may
384
+ ; describe an operator; any other is written as it is read, \`[\` first,
385
+ ; unless it is inside a held one.
386
+ def expr-decide [s mode event]
387
+ match [mode event]
388
+ case [:stream (scalar value)]
389
+ match (expr-op value)
390
+ case :none [(expr-mark [:list :stream true] s) "["]
391
+ case _ [(expr-mark [:list :hold []] s) ""]
392
+ case [:stream object-start] [(expr-mark [:list :first] s) ""]
393
+ case [:stream _] [(expr-mark [:list :stream true] s) "["]
394
+ case _ [(expr-mark [:list :hold []] s) ""]
395
+
396
+ ; A value where one is due: a scalar, or a container's start.
397
+ def expr-value [s event]
398
+ match (expr-holding s)
399
+ case true
400
+ match event
401
+ case (scalar value) (expr-hold-value s (expr-scalar-item value))
402
+ case object-start (transition (push [:map :hold [] :key] s) [])
403
+ case array-start (transition (push [:pending :hold] s) [])
404
+ case false
405
+ match event
406
+ case (scalar value) (expr-stream-value s (expr-scalar-text value) :none)
407
+ case object-start (expr-stream-value s "{" [:map :stream true :key])
408
+ case array-start (expr-stream-value s "" [:pending :stream])
409
+
410
+ ; The first element of a list, once the list has decided: what the
411
+ ; decision writes, then what the element does.
412
+ def expr-first [s mode event]
413
+ match (expr-decide s mode event)
414
+ case [s2 lead]
415
+ match (expr-value s2 event)
416
+ case (transition s3 []) (transition s3 [lead])
417
+ case (transition s3 [text]) (transition s3 [(string-join "" [lead text])])
418
+
419
+ ; A container ends; a held one's item is added or written.
420
+ def expr-close [s marker]
421
+ match marker
422
+ case [:pending :stream] (expr-closed (pop s) "[]")
423
+ case [:pending :hold] (expr-held (pop s) ["[]" :atom "[]" :none])
424
+ case [:list :stream _] (expr-closed (pop s) "]")
425
+ case [:list :hold items] (expr-held (pop s) (expr-array items))
426
+
427
+ ; A container written as it was read has ended: its closing text, and
428
+ ; the document's end at the root.
429
+ def expr-closed [s text]
430
+ match (count s)
431
+ case 0 (transition [[:done]] [text "\\n"])
432
+ case _ (transition s [text])
433
+
434
+ def expr-key [s name]
435
+ 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) ":"])
440
+ case [:map :hold parts :key] (transition (expr-mark [:map :hold parts [:value (quoted name)]] s) [])
441
+ case _ (fail :protocol-order "the events hold a key where a value is due, which a tree's never do")
442
+
443
+ def expr-object-end [s]
444
+ match (expr-top s)
445
+ case [:map :stream _ :key] (expr-closed (pop s) "}")
446
+ case [:map :hold parts :key]
447
+ let [text (string-join "" ["{" (string-join "," parts) "}"])]
448
+ expr-held (pop s) [text :atom text (expr-described parts)]
449
+ 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
+
451
+ def expr-array-end [s]
452
+ match (expr-top s)
453
+ case [:pending mode] (expr-close s [:pending mode])
454
+ case [:list mode x] (expr-close s [:list mode x])
455
+ case _ (fail :protocol-order "the events end an array that is not open, which a tree's never do")
456
+
457
+ ; Where a value is due: at the root, in a list, or after a key.
458
+ def expr-due [s event]
459
+ match (expr-top s)
460
+ case :none (expr-value s event)
461
+ case [:pending mode] (expr-first s mode event)
462
+ case [:list _ _] (expr-value s event)
463
+ case [:map :stream :value] (expr-value s event)
464
+ case [:map :hold _ [:value _]] (expr-value s event)
465
+ case _ (fail :protocol-order "the events hold a value where a key is due, which a tree's never do")
466
+
467
+ def expr-step [s event]
468
+ match (expr-top s)
469
+ case [:done] (fail :protocol-order "the events hold more after the root value, which a tree's never do")
470
+ case _
471
+ match event
472
+ case (key name) (expr-key s name)
473
+ case object-end (expr-object-end s)
474
+ case array-end (expr-array-end s)
475
+ case _ (expr-due s event)
476
+
477
+ def expr-finish [s]
478
+ match (expr-top s)
479
+ case [:done] []
480
+ case :none (fail :protocol-order "the events hold no value, where a tree's hold one")
481
+ case _ (fail :protocol-order "the events ended inside a container, which a tree's never do")
482
+
483
+ ; The render: a tree's events in, the expression document's text out.
484
+ def expr-render [input]
485
+ join ""
486
+ scan-emit [] expr-step expr-finish (events input)
487
+ ` })
488
+ })
489
+
490
+ function translate (): TranslationParts | undefined {
491
+ return TRANSLATION
492
+ }
493
+
494
+ export {
495
+ translate,
496
+ }
497
+
498
+ export type {
499
+ TranslationPart,
500
+ TranslationParts,
501
+ }