greybel-interpreter 0.4.7 → 0.4.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.
- package/dist/cps.js +2 -2
- package/dist/expressions/call.js +6 -15
- package/dist/expressions/map.js +5 -11
- package/dist/operations/argument.js +18 -16
- package/dist/operations/function.js +3 -2
- package/dist/operations/if-statement.js +36 -21
- package/package.json +3 -3
package/dist/cps.js
CHANGED
|
@@ -665,7 +665,7 @@ var CPSMap = function (visit, context) {
|
|
|
665
665
|
return new call_1.default(item).prepare(visit);
|
|
666
666
|
},
|
|
667
667
|
'CallStatement': function (item) {
|
|
668
|
-
return
|
|
668
|
+
return visit(item.expression);
|
|
669
669
|
},
|
|
670
670
|
'FeatureImportExpression': function (item) {
|
|
671
671
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -716,7 +716,7 @@ var CPSMap = function (visit, context) {
|
|
|
716
716
|
resourceHandler = context.resourceHandler;
|
|
717
717
|
return [4 /*yield*/, resourceHandler.getTargetRelativeTo(context.target,
|
|
718
718
|
// @ts-ignore: FileSystemDirectory is always a string
|
|
719
|
-
item.fileSystemDirectory
|
|
719
|
+
item.fileSystemDirectory)];
|
|
720
720
|
case 1:
|
|
721
721
|
target = _a.sent();
|
|
722
722
|
return [4 /*yield*/, context.resourceHandler.get(target)];
|
package/dist/expressions/call.js
CHANGED
|
@@ -77,7 +77,6 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
77
77
|
};
|
|
78
78
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
79
79
|
exports.ExpressionSegment = void 0;
|
|
80
|
-
var greyscript_core_1 = require("greyscript-core");
|
|
81
80
|
var expression_1 = require("../types/expression");
|
|
82
81
|
var operation_1 = require("../types/operation");
|
|
83
82
|
var typer_1 = require("../typer");
|
|
@@ -121,24 +120,16 @@ var CallExpression = /** @class */ (function (_super) {
|
|
|
121
120
|
me = this;
|
|
122
121
|
buildExpression = function (node) {
|
|
123
122
|
return __awaiter(this, void 0, void 0, function () {
|
|
124
|
-
var _a, _b
|
|
125
|
-
return __generator(this, function (
|
|
126
|
-
switch (
|
|
123
|
+
var _a, _b;
|
|
124
|
+
return __generator(this, function (_c) {
|
|
125
|
+
switch (_c.label) {
|
|
127
126
|
case 0:
|
|
128
|
-
if (!(greyscript_core_1.ASTType.CallStatement === node.type)) return [3 /*break*/, 1];
|
|
129
|
-
return [2 /*return*/, buildExpression(node.expression)];
|
|
130
|
-
case 1:
|
|
131
|
-
if (!(greyscript_core_1.ASTType.Identifier === node.type)) return [3 /*break*/, 3];
|
|
132
127
|
_a = ExpressionSegment.bind;
|
|
133
|
-
return [4 /*yield*/, visit(node)];
|
|
134
|
-
case 2: return [2 /*return*/, new (_a.apply(ExpressionSegment, [void 0, _d.sent(), []]))()];
|
|
135
|
-
case 3:
|
|
136
|
-
_b = ExpressionSegment.bind;
|
|
137
128
|
return [4 /*yield*/, visit(node.base)];
|
|
138
|
-
case
|
|
139
|
-
|
|
129
|
+
case 1:
|
|
130
|
+
_b = [void 0, _c.sent()];
|
|
140
131
|
return [4 /*yield*/, Promise.all(node.arguments.map(function (item) { return visit(item); }))];
|
|
141
|
-
case
|
|
132
|
+
case 2: return [2 /*return*/, new (_a.apply(ExpressionSegment, _b.concat([_c.sent()])))()];
|
|
142
133
|
}
|
|
143
134
|
});
|
|
144
135
|
});
|
package/dist/expressions/map.js
CHANGED
|
@@ -110,12 +110,11 @@ var MapExpression = /** @class */ (function (_super) {
|
|
|
110
110
|
return __generator(this, function (_b) {
|
|
111
111
|
switch (_b.label) {
|
|
112
112
|
case 0:
|
|
113
|
-
_a = {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
_a.key = _b.sent();
|
|
113
|
+
_a = {
|
|
114
|
+
key: item.key
|
|
115
|
+
};
|
|
117
116
|
return [4 /*yield*/, visit(item.value)];
|
|
118
|
-
case
|
|
117
|
+
case 1: return [2 /*return*/, (_a.value = _b.sent(),
|
|
119
118
|
_a)];
|
|
120
119
|
}
|
|
121
120
|
});
|
|
@@ -147,12 +146,7 @@ var MapExpression = /** @class */ (function (_super) {
|
|
|
147
146
|
current = values_1_1.value;
|
|
148
147
|
key = void 0;
|
|
149
148
|
value = void 0;
|
|
150
|
-
|
|
151
|
-
key = current.key.valueOf();
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
operationContext.debugger.raise('Unexpected key', me, current.key);
|
|
155
|
-
}
|
|
149
|
+
key = current.key;
|
|
156
150
|
if (!(0, typer_1.isCustomValue)(current.value)) return [3 /*break*/, 3];
|
|
157
151
|
value = current.value;
|
|
158
152
|
return [3 /*break*/, 6];
|
|
@@ -67,8 +67,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
67
67
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
68
68
|
var typer_1 = require("../typer");
|
|
69
69
|
var operation_1 = require("../types/operation");
|
|
70
|
-
var
|
|
70
|
+
var path_1 = __importDefault(require("../expressions/path"));
|
|
71
71
|
var assign_1 = __importDefault(require("../expressions/assign"));
|
|
72
|
+
var nil_1 = __importDefault(require("../custom-types/nil"));
|
|
72
73
|
var ArgumentOperation = /** @class */ (function (_super) {
|
|
73
74
|
__extends(ArgumentOperation, _super);
|
|
74
75
|
function ArgumentOperation(ast) {
|
|
@@ -80,19 +81,19 @@ var ArgumentOperation = /** @class */ (function (_super) {
|
|
|
80
81
|
}
|
|
81
82
|
ArgumentOperation.prototype.get = function (operationContext) {
|
|
82
83
|
return __awaiter(this, void 0, void 0, function () {
|
|
83
|
-
var me, stack, args, stack_1, stack_1_1, entity, _a, _b,
|
|
84
|
-
var e_1,
|
|
85
|
-
return __generator(this, function (
|
|
86
|
-
switch (
|
|
84
|
+
var me, stack, args, stack_1, stack_1_1, entity, _a, _b, arg, e_1_1;
|
|
85
|
+
var e_1, _c;
|
|
86
|
+
return __generator(this, function (_d) {
|
|
87
|
+
switch (_d.label) {
|
|
87
88
|
case 0:
|
|
88
89
|
me = this;
|
|
89
90
|
stack = me.stack;
|
|
90
91
|
args = [];
|
|
91
|
-
|
|
92
|
+
_d.label = 1;
|
|
92
93
|
case 1:
|
|
93
|
-
|
|
94
|
+
_d.trys.push([1, 11, 12, 13]);
|
|
94
95
|
stack_1 = __values(stack), stack_1_1 = stack_1.next();
|
|
95
|
-
|
|
96
|
+
_d.label = 2;
|
|
96
97
|
case 2:
|
|
97
98
|
if (!!stack_1_1.done) return [3 /*break*/, 10];
|
|
98
99
|
entity = stack_1_1.value;
|
|
@@ -103,33 +104,34 @@ var ArgumentOperation = /** @class */ (function (_super) {
|
|
|
103
104
|
if (!(entity instanceof assign_1.default)) return [3 /*break*/, 6];
|
|
104
105
|
return [4 /*yield*/, entity.get(operationContext, me)];
|
|
105
106
|
case 4:
|
|
106
|
-
|
|
107
|
+
_d.sent();
|
|
107
108
|
_b = (_a = args).push;
|
|
108
109
|
return [4 /*yield*/, entity.expr.left.get(operationContext)];
|
|
109
110
|
case 5:
|
|
110
|
-
_b.apply(_a, [
|
|
111
|
+
_b.apply(_a, [_d.sent()]);
|
|
111
112
|
return [3 /*break*/, 9];
|
|
112
113
|
case 6:
|
|
113
|
-
if (!(entity instanceof
|
|
114
|
-
_d = (_c = args).push;
|
|
114
|
+
if (!(entity instanceof path_1.default)) return [3 /*break*/, 8];
|
|
115
115
|
return [4 /*yield*/, entity.get(operationContext, me)];
|
|
116
116
|
case 7:
|
|
117
|
-
_d.
|
|
117
|
+
arg = _d.sent();
|
|
118
|
+
operationContext.set(arg.path, new nil_1.default());
|
|
119
|
+
args.push(arg);
|
|
118
120
|
return [3 /*break*/, 9];
|
|
119
121
|
case 8:
|
|
120
122
|
operationContext.debugger.raise('Unexpected argument', me, entity);
|
|
121
|
-
|
|
123
|
+
_d.label = 9;
|
|
122
124
|
case 9:
|
|
123
125
|
stack_1_1 = stack_1.next();
|
|
124
126
|
return [3 /*break*/, 2];
|
|
125
127
|
case 10: return [3 /*break*/, 13];
|
|
126
128
|
case 11:
|
|
127
|
-
e_1_1 =
|
|
129
|
+
e_1_1 = _d.sent();
|
|
128
130
|
e_1 = { error: e_1_1 };
|
|
129
131
|
return [3 /*break*/, 13];
|
|
130
132
|
case 12:
|
|
131
133
|
try {
|
|
132
|
-
if (stack_1_1 && !stack_1_1.done && (
|
|
134
|
+
if (stack_1_1 && !stack_1_1.done && (_c = stack_1.return)) _c.call(stack_1);
|
|
133
135
|
}
|
|
134
136
|
finally { if (e_1) throw e_1.error; }
|
|
135
137
|
return [7 /*endfinally*/];
|
|
@@ -54,6 +54,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
54
54
|
var operation_1 = require("../types/operation");
|
|
55
55
|
var uuid_1 = require("uuid");
|
|
56
56
|
var context_1 = require("../context");
|
|
57
|
+
var typer_1 = require("../typer");
|
|
57
58
|
var FunctionOperation = /** @class */ (function (_super) {
|
|
58
59
|
__extends(FunctionOperation, _super);
|
|
59
60
|
function FunctionOperation(ast, options) {
|
|
@@ -111,7 +112,7 @@ var FunctionOperation = /** @class */ (function (_super) {
|
|
|
111
112
|
_a.label = 2;
|
|
112
113
|
case 2:
|
|
113
114
|
if (!(index < max)) return [3 /*break*/, 5];
|
|
114
|
-
if (!incArgs[index]) return [3 /*break*/, 4];
|
|
115
|
+
if (!(incArgs === null || incArgs === void 0 ? void 0 : incArgs[index])) return [3 /*break*/, 4];
|
|
115
116
|
return [4 /*yield*/, opc.set(args[index].path, incArgs[index])];
|
|
116
117
|
case 3:
|
|
117
118
|
_a.sent();
|
|
@@ -122,7 +123,7 @@ var FunctionOperation = /** @class */ (function (_super) {
|
|
|
122
123
|
case 5: return [4 /*yield*/, me.body.run(opc)];
|
|
123
124
|
case 6:
|
|
124
125
|
_a.sent();
|
|
125
|
-
return [2 /*return*/, functionContext.value];
|
|
126
|
+
return [2 /*return*/, (0, typer_1.cast)(functionContext.value)];
|
|
126
127
|
}
|
|
127
128
|
});
|
|
128
129
|
});
|
|
@@ -66,9 +66,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
66
66
|
};
|
|
67
67
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
68
68
|
var operation_1 = require("../types/operation");
|
|
69
|
+
var expression_1 = require("../types/expression");
|
|
69
70
|
var if_1 = __importDefault(require("./if"));
|
|
70
71
|
var else_if_1 = __importDefault(require("./else-if"));
|
|
71
72
|
var else_1 = __importDefault(require("./else"));
|
|
73
|
+
var typer_1 = require("../typer");
|
|
72
74
|
var IfStatementOperation = /** @class */ (function (_super) {
|
|
73
75
|
__extends(IfStatementOperation, _super);
|
|
74
76
|
function IfStatementOperation(ast) {
|
|
@@ -80,7 +82,7 @@ var IfStatementOperation = /** @class */ (function (_super) {
|
|
|
80
82
|
}
|
|
81
83
|
IfStatementOperation.prototype.run = function (operationContext) {
|
|
82
84
|
return __awaiter(this, void 0, void 0, function () {
|
|
83
|
-
var me, clauses, clauses_1, clauses_1_1, clause, isValid, e_1_1;
|
|
85
|
+
var me, clauses, clauses_1, clauses_1_1, clause, condition, isValid, e_1_1;
|
|
84
86
|
var e_1, _a;
|
|
85
87
|
return __generator(this, function (_b) {
|
|
86
88
|
switch (_b.label) {
|
|
@@ -89,46 +91,59 @@ var IfStatementOperation = /** @class */ (function (_super) {
|
|
|
89
91
|
clauses = me.clauses;
|
|
90
92
|
_b.label = 1;
|
|
91
93
|
case 1:
|
|
92
|
-
_b.trys.push([1,
|
|
94
|
+
_b.trys.push([1, 14, 15, 16]);
|
|
93
95
|
clauses_1 = __values(clauses), clauses_1_1 = clauses_1.next();
|
|
94
96
|
_b.label = 2;
|
|
95
97
|
case 2:
|
|
96
|
-
if (!!clauses_1_1.done) return [3 /*break*/,
|
|
98
|
+
if (!!clauses_1_1.done) return [3 /*break*/, 13];
|
|
97
99
|
clause = clauses_1_1.value;
|
|
98
|
-
if (!(clause instanceof if_1.default || clause instanceof else_if_1.default)) return [3 /*break*/,
|
|
99
|
-
|
|
100
|
+
if (!(clause instanceof if_1.default || clause instanceof else_if_1.default)) return [3 /*break*/, 9];
|
|
101
|
+
condition = clause.condition;
|
|
102
|
+
isValid = void 0;
|
|
103
|
+
if (!(0, typer_1.isCustomValue)(condition)) return [3 /*break*/, 3];
|
|
104
|
+
isValid = condition.valueOf();
|
|
105
|
+
return [3 /*break*/, 6];
|
|
100
106
|
case 3:
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
return [4 /*yield*/,
|
|
107
|
+
if (!(condition instanceof expression_1.Expression ||
|
|
108
|
+
condition instanceof operation_1.Operation)) return [3 /*break*/, 5];
|
|
109
|
+
return [4 /*yield*/, condition.get(operationContext)];
|
|
104
110
|
case 4:
|
|
105
|
-
_b.sent();
|
|
106
|
-
return [3 /*break*/,
|
|
107
|
-
case 5:
|
|
111
|
+
isValid = _b.sent();
|
|
112
|
+
return [3 /*break*/, 6];
|
|
113
|
+
case 5:
|
|
114
|
+
operationContext.debugger.raise('Unexpected condition in clause', me, clause.condition);
|
|
115
|
+
_b.label = 6;
|
|
108
116
|
case 6:
|
|
109
|
-
if (!(
|
|
117
|
+
if (!isValid.valueOf()) return [3 /*break*/, 8];
|
|
110
118
|
return [4 /*yield*/, clause.body.run(operationContext)];
|
|
111
119
|
case 7:
|
|
112
120
|
_b.sent();
|
|
113
|
-
return [3 /*break*/,
|
|
114
|
-
case 8:
|
|
115
|
-
operationContext.debugger.raise('Invalid operation in if statement.', me, clause);
|
|
116
|
-
_b.label = 9;
|
|
121
|
+
return [3 /*break*/, 13];
|
|
122
|
+
case 8: return [3 /*break*/, 12];
|
|
117
123
|
case 9:
|
|
124
|
+
if (!(clause instanceof else_1.default)) return [3 /*break*/, 11];
|
|
125
|
+
return [4 /*yield*/, clause.body.run(operationContext)];
|
|
126
|
+
case 10:
|
|
127
|
+
_b.sent();
|
|
128
|
+
return [3 /*break*/, 13];
|
|
129
|
+
case 11:
|
|
130
|
+
operationContext.debugger.raise('Invalid operation in if statement.', me, clause);
|
|
131
|
+
_b.label = 12;
|
|
132
|
+
case 12:
|
|
118
133
|
clauses_1_1 = clauses_1.next();
|
|
119
134
|
return [3 /*break*/, 2];
|
|
120
|
-
case
|
|
121
|
-
case
|
|
135
|
+
case 13: return [3 /*break*/, 16];
|
|
136
|
+
case 14:
|
|
122
137
|
e_1_1 = _b.sent();
|
|
123
138
|
e_1 = { error: e_1_1 };
|
|
124
|
-
return [3 /*break*/,
|
|
125
|
-
case
|
|
139
|
+
return [3 /*break*/, 16];
|
|
140
|
+
case 15:
|
|
126
141
|
try {
|
|
127
142
|
if (clauses_1_1 && !clauses_1_1.done && (_a = clauses_1.return)) _a.call(clauses_1);
|
|
128
143
|
}
|
|
129
144
|
finally { if (e_1) throw e_1.error; }
|
|
130
145
|
return [7 /*endfinally*/];
|
|
131
|
-
case
|
|
146
|
+
case 16: return [2 /*return*/];
|
|
132
147
|
}
|
|
133
148
|
});
|
|
134
149
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "greybel-interpreter",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.8",
|
|
4
4
|
"description": "Interpreter",
|
|
5
5
|
"main": "dist/index",
|
|
6
6
|
"typings": "dist/index",
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"typescript": "^4.5.4"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"greybel-core": "^0.2.
|
|
38
|
-
"greyscript-core": "^0.1
|
|
37
|
+
"greybel-core": "^0.2.1",
|
|
38
|
+
"greyscript-core": "^0.2.1",
|
|
39
39
|
"uuid": "^8.3.2"
|
|
40
40
|
},
|
|
41
41
|
"keywords": [
|