hclang 0.1.0 → 0.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/README.md +25 -3
  2. package/lib/src/cli/hc.js +40 -0
  3. package/lib/src/cli/runfile.js +28 -0
  4. package/lib/src/execute/eval-pipe.js +15 -0
  5. package/lib/src/execute/evaluate.js +10 -0
  6. package/lib/src/execute/execute.js +18 -0
  7. package/lib/src/execute/frame-space.js +17 -0
  8. package/lib/src/execute/hc-eval.js +105 -0
  9. package/lib/src/execute/hc-log.js +39 -0
  10. package/lib/src/execute/hc-test.js +43 -0
  11. package/lib/src/execute/lex-bytes.js +42 -0
  12. package/lib/src/execute/lex-pipe.js +56 -0
  13. package/lib/src/execute/lex.js +110 -0
  14. package/lib/src/execute/lexer.js +24 -0
  15. package/lib/src/execute/parse-pipe.js +52 -0
  16. package/lib/src/execute/syntax.js +36 -0
  17. package/lib/src/execute/terminals.js +54 -0
  18. package/lib/src/execute.js +3 -0
  19. package/lib/src/frames/frame-alias.js +45 -0
  20. package/lib/src/frames/frame-arg.js +62 -0
  21. package/lib/src/frames/frame-array.js +47 -0
  22. package/lib/src/frames/frame-atom.js +41 -0
  23. package/lib/src/frames/frame-blob.js +104 -0
  24. package/lib/src/frames/frame-bytes.js +31 -0
  25. package/lib/src/frames/frame-comment.js +28 -0
  26. package/lib/src/frames/frame-doc.js +19 -0
  27. package/lib/src/frames/frame-expr.js +34 -0
  28. package/lib/src/frames/frame-group.js +31 -0
  29. package/lib/src/frames/frame-lazy.js +39 -0
  30. package/lib/src/frames/frame-list.js +58 -0
  31. package/lib/src/frames/frame-name.js +29 -0
  32. package/lib/src/frames/frame-note.js +104 -0
  33. package/lib/src/frames/frame-number.js +28 -0
  34. package/lib/src/frames/frame-schema.js +47 -0
  35. package/lib/src/frames/frame-string.js +41 -0
  36. package/lib/src/frames/frame-symbol.js +75 -0
  37. package/lib/src/frames/frame.js +75 -0
  38. package/lib/src/frames/meta-frame.js +99 -0
  39. package/lib/src/frames.js +24 -0
  40. package/lib/src/index.js +5 -0
  41. package/lib/src/maml/tag.js +17 -0
  42. package/lib/src/maml.js +26 -0
  43. package/lib/src/ops/conditionals.js +14 -0
  44. package/lib/src/ops/frame-curry.js +17 -0
  45. package/lib/src/ops/frame-ops.js +24 -0
  46. package/lib/src/ops/iterators.js +28 -0
  47. package/lib/src/ops.js +12 -0
  48. package/lib/src/version.js +3 -0
  49. package/lib/test/execute/eval-pipe-spec.js +45 -0
  50. package/lib/test/execute/evaluate-spec.js +76 -0
  51. package/lib/test/execute/execute-spec.js +115 -0
  52. package/lib/test/execute/hc-eval-spec.js +68 -0
  53. package/lib/test/execute/hc-test-spec.js +47 -0
  54. package/lib/test/execute/lex-pipe-spec.js +25 -0
  55. package/lib/test/execute/parse-spec.js +67 -0
  56. package/lib/test/execute/script-spec.js +29 -0
  57. package/lib/test/frames/frame-alias-spec.js +36 -0
  58. package/lib/test/frames/frame-arg-spec.js +57 -0
  59. package/lib/test/frames/frame-array-spec.js +54 -0
  60. package/lib/test/frames/frame-blob-spec.js +56 -0
  61. package/lib/test/frames/frame-bytes-spec.js +16 -0
  62. package/lib/test/frames/frame-comment-spec.js +17 -0
  63. package/lib/test/frames/frame-doc-spec.js +17 -0
  64. package/lib/test/frames/frame-expr-spec.js +60 -0
  65. package/lib/test/frames/frame-group-spec.js +27 -0
  66. package/lib/test/frames/frame-lazy-spec.js +49 -0
  67. package/lib/test/frames/frame-name-spec.js +26 -0
  68. package/lib/test/frames/frame-note-spec.js +48 -0
  69. package/lib/test/frames/frame-number-spec.js +17 -0
  70. package/lib/test/frames/frame-schema-spec.js +54 -0
  71. package/lib/test/frames/frame-spec.js +31 -0
  72. package/lib/test/frames/frame-string-spec.js +43 -0
  73. package/lib/test/frames/frame-symbol-spec.js +64 -0
  74. package/lib/test/frames/meta-frame-spec.js +75 -0
  75. package/lib/test/maml/maml-spec.js +42 -0
  76. package/lib/test/maml/tag-spec.js +53 -0
  77. package/lib/test/ops/iterators-spec.js +70 -0
  78. package/package.json +60 -34
  79. package/lib/bin.d.ts +0 -0
  80. package/lib/bin.js +0 -6
  81. package/lib/execute/actions.d.ts +0 -13
  82. package/lib/execute/actions.js +0 -48
  83. package/lib/execute/eval-pipe.d.ts +0 -5
  84. package/lib/execute/eval-pipe.js +0 -32
  85. package/lib/execute/evaluate.d.ts +0 -2
  86. package/lib/execute/evaluate.js +0 -20
  87. package/lib/execute/frame-space.d.ts +0 -7
  88. package/lib/execute/frame-space.js +0 -32
  89. package/lib/execute/group-pipe.d.ts +0 -6
  90. package/lib/execute/group-pipe.js +0 -27
  91. package/lib/execute/lex-pipe.d.ts +0 -12
  92. package/lib/execute/lex-pipe.js +0 -55
  93. package/lib/execute/lex.d.ts +0 -26
  94. package/lib/execute/lex.js +0 -94
  95. package/lib/execute/lexer.d.ts +0 -9
  96. package/lib/execute/lexer.js +0 -55
  97. package/lib/execute/parse-pipe.d.ts +0 -8
  98. package/lib/execute/parse-pipe.js +0 -49
  99. package/lib/execute/parser.d.ts +0 -8
  100. package/lib/execute/parser.js +0 -49
  101. package/lib/execute/syntax.d.ts +0 -2
  102. package/lib/execute/syntax.js +0 -23
  103. package/lib/execute/terminals.d.ts +0 -10
  104. package/lib/execute/terminals.js +0 -48
  105. package/lib/execute.d.ts +0 -1
  106. package/lib/execute.js +0 -9
  107. package/lib/frames/frame-arg.d.ts +0 -24
  108. package/lib/frames/frame-arg.js +0 -81
  109. package/lib/frames/frame-array.d.ts +0 -15
  110. package/lib/frames/frame-array.js +0 -50
  111. package/lib/frames/frame-atom.d.ts +0 -17
  112. package/lib/frames/frame-atom.js +0 -52
  113. package/lib/frames/frame-comment.d.ts +0 -12
  114. package/lib/frames/frame-comment.js +0 -36
  115. package/lib/frames/frame-doc.d.ts +0 -9
  116. package/lib/frames/frame-doc.js +0 -31
  117. package/lib/frames/frame-expr.d.ts +0 -9
  118. package/lib/frames/frame-expr.js +0 -48
  119. package/lib/frames/frame-group.d.ts +0 -7
  120. package/lib/frames/frame-group.js +0 -39
  121. package/lib/frames/frame-lazy.d.ts +0 -13
  122. package/lib/frames/frame-lazy.js +0 -54
  123. package/lib/frames/frame-list.d.ts +0 -15
  124. package/lib/frames/frame-list.js +0 -51
  125. package/lib/frames/frame-name.d.ts +0 -12
  126. package/lib/frames/frame-name.js +0 -37
  127. package/lib/frames/frame-number.d.ts +0 -9
  128. package/lib/frames/frame-number.js +0 -31
  129. package/lib/frames/frame-string.d.ts +0 -14
  130. package/lib/frames/frame-string.js +0 -47
  131. package/lib/frames/frame-symbol.d.ts +0 -18
  132. package/lib/frames/frame-symbol.js +0 -64
  133. package/lib/frames/frame.d.ts +0 -22
  134. package/lib/frames/frame.js +0 -73
  135. package/lib/frames/meta-frame.d.ts +0 -26
  136. package/lib/frames/meta-frame.js +0 -85
  137. package/lib/frames.d.ts +0 -15
  138. package/lib/frames.js +0 -36
  139. package/lib/hc.d.ts +0 -0
  140. package/lib/hc.js +0 -13
  141. package/lib/index.d.ts +0 -3
  142. package/lib/index.js +0 -9
  143. package/lib/maml/tag.d.ts +0 -2
  144. package/lib/maml/tag.js +0 -19
  145. package/lib/maml.d.ts +0 -2
  146. package/lib/maml.js +0 -30
  147. package/lib/ops/frame-curry.d.ts +0 -9
  148. package/lib/ops/frame-curry.js +0 -31
  149. package/lib/ops/frame-ops.d.ts +0 -12
  150. package/lib/ops/frame-ops.js +0 -41
  151. package/lib/ops/iterators.d.ts +0 -2
  152. package/lib/ops/iterators.js +0 -12
  153. package/lib/ops.d.ts +0 -3
  154. package/lib/ops.js +0 -8
