mlogjs 0.2.1 → 0.2.2
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/build/bin.cjs +69 -0
- package/dist/bin.cjs +69 -0
- package/dist/index.cjs +1817 -0
- package/dist/index.mjs +1813 -0
- package/dist/types/Compiler.d.ts +18 -0
- package/{build → dist/types}/Scope.d.ts +23 -26
- 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/ForStatement.d.ts +2 -0
- package/{build → dist/types}/handlers/Function.d.ts +4 -4
- package/{build → dist/types}/handlers/Identifier.d.ts +2 -2
- package/dist/types/handlers/IfStatement.d.ts +2 -0
- package/{build → dist/types}/handlers/Literal.d.ts +2 -2
- package/{build → dist/types}/handlers/Object.d.ts +4 -4
- package/{build → dist/types}/handlers/OperationExpressions.d.ts +7 -7
- 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/VariableDeclaration.d.ts +3 -0
- package/dist/types/handlers/WhileStatement.d.ts +2 -0
- package/{build → dist/types}/handlers/index.d.ts +14 -14
- package/dist/types/index.d.ts +1 -0
- package/{build → dist/types}/initScope.d.ts +2 -2
- package/{build → dist/types}/instructions/AddressResolver.d.ts +12 -12
- package/{build → dist/types}/instructions/ControlInstructions.d.ts +11 -11
- package/{build → dist/types}/instructions/EndInstruction.d.ts +4 -4
- package/{build → dist/types}/instructions/InstructionBase.d.ts +10 -10
- package/{build → dist/types}/instructions/JumpInstruction.d.ts +15 -15
- package/{build → dist/types}/instructions/OperationInstruction.d.ts +5 -5
- package/{build → dist/types}/instructions/SetCounterInstruction.d.ts +5 -5
- package/{build → dist/types}/instructions/SetInstruction.d.ts +5 -5
- package/{build → dist/types}/instructions/ZeroSpaceInstruction.d.ts +4 -4
- package/{build → dist/types}/instructions/index.d.ts +9 -9
- package/{build → dist/types}/macros/Building.d.ts +11 -11
- package/dist/types/macros/Function.d.ts +12 -0
- package/{build → dist/types}/macros/Math.d.ts +5 -5
- package/{build → dist/types}/macros/Memory.d.ts +5 -5
- package/{build → dist/types}/macros/Namespace.d.ts +21 -21
- package/{build → dist/types}/macros/Other.d.ts +5 -5
- package/{build → dist/types}/macros/RawValue.d.ts +5 -5
- package/{build → dist/types}/macros/commands/Control.d.ts +5 -5
- package/{build → dist/types}/macros/commands/Draw.d.ts +5 -5
- package/{build → dist/types}/macros/commands/DrawFlush.d.ts +5 -5
- package/{build → dist/types}/macros/commands/GetLink.d.ts +5 -5
- package/{build → dist/types}/macros/commands/Lookup.d.ts +5 -5
- package/{build → dist/types}/macros/commands/Print.d.ts +5 -5
- package/{build → dist/types}/macros/commands/PrintFlush.d.ts +5 -5
- package/{build → dist/types}/macros/commands/Radar.d.ts +7 -7
- package/{build → dist/types}/macros/commands/Sensor.d.ts +5 -5
- package/{build → dist/types}/macros/commands/UnitBind.d.ts +5 -5
- package/dist/types/macros/commands/UnitControl.d.ts +5 -0
- package/{build → dist/types}/macros/commands/UnitLocate.d.ts +5 -5
- package/{build → dist/types}/macros/commands/UnitRadar.d.ts +5 -5
- package/{build → dist/types}/macros/commands/Wait.d.ts +5 -5
- package/{build → dist/types}/macros/commands/index.d.ts +14 -14
- package/{build → dist/types}/macros/index.d.ts +7 -7
- package/{build → dist/types}/operators.d.ts +25 -25
- package/dist/types/types.d.ts +100 -0
- package/{build → dist/types}/utils.d.ts +3 -3
- package/{build → dist/types}/values/BaseValue.d.ts +5 -5
- package/{build → dist/types}/values/FunctionValue.d.ts +34 -34
- package/{build → dist/types}/values/LiteralValue.d.ts +12 -12
- package/dist/types/values/ObjectValue.d.ts +19 -0
- package/{build → dist/types}/values/StoreValue.d.ts +11 -11
- package/{build → dist/types}/values/TempValue.d.ts +12 -12
- package/{build → dist/types}/values/VoidValue.d.ts +13 -11
- package/{build → dist/types}/values/index.d.ts +6 -6
- package/doc/README.md +9 -0
- package/lib/eslib/lib.es5.d.ts +1 -1
- package/lib/traits.d.ts +0 -1
- package/package.json +17 -27
- package/build/Compiler.d.ts +0 -18
- package/build/Compiler.js +0 -100
- package/build/Compiler.js.map +0 -1
- package/build/Scope.js +0 -61
- package/build/Scope.js.map +0 -1
- package/build/bin.d.ts +0 -2
- package/build/bin.js +0 -61
- package/build/bin.js.map +0 -1
- package/build/handlers/BlockStatement.d.ts +0 -2
- package/build/handlers/BlockStatement.js +0 -14
- package/build/handlers/BlockStatement.js.map +0 -1
- package/build/handlers/CallExpression.d.ts +0 -3
- package/build/handlers/CallExpression.js +0 -20
- package/build/handlers/CallExpression.js.map +0 -1
- package/build/handlers/ForStatement.d.ts +0 -2
- package/build/handlers/ForStatement.js +0 -32
- package/build/handlers/ForStatement.js.map +0 -1
- package/build/handlers/Function.js +0 -36
- package/build/handlers/Function.js.map +0 -1
- package/build/handlers/Identifier.js +0 -8
- package/build/handlers/Identifier.js.map +0 -1
- package/build/handlers/IfStatement.d.ts +0 -2
- package/build/handlers/IfStatement.js +0 -25
- package/build/handlers/IfStatement.js.map +0 -1
- package/build/handlers/Literal.js +0 -18
- package/build/handlers/Literal.js.map +0 -1
- package/build/handlers/Object.js +0 -44
- package/build/handlers/Object.js.map +0 -1
- package/build/handlers/OperationExpressions.js +0 -33
- package/build/handlers/OperationExpressions.js.map +0 -1
- package/build/handlers/Program.d.ts +0 -2
- package/build/handlers/Program.js +0 -9
- package/build/handlers/Program.js.map +0 -1
- package/build/handlers/Statements.d.ts +0 -5
- package/build/handlers/Statements.js +0 -30
- package/build/handlers/Statements.js.map +0 -1
- package/build/handlers/TemplateExpression.d.ts +0 -2
- package/build/handlers/TemplateExpression.js +0 -18
- package/build/handlers/TemplateExpression.js.map +0 -1
- package/build/handlers/VariableDeclaration.d.ts +0 -3
- package/build/handlers/VariableDeclaration.js +0 -56
- package/build/handlers/VariableDeclaration.js.map +0 -1
- package/build/handlers/WhileStatement.d.ts +0 -2
- package/build/handlers/WhileStatement.js +0 -23
- package/build/handlers/WhileStatement.js.map +0 -1
- package/build/handlers/index.js +0 -31
- package/build/handlers/index.js.map +0 -1
- package/build/index.d.ts +0 -1
- package/build/index.js +0 -8
- package/build/index.js.map +0 -1
- package/build/initScope.js +0 -40
- package/build/initScope.js.map +0 -1
- package/build/instructions/AddressResolver.js +0 -31
- package/build/instructions/AddressResolver.js.map +0 -1
- package/build/instructions/ControlInstructions.js +0 -23
- package/build/instructions/ControlInstructions.js.map +0 -1
- package/build/instructions/EndInstruction.js +0 -11
- package/build/instructions/EndInstruction.js.map +0 -1
- package/build/instructions/InstructionBase.js +0 -21
- package/build/instructions/InstructionBase.js.map +0 -1
- package/build/instructions/JumpInstruction.js +0 -22
- package/build/instructions/JumpInstruction.js.map +0 -1
- package/build/instructions/OperationInstruction.js +0 -11
- package/build/instructions/OperationInstruction.js.map +0 -1
- package/build/instructions/SetCounterInstruction.js +0 -11
- package/build/instructions/SetCounterInstruction.js.map +0 -1
- package/build/instructions/SetInstruction.js +0 -11
- package/build/instructions/SetInstruction.js.map +0 -1
- package/build/instructions/ZeroSpaceInstruction.js +0 -11
- package/build/instructions/ZeroSpaceInstruction.js.map +0 -1
- package/build/instructions/index.js +0 -26
- package/build/instructions/index.js.map +0 -1
- package/build/macros/Building.js +0 -81
- package/build/macros/Building.js.map +0 -1
- package/build/macros/Function.d.ts +0 -12
- package/build/macros/Function.js +0 -20
- package/build/macros/Function.js.map +0 -1
- package/build/macros/Math.js +0 -57
- package/build/macros/Math.js.map +0 -1
- package/build/macros/Memory.js +0 -61
- package/build/macros/Memory.js.map +0 -1
- package/build/macros/Namespace.js +0 -98
- package/build/macros/Namespace.js.map +0 -1
- package/build/macros/Other.js +0 -20
- package/build/macros/Other.js.map +0 -1
- package/build/macros/RawValue.js +0 -16
- package/build/macros/RawValue.js.map +0 -1
- package/build/macros/commands/Control.js +0 -25
- package/build/macros/commands/Control.js.map +0 -1
- package/build/macros/commands/Draw.js +0 -39
- package/build/macros/commands/Draw.js.map +0 -1
- package/build/macros/commands/DrawFlush.js +0 -17
- package/build/macros/commands/DrawFlush.js.map +0 -1
- package/build/macros/commands/GetLink.js +0 -21
- package/build/macros/commands/GetLink.js.map +0 -1
- package/build/macros/commands/Lookup.js +0 -24
- package/build/macros/commands/Lookup.js.map +0 -1
- package/build/macros/commands/Print.js +0 -14
- package/build/macros/commands/Print.js.map +0 -1
- package/build/macros/commands/PrintFlush.js +0 -17
- package/build/macros/commands/PrintFlush.js.map +0 -1
- package/build/macros/commands/Radar.js +0 -61
- package/build/macros/commands/Radar.js.map +0 -1
- package/build/macros/commands/Sensor.js +0 -20
- package/build/macros/commands/Sensor.js.map +0 -1
- package/build/macros/commands/UnitBind.js +0 -17
- package/build/macros/commands/UnitBind.js.map +0 -1
- package/build/macros/commands/UnitControl.d.ts +0 -5
- package/build/macros/commands/UnitControl.js +0 -68
- package/build/macros/commands/UnitControl.js.map +0 -1
- package/build/macros/commands/UnitLocate.js +0 -55
- package/build/macros/commands/UnitLocate.js.map +0 -1
- package/build/macros/commands/UnitRadar.js +0 -41
- package/build/macros/commands/UnitRadar.js.map +0 -1
- package/build/macros/commands/Wait.js +0 -18
- package/build/macros/commands/Wait.js.map +0 -1
- package/build/macros/commands/index.js +0 -33
- package/build/macros/commands/index.js.map +0 -1
- package/build/macros/index.js +0 -40
- package/build/macros/index.js.map +0 -1
- package/build/operators.js +0 -102
- package/build/operators.js.map +0 -1
- package/build/types.d.ts +0 -49
- package/build/types.js +0 -28
- package/build/types.js.map +0 -1
- package/build/utils.js +0 -13
- package/build/utils.js.map +0 -1
- package/build/values/BaseValue.js +0 -112
- package/build/values/BaseValue.js.map +0 -1
- package/build/values/FunctionValue.js +0 -104
- package/build/values/FunctionValue.js.map +0 -1
- package/build/values/LiteralValue.js +0 -88
- package/build/values/LiteralValue.js.map +0 -1
- package/build/values/ObjectValue.d.ts +0 -17
- package/build/values/ObjectValue.js +0 -50
- package/build/values/ObjectValue.js.map +0 -1
- package/build/values/StoreValue.js +0 -31
- package/build/values/StoreValue.js.map +0 -1
- package/build/values/TempValue.js +0 -67
- package/build/values/TempValue.js.map +0 -1
- package/build/values/VoidValue.js +0 -31
- package/build/values/VoidValue.js.map +0 -1
- package/build/values/index.js +0 -23
- package/build/values/index.js.map +0 -1
- package/dist/mlogjs.es.js +0 -6366
- package/dist/mlogjs.umd.js +0 -8
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FunctionValue = void 0;
|
|
4
|
-
const instructions_1 = require("../instructions");
|
|
5
|
-
const LiteralValue_1 = require("./LiteralValue");
|
|
6
|
-
const StoreValue_1 = require("./StoreValue");
|
|
7
|
-
const TempValue_1 = require("./TempValue");
|
|
8
|
-
const VoidValue_1 = require("./VoidValue");
|
|
9
|
-
class FunctionValue extends VoidValue_1.VoidValue {
|
|
10
|
-
constructor(scope, name, paramNames, paramStores, body, c) {
|
|
11
|
-
super(scope);
|
|
12
|
-
this.constant = true;
|
|
13
|
-
this.macro = true;
|
|
14
|
-
this.bundled = false;
|
|
15
|
-
this.name = name;
|
|
16
|
-
this.paramNames = paramNames;
|
|
17
|
-
this.paramStores = paramStores;
|
|
18
|
-
this.body = body;
|
|
19
|
-
this.c = c;
|
|
20
|
-
this.callSize = paramStores.length + 2;
|
|
21
|
-
scope.function = this;
|
|
22
|
-
this.createValues();
|
|
23
|
-
this.createInst();
|
|
24
|
-
}
|
|
25
|
-
createValues() {
|
|
26
|
-
this.addr = new LiteralValue_1.LiteralValue(this.scope, null);
|
|
27
|
-
this.temp = new StoreValue_1.StoreValue(this.scope, "f" + this.name);
|
|
28
|
-
this.ret = new StoreValue_1.StoreValue(this.scope, "r" + this.name);
|
|
29
|
-
}
|
|
30
|
-
typeof(scope) {
|
|
31
|
-
return [new LiteralValue_1.LiteralValue(scope, "function"), []];
|
|
32
|
-
}
|
|
33
|
-
createInst() {
|
|
34
|
-
this.inst = [
|
|
35
|
-
new instructions_1.AddressResolver(this.addr),
|
|
36
|
-
...this.c.handle(this.scope, this.body)[1],
|
|
37
|
-
];
|
|
38
|
-
this.inst.push(new instructions_1.SetCounterInstruction(this.ret));
|
|
39
|
-
}
|
|
40
|
-
normalReturn(scope, arg) {
|
|
41
|
-
const argInst = arg ? this.temp["="](scope, arg)[1] : [];
|
|
42
|
-
return [null, [...argInst, new instructions_1.SetCounterInstruction(this.ret)]];
|
|
43
|
-
}
|
|
44
|
-
normalCall(scope, args) {
|
|
45
|
-
if (!this.bundled)
|
|
46
|
-
this.scope.inst.push(...this.inst);
|
|
47
|
-
this.bundled = true;
|
|
48
|
-
const callAddressLiteral = new LiteralValue_1.LiteralValue(scope, null);
|
|
49
|
-
const inst = this.paramStores
|
|
50
|
-
.map((param, i) => param["="](scope, args[i])[1])
|
|
51
|
-
.reduce((s, c) => s.concat(c), [])
|
|
52
|
-
.concat(...this.ret["="](scope, callAddressLiteral)[1], new instructions_1.JumpInstruction(this.addr, instructions_1.EJumpKind.Always), new instructions_1.AddressResolver(callAddressLiteral));
|
|
53
|
-
return [this.temp, inst];
|
|
54
|
-
}
|
|
55
|
-
inlineReturn(scope, arg) {
|
|
56
|
-
const argInst = arg ? this.inlineTemp["="](scope, arg)[1] : [];
|
|
57
|
-
return [null, [...argInst, new instructions_1.ReturnInstruction(this.inlineEnd)]];
|
|
58
|
-
}
|
|
59
|
-
inlineCall(scope, args) {
|
|
60
|
-
// create return value
|
|
61
|
-
this.inlineTemp = new TempValue_1.TempValue(scope);
|
|
62
|
-
this.inlineEnd = new LiteralValue_1.LiteralValue(scope, null);
|
|
63
|
-
// make a copy of the function scope
|
|
64
|
-
const fnScope = this.scope.copy();
|
|
65
|
-
// hard set variables within the function scope
|
|
66
|
-
this.paramNames.forEach((name, i) => fnScope.hardSet(name, args[i]));
|
|
67
|
-
this.tryingInline = true;
|
|
68
|
-
let inst = this.c.handle(fnScope, this.body)[1];
|
|
69
|
-
this.tryingInline = false;
|
|
70
|
-
// removing useless instruction
|
|
71
|
-
// get the last instructions
|
|
72
|
-
// const [jump] = inst.slice(-1);
|
|
73
|
-
// if (jump instanceof JumpInstruction) {
|
|
74
|
-
// // remove useless jump
|
|
75
|
-
// if (jump.args[1] === this.inlineEnd) inst.pop();
|
|
76
|
-
// }
|
|
77
|
-
inst.push(new instructions_1.AddressResolver(this.inlineEnd));
|
|
78
|
-
// return the function value
|
|
79
|
-
return [this.inlineTemp, inst];
|
|
80
|
-
}
|
|
81
|
-
call(scope, args) {
|
|
82
|
-
if (args.length !== this.paramStores.length)
|
|
83
|
-
throw new Error("Cannot call: argument count not matching.");
|
|
84
|
-
const inlineCall = this.inlineCall(scope, args);
|
|
85
|
-
const inlineSize = inlineCall[1].filter(i => !i.hidden).length;
|
|
86
|
-
if (this.inline || inlineSize <= this.callSize)
|
|
87
|
-
return inlineCall;
|
|
88
|
-
return this.normalCall(scope, args);
|
|
89
|
-
}
|
|
90
|
-
return(scope, arg) {
|
|
91
|
-
if (arg && arg.macro) {
|
|
92
|
-
this.inline = true;
|
|
93
|
-
return [null, []];
|
|
94
|
-
}
|
|
95
|
-
if (this.inline || this.tryingInline)
|
|
96
|
-
return this.inlineReturn(scope, arg);
|
|
97
|
-
return this.normalReturn(scope, arg);
|
|
98
|
-
}
|
|
99
|
-
eval(scope) {
|
|
100
|
-
return [this, []];
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
exports.FunctionValue = FunctionValue;
|
|
104
|
-
//# sourceMappingURL=FunctionValue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FunctionValue.js","sourceRoot":"","sources":["../../src/values/FunctionValue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LiteralValue = void 0;
|
|
4
|
-
const _1 = require(".");
|
|
5
|
-
const literalMethods = {
|
|
6
|
-
length: function (scope) {
|
|
7
|
-
if (typeof this.data !== "string")
|
|
8
|
-
throw new Error("Length method only works on string literal values.");
|
|
9
|
-
return new LiteralValue(scope, this.data.length);
|
|
10
|
-
},
|
|
11
|
-
};
|
|
12
|
-
class LiteralValue extends _1.BaseValue {
|
|
13
|
-
constructor(scope, data) {
|
|
14
|
-
super(scope);
|
|
15
|
-
this.constant = true;
|
|
16
|
-
this.data = data;
|
|
17
|
-
}
|
|
18
|
-
eval(scope) {
|
|
19
|
-
return [this, []];
|
|
20
|
-
}
|
|
21
|
-
toString() {
|
|
22
|
-
return JSON.stringify(this.data);
|
|
23
|
-
}
|
|
24
|
-
get(scope, name) {
|
|
25
|
-
if (!(name instanceof LiteralValue && typeof name.data === "string"))
|
|
26
|
-
return super.get(scope, name);
|
|
27
|
-
const method = literalMethods[name.data];
|
|
28
|
-
if (!method)
|
|
29
|
-
throw new Error(`Method ${name.data} does not exist on literal values.`);
|
|
30
|
-
return [method.apply(this, [scope]), []];
|
|
31
|
-
}
|
|
32
|
-
get num() {
|
|
33
|
-
if (this.data === null)
|
|
34
|
-
return 0;
|
|
35
|
-
if (typeof this.data === "string")
|
|
36
|
-
return 1;
|
|
37
|
-
return this.data;
|
|
38
|
-
}
|
|
39
|
-
typeof(scope) {
|
|
40
|
-
return [new LiteralValue(scope, "literal"), []];
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
exports.LiteralValue = LiteralValue;
|
|
44
|
-
const operatorMap = {
|
|
45
|
-
"==": (a, b) => +(a == b),
|
|
46
|
-
"===": (a, b) => +(a === b),
|
|
47
|
-
"!=": (a, b) => +(a != b),
|
|
48
|
-
"!==": (a, b) => +(a !== b),
|
|
49
|
-
"<": (a, b) => +(a < b),
|
|
50
|
-
">": (a, b) => +(a > b),
|
|
51
|
-
"<=": (a, b) => +(a <= b),
|
|
52
|
-
">=": (a, b) => +(a >= b),
|
|
53
|
-
"+": (a, b) => a + b,
|
|
54
|
-
"-": (a, b) => a - b,
|
|
55
|
-
"*": (a, b) => a * b,
|
|
56
|
-
"/": (a, b) => a / b,
|
|
57
|
-
"%": (a, b) => a % b,
|
|
58
|
-
"**": (a, b) => a ** b,
|
|
59
|
-
"|": (a, b) => a | b,
|
|
60
|
-
"&": (a, b) => a & b,
|
|
61
|
-
"^": (a, b) => a ^ b,
|
|
62
|
-
">>": (a, b) => a >> b,
|
|
63
|
-
">>>": (a, b) => a >> b,
|
|
64
|
-
"<<": (a, b) => a << b,
|
|
65
|
-
"&&": (a, b) => +(a && b),
|
|
66
|
-
"||": (a, b) => +(a || b),
|
|
67
|
-
};
|
|
68
|
-
for (const key in operatorMap) {
|
|
69
|
-
const fn = operatorMap[key];
|
|
70
|
-
LiteralValue.prototype[key] = function (scope, value) {
|
|
71
|
-
if (!(value instanceof LiteralValue)) {
|
|
72
|
-
return _1.BaseValue.prototype[key].apply(this, [scope, value]);
|
|
73
|
-
}
|
|
74
|
-
return [new LiteralValue(scope, fn(this.num, value.num)), []];
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
const unaryOperatorMap = {
|
|
78
|
-
"!": v => +!v,
|
|
79
|
-
"~": v => ~v,
|
|
80
|
-
"u-": v => -v,
|
|
81
|
-
};
|
|
82
|
-
for (const key in unaryOperatorMap) {
|
|
83
|
-
LiteralValue.prototype[key] = function (scope) {
|
|
84
|
-
const fn = unaryOperatorMap[key];
|
|
85
|
-
return [new LiteralValue(scope, fn(this.num)), []];
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
//# sourceMappingURL=LiteralValue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LiteralValue.js","sourceRoot":"","sources":["../../src/values/LiteralValue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { IScope, IValue, TValueInstructions } from "../types";
|
|
2
|
-
import { LiteralValue } from "./LiteralValue";
|
|
3
|
-
import { VoidValue } from "./VoidValue";
|
|
4
|
-
export declare class ObjectValue extends VoidValue {
|
|
5
|
-
constant: boolean;
|
|
6
|
-
macro: boolean;
|
|
7
|
-
data: {
|
|
8
|
-
[k: string]: IValue;
|
|
9
|
-
};
|
|
10
|
-
constructor(scope: IScope, data?: {
|
|
11
|
-
[k: string]: IValue;
|
|
12
|
-
});
|
|
13
|
-
typeof(scope: IScope): TValueInstructions;
|
|
14
|
-
get(scope: IScope, key: LiteralValue): TValueInstructions;
|
|
15
|
-
eval(scope: IScope): TValueInstructions;
|
|
16
|
-
call(scope: IScope, args: IValue[]): TValueInstructions;
|
|
17
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ObjectValue = void 0;
|
|
4
|
-
const operators_1 = require("../operators");
|
|
5
|
-
const LiteralValue_1 = require("./LiteralValue");
|
|
6
|
-
const VoidValue_1 = require("./VoidValue");
|
|
7
|
-
class ObjectValue extends VoidValue_1.VoidValue {
|
|
8
|
-
constructor(scope, data = {}) {
|
|
9
|
-
super(scope);
|
|
10
|
-
this.constant = true;
|
|
11
|
-
this.macro = true;
|
|
12
|
-
this.data = data;
|
|
13
|
-
}
|
|
14
|
-
typeof(scope) {
|
|
15
|
-
return [new LiteralValue_1.LiteralValue(scope, "object"), []];
|
|
16
|
-
}
|
|
17
|
-
get(scope, key) {
|
|
18
|
-
const member = this.data[key.data];
|
|
19
|
-
if (member)
|
|
20
|
-
return [member, []];
|
|
21
|
-
const { $get } = this.data;
|
|
22
|
-
if (!$get)
|
|
23
|
-
throw new Error("Cannot get undefined member.");
|
|
24
|
-
return $get.call(scope, [key]);
|
|
25
|
-
}
|
|
26
|
-
eval(scope) {
|
|
27
|
-
const { $eval } = this.data;
|
|
28
|
-
if (!$eval)
|
|
29
|
-
return [this, []];
|
|
30
|
-
return $eval.call(scope, []);
|
|
31
|
-
}
|
|
32
|
-
call(scope, args) {
|
|
33
|
-
const { $call } = this.data;
|
|
34
|
-
if (!$call)
|
|
35
|
-
return super.call(scope, args);
|
|
36
|
-
return $call.call(scope, args);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
exports.ObjectValue = ObjectValue;
|
|
40
|
-
for (const op of operators_1.operators) {
|
|
41
|
-
ObjectValue.prototype[op] = function (...args) {
|
|
42
|
-
const $ = this.data["$" + op];
|
|
43
|
-
if (!$)
|
|
44
|
-
return VoidValue_1.VoidValue.prototype[op].apply(this, args);
|
|
45
|
-
let [scope, ...fnArgs] = args;
|
|
46
|
-
// @ts-ignore
|
|
47
|
-
return $.call(scope, fnArgs);
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=ObjectValue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectValue.js","sourceRoot":"","sources":["../../src/values/ObjectValue.ts"],"names":[],"mappings":";;;AAAA,4CAAyC;AAEzC,iDAA8C;AAC9C,2CAAwC;AAExC,MAAa,WAAY,SAAQ,qBAAS;IAKxC,YAAY,KAAa,EAAE,OAAgC,EAAE;QAC3D,KAAK,CAAC,KAAK,CAAC,CAAC;QALf,aAAQ,GAAG,IAAI,CAAC;QAChB,UAAK,GAAG,IAAI,CAAC;QAKX,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,OAAO,CAAC,IAAI,2BAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,GAAiB;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,MAAM;YAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,KAAa;QAChB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,KAAa,EAAE,IAAc;QAChC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;CACF;AAjCD,kCAiCC;AAED,KAAK,MAAM,EAAE,IAAI,qBAAS,EAAE;IAC1B,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,UAA6B,GAAG,IAAW;QACrE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,CAAC;YAAE,OAAO,qBAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;QAC9B,aAAa;QACb,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC,CAAC;CACH"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StoreValue = void 0;
|
|
4
|
-
const _1 = require(".");
|
|
5
|
-
const instructions_1 = require("../instructions");
|
|
6
|
-
class StoreValue extends _1.BaseValue {
|
|
7
|
-
constructor(scope, name) {
|
|
8
|
-
super(scope);
|
|
9
|
-
this.constant = false;
|
|
10
|
-
this.name = name;
|
|
11
|
-
}
|
|
12
|
-
typeof(scope) {
|
|
13
|
-
return [new _1.LiteralValue(scope, "store"), []];
|
|
14
|
-
}
|
|
15
|
-
"="(scope, value) {
|
|
16
|
-
if (this.constant)
|
|
17
|
-
throw new Error(`Cannot assign to unmutable store '${this.name}'.`);
|
|
18
|
-
if (value instanceof _1.TempValue && value.canProxy)
|
|
19
|
-
return value.proxy(this);
|
|
20
|
-
const [evalValue, evalInst] = value.eval(scope);
|
|
21
|
-
return [this, [...evalInst, new instructions_1.SetInstruction(this, evalValue)]];
|
|
22
|
-
}
|
|
23
|
-
eval(scope) {
|
|
24
|
-
return [this, []];
|
|
25
|
-
}
|
|
26
|
-
toString() {
|
|
27
|
-
return this.name;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
exports.StoreValue = StoreValue;
|
|
31
|
-
//# sourceMappingURL=StoreValue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StoreValue.js","sourceRoot":"","sources":["../../src/values/StoreValue.ts"],"names":[],"mappings":";;;AAAA,wBAAuD;AACvD,kDAAiD;AAIjD,MAAa,UAAW,SAAQ,YAAS;IAGvC,YAAY,KAAa,EAAE,IAAY;QACrC,KAAK,CAAC,KAAK,CAAC,CAAC;QAFf,aAAQ,GAAG,KAAK,CAAC;QAGf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,OAAO,CAAC,IAAI,eAAY,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,KAAa;QAC9B,IAAI,IAAI,CAAC,QAAQ;YACf,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACtE,IAAI,KAAK,YAAY,YAAS,IAAI,KAAK,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3E,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,QAAQ,EAAE,IAAI,6BAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC,KAAa;QAChB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpB,CAAC;IACD,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF;AAzBD,gCAyBC"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TempValue = void 0;
|
|
4
|
-
const instructions_1 = require("../instructions");
|
|
5
|
-
const operators_1 = require("../operators");
|
|
6
|
-
const _1 = require("./");
|
|
7
|
-
const LiteralValue_1 = require("./LiteralValue");
|
|
8
|
-
class TempValue extends _1.StoreValue {
|
|
9
|
-
constructor(scope, name) {
|
|
10
|
-
super(scope, name ?? "t" + scope.ntemp + (scope.name ? ":" + scope.name : ""));
|
|
11
|
-
this.canProxy = true;
|
|
12
|
-
if (!name)
|
|
13
|
-
scope.ntemp++;
|
|
14
|
-
}
|
|
15
|
-
eval(scope) {
|
|
16
|
-
return super.eval(scope);
|
|
17
|
-
}
|
|
18
|
-
"="(scope, value) {
|
|
19
|
-
if (this.proxied) {
|
|
20
|
-
this.noProxy();
|
|
21
|
-
return [this, [new instructions_1.SetInstruction(this, value)]];
|
|
22
|
-
}
|
|
23
|
-
if (value instanceof LiteralValue_1.LiteralValue && this.canProxy) {
|
|
24
|
-
return this.proxy(value);
|
|
25
|
-
}
|
|
26
|
-
return super["="](scope, value);
|
|
27
|
-
}
|
|
28
|
-
proxy(value) {
|
|
29
|
-
if (!this.canProxy) {
|
|
30
|
-
console.log(this.proxied);
|
|
31
|
-
throw new Error("Cannot proxy (canProxy = false).");
|
|
32
|
-
}
|
|
33
|
-
if (this.proxied)
|
|
34
|
-
throw new Error("Cannot proxy multiple times.");
|
|
35
|
-
this.proxied = value;
|
|
36
|
-
this.canProxy = false;
|
|
37
|
-
for (const key of [
|
|
38
|
-
...operators_1.operators,
|
|
39
|
-
"eval",
|
|
40
|
-
"get",
|
|
41
|
-
"call",
|
|
42
|
-
"toString",
|
|
43
|
-
"proxy",
|
|
44
|
-
]) {
|
|
45
|
-
if (key !== "=" && key in value)
|
|
46
|
-
this[key] = (...args) => value[key].apply(value, args);
|
|
47
|
-
}
|
|
48
|
-
this.setInst = new instructions_1.SetInstruction(this, value);
|
|
49
|
-
this.setInst.hidden = true;
|
|
50
|
-
return [this, [this.setInst]];
|
|
51
|
-
}
|
|
52
|
-
noProxy() {
|
|
53
|
-
this.setInst.hidden = false;
|
|
54
|
-
for (const key of [
|
|
55
|
-
...operators_1.operators,
|
|
56
|
-
"eval",
|
|
57
|
-
"get",
|
|
58
|
-
"call",
|
|
59
|
-
"toString",
|
|
60
|
-
"proxy",
|
|
61
|
-
]) {
|
|
62
|
-
this[key] = TempValue.prototype[key];
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
exports.TempValue = TempValue;
|
|
67
|
-
//# sourceMappingURL=TempValue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TempValue.js","sourceRoot":"","sources":["../../src/values/TempValue.ts"],"names":[],"mappings":";;;AAAA,kDAAiD;AACjD,4CAAyC;AAEzC,yBAAgC;AAChC,iDAA8C;AAE9C,MAAa,SAAU,SAAQ,aAAU;IAKvC,YAAY,KAAa,EAAE,IAAa;QACtC,KAAK,CACH,KAAK,EACL,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CACjE,CAAC;QAPJ,aAAQ,GAAG,IAAI,CAAC;QAQd,IAAI,CAAC,IAAI;YAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC,KAAa;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,KAAa;QAC9B,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,6BAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;SAClD;QACD,IAAI,KAAK,YAAY,2BAAY,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC1B;QACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;SACrD;QACD,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,KAAK,MAAM,GAAG,IAAI;YAChB,GAAG,qBAAS;YACZ,MAAM;YACN,KAAK;YACL,MAAM;YACN,UAAU;YACV,OAAO;SACC,EAAE;YACV,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,KAAK;gBAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAS,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SAC/D;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,6BAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QAC3B,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;QAC5B,KAAK,MAAM,GAAG,IAAI;YAChB,GAAG,qBAAS;YACZ,MAAM;YACN,KAAK;YACL,MAAM;YACN,UAAU;YACV,OAAO;SACC,EAAE;YACV,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SACtC;IACH,CAAC;CACF;AAjED,8BAiEC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.VoidValue = void 0;
|
|
4
|
-
const operators_1 = require("../operators");
|
|
5
|
-
class VoidValue {
|
|
6
|
-
constructor(scope) {
|
|
7
|
-
this.constant = false;
|
|
8
|
-
this.macro = false;
|
|
9
|
-
this.scope = scope;
|
|
10
|
-
}
|
|
11
|
-
eval(scope) {
|
|
12
|
-
throw new Error(`${this} cannot eval.`);
|
|
13
|
-
}
|
|
14
|
-
call(scope, args) {
|
|
15
|
-
throw new Error(`${this} cannot call.`);
|
|
16
|
-
}
|
|
17
|
-
get(scope, name) {
|
|
18
|
-
throw new Error(`${this} cannot get.`);
|
|
19
|
-
}
|
|
20
|
-
toString() {
|
|
21
|
-
return "void";
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
exports.VoidValue = VoidValue;
|
|
25
|
-
for (const key of operators_1.operators) {
|
|
26
|
-
VoidValue.prototype[key] = function () {
|
|
27
|
-
console.log(this);
|
|
28
|
-
throw new Error(`${this} cannot '${key}' operation.`);
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=VoidValue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"VoidValue.js","sourceRoot":"","sources":["../../src/values/VoidValue.ts"],"names":[],"mappings":";;;AACA,4CAAyC;AAEzC,MAAa,SAAS;IAIpB,YAAY,KAAa;QAFzB,aAAQ,GAAG,KAAK,CAAC;QACjB,UAAK,GAAG,KAAK,CAAC;QAEZ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IACD,IAAI,CAAC,KAAa;QAChB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,eAAe,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,CAAC,KAAa,EAAE,IAAc;QAChC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,eAAe,CAAC,CAAC;IAC1C,CAAC;IACD,GAAG,CAAC,KAAa,EAAE,IAAY;QAC7B,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,cAAc,CAAC,CAAC;IACzC,CAAC;IACD,QAAQ;QACN,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAnBD,8BAmBC;AAED,KAAK,MAAM,GAAG,IAAI,qBAAS,EAAE;IAC3B,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG;QACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,YAAY,GAAG,cAAc,CAAC,CAAC;IACxD,CAAC,CAAC;CACH"}
|
package/build/values/index.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./VoidValue"), exports);
|
|
18
|
-
__exportStar(require("./BaseValue"), exports);
|
|
19
|
-
__exportStar(require("./LiteralValue"), exports);
|
|
20
|
-
__exportStar(require("./StoreValue"), exports);
|
|
21
|
-
__exportStar(require("./TempValue"), exports);
|
|
22
|
-
__exportStar(require("./ObjectValue"), exports);
|
|
23
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/values/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,8CAA4B;AAC5B,iDAA+B;AAC/B,+CAA6B;AAC7B,8CAA4B;AAC5B,gDAA8B"}
|