septima-lang 0.0.7 → 0.0.8

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 (70) hide show
  1. package/dist/src/ast-node.d.ts +103 -0
  2. package/dist/src/ast-node.js +156 -0
  3. package/dist/src/extract-message.d.ts +1 -0
  4. package/dist/src/extract-message.js +10 -0
  5. package/dist/src/fail-me.d.ts +1 -0
  6. package/dist/src/fail-me.js +11 -0
  7. package/dist/src/find-array-method.d.ts +15 -0
  8. package/dist/src/find-array-method.js +104 -0
  9. package/dist/src/find-string-method.d.ts +2 -0
  10. package/dist/src/find-string-method.js +88 -0
  11. package/dist/src/index.d.ts +1 -0
  12. package/dist/src/index.js +18 -0
  13. package/dist/src/location.d.ts +11 -0
  14. package/dist/src/location.js +3 -0
  15. package/dist/src/parser.d.ts +45 -0
  16. package/dist/src/parser.js +483 -0
  17. package/dist/src/result.d.ts +24 -0
  18. package/dist/src/result.js +29 -0
  19. package/dist/src/runtime.d.ts +28 -0
  20. package/dist/src/runtime.js +351 -0
  21. package/dist/src/scanner.d.ts +23 -0
  22. package/dist/src/scanner.js +88 -0
  23. package/dist/src/septima.d.ts +32 -0
  24. package/dist/src/septima.js +91 -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 +6 -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/parser.spec.d.ts +1 -0
  38. package/dist/tests/parser.spec.js +35 -0
  39. package/dist/tests/septima-compute-module.spec.d.ts +1 -0
  40. package/dist/tests/septima-compute-module.spec.js +36 -0
  41. package/dist/tests/septima.spec.d.ts +1 -0
  42. package/dist/tests/septima.spec.js +845 -0
  43. package/dist/tests/value.spec.d.ts +1 -0
  44. package/dist/tests/value.spec.js +355 -0
  45. package/dist/tsconfig.tsbuildinfo +1 -0
  46. package/package.json +3 -3
  47. package/src/a.js +66 -0
  48. package/src/ast-node.ts +269 -0
  49. package/src/extract-message.ts +5 -0
  50. package/src/fail-me.ts +7 -0
  51. package/src/find-array-method.ts +115 -0
  52. package/src/find-string-method.ts +84 -0
  53. package/src/index.ts +1 -0
  54. package/src/location.ts +13 -0
  55. package/src/parser.ts +554 -0
  56. package/src/result.ts +45 -0
  57. package/src/runtime.ts +370 -0
  58. package/src/scanner.ts +106 -0
  59. package/src/septima.ts +121 -0
  60. package/src/should-never-happen.ts +4 -0
  61. package/src/source-code.ts +101 -0
  62. package/src/stack.ts +18 -0
  63. package/src/switch-on.ts +4 -0
  64. package/src/symbol-table.ts +7 -0
  65. package/src/value.ts +742 -0
  66. package/tests/parser.spec.ts +36 -0
  67. package/tests/septima-compute-module.spec.ts +41 -0
  68. package/tests/septima.spec.ts +921 -0
  69. package/tests/value.spec.ts +387 -0
  70. package/main.js +0 -1
