hclang 0.1.0 → 0.5.3
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/README.md +25 -3
- package/lib/src/cli/bin.js +4 -0
- package/lib/src/cli/hc.js +45 -0
- package/lib/src/execute/eval-pipe.js +15 -0
- package/lib/src/execute/evaluate.js +10 -0
- package/lib/src/execute/execute.js +18 -0
- package/lib/src/execute/frame-space.js +17 -0
- package/lib/src/execute/hc-eval.js +105 -0
- package/lib/src/execute/hc-log.js +39 -0
- package/lib/src/execute/hc-test.js +43 -0
- package/lib/src/execute/lex-bytes.js +42 -0
- package/lib/src/execute/lex-pipe.js +56 -0
- package/lib/src/execute/lex.js +110 -0
- package/lib/src/execute/lexer.js +24 -0
- package/lib/src/execute/parse-pipe.js +52 -0
- package/lib/src/execute/syntax.js +36 -0
- package/lib/src/execute/terminals.js +54 -0
- package/lib/src/execute.js +3 -0
- package/lib/src/frames/frame-alias.js +45 -0
- package/lib/src/frames/frame-arg.js +62 -0
- package/lib/src/frames/frame-array.js +47 -0
- package/lib/src/frames/frame-atom.js +41 -0
- package/lib/src/frames/frame-blob.js +104 -0
- package/lib/src/frames/frame-bytes.js +31 -0
- package/lib/src/frames/frame-comment.js +28 -0
- package/lib/src/frames/frame-doc.js +19 -0
- package/lib/src/frames/frame-expr.js +34 -0
- package/lib/src/frames/frame-group.js +31 -0
- package/lib/src/frames/frame-lazy.js +39 -0
- package/lib/src/frames/frame-list.js +58 -0
- package/lib/src/frames/frame-name.js +29 -0
- package/lib/src/frames/frame-note.js +104 -0
- package/lib/src/frames/frame-number.js +28 -0
- package/lib/src/frames/frame-schema.js +47 -0
- package/lib/src/frames/frame-string.js +41 -0
- package/lib/src/frames/frame-symbol.js +75 -0
- package/lib/src/frames/frame.js +75 -0
- package/lib/src/frames/meta-frame.js +99 -0
- package/lib/src/frames.js +24 -0
- package/lib/src/index.js +5 -0
- package/lib/src/maml/tag.js +17 -0
- package/lib/src/maml.js +26 -0
- package/lib/src/ops/conditionals.js +14 -0
- package/lib/src/ops/frame-curry.js +17 -0
- package/lib/src/ops/frame-ops.js +24 -0
- package/lib/src/ops/iterators.js +28 -0
- package/lib/src/ops.js +12 -0
- package/lib/src/version.js +3 -0
- package/lib/test/execute/eval-pipe-spec.js +45 -0
- package/lib/test/execute/evaluate-spec.js +76 -0
- package/lib/test/execute/execute-spec.js +115 -0
- package/lib/test/execute/hc-eval-spec.js +68 -0
- package/lib/test/execute/hc-test-spec.js +47 -0
- package/lib/test/execute/lex-pipe-spec.js +25 -0
- package/lib/test/execute/parse-spec.js +67 -0
- package/lib/test/execute/script-spec.js +29 -0
- package/lib/test/frames/frame-alias-spec.js +36 -0
- package/lib/test/frames/frame-arg-spec.js +57 -0
- package/lib/test/frames/frame-array-spec.js +54 -0
- package/lib/test/frames/frame-blob-spec.js +56 -0
- package/lib/test/frames/frame-bytes-spec.js +16 -0
- package/lib/test/frames/frame-comment-spec.js +17 -0
- package/lib/test/frames/frame-expr-spec.js +60 -0
- package/lib/test/frames/frame-group-spec.js +27 -0
- package/lib/test/frames/frame-lazy-spec.js +49 -0
- package/lib/test/frames/frame-name-spec.js +26 -0
- package/lib/test/frames/frame-note-spec.js +48 -0
- package/lib/test/frames/frame-number-spec.js +17 -0
- package/lib/test/frames/frame-schema-spec.js +54 -0
- package/lib/test/frames/frame-spec.js +31 -0
- package/lib/test/frames/frame-string-spec.js +43 -0
- package/lib/test/frames/frame-symbol-spec.js +64 -0
- package/lib/test/frames/meta-frame-spec.js +75 -0
- package/lib/test/maml/maml-spec.js +42 -0
- package/lib/test/maml/tag-spec.js +53 -0
- package/lib/test/ops/iterators-spec.js +70 -0
- package/package.json +61 -34
- package/lib/bin.d.ts +0 -0
- package/lib/bin.js +0 -6
- package/lib/execute/actions.d.ts +0 -13
- package/lib/execute/actions.js +0 -48
- package/lib/execute/eval-pipe.d.ts +0 -5
- package/lib/execute/eval-pipe.js +0 -32
- package/lib/execute/evaluate.d.ts +0 -2
- package/lib/execute/evaluate.js +0 -20
- package/lib/execute/frame-space.d.ts +0 -7
- package/lib/execute/frame-space.js +0 -32
- package/lib/execute/group-pipe.d.ts +0 -6
- package/lib/execute/group-pipe.js +0 -27
- package/lib/execute/lex-pipe.d.ts +0 -12
- package/lib/execute/lex-pipe.js +0 -55
- package/lib/execute/lex.d.ts +0 -26
- package/lib/execute/lex.js +0 -94
- package/lib/execute/lexer.d.ts +0 -9
- package/lib/execute/lexer.js +0 -55
- package/lib/execute/parse-pipe.d.ts +0 -8
- package/lib/execute/parse-pipe.js +0 -49
- package/lib/execute/parser.d.ts +0 -8
- package/lib/execute/parser.js +0 -49
- package/lib/execute/syntax.d.ts +0 -2
- package/lib/execute/syntax.js +0 -23
- package/lib/execute/terminals.d.ts +0 -10
- package/lib/execute/terminals.js +0 -48
- package/lib/execute.d.ts +0 -1
- package/lib/execute.js +0 -9
- package/lib/frames/frame-arg.d.ts +0 -24
- package/lib/frames/frame-arg.js +0 -81
- package/lib/frames/frame-array.d.ts +0 -15
- package/lib/frames/frame-array.js +0 -50
- package/lib/frames/frame-atom.d.ts +0 -17
- package/lib/frames/frame-atom.js +0 -52
- package/lib/frames/frame-comment.d.ts +0 -12
- package/lib/frames/frame-comment.js +0 -36
- package/lib/frames/frame-doc.d.ts +0 -9
- package/lib/frames/frame-doc.js +0 -31
- package/lib/frames/frame-expr.d.ts +0 -9
- package/lib/frames/frame-expr.js +0 -48
- package/lib/frames/frame-group.d.ts +0 -7
- package/lib/frames/frame-group.js +0 -39
- package/lib/frames/frame-lazy.d.ts +0 -13
- package/lib/frames/frame-lazy.js +0 -54
- package/lib/frames/frame-list.d.ts +0 -15
- package/lib/frames/frame-list.js +0 -51
- package/lib/frames/frame-name.d.ts +0 -12
- package/lib/frames/frame-name.js +0 -37
- package/lib/frames/frame-number.d.ts +0 -9
- package/lib/frames/frame-number.js +0 -31
- package/lib/frames/frame-string.d.ts +0 -14
- package/lib/frames/frame-string.js +0 -47
- package/lib/frames/frame-symbol.d.ts +0 -18
- package/lib/frames/frame-symbol.js +0 -64
- package/lib/frames/frame.d.ts +0 -22
- package/lib/frames/frame.js +0 -73
- package/lib/frames/meta-frame.d.ts +0 -26
- package/lib/frames/meta-frame.js +0 -85
- package/lib/frames.d.ts +0 -15
- package/lib/frames.js +0 -36
- package/lib/hc.d.ts +0 -0
- package/lib/hc.js +0 -13
- package/lib/index.d.ts +0 -3
- package/lib/index.js +0 -9
- package/lib/maml/tag.d.ts +0 -2
- package/lib/maml/tag.js +0 -19
- package/lib/maml.d.ts +0 -2
- package/lib/maml.js +0 -30
- package/lib/ops/frame-curry.d.ts +0 -9
- package/lib/ops/frame-curry.js +0 -31
- package/lib/ops/frame-ops.d.ts +0 -12
- package/lib/ops/frame-ops.js +0 -41
- package/lib/ops/iterators.d.ts +0 -2
- package/lib/ops/iterators.js +0 -12
- package/lib/ops.d.ts +0 -3
- 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtYmxvYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mcmFtZXMvZnJhbWUtYmxvYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBVzVDLE1BQU0sT0FBTyxTQUFVLFNBQVEsU0FBUztJQWtCL0IsTUFBTSxDQUFDLFVBQVUsQ0FBRSxNQUFjO1FBQ3RDLElBQUksTUFBTSxLQUFLLEVBQUUsRUFBRTtZQUNqQixPQUFPLEdBQUcsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtTQUM3QztRQUNELElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtZQUNyQixPQUFPLEdBQUcsR0FBRyxNQUFNLENBQUE7U0FDcEI7UUFDRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBUyxDQUFFLE1BQWM7UUFDckMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDbEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDL0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUE7UUFDaEYsT0FBTyxRQUFRLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBRU0sTUFBTSxDQUFDLFVBQVUsQ0FBRSxNQUFjLEVBQUUsSUFBWTtRQUNw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
|
|
@@ -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
|