greybel-interpreter 5.4.0 → 5.5.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.
|
@@ -10,7 +10,7 @@ export declare class BytecodeExpressionGenerator implements IBytecodeExpressionG
|
|
|
10
10
|
constructor(context: Context, parseCodeFunction: ParseCodeFunction, stmtGenerator: IBytecodeStatementGenerator);
|
|
11
11
|
process(node: ASTBase, context?: LineContext): Promise<void>;
|
|
12
12
|
processMemberExpression(node: ASTMemberExpression, context?: LineCallableContext): Promise<void>;
|
|
13
|
-
processIndexExpression(node: ASTIndexExpression): Promise<void>;
|
|
13
|
+
processIndexExpression(node: ASTIndexExpression, context?: LineCallableContext): Promise<void>;
|
|
14
14
|
processSliceExpression(node: ASTSliceExpression): Promise<void>;
|
|
15
15
|
processIdentifier(node: ASTIdentifier, context?: LineIdentifierContext): Promise<void>;
|
|
16
16
|
processLiteral(node: ASTLiteral): Promise<void>;
|
|
@@ -33,13 +33,13 @@ class BytecodeExpressionGenerator {
|
|
|
33
33
|
yield this.processMemberExpression(node, context);
|
|
34
34
|
return;
|
|
35
35
|
case miniscript_core_1.ASTType.IndexExpression:
|
|
36
|
-
yield this.processIndexExpression(node);
|
|
36
|
+
yield this.processIndexExpression(node, context);
|
|
37
37
|
return;
|
|
38
38
|
case miniscript_core_1.ASTType.SliceExpression:
|
|
39
39
|
yield this.processSliceExpression(node);
|
|
40
40
|
return;
|
|
41
41
|
case miniscript_core_1.ASTType.Identifier:
|
|
42
|
-
yield this.processIdentifier(node);
|
|
42
|
+
yield this.processIdentifier(node, context);
|
|
43
43
|
return;
|
|
44
44
|
case miniscript_core_1.ASTType.BooleanLiteral:
|
|
45
45
|
case miniscript_core_1.ASTType.StringLiteral:
|
|
@@ -66,7 +66,7 @@ class BytecodeExpressionGenerator {
|
|
|
66
66
|
yield this.processFunctionDeclaration(node, context);
|
|
67
67
|
return;
|
|
68
68
|
case miniscript_core_1.ASTType.ParenthesisExpression:
|
|
69
|
-
yield this.process(node.expression);
|
|
69
|
+
yield this.process(node.expression, context);
|
|
70
70
|
return;
|
|
71
71
|
case miniscript_core_1.ASTType.BinaryNegatedExpression:
|
|
72
72
|
case miniscript_core_1.ASTType.UnaryExpression:
|
|
@@ -137,7 +137,7 @@ class BytecodeExpressionGenerator {
|
|
|
137
137
|
}
|
|
138
138
|
});
|
|
139
139
|
}
|
|
140
|
-
processIndexExpression(node) {
|
|
140
|
+
processIndexExpression(node, context) {
|
|
141
141
|
return __awaiter(this, void 0, void 0, function* () {
|
|
142
142
|
const base = (0, utils_1.unwrap)(node.base);
|
|
143
143
|
if (base instanceof miniscript_core_1.ASTIdentifier && base.name === keywords_1.RuntimeKeyword.Super) {
|
|
@@ -152,7 +152,7 @@ class BytecodeExpressionGenerator {
|
|
|
152
152
|
yield this.process(node.index);
|
|
153
153
|
this.context.pushCode({
|
|
154
154
|
op: instruction_1.OpCode.GET_PROPERTY,
|
|
155
|
-
invoke:
|
|
155
|
+
invoke: node.isStatementStart && !(context === null || context === void 0 ? void 0 : context.isReference)
|
|
156
156
|
}, node.index, node.type);
|
|
157
157
|
}
|
|
158
158
|
});
|
|
@@ -364,7 +364,9 @@ class BytecodeExpressionGenerator {
|
|
|
364
364
|
switch (node.operator) {
|
|
365
365
|
case miniscript_core_1.Operator.Reference:
|
|
366
366
|
if (arg instanceof miniscript_core_1.ASTMemberExpression) {
|
|
367
|
-
yield this.processMemberExpression(arg, {
|
|
367
|
+
yield this.processMemberExpression(arg, {
|
|
368
|
+
isReference: true
|
|
369
|
+
});
|
|
368
370
|
}
|
|
369
371
|
else if (arg instanceof miniscript_core_1.ASTIndexExpression) {
|
|
370
372
|
yield this.processIndexExpression(arg);
|
|
@@ -376,10 +376,14 @@ class BytecodeStatementGenerator {
|
|
|
376
376
|
switch (node.operator) {
|
|
377
377
|
case miniscript_core_1.Operator.Reference:
|
|
378
378
|
if (arg instanceof miniscript_core_1.ASTMemberExpression) {
|
|
379
|
-
yield this.processMemberExpression(arg, {
|
|
379
|
+
yield this.processMemberExpression(arg, {
|
|
380
|
+
isReference: true
|
|
381
|
+
});
|
|
380
382
|
}
|
|
381
383
|
else if (arg instanceof miniscript_core_1.ASTIndexExpression) {
|
|
382
|
-
yield this.processIndexExpression(arg, {
|
|
384
|
+
yield this.processIndexExpression(arg, {
|
|
385
|
+
isReference: true
|
|
386
|
+
});
|
|
383
387
|
}
|
|
384
388
|
else if (arg instanceof miniscript_core_1.ASTIdentifier) {
|
|
385
389
|
yield this.processIdentifier(arg, {
|
package/dist/vm.js
CHANGED
|
@@ -470,7 +470,8 @@ class VM {
|
|
|
470
470
|
this.frames.push(newFrame);
|
|
471
471
|
break;
|
|
472
472
|
}
|
|
473
|
-
|
|
473
|
+
if (!instruction.command)
|
|
474
|
+
this.pushStack(ret);
|
|
474
475
|
break;
|
|
475
476
|
}
|
|
476
477
|
case instruction_1.OpCode.GET_PROPERTY: {
|
|
@@ -494,7 +495,8 @@ class VM {
|
|
|
494
495
|
this.frames.push(newFrame);
|
|
495
496
|
break;
|
|
496
497
|
}
|
|
497
|
-
|
|
498
|
+
if (!instruction.command)
|
|
499
|
+
this.pushStack(ret.value);
|
|
498
500
|
break;
|
|
499
501
|
}
|
|
500
502
|
case instruction_1.OpCode.GET_SUPER_PROPERTY: {
|
|
@@ -518,7 +520,8 @@ class VM {
|
|
|
518
520
|
this.frames.push(newFrame);
|
|
519
521
|
break;
|
|
520
522
|
}
|
|
521
|
-
|
|
523
|
+
if (!instruction.command)
|
|
524
|
+
this.pushStack(ret.value);
|
|
522
525
|
break;
|
|
523
526
|
}
|
|
524
527
|
case instruction_1.OpCode.CALL_INTERNAL: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "greybel-interpreter",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.5.0",
|
|
4
4
|
"description": "Interpreter",
|
|
5
5
|
"main": "dist/index",
|
|
6
6
|
"typings": "dist/index",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"typescript": "^5.0.4"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"greybel-core": "~2.
|
|
53
|
+
"greybel-core": "~2.5.0",
|
|
54
54
|
"hyperid": "^3.2.0",
|
|
55
55
|
"imurmurhash": "^0.1.4",
|
|
56
56
|
"non-blocking-schedule": "^0.2.0"
|