@@ -0,0 +1,52 @@
1
+ import { Frame, FrameArray, FrameExpr } from '../frames.js';
2
+ import { Terminal } from './terminals.js';
3
+ export class ParsePipe extends FrameArray {
4
+ constructor(out, factory) {
5
+ const meta = {};
6
+ meta[ParsePipe.kOUT] = out;
7
+ meta[Frame.kEND] = Terminal.end();
8
+ super([], meta);
9
+ this.Factory = factory;
10
+ this.collector = [];
11
+ }
12
+ next(statement = false) {
13
+ if (this.length() === 0) {
14
+ return this;
15
+ }
16
+ const term = this.asArray();
17
+ const expr = new FrameExpr(term);
18
+ if (statement) {
19
+ expr.is.statement = true;
20
+ }
21
+ this.collector.push(expr);
22
+ this.reset();
23
+ return this;
24
+ }
25
+ push(Factory) {
26
+ const child = new ParsePipe(this, Factory);
27
+ return child;
28
+ }
29
+ pop(Factory) {
30
+ const parent = this.get(ParsePipe.kOUT);
31
+ if (parent.Factory !== Factory) {
32
+ // const msg = [' open:', parent.Factory, ' close:', Factory]
33
+ console.error('pop.mismatched-brackets'); // + msg.join('')
34
+ }
35
+ this.finish(Frame.nil);
36
+ return parent;
37
+ }
38
+ finish(terminal) {
39
+ this.next();
40
+ const out = this.get(Frame.kOUT);
41
+ const value = this.makeFrame();
42
+ const result = out.call(value);
43
+ out.call(terminal);
44
+ return result;
45
+ }
46
+ makeFrame() {
47
+ const group = new this.Factory(this.collector);
48
+ this.collector = [];
49
+ return group;
50
+ }
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtcGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9leGVjdXRlL3BhcnNlLXBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3BFLE9BQU8sRUFBVyxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVsRCxNQUFNLE9BQU8sU0FBVSxTQUFRLFVBQVU7SUFJdkMsWUFBYSxHQUFVLEVBQUUsT0FBWTtRQUNuQyxNQUFNLElBQUksR0FBWSxFQUFFLENBQUE7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUE7UUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUE7UUFDakMsS0FBSyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFBO0lBQ3JCLENBQUM7SUFFTSxJQUFJLENBQUUsWUFBcUIsS0FBSztRQUNyQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUE7U0FDWjtRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUMzQixNQUFNLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNoQyxJQUFJLFNBQVMsRUFBRTtZQUNiLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQTtTQUN6QjtRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUNaLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVNLElBQUksQ0FBRSxPQUFZO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUMxQyxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFFTSxHQUFHLENBQUUsT0FBWTtRQUN0QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQWMsQ0FBQTtRQUNwRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssT0FBTyxFQUFFO1lBQzlCLDZEQUE2RDtZQUM3RCxPQUFPLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUEsQ0FBQSxpQkFBaUI7U0FDMUQ7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN0QixPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFFTSxNQUFNLENBQUUsUUFBYTtRQUMxQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDWCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7UUFDOUIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUM5QixHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ2xCLE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUVTLFNBQVM7UUFDakIsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQTtRQUNuQixPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7Q0FDRiJ9
@@ -0,0 +1,36 @@
1
+ import * as frame from '../frames.js';
2
+ import { FrameSpace } from './frame-space.js';
3
+ import { Lex } from './lex.js';
4
+ import { terminals } from './terminals.js';
5
+ export const _syntax = Object.assign({}, terminals);
6
+ export const atomClasses = [
7
+ FrameSpace,
8
+ frame.FrameAlias,
9
+ frame.FrameArg,
10
+ frame.FrameBlob,
11
+ frame.FrameBytes,
12
+ frame.FrameComment,
13
+ frame.FrameDoc,
14
+ frame.FrameName,
15
+ frame.FrameNote,
16
+ frame.FrameNumber,
17
+ frame.FrameOperator,
18
+ frame.FrameString,
19
+ frame.FrameSymbol
20
+ ];
21
+ let has_syntax = false;
22
+ export function getSyntax() {
23
+ if (has_syntax === true) {
24
+ return _syntax;
25
+ }
26
+ has_syntax = true;
27
+ atomClasses.forEach((Klass) => {
28
+ const sample = new Klass('');
29
+ const key = sample.string_start();
30
+ const lexee = new Lex(Klass);
31
+ _syntax[key] = lexee;
32
+ return true;
33
+ });
34
+ return _syntax;
35
+ }
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ludGF4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2V4ZWN1dGUvc3ludGF4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUUxQyxNQUFNLENBQUMsTUFBTSxPQUFPLHFCQUF1QixTQUFTLENBQUUsQ0FBQTtBQUV0RCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQWlCO0lBQ3ZDLFVBQVU7SUFDVixLQUFLLENBQUMsVUFBVTtJQUNoQixLQUFLLENBQUMsUUFBUTtJQUNkLEtBQUssQ0FBQyxTQUFTO0lBQ2YsS0FBSyxDQUFDLFVBQVU7SUFDaEIsS0FBSyxDQUFDLFlBQVk7SUFDbEIsS0FBSyxDQUFDLFFBQVE7SUFDZCxLQUFLLENBQUMsU0FBUztJQUNmLEtBQUssQ0FBQyxTQUFTO0lBQ2YsS0FBSyxDQUFDLFdBQVc7SUFDakIsS0FBSyxDQUFDLGFBQWE7SUFDbkIsS0FBSyxDQUFDLFdBQVc7SUFDakIsS0FBSyxDQUFDLFdBQVc7Q0FDbEIsQ0FBQTtBQUVELElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQTtBQUN0QixNQUFNLFVBQVUsU0FBUztJQUN2QixJQUFJLFVBQVUsS0FBSyxJQUFJLEVBQUU7UUFDdkIsT0FBTyxPQUFPLENBQUE7S0FDZjtJQUNELFVBQVUsR0FBRyxJQUFJLENBQUE7SUFDakIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO1FBQ2pDLE1BQU0sTUFBTSxHQUFvQixJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUM3QyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDakMsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQTtRQUNwQixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUMsQ0FBQyxDQUFBO0lBQ0YsT0FBTyxPQUFPLENBQUE7QUFDaEIsQ0FBQyJ9
@@ -0,0 +1,54 @@
1
+ import { Frame, FrameArray, FrameGroup, FrameLazy, FrameNote, FrameSchema, FrameSymbol, NilContext } from '../frames.js';
2
+ const terminate = (pipe, parameter) => {
3
+ if ('finish' in pipe && pipe.finish instanceof Function) {
4
+ return pipe.finish(parameter);
5
+ }
6
+ const note = FrameNote.key(pipe.id, pipe);
7
+ // console.error("terminate", pipe);
8
+ return note;
9
+ };
10
+ export class Terminal extends Frame {
11
+ static end() {
12
+ return new Terminal(terminate);
13
+ }
14
+ ;
15
+ constructor(data) {
16
+ super(NilContext);
17
+ this.data = data;
18
+ this.is.immediate = true;
19
+ }
20
+ apply(argument, parameter) {
21
+ return this.data(argument, parameter);
22
+ }
23
+ toData() {
24
+ return this.data;
25
+ }
26
+ }
27
+ export const terminals = {};
28
+ const perform = (actions) => {
29
+ return (source, _parameter) => {
30
+ const performer = source;
31
+ return performer.perform(actions);
32
+ };
33
+ };
34
+ const addTerminal = (char, key) => {
35
+ const action = {};
36
+ action[key] = FrameSymbol.for(char);
37
+ terminals[char] = new Terminal(perform(action));
38
+ };
39
+ function addGroup(Grouper) {
40
+ const sample = new Grouper([], NilContext);
41
+ const open = sample.string_open();
42
+ const close = sample.string_close();
43
+ terminals[open] = new Terminal(perform({ push: Grouper }));
44
+ terminals[close] = new Terminal(perform({ pop: Grouper }));
45
+ }
46
+ terminals[Frame.kEND] = Terminal.end();
47
+ addTerminal('\n', 'end');
48
+ addTerminal(',', 'next');
49
+ addTerminal(';', 'semi-next');
50
+ addGroup(FrameArray);
51
+ addGroup(FrameGroup);
52
+ addGroup(FrameLazy);
53
+ addGroup(FrameSchema);
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2V4ZWN1dGUvdGVybWluYWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVyxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQXFCLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQWFwSixNQUFNLFNBQVMsR0FBbUIsQ0FBQyxJQUFXLEVBQUUsU0FBZ0IsRUFBRSxFQUFFO0lBQ2xFLElBQUksUUFBUSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxZQUFZLFFBQVEsRUFBRTtRQUN2RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7S0FDOUI7SUFFRCxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDekMsb0NBQW9DO0lBQ3BDLE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQyxDQUFBO0FBRUQsTUFBTSxPQUFPLFFBQVMsU0FBUSxLQUFLO0lBQzFCLE1BQU0sQ0FBQyxHQUFHO1FBQ2YsT0FBTyxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0lBQUEsQ0FBQztJQUVGLFlBQXVCLElBQW9CO1FBQ3pDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQURJLFNBQUksR0FBSixJQUFJLENBQWdCO1FBRXpDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQTtJQUMxQixDQUFDO0lBRU0sS0FBSyxDQUFFLFFBQWUsRUFBRSxTQUFnQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7SUFFUyxNQUFNO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFBO0lBQ2xCLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBWSxFQUNqQyxDQUFBO0FBRUQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxPQUFnQixFQUFFLEVBQUU7SUFDbkMsT0FBTyxDQUFDLE1BQWEsRUFBRSxVQUFpQixFQUFFLEVBQUU7UUFDMUMsTUFBTSxTQUFTLEdBQUcsTUFBb0IsQ0FBQTtRQUN0QyxPQUFPLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDbkMsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyxDQUFBO0FBRUQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFZLEVBQUUsR0FBVyxFQUFFLEVBQUU7SUFDaEQsTUFBTSxNQUFNLEdBQVksRUFBRSxDQUFBO0lBQzFCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ25DLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtBQUNqRCxDQUFDLENBQUE7QUFFRCxTQUFTLFFBQVEsQ0FBRSxPQUEwQjtJQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDMUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQ2pDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQTtJQUNuQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUMxRCxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUM1RCxDQUFDO0FBRUQsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUE7QUFDdEMsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtBQUN4QixXQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0FBQ3hCLFdBQVcsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUE7QUFDN0IsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0FBQ3BCLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQTtBQUNwQixRQUFRLENBQUMsU0FBUyxDQUFDLENBQUE7QUFDbkIsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFBIn0=
@@ -0,0 +1,3 @@
1
+ export { execute } from './execute/execute.js';
2
+ export { evaluate } from './execute/evaluate.js';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leGVjdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUEifQ==
@@ -0,0 +1,45 @@
1
+ import { Frame } from './frame.js';
2
+ import { FrameAtom } from './frame-atom.js';
3
+ import { FrameNote } from './frame-note.js';
4
+ import { FrameSymbol } from './frame-symbol.js';
5
+ import { NilContext } from './meta-frame.js';
6
+ export class FrameAlias extends FrameAtom {
7
+ constructor(source, meta = NilContext) {
8
+ super(meta);
9
+ this.data = FrameSymbol.for(source);
10
+ }
11
+ in(contexts = [Frame.nil]) {
12
+ const key = this.data.toString();
13
+ for (const context of contexts) {
14
+ const out = this.find(context, key);
15
+ if (out !== Frame.nil) {
16
+ const setter = this.data.setter(out);
17
+ return setter;
18
+ }
19
+ }
20
+ return FrameNote.key(key, this);
21
+ }
22
+ string_prefix() {
23
+ return FrameAlias.ALIAS_BEGIN;
24
+ }
25
+ ;
26
+ canInclude(char) {
27
+ return FrameSymbol.SYMBOL_CHAR.test(char);
28
+ }
29
+ toData() {
30
+ return this.data;
31
+ }
32
+ find(context, key) {
33
+ while (context !== Frame.missing) {
34
+ const here = context.get_here(key);
35
+ if (!here.is.missing) {
36
+ return context;
37
+ }
38
+ context = context.up;
39
+ }
40
+ return Frame.nil;
41
+ }
42
+ }
43
+ FrameAlias.ALIAS_BEGIN = '@';
44
+ ;
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtYWxpYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZnJhbWVzL2ZyYW1lLWFsaWFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRTVDLE1BQU0sT0FBTyxVQUFXLFNBQVEsU0FBUztJQUt2QyxZQUFhLE1BQWMsRUFBRSxJQUFJLEdBQUcsVUFBVTtRQUM1QyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDWCxJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDckMsQ0FBQztJQUVNLEVBQUUsQ0FBRSxRQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQy9CLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7UUFDaEMsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUU7WUFDOUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFDbkMsSUFBSSxHQUFHLEtBQUssS0FBSyxDQUFDLEdBQUcsRUFBRTtnQkFDckIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ3BDLE9BQU8sTUFBTSxDQUFBO2FBQ2Q7U0FDRjtRQUNELE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDakMsQ0FBQztJQUVNLGFBQWE7UUFDbEIsT0FBTyxVQUFVLENBQUMsV0FBVyxDQUFBO0lBQy9CLENBQUM7SUFBQSxDQUFDO0lBRUssVUFBVSxDQUFFLElBQVk7UUFDN0IsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRVMsTUFBTTtRQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQTtJQUNsQixDQUFDO0lBRVMsSUFBSSxDQUFFLE9BQWMsRUFBRSxHQUFXO1FBQ3pDLE9BQU8sT0FBTyxLQUFLLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDaEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3BCLE9BQU8sT0FBTyxDQUFBO2FBQ2Y7WUFDRCxPQUFPLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQTtTQUNyQjtRQUNELE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQTtJQUNsQixDQUFDOztBQTFDc0Isc0JBQVcsR0FBRyxHQUFHLENBQUE7QUEyQ3pDLENBQUMifQ==
@@ -0,0 +1,62 @@
1
+ import { Frame } from './frame.js';
2
+ import { FrameNote } from './frame-note.js';
3
+ import { FrameSymbol } from './frame-symbol.js';
4
+ export class FrameArg extends FrameSymbol {
5
+ static here() {
6
+ return FrameArg.level();
7
+ }
8
+ static level(count = 1) {
9
+ const symbol = Array(count + 1).join(FrameArg.ARG_CHAR);
10
+ return FrameArg._for(symbol);
11
+ }
12
+ static _for(symbol) {
13
+ const exists = FrameArg.args[symbol];
14
+ return exists || (FrameArg.args[symbol] = new FrameArg(symbol));
15
+ }
16
+ /* protected constructor (data: string) {
17
+ super(data)
18
+ } */
19
+ in(contexts = [Frame.nil]) {
20
+ const level = this.data.length;
21
+ if (level <= 1) {
22
+ return contexts[0];
23
+ }
24
+ else {
25
+ return FrameArg.level(level - 1);
26
+ }
27
+ }
28
+ }
29
+ FrameArg.ARG_CHAR = '_';
30
+ // eslint-disable-next-line no-use-before-define
31
+ FrameArg.args = {};
32
+ ;
33
+ export class FrameParam extends FrameSymbol {
34
+ static there() {
35
+ return FrameParam.level();
36
+ }
37
+ static level(count = 1) {
38
+ const symbol = FrameArg.ARG_CHAR + Array(count + 1).join(FrameParam.ARG_CHAR);
39
+ return FrameParam._for(symbol);
40
+ }
41
+ static _for(symbol) {
42
+ const exists = FrameParam.params[symbol];
43
+ return exists || (FrameParam.params[symbol] = new FrameParam(symbol));
44
+ }
45
+ /* protected constructor (data: string) {
46
+ super(data)
47
+ } */
48
+ in(contexts = [Frame.nil]) {
49
+ const level = this.data.length - 1;
50
+ if (level <= contexts.length) {
51
+ return contexts[level];
52
+ }
53
+ else {
54
+ return FrameNote.key(this.data, this);
55
+ }
56
+ }
57
+ }
58
+ FrameParam.ARG_CHAR = '^';
59
+ // eslint-disable-next-line no-use-before-define
60
+ FrameParam.params = {};
61
+ ;
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtYXJnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ZyYW1lcy9mcmFtZS1hcmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRS9DLE1BQU0sT0FBTyxRQUFTLFNBQVEsV0FBVztJQUdoQyxNQUFNLENBQUMsSUFBSTtRQUNoQixPQUFPLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN6QixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBRSxLQUFLLEdBQUcsQ0FBQztRQUM1QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDdkQsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzlCLENBQUM7SUFLUyxNQUFNLENBQUMsSUFBSSxDQUFFLE1BQWM7UUFDbkMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNwQyxPQUFPLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtJQUNqRSxDQUFDO0lBRUQ7O1FBRUk7SUFFRyxFQUFFLENBQUUsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQTtRQUM5QixJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDZCxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUNuQjthQUFNO1lBQ0wsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQTtTQUNqQztJQUNILENBQUM7O0FBOUJzQixpQkFBUSxHQUFHLEdBQUcsQ0FBQTtBQVdyQyxnREFBZ0Q7QUFDL0IsYUFBSSxHQUFpQyxFQUFFLENBQUE7QUFtQnpELENBQUM7QUFFRixNQUFNLE9BQU8sVUFBVyxTQUFRLFdBQVc7SUFHbEMsTUFBTSxDQUFDLEtBQUs7UUFDakIsT0FBTyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDM0IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLLENBQUUsS0FBSyxHQUFHLENBQUM7UUFDNUIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDN0UsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFLUyxNQUFNLENBQUMsSUFBSSxDQUFFLE1BQWM7UUFDbkMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN4QyxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtJQUN2RSxDQUFDO0lBRUQ7O1FBRUk7SUFFRyxFQUFFLENBQUUsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUE7UUFDbEMsSUFBSSxLQUFLLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUM1QixPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUN2QjthQUFNO1lBQ0wsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7U0FDdEM7SUFDSCxDQUFDOztBQTlCc0IsbUJBQVEsR0FBRyxHQUFHLENBQUE7QUFXckMsZ0RBQWdEO0FBQy9CLGlCQUFNLEdBQW1DLEVBQUUsQ0FBQTtBQW1CN0QsQ0FBQyJ9
@@ -0,0 +1,47 @@
1
+ import { Frame } from './frame.js';
2
+ import { FrameList } from './frame-list.js';
3
+ import { FrameNote } from './frame-note.js';
4
+ import { NilContext } from './meta-frame.js';
5
+ export class FrameArray extends FrameList {
6
+ constructor(data, meta = NilContext) {
7
+ super(data, meta);
8
+ }
9
+ string_open() {
10
+ return FrameArray.BEGIN_ARRAY;
11
+ }
12
+ ;
13
+ string_close() {
14
+ return FrameArray.END_ARRAY;
15
+ }
16
+ ;
17
+ in(contexts = [Frame.nil]) {
18
+ const array = this.array_eval(contexts);
19
+ return new FrameArray(array);
20
+ }
21
+ apply(argument, parameter) {
22
+ if (!argument.is.void) {
23
+ this.data.push(argument);
24
+ }
25
+ return this;
26
+ }
27
+ at(index) {
28
+ if (index >= this.size() || -index > this.size()) {
29
+ const source = '[0..' + this.size() + '].' + index;
30
+ return FrameNote.index(source);
31
+ }
32
+ if (index >= 0) {
33
+ return this.data[index];
34
+ }
35
+ const n = this.data.length;
36
+ return this.data[n + index];
37
+ }
38
+ length() {
39
+ return this.data.length;
40
+ }
41
+ reset() {
42
+ this.data = [];
43
+ }
44
+ }
45
+ FrameArray.BEGIN_ARRAY = '[';
46
+ FrameArray.END_ARRAY = ']';
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtYXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZnJhbWVzL2ZyYW1lLWFycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFNUMsTUFBTSxPQUFPLFVBQVcsU0FBUSxTQUFTO0lBSXZDLFlBQWEsSUFBa0IsRUFBRSxJQUFJLEdBQUcsVUFBVTtRQUNoRCxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ25CLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sVUFBVSxDQUFDLFdBQVcsQ0FBQTtJQUMvQixDQUFDO0lBQUEsQ0FBQztJQUVLLFlBQVk7UUFDakIsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFBO0lBQzdCLENBQUM7SUFBQSxDQUFDO0lBRUssRUFBRSxDQUFFLFFBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN2QyxPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzlCLENBQUM7SUFFTSxLQUFLLENBQUUsUUFBZSxFQUFFLFNBQWdCO1FBQzdDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRTtZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtTQUN6QjtRQUNELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVNLEVBQUUsQ0FBRSxLQUFhO1FBQ3RCLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDaEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFBO1lBQ2xELE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtTQUMvQjtRQUNELElBQUksS0FBSyxJQUFJLENBQUMsRUFBRTtZQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUN4QjtRQUNELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFBO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUVNLE1BQU07UUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFBO0lBQ3pCLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUE7SUFDaEIsQ0FBQzs7QUE3Q3NCLHNCQUFXLEdBQUcsR0FBRyxDQUFBO0FBQ2pCLG9CQUFTLEdBQUcsR0FBRyxDQUFBIn0=
@@ -0,0 +1,41 @@
1
+ import { Frame } from './frame.js';
2
+ import { NilContext } from './meta-frame.js';
3
+ export class FrameAtom extends Frame {
4
+ constructor(meta = NilContext) {
5
+ super(meta);
6
+ }
7
+ string_prefix() {
8
+ return '';
9
+ }
10
+ ;
11
+ string_suffix() {
12
+ return '';
13
+ }
14
+ ;
15
+ string_start() {
16
+ return this.string_prefix();
17
+ }
18
+ ;
19
+ toStringData() {
20
+ const data = this.toData();
21
+ const dataString = data == null ? '' : data.toString();
22
+ return this.string_prefix() + dataString + this.string_suffix();
23
+ }
24
+ toString() {
25
+ const dataString = this.toStringData();
26
+ const n = this.meta_length();
27
+ if ((n === 0) || (n === 1 && this.meta[Frame.kOUT])) {
28
+ return dataString;
29
+ }
30
+ return this.string_open() + [dataString, this.meta_string()].join(', ') + this.string_close();
31
+ }
32
+ canInclude(char) {
33
+ return char !== this.string_suffix();
34
+ }
35
+ toData() {
36
+ return null;
37
+ }
38
+ }
39
+ export class FrameQuote extends FrameAtom {
40
+ }
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtYXRvbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mcmFtZXMvZnJhbWUtYXRvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sRUFBVyxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUVyRCxNQUFNLE9BQU8sU0FBVSxTQUFRLEtBQUs7SUFDbEMsWUFBYSxJQUFJLEdBQUcsVUFBVTtRQUM1QixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDYixDQUFDO0lBRU0sYUFBYTtRQUNsQixPQUFPLEVBQUUsQ0FBQTtJQUNYLENBQUM7SUFBQSxDQUFDO0lBRUssYUFBYTtRQUNsQixPQUFPLEVBQUUsQ0FBQTtJQUNYLENBQUM7SUFBQSxDQUFDO0lBRUssWUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUM3QixDQUFDO0lBQUEsQ0FBQztJQUVLLFlBQVk7UUFDakIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQzFCLE1BQU0sVUFBVSxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQ3RELE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDakUsQ0FBQztJQUVNLFFBQVE7UUFDYixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDdEMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQzVCLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFDbkQsT0FBTyxVQUFVLENBQUE7U0FDbEI7UUFDRCxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFBO0lBQy9GLENBQUM7SUFFTSxVQUFVLENBQUUsSUFBWTtRQUM3QixPQUFPLElBQUksS0FBSyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDdEMsQ0FBQztJQUVTLE1BQU07UUFDZCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxVQUFXLFNBQVEsU0FBUztDQUN4QyJ9
@@ -0,0 +1,104 @@
1
+ import { FrameAtom } from './frame-atom.js';
2
+ import { NilContext } from './meta-frame.js';
3
+ export class FrameBlob extends FrameAtom {
4
+ static fix_source(source) {
5
+ if (source === '') {
6
+ return '0' + FrameBlob.BLOB_PREFIX[16] + '0';
7
+ }
8
+ if (source[0] !== '0') {
9
+ return '0' + source;
10
+ }
11
+ return source;
12
+ }
13
+ static find_base(source) {
14
+ const prefix = source.substr(1, 1);
15
+ const keys = Object.keys(FrameBlob.BLOB_PREFIX);
16
+ const base = keys.find((k) => FrameBlob.BLOB_PREFIX[parseInt(k, 10)] === prefix);
17
+ return parseInt(base || '10', 10);
18
+ }
19
+ static count_bits(source, base) {
20
+ const digits = source.substr(2);
21
+ const length = digits.length;
22
+ const entropy = Math.log2(base);
23
+ const bits = length * entropy;
24
+ return BigInt(bits);
25
+ }
26
+ constructor(source) {
27
+ super(NilContext);
28
+ source = FrameBlob.fix_source(source);
29
+ this.data = BigInt(source);
30
+ this.base = FrameBlob.find_base(source);
31
+ this.n_bits = FrameBlob.count_bits(source, this.base);
32
+ }
33
+ called_by(context, parameter) {
34
+ if (context instanceof FrameBlob) {
35
+ const left_operand = context;
36
+ const result = left_operand.append(this);
37
+ return result;
38
+ }
39
+ return super.called_by(context, parameter);
40
+ }
41
+ string_start() {
42
+ return FrameBlob.BLOB_START;
43
+ }
44
+ ;
45
+ string_prefix() {
46
+ const sigil = FrameBlob.BLOB_PREFIX[this.base];
47
+ return '0' + sigil;
48
+ }
49
+ ;
50
+ canInclude(char) {
51
+ const regex = FrameBlob.BLOB_DIGITS[64]; // accept everything, to start
52
+ return regex.test(char);
53
+ }
54
+ toString() {
55
+ const dataString = this.toData().toString(this.base);
56
+ const pad = this.n_chars() - dataString.length;
57
+ const digits = '0'.repeat(pad) + dataString;
58
+ return this.string_prefix() + digits + this.string_suffix();
59
+ }
60
+ toData() {
61
+ return this.data;
62
+ }
63
+ append(right_operand) {
64
+ const left = BigInt(right_operand.exalt(this));
65
+ this.data = left + right_operand.data;
66
+ this.n_bits = this.n_bits + right_operand.n_bits;
67
+ return this;
68
+ }
69
+ ;
70
+ exalt(left_operand) {
71
+ const result = left_operand.shift_left(this.n_bits);
72
+ return result;
73
+ }
74
+ ;
75
+ shift_left(n_bits) {
76
+ const bigint_result = this.data << n_bits;
77
+ return bigint_result;
78
+ }
79
+ ;
80
+ n_chars() {
81
+ const entropy = Math.log2(this.base);
82
+ const bits = Number(this.n_bits);
83
+ const chars = bits / entropy;
84
+ return Math.ceil(chars);
85
+ }
86
+ ;
87
+ }
88
+ FrameBlob.BLOB_START = '0';
89
+ FrameBlob.BLOB_DIGITS = {
90
+ 2: /[01]/,
91
+ 8: /[0-7]/,
92
+ 16: /[0-9a-fA-F]/,
93
+ 32: /[0-9a-hj-np-z]/,
94
+ 64: /[0-9a-zA-Z+/=]/
95
+ };
96
+ FrameBlob.BLOB_PREFIX = {
97
+ 2: 'b',
98
+ 8: 'o',
99
+ 16: 'x',
100
+ 32: 't',
101
+ 64: 's' // 6
102
+ };
103
+ ;
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtYmxvYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mcmFtZXMvZnJhbWUtYmxvYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBVzVDLE1BQU0sT0FBTyxTQUFVLFNBQVEsU0FBUztJQWtCL0IsTUFBTSxDQUFDLFVBQVUsQ0FBRSxNQUFjO1FBQ3RDLElBQUksTUFBTSxLQUFLLEVBQUUsRUFBRTtZQUNqQixPQUFPLEdBQUcsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtTQUM3QztRQUNELElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtZQUNyQixPQUFPLEdBQUcsR0FBRyxNQUFNLENBQUE7U0FDcEI7UUFDRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBUyxDQUFFLE1BQWM7UUFDckMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDbEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDL0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUE7UUFDaEYsT0FBTyxRQUFRLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBRU0sTUFBTSxDQUFDLFVBQVUsQ0FBRSxNQUFjLEVBQUUsSUFBWTtRQUNwRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQy9CLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUE7UUFDNUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMvQixNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsT0FBTyxDQUFBO1FBQzdCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3JCLENBQUM7SUFNRCxZQUFhLE1BQWM7UUFDekIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ2pCLE1BQU0sR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBRXJDLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN2RCxDQUFDO0lBRU0sU0FBUyxDQUFFLE9BQWMsRUFBRSxTQUFnQjtRQUNoRCxJQUFJLE9BQU8sWUFBWSxTQUFTLEVBQUU7WUFDaEMsTUFBTSxZQUFZLEdBQUcsT0FBb0IsQ0FBQTtZQUN6QyxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ3hDLE9BQU8sTUFBTSxDQUFBO1NBQ2Q7UUFDRCxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQzVDLENBQUM7SUFFTSxZQUFZO1FBQ2pCLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQTtJQUM3QixDQUFDO0lBQUEsQ0FBQztJQUVLLGFBQWE7UUFDbEIsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDOUMsT0FBTyxHQUFHLEdBQUcsS0FBSyxDQUFBO0lBQ3BCLENBQUM7SUFBQSxDQUFDO0lBRUssVUFBVSxDQUFFLElBQVk7UUFDN0IsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFDLDhCQUE4QjtRQUN0RSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDekIsQ0FBQztJQUVNLFFBQVE7UUFDYixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNwRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQTtRQUM5QyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQTtRQUMzQyxPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFBO0lBQzdELENBQUM7SUFFUyxNQUFNO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFBO0lBQ2xCLENBQUM7SUFFUyxNQUFNLENBQUUsYUFBd0I7UUFDeEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUM5QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFBO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFBO1FBQ2hELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUFBLENBQUM7SUFFUSxLQUFLLENBQUUsWUFBdUI7UUFDdEMsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDbkQsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDO0lBQUEsQ0FBQztJQUVRLFVBQVUsQ0FBRSxNQUFXO1FBQy9CLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFBO1FBQ3pDLE9BQU8sYUFBYSxDQUFBO0lBQ3RCLENBQUM7SUFBQSxDQUFDO0lBRVEsT0FBTztRQUNmLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3BDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLE9BQU8sQ0FBQTtRQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDekIsQ0FBQztJQUFBLENBQUM7O0FBL0dxQixvQkFBVSxHQUFHLEdBQUcsQ0FBQTtBQUNoQixxQkFBVyxHQUFlO0lBQy9DLENBQUMsRUFBRSxNQUFNO0lBQ1QsQ0FBQyxFQUFFLE9BQU87SUFDVixFQUFFLEVBQUUsYUFBYTtJQUNqQixFQUFFLEVBQUUsZ0JBQWdCO0lBQ3BCLEVBQUUsRUFBRSxnQkFBZ0I7Q0FDckIsQ0FBQTtBQUVzQixxQkFBVyxHQUFlO0lBQy9DLENBQUMsRUFBRSxHQUFHO0lBQ04sQ0FBQyxFQUFFLEdBQUc7SUFDTixFQUFFLEVBQUUsR0FBRztJQUNQLEVBQUUsRUFBRSxHQUFHO0lBQ1AsRUFBRSxFQUFFLEdBQUcsQ0FBQyxJQUFJO0NBQ2IsQ0FBQTtBQWlHRixDQUFDIn0=
@@ -0,0 +1,31 @@
1
+ import { FrameQuote } from './frame-atom.js';
2
+ import { NilContext } from './meta-frame.js';
3
+ export class FrameBytes extends FrameQuote {
4
+ constructor(values, meta = NilContext) {
5
+ super(meta);
6
+ this.data = new Uint8Array(values);
7
+ this.length = values.length;
8
+ }
9
+ string_prefix() {
10
+ return FrameBytes.BYTES_BEGIN;
11
+ }
12
+ ;
13
+ string_suffix() {
14
+ return FrameBytes.BYTES_END;
15
+ }
16
+ ;
17
+ toStringData() {
18
+ return this.string_prefix() + this.length + this.string_suffix() + this.toData();
19
+ }
20
+ toData() {
21
+ let s = '';
22
+ this.data.forEach((value) => {
23
+ s = s + String.fromCharCode(value);
24
+ });
25
+ return s;
26
+ }
27
+ }
28
+ FrameBytes.BYTES_BEGIN = '\\';
29
+ FrameBytes.BYTES_END = '\\';
30
+ ;
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtYnl0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZnJhbWVzL2ZyYW1lLWJ5dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM1QyxPQUFPLEVBQVcsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFckQsTUFBTSxPQUFPLFVBQVcsU0FBUSxVQUFVO0lBT3hDLFlBQWEsTUFBZ0IsRUFBRSxPQUFnQixVQUFVO1FBQ3ZELEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNYLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFBO0lBQzdCLENBQUM7SUFFTSxhQUFhO1FBQ2xCLE9BQU8sVUFBVSxDQUFDLFdBQVcsQ0FBQTtJQUMvQixDQUFDO0lBQUEsQ0FBQztJQUVLLGFBQWE7UUFDbEIsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFBO0lBQzdCLENBQUM7SUFBQSxDQUFDO0lBRUssWUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDbEYsQ0FBQztJQUVTLE1BQU07UUFDZCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUE7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzFCLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNwQyxDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8sQ0FBQyxDQUFBO0lBQ1YsQ0FBQzs7QUE5QnNCLHNCQUFXLEdBQUcsSUFBSSxDQUFBO0FBQ2xCLG9CQUFTLEdBQUcsSUFBSSxDQUFBO0FBOEJ4QyxDQUFDIn0=
@@ -0,0 +1,28 @@
1
+ import { FrameAtom } from './frame-atom.js';
2
+ import { NilContext } from './meta-frame.js';
3
+ export class FrameComment extends FrameAtom {
4
+ constructor(data, meta = NilContext) {
5
+ super(meta);
6
+ this.data = data;
7
+ this.is.void = true;
8
+ }
9
+ string_prefix() {
10
+ return FrameComment.COMMENT_BEGIN;
11
+ }
12
+ ;
13
+ string_suffix() {
14
+ return FrameComment.COMMENT_END;
15
+ }
16
+ ;
17
+ canInclude(char) {
18
+ return !FrameComment.COMMENT_END_REGEX.test(char);
19
+ }
20
+ toData() {
21
+ return this.data;
22
+ }
23
+ }
24
+ FrameComment.COMMENT_BEGIN = '#';
25
+ FrameComment.COMMENT_END = '#';
26
+ FrameComment.COMMENT_END_REGEX = /#/;
27
+ ;
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtY29tbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mcmFtZXMvZnJhbWUtY29tbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxFQUFXLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRXJELE1BQU0sT0FBTyxZQUFhLFNBQVEsU0FBUztJQUt6QyxZQUF1QixJQUFZLEVBQUUsT0FBZ0IsVUFBVTtRQUM3RCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7UUFEVSxTQUFJLEdBQUosSUFBSSxDQUFRO1FBRWpDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtJQUNyQixDQUFDO0lBRU0sYUFBYTtRQUNsQixPQUFPLFlBQVksQ0FBQyxhQUFhLENBQUE7SUFDbkMsQ0FBQztJQUFBLENBQUM7SUFFSyxhQUFhO1FBQ2xCLE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQTtJQUNqQyxDQUFDO0lBQUEsQ0FBQztJQUVLLFVBQVUsQ0FBRSxJQUFZO1FBQzdCLE9BQU8sQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ25ELENBQUM7SUFFUyxNQUFNO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFBO0lBQ2xCLENBQUM7O0FBdkJzQiwwQkFBYSxHQUFHLEdBQUcsQ0FBQTtBQUNuQix3QkFBVyxHQUFHLEdBQUcsQ0FBQTtBQUNqQiw4QkFBaUIsR0FBRyxHQUFHLENBQUE7QUFzQi9DLENBQUMifQ==
@@ -0,0 +1,19 @@
1
+ import { FrameString } from './frame-string.js';
2
+ import { NilContext } from './meta-frame.js';
3
+ export class FrameDoc extends FrameString {
4
+ constructor(data, meta = NilContext) {
5
+ super(data, meta);
6
+ }
7
+ string_prefix() {
8
+ return FrameDoc.DOC_BEGIN;
9
+ }
10
+ ;
11
+ string_suffix() {
12
+ return FrameDoc.DOC_END;
13
+ }
14
+ ;
15
+ }
16
+ FrameDoc.DOC_BEGIN = '`';
17
+ FrameDoc.DOC_END = '`';
18
+ ;
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtZG9jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ZyYW1lcy9mcmFtZS1kb2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQy9DLE9BQU8sRUFBVyxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUVyRCxNQUFNLE9BQU8sUUFBUyxTQUFRLFdBQVc7SUFJdkMsWUFBYSxJQUFZLEVBQUUsT0FBZ0IsVUFBVTtRQUNuRCxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ25CLENBQUM7SUFFTSxhQUFhO1FBQ2xCLE9BQU8sUUFBUSxDQUFDLFNBQVMsQ0FBQTtJQUMzQixDQUFDO0lBQUEsQ0FBQztJQUVLLGFBQWE7UUFDbEIsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFBO0lBQ3pCLENBQUM7SUFBQSxDQUFDOztBQWJxQixrQkFBUyxHQUFHLEdBQUcsQ0FBQTtBQUNmLGdCQUFPLEdBQUcsR0FBRyxDQUFBO0FBYXJDLENBQUMifQ==
@@ -0,0 +1,34 @@
1
+ import { Frame } from './frame.js';
2
+ import { FrameList } from './frame-list.js';
3
+ import { NilContext } from './meta-frame.js';
4
+ export class FrameExpr extends FrameList {
5
+ constructor(data, meta = NilContext) {
6
+ super(data, meta);
7
+ data.forEach((item) => {
8
+ item.up = this;
9
+ });
10
+ }
11
+ in(contexts = [Frame.nil]) {
12
+ contexts.push(this);
13
+ const result = this.data.reduce((sum, item) => {
14
+ const value = item.in(contexts);
15
+ const next_sum = sum.call(value);
16
+ return next_sum;
17
+ }, Frame.nil);
18
+ if (this.is.statement) {
19
+ this.data = [result];
20
+ return this;
21
+ }
22
+ return result;
23
+ }
24
+ call(argument, parameter = Frame.nil) {
25
+ return this.in([argument, parameter]);
26
+ }
27
+ ;
28
+ toStringDataArray() {
29
+ const array = this.data.map((obj) => obj.toString());
30
+ return [array.join(' ') + ','];
31
+ }
32
+ }
33
+ ;
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtZXhwci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mcmFtZXMvZnJhbWUtZXhwci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFNUMsTUFBTSxPQUFPLFNBQVUsU0FBUSxTQUFTO0lBQ3RDLFlBQWEsSUFBa0IsRUFBRSxJQUFJLEdBQUcsVUFBVTtRQUNoRCxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQTtRQUNoQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFTSxFQUFFLENBQUUsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUMvQixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ25CLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBVSxFQUFFLElBQVcsRUFBRSxFQUFFO1lBQzFELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDL0IsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNoQyxPQUFPLFFBQVEsQ0FBQTtRQUNqQixDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRWIsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRTtZQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDcEIsT0FBTyxJQUFJLENBQUE7U0FDWjtRQUNELE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUVNLElBQUksQ0FBRSxRQUFlLEVBQUUsU0FBUyxHQUFHLEtBQUssQ0FBQyxHQUFHO1FBQ2pELE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7SUFBQSxDQUFDO0lBRUssaUJBQWlCO1FBQ3RCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBVSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtRQUMzRCxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0NBQ0Y7QUFBQSxDQUFDIn0=
@@ -0,0 +1,31 @@
1
+ import { Frame } from './frame.js';
2
+ import { FrameList } from './frame-list.js';
3
+ import { NilContext } from './meta-frame.js';
4
+ export class FrameGroup extends FrameList {
5
+ constructor(data, meta = NilContext) {
6
+ super(data, meta);
7
+ }
8
+ eval_one(contexts = [Frame.nil]) {
9
+ contexts.push(this);
10
+ const expr = this.data[0];
11
+ const result = expr.in(contexts);
12
+ const symbols = this.meta_pairs();
13
+ symbols.forEach(([key, value]) => {
14
+ result.set(key, value);
15
+ });
16
+ return result;
17
+ }
18
+ in(contexts = [Frame.nil]) {
19
+ switch (this.size()) {
20
+ case 0: {
21
+ return Frame.nil;
22
+ }
23
+ case 1: {
24
+ return this.eval_one(contexts);
25
+ }
26
+ }
27
+ this.data = this.data.map((f) => f.in(contexts));
28
+ return this;
29
+ }
30
+ }
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZnJhbWVzL2ZyYW1lLWdyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUU1QyxNQUFNLE9BQU8sVUFBVyxTQUFRLFNBQVM7SUFDdkMsWUFBYSxJQUFrQixFQUFFLElBQUksR0FBRyxVQUFVO1FBQ2hELEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDbkIsQ0FBQztJQUVNLFFBQVEsQ0FBRSxRQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQ3JDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDbkIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRWhDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUNqQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUMvQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUN4QixDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUVNLEVBQUUsQ0FBRSxRQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQy9CLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ25CLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ04sT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFBO2FBQ2pCO1lBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDTixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUE7YUFDL0I7U0FDRjtRQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUN2RCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7Q0FDRiJ9