septima-lang 0.0.1

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 (67) hide show
  1. package/dist/src/ast-node.d.ts +85 -0
  2. package/dist/src/ast-node.js +114 -0
  3. package/dist/src/cdl.d.ts +33 -0
  4. package/dist/src/cdl.js +63 -0
  5. package/dist/src/extract-message.d.ts +1 -0
  6. package/dist/src/extract-message.js +10 -0
  7. package/dist/src/fail-me.d.ts +1 -0
  8. package/dist/src/fail-me.js +11 -0
  9. package/dist/src/find-array-method.d.ts +15 -0
  10. package/dist/src/find-array-method.js +104 -0
  11. package/dist/src/find-string-method.d.ts +2 -0
  12. package/dist/src/find-string-method.js +88 -0
  13. package/dist/src/index.d.ts +1 -0
  14. package/dist/src/index.js +18 -0
  15. package/dist/src/location.d.ts +11 -0
  16. package/dist/src/location.js +3 -0
  17. package/dist/src/parser.d.ts +37 -0
  18. package/dist/src/parser.js +345 -0
  19. package/dist/src/result.d.ts +24 -0
  20. package/dist/src/result.js +29 -0
  21. package/dist/src/runtime.d.ts +25 -0
  22. package/dist/src/runtime.js +287 -0
  23. package/dist/src/scanner.d.ts +22 -0
  24. package/dist/src/scanner.js +76 -0
  25. package/dist/src/should-never-happen.d.ts +1 -0
  26. package/dist/src/should-never-happen.js +9 -0
  27. package/dist/src/source-code.d.ts +19 -0
  28. package/dist/src/source-code.js +90 -0
  29. package/dist/src/stack.d.ts +11 -0
  30. package/dist/src/stack.js +19 -0
  31. package/dist/src/switch-on.d.ts +1 -0
  32. package/dist/src/switch-on.js +9 -0
  33. package/dist/src/symbol-table.d.ts +5 -0
  34. package/dist/src/symbol-table.js +3 -0
  35. package/dist/src/value.d.ts +128 -0
  36. package/dist/src/value.js +634 -0
  37. package/dist/tests/cdl.spec.d.ts +1 -0
  38. package/dist/tests/cdl.spec.js +692 -0
  39. package/dist/tests/parser.spec.d.ts +1 -0
  40. package/dist/tests/parser.spec.js +39 -0
  41. package/dist/tests/value.spec.d.ts +1 -0
  42. package/dist/tests/value.spec.js +355 -0
  43. package/dist/tsconfig.tsbuildinfo +1 -0
  44. package/jest-output.json +1 -0
  45. package/package.json +17 -0
  46. package/src/ast-node.ts +205 -0
  47. package/src/cdl.ts +78 -0
  48. package/src/extract-message.ts +5 -0
  49. package/src/fail-me.ts +7 -0
  50. package/src/find-array-method.ts +115 -0
  51. package/src/find-string-method.ts +84 -0
  52. package/src/index.ts +1 -0
  53. package/src/location.ts +13 -0
  54. package/src/parser.ts +399 -0
  55. package/src/result.ts +45 -0
  56. package/src/runtime.ts +295 -0
  57. package/src/scanner.ts +94 -0
  58. package/src/should-never-happen.ts +4 -0
  59. package/src/source-code.ts +101 -0
  60. package/src/stack.ts +18 -0
  61. package/src/switch-on.ts +4 -0
  62. package/src/symbol-table.ts +6 -0
  63. package/src/value.ts +742 -0
  64. package/tests/cdl.spec.ts +755 -0
  65. package/tests/parser.spec.ts +14 -0
  66. package/tests/value.spec.ts +387 -0
  67. package/tsconfig.json +11 -0
