greybel-interpreter 0.6.5 → 0.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/context.d.ts +4 -2
- package/dist/context.js +5 -4
- package/dist/cps.d.ts +2 -0
- package/dist/cps.js +22 -6
- package/dist/operations/body.js +1 -1
- package/dist/types/expression.d.ts +1 -0
- package/dist/types/operation.d.ts +1 -0
- package/package.json +1 -1
package/dist/context.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import CustomMap from './custom-types/map';
|
|
2
|
+
import { Operation } from './types/operation';
|
|
3
|
+
import { Expression } from './types/expression';
|
|
2
4
|
import { Callable } from './types/custom-type';
|
|
3
5
|
import { ASTBase } from 'greybel-core';
|
|
4
6
|
import CPS from './cps';
|
|
@@ -32,7 +34,7 @@ export declare class Debugger {
|
|
|
32
34
|
getBreakpoint(operationContext: OperationContext): boolean;
|
|
33
35
|
next(): Debugger;
|
|
34
36
|
resume(): Promise<void>;
|
|
35
|
-
interact(operationContext: OperationContext, item: ASTBase): void;
|
|
37
|
+
interact(operationContext: OperationContext, item: ASTBase, entity: Operation | Expression): void;
|
|
36
38
|
}
|
|
37
39
|
export interface OperationContextProcessState {
|
|
38
40
|
exit: boolean;
|
|
@@ -73,7 +75,7 @@ export declare class OperationContext {
|
|
|
73
75
|
locals: OperationContext | null;
|
|
74
76
|
globals: OperationContext | null;
|
|
75
77
|
constructor(options: OperationContextOptions);
|
|
76
|
-
step(
|
|
78
|
+
step(entity: Operation | Expression): Promise<void>;
|
|
77
79
|
setLastActive(opc: OperationContext): OperationContext;
|
|
78
80
|
getLastActive(): OperationContext | null;
|
|
79
81
|
isExit(): boolean;
|
package/dist/context.js
CHANGED
|
@@ -238,7 +238,7 @@ var Debugger = /** @class */ (function () {
|
|
|
238
238
|
setTimeout(check, 10);
|
|
239
239
|
});
|
|
240
240
|
};
|
|
241
|
-
Debugger.prototype.interact = function (operationContext, item) {
|
|
241
|
+
Debugger.prototype.interact = function (operationContext, item, entity) {
|
|
242
242
|
var me = this;
|
|
243
243
|
console.warn("Debugger is not setup.");
|
|
244
244
|
console.info(operationContext);
|
|
@@ -270,14 +270,15 @@ var OperationContext = /** @class */ (function () {
|
|
|
270
270
|
me.globals = me.lookupGlobals();
|
|
271
271
|
me.locals = me.lookupLocals() || me;
|
|
272
272
|
}
|
|
273
|
-
OperationContext.prototype.step = function (
|
|
273
|
+
OperationContext.prototype.step = function (entity) {
|
|
274
274
|
var me = this;
|
|
275
275
|
var dbgr = me.debugger;
|
|
276
276
|
if (!me.injected) {
|
|
277
|
-
me.stackItem =
|
|
277
|
+
me.stackItem = entity.ast;
|
|
278
|
+
me.target = entity.target || me.target;
|
|
278
279
|
me.setLastActive(me);
|
|
279
280
|
if (dbgr.getBreakpoint(me)) {
|
|
280
|
-
dbgr.interact(me,
|
|
281
|
+
dbgr.interact(me, entity.ast, entity);
|
|
281
282
|
return dbgr.resume();
|
|
282
283
|
}
|
|
283
284
|
}
|
package/dist/cps.d.ts
CHANGED
|
@@ -6,10 +6,12 @@ export interface CPSMapType {
|
|
|
6
6
|
export interface CPSMapContext {
|
|
7
7
|
target: string;
|
|
8
8
|
resourceHandler: ResourceHandler;
|
|
9
|
+
currentTarget?: string;
|
|
9
10
|
}
|
|
10
11
|
export declare const CPSMap: (visit: (o: ASTBase) => any, context: CPSMapContext) => CPSMapType;
|
|
11
12
|
export default class CPS {
|
|
12
13
|
cpsMap: CPSMapType;
|
|
14
|
+
context: CPSMapContext;
|
|
13
15
|
constructor(context: CPSMapContext);
|
|
14
16
|
visit(o: ASTBase): Promise<any>;
|
|
15
17
|
}
|
package/dist/cps.js
CHANGED
|
@@ -80,6 +80,8 @@ var boolean_1 = __importDefault(require("./custom-types/boolean"));
|
|
|
80
80
|
var number_1 = __importDefault(require("./custom-types/number"));
|
|
81
81
|
var string_1 = __importDefault(require("./custom-types/string"));
|
|
82
82
|
var nil_1 = __importDefault(require("./custom-types/nil"));
|
|
83
|
+
var expression_1 = require("./types/expression");
|
|
84
|
+
var operation_1 = require("./types/operation");
|
|
83
85
|
var CPSMap = function (visit, context) {
|
|
84
86
|
return {
|
|
85
87
|
'AssignmentStatement': function (item) {
|
|
@@ -669,7 +671,7 @@ var CPSMap = function (visit, context) {
|
|
|
669
671
|
},
|
|
670
672
|
'FeatureImportExpression': function (item) {
|
|
671
673
|
return __awaiter(this, void 0, void 0, function () {
|
|
672
|
-
var resourceHandler, target, code;
|
|
674
|
+
var resourceHandler, target, code, chunk;
|
|
673
675
|
return __generator(this, function (_a) {
|
|
674
676
|
switch (_a.label) {
|
|
675
677
|
case 0:
|
|
@@ -682,14 +684,17 @@ var CPSMap = function (visit, context) {
|
|
|
682
684
|
return [4 /*yield*/, context.resourceHandler.get(target)];
|
|
683
685
|
case 2:
|
|
684
686
|
code = _a.sent();
|
|
685
|
-
|
|
687
|
+
context.currentTarget = target;
|
|
688
|
+
chunk = new import_1.default(item, target, code).prepare(visit);
|
|
689
|
+
context.currentTarget = context.target;
|
|
690
|
+
return [2 /*return*/, chunk];
|
|
686
691
|
}
|
|
687
692
|
});
|
|
688
693
|
});
|
|
689
694
|
},
|
|
690
695
|
'FeatureIncludeExpression': function (item) {
|
|
691
696
|
return __awaiter(this, void 0, void 0, function () {
|
|
692
|
-
var resourceHandler, target, code;
|
|
697
|
+
var resourceHandler, target, code, chunk;
|
|
693
698
|
return __generator(this, function (_a) {
|
|
694
699
|
switch (_a.label) {
|
|
695
700
|
case 0:
|
|
@@ -702,14 +707,17 @@ var CPSMap = function (visit, context) {
|
|
|
702
707
|
return [4 /*yield*/, context.resourceHandler.get(target)];
|
|
703
708
|
case 2:
|
|
704
709
|
code = _a.sent();
|
|
705
|
-
|
|
710
|
+
context.currentTarget = target;
|
|
711
|
+
chunk = new include_1.default(item, target, code).prepare(visit);
|
|
712
|
+
context.currentTarget = context.target;
|
|
713
|
+
return [2 /*return*/, chunk];
|
|
706
714
|
}
|
|
707
715
|
});
|
|
708
716
|
});
|
|
709
717
|
},
|
|
710
718
|
'ImportCodeExpression': function (item) {
|
|
711
719
|
return __awaiter(this, void 0, void 0, function () {
|
|
712
|
-
var resourceHandler, target, code;
|
|
720
|
+
var resourceHandler, target, code, chunk;
|
|
713
721
|
return __generator(this, function (_a) {
|
|
714
722
|
switch (_a.label) {
|
|
715
723
|
case 0:
|
|
@@ -722,7 +730,10 @@ var CPSMap = function (visit, context) {
|
|
|
722
730
|
return [4 /*yield*/, context.resourceHandler.get(target)];
|
|
723
731
|
case 2:
|
|
724
732
|
code = _a.sent();
|
|
725
|
-
|
|
733
|
+
context.currentTarget = target;
|
|
734
|
+
chunk = new include_1.default(item, target, code).prepare(visit);
|
|
735
|
+
context.currentTarget = context.target;
|
|
736
|
+
return [2 /*return*/, chunk];
|
|
726
737
|
}
|
|
727
738
|
});
|
|
728
739
|
});
|
|
@@ -817,6 +828,8 @@ var CPS = /** @class */ (function () {
|
|
|
817
828
|
function CPS(context) {
|
|
818
829
|
var me = this;
|
|
819
830
|
me.cpsMap = (0, exports.CPSMap)(me.visit.bind(me), context);
|
|
831
|
+
me.context = context;
|
|
832
|
+
context.currentTarget = context.target;
|
|
820
833
|
}
|
|
821
834
|
CPS.prototype.visit = function (o) {
|
|
822
835
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -839,6 +852,9 @@ var CPS = /** @class */ (function () {
|
|
|
839
852
|
return [4 /*yield*/, fn.call(me, o)];
|
|
840
853
|
case 1:
|
|
841
854
|
result = _a.sent();
|
|
855
|
+
if (result instanceof operation_1.Operation || result instanceof expression_1.Expression) {
|
|
856
|
+
result.target = me.context.currentTarget;
|
|
857
|
+
}
|
|
842
858
|
return [2 /*return*/, result];
|
|
843
859
|
}
|
|
844
860
|
});
|
package/dist/operations/body.js
CHANGED
|
@@ -100,7 +100,7 @@ var BodyOperation = /** @class */ (function (_super) {
|
|
|
100
100
|
case 2:
|
|
101
101
|
if (!!_b.done) return [3 /*break*/, 9];
|
|
102
102
|
entity = _b.value;
|
|
103
|
-
return [4 /*yield*/, operationContext.step(entity
|
|
103
|
+
return [4 /*yield*/, operationContext.step(entity)];
|
|
104
104
|
case 3:
|
|
105
105
|
_d.sent();
|
|
106
106
|
if (!(entity instanceof expression_1.Expression)) return [3 /*break*/, 5];
|