@@ -0,0 +1,103 @@
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 Import = {
9
+ start: Token;
10
+ ident: Ident;
11
+ pathToImportFrom: Token;
12
+ };
13
+ export declare type Literal = {
14
+ tag: 'literal';
15
+ type: 'str' | 'bool' | 'num' | 'sink' | 'sink!' | 'sink!!';
16
+ t: Token;
17
+ };
18
+ export declare type ObjectLiteralPart = {
19
+ tag: 'hardName';
20
+ k: Ident;
21
+ v: AstNode;
22
+ } | {
23
+ tag: 'computedName';
24
+ k: AstNode;
25
+ v: AstNode;
26
+ } | {
27
+ tag: 'spread';
28
+ o: AstNode;
29
+ };
30
+ export declare type ArrayLiteralPart = {
31
+ tag: 'element';
32
+ v: AstNode;
33
+ } | {
34
+ tag: 'spread';
35
+ v: AstNode;
36
+ };
37
+ export declare type Ident = {
38
+ tag: 'ident';
39
+ t: Token;
40
+ };
41
+ export declare type Lambda = {
42
+ tag: 'lambda';
43
+ start: Token;
44
+ formalArgs: Ident[];
45
+ body: AstNode;
46
+ };
47
+ export declare type Unit = {
48
+ tag: 'unit';
49
+ imports: Import[];
50
+ expression: AstNode;
51
+ };
52
+ export declare type AstNode = Ident | Literal | Unit | {
53
+ start: Token;
54
+ tag: 'arrayLiteral';
55
+ parts: ArrayLiteralPart[];
56
+ end: Token;
57
+ } | {
58
+ start: Token;
59
+ tag: 'objectLiteral';
60
+ parts: ObjectLiteralPart[];
61
+ end: Token;
62
+ } | {
63
+ tag: 'binaryOperator';
64
+ operator: '+' | '-' | '*' | '/' | '**' | '%' | '&&' | '||' | '>' | '<' | '>=' | '<=' | '==' | '!=' | '??';
65
+ lhs: AstNode;
66
+ rhs: AstNode;
67
+ } | {
68
+ tag: 'unaryOperator';
69
+ operatorToken: Token;
70
+ operator: '+' | '-' | '!';
71
+ operand: AstNode;
72
+ } | {
73
+ tag: 'topLevelExpression';
74
+ definitions: Let[];
75
+ computation?: AstNode;
76
+ } | Lambda | {
77
+ tag: 'ternary';
78
+ condition: AstNode;
79
+ positive: AstNode;
80
+ negative: AstNode;
81
+ } | {
82
+ tag: 'functionCall';
83
+ actualArgs: AstNode[];
84
+ callee: AstNode;
85
+ end: Token;
86
+ } | {
87
+ tag: 'if';
88
+ condition: AstNode;
89
+ positive: AstNode;
90
+ negative: AstNode;
91
+ } | {
92
+ tag: 'dot';
93
+ receiver: AstNode;
94
+ ident: Ident;
95
+ } | {
96
+ tag: 'indexAccess';
97
+ receiver: AstNode;
98
+ index: AstNode;
99
+ } | {
100
+ tag: 'export*';
101
+ };
102
+ export declare function show(ast: AstNode | AstNode[]): string;
103
+ export declare function span(ast: AstNode): Span;
@@ -0,0 +1,156 @@
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
+ const switch_on_1 = require("./switch-on");
6
+ function show(ast) {
7
+ if (Array.isArray(ast)) {
8
+ return ast.map(curr => show(curr)).join(', ');
9
+ }
10
+ if (ast.tag === 'arrayLiteral') {
11
+ const parts = ast.parts.map(p => {
12
+ if (p.tag === 'element') {
13
+ return show(p.v);
14
+ }
15
+ if (p.tag === 'spread') {
16
+ return `...${show(p.v)}`;
17
+ }
18
+ (0, should_never_happen_1.shouldNeverHappen)(p);
19
+ });
20
+ return `[${parts.join(', ')}]`;
21
+ }
22
+ if (ast.tag === 'binaryOperator') {
23
+ return `(${show(ast.lhs)} ${ast.operator} ${show(ast.rhs)})`;
24
+ }
25
+ if (ast.tag === 'dot') {
26
+ return `${show(ast.receiver)}.${show(ast.ident)}`;
27
+ }
28
+ if (ast.tag === 'export*') {
29
+ return `(export*)`;
30
+ }
31
+ if (ast.tag === 'ternary') {
32
+ return `${show(ast.condition)} ? ${show(ast.positive)} : ${show(ast.negative)}`;
33
+ }
34
+ if (ast.tag === 'functionCall') {
35
+ return `${show(ast.callee)}(${show(ast.actualArgs)})`;
36
+ }
37
+ if (ast.tag === 'ident') {
38
+ return ast.t.text;
39
+ }
40
+ if (ast.tag === 'if') {
41
+ return `if (${show(ast.condition)}) ${show(ast.positive)} else ${show(ast.negative)}`;
42
+ }
43
+ if (ast.tag === 'indexAccess') {
44
+ return `${show(ast.receiver)}[${show(ast.index)}]`;
45
+ }
46
+ if (ast.tag === 'lambda') {
47
+ return `fun (${show(ast.formalArgs)}) ${show(ast.body)}`;
48
+ }
49
+ if (ast.tag === 'literal') {
50
+ return (0, switch_on_1.switchOn)(ast.type, {
51
+ bool: () => ast.t.text,
52
+ num: () => ast.t.text,
53
+ sink: () => 'sink',
54
+ 'sink!': () => 'sink!',
55
+ 'sink!!': () => 'sink!!',
56
+ str: () => `'${ast.t.text}'`,
57
+ });
58
+ }
59
+ if (ast.tag === 'objectLiteral') {
60
+ const pairs = ast.parts.map(p => {
61
+ if (p.tag === 'computedName') {
62
+ return `[${show(p.k)}]: ${show(p.v)}`;
63
+ }
64
+ if (p.tag === 'hardName') {
65
+ return `${show(p.k)}: ${show(p.v)}`;
66
+ }
67
+ if (p.tag === 'spread') {
68
+ return `...${show(p.o)}`;
69
+ }
70
+ (0, should_never_happen_1.shouldNeverHappen)(p);
71
+ });
72
+ return `{${pairs.join(', ')}}`;
73
+ }
74
+ if (ast.tag === 'topLevelExpression') {
75
+ const defs = ast.definitions.map(d => `let ${show(d.ident)} = ${show(d.value)}`).join('; ');
76
+ const sep = defs && ast.computation ? ' ' : '';
77
+ return `${defs ? defs + ';' : ''}${sep}${ast.computation ? show(ast.computation) : ''}`;
78
+ }
79
+ if (ast.tag === 'unaryOperator') {
80
+ return `${ast.operator}${show(ast.operand)}`;
81
+ }
82
+ if (ast.tag === 'unit') {
83
+ const imports = ast.imports
84
+ .map(imp => `import * as ${show(imp.ident)} from '${imp.pathToImportFrom.text}';`)
85
+ .join('\n');
86
+ return `${imports ? imports + '\n' : ''}${show(ast.expression)}`;
87
+ }
88
+ (0, should_never_happen_1.shouldNeverHappen)(ast);
89
+ }
90
+ exports.show = show;
91
+ function span(ast) {
92
+ const ofRange = (a, b) => ({ from: a.from, to: b.to });
93
+ const ofToken = (t) => ({ from: t.location, to: { offset: t.location.offset + t.text.length - 1 } });
94
+ if (ast.tag === 'arrayLiteral') {
95
+ return ofRange(ofToken(ast.start), ofToken(ast.end));
96
+ }
97
+ if (ast.tag === 'binaryOperator') {
98
+ return ofRange(span(ast.lhs), span(ast.rhs));
99
+ }
100
+ if (ast.tag === 'dot') {
101
+ return ofRange(span(ast.receiver), span(ast.ident));
102
+ }
103
+ if (ast.tag === 'functionCall') {
104
+ return ofRange(span(ast.callee), ofToken(ast.end));
105
+ }
106
+ if (ast.tag === 'ident') {
107
+ return ofToken(ast.t);
108
+ }
109
+ if (ast.tag === 'export*') {
110
+ return { from: { offset: 0 }, to: { offset: 0 } };
111
+ }
112
+ if (ast.tag === 'if') {
113
+ return ofRange(span(ast.condition), span(ast.negative));
114
+ }
115
+ if (ast.tag === 'indexAccess') {
116
+ return ofRange(span(ast.receiver), span(ast.index));
117
+ }
118
+ if (ast.tag === 'lambda') {
119
+ return ofRange(ofToken(ast.start), span(ast.body));
120
+ }
121
+ if (ast.tag === 'ternary') {
122
+ return ofRange(span(ast.condition), span(ast.negative));
123
+ }
124
+ if (ast.tag === 'literal') {
125
+ return ofToken(ast.t);
126
+ }
127
+ if (ast.tag === 'objectLiteral') {
128
+ return ofRange(ofToken(ast.start), ofToken(ast.end));
129
+ }
130
+ if (ast.tag === 'topLevelExpression') {
131
+ if (ast.computation) {
132
+ const d0 = ast.definitions.find(Boolean);
133
+ const comp = span(ast.computation);
134
+ return ofRange(d0 ? ofToken(d0.start) : comp, comp);
135
+ }
136
+ else if (ast.definitions.length) {
137
+ const first = ast.definitions[0];
138
+ const last = ast.definitions[ast.definitions.length - 1];
139
+ return ofRange(ofToken(first.start), span(last.value));
140
+ }
141
+ else {
142
+ return { from: { offset: 0 }, to: { offset: 0 } };
143
+ }
144
+ }
145
+ if (ast.tag === 'unaryOperator') {
146
+ return ofRange(ofToken(ast.operatorToken), span(ast.operand));
147
+ }
148
+ if (ast.tag === 'unit') {
149
+ const i0 = ast.imports.find(Boolean);
150
+ const exp = span(ast.expression);
151
+ return ofRange(i0 ? ofToken(i0.start) : exp, exp);
152
+ }
153
+ (0, should_never_happen_1.shouldNeverHappen)(ast);
154
+ }
155
+ exports.span = span;
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0LW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN0LW5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsK0RBQXlEO0FBQ3pELDJDQUFzQztBQThHdEMsU0FBZ0IsSUFBSSxDQUFDLEdBQXdCO0lBQzNDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN0QixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7S0FDOUM7SUFDRCxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssY0FBYyxFQUFFO1FBQzlCLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzlCLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxTQUFTLEVBQUU7Z0JBQ3ZCLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTthQUNqQjtZQUVELElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUU7Z0JBQ3RCLE9BQU8sTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7YUFDekI7WUFFRCxJQUFBLHVDQUFpQixFQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3RCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQTtLQUMvQjtJQUVELElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxnQkFBZ0IsRUFBRTtRQUNoQyxPQUFPLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQTtL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
@@ -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 './septima';
@@ -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("./septima"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRDQUF5QiJ9
@@ -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,45 @@
1
+ import { AstNode, Import, Let, Literal, Unit } from './ast-node';
2
+ import { Scanner, Token } from './scanner';
3
+ export declare class Parser {
4
+ private readonly scanner;
5
+ constructor(scanner: Scanner);
6
+ parse(): Unit;
7
+ unit(): Unit;
8
+ imports(): Import[];
9
+ definitions(kind: 'TOP_LEVEL' | 'NESTED'): Let[];
10
+ expression(kind?: 'TOP_LEVEL' | 'NESTED'): AstNode;
11
+ lambda(): AstNode;
12
+ arrowFunction(): AstNode;
13
+ private lambdaBody;
14
+ ifExpression(): AstNode;
15
+ ternary(): AstNode;
16
+ unsink(): AstNode;
17
+ or(): AstNode;
18
+ and(): AstNode;
19
+ equality(): AstNode;
20
+ comparison(): AstNode;
21
+ addition(): AstNode;
22
+ multiplication(): AstNode;
23
+ power(): AstNode;
24
+ unary(): AstNode;
25
+ call(): AstNode;
26
+ private actualArgList;
27
+ memberAccess(): AstNode;
28
+ parenthesized(): AstNode;
29
+ literalOrIdent(): AstNode;
30
+ maybeLiteral(): AstNode | undefined;
31
+ maybePrimitiveLiteral(): Literal | undefined;
32
+ maybeCompositeLiteral(): AstNode | undefined;
33
+ /**
34
+ * This method assumes that the caller consumed the opening '[' token. It consumes the array's elements
35
+ * (comma-separated list of expressions) as well as the closing ']' token.
36
+ */
37
+ arrayBody(start: Token): AstNode;
38
+ /**
39
+ * This method assumes that the caller consumed the opening '{' token. It consumes the object's attributes
40
+ * (comma-separated list of key:value parirs) as well as the closing '}' token.
41
+ */
42
+ objectBody(start: Token): AstNode;
43
+ private identifier;
44
+ private maybeIdentifier;
45
+ }