greybel-interpreter 0.6.9 → 0.7.0

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 (83) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +2 -2
  3. package/dist/context.d.ts +98 -98
  4. package/dist/context.js +456 -456
  5. package/dist/cps.d.ts +17 -17
  6. package/dist/cps.js +872 -871
  7. package/dist/custom-types/boolean.d.ts +12 -12
  8. package/dist/custom-types/boolean.js +47 -47
  9. package/dist/custom-types/list.d.ts +26 -26
  10. package/dist/custom-types/list.js +236 -236
  11. package/dist/custom-types/map.d.ts +26 -26
  12. package/dist/custom-types/map.js +245 -245
  13. package/dist/custom-types/nil.d.ts +10 -10
  14. package/dist/custom-types/nil.js +44 -44
  15. package/dist/custom-types/number.d.ts +12 -12
  16. package/dist/custom-types/number.js +47 -47
  17. package/dist/custom-types/string.d.ts +25 -25
  18. package/dist/custom-types/string.js +172 -172
  19. package/dist/expressions/assign.d.ts +13 -13
  20. package/dist/expressions/assign.js +174 -174
  21. package/dist/expressions/binary-negated-expression.d.ts +18 -18
  22. package/dist/expressions/binary-negated-expression.js +127 -127
  23. package/dist/expressions/call.d.ts +14 -14
  24. package/dist/expressions/call.js +209 -208
  25. package/dist/expressions/import.d.ts +14 -14
  26. package/dist/expressions/import.js +155 -155
  27. package/dist/expressions/include.d.ts +13 -13
  28. package/dist/expressions/include.js +132 -132
  29. package/dist/expressions/list.d.ts +14 -14
  30. package/dist/expressions/list.js +142 -134
  31. package/dist/expressions/logical-and-binary.d.ts +22 -22
  32. package/dist/expressions/logical-and-binary.js +222 -222
  33. package/dist/expressions/map.d.ts +19 -19
  34. package/dist/expressions/map.js +197 -197
  35. package/dist/expressions/path.d.ts +31 -31
  36. package/dist/expressions/path.js +384 -383
  37. package/dist/index.d.ts +36 -36
  38. package/dist/index.js +89 -89
  39. package/dist/interpreter.d.ts +29 -29
  40. package/dist/interpreter.js +210 -210
  41. package/dist/operations/argument.d.ts +8 -8
  42. package/dist/operations/argument.js +145 -145
  43. package/dist/operations/body.d.ts +8 -8
  44. package/dist/operations/body.js +140 -140
  45. package/dist/operations/break.d.ts +7 -7
  46. package/dist/operations/break.js +34 -34
  47. package/dist/operations/continue.d.ts +7 -7
  48. package/dist/operations/continue.js +34 -34
  49. package/dist/operations/debugger.d.ts +7 -7
  50. package/dist/operations/debugger.js +32 -32
  51. package/dist/operations/else-if.d.ts +12 -12
  52. package/dist/operations/else-if.js +31 -31
  53. package/dist/operations/else.d.ts +10 -10
  54. package/dist/operations/else.js +30 -30
  55. package/dist/operations/for.d.ts +16 -16
  56. package/dist/operations/for.js +143 -143
  57. package/dist/operations/function.d.ts +26 -26
  58. package/dist/operations/function.js +145 -145
  59. package/dist/operations/if-statement.d.ts +8 -8
  60. package/dist/operations/if-statement.js +169 -169
  61. package/dist/operations/if.d.ts +12 -12
  62. package/dist/operations/if.js +31 -31
  63. package/dist/operations/new.d.ts +11 -11
  64. package/dist/operations/new.js +97 -96
  65. package/dist/operations/not.d.ts +11 -11
  66. package/dist/operations/not.js +96 -95
  67. package/dist/operations/reference.d.ts +11 -11
  68. package/dist/operations/reference.js +103 -102
  69. package/dist/operations/return.d.ts +11 -11
  70. package/dist/operations/return.js +106 -106
  71. package/dist/operations/while.d.ts +14 -14
  72. package/dist/operations/while.js +133 -133
  73. package/dist/resource.d.ts +9 -9
  74. package/dist/resource.js +29 -29
  75. package/dist/typer.d.ts +6 -6
  76. package/dist/typer.js +95 -95
  77. package/dist/types/custom-type.d.ts +22 -22
  78. package/dist/types/custom-type.js +67 -67
  79. package/dist/types/expression.d.ts +7 -7
  80. package/dist/types/expression.js +9 -9
  81. package/dist/types/operation.d.ts +10 -10
  82. package/dist/types/operation.js +38 -38
  83. package/package.json +44 -44
