mlogjs 0.2.0 → 0.3.0-beta.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.
- package/LICENSE +21 -21
- package/README.md +68 -18
- package/build/Compiler.js +32 -47
- package/build/Compiler.js.map +1 -1
- package/build/CompilerError.js +11 -0
- package/build/CompilerError.js.map +1 -0
- package/build/Scope.js +17 -7
- package/build/Scope.js.map +1 -1
- package/build/bin.js +45 -12
- package/build/bin.js.map +1 -1
- package/build/handlers/BlockStatement.js.map +1 -1
- package/build/handlers/CallExpression.js.map +1 -1
- package/build/handlers/File.js +9 -0
- package/build/handlers/File.js.map +1 -0
- package/build/handlers/ForStatement.js.map +1 -1
- package/build/handlers/Function.js +20 -9
- package/build/handlers/Function.js.map +1 -1
- package/build/handlers/IfStatement.js.map +1 -1
- package/build/handlers/Literal.js +11 -14
- package/build/handlers/Literal.js.map +1 -1
- package/build/handlers/Object.js +16 -5
- package/build/handlers/Object.js.map +1 -1
- package/build/handlers/OperationExpressions.js +6 -1
- package/build/handlers/OperationExpressions.js.map +1 -1
- package/build/handlers/Program.js +1 -1
- package/build/handlers/Program.js.map +1 -1
- package/build/handlers/Statements.js.map +1 -1
- package/build/handlers/TemplateExpression.js.map +1 -1
- package/build/handlers/VariableDeclaration.js +25 -9
- package/build/handlers/VariableDeclaration.js.map +1 -1
- package/build/handlers/WhileStatement.js.map +1 -1
- package/build/handlers/index.js +1 -0
- package/build/handlers/index.js.map +1 -1
- package/build/index.js +5 -5
- package/build/index.js.map +1 -1
- package/build/initScope.js +40 -0
- package/build/initScope.js.map +1 -0
- package/build/instructions/InstructionBase.js +1 -1
- package/build/instructions/InstructionBase.js.map +1 -1
- package/build/instructions/JumpInstruction.js +1 -1
- package/build/instructions/JumpInstruction.js.map +1 -1
- package/build/instructions/OperationInstruction.js.map +1 -1
- package/build/macros/Building.js +16 -8
- package/build/macros/Building.js.map +1 -1
- package/build/macros/Function.js +1 -1
- package/build/macros/Function.js.map +1 -1
- package/build/macros/Math.js +13 -8
- package/build/macros/Math.js.map +1 -1
- package/build/macros/Memory.js +7 -5
- package/build/macros/Memory.js.map +1 -1
- package/build/macros/Namespace.js +24 -11
- package/build/macros/Namespace.js.map +1 -1
- package/build/macros/Other.js +2 -1
- package/build/macros/Other.js.map +1 -1
- package/build/macros/RawValue.js +2 -1
- package/build/macros/RawValue.js.map +1 -1
- package/build/macros/commands/{control.js → Control.js} +4 -3
- package/build/macros/commands/Control.js.map +1 -0
- package/build/macros/commands/Draw.js +4 -3
- package/build/macros/commands/Draw.js.map +1 -1
- package/build/macros/commands/DrawFlush.js +2 -1
- package/build/macros/commands/DrawFlush.js.map +1 -1
- package/build/macros/commands/GetLink.js +8 -4
- package/build/macros/commands/GetLink.js.map +1 -1
- package/build/macros/commands/Lookup.js +5 -4
- package/build/macros/commands/Lookup.js.map +1 -1
- package/build/macros/commands/Print.js +5 -1
- package/build/macros/commands/Print.js.map +1 -1
- package/build/macros/commands/PrintFlush.js +2 -1
- package/build/macros/commands/PrintFlush.js.map +1 -1
- package/build/macros/commands/Radar.js +16 -12
- package/build/macros/commands/Radar.js.map +1 -1
- package/build/macros/commands/Sensor.js +4 -3
- package/build/macros/commands/Sensor.js.map +1 -1
- package/build/macros/commands/UnitBind.js +2 -1
- package/build/macros/commands/UnitBind.js.map +1 -1
- package/build/macros/commands/UnitControl.js +13 -8
- package/build/macros/commands/UnitControl.js.map +1 -1
- package/build/macros/commands/UnitLocate.js +29 -8
- package/build/macros/commands/UnitLocate.js.map +1 -1
- package/build/macros/commands/UnitRadar.js +17 -10
- package/build/macros/commands/UnitRadar.js.map +1 -1
- package/build/macros/commands/Wait.js +2 -1
- package/build/macros/commands/Wait.js.map +1 -1
- package/build/operators.js.map +1 -1
- package/build/types.js +1 -1
- package/build/types.js.map +1 -1
- package/build/utils.js +7 -2
- package/build/utils.js.map +1 -1
- package/build/values/BaseValue.js +5 -5
- package/build/values/BaseValue.js.map +1 -1
- package/build/values/FunctionValue.js +25 -13
- package/build/values/FunctionValue.js.map +1 -1
- package/build/values/LiteralValue.js +5 -4
- package/build/values/LiteralValue.js.map +1 -1
- package/build/values/ObjectValue.js +11 -6
- package/build/values/ObjectValue.js.map +1 -1
- package/build/values/StoreValue.js +3 -2
- package/build/values/StoreValue.js.map +1 -1
- package/build/values/TempValue.js +18 -7
- package/build/values/TempValue.js.map +1 -1
- package/build/values/VoidValue.js +8 -7
- package/build/values/VoidValue.js.map +1 -1
- package/dist/bin.cjs +82 -0
- package/dist/bin.cjs.map +1 -0
- package/dist/index.cjs +2187 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.mjs +2162 -0
- package/dist/index.mjs.map +1 -0
- package/dist/types/Compiler.d.ts +26 -0
- package/dist/types/CompilerError.d.ts +9 -0
- package/dist/types/Scope.d.ts +24 -0
- package/dist/types/bin.d.ts +1 -0
- package/dist/types/handlers/BlockStatement.d.ts +2 -0
- package/dist/types/handlers/CallExpression.d.ts +3 -0
- package/dist/types/handlers/File.d.ts +2 -0
- package/dist/types/handlers/ForStatement.d.ts +2 -0
- package/{build → dist/types}/handlers/Function.d.ts +1 -0
- package/{build → dist/types}/handlers/Identifier.d.ts +0 -0
- package/dist/types/handlers/IfStatement.d.ts +2 -0
- package/dist/types/handlers/Literal.d.ts +5 -0
- package/{build → dist/types}/handlers/Object.d.ts +2 -0
- package/{build → dist/types}/handlers/OperationExpressions.d.ts +1 -0
- package/dist/types/handlers/Program.d.ts +2 -0
- package/dist/types/handlers/Statements.d.ts +5 -0
- package/dist/types/handlers/TemplateExpression.d.ts +2 -0
- package/dist/types/handlers/Typescript.d.ts +7 -0
- package/dist/types/handlers/VariableDeclaration.d.ts +3 -0
- package/dist/types/handlers/WhileStatement.d.ts +3 -0
- package/{build → dist/types}/handlers/index.d.ts +2 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/initScope.d.ts +5 -0
- package/{build → dist/types}/instructions/AddressResolver.d.ts +1 -1
- package/{build → dist/types}/instructions/ControlInstructions.d.ts +0 -3
- package/{build → dist/types}/instructions/EndInstruction.d.ts +0 -0
- package/{build → dist/types}/instructions/InstructionBase.d.ts +4 -4
- package/{build → dist/types}/instructions/JumpInstruction.d.ts +1 -1
- package/{build → dist/types}/instructions/OperationInstruction.d.ts +1 -1
- package/{build → dist/types}/instructions/SetCounterInstruction.d.ts +0 -0
- package/{build → dist/types}/instructions/SetInstruction.d.ts +1 -0
- package/{build → dist/types}/instructions/ZeroSpaceInstruction.d.ts +0 -0
- package/{build → dist/types}/instructions/index.d.ts +0 -0
- package/{build → dist/types}/macros/Building.d.ts +1 -2
- package/dist/types/macros/Entities.d.ts +11 -0
- package/dist/types/macros/Function.d.ts +13 -0
- package/{build/macros/Draw.d.ts → dist/types/macros/GetGlobal.d.ts} +1 -1
- package/{build → dist/types}/macros/Math.d.ts +0 -0
- package/{build → dist/types}/macros/Memory.d.ts +0 -0
- package/{build → dist/types}/macros/Namespace.d.ts +0 -5
- package/{build → dist/types}/macros/Other.d.ts +0 -0
- package/{build → dist/types}/macros/RawValue.d.ts +0 -0
- package/{build/macros/commands/Asm.d.ts → dist/types/macros/commands/Control.d.ts} +1 -1
- package/{build/macros/helpers/GetVar.d.ts → dist/types/macros/commands/Draw.d.ts} +1 -1
- package/{build → dist/types}/macros/commands/DrawFlush.d.ts +1 -1
- package/{build/macros/commands/Draw.d.ts → dist/types/macros/commands/End.d.ts} +1 -1
- package/{build → dist/types}/macros/commands/GetLink.d.ts +0 -0
- package/{build → dist/types}/macros/commands/Lookup.d.ts +0 -0
- package/{build → dist/types}/macros/commands/Print.d.ts +1 -1
- package/{build → dist/types}/macros/commands/PrintFlush.d.ts +1 -1
- package/{build → dist/types}/macros/commands/Radar.d.ts +0 -0
- package/{build → dist/types}/macros/commands/Sensor.d.ts +0 -0
- package/{build → dist/types}/macros/commands/UnitBind.d.ts +1 -1
- package/dist/types/macros/commands/UnitControl.d.ts +5 -0
- package/{build → dist/types}/macros/commands/UnitLocate.d.ts +0 -0
- package/{build → dist/types}/macros/commands/UnitRadar.d.ts +0 -0
- package/{build → dist/types}/macros/commands/Wait.d.ts +1 -1
- package/{build → dist/types}/macros/commands/index.d.ts +1 -0
- package/{build → dist/types}/macros/index.d.ts +0 -1
- package/{build → dist/types}/operators.d.ts +1 -1
- package/dist/types/types.d.ts +209 -0
- package/dist/types/utils.d.ts +24 -0
- package/dist/types/values/BaseValue.d.ts +7 -0
- package/dist/types/values/DestructuringValue.d.ts +17 -0
- package/{build → dist/types}/values/FunctionValue.d.ts +21 -8
- package/{build → dist/types}/values/LiteralValue.d.ts +2 -1
- package/dist/types/values/ObjectValue.d.ts +23 -0
- package/dist/types/values/SenseableValue.d.ts +23 -0
- package/dist/types/values/StackValue.d.ts +16 -0
- package/{build → dist/types}/values/StoreValue.d.ts +7 -3
- package/{build → dist/types}/values/TempValue.d.ts +9 -2
- package/dist/types/values/ValueOwner.d.ts +27 -0
- package/dist/types/values/VoidValue.d.ts +16 -0
- package/{build → dist/types}/values/index.d.ts +2 -1
- package/lib/commands.d.ts +532 -326
- package/lib/eslib/index.d.ts +3 -3
- package/lib/eslib/lib.d.ts +9 -9
- package/lib/eslib/lib.es2015.collection.d.ts +89 -89
- package/lib/eslib/lib.es2015.core.d.ts +16 -16
- package/lib/eslib/lib.es2015.d.ts +30 -30
- package/lib/eslib/lib.es2015.generator.d.ts +79 -79
- package/lib/eslib/lib.es2015.iterable.d.ts +70 -70
- package/lib/eslib/lib.es5.d.ts +295 -295
- package/lib/eslib/lib.es6.d.ts +18 -18
- package/lib/globals.d.ts +341 -328
- package/lib/helpers.d.ts +23 -23
- package/lib/index.d.ts +7 -7
- package/lib/kinds.d.ts +36 -36
- package/lib/memory.d.ts +17 -17
- package/lib/traits.d.ts +141 -121
- package/lib/util.d.ts +32 -32
- package/package.json +68 -48
- package/build/Compiler.d.ts +0 -18
- package/build/Scope.d.ts +0 -26
- package/build/bin.d.ts +0 -2
- package/build/handlers/BlockStatement.d.ts +0 -2
- package/build/handlers/CallExpression.d.ts +0 -3
- package/build/handlers/ForStatement.d.ts +0 -2
- package/build/handlers/IfStatement.d.ts +0 -2
- package/build/handlers/Literal.d.ts +0 -2
- package/build/handlers/Program.d.ts +0 -2
- package/build/handlers/Statements.d.ts +0 -5
- package/build/handlers/TemplateExpression.d.ts +0 -2
- package/build/handlers/VariableDeclaration.d.ts +0 -3
- package/build/handlers/WhileStatement.d.ts +0 -2
- package/build/index.d.ts +0 -1
- package/build/macros/Blocks.d.ts +0 -5
- package/build/macros/Blocks.js +0 -143
- package/build/macros/Blocks.js.map +0 -1
- package/build/macros/Draw.js +0 -39
- package/build/macros/Draw.js.map +0 -1
- package/build/macros/Function.d.ts +0 -12
- package/build/macros/Items.d.ts +0 -5
- package/build/macros/Items.js +0 -20
- package/build/macros/Items.js.map +0 -1
- package/build/macros/Liquids.d.ts +0 -5
- package/build/macros/Liquids.js +0 -18
- package/build/macros/Liquids.js.map +0 -1
- package/build/macros/Symbol.d.ts +0 -0
- package/build/macros/Symbol.js +0 -1
- package/build/macros/Symbol.js.map +0 -1
- package/build/macros/SymbolNamespace.d.ts +0 -0
- package/build/macros/SymbolNamespace.js +0 -1
- package/build/macros/SymbolNamespace.js.map +0 -1
- package/build/macros/TypeFactory.d.ts +0 -8
- package/build/macros/TypeFactory.js +0 -22
- package/build/macros/TypeFactory.js.map +0 -1
- package/build/macros/Units.d.ts +0 -5
- package/build/macros/Units.js +0 -18
- package/build/macros/Units.js.map +0 -1
- package/build/macros/Vars.d.ts +0 -5
- package/build/macros/Vars.js +0 -18
- package/build/macros/Vars.js.map +0 -1
- package/build/macros/commands/Asm.js +0 -21
- package/build/macros/commands/Asm.js.map +0 -1
- package/build/macros/commands/UnitControl.d.ts +0 -5
- package/build/macros/commands/control.d.ts +0 -5
- package/build/macros/commands/control.js.map +0 -1
- package/build/macros/commands/io.d.ts +0 -8
- package/build/macros/commands/io.js +0 -47
- package/build/macros/commands/io.js.map +0 -1
- package/build/macros/helpers/GetBuilding.d.ts +0 -5
- package/build/macros/helpers/GetBuilding.js +0 -16
- package/build/macros/helpers/GetBuilding.js.map +0 -1
- package/build/macros/helpers/GetVar.js +0 -16
- package/build/macros/helpers/GetVar.js.map +0 -1
- package/build/macros/helpers/index.d.ts +0 -2
- package/build/macros/helpers/index.js +0 -15
- package/build/macros/helpers/index.js.map +0 -1
- package/build/types.d.ts +0 -49
- package/build/utils.d.ts +0 -3
- package/build/values/BaseValue.d.ts +0 -5
- package/build/values/ObjectValue.d.ts +0 -17
- package/build/values/VoidValue.d.ts +0 -11
- package/dist/bundle.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Literal.js","sourceRoot":"","sources":["../../src/handlers/Literal.ts"],"names":[],"mappings":";;;AACA,sCAAyC;
|
|
1
|
+
{"version":3,"file":"Literal.js","sourceRoot":"","sources":["../../src/handlers/Literal.ts"],"names":[],"mappings":";;;AACA,sCAAyC;AAEzC,MAAM,OAAO,GAAa,CACxB,EAAE,EACF,KAAK,EACL,IAA0C,EAC1C,EAAE,CAAC,CAAC,IAAI,qBAAY,CAAC,KAAK,EAAE,IAAI,CAAC,KAAiB,CAAC,EAAE,EAAE,CAAC,CAAC;AAE9C,QAAA,cAAc,GAAG,OAAO,CAAC;AACzB,QAAA,aAAa,GAAG,OAAO,CAAC;AAE9B,MAAM,WAAW,GAAa,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;IAClD,IAAI,qBAAY,CAAC,KAAK,EAAE,IAA2B,CAAC;IACpD,EAAE;CACH,CAAC;AAHW,QAAA,WAAW,eAGtB;AAEK,MAAM,cAAc,GAAa,CACtC,EAAE,EACF,KAAK,EACL,IAAuB,EACvB,EAAE,CAAC,CAAC,IAAI,qBAAY,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;AAJnC,QAAA,cAAc,kBAIqB"}
|
package/build/handlers/Object.js
CHANGED
|
@@ -1,19 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MemberExpression = exports.ArrayExpression = exports.ObjectExpression = void 0;
|
|
4
|
+
const CompilerError_1 = require("../CompilerError");
|
|
4
5
|
const values_1 = require("../values");
|
|
5
6
|
const ObjectExpression = (c, scope, node) => {
|
|
6
7
|
const data = {};
|
|
7
8
|
const inst = [];
|
|
8
9
|
for (const prop of node.properties) {
|
|
10
|
+
if (prop.type === "SpreadElement")
|
|
11
|
+
throw new CompilerError_1.CompilerError("Cannot handle spread element");
|
|
9
12
|
if (prop.computed)
|
|
10
|
-
throw new
|
|
11
|
-
const { key
|
|
13
|
+
throw new CompilerError_1.CompilerError("Cannot handle computed property.");
|
|
14
|
+
const { key } = prop;
|
|
15
|
+
const value = prop.type === "ObjectProperty" ? prop.value : prop;
|
|
12
16
|
let index;
|
|
13
|
-
if (key.type === "Identifier")
|
|
17
|
+
if (key.type === "Identifier") {
|
|
14
18
|
index = key.name;
|
|
15
|
-
|
|
16
|
-
|
|
19
|
+
}
|
|
20
|
+
else if (key.type === "StringLiteral" || key.type === "NumericLiteral") {
|
|
21
|
+
index = `${key.value}`;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
throw new CompilerError_1.CompilerError(`Unsupported object key type: ${key.type}`);
|
|
25
|
+
}
|
|
17
26
|
const [member, memberInst] = c.handleEval(scope, value);
|
|
18
27
|
data[index] = member;
|
|
19
28
|
inst.push(...memberInst);
|
|
@@ -25,6 +34,8 @@ const ArrayExpression = (c, scope, node) => {
|
|
|
25
34
|
const data = {};
|
|
26
35
|
const inst = [];
|
|
27
36
|
node.elements.forEach((element, i) => {
|
|
37
|
+
if (!element)
|
|
38
|
+
return;
|
|
28
39
|
const [value, valueInst] = c.handleEval(scope, element);
|
|
29
40
|
data[i] = value;
|
|
30
41
|
inst.push(...valueInst);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Object.js","sourceRoot":"","sources":["../../src/handlers/Object.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Object.js","sourceRoot":"","sources":["../../src/handlers/Object.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.UpdateExpression = exports.UnaryExpression = exports.AssignmentExpression = exports.LogicalExpression = exports.BinaryExpression = exports.LRExpression = void 0;
|
|
4
|
+
const CompilerError_1 = require("../CompilerError");
|
|
4
5
|
const LRExpression = (c, scope, node) => {
|
|
5
6
|
const [left, leftInst] = c.handleEval(scope, node.left);
|
|
6
7
|
const [right, rightInst] = c.handleEval(scope, node.right);
|
|
@@ -13,19 +14,23 @@ exports.LogicalExpression = exports.LRExpression;
|
|
|
13
14
|
const AssignmentExpression = (c, scope, node) => {
|
|
14
15
|
const [left, leftInst] = c.handle(scope, node.left);
|
|
15
16
|
const [right, rightInst] = c.handleEval(scope, node.right);
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
16
18
|
const [op, opInst] = left[node.operator](scope, right);
|
|
17
19
|
return [op, [...leftInst, ...rightInst, ...opInst]];
|
|
18
20
|
};
|
|
19
21
|
exports.AssignmentExpression = AssignmentExpression;
|
|
20
22
|
const UnaryExpression = (c, scope, { argument, operator }) => {
|
|
21
23
|
const [arg, argInst] = c.handleEval(scope, argument);
|
|
22
|
-
const operatorId = operator == "+" || operator == "-" ?
|
|
24
|
+
const operatorId = operator == "+" || operator == "-" ? `u${operator}` : operator;
|
|
25
|
+
if (operatorId === "throw")
|
|
26
|
+
throw new CompilerError_1.CompilerError("throw operator is not supported");
|
|
23
27
|
const [op, opInst] = arg[operatorId](scope);
|
|
24
28
|
return [op, [...argInst, ...opInst]];
|
|
25
29
|
};
|
|
26
30
|
exports.UnaryExpression = UnaryExpression;
|
|
27
31
|
const UpdateExpression = (c, scope, { argument, operator, prefix }) => {
|
|
28
32
|
const [arg, argInst] = c.handle(scope, argument);
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
29
34
|
const [op, opInst] = arg[operator](scope, prefix);
|
|
30
35
|
return [op, [...argInst, ...opInst]];
|
|
31
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OperationExpressions.js","sourceRoot":"","sources":["../../src/handlers/OperationExpressions.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"OperationExpressions.js","sourceRoot":"","sources":["../../src/handlers/OperationExpressions.ts"],"names":[],"mappings":";;;AAAA,oDAAiD;AAQ1C,MAAM,YAAY,GAAa,CACpC,CAAC,EACD,KAAK,EACL,IAIC,EACD,EAAE;IACF,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvD,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,SAAS,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC;AAbW,QAAA,YAAY,gBAavB;AAEW,QAAA,gBAAgB,GAAa,oBAAY,CAAC;AAC1C,QAAA,iBAAiB,GAAa,oBAAY,CAAC;AACjD,MAAM,oBAAoB,GAAa,CAC5C,CAAC,EACD,KAAK,EACL,IAIC,EACD,EAAE;IACF,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,oEAAoE;IACpE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,IAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACxD,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,SAAS,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC;AAdW,QAAA,oBAAoB,wBAc/B;AAEK,MAAM,eAAe,GAAa,CACvC,CAAC,EACD,KAAK,EACL,EAAE,QAAQ,EAAE,QAAQ,EAAsB,EAC1C,EAAE;IACF,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACrD,MAAM,UAAU,GACd,QAAQ,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAE,IAAI,QAAQ,EAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5E,IAAI,UAAU,KAAK,OAAO;QACxB,MAAM,IAAI,6BAAa,CAAC,iCAAiC,CAAC,CAAC;IAE7D,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;AACvC,CAAC,CAAC;AAbW,QAAA,eAAe,mBAa1B;AACK,MAAM,gBAAgB,GAAa,CACxC,CAAC,EACD,KAAK,EACL,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAuB,EACnD,EAAE;IACF,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACjD,oEAAoE;IACpE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,GAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACnD,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;AACvC,CAAC,CAAC;AATW,QAAA,gBAAgB,oBAS3B"}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Program = void 0;
|
|
4
4
|
const Scope_1 = require("../Scope");
|
|
5
5
|
const Program = (c, scope, node) => {
|
|
6
|
-
return c.handleMany(scope
|
|
6
|
+
return c.handleMany(scope ?? new Scope_1.Scope({}), node.body);
|
|
7
7
|
};
|
|
8
8
|
exports.Program = Program;
|
|
9
9
|
//# sourceMappingURL=Program.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Program.js","sourceRoot":"","sources":["../../src/handlers/Program.ts"],"names":[],"mappings":";;;AAAA,oCAAiC;AAG1B,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"Program.js","sourceRoot":"","sources":["../../src/handlers/Program.ts"],"names":[],"mappings":";;;AAAA,oCAAiC;AAG1B,MAAM,OAAO,GAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,IAAgB,EAAE,EAAE;IACpE,OAAO,CAAC,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,aAAK,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACzD,CAAC,CAAC;AAFW,QAAA,OAAO,WAElB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Statements.js","sourceRoot":"","sources":["../../src/handlers/Statements.ts"],"names":[],"mappings":";;;AAAA,kDAAwE;AAExE,sCAAyC;AAElC,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"Statements.js","sourceRoot":"","sources":["../../src/handlers/Statements.ts"],"names":[],"mappings":";;;AAAA,kDAAwE;AAExE,sCAAyC;AAElC,MAAM,mBAAmB,GAA4B,CAC1D,CAAC,EACD,KAAK,EACL,IAA4B,EAC5B,EAAE;IACF,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1C,CAAC,CAAC;AANW,QAAA,mBAAmB,uBAM9B;AAEK,MAAM,cAAc,GAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;IACzD,MAAM,IAAI,GAAG,IAAI,qBAAY,CAAC,KAAK,EAAE,IAAa,CAAC,CAAC;IACpD,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,+BAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC;AAJW,QAAA,cAAc,kBAIzB;AAEK,MAAM,iBAAiB,GAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;IAC5D,MAAM,IAAI,GAAG,IAAI,qBAAY,CAAC,KAAK,EAAE,IAAa,CAAC,CAAC;IACpD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,kCAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC;AAJW,QAAA,iBAAiB,qBAI5B;AAEK,MAAM,eAAe,GAA4B,CACtD,CAAC,EACD,KAAK,EACL,IAAwB,EACxB,EAAE;IACF,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ;QAClC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;QAChC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACf,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;AACzC,CAAC,CAAC;AAVW,QAAA,eAAe,mBAU1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TemplateExpression.js","sourceRoot":"","sources":["../../src/handlers/TemplateExpression.ts"],"names":[],"mappings":";;;AAAA,kDAAuD;
|
|
1
|
+
{"version":3,"file":"TemplateExpression.js","sourceRoot":"","sources":["../../src/handlers/TemplateExpression.ts"],"names":[],"mappings":";;;AAAA,kDAAuD;AAGhD,MAAM,eAAe,GAAmB,CAC7C,CAAC,EACD,KAAK,EACL,IAAwB,EACxB,EAAE;IACF,MAAM,IAAI,GAAwB,EAAE,CAAC;IACrC,MAAM,IAAI,GAAmB,EAAE,CAAC;IAChC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE;QACzC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,mCAAoB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACtB,CAAC,CAAC;AAfW,QAAA,eAAe,mBAe1B"}
|
|
@@ -1,31 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.VariableDeclarator = exports.VariableDeclaration = void 0;
|
|
4
|
+
const values_1 = require("../values");
|
|
4
5
|
const utils_1 = require("../utils");
|
|
6
|
+
const CompilerError_1 = require("../CompilerError");
|
|
5
7
|
const VariableDeclaration = (c, scope, node) => {
|
|
6
8
|
return c.handleMany(scope, node.declarations, (scope, child) => (0, exports.VariableDeclarator)(c, scope, child, node.kind));
|
|
7
9
|
};
|
|
8
10
|
exports.VariableDeclaration = VariableDeclaration;
|
|
9
11
|
const VariableDeclarator = (c, scope, node, kind = "let") => {
|
|
10
|
-
|
|
12
|
+
const valinst = node.init
|
|
11
13
|
? c.handleEval(scope, node.init)
|
|
12
14
|
: [null, []];
|
|
13
15
|
switch (node.id.type) {
|
|
14
16
|
case "Identifier": {
|
|
15
17
|
const { name } = node.id;
|
|
18
|
+
const identifier = c.compactNames
|
|
19
|
+
? (0, utils_1.nodeName)(node)
|
|
20
|
+
: scope.formatName(name);
|
|
16
21
|
const [init] = valinst;
|
|
17
22
|
if (kind === "const" && !init)
|
|
18
|
-
throw
|
|
19
|
-
if (kind === "const" && init
|
|
23
|
+
throw new CompilerError_1.CompilerError("Cannot create constant with void value.");
|
|
24
|
+
if (kind === "const" && init?.constant) {
|
|
25
|
+
init.rename?.(identifier);
|
|
20
26
|
scope.set(name, init);
|
|
21
27
|
return valinst;
|
|
22
28
|
}
|
|
23
29
|
else {
|
|
24
|
-
const value = scope.make(name,
|
|
30
|
+
const value = scope.make(name, identifier);
|
|
25
31
|
if (init) {
|
|
26
32
|
if (init.macro)
|
|
27
|
-
throw new
|
|
28
|
-
valinst[1].push(...value["="](scope,
|
|
33
|
+
throw new CompilerError_1.CompilerError("Macro value must be constant.");
|
|
34
|
+
valinst[1].push(...value["="](scope, init)[1]);
|
|
29
35
|
}
|
|
30
36
|
if (kind === "const")
|
|
31
37
|
value.constant = true;
|
|
@@ -36,20 +42,30 @@ const VariableDeclarator = (c, scope, node, kind = "let") => {
|
|
|
36
42
|
const { elements } = node.id;
|
|
37
43
|
const [init] = valinst;
|
|
38
44
|
if (!init)
|
|
39
|
-
throw new
|
|
45
|
+
throw new CompilerError_1.CompilerError("Cannot use array destructuring with constant with void value.");
|
|
40
46
|
if (!init.macro)
|
|
41
|
-
throw new
|
|
47
|
+
throw new CompilerError_1.CompilerError("Cannot use array destructuring on non macro values");
|
|
48
|
+
if (kind !== "const")
|
|
49
|
+
throw new CompilerError_1.CompilerError("Macro value must be constant.");
|
|
50
|
+
if (!(init instanceof values_1.ObjectValue)) {
|
|
51
|
+
throw new CompilerError_1.CompilerError("Array destructuring target must be an object value");
|
|
52
|
+
}
|
|
42
53
|
for (let i = 0; i < elements.length; i++) {
|
|
43
54
|
const element = elements[i];
|
|
44
55
|
if (!element)
|
|
45
56
|
continue;
|
|
57
|
+
if (element.type !== "Identifier") {
|
|
58
|
+
throw new CompilerError_1.CompilerError("Array destructuring expression can only have empty items or identifiers");
|
|
59
|
+
}
|
|
60
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
46
61
|
const val = init.data[i];
|
|
62
|
+
val.rename?.(c.compactNames ? (0, utils_1.nodeName)(element) : scope.formatName(element.name));
|
|
47
63
|
scope.set(element.name, val);
|
|
48
64
|
}
|
|
49
65
|
return valinst;
|
|
50
66
|
}
|
|
51
67
|
default:
|
|
52
|
-
throw new
|
|
68
|
+
throw new CompilerError_1.CompilerError("");
|
|
53
69
|
}
|
|
54
70
|
};
|
|
55
71
|
exports.VariableDeclarator = VariableDeclarator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VariableDeclaration.js","sourceRoot":"","sources":["../../src/handlers/VariableDeclaration.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"VariableDeclaration.js","sourceRoot":"","sources":["../../src/handlers/VariableDeclaration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WhileStatement.js","sourceRoot":"","sources":["../../src/handlers/WhileStatement.ts"],"names":[],"mappings":";;;AAAA,kDAA8E;AAE9E,sCAAyC;AAElC,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"WhileStatement.js","sourceRoot":"","sources":["../../src/handlers/WhileStatement.ts"],"names":[],"mappings":";;;AAAA,kDAA8E;AAE9E,sCAAyC;AAElC,MAAM,cAAc,GAAmB,CAC5C,CAAC,EACD,KAAK,EACL,IAAuB,EACvB,EAAE;IACF,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEzD,MAAM,aAAa,GAAG,IAAI,qBAAY,CAAC,KAAK,EAAE,IAAa,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,IAAI,qBAAY,CAAC,KAAK,EAAE,IAAa,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,IAAI,8BAAe,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC7E,MAAM,WAAW,GAAG,IAAI,8BAAe,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAEtE,IAAI,IAAI,YAAY,qBAAY,EAAE;QAChC,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,KAAK,CAAC,IAAI,CACR,aAAa,EACb,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAChC,IAAI,8BAAe,CAAC,aAAa,EAAE,wBAAS,CAAC,MAAM,CAAC,EACpD,WAAW,CACZ,CAAC;SACH;QACD,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACtB;IAED,KAAK,CAAC,IAAI,CACR,aAAa,EACb,GAAG,SAAS,EACZ,IAAI,8BAAe,CACjB,WAAW,EACX,wBAAS,CAAC,KAAK,EACf,IAAI,EACJ,IAAI,qBAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAC3B,EACD,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAChC,IAAI,8BAAe,CAAC,aAAa,EAAE,wBAAS,CAAC,MAAM,CAAC,EACpD,WAAW,CACZ,CAAC;IACF,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACvB,CAAC,CAAC;AAvCW,QAAA,cAAc,kBAuCzB"}
|
package/build/handlers/index.js
CHANGED
|
@@ -28,4 +28,5 @@ __exportStar(require("./CallExpression"), exports);
|
|
|
28
28
|
__exportStar(require("./Object"), exports);
|
|
29
29
|
__exportStar(require("./TemplateExpression"), exports);
|
|
30
30
|
__exportStar(require("./BlockStatement"), exports);
|
|
31
|
+
__exportStar(require("./File"), exports);
|
|
31
32
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,wDAAsC;AACtC,4CAA0B;AAC1B,yDAAuC;AACvC,+CAA6B;AAC7B,+CAA6B;AAC7B,gDAA8B;AAC9B,mDAAiC;AACjC,iDAA+B;AAC/B,6CAA2B;AAC3B,mDAAiC;AACjC,2CAAyB;AACzB,uDAAqC;AACrC,mDAAiC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,wDAAsC;AACtC,4CAA0B;AAC1B,yDAAuC;AACvC,+CAA6B;AAC7B,+CAA6B;AAC7B,gDAA8B;AAC9B,mDAAiC;AACjC,iDAA+B;AAC/B,6CAA2B;AAC3B,mDAAiC;AACjC,2CAAyB;AACzB,uDAAqC;AACrC,mDAAiC;AACjC,yCAAuB"}
|
package/build/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
exports.
|
|
3
|
+
exports.CompilerError = exports.Compiler = void 0;
|
|
4
|
+
var Compiler_1 = require("./Compiler");
|
|
5
|
+
Object.defineProperty(exports, "Compiler", { enumerable: true, get: function () { return Compiler_1.Compiler; } });
|
|
6
|
+
var CompilerError_1 = require("./CompilerError");
|
|
7
|
+
Object.defineProperty(exports, "CompilerError", { enumerable: true, get: function () { return CompilerError_1.CompilerError; } });
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uCAAuD;AAA9C,oGAAA,QAAQ,OAAA;AACjB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.initScope = void 0;
|
|
4
|
+
const macros_1 = require("./macros");
|
|
5
|
+
const Namespace_1 = require("./macros/Namespace");
|
|
6
|
+
const RawValue_1 = require("./macros/RawValue");
|
|
7
|
+
function initScope(scope) {
|
|
8
|
+
// namespaces
|
|
9
|
+
scope.hardSet("ControlKind", new macros_1.NamespaceMacro(scope));
|
|
10
|
+
scope.hardSet("Vars", new macros_1.VarsNamespace(scope));
|
|
11
|
+
scope.hardSet("Items", new macros_1.NamespaceMacro(scope, { changeCasing: true }));
|
|
12
|
+
scope.hardSet("Liquids", new macros_1.NamespaceMacro(scope));
|
|
13
|
+
scope.hardSet("Units", new macros_1.NamespaceMacro(scope));
|
|
14
|
+
scope.hardSet("LAccess", new macros_1.NamespaceMacro(scope));
|
|
15
|
+
scope.hardSet("UnitCommands", new Namespace_1.UCommandsNamespace(scope));
|
|
16
|
+
scope.hardSet("Blocks", new macros_1.NamespaceMacro(scope, { changeCasing: true }));
|
|
17
|
+
// helper methods
|
|
18
|
+
scope.hardSet("getBuilding", new macros_1.BuildingBuilder(scope));
|
|
19
|
+
scope.hardSet("getVar", new RawValue_1.RawValueMacro(scope));
|
|
20
|
+
scope.hardSet("concat", new macros_1.Concat(scope));
|
|
21
|
+
scope.hardSet("Math", new macros_1.MlogMath(scope));
|
|
22
|
+
scope.hardSet("Memory", new macros_1.MemoryBuilder(scope));
|
|
23
|
+
// commands
|
|
24
|
+
scope.hardSet("draw", new macros_1.commands.Draw(scope));
|
|
25
|
+
scope.hardSet("print", new macros_1.commands.Print(scope));
|
|
26
|
+
scope.hardSet("printFlush", new macros_1.commands.PrintFlush(scope));
|
|
27
|
+
scope.hardSet("drawFlush", new macros_1.commands.DrawFlush(scope));
|
|
28
|
+
scope.hardSet("getLink", new macros_1.commands.GetLink(scope));
|
|
29
|
+
scope.hardSet("control", new macros_1.commands.Control(scope));
|
|
30
|
+
scope.hardSet("radar", new macros_1.commands.Radar(scope));
|
|
31
|
+
scope.hardSet("sensor", new macros_1.commands.Sensor(scope));
|
|
32
|
+
scope.hardSet("wait", new macros_1.commands.Wait(scope));
|
|
33
|
+
scope.hardSet("lookup", new macros_1.commands.Lookup(scope));
|
|
34
|
+
scope.hardSet("unitBind", new macros_1.commands.UnitBind(scope));
|
|
35
|
+
scope.hardSet("unitControl", new macros_1.commands.UnitControl(scope));
|
|
36
|
+
scope.hardSet("unitRadar", new macros_1.commands.UnitRadar(scope));
|
|
37
|
+
scope.hardSet("unitLocate", new macros_1.commands.UnitLocate(scope));
|
|
38
|
+
}
|
|
39
|
+
exports.initScope = initScope;
|
|
40
|
+
//# sourceMappingURL=initScope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initScope.js","sourceRoot":"","sources":["../src/initScope.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InstructionBase.js","sourceRoot":"","sources":["../../src/instructions/InstructionBase.ts"],"names":[],"mappings":";;;AAEA,MAAa,eAAe;IAS1B,YAAY,GAAG,
|
|
1
|
+
{"version":3,"file":"InstructionBase.js","sourceRoot":"","sources":["../../src/instructions/InstructionBase.ts"],"names":[],"mappings":";;;AAEA,MAAa,eAAe;IAS1B,YAAY,GAAG,IAAgC;QARvC,YAAO,GAAG,KAAK,CAAC;QAStB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IATD,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACD,IAAW,MAAM,CAAC,KAAK;QACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAKD,OAAO,CAAC,EAAU,IAAG,CAAC;IACtB,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;CACF;AAhBD,0CAgBC"}
|
|
@@ -14,7 +14,7 @@ var EJumpKind;
|
|
|
14
14
|
EJumpKind["Always"] = "always";
|
|
15
15
|
})(EJumpKind = exports.EJumpKind || (exports.EJumpKind = {}));
|
|
16
16
|
class JumpInstruction extends InstructionBase_1.InstructionBase {
|
|
17
|
-
constructor(address, kind, left, right) {
|
|
17
|
+
constructor(address, kind, left = null, right = null) {
|
|
18
18
|
super("jump", address, kind, left, right);
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JumpInstruction.js","sourceRoot":"","sources":["../../src/instructions/JumpInstruction.ts"],"names":[],"mappings":";;;AACA,uDAAoD;AAEpD,IAAY,SASX;AATD,WAAY,SAAS;IACnB,4BAAe,CAAA;IACf,kCAAqB,CAAA;IACrB,kCAAqB,CAAA;IACrB,sCAAyB,CAAA;IACzB,wCAA2B,CAAA;IAC3B,4CAA+B,CAAA;IAC/B,wCAA2B,CAAA;IAC3B,8BAAiB,CAAA;AACnB,CAAC,EATW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QASpB;AAED,MAAa,eAAgB,SAAQ,iCAAe;IAClD,YACE,OAAuB,EACvB,IAAe,EACf,
|
|
1
|
+
{"version":3,"file":"JumpInstruction.js","sourceRoot":"","sources":["../../src/instructions/JumpInstruction.ts"],"names":[],"mappings":";;;AACA,uDAAoD;AAEpD,IAAY,SASX;AATD,WAAY,SAAS;IACnB,4BAAe,CAAA;IACf,kCAAqB,CAAA;IACrB,kCAAqB,CAAA;IACrB,sCAAyB,CAAA;IACzB,wCAA2B,CAAA;IAC3B,4CAA+B,CAAA;IAC/B,wCAA2B,CAAA;IAC3B,8BAAiB,CAAA;AACnB,CAAC,EATW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QASpB;AAED,MAAa,eAAgB,SAAQ,iCAAe;IAClD,YACE,OAAuB,EACvB,IAAe,EACf,OAAsB,IAAI,EAC1B,QAAuB,IAAI;QAE3B,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;CACF;AATD,0CASC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OperationInstruction.js","sourceRoot":"","sources":["../../src/instructions/OperationInstruction.ts"],"names":[],"mappings":";;;AAAA,wBAAoC;AAGpC,MAAa,oBAAqB,SAAQ,kBAAe;IACvD,YAAY,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"OperationInstruction.js","sourceRoot":"","sources":["../../src/instructions/OperationInstruction.ts"],"names":[],"mappings":";;;AAAA,wBAAoC;AAGpC,MAAa,oBAAqB,SAAQ,kBAAe;IACvD,YAAY,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,KAAoB;QACxE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;CACF;AAJD,oDAIC"}
|
package/build/macros/Building.js
CHANGED
|
@@ -6,6 +6,7 @@ const instructions_1 = require("../instructions");
|
|
|
6
6
|
const values_1 = require("../values");
|
|
7
7
|
const Function_1 = require("./Function");
|
|
8
8
|
const operators_1 = require("../operators");
|
|
9
|
+
const CompilerError_1 = require("../CompilerError");
|
|
9
10
|
exports.itemNames = [
|
|
10
11
|
"copper",
|
|
11
12
|
"lead",
|
|
@@ -25,31 +26,38 @@ exports.itemNames = [
|
|
|
25
26
|
"pyratite",
|
|
26
27
|
];
|
|
27
28
|
class Building extends values_1.ObjectValue {
|
|
28
|
-
constructor(scope, name) {
|
|
29
|
+
constructor({ scope, name, renameable, }) {
|
|
29
30
|
super(scope, {
|
|
30
31
|
$get: new Function_1.MacroFunction(scope, (prop) => {
|
|
31
32
|
if (prop instanceof values_1.LiteralValue && typeof prop.data === "string") {
|
|
32
33
|
const name = exports.itemNames.includes(prop.data)
|
|
33
34
|
? (0, utils_1.camelToDashCase)(prop.data)
|
|
34
35
|
: prop.data;
|
|
35
|
-
const temp = new values_1.TempValue(scope);
|
|
36
|
+
const temp = new values_1.TempValue({ scope });
|
|
36
37
|
return [
|
|
37
38
|
temp,
|
|
38
39
|
[new instructions_1.InstructionBase("sensor", temp, this, `@${name}`)],
|
|
39
40
|
];
|
|
40
41
|
}
|
|
41
42
|
if (prop instanceof values_1.StoreValue) {
|
|
42
|
-
const temp = new values_1.TempValue(scope);
|
|
43
|
+
const temp = new values_1.TempValue({ scope });
|
|
43
44
|
return [temp, [new instructions_1.InstructionBase("sensor", temp, this, prop)]];
|
|
44
45
|
}
|
|
45
|
-
throw new
|
|
46
|
+
throw new CompilerError_1.CompilerError("Building property acessors must be string literals or stores");
|
|
46
47
|
}),
|
|
47
48
|
});
|
|
48
49
|
this.name = name;
|
|
50
|
+
this.renameable = !!renameable;
|
|
49
51
|
}
|
|
50
52
|
toString() {
|
|
51
53
|
return this.name;
|
|
52
54
|
}
|
|
55
|
+
rename(name) {
|
|
56
|
+
if (!this.renameable)
|
|
57
|
+
return;
|
|
58
|
+
this.name = name;
|
|
59
|
+
this.renameable = false;
|
|
60
|
+
}
|
|
53
61
|
}
|
|
54
62
|
exports.Building = Building;
|
|
55
63
|
class BuildingBuilder extends values_1.ObjectValue {
|
|
@@ -57,10 +65,10 @@ class BuildingBuilder extends values_1.ObjectValue {
|
|
|
57
65
|
super(scope, {
|
|
58
66
|
$call: new Function_1.MacroFunction(scope, (nameLit) => {
|
|
59
67
|
if (!(nameLit instanceof values_1.LiteralValue))
|
|
60
|
-
throw new
|
|
68
|
+
throw new CompilerError_1.CompilerError("Block name must be a literal.");
|
|
61
69
|
if (typeof nameLit.data !== "string")
|
|
62
|
-
throw new
|
|
63
|
-
return [new Building(scope, nameLit.data), []];
|
|
70
|
+
throw new CompilerError_1.CompilerError("Block name must be a string.");
|
|
71
|
+
return [new Building({ scope, name: nameLit.data }), []];
|
|
64
72
|
}),
|
|
65
73
|
});
|
|
66
74
|
}
|
|
@@ -71,7 +79,7 @@ for (const key in operators_1.operatorMap) {
|
|
|
71
79
|
Building.prototype[key] = function (scope, value) {
|
|
72
80
|
const left = new values_1.StoreValue(scope, this.name);
|
|
73
81
|
const [right, rightInst] = value.eval(scope);
|
|
74
|
-
const temp = new values_1.TempValue(scope);
|
|
82
|
+
const temp = new values_1.TempValue({ scope });
|
|
75
83
|
return [
|
|
76
84
|
temp,
|
|
77
85
|
[...rightInst, new instructions_1.OperationInstruction(kind, temp, left, right)],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Building.js","sourceRoot":"","sources":["../../src/macros/Building.ts"],"names":[],"mappings":";;;AAAA,oCAA2C;AAC3C,kDAAwE;AAExE,sCAA6E;AAC7E,yCAA2C;AAC3C,4CAA2C;
|
|
1
|
+
{"version":3,"file":"Building.js","sourceRoot":"","sources":["../../src/macros/Building.ts"],"names":[],"mappings":"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"}
|
package/build/macros/Function.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Function.js","sourceRoot":"","sources":["../../src/macros/Function.ts"],"names":[],"mappings":";;;AACA,sCAAsC;
|
|
1
|
+
{"version":3,"file":"Function.js","sourceRoot":"","sources":["../../src/macros/Function.ts"],"names":[],"mappings":";;;AACA,sCAAsC;AAMtC,MAAa,aAEX,SAAQ,kBAAS;IAIjB,YAAY,KAAa,EAAE,EAAiB;QAC1C,KAAK,CAAC,KAAK,CAAC,CAAC;QAJf,UAAK,GAAG,IAAI,CAAC;QACb,aAAQ,GAAG,IAAI,CAAC;QAId,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IACD,IAAI,CAAC,KAAa,EAAE,IAAc;QAChC,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,CAAC,MAAc;QACjB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpB,CAAC;CACF;AAhBD,sCAgBC"}
|
package/build/macros/Math.js
CHANGED
|
@@ -1,24 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MlogMath = void 0;
|
|
4
|
+
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
5
|
+
const CompilerError_1 = require("../CompilerError");
|
|
4
6
|
const instructions_1 = require("../instructions");
|
|
5
7
|
const values_1 = require("../values");
|
|
6
8
|
const Function_1 = require("./Function");
|
|
7
9
|
const mathOperations = {
|
|
8
10
|
max: (a, b) => Math.max(a, b),
|
|
9
11
|
min: (a, b) => Math.min(a, b),
|
|
10
|
-
angle: (
|
|
11
|
-
|
|
12
|
+
angle: (x, y) => {
|
|
13
|
+
const angle = (Math.atan2(y, x) * 180) / Math.PI;
|
|
14
|
+
return angle < 0 ? angle + 360 : angle;
|
|
15
|
+
},
|
|
16
|
+
len: (a, b) => Math.sqrt(a ** 2 + b ** 2),
|
|
12
17
|
noise: null,
|
|
13
18
|
abs: a => Math.abs(a),
|
|
14
19
|
log: a => Math.log(a),
|
|
15
|
-
log10: a => Math.
|
|
20
|
+
log10: a => Math.log10(a),
|
|
16
21
|
sin: a => Math.sin(a),
|
|
17
22
|
cos: a => Math.cos(a),
|
|
18
23
|
tan: a => Math.tan(a),
|
|
19
24
|
floor: a => Math.floor(a),
|
|
20
25
|
ceil: a => Math.ceil(a),
|
|
21
|
-
sqrt: a => Math.
|
|
26
|
+
sqrt: a => Math.sqrt(a),
|
|
22
27
|
rand: null,
|
|
23
28
|
};
|
|
24
29
|
function createMacroMathOperations(scope) {
|
|
@@ -29,18 +34,18 @@ function createMacroMathOperations(scope) {
|
|
|
29
34
|
if (b) {
|
|
30
35
|
if (fn && a instanceof values_1.LiteralValue && b instanceof values_1.LiteralValue) {
|
|
31
36
|
if (typeof a.data !== "number" || typeof b.data !== "number")
|
|
32
|
-
throw new
|
|
37
|
+
throw new CompilerError_1.CompilerError("Cannot do math operation with non-numerical literals.");
|
|
33
38
|
return [new values_1.LiteralValue(scope, fn(a.num, b.num)), []];
|
|
34
39
|
}
|
|
35
|
-
const temp = new values_1.TempValue(scope);
|
|
40
|
+
const temp = new values_1.TempValue({ scope });
|
|
36
41
|
return [temp, [new instructions_1.OperationInstruction(key, temp, a, b)]];
|
|
37
42
|
}
|
|
38
43
|
if (fn && a instanceof values_1.LiteralValue) {
|
|
39
44
|
if (typeof a.data !== "number")
|
|
40
|
-
throw new
|
|
45
|
+
throw new CompilerError_1.CompilerError("Cannot do math operation with non-numerical literal.");
|
|
41
46
|
return [new values_1.LiteralValue(scope, fn(a.num)), []];
|
|
42
47
|
}
|
|
43
|
-
const temp = new values_1.TempValue(scope);
|
|
48
|
+
const temp = new values_1.TempValue({ scope });
|
|
44
49
|
return [temp, [new instructions_1.OperationInstruction(key, temp, a, b)]];
|
|
45
50
|
});
|
|
46
51
|
}
|
package/build/macros/Math.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Math.js","sourceRoot":"","sources":["../../src/macros/Math.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Math.js","sourceRoot":"","sources":["../../src/macros/Math.ts"],"names":[],"mappings":";;;AAAA,6DAA6D;AAC7D,oDAAiD;AACjD,kDAAuD;AAEvD,sCAAiE;AACjE,yCAA2C;AAE3C,MAAM,cAAc,GAGhB;IACF,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAE,CAAC;IAC9B,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAE,CAAC;IAC9B,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACd,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;QAClD,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IACzC,CAAC;IACD,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,CAAC;IAC1C,KAAK,EAAE,IAAI;IACX,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzB,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzB,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvB,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvB,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,SAAS,yBAAyB,CAAC,KAAa;IAC9C,MAAM,mBAAmB,GAAkC,EAAE,CAAC;IAC9D,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE;QAChC,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QAC/B,mBAAmB,CAAC,GAAG,CAAC,GAAG,IAAI,wBAAa,CAAS,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACnE,IAAI,CAAC,EAAE;gBACL,IAAI,EAAE,IAAI,CAAC,YAAY,qBAAY,IAAI,CAAC,YAAY,qBAAY,EAAE;oBAChE,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;wBAC1D,MAAM,IAAI,6BAAa,CACrB,uDAAuD,CACxD,CAAC;oBACJ,OAAO,CAAC,IAAI,qBAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;iBACxD;gBACD,MAAM,IAAI,GAAG,IAAI,kBAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBACtC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,mCAAoB,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5D;YACD,IAAI,EAAE,IAAI,CAAC,YAAY,qBAAY,EAAE;gBACnC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;oBAC5B,MAAM,IAAI,6BAAa,CACrB,sDAAsD,CACvD,CAAC;gBAEJ,OAAO,CAAC,IAAI,qBAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;aACjD;YACD,MAAM,IAAI,GAAG,IAAI,kBAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,mCAAoB,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;KACJ;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,MAAa,QAAS,SAAQ,oBAAW;IACvC,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,EAAE,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,CAAC;CACF;AAJD,4BAIC;AAED,sBAAsB;AACtB,oBAAoB"}
|
package/build/macros/Memory.js
CHANGED
|
@@ -5,15 +5,16 @@ const operators_1 = require("../operators");
|
|
|
5
5
|
const instructions_1 = require("../instructions");
|
|
6
6
|
const values_1 = require("../values");
|
|
7
7
|
const Function_1 = require("./Function");
|
|
8
|
+
const CompilerError_1 = require("../CompilerError");
|
|
8
9
|
class MemoryEntry extends values_1.ObjectValue {
|
|
9
10
|
constructor(scope, mem, prop) {
|
|
10
11
|
super(scope, {
|
|
11
12
|
$eval: new Function_1.MacroFunction(scope, () => {
|
|
12
|
-
const temp = new values_1.TempValue(scope);
|
|
13
|
+
const temp = new values_1.TempValue({ scope });
|
|
13
14
|
return [temp, [new instructions_1.InstructionBase("read", temp, mem.cell, prop)]];
|
|
14
15
|
}),
|
|
15
16
|
"$=": new Function_1.MacroFunction(scope, value => {
|
|
16
|
-
return [
|
|
17
|
+
return [value, [new instructions_1.InstructionBase("write", value, mem.cell, prop)]];
|
|
17
18
|
}),
|
|
18
19
|
});
|
|
19
20
|
}
|
|
@@ -22,6 +23,7 @@ for (const operator of operators_1.operators) {
|
|
|
22
23
|
if (operator === "=")
|
|
23
24
|
continue;
|
|
24
25
|
MemoryEntry.prototype[operator] = function (...args) {
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/ban-types, @typescript-eslint/no-unsafe-return
|
|
25
27
|
return values_1.BaseValue.prototype[operator].apply(this, args);
|
|
26
28
|
};
|
|
27
29
|
}
|
|
@@ -30,7 +32,7 @@ class MemoryMacro extends values_1.ObjectValue {
|
|
|
30
32
|
super(scope, {
|
|
31
33
|
$get: new Function_1.MacroFunction(scope, (prop) => {
|
|
32
34
|
if (prop instanceof values_1.LiteralValue && typeof prop.data !== "number")
|
|
33
|
-
|
|
35
|
+
throw new CompilerError_1.CompilerError(`Invalid memory object property: "${prop.data}"`);
|
|
34
36
|
const obj = new MemoryEntry(scope, this, prop);
|
|
35
37
|
return [obj, []];
|
|
36
38
|
}),
|
|
@@ -49,9 +51,9 @@ class MemoryBuilder extends values_1.ObjectValue {
|
|
|
49
51
|
super(scope, {
|
|
50
52
|
$call: new Function_1.MacroFunction(scope, (cell, size = new values_1.LiteralValue(scope, 64)) => {
|
|
51
53
|
if (!(cell instanceof values_1.ObjectValue))
|
|
52
|
-
throw new
|
|
54
|
+
throw new CompilerError_1.CompilerError("Memory cell must be a building object.");
|
|
53
55
|
if (!(size instanceof values_1.LiteralValue && typeof size.data === "number"))
|
|
54
|
-
throw new
|
|
56
|
+
throw new CompilerError_1.CompilerError("The memory size must be a number literal.");
|
|
55
57
|
return [new MemoryMacro(scope, cell, size), []];
|
|
56
58
|
}),
|
|
57
59
|
});
|