@@ -0,0 +1,85 @@
1
+ import { Span } from './location';
2
+ import { Token } from './scanner';
3
+ export declare type Let = {
4
+ start: Token;
5
+ ident: Ident;
6
+ value: AstNode;
7
+ };
8
+ export declare type ObjectLiteralPart = {
9
+ tag: 'hardName';
10
+ k: Ident;
11
+ v: AstNode;
12
+ } | {
13
+ tag: 'computedName';
14
+ k: AstNode;
15
+ v: AstNode;
16
+ } | {
17
+ tag: 'spread';
18
+ o: AstNode;
19
+ };
20
+ export declare type ArrayLiteralPart = {
21
+ tag: 'element';
22
+ v: AstNode;
23
+ } | {
24
+ tag: 'spread';
25
+ v: AstNode;
26
+ };
27
+ export declare type Ident = {
28
+ tag: 'ident';
29
+ t: Token;
30
+ };
31
+ export declare type Lambda = {
32
+ tag: 'lambda';
33
+ start: Token;
34
+ formalArgs: Ident[];
35
+ body: AstNode;
36
+ };
37
+ export declare type AstNode = Ident | {
38
+ start: Token;
39
+ tag: 'arrayLiteral';
40
+ parts: ArrayLiteralPart[];
41
+ end: Token;
42
+ } | {
43
+ start: Token;
44
+ tag: 'objectLiteral';
45
+ parts: ObjectLiteralPart[];
46
+ end: Token;
47
+ } | {
48
+ tag: 'literal';
49
+ type: 'str' | 'bool' | 'num' | 'sink' | 'sink!' | 'sink!!';
50
+ t: Token;
51
+ } | {
52
+ tag: 'binaryOperator';
53
+ operator: '+' | '-' | '*' | '/' | '**' | '%' | '&&' | '||' | '>' | '<' | '>=' | '<=' | '==' | '!=' | '??';
54
+ lhs: AstNode;
55
+ rhs: AstNode;
56
+ } | {
57
+ tag: 'unaryOperator';
58
+ operatorToken: Token;
59
+ operator: '+' | '-' | '!';
60
+ operand: AstNode;
61
+ } | {
62
+ tag: 'topLevelExpression';
63
+ definitions: Let[];
64
+ computation: AstNode;
65
+ } | Lambda | {
66
+ tag: 'functionCall';
67
+ actualArgs: AstNode[];
68
+ callee: AstNode;
69
+ end: Token;
70
+ } | {
71
+ tag: 'if';
72
+ condition: AstNode;
73
+ positive: AstNode;
74
+ negative: AstNode;
75
+ } | {
76
+ tag: 'dot';
77
+ receiver: AstNode;
78
+ ident: Ident;
79
+ } | {
80
+ tag: 'indexAccess';
81
+ receiver: AstNode;
82
+ index: AstNode;
83
+ };
84
+ export declare function show(ast: AstNode | AstNode[]): string;
85
+ export declare function span(ast: AstNode): Span;
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.span = exports.show = void 0;
4
+ const should_never_happen_1 = require("./should-never-happen");
5
+ function show(ast) {
6
+ if (Array.isArray(ast)) {
7
+ return ast.map(curr => show(curr)).join(', ');
8
+ }
9
+ if (ast.tag === 'arrayLiteral') {
10
+ const parts = ast.parts.map(p => {
11
+ if (p.tag === 'element') {
12
+ return show(p.v);
13
+ }
14
+ if (p.tag === 'spread') {
15
+ return `...${show(p.v)}`;
16
+ }
17
+ (0, should_never_happen_1.shouldNeverHappen)(p);
18
+ });
19
+ return `[${parts.join(', ')}]`;
20
+ }
21
+ if (ast.tag === 'binaryOperator') {
22
+ return `(${show(ast.lhs)} ${ast.operator} ${show(ast.rhs)})`;
23
+ }
24
+ if (ast.tag === 'dot') {
25
+ return `${show(ast.receiver)}.${show(ast.ident)}`;
26
+ }
27
+ if (ast.tag === 'functionCall') {
28
+ return `${show(ast.callee)}(${show(ast.actualArgs)})`;
29
+ }
30
+ if (ast.tag === 'ident') {
31
+ return ast.t.text;
32
+ }
33
+ if (ast.tag === 'if') {
34
+ return `if (${show(ast.condition)}) ${show(ast.positive)} else ${show(ast.negative)}`;
35
+ }
36
+ if (ast.tag === 'indexAccess') {
37
+ return `${show(ast.receiver)}[${show(ast.index)}]`;
38
+ }
39
+ if (ast.tag === 'lambda') {
40
+ return `fun (${show(ast.formalArgs)}) ${show(ast.body)}`;
41
+ }
42
+ if (ast.tag === 'literal') {
43
+ return ast.t.text;
44
+ }
45
+ if (ast.tag === 'objectLiteral') {
46
+ const pairs = ast.parts.map(p => {
47
+ if (p.tag === 'computedName') {
48
+ return `[${show(p.k)}]: ${show(p.v)}`;
49
+ }
50
+ if (p.tag === 'hardName') {
51
+ return `${show(p.k)}: ${show(p.v)}`;
52
+ }
53
+ if (p.tag === 'spread') {
54
+ return `...${show(p.o)}`;
55
+ }
56
+ (0, should_never_happen_1.shouldNeverHappen)(p);
57
+ });
58
+ return `{${pairs.join(', ')}}`;
59
+ }
60
+ if (ast.tag === 'topLevelExpression') {
61
+ const defs = ast.definitions.map(d => `let ${show(d.ident)} = ${show(d.value)}`).join('; ');
62
+ return `${defs ? defs + '; ' : ''}${show(ast.computation)}`;
63
+ }
64
+ if (ast.tag === 'unaryOperator') {
65
+ return `${ast.operator}${show(ast.operand)}`;
66
+ }
67
+ (0, should_never_happen_1.shouldNeverHappen)(ast);
68
+ }
69
+ exports.show = show;
70
+ function span(ast) {
71
+ const ofRange = (a, b) => ({ from: a.from, to: b.to });
72
+ const ofToken = (t) => ({ from: t.location, to: { offset: t.location.offset + t.text.length - 1 } });
73
+ if (ast.tag === 'arrayLiteral') {
74
+ return ofRange(ofToken(ast.start), ofToken(ast.end));
75
+ }
76
+ if (ast.tag === 'binaryOperator') {
77
+ return ofRange(span(ast.lhs), span(ast.rhs));
78
+ }
79
+ if (ast.tag === 'dot') {
80
+ return ofRange(span(ast.receiver), span(ast.ident));
81
+ }
82
+ if (ast.tag === 'functionCall') {
83
+ return ofRange(span(ast.callee), ofToken(ast.end));
84
+ }
85
+ if (ast.tag === 'ident') {
86
+ return ofToken(ast.t);
87
+ }
88
+ if (ast.tag === 'if') {
89
+ return ofRange(span(ast.condition), span(ast.negative));
90
+ }
91
+ if (ast.tag === 'indexAccess') {
92
+ return ofRange(span(ast.receiver), span(ast.index));
93
+ }
94
+ if (ast.tag === 'lambda') {
95
+ return ofRange(ofToken(ast.start), span(ast.body));
96
+ }
97
+ if (ast.tag === 'literal') {
98
+ return ofToken(ast.t);
99
+ }
100
+ if (ast.tag === 'objectLiteral') {
101
+ return ofRange(ofToken(ast.start), ofToken(ast.end));
102
+ }
103
+ if (ast.tag === 'topLevelExpression') {
104
+ const d0 = ast.definitions.find(Boolean);
105
+ const comp = span(ast.computation);
106
+ return ofRange(d0 ? ofToken(d0.start) : comp, comp);
107
+ }
108
+ if (ast.tag === 'unaryOperator') {
109
+ return ofRange(ofToken(ast.operatorToken), span(ast.operand));
110
+ }
111
+ (0, should_never_happen_1.shouldNeverHappen)(ast);
112
+ }
113
+ exports.span = span;
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0LW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN0LW5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsK0RBQXlEO0FBbUZ6RCxTQUFnQixJQUFJLENBQUMsR0FBd0I7SUFDM0MsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3RCLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtLQUM5QztJQUNELElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxjQUFjLEVBQUU7UUFDOUIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLFNBQVMsRUFBRTtnQkFDdkIsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO2FBQ2pCO1lBRUQsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRTtnQkFDdEIsT0FBTyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTthQUN6QjtZQUVELElBQUEsdUNBQWlCLEVBQUMsQ0FBQyxDQUFDLENBQUE7UUFDdEIsQ0FBQyxDQUFDLENBQUE7UUFDRixPQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFBO0tBQy9CO0lBRUQsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLGdCQUFnQixFQUFFO1FBQ2hDLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFBO0tBQzdEO0lBRUQsSUFB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
@@ -0,0 +1,33 @@
1
+ import { Parser } from './parser';
2
+ import { Result, ResultSink } from './result';
3
+ import { Verbosity } from './runtime';
4
+ interface Options {
5
+ /**
6
+ * A callback function to be invoked when the CDL program evaluated to `sink`. Allows the caller to determine which
7
+ * value will be returned in that case. For instance, passing `() => undefined` will translate a `sink` value to
8
+ * `undefined`. The default behavior is to throw an error.
9
+ */
10
+ onSink?: (res: ResultSink) => unknown;
11
+ }
12
+ export declare class Cdl {
13
+ readonly input: string;
14
+ private readonly scanner;
15
+ private readonly sourceCode;
16
+ private readonly parser;
17
+ /**
18
+ * Runs a CDL program and returns the value it evaluates to. If it evaluates to `sink`, returns the value computed
19
+ * by `options.onSink()` - if present, or throws an error - otherwise.
20
+ *
21
+ * This method is the simplest way to evaluate a CDL program. One can also use `.compute()` to get a higher degree
22
+ * of details about the result.
23
+ *
24
+ * @param input the source code of the CDL program
25
+ * @param options
26
+ * @returns the value that `input` evaluates to
27
+ */
28
+ static run(input: string, options?: Options): unknown;
29
+ constructor(input: string);
30
+ compute(verbosity?: Verbosity): Result;
31
+ }
32
+ export declare function parse(arg: string | Parser): import("./ast-node").AstNode;
33
+ export {};
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parse = exports.Cdl = void 0;
4
+ const parser_1 = require("./parser");
5
+ const result_1 = require("./result");
6
+ const runtime_1 = require("./runtime");
7
+ const scanner_1 = require("./scanner");
8
+ const should_never_happen_1 = require("./should-never-happen");
9
+ const source_code_1 = require("./source-code");
10
+ class Cdl {
11
+ constructor(input) {
12
+ this.input = input;
13
+ this.sourceCode = new source_code_1.SourceCode(this.input);
14
+ this.scanner = new scanner_1.Scanner(this.sourceCode);
15
+ this.parser = new parser_1.Parser(this.scanner);
16
+ }
17
+ /**
18
+ * Runs a CDL program and returns the value it evaluates to. If it evaluates to `sink`, returns the value computed
19
+ * by `options.onSink()` - if present, or throws an error - otherwise.
20
+ *
21
+ * This method is the simplest way to evaluate a CDL program. One can also use `.compute()` to get a higher degree
22
+ * of details about the result.
23
+ *
24
+ * @param input the source code of the CDL program
25
+ * @param options
26
+ * @returns the value that `input` evaluates to
27
+ */
28
+ static run(input, options) {
29
+ const onSink = options?.onSink ??
30
+ ((r) => {
31
+ throw new Error(r.message);
32
+ });
33
+ const res = new Cdl(input).compute();
34
+ if (res.tag === 'ok') {
35
+ return res.value;
36
+ }
37
+ if (res.tag === 'sink') {
38
+ return onSink(res);
39
+ }
40
+ (0, should_never_happen_1.shouldNeverHappen)(res);
41
+ }
42
+ compute(verbosity = 'quiet') {
43
+ const ast = parse(this.parser);
44
+ const runtime = new runtime_1.Runtime(ast, verbosity, this.parser);
45
+ const c = runtime.compute();
46
+ if (c.value) {
47
+ if (!c.value.isSink()) {
48
+ return { value: c.value.export(), tag: 'ok' };
49
+ }
50
+ return new result_1.ResultSinkImpl(c.value, this.sourceCode);
51
+ }
52
+ const runtimeErrorMessage = `${c.errorMessage} when evaluating:\n${this.sourceCode.formatTrace(c.expressionTrace)}`;
53
+ throw new Error(runtimeErrorMessage);
54
+ }
55
+ }
56
+ exports.Cdl = Cdl;
57
+ function parse(arg) {
58
+ const parser = typeof arg === 'string' ? new parser_1.Parser(new scanner_1.Scanner(new source_code_1.SourceCode(arg))) : arg;
59
+ const ast = parser.parse();
60
+ return ast;
61
+ }
62
+ exports.parse = parse;
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NkbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBaUM7QUFDakMscUNBQTZEO0FBQzdELHVDQUE4QztBQUM5Qyx1Q0FBbUM7QUFDbkMsK0RBQXlEO0FBQ3pELCtDQUEwQztBQVcxQyxNQUFhLEdBQUc7SUFrQ2QsWUFBcUIsS0FBYTtRQUFiLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLHdCQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxpQkFBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUMzQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN4QyxDQUFDO0lBakNEOzs7Ozs7Ozs7O09BVUc7SUFDSCxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQWEsRUFBRSxPQUFpQjtRQUN6QyxNQUFNLE1BQU0sR0FDVixPQUFPLEVBQUUsTUFBTTtZQUNmLENBQUMsQ0FBQyxDQUFhLEVBQUUsRUFBRTtnQkFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDNUIsQ0FBQyxDQUFDLENBQUE7UUFDSixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNwQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQ3BCLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQTtTQUNqQjtRQUVELElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxNQUFNLEVBQUU7WUFDdEIsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7U0FDbkI7UUFFRCxJQUFBLHVDQUFpQixFQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3hCLENBQUM7SUFRRCxPQUFPLENBQUMsWUFBdUIsT0FBTztRQUNwQyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzlCLE1BQU0sT0FBTyxHQUFHLElBQUksaUJBQU8sQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN4RCxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7UUFFM0IsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO1lBQ1gsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ3JCLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUE7YUFDOUM7WUFDRCxPQUFPLElBQUksdUJBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtTQUNwRDtRQUVELE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDLENBQUMsWUFBWSxzQkFBc0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUE7UUFDbkgsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0lBQ3RDLENBQUM7Q0FDRjtBQXZERCxrQkF1REM7QUFFRCxTQUFnQixLQUFLLENBQUMsR0FBb0I7SUFDeEMsTUFBTSxNQUFNLEdBQUcsT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLGVBQU0sQ0FBQyxJQUFJLGlCQUFPLENBQUMsSUFBSSx3QkFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBO0lBQzNGLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUMxQixPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUM7QUFKRCxzQkFJQyJ9
@@ -0,0 +1 @@
1
+ export declare function extractMessage(e: unknown): string | unknown;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractMessage = void 0;
4
+ function extractMessage(e) {
5
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
6
+ const typed = e;
7
+ return typed.message;
8
+ }
9
+ exports.extractMessage = extractMessage;
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdC1tZXNzYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4dHJhY3QtbWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxTQUFnQixjQUFjLENBQUMsQ0FBVTtJQUN2Qyx5RUFBeUU7SUFDekUsTUFBTSxLQUFLLEdBQUcsQ0FBeUIsQ0FBQTtJQUN2QyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUE7QUFDdEIsQ0FBQztBQUpELHdDQUlDIn0=
@@ -0,0 +1 @@
1
+ export declare function failMe<R>(hint?: string): NonNullable<R>;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.failMe = void 0;
4
+ function failMe(hint) {
5
+ if (!hint) {
6
+ throw new Error(`This expression must never be evaluated`);
7
+ }
8
+ throw new Error(`Bad value: ${hint}`);
9
+ }
10
+ exports.failMe = failMe;
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFpbC1tZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYWlsLW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQWdCLE1BQU0sQ0FBSSxJQUFhO0lBQ3JDLElBQUksQ0FBQyxJQUFJLEVBQUU7UUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUE7S0FDM0Q7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUMsQ0FBQTtBQUN2QyxDQUFDO0FBTkQsd0JBTUMifQ==
@@ -0,0 +1,15 @@
1
+ import { Value } from './value';
2
+ export declare type CallEvaluator = (callable: Value, args: Value[]) => Value;
3
+ /**
4
+ * return an implementation for array methods. The following Array methods were not implemented
5
+ * as it is hard to find an intuitive immutable API due to their mutable nature:
6
+ * - copyWithin
7
+ * - fill
8
+ * - forEach
9
+ * - keys
10
+ * - pop
11
+ * - push
12
+ * - shift
13
+ * - unshift
14
+ */
15
+ export declare function findArrayMethod(arr: unknown[], index: string, callEvaluator: CallEvaluator): Value;
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findArrayMethod = void 0;
4
+ const value_1 = require("./value");
5
+ /**
6
+ * return an implementation for array methods. The following Array methods were not implemented
7
+ * as it is hard to find an intuitive immutable API due to their mutable nature:
8
+ * - copyWithin
9
+ * - fill
10
+ * - forEach
11
+ * - keys
12
+ * - pop
13
+ * - push
14
+ * - shift
15
+ * - unshift
16
+ */
17
+ function findArrayMethod(arr, index, callEvaluator) {
18
+ const adjustedCallback = (callback) => (...args) => callEvaluator(callback, args.map(x => value_1.Value.from(x)));
19
+ const adjustedPredicate = (predicate) => (...args) => callEvaluator(predicate, args.map(x => value_1.Value.from(x))).assertBool();
20
+ if (index === 'at') {
21
+ return value_1.Value.foreign(n => arr.at(n.assertNum()));
22
+ }
23
+ if (index === 'concat') {
24
+ return value_1.Value.foreign(arg => arr.concat(arg.assertArr()));
25
+ }
26
+ if (index === 'entries') {
27
+ return value_1.Value.foreign(() => [...arr.entries()]);
28
+ }
29
+ if (index === 'every') {
30
+ return value_1.Value.foreign(predicate => arr.every(adjustedPredicate(predicate)));
31
+ }
32
+ if (index === 'filter') {
33
+ return value_1.Value.foreign(predicate => arr.filter(adjustedPredicate(predicate)));
34
+ }
35
+ if (index === 'find') {
36
+ return value_1.Value.foreign(predicate => arr.find(adjustedPredicate(predicate)));
37
+ }
38
+ if (index === 'findIndex') {
39
+ return value_1.Value.foreign(predicate => arr.findIndex(adjustedPredicate(predicate)));
40
+ }
41
+ if (index === 'flatMap') {
42
+ return value_1.Value.foreign(callback => flatten(arr.map(adjustedCallback(callback))));
43
+ }
44
+ if (index === 'flat') {
45
+ return value_1.Value.foreign(() => flatten(arr));
46
+ }
47
+ if (index === 'includes') {
48
+ return value_1.Value.foreign((arg) => arr.some(curr => value_1.Value.from(curr).equalsTo(arg).isTrue()));
49
+ }
50
+ if (index === 'indexOf') {
51
+ return value_1.Value.foreign(arg => arr.findIndex(curr => value_1.Value.from(curr).equalsTo(arg).isTrue()));
52
+ }
53
+ if (index === 'join') {
54
+ return value_1.Value.foreign(arg => arr.join(arg.assertStr()));
55
+ }
56
+ if (index === 'lastIndexOf') {
57
+ return value_1.Value.foreign(arg => {
58
+ for (let i = arr.length - 1; i >= 0; --i) {
59
+ if (value_1.Value.from(arr[i]).equalsTo(arg).isTrue()) {
60
+ return i;
61
+ }
62
+ }
63
+ return -1;
64
+ });
65
+ }
66
+ if (index === 'length') {
67
+ return value_1.Value.num(arr.length);
68
+ }
69
+ if (index === 'map') {
70
+ return value_1.Value.foreign(callback => arr.map(adjustedCallback(callback)));
71
+ }
72
+ if (index === 'reverse') {
73
+ return value_1.Value.foreign(() => [...arr].reverse());
74
+ }
75
+ if (index === 'reduce') {
76
+ return value_1.Value.foreign((callback, initialValue) => arr.reduce(adjustedCallback(callback), initialValue));
77
+ }
78
+ if (index === 'reduceRight') {
79
+ return value_1.Value.foreign((callback, initialValue) => arr.reduceRight(adjustedCallback(callback), initialValue));
80
+ }
81
+ if (index === 'slice') {
82
+ return value_1.Value.foreign((start, end) => arr.slice(start?.assertNum(), end?.assertNum()));
83
+ }
84
+ if (index === 'some') {
85
+ return value_1.Value.foreign(predicate => arr.some(adjustedPredicate(predicate)));
86
+ }
87
+ throw new Error(`Unrecognized array method: ${index}`);
88
+ }
89
+ exports.findArrayMethod = findArrayMethod;
90
+ function flatten(input) {
91
+ const ret = [];
92
+ for (const curr of input) {
93
+ const v = value_1.Value.from(curr);
94
+ const unwrapped = v.unwrap();
95
+ if (Array.isArray(unwrapped)) {
96
+ ret.push(...unwrapped);
97
+ }
98
+ else {
99
+ ret.push(v);
100
+ }
101
+ }
102
+ return ret;
103
+ }
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1hcnJheS1tZXRob2QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmluZC1hcnJheS1tZXRob2QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQStCO0FBRy9COzs7Ozs7Ozs7OztHQVdHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLEdBQWMsRUFBRSxLQUFhLEVBQUUsYUFBNEI7SUFDekYsTUFBTSxnQkFBZ0IsR0FDcEIsQ0FBQyxRQUFlLEVBQUUsRUFBRSxDQUNwQixDQUFDLEdBQUcsSUFBZSxFQUFFLEVBQUUsQ0FDckIsYUFBYSxDQUNYLFFBQVEsRUFDUixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUM3QixDQUFBO0lBRUwsTUFBTSxpQkFBaUIsR0FDckIsQ0FBQyxTQUFnQixFQUFFLEVBQUUsQ0FDckIsQ0FBQyxHQUFHLElBQWUsRUFBRSxFQUFFLENBQ3JCLGFBQWEsQ0FDWCxTQUFTLEVBQ1QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGFBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDN0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtJQUVsQixJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7UUFDbEIsT0FBTyxhQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFBO0tBQ2pEO0lBQ0QsSUFBSSxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQ3RCLE9BQU8sYUFBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQTtLQUN6RDtJQUNELElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtRQUN2QixPQUFPLGFBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUE7S0FDL0M7SUFDRCxJQUFJLEtBQUssS0FBSyxPQUFPLEVBQUU7UUFDckIsT0FBTyxhQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDM0U7SUFDRCxJQUFJLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDdEIsT0FBTyxhQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDNUU7SUFDRCxJQUFJLEtBQUssS0FBSyxNQUFNLEVBQUU7UUFDcEIsT0FBTyxhQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDMUU7SUFDRCxJQUFJLEtBQUssS0FBSyxXQUFXLEVBQUU7UUFDekIsT0FBTyxhQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDL0U7SUFDRCxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7UUFDdkIsT0FBTyxhQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDL0U7SUFDRCxJQUFJLEtBQUssS0FBSyxNQUFNLEVBQUU7UUFDcEIsT0FBTyxhQUFLLENBQUMsT0FB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
@@ -0,0 +1,2 @@
1
+ import { Value } from './value';
2
+ export declare function findStringMethod(s: string, indexValue: string | Value): Value;
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findStringMethod = void 0;
4
+ const value_1 = require("./value");
5
+ function findStringMethod(s, indexValue) {
6
+ const index = value_1.Value.toStringOrNumber(indexValue);
7
+ if (typeof index === 'number') {
8
+ throw new Error(`Index is of type number - not supported`);
9
+ }
10
+ if (index === 'at') {
11
+ return value_1.Value.foreign(n => s.at(n.assertNum()));
12
+ }
13
+ if (index === 'charAt') {
14
+ return value_1.Value.foreign(n => s.charAt(n.assertNum()));
15
+ }
16
+ if (index === 'concat') {
17
+ return value_1.Value.foreign(arg => s.concat(arg.assertStr()));
18
+ }
19
+ if (index === 'endsWith') {
20
+ return value_1.Value.foreign(arg => s.endsWith(arg.assertStr()));
21
+ }
22
+ if (index === 'includes') {
23
+ return value_1.Value.foreign(arg => s.includes(arg.assertStr()));
24
+ }
25
+ if (index === 'indexOf') {
26
+ return value_1.Value.foreign(searchString => s.indexOf(searchString.assertStr()));
27
+ }
28
+ if (index === 'lastIndexOf') {
29
+ return value_1.Value.foreign(searchString => s.lastIndexOf(searchString.assertStr()));
30
+ }
31
+ if (index === 'length') {
32
+ return value_1.Value.num(s.length);
33
+ }
34
+ if (index === 'match') {
35
+ return value_1.Value.foreign(r => s.match(r.assertStr()));
36
+ }
37
+ if (index === 'matchAll') {
38
+ return value_1.Value.foreign(r => [...s.matchAll(new RegExp(r.assertStr(), 'g'))]);
39
+ }
40
+ if (index === 'padEnd') {
41
+ return value_1.Value.foreign((maxLength, fillString) => s.padEnd(maxLength.assertNum(), fillString?.assertStr()));
42
+ }
43
+ if (index === 'padStart') {
44
+ return value_1.Value.foreign((maxLength, fillString) => s.padStart(maxLength.assertNum(), fillString?.assertStr()));
45
+ }
46
+ if (index === 'repeat') {
47
+ return value_1.Value.foreign(count => s.repeat(count.assertNum()));
48
+ }
49
+ if (index === 'replace') {
50
+ return value_1.Value.foreign((searchValue, replacer) => s.replace(searchValue.assertStr(), replacer.assertStr()));
51
+ }
52
+ if (index === 'replaceAll') {
53
+ return value_1.Value.foreign((searchValue, replacer) => s.replaceAll(searchValue.assertStr(), replacer.assertStr()));
54
+ }
55
+ if (index === 'search') {
56
+ return value_1.Value.foreign(searcher => s.search(searcher.assertStr()));
57
+ }
58
+ if (index === 'slice') {
59
+ return value_1.Value.foreign((start, end) => s.slice(start?.assertNum(), end?.assertNum()));
60
+ }
61
+ if (index === 'split') {
62
+ return value_1.Value.foreign(splitter => s.split(splitter.assertStr()));
63
+ }
64
+ if (index === 'startsWith') {
65
+ return value_1.Value.foreign(arg => s.startsWith(arg.assertStr()));
66
+ }
67
+ if (index === 'substring') {
68
+ return value_1.Value.foreign((start, end) => s.substring(start.assertNum(), end?.assertNum()));
69
+ }
70
+ if (index === 'toLowerCase') {
71
+ return value_1.Value.foreign(() => s.toLowerCase());
72
+ }
73
+ if (index === 'toUpperCase') {
74
+ return value_1.Value.foreign(() => s.toUpperCase());
75
+ }
76
+ if (index === 'trim') {
77
+ return value_1.Value.foreign(() => s.trim());
78
+ }
79
+ if (index === 'trimEnd') {
80
+ return value_1.Value.foreign(() => s.trimEnd());
81
+ }
82
+ if (index === 'trimStart') {
83
+ return value_1.Value.foreign(() => s.trimStart());
84
+ }
85
+ throw new Error(`Unrecognized string method: ${index}`);
86
+ }
87
+ exports.findStringMethod = findStringMethod;
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1zdHJpbmctbWV0aG9kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZpbmQtc3RyaW5nLW1ldGhvZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBK0I7QUFFL0IsU0FBZ0IsZ0JBQWdCLENBQUMsQ0FBUyxFQUFFLFVBQTBCO0lBQ3BFLE1BQU0sS0FBSyxHQUFHLGFBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNoRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUE7S0FDM0Q7SUFDRCxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7UUFDbEIsT0FBTyxhQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFBO0tBQy9DO0lBQ0QsSUFBSSxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQ3RCLE9BQU8sYUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQTtLQUNuRDtJQUNELElBQUksS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUN0QixPQUFPLGFBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUE7S0FDdkQ7SUFDRCxJQUFJLEtBQUssS0FBSyxVQUFVLEVBQUU7UUFDeEIsT0FBTyxhQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFBO0tBQ3pEO0lBQ0Qs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
@@ -0,0 +1 @@
1
+ export * from './cdl';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./cdl"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdDQUFxQiJ9
@@ -0,0 +1,11 @@
1
+ export interface Location {
2
+ readonly offset: number;
3
+ }
4
+ export interface Span {
5
+ from: Location;
6
+ to: Location;
7
+ }
8
+ export interface Location2d {
9
+ line: number;
10
+ col: number;
11
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9jYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1,37 @@
1
+ import { AstNode, Let } from './ast-node';
2
+ import { Scanner, Token } from './scanner';
3
+ export declare class Parser {
4
+ private readonly scanner;
5
+ constructor(scanner: Scanner);
6
+ parse(): AstNode;
7
+ definitions(): Let[];
8
+ expression(): AstNode;
9
+ lambda(): AstNode;
10
+ ifExpression(): AstNode;
11
+ unsink(): AstNode;
12
+ or(): AstNode;
13
+ and(): AstNode;
14
+ equality(): AstNode;
15
+ comparison(): AstNode;
16
+ addition(): AstNode;
17
+ multiplication(): AstNode;
18
+ power(): AstNode;
19
+ unary(): AstNode;
20
+ call(): AstNode;
21
+ private actualArgList;
22
+ memberAccess(): AstNode;
23
+ parenthesized(): AstNode;
24
+ literalOrIdent(): AstNode;
25
+ /**
26
+ * This method assumes that the caller consumed the opening '[' token. It consumes the array's elements
27
+ * (comma-separated list of expressions) as well as the closing ']' token.
28
+ */
29
+ arrayBody(start: Token): AstNode;
30
+ /**
31
+ * This method assumes that the caller consumed the opening '{' token. It consumes the object's attributes
32
+ * (comma-separated list of key:value parirs) as well as the closing '}' token.
33
+ */
34
+ objectBody(start: Token): AstNode;
35
+ private identifier;
36
+ private maybeIdentifier;
37
+ }