package/dist/cps.js CHANGED
@@ -1,871 +1,872 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- var __values = (this && this.__values) || function(o) {
39
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
40
- if (m) return m.call(o);
41
- if (o && typeof o.length === "number") return {
42
- next: function () {
43
- if (o && i >= o.length) o = void 0;
44
- return { value: o && o[i++], done: !o };
45
- }
46
- };
47
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
48
- };
49
- var __importDefault = (this && this.__importDefault) || function (mod) {
50
- return (mod && mod.__esModule) ? mod : { "default": mod };
51
- };
52
- Object.defineProperty(exports, "__esModule", { value: true });
53
- exports.CPSMap = void 0;
54
- var assign_1 = __importDefault(require("./expressions/assign"));
55
- var call_1 = __importDefault(require("./expressions/call"));
56
- var list_1 = __importDefault(require("./expressions/list"));
57
- var logical_and_binary_1 = __importDefault(require("./expressions/logical-and-binary"));
58
- var map_1 = __importDefault(require("./expressions/map"));
59
- var path_1 = __importDefault(require("./expressions/path"));
60
- var binary_negated_expression_1 = __importDefault(require("./expressions/binary-negated-expression"));
61
- var include_1 = __importDefault(require("./expressions/include"));
62
- var import_1 = __importDefault(require("./expressions/import"));
63
- var argument_1 = __importDefault(require("./operations/argument"));
64
- var while_1 = __importDefault(require("./operations/while"));
65
- var for_1 = __importDefault(require("./operations/for"));
66
- var return_1 = __importDefault(require("./operations/return"));
67
- var reference_1 = __importDefault(require("./operations/reference"));
68
- var new_1 = __importDefault(require("./operations/new"));
69
- var not_1 = __importDefault(require("./operations/not"));
70
- var if_statement_1 = __importDefault(require("./operations/if-statement"));
71
- var if_1 = __importDefault(require("./operations/if"));
72
- var else_if_1 = __importDefault(require("./operations/else-if"));
73
- var else_1 = __importDefault(require("./operations/else"));
74
- var continue_1 = __importDefault(require("./operations/continue"));
75
- var break_1 = __importDefault(require("./operations/break"));
76
- var body_1 = __importDefault(require("./operations/body"));
77
- var debugger_1 = __importDefault(require("./operations/debugger"));
78
- var function_1 = __importDefault(require("./operations/function"));
79
- var boolean_1 = __importDefault(require("./custom-types/boolean"));
80
- var number_1 = __importDefault(require("./custom-types/number"));
81
- var string_1 = __importDefault(require("./custom-types/string"));
82
- var nil_1 = __importDefault(require("./custom-types/nil"));
83
- var expression_1 = require("./types/expression");
84
- var operation_1 = require("./types/operation");
85
- var CPSMap = function (visit, context) {
86
- return {
87
- 'AssignmentStatement': function (item) {
88
- return new assign_1.default(item).prepare(visit);
89
- },
90
- 'MemberExpression': function (item) {
91
- return new path_1.default(item).prepare(visit);
92
- },
93
- 'FunctionDeclaration': function (item) {
94
- return __awaiter(this, void 0, void 0, function () {
95
- var args, body, _a, _b, parameterItem, _c, _d, e_1_1, _e, _f, bodyItem, _g, _h, e_2_1;
96
- var e_1, _j, e_2, _k;
97
- return __generator(this, function (_l) {
98
- switch (_l.label) {
99
- case 0:
100
- args = new argument_1.default(item.parameters);
101
- body = new body_1.default(item.body);
102
- _l.label = 1;
103
- case 1:
104
- _l.trys.push([1, 6, 7, 8]);
105
- _a = __values(item.parameters), _b = _a.next();
106
- _l.label = 2;
107
- case 2:
108
- if (!!_b.done) return [3 /*break*/, 5];
109
- parameterItem = _b.value;
110
- _d = (_c = args.stack).push;
111
- return [4 /*yield*/, visit(parameterItem)];
112
- case 3:
113
- _d.apply(_c, [_l.sent()]);
114
- _l.label = 4;
115
- case 4:
116
- _b = _a.next();
117
- return [3 /*break*/, 2];
118
- case 5: return [3 /*break*/, 8];
119
- case 6:
120
- e_1_1 = _l.sent();
121
- e_1 = { error: e_1_1 };
122
- return [3 /*break*/, 8];
123
- case 7:
124
- try {
125
- if (_b && !_b.done && (_j = _a.return)) _j.call(_a);
126
- }
127
- finally { if (e_1) throw e_1.error; }
128
- return [7 /*endfinally*/];
129
- case 8:
130
- _l.trys.push([8, 13, 14, 15]);
131
- _e = __values(item.body), _f = _e.next();
132
- _l.label = 9;
133
- case 9:
134
- if (!!_f.done) return [3 /*break*/, 12];
135
- bodyItem = _f.value;
136
- _h = (_g = body.stack).push;
137
- return [4 /*yield*/, visit(bodyItem)];
138
- case 10:
139
- _h.apply(_g, [_l.sent()]);
140
- _l.label = 11;
141
- case 11:
142
- _f = _e.next();
143
- return [3 /*break*/, 9];
144
- case 12: return [3 /*break*/, 15];
145
- case 13:
146
- e_2_1 = _l.sent();
147
- e_2 = { error: e_2_1 };
148
- return [3 /*break*/, 15];
149
- case 14:
150
- try {
151
- if (_f && !_f.done && (_k = _e.return)) _k.call(_e);
152
- }
153
- finally { if (e_2) throw e_2.error; }
154
- return [7 /*endfinally*/];
155
- case 15: return [2 /*return*/, new function_1.default(item, {
156
- args: args,
157
- body: body
158
- })];
159
- }
160
- });
161
- });
162
- },
163
- 'MapConstructorExpression': function (item) {
164
- return new map_1.default(item).prepare(visit);
165
- },
166
- 'Identifier': function (item) {
167
- return new path_1.default(item).prepare(visit);
168
- },
169
- 'ReturnStatement': function (item) {
170
- return __awaiter(this, void 0, void 0, function () {
171
- var arg;
172
- return __generator(this, function (_a) {
173
- switch (_a.label) {
174
- case 0: return [4 /*yield*/, visit(item.argument)];
175
- case 1:
176
- arg = _a.sent();
177
- return [2 /*return*/, new return_1.default(item, {
178
- arg: arg
179
- })];
180
- }
181
- });
182
- });
183
- },
184
- 'NumericLiteral': function (item) {
185
- return Promise.resolve(
186
- // @ts-ignore: Key is always a literal
187
- new number_1.default(item.value));
188
- },
189
- 'WhileStatement': function (item) {
190
- return __awaiter(this, void 0, void 0, function () {
191
- var body, condition, _a, _b, bodyItem, _c, _d, e_3_1;
192
- var e_3, _e;
193
- return __generator(this, function (_f) {
194
- switch (_f.label) {
195
- case 0:
196
- body = new body_1.default(item.body);
197
- return [4 /*yield*/, visit(item.condition)];
198
- case 1:
199
- condition = _f.sent();
200
- _f.label = 2;
201
- case 2:
202
- _f.trys.push([2, 7, 8, 9]);
203
- _a = __values(item.body), _b = _a.next();
204
- _f.label = 3;
205
- case 3:
206
- if (!!_b.done) return [3 /*break*/, 6];
207
- bodyItem = _b.value;
208
- _d = (_c = body.stack).push;
209
- return [4 /*yield*/, visit(bodyItem)];
210
- case 4:
211
- _d.apply(_c, [_f.sent()]);
212
- _f.label = 5;
213
- case 5:
214
- _b = _a.next();
215
- return [3 /*break*/, 3];
216
- case 6: return [3 /*break*/, 9];
217
- case 7:
218
- e_3_1 = _f.sent();
219
- e_3 = { error: e_3_1 };
220
- return [3 /*break*/, 9];
221
- case 8:
222
- try {
223
- if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
224
- }
225
- finally { if (e_3) throw e_3.error; }
226
- return [7 /*endfinally*/];
227
- case 9: return [2 /*return*/, new while_1.default(item, {
228
- body: body,
229
- condition: condition
230
- })];
231
- }
232
- });
233
- });
234
- },
235
- 'StringLiteral': function (item) {
236
- return Promise.resolve(
237
- // @ts-ignore: Key is always a literal
238
- new string_1.default(item.value));
239
- },
240
- 'IndexExpression': function (item) {
241
- return new path_1.default(item).prepare(visit);
242
- },
243
- 'FeatureEnvarExpression': function (_item) {
244
- throw new Error('Not supported');
245
- },
246
- 'IfShortcutStatement': function (item) {
247
- return __awaiter(this, void 0, void 0, function () {
248
- var op, _a, _b, clausesItem, _c, _d, e_4_1;
249
- var e_4, _e;
250
- return __generator(this, function (_f) {
251
- switch (_f.label) {
252
- case 0:
253
- op = new if_statement_1.default(item);
254
- _f.label = 1;
255
- case 1:
256
- _f.trys.push([1, 6, 7, 8]);
257
- _a = __values(item.clauses), _b = _a.next();
258
- _f.label = 2;
259
- case 2:
260
- if (!!_b.done) return [3 /*break*/, 5];
261
- clausesItem = _b.value;
262
- _d = (_c = op.clauses).push;
263
- return [4 /*yield*/, visit(clausesItem)];
264
- case 3:
265
- _d.apply(_c, [_f.sent()]);
266
- _f.label = 4;
267
- case 4:
268
- _b = _a.next();
269
- return [3 /*break*/, 2];
270
- case 5: return [3 /*break*/, 8];
271
- case 6:
272
- e_4_1 = _f.sent();
273
- e_4 = { error: e_4_1 };
274
- return [3 /*break*/, 8];
275
- case 7:
276
- try {
277
- if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
278
- }
279
- finally { if (e_4) throw e_4.error; }
280
- return [7 /*endfinally*/];
281
- case 8: return [2 /*return*/, op];
282
- }
283
- });
284
- });
285
- },
286
- 'IfShortcutClause': function (item) {
287
- return __awaiter(this, void 0, void 0, function () {
288
- var body, condition, _a, _b, bodyItem, _c, _d, e_5_1;
289
- var e_5, _e;
290
- return __generator(this, function (_f) {
291
- switch (_f.label) {
292
- case 0:
293
- body = new body_1.default(item.body);
294
- return [4 /*yield*/, visit(item.condition)];
295
- case 1:
296
- condition = _f.sent();
297
- _f.label = 2;
298
- case 2:
299
- _f.trys.push([2, 7, 8, 9]);
300
- _a = __values(item.body), _b = _a.next();
301
- _f.label = 3;
302
- case 3:
303
- if (!!_b.done) return [3 /*break*/, 6];
304
- bodyItem = _b.value;
305
- _d = (_c = body.stack).push;
306
- return [4 /*yield*/, visit(bodyItem)];
307
- case 4:
308
- _d.apply(_c, [_f.sent()]);
309
- _f.label = 5;
310
- case 5:
311
- _b = _a.next();
312
- return [3 /*break*/, 3];
313
- case 6: return [3 /*break*/, 9];
314
- case 7:
315
- e_5_1 = _f.sent();
316
- e_5 = { error: e_5_1 };
317
- return [3 /*break*/, 9];
318
- case 8:
319
- try {
320
- if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
321
- }
322
- finally { if (e_5) throw e_5.error; }
323
- return [7 /*endfinally*/];
324
- case 9: return [2 /*return*/, new if_1.default(item, {
325
- condition: condition,
326
- body: body
327
- })];
328
- }
329
- });
330
- });
331
- },
332
- 'ElseifShortcutClause': function (item) {
333
- return __awaiter(this, void 0, void 0, function () {
334
- var body, condition, _a, _b, bodyItem, _c, _d, e_6_1;
335
- var e_6, _e;
336
- return __generator(this, function (_f) {
337
- switch (_f.label) {
338
- case 0:
339
- body = new body_1.default(item.body);
340
- return [4 /*yield*/, visit(item.condition)];
341
- case 1:
342
- condition = _f.sent();
343
- _f.label = 2;
344
- case 2:
345
- _f.trys.push([2, 7, 8, 9]);
346
- _a = __values(item.body), _b = _a.next();
347
- _f.label = 3;
348
- case 3:
349
- if (!!_b.done) return [3 /*break*/, 6];
350
- bodyItem = _b.value;
351
- _d = (_c = body.stack).push;
352
- return [4 /*yield*/, visit(bodyItem)];
353
- case 4:
354
- _d.apply(_c, [_f.sent()]);
355
- _f.label = 5;
356
- case 5:
357
- _b = _a.next();
358
- return [3 /*break*/, 3];
359
- case 6: return [3 /*break*/, 9];
360
- case 7:
361
- e_6_1 = _f.sent();
362
- e_6 = { error: e_6_1 };
363
- return [3 /*break*/, 9];
364
- case 8:
365
- try {
366
- if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
367
- }
368
- finally { if (e_6) throw e_6.error; }
369
- return [7 /*endfinally*/];
370
- case 9: return [2 /*return*/, new else_if_1.default(item, {
371
- body: body,
372
- condition: condition
373
- })];
374
- }
375
- });
376
- });
377
- },
378
- 'ElseShortcutClause': function (item) {
379
- return __awaiter(this, void 0, void 0, function () {
380
- var body, _a, _b, bodyItem, _c, _d, e_7_1;
381
- var e_7, _e;
382
- return __generator(this, function (_f) {
383
- switch (_f.label) {
384
- case 0:
385
- body = new body_1.default(item.body);
386
- _f.label = 1;
387
- case 1:
388
- _f.trys.push([1, 6, 7, 8]);
389
- _a = __values(item.body), _b = _a.next();
390
- _f.label = 2;
391
- case 2:
392
- if (!!_b.done) return [3 /*break*/, 5];
393
- bodyItem = _b.value;
394
- _d = (_c = body.stack).push;
395
- return [4 /*yield*/, visit(bodyItem)];
396
- case 3:
397
- _d.apply(_c, [_f.sent()]);
398
- _f.label = 4;
399
- case 4:
400
- _b = _a.next();
401
- return [3 /*break*/, 2];
402
- case 5: return [3 /*break*/, 8];
403
- case 6:
404
- e_7_1 = _f.sent();
405
- e_7 = { error: e_7_1 };
406
- return [3 /*break*/, 8];
407
- case 7:
408
- try {
409
- if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
410
- }
411
- finally { if (e_7) throw e_7.error; }
412
- return [7 /*endfinally*/];
413
- case 8: return [2 /*return*/, new else_1.default(item, {
414
- body: body
415
- })];
416
- }
417
- });
418
- });
419
- },
420
- 'NilLiteral': function (item) {
421
- return Promise.resolve(new nil_1.default());
422
- },
423
- 'ForGenericStatement': function (item) {
424
- return __awaiter(this, void 0, void 0, function () {
425
- var body, variable, iterator, _a, _b, bodyItem, _c, _d, e_8_1;
426
- var e_8, _e;
427
- return __generator(this, function (_f) {
428
- switch (_f.label) {
429
- case 0:
430
- body = new body_1.default(item.body);
431
- return [4 /*yield*/, visit(item.variable)];
432
- case 1:
433
- variable = _f.sent();
434
- return [4 /*yield*/, visit(item.iterator)];
435
- case 2:
436
- iterator = _f.sent();
437
- _f.label = 3;
438
- case 3:
439
- _f.trys.push([3, 8, 9, 10]);
440
- _a = __values(item.body), _b = _a.next();
441
- _f.label = 4;
442
- case 4:
443
- if (!!_b.done) return [3 /*break*/, 7];
444
- bodyItem = _b.value;
445
- _d = (_c = body.stack).push;
446
- return [4 /*yield*/, visit(bodyItem)];
447
- case 5:
448
- _d.apply(_c, [_f.sent()]);
449
- _f.label = 6;
450
- case 6:
451
- _b = _a.next();
452
- return [3 /*break*/, 4];
453
- case 7: return [3 /*break*/, 10];
454
- case 8:
455
- e_8_1 = _f.sent();
456
- e_8 = { error: e_8_1 };
457
- return [3 /*break*/, 10];
458
- case 9:
459
- try {
460
- if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
461
- }
462
- finally { if (e_8) throw e_8.error; }
463
- return [7 /*endfinally*/];
464
- case 10: return [2 /*return*/, new for_1.default(item, {
465
- body: body,
466
- variable: variable,
467
- iterator: iterator
468
- })];
469
- }
470
- });
471
- });
472
- },
473
- 'IfStatement': function (item) {
474
- return __awaiter(this, void 0, void 0, function () {
475
- var op, _a, _b, clausesItem, _c, _d, e_9_1;
476
- var e_9, _e;
477
- return __generator(this, function (_f) {
478
- switch (_f.label) {
479
- case 0:
480
- op = new if_statement_1.default(item);
481
- _f.label = 1;
482
- case 1:
483
- _f.trys.push([1, 6, 7, 8]);
484
- _a = __values(item.clauses), _b = _a.next();
485
- _f.label = 2;
486
- case 2:
487
- if (!!_b.done) return [3 /*break*/, 5];
488
- clausesItem = _b.value;
489
- _d = (_c = op.clauses).push;
490
- return [4 /*yield*/, visit(clausesItem)];
491
- case 3:
492
- _d.apply(_c, [_f.sent()]);
493
- _f.label = 4;
494
- case 4:
495
- _b = _a.next();
496
- return [3 /*break*/, 2];
497
- case 5: return [3 /*break*/, 8];
498
- case 6:
499
- e_9_1 = _f.sent();
500
- e_9 = { error: e_9_1 };
501
- return [3 /*break*/, 8];
502
- case 7:
503
- try {
504
- if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
505
- }
506
- finally { if (e_9) throw e_9.error; }
507
- return [7 /*endfinally*/];
508
- case 8: return [2 /*return*/, op];
509
- }
510
- });
511
- });
512
- },
513
- 'IfClause': function (item) {
514
- return __awaiter(this, void 0, void 0, function () {
515
- var body, condition, _a, _b, bodyItem, _c, _d, e_10_1;
516
- var e_10, _e;
517
- return __generator(this, function (_f) {
518
- switch (_f.label) {
519
- case 0:
520
- body = new body_1.default(item.body);
521
- return [4 /*yield*/, visit(item.condition)];
522
- case 1:
523
- condition = _f.sent();
524
- _f.label = 2;
525
- case 2:
526
- _f.trys.push([2, 7, 8, 9]);
527
- _a = __values(item.body), _b = _a.next();
528
- _f.label = 3;
529
- case 3:
530
- if (!!_b.done) return [3 /*break*/, 6];
531
- bodyItem = _b.value;
532
- _d = (_c = body.stack).push;
533
- return [4 /*yield*/, visit(bodyItem)];
534
- case 4:
535
- _d.apply(_c, [_f.sent()]);
536
- _f.label = 5;
537
- case 5:
538
- _b = _a.next();
539
- return [3 /*break*/, 3];
540
- case 6: return [3 /*break*/, 9];
541
- case 7:
542
- e_10_1 = _f.sent();
543
- e_10 = { error: e_10_1 };
544
- return [3 /*break*/, 9];
545
- case 8:
546
- try {
547
- if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
548
- }
549
- finally { if (e_10) throw e_10.error; }
550
- return [7 /*endfinally*/];
551
- case 9: return [2 /*return*/, new if_1.default(item, {
552
- body: body,
553
- condition: condition
554
- })];
555
- }
556
- });
557
- });
558
- },
559
- 'ElseifClause': function (item) {
560
- return __awaiter(this, void 0, void 0, function () {
561
- var body, condition, _a, _b, bodyItem, _c, _d, e_11_1;
562
- var e_11, _e;
563
- return __generator(this, function (_f) {
564
- switch (_f.label) {
565
- case 0:
566
- body = new body_1.default(item.body);
567
- return [4 /*yield*/, visit(item.condition)];
568
- case 1:
569
- condition = _f.sent();
570
- _f.label = 2;
571
- case 2:
572
- _f.trys.push([2, 7, 8, 9]);
573
- _a = __values(item.body), _b = _a.next();
574
- _f.label = 3;
575
- case 3:
576
- if (!!_b.done) return [3 /*break*/, 6];
577
- bodyItem = _b.value;
578
- _d = (_c = body.stack).push;
579
- return [4 /*yield*/, visit(bodyItem)];
580
- case 4:
581
- _d.apply(_c, [_f.sent()]);
582
- _f.label = 5;
583
- case 5:
584
- _b = _a.next();
585
- return [3 /*break*/, 3];
586
- case 6: return [3 /*break*/, 9];
587
- case 7:
588
- e_11_1 = _f.sent();
589
- e_11 = { error: e_11_1 };
590
- return [3 /*break*/, 9];
591
- case 8:
592
- try {
593
- if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
594
- }
595
- finally { if (e_11) throw e_11.error; }
596
- return [7 /*endfinally*/];
597
- case 9: return [2 /*return*/, new else_if_1.default(item, {
598
- body: body,
599
- condition: condition
600
- })];
601
- }
602
- });
603
- });
604
- },
605
- 'ElseClause': function (item) {
606
- return __awaiter(this, void 0, void 0, function () {
607
- var body, _a, _b, bodyItem, _c, _d, e_12_1;
608
- var e_12, _e;
609
- return __generator(this, function (_f) {
610
- switch (_f.label) {
611
- case 0:
612
- body = new body_1.default(item.body);
613
- _f.label = 1;
614
- case 1:
615
- _f.trys.push([1, 6, 7, 8]);
616
- _a = __values(item.body), _b = _a.next();
617
- _f.label = 2;
618
- case 2:
619
- if (!!_b.done) return [3 /*break*/, 5];
620
- bodyItem = _b.value;
621
- _d = (_c = body.stack).push;
622
- return [4 /*yield*/, visit(bodyItem)];
623
- case 3:
624
- _d.apply(_c, [_f.sent()]);
625
- _f.label = 4;
626
- case 4:
627
- _b = _a.next();
628
- return [3 /*break*/, 2];
629
- case 5: return [3 /*break*/, 8];
630
- case 6:
631
- e_12_1 = _f.sent();
632
- e_12 = { error: e_12_1 };
633
- return [3 /*break*/, 8];
634
- case 7:
635
- try {
636
- if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
637
- }
638
- finally { if (e_12) throw e_12.error; }
639
- return [7 /*endfinally*/];
640
- case 8: return [2 /*return*/, new else_1.default(item, {
641
- body: body
642
- })];
643
- }
644
- });
645
- });
646
- },
647
- 'NegationExpression': function (item) {
648
- return __awaiter(this, void 0, void 0, function () {
649
- var arg;
650
- return __generator(this, function (_a) {
651
- switch (_a.label) {
652
- case 0: return [4 /*yield*/, visit(item.argument)];
653
- case 1:
654
- arg = _a.sent();
655
- return [2 /*return*/, new not_1.default(item, { arg: arg })];
656
- }
657
- });
658
- });
659
- },
660
- 'ContinueStatement': function (item) {
661
- return Promise.resolve(new continue_1.default(item));
662
- },
663
- 'BreakStatement': function (item) {
664
- return Promise.resolve(new break_1.default(item));
665
- },
666
- 'CallExpression': function (item) {
667
- return new call_1.default(item).prepare(visit);
668
- },
669
- 'CallStatement': function (item) {
670
- return visit(item.expression);
671
- },
672
- 'FeatureImportExpression': function (item) {
673
- return __awaiter(this, void 0, void 0, function () {
674
- var resourceHandler, target, code, chunk;
675
- return __generator(this, function (_a) {
676
- switch (_a.label) {
677
- case 0:
678
- resourceHandler = context.resourceHandler;
679
- return [4 /*yield*/, resourceHandler.getTargetRelativeTo(context.target,
680
- // @ts-ignore: FileSystemDirectory is always a string
681
- item.path)];
682
- case 1:
683
- target = _a.sent();
684
- return [4 /*yield*/, context.resourceHandler.get(target)];
685
- case 2:
686
- code = _a.sent();
687
- context.currentTarget = target;
688
- return [4 /*yield*/, (new import_1.default(item, target, code).prepare(visit))];
689
- case 3:
690
- chunk = _a.sent();
691
- context.currentTarget = context.target;
692
- return [2 /*return*/, chunk];
693
- }
694
- });
695
- });
696
- },
697
- 'FeatureIncludeExpression': function (item) {
698
- return __awaiter(this, void 0, void 0, function () {
699
- var resourceHandler, target, code, chunk;
700
- return __generator(this, function (_a) {
701
- switch (_a.label) {
702
- case 0:
703
- resourceHandler = context.resourceHandler;
704
- return [4 /*yield*/, resourceHandler.getTargetRelativeTo(context.target,
705
- // @ts-ignore: FileSystemDirectory is always a string
706
- item.path)];
707
- case 1:
708
- target = _a.sent();
709
- return [4 /*yield*/, context.resourceHandler.get(target)];
710
- case 2:
711
- code = _a.sent();
712
- context.currentTarget = target;
713
- return [4 /*yield*/, (new include_1.default(item, target, code).prepare(visit))];
714
- case 3:
715
- chunk = _a.sent();
716
- context.currentTarget = context.target;
717
- return [2 /*return*/, chunk];
718
- }
719
- });
720
- });
721
- },
722
- 'ImportCodeExpression': function (item) {
723
- return __awaiter(this, void 0, void 0, function () {
724
- var resourceHandler, target, code, chunk;
725
- return __generator(this, function (_a) {
726
- switch (_a.label) {
727
- case 0:
728
- resourceHandler = context.resourceHandler;
729
- return [4 /*yield*/, resourceHandler.getTargetRelativeTo(context.target,
730
- // @ts-ignore: FileSystemDirectory is always a string
731
- item.fileSystemDirectory)];
732
- case 1:
733
- target = _a.sent();
734
- return [4 /*yield*/, context.resourceHandler.get(target)];
735
- case 2:
736
- code = _a.sent();
737
- context.currentTarget = target;
738
- return [4 /*yield*/, (new include_1.default(item, target, code).prepare(visit))];
739
- case 3:
740
- chunk = _a.sent();
741
- context.currentTarget = context.target;
742
- return [2 /*return*/, chunk];
743
- }
744
- });
745
- });
746
- },
747
- 'FeatureDebuggerExpression': function (item) {
748
- return Promise.resolve(new debugger_1.default(item));
749
- },
750
- 'ListConstructorExpression': function (item) {
751
- return new list_1.default(item).prepare(visit);
752
- },
753
- 'BooleanLiteral': function (item) {
754
- return Promise.resolve(
755
- // @ts-ignore: Key is always a literal
756
- new boolean_1.default(item.value));
757
- },
758
- 'EmptyExpression': function (item) { },
759
- 'BinaryExpression': function (item) {
760
- return new logical_and_binary_1.default(item).prepare(visit);
761
- },
762
- 'BinaryNegatedExpression': function (item) {
763
- return new binary_negated_expression_1.default(item).prepare(visit);
764
- },
765
- 'LogicalExpression': function (item) {
766
- return new logical_and_binary_1.default(item).prepare(visit);
767
- },
768
- 'UnaryExpression': function (item) {
769
- return __awaiter(this, void 0, void 0, function () {
770
- var arg, op;
771
- return __generator(this, function (_a) {
772
- switch (_a.label) {
773
- case 0: return [4 /*yield*/, visit(item.argument)];
774
- case 1:
775
- arg = _a.sent();
776
- if ('@' === item.operator) {
777
- op = new reference_1.default(item, { arg: arg });
778
- }
779
- else if ('new' === item.operator) {
780
- op = new new_1.default(item, { arg: arg });
781
- }
782
- else {
783
- throw new Error('Unknown unary expression.');
784
- }
785
- return [2 /*return*/, op];
786
- }
787
- });
788
- });
789
- },
790
- 'Chunk': function (item) {
791
- return __awaiter(this, void 0, void 0, function () {
792
- var op, _a, _b, bodyItem, _c, _d, e_13_1;
793
- var e_13, _e;
794
- return __generator(this, function (_f) {
795
- switch (_f.label) {
796
- case 0:
797
- op = new body_1.default(item.body);
798
- _f.label = 1;
799
- case 1:
800
- _f.trys.push([1, 6, 7, 8]);
801
- _a = __values(item.body), _b = _a.next();
802
- _f.label = 2;
803
- case 2:
804
- if (!!_b.done) return [3 /*break*/, 5];
805
- bodyItem = _b.value;
806
- _d = (_c = op.stack).push;
807
- return [4 /*yield*/, visit(bodyItem)];
808
- case 3:
809
- _d.apply(_c, [_f.sent()]);
810
- _f.label = 4;
811
- case 4:
812
- _b = _a.next();
813
- return [3 /*break*/, 2];
814
- case 5: return [3 /*break*/, 8];
815
- case 6:
816
- e_13_1 = _f.sent();
817
- e_13 = { error: e_13_1 };
818
- return [3 /*break*/, 8];
819
- case 7:
820
- try {
821
- if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
822
- }
823
- finally { if (e_13) throw e_13.error; }
824
- return [7 /*endfinally*/];
825
- case 8: return [2 /*return*/, op];
826
- }
827
- });
828
- });
829
- }
830
- };
831
- };
832
- exports.CPSMap = CPSMap;
833
- var CPS = /** @class */ (function () {
834
- function CPS(context) {
835
- var me = this;
836
- me.cpsMap = (0, exports.CPSMap)(me.visit.bind(me), context);
837
- me.context = context;
838
- context.currentTarget = context.target;
839
- }
840
- CPS.prototype.visit = function (o) {
841
- return __awaiter(this, void 0, void 0, function () {
842
- var me, fn, result;
843
- return __generator(this, function (_a) {
844
- switch (_a.label) {
845
- case 0:
846
- me = this;
847
- if (o == null)
848
- return [2 /*return*/, ''];
849
- if (o.type == null) {
850
- console.error('Error ast type:', o);
851
- throw new Error('Unexpected as type');
852
- }
853
- fn = me.cpsMap[o.type];
854
- if (fn == null) {
855
- console.error('Error ast:', o);
856
- throw new Error('Type does not exist ' + o.type);
857
- }
858
- return [4 /*yield*/, fn.call(me, o)];
859
- case 1:
860
- result = _a.sent();
861
- if (result instanceof operation_1.Operation || result instanceof expression_1.Expression) {
862
- result.target = me.context.currentTarget;
863
- }
864
- return [2 /*return*/, result];
865
- }
866
- });
867
- });
868
- };
869
- return CPS;
870
- }());
871
- exports.default = CPS;
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __values = (this && this.__values) || function(o) {
39
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
40
+ if (m) return m.call(o);
41
+ if (o && typeof o.length === "number") return {
42
+ next: function () {
43
+ if (o && i >= o.length) o = void 0;
44
+ return { value: o && o[i++], done: !o };
45
+ }
46
+ };
47
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
48
+ };
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ exports.CPSMap = void 0;
54
+ var assign_1 = __importDefault(require("./expressions/assign"));
55
+ var call_1 = __importDefault(require("./expressions/call"));
56
+ var list_1 = __importDefault(require("./expressions/list"));
57
+ var logical_and_binary_1 = __importDefault(require("./expressions/logical-and-binary"));
58
+ var map_1 = __importDefault(require("./expressions/map"));
59
+ var path_1 = __importDefault(require("./expressions/path"));
60
+ var binary_negated_expression_1 = __importDefault(require("./expressions/binary-negated-expression"));
61
+ var include_1 = __importDefault(require("./expressions/include"));
62
+ var import_1 = __importDefault(require("./expressions/import"));
63
+ var argument_1 = __importDefault(require("./operations/argument"));
64
+ var while_1 = __importDefault(require("./operations/while"));
65
+ var for_1 = __importDefault(require("./operations/for"));
66
+ var return_1 = __importDefault(require("./operations/return"));
67
+ var reference_1 = __importDefault(require("./operations/reference"));
68
+ var new_1 = __importDefault(require("./operations/new"));
69
+ var not_1 = __importDefault(require("./operations/not"));
70
+ var if_statement_1 = __importDefault(require("./operations/if-statement"));
71
+ var if_1 = __importDefault(require("./operations/if"));
72
+ var else_if_1 = __importDefault(require("./operations/else-if"));
73
+ var else_1 = __importDefault(require("./operations/else"));
74
+ var continue_1 = __importDefault(require("./operations/continue"));
75
+ var break_1 = __importDefault(require("./operations/break"));
76
+ var body_1 = __importDefault(require("./operations/body"));
77
+ var debugger_1 = __importDefault(require("./operations/debugger"));
78
+ var function_1 = __importDefault(require("./operations/function"));
79
+ var boolean_1 = __importDefault(require("./custom-types/boolean"));
80
+ var number_1 = __importDefault(require("./custom-types/number"));
81
+ var string_1 = __importDefault(require("./custom-types/string"));
82
+ var nil_1 = __importDefault(require("./custom-types/nil"));
83
+ var expression_1 = require("./types/expression");
84
+ var operation_1 = require("./types/operation");
85
+ var CPSMap = function (visit, context) {
86
+ return {
87
+ 'AssignmentStatement': function (item) {
88
+ return new assign_1.default(item).prepare(visit);
89
+ },
90
+ 'MemberExpression': function (item) {
91
+ return new path_1.default(item).prepare(visit);
92
+ },
93
+ 'FunctionDeclaration': function (item) {
94
+ return __awaiter(this, void 0, void 0, function () {
95
+ var args, body, _a, _b, parameterItem, _c, _d, e_1_1, _e, _f, bodyItem, _g, _h, e_2_1;
96
+ var e_1, _j, e_2, _k;
97
+ return __generator(this, function (_l) {
98
+ switch (_l.label) {
99
+ case 0:
100
+ args = new argument_1.default(item.parameters);
101
+ body = new body_1.default(item.body);
102
+ _l.label = 1;
103
+ case 1:
104
+ _l.trys.push([1, 6, 7, 8]);
105
+ _a = __values(item.parameters), _b = _a.next();
106
+ _l.label = 2;
107
+ case 2:
108
+ if (!!_b.done) return [3 /*break*/, 5];
109
+ parameterItem = _b.value;
110
+ _d = (_c = args.stack).push;
111
+ return [4 /*yield*/, visit(parameterItem)];
112
+ case 3:
113
+ _d.apply(_c, [_l.sent()]);
114
+ _l.label = 4;
115
+ case 4:
116
+ _b = _a.next();
117
+ return [3 /*break*/, 2];
118
+ case 5: return [3 /*break*/, 8];
119
+ case 6:
120
+ e_1_1 = _l.sent();
121
+ e_1 = { error: e_1_1 };
122
+ return [3 /*break*/, 8];
123
+ case 7:
124
+ try {
125
+ if (_b && !_b.done && (_j = _a.return)) _j.call(_a);
126
+ }
127
+ finally { if (e_1) throw e_1.error; }
128
+ return [7 /*endfinally*/];
129
+ case 8:
130
+ _l.trys.push([8, 13, 14, 15]);
131
+ _e = __values(item.body), _f = _e.next();
132
+ _l.label = 9;
133
+ case 9:
134
+ if (!!_f.done) return [3 /*break*/, 12];
135
+ bodyItem = _f.value;
136
+ _h = (_g = body.stack).push;
137
+ return [4 /*yield*/, visit(bodyItem)];
138
+ case 10:
139
+ _h.apply(_g, [_l.sent()]);
140
+ _l.label = 11;
141
+ case 11:
142
+ _f = _e.next();
143
+ return [3 /*break*/, 9];
144
+ case 12: return [3 /*break*/, 15];
145
+ case 13:
146
+ e_2_1 = _l.sent();
147
+ e_2 = { error: e_2_1 };
148
+ return [3 /*break*/, 15];
149
+ case 14:
150
+ try {
151
+ if (_f && !_f.done && (_k = _e.return)) _k.call(_e);
152
+ }
153
+ finally { if (e_2) throw e_2.error; }
154
+ return [7 /*endfinally*/];
155
+ case 15: return [2 /*return*/, new function_1.default(item, {
156
+ args: args,
157
+ body: body
158
+ })];
159
+ }
160
+ });
161
+ });
162
+ },
163
+ 'MapConstructorExpression': function (item) {
164
+ return new map_1.default(item).prepare(visit);
165
+ },
166
+ 'Identifier': function (item) {
167
+ return new path_1.default(item).prepare(visit);
168
+ },
169
+ 'ReturnStatement': function (item) {
170
+ return __awaiter(this, void 0, void 0, function () {
171
+ var arg;
172
+ return __generator(this, function (_a) {
173
+ switch (_a.label) {
174
+ case 0: return [4 /*yield*/, visit(item.argument)];
175
+ case 1:
176
+ arg = _a.sent();
177
+ return [2 /*return*/, new return_1.default(item, {
178
+ arg: arg
179
+ })];
180
+ }
181
+ });
182
+ });
183
+ },
184
+ 'NumericLiteral': function (item) {
185
+ return Promise.resolve(
186
+ // @ts-ignore: Key is always a literal
187
+ new number_1.default(item.value));
188
+ },
189
+ 'WhileStatement': function (item) {
190
+ return __awaiter(this, void 0, void 0, function () {
191
+ var body, condition, _a, _b, bodyItem, _c, _d, e_3_1;
192
+ var e_3, _e;
193
+ return __generator(this, function (_f) {
194
+ switch (_f.label) {
195
+ case 0:
196
+ body = new body_1.default(item.body);
197
+ return [4 /*yield*/, visit(item.condition)];
198
+ case 1:
199
+ condition = _f.sent();
200
+ _f.label = 2;
201
+ case 2:
202
+ _f.trys.push([2, 7, 8, 9]);
203
+ _a = __values(item.body), _b = _a.next();
204
+ _f.label = 3;
205
+ case 3:
206
+ if (!!_b.done) return [3 /*break*/, 6];
207
+ bodyItem = _b.value;
208
+ _d = (_c = body.stack).push;
209
+ return [4 /*yield*/, visit(bodyItem)];
210
+ case 4:
211
+ _d.apply(_c, [_f.sent()]);
212
+ _f.label = 5;
213
+ case 5:
214
+ _b = _a.next();
215
+ return [3 /*break*/, 3];
216
+ case 6: return [3 /*break*/, 9];
217
+ case 7:
218
+ e_3_1 = _f.sent();
219
+ e_3 = { error: e_3_1 };
220
+ return [3 /*break*/, 9];
221
+ case 8:
222
+ try {
223
+ if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
224
+ }
225
+ finally { if (e_3) throw e_3.error; }
226
+ return [7 /*endfinally*/];
227
+ case 9: return [2 /*return*/, new while_1.default(item, {
228
+ body: body,
229
+ condition: condition
230
+ })];
231
+ }
232
+ });
233
+ });
234
+ },
235
+ 'StringLiteral': function (item) {
236
+ return Promise.resolve(
237
+ // @ts-ignore: Key is always a literal
238
+ new string_1.default(item.value));
239
+ },
240
+ 'IndexExpression': function (item) {
241
+ return new path_1.default(item).prepare(visit);
242
+ },
243
+ 'FeatureEnvarExpression': function (_item) {
244
+ throw new Error('Not supported');
245
+ },
246
+ 'InvalidCodeExpression': function (_item) { },
247
+ 'IfShortcutStatement': function (item) {
248
+ return __awaiter(this, void 0, void 0, function () {
249
+ var op, _a, _b, clausesItem, _c, _d, e_4_1;
250
+ var e_4, _e;
251
+ return __generator(this, function (_f) {
252
+ switch (_f.label) {
253
+ case 0:
254
+ op = new if_statement_1.default(item);
255
+ _f.label = 1;
256
+ case 1:
257
+ _f.trys.push([1, 6, 7, 8]);
258
+ _a = __values(item.clauses), _b = _a.next();
259
+ _f.label = 2;
260
+ case 2:
261
+ if (!!_b.done) return [3 /*break*/, 5];
262
+ clausesItem = _b.value;
263
+ _d = (_c = op.clauses).push;
264
+ return [4 /*yield*/, visit(clausesItem)];
265
+ case 3:
266
+ _d.apply(_c, [_f.sent()]);
267
+ _f.label = 4;
268
+ case 4:
269
+ _b = _a.next();
270
+ return [3 /*break*/, 2];
271
+ case 5: return [3 /*break*/, 8];
272
+ case 6:
273
+ e_4_1 = _f.sent();
274
+ e_4 = { error: e_4_1 };
275
+ return [3 /*break*/, 8];
276
+ case 7:
277
+ try {
278
+ if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
279
+ }
280
+ finally { if (e_4) throw e_4.error; }
281
+ return [7 /*endfinally*/];
282
+ case 8: return [2 /*return*/, op];
283
+ }
284
+ });
285
+ });
286
+ },
287
+ 'IfShortcutClause': function (item) {
288
+ return __awaiter(this, void 0, void 0, function () {
289
+ var body, condition, _a, _b, bodyItem, _c, _d, e_5_1;
290
+ var e_5, _e;
291
+ return __generator(this, function (_f) {
292
+ switch (_f.label) {
293
+ case 0:
294
+ body = new body_1.default(item.body);
295
+ return [4 /*yield*/, visit(item.condition)];
296
+ case 1:
297
+ condition = _f.sent();
298
+ _f.label = 2;
299
+ case 2:
300
+ _f.trys.push([2, 7, 8, 9]);
301
+ _a = __values(item.body), _b = _a.next();
302
+ _f.label = 3;
303
+ case 3:
304
+ if (!!_b.done) return [3 /*break*/, 6];
305
+ bodyItem = _b.value;
306
+ _d = (_c = body.stack).push;
307
+ return [4 /*yield*/, visit(bodyItem)];
308
+ case 4:
309
+ _d.apply(_c, [_f.sent()]);
310
+ _f.label = 5;
311
+ case 5:
312
+ _b = _a.next();
313
+ return [3 /*break*/, 3];
314
+ case 6: return [3 /*break*/, 9];
315
+ case 7:
316
+ e_5_1 = _f.sent();
317
+ e_5 = { error: e_5_1 };
318
+ return [3 /*break*/, 9];
319
+ case 8:
320
+ try {
321
+ if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
322
+ }
323
+ finally { if (e_5) throw e_5.error; }
324
+ return [7 /*endfinally*/];
325
+ case 9: return [2 /*return*/, new if_1.default(item, {
326
+ condition: condition,
327
+ body: body
328
+ })];
329
+ }
330
+ });
331
+ });
332
+ },
333
+ 'ElseifShortcutClause': function (item) {
334
+ return __awaiter(this, void 0, void 0, function () {
335
+ var body, condition, _a, _b, bodyItem, _c, _d, e_6_1;
336
+ var e_6, _e;
337
+ return __generator(this, function (_f) {
338
+ switch (_f.label) {
339
+ case 0:
340
+ body = new body_1.default(item.body);
341
+ return [4 /*yield*/, visit(item.condition)];
342
+ case 1:
343
+ condition = _f.sent();
344
+ _f.label = 2;
345
+ case 2:
346
+ _f.trys.push([2, 7, 8, 9]);
347
+ _a = __values(item.body), _b = _a.next();
348
+ _f.label = 3;
349
+ case 3:
350
+ if (!!_b.done) return [3 /*break*/, 6];
351
+ bodyItem = _b.value;
352
+ _d = (_c = body.stack).push;
353
+ return [4 /*yield*/, visit(bodyItem)];
354
+ case 4:
355
+ _d.apply(_c, [_f.sent()]);
356
+ _f.label = 5;
357
+ case 5:
358
+ _b = _a.next();
359
+ return [3 /*break*/, 3];
360
+ case 6: return [3 /*break*/, 9];
361
+ case 7:
362
+ e_6_1 = _f.sent();
363
+ e_6 = { error: e_6_1 };
364
+ return [3 /*break*/, 9];
365
+ case 8:
366
+ try {
367
+ if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
368
+ }
369
+ finally { if (e_6) throw e_6.error; }
370
+ return [7 /*endfinally*/];
371
+ case 9: return [2 /*return*/, new else_if_1.default(item, {
372
+ body: body,
373
+ condition: condition
374
+ })];
375
+ }
376
+ });
377
+ });
378
+ },
379
+ 'ElseShortcutClause': function (item) {
380
+ return __awaiter(this, void 0, void 0, function () {
381
+ var body, _a, _b, bodyItem, _c, _d, e_7_1;
382
+ var e_7, _e;
383
+ return __generator(this, function (_f) {
384
+ switch (_f.label) {
385
+ case 0:
386
+ body = new body_1.default(item.body);
387
+ _f.label = 1;
388
+ case 1:
389
+ _f.trys.push([1, 6, 7, 8]);
390
+ _a = __values(item.body), _b = _a.next();
391
+ _f.label = 2;
392
+ case 2:
393
+ if (!!_b.done) return [3 /*break*/, 5];
394
+ bodyItem = _b.value;
395
+ _d = (_c = body.stack).push;
396
+ return [4 /*yield*/, visit(bodyItem)];
397
+ case 3:
398
+ _d.apply(_c, [_f.sent()]);
399
+ _f.label = 4;
400
+ case 4:
401
+ _b = _a.next();
402
+ return [3 /*break*/, 2];
403
+ case 5: return [3 /*break*/, 8];
404
+ case 6:
405
+ e_7_1 = _f.sent();
406
+ e_7 = { error: e_7_1 };
407
+ return [3 /*break*/, 8];
408
+ case 7:
409
+ try {
410
+ if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
411
+ }
412
+ finally { if (e_7) throw e_7.error; }
413
+ return [7 /*endfinally*/];
414
+ case 8: return [2 /*return*/, new else_1.default(item, {
415
+ body: body
416
+ })];
417
+ }
418
+ });
419
+ });
420
+ },
421
+ 'NilLiteral': function (item) {
422
+ return Promise.resolve(new nil_1.default());
423
+ },
424
+ 'ForGenericStatement': function (item) {
425
+ return __awaiter(this, void 0, void 0, function () {
426
+ var body, variable, iterator, _a, _b, bodyItem, _c, _d, e_8_1;
427
+ var e_8, _e;
428
+ return __generator(this, function (_f) {
429
+ switch (_f.label) {
430
+ case 0:
431
+ body = new body_1.default(item.body);
432
+ return [4 /*yield*/, visit(item.variable)];
433
+ case 1:
434
+ variable = _f.sent();
435
+ return [4 /*yield*/, visit(item.iterator)];
436
+ case 2:
437
+ iterator = _f.sent();
438
+ _f.label = 3;
439
+ case 3:
440
+ _f.trys.push([3, 8, 9, 10]);
441
+ _a = __values(item.body), _b = _a.next();
442
+ _f.label = 4;
443
+ case 4:
444
+ if (!!_b.done) return [3 /*break*/, 7];
445
+ bodyItem = _b.value;
446
+ _d = (_c = body.stack).push;
447
+ return [4 /*yield*/, visit(bodyItem)];
448
+ case 5:
449
+ _d.apply(_c, [_f.sent()]);
450
+ _f.label = 6;
451
+ case 6:
452
+ _b = _a.next();
453
+ return [3 /*break*/, 4];
454
+ case 7: return [3 /*break*/, 10];
455
+ case 8:
456
+ e_8_1 = _f.sent();
457
+ e_8 = { error: e_8_1 };
458
+ return [3 /*break*/, 10];
459
+ case 9:
460
+ try {
461
+ if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
462
+ }
463
+ finally { if (e_8) throw e_8.error; }
464
+ return [7 /*endfinally*/];
465
+ case 10: return [2 /*return*/, new for_1.default(item, {
466
+ body: body,
467
+ variable: variable,
468
+ iterator: iterator
469
+ })];
470
+ }
471
+ });
472
+ });
473
+ },
474
+ 'IfStatement': function (item) {
475
+ return __awaiter(this, void 0, void 0, function () {
476
+ var op, _a, _b, clausesItem, _c, _d, e_9_1;
477
+ var e_9, _e;
478
+ return __generator(this, function (_f) {
479
+ switch (_f.label) {
480
+ case 0:
481
+ op = new if_statement_1.default(item);
482
+ _f.label = 1;
483
+ case 1:
484
+ _f.trys.push([1, 6, 7, 8]);
485
+ _a = __values(item.clauses), _b = _a.next();
486
+ _f.label = 2;
487
+ case 2:
488
+ if (!!_b.done) return [3 /*break*/, 5];
489
+ clausesItem = _b.value;
490
+ _d = (_c = op.clauses).push;
491
+ return [4 /*yield*/, visit(clausesItem)];
492
+ case 3:
493
+ _d.apply(_c, [_f.sent()]);
494
+ _f.label = 4;
495
+ case 4:
496
+ _b = _a.next();
497
+ return [3 /*break*/, 2];
498
+ case 5: return [3 /*break*/, 8];
499
+ case 6:
500
+ e_9_1 = _f.sent();
501
+ e_9 = { error: e_9_1 };
502
+ return [3 /*break*/, 8];
503
+ case 7:
504
+ try {
505
+ if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
506
+ }
507
+ finally { if (e_9) throw e_9.error; }
508
+ return [7 /*endfinally*/];
509
+ case 8: return [2 /*return*/, op];
510
+ }
511
+ });
512
+ });
513
+ },
514
+ 'IfClause': function (item) {
515
+ return __awaiter(this, void 0, void 0, function () {
516
+ var body, condition, _a, _b, bodyItem, _c, _d, e_10_1;
517
+ var e_10, _e;
518
+ return __generator(this, function (_f) {
519
+ switch (_f.label) {
520
+ case 0:
521
+ body = new body_1.default(item.body);
522
+ return [4 /*yield*/, visit(item.condition)];
523
+ case 1:
524
+ condition = _f.sent();
525
+ _f.label = 2;
526
+ case 2:
527
+ _f.trys.push([2, 7, 8, 9]);
528
+ _a = __values(item.body), _b = _a.next();
529
+ _f.label = 3;
530
+ case 3:
531
+ if (!!_b.done) return [3 /*break*/, 6];
532
+ bodyItem = _b.value;
533
+ _d = (_c = body.stack).push;
534
+ return [4 /*yield*/, visit(bodyItem)];
535
+ case 4:
536
+ _d.apply(_c, [_f.sent()]);
537
+ _f.label = 5;
538
+ case 5:
539
+ _b = _a.next();
540
+ return [3 /*break*/, 3];
541
+ case 6: return [3 /*break*/, 9];
542
+ case 7:
543
+ e_10_1 = _f.sent();
544
+ e_10 = { error: e_10_1 };
545
+ return [3 /*break*/, 9];
546
+ case 8:
547
+ try {
548
+ if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
549
+ }
550
+ finally { if (e_10) throw e_10.error; }
551
+ return [7 /*endfinally*/];
552
+ case 9: return [2 /*return*/, new if_1.default(item, {
553
+ body: body,
554
+ condition: condition
555
+ })];
556
+ }
557
+ });
558
+ });
559
+ },
560
+ 'ElseifClause': function (item) {
561
+ return __awaiter(this, void 0, void 0, function () {
562
+ var body, condition, _a, _b, bodyItem, _c, _d, e_11_1;
563
+ var e_11, _e;
564
+ return __generator(this, function (_f) {
565
+ switch (_f.label) {
566
+ case 0:
567
+ body = new body_1.default(item.body);
568
+ return [4 /*yield*/, visit(item.condition)];
569
+ case 1:
570
+ condition = _f.sent();
571
+ _f.label = 2;
572
+ case 2:
573
+ _f.trys.push([2, 7, 8, 9]);
574
+ _a = __values(item.body), _b = _a.next();
575
+ _f.label = 3;
576
+ case 3:
577
+ if (!!_b.done) return [3 /*break*/, 6];
578
+ bodyItem = _b.value;
579
+ _d = (_c = body.stack).push;
580
+ return [4 /*yield*/, visit(bodyItem)];
581
+ case 4:
582
+ _d.apply(_c, [_f.sent()]);
583
+ _f.label = 5;
584
+ case 5:
585
+ _b = _a.next();
586
+ return [3 /*break*/, 3];
587
+ case 6: return [3 /*break*/, 9];
588
+ case 7:
589
+ e_11_1 = _f.sent();
590
+ e_11 = { error: e_11_1 };
591
+ return [3 /*break*/, 9];
592
+ case 8:
593
+ try {
594
+ if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
595
+ }
596
+ finally { if (e_11) throw e_11.error; }
597
+ return [7 /*endfinally*/];
598
+ case 9: return [2 /*return*/, new else_if_1.default(item, {
599
+ body: body,
600
+ condition: condition
601
+ })];
602
+ }
603
+ });
604
+ });
605
+ },
606
+ 'ElseClause': function (item) {
607
+ return __awaiter(this, void 0, void 0, function () {
608
+ var body, _a, _b, bodyItem, _c, _d, e_12_1;
609
+ var e_12, _e;
610
+ return __generator(this, function (_f) {
611
+ switch (_f.label) {
612
+ case 0:
613
+ body = new body_1.default(item.body);
614
+ _f.label = 1;
615
+ case 1:
616
+ _f.trys.push([1, 6, 7, 8]);
617
+ _a = __values(item.body), _b = _a.next();
618
+ _f.label = 2;
619
+ case 2:
620
+ if (!!_b.done) return [3 /*break*/, 5];
621
+ bodyItem = _b.value;
622
+ _d = (_c = body.stack).push;
623
+ return [4 /*yield*/, visit(bodyItem)];
624
+ case 3:
625
+ _d.apply(_c, [_f.sent()]);
626
+ _f.label = 4;
627
+ case 4:
628
+ _b = _a.next();
629
+ return [3 /*break*/, 2];
630
+ case 5: return [3 /*break*/, 8];
631
+ case 6:
632
+ e_12_1 = _f.sent();
633
+ e_12 = { error: e_12_1 };
634
+ return [3 /*break*/, 8];
635
+ case 7:
636
+ try {
637
+ if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
638
+ }
639
+ finally { if (e_12) throw e_12.error; }
640
+ return [7 /*endfinally*/];
641
+ case 8: return [2 /*return*/, new else_1.default(item, {
642
+ body: body
643
+ })];
644
+ }
645
+ });
646
+ });
647
+ },
648
+ 'NegationExpression': function (item) {
649
+ return __awaiter(this, void 0, void 0, function () {
650
+ var arg;
651
+ return __generator(this, function (_a) {
652
+ switch (_a.label) {
653
+ case 0: return [4 /*yield*/, visit(item.argument)];
654
+ case 1:
655
+ arg = _a.sent();
656
+ return [2 /*return*/, new not_1.default(item, { arg: arg })];
657
+ }
658
+ });
659
+ });
660
+ },
661
+ 'ContinueStatement': function (item) {
662
+ return Promise.resolve(new continue_1.default(item));
663
+ },
664
+ 'BreakStatement': function (item) {
665
+ return Promise.resolve(new break_1.default(item));
666
+ },
667
+ 'CallExpression': function (item) {
668
+ return new call_1.default(item).prepare(visit);
669
+ },
670
+ 'CallStatement': function (item) {
671
+ return visit(item.expression);
672
+ },
673
+ 'FeatureImportExpression': function (item) {
674
+ return __awaiter(this, void 0, void 0, function () {
675
+ var resourceHandler, target, code, chunk;
676
+ return __generator(this, function (_a) {
677
+ switch (_a.label) {
678
+ case 0:
679
+ resourceHandler = context.resourceHandler;
680
+ return [4 /*yield*/, resourceHandler.getTargetRelativeTo(context.target,
681
+ // @ts-ignore: FileSystemDirectory is always a string
682
+ item.path)];
683
+ case 1:
684
+ target = _a.sent();
685
+ return [4 /*yield*/, context.resourceHandler.get(target)];
686
+ case 2:
687
+ code = _a.sent();
688
+ context.currentTarget = target;
689
+ return [4 /*yield*/, (new import_1.default(item, target, code).prepare(visit))];
690
+ case 3:
691
+ chunk = _a.sent();
692
+ context.currentTarget = context.target;
693
+ return [2 /*return*/, chunk];
694
+ }
695
+ });
696
+ });
697
+ },
698
+ 'FeatureIncludeExpression': function (item) {
699
+ return __awaiter(this, void 0, void 0, function () {
700
+ var resourceHandler, target, code, chunk;
701
+ return __generator(this, function (_a) {
702
+ switch (_a.label) {
703
+ case 0:
704
+ resourceHandler = context.resourceHandler;
705
+ return [4 /*yield*/, resourceHandler.getTargetRelativeTo(context.target,
706
+ // @ts-ignore: FileSystemDirectory is always a string
707
+ item.path)];
708
+ case 1:
709
+ target = _a.sent();
710
+ return [4 /*yield*/, context.resourceHandler.get(target)];
711
+ case 2:
712
+ code = _a.sent();
713
+ context.currentTarget = target;
714
+ return [4 /*yield*/, (new include_1.default(item, target, code).prepare(visit))];
715
+ case 3:
716
+ chunk = _a.sent();
717
+ context.currentTarget = context.target;
718
+ return [2 /*return*/, chunk];
719
+ }
720
+ });
721
+ });
722
+ },
723
+ 'ImportCodeExpression': function (item) {
724
+ return __awaiter(this, void 0, void 0, function () {
725
+ var resourceHandler, target, code, chunk;
726
+ return __generator(this, function (_a) {
727
+ switch (_a.label) {
728
+ case 0:
729
+ resourceHandler = context.resourceHandler;
730
+ return [4 /*yield*/, resourceHandler.getTargetRelativeTo(context.target,
731
+ // @ts-ignore: FileSystemDirectory is always a string
732
+ item.fileSystemDirectory)];
733
+ case 1:
734
+ target = _a.sent();
735
+ return [4 /*yield*/, context.resourceHandler.get(target)];
736
+ case 2:
737
+ code = _a.sent();
738
+ context.currentTarget = target;
739
+ return [4 /*yield*/, (new include_1.default(item, target, code).prepare(visit))];
740
+ case 3:
741
+ chunk = _a.sent();
742
+ context.currentTarget = context.target;
743
+ return [2 /*return*/, chunk];
744
+ }
745
+ });
746
+ });
747
+ },
748
+ 'FeatureDebuggerExpression': function (item) {
749
+ return Promise.resolve(new debugger_1.default(item));
750
+ },
751
+ 'ListConstructorExpression': function (item) {
752
+ return new list_1.default(item).prepare(visit);
753
+ },
754
+ 'BooleanLiteral': function (item) {
755
+ return Promise.resolve(
756
+ // @ts-ignore: Key is always a literal
757
+ new boolean_1.default(item.value));
758
+ },
759
+ 'EmptyExpression': function (item) { },
760
+ 'BinaryExpression': function (item) {
761
+ return new logical_and_binary_1.default(item).prepare(visit);
762
+ },
763
+ 'BinaryNegatedExpression': function (item) {
764
+ return new binary_negated_expression_1.default(item).prepare(visit);
765
+ },
766
+ 'LogicalExpression': function (item) {
767
+ return new logical_and_binary_1.default(item).prepare(visit);
768
+ },
769
+ 'UnaryExpression': function (item) {
770
+ return __awaiter(this, void 0, void 0, function () {
771
+ var arg, op;
772
+ return __generator(this, function (_a) {
773
+ switch (_a.label) {
774
+ case 0: return [4 /*yield*/, visit(item.argument)];
775
+ case 1:
776
+ arg = _a.sent();
777
+ if ('@' === item.operator) {
778
+ op = new reference_1.default(item, { arg: arg });
779
+ }
780
+ else if ('new' === item.operator) {
781
+ op = new new_1.default(item, { arg: arg });
782
+ }
783
+ else {
784
+ throw new Error('Unknown unary expression.');
785
+ }
786
+ return [2 /*return*/, op];
787
+ }
788
+ });
789
+ });
790
+ },
791
+ 'Chunk': function (item) {
792
+ return __awaiter(this, void 0, void 0, function () {
793
+ var op, _a, _b, bodyItem, _c, _d, e_13_1;
794
+ var e_13, _e;
795
+ return __generator(this, function (_f) {
796
+ switch (_f.label) {
797
+ case 0:
798
+ op = new body_1.default(item.body);
799
+ _f.label = 1;
800
+ case 1:
801
+ _f.trys.push([1, 6, 7, 8]);
802
+ _a = __values(item.body), _b = _a.next();
803
+ _f.label = 2;
804
+ case 2:
805
+ if (!!_b.done) return [3 /*break*/, 5];
806
+ bodyItem = _b.value;
807
+ _d = (_c = op.stack).push;
808
+ return [4 /*yield*/, visit(bodyItem)];
809
+ case 3:
810
+ _d.apply(_c, [_f.sent()]);
811
+ _f.label = 4;
812
+ case 4:
813
+ _b = _a.next();
814
+ return [3 /*break*/, 2];
815
+ case 5: return [3 /*break*/, 8];
816
+ case 6:
817
+ e_13_1 = _f.sent();
818
+ e_13 = { error: e_13_1 };
819
+ return [3 /*break*/, 8];
820
+ case 7:
821
+ try {
822
+ if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
823
+ }
824
+ finally { if (e_13) throw e_13.error; }
825
+ return [7 /*endfinally*/];
826
+ case 8: return [2 /*return*/, op];
827
+ }
828
+ });
829
+ });
830
+ }
831
+ };
832
+ };
833
+ exports.CPSMap = CPSMap;
834
+ var CPS = /** @class */ (function () {
835
+ function CPS(context) {
836
+ var me = this;
837
+ me.cpsMap = (0, exports.CPSMap)(me.visit.bind(me), context);
838
+ me.context = context;
839
+ context.currentTarget = context.target;
840
+ }
841
+ CPS.prototype.visit = function (o) {
842
+ return __awaiter(this, void 0, void 0, function () {
843
+ var me, fn, result;
844
+ return __generator(this, function (_a) {
845
+ switch (_a.label) {
846
+ case 0:
847
+ me = this;
848
+ if (o == null)
849
+ return [2 /*return*/, ''];
850
+ if (o.type == null) {
851
+ console.error('Error ast type:', o);
852
+ throw new Error("Current CPS iteration item does not have a type.");
853
+ }
854
+ fn = me.cpsMap[o.type];
855
+ if (fn == null) {
856
+ console.error('Error ast:', o);
857
+ throw new Error("".concat(o.type, " is not a supported AST type."));
858
+ }
859
+ return [4 /*yield*/, fn.call(me, o)];
860
+ case 1:
861
+ result = _a.sent();
862
+ if (result instanceof operation_1.Operation || result instanceof expression_1.Expression) {
863
+ result.target = me.context.currentTarget;
864
+ }
865
+ return [2 /*return*/, result];
866
+ }
867
+ });
868
+ });
869
+ };
870
+ return CPS;
871
+ }());
872
+ exports.default = CPS;