mlogjs 0.1.11 → 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/LICENSE +21 -21
- package/README.md +68 -18
- 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 +8 -11
- 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 +0 -0
- package/{build → dist/types}/handlers/Identifier.d.ts +0 -0
- package/dist/types/handlers/IfStatement.d.ts +2 -0
- package/{build → dist/types}/handlers/Literal.d.ts +0 -0
- package/{build → dist/types}/handlers/Object.d.ts +0 -0
- package/{build → dist/types}/handlers/OperationExpressions.d.ts +0 -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/VariableDeclaration.d.ts +3 -0
- package/dist/types/handlers/WhileStatement.d.ts +2 -0
- package/{build → dist/types}/handlers/index.d.ts +0 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/initScope.d.ts +2 -0
- package/{build → dist/types}/instructions/AddressResolver.d.ts +1 -1
- package/{build → dist/types}/instructions/ControlInstructions.d.ts +0 -0
- package/{build → dist/types}/instructions/EndInstruction.d.ts +0 -0
- package/{build → dist/types}/instructions/InstructionBase.d.ts +2 -2
- 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 +0 -0
- package/{build → dist/types}/instructions/ZeroSpaceInstruction.d.ts +0 -0
- package/{build → dist/types}/instructions/index.d.ts +0 -0
- package/dist/types/macros/Building.d.ts +11 -0
- package/dist/types/macros/Function.d.ts +12 -0
- package/{build → dist/types}/macros/Math.d.ts +0 -0
- package/{build/macros/Blocks.d.ts → dist/types/macros/Memory.d.ts} +1 -1
- package/dist/types/macros/Namespace.d.ts +21 -0
- package/{build/macros/Draw.d.ts → dist/types/macros/Other.d.ts} +1 -1
- package/dist/types/macros/RawValue.d.ts +5 -0
- package/dist/types/macros/commands/Control.d.ts +5 -0
- package/dist/types/macros/commands/Draw.d.ts +5 -0
- package/dist/types/macros/commands/DrawFlush.d.ts +5 -0
- package/dist/types/macros/commands/GetLink.d.ts +5 -0
- package/dist/types/macros/commands/Lookup.d.ts +5 -0
- package/dist/types/macros/commands/Print.d.ts +5 -0
- package/dist/types/macros/commands/PrintFlush.d.ts +5 -0
- package/dist/types/macros/commands/Radar.d.ts +7 -0
- package/dist/types/macros/commands/Sensor.d.ts +5 -0
- package/dist/types/macros/commands/UnitBind.d.ts +5 -0
- package/dist/types/macros/commands/UnitControl.d.ts +5 -0
- package/dist/types/macros/commands/UnitLocate.d.ts +5 -0
- package/dist/types/macros/commands/UnitRadar.d.ts +5 -0
- package/dist/types/macros/commands/Wait.d.ts +5 -0
- package/dist/types/macros/commands/index.d.ts +14 -0
- package/dist/types/macros/index.d.ts +7 -0
- package/{build → dist/types}/operators.d.ts +3 -0
- package/dist/types/types.d.ts +100 -0
- package/{build → dist/types}/utils.d.ts +1 -0
- package/{build → dist/types}/values/BaseValue.d.ts +0 -0
- package/{build → dist/types}/values/FunctionValue.d.ts +1 -1
- package/{build → dist/types}/values/LiteralValue.d.ts +0 -0
- package/dist/types/values/ObjectValue.d.ts +19 -0
- package/{build → dist/types}/values/StoreValue.d.ts +0 -0
- package/{build → dist/types}/values/TempValue.d.ts +0 -0
- package/{build → dist/types}/values/VoidValue.d.ts +3 -1
- package/{build → dist/types}/values/index.d.ts +0 -0
- package/{docs → doc}/README.md +9 -17
- package/lib/commands.d.ts +326 -0
- package/lib/eslib/index.d.ts +3 -0
- package/lib/eslib/lib.d.ts +9 -0
- package/lib/eslib/lib.es2015.collection.d.ts +89 -0
- package/lib/eslib/lib.es2015.core.d.ts +16 -0
- package/lib/eslib/lib.es2015.d.ts +30 -0
- package/lib/eslib/lib.es2015.generator.d.ts +79 -0
- package/lib/eslib/lib.es2015.iterable.d.ts +70 -0
- package/lib/eslib/lib.es5.d.ts +295 -0
- package/lib/eslib/lib.es6.d.ts +18 -0
- package/lib/globals.d.ts +328 -0
- package/lib/helpers.d.ts +23 -0
- package/lib/index.d.ts +7 -0
- package/lib/kinds.d.ts +36 -0
- package/lib/memory.d.ts +17 -0
- package/lib/traits.d.ts +120 -0
- package/lib/util.d.ts +32 -0
- package/package.json +63 -37
- package/.gitattributes +0 -2
- package/build/Compiler.d.ts +0 -18
- package/build/Compiler.js +0 -93
- 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 -35
- 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 -33
- 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 -16
- 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 -32
- 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 -28
- 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 -32
- 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 -27
- 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/instructions/AddressResolver.js +0 -32
- 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 -22
- package/build/instructions/index.js.map +0 -1
- package/build/macros/Blocks.js +0 -137
- package/build/macros/Blocks.js.map +0 -1
- package/build/macros/Draw.js +0 -34
- package/build/macros/Draw.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/Other.d.ts +0 -8
- package/build/macros/Other.js +0 -29
- package/build/macros/Other.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/index.d.ts +0 -5
- package/build/macros/index.js +0 -18
- package/build/macros/index.js.map +0 -1
- package/build/operators.js +0 -39
- package/build/operators.js.map +0 -1
- package/build/scopes/FunctionScope.d.ts +0 -5
- package/build/scopes/FunctionScope.js +0 -13
- package/build/scopes/FunctionScope.js.map +0 -1
- package/build/scopes/LoopScope.d.ts +0 -5
- package/build/scopes/LoopScope.js +0 -13
- package/build/scopes/LoopScope.js.map +0 -1
- package/build/scopes/Scope.d.ts +0 -36
- package/build/scopes/Scope.js +0 -93
- package/build/scopes/Scope.js.map +0 -1
- package/build/scopes/index.d.ts +0 -3
- package/build/scopes/index.js +0 -16
- package/build/scopes/index.js.map +0 -1
- package/build/types.d.ts +0 -49
- package/build/types.js +0 -24
- package/build/types.js.map +0 -1
- package/build/utils.js +0 -9
- package/build/utils.js.map +0 -1
- package/build/values/BaseValue.js +0 -102
- package/build/values/BaseValue.js.map +0 -1
- package/build/values/FunctionValue.js +0 -101
- package/build/values/FunctionValue.js.map +0 -1
- package/build/values/LiteralValue.js +0 -89
- 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 -53
- 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 -19
- package/build/values/index.js.map +0 -1
- package/dist/bundle.js +0 -553
- package/docs/.nojekyll +0 -0
- package/docs/_coverpage.md +0 -8
- package/docs/_sidebar.md +0 -3
- package/docs/data-types.md +0 -56
- package/docs/getting-started.md +0 -19
- package/docs/index.html +0 -41
- package/docs/mlogjs.png +0 -0
- package/mlogjs.d.ts +0 -72
- package/tsconfig.json +0 -22
- package/webpack.config.js +0 -22
package/build/scopes/index.js
DELETED
|
@@ -1,16 +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
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
-
};
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
__exportStar(require("./Scope"), exports);
|
|
14
|
-
__exportStar(require("./FunctionScope"), exports);
|
|
15
|
-
__exportStar(require("./LoopScope"), exports);
|
|
16
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scopes/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAAuB;AACvB,kDAA+B;AAC/B,8CAA2B"}
|
package/build/types.d.ts
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
export * as es from "estree";
|
|
2
|
-
import { Compiler } from "./Compiler";
|
|
3
|
-
import { AddressResolver } from "./instructions";
|
|
4
|
-
import { LeftRightOperator, UnaryOperator, UpdateOperator } from "./operators";
|
|
5
|
-
export interface IInstruction {
|
|
6
|
-
hidden: boolean;
|
|
7
|
-
resolve(i: number): void;
|
|
8
|
-
}
|
|
9
|
-
export declare type THandler = (compiler: Compiler, scope: IScope, node: any, arg: any) => TValueInstructions;
|
|
10
|
-
export interface IScope {
|
|
11
|
-
parent: IScope;
|
|
12
|
-
data: {};
|
|
13
|
-
name: string;
|
|
14
|
-
inst: IInstruction[];
|
|
15
|
-
break: AddressResolver;
|
|
16
|
-
continue: AddressResolver;
|
|
17
|
-
function: IFunctionValue;
|
|
18
|
-
ntemp: number;
|
|
19
|
-
createScope(): IScope;
|
|
20
|
-
createFunction(name: string, stacked?: boolean): IScope;
|
|
21
|
-
has(name: string): boolean;
|
|
22
|
-
get(name: string): IValue;
|
|
23
|
-
set(name: string, value: IValue): IValue;
|
|
24
|
-
hardSet(name: string, value: IValue): IValue;
|
|
25
|
-
make(name: string, storeName: string): IValue;
|
|
26
|
-
copy(): IScope;
|
|
27
|
-
}
|
|
28
|
-
export declare type IValue = {
|
|
29
|
-
[k in UnaryOperator]?: (scope: IScope) => TValueInstructions;
|
|
30
|
-
} & {
|
|
31
|
-
[k in UpdateOperator]?: (scope: IScope, prefix: boolean) => TValueInstructions;
|
|
32
|
-
} & {
|
|
33
|
-
[k in LeftRightOperator]?: (scope: IScope, value: IValue) => TValueInstructions;
|
|
34
|
-
} & {
|
|
35
|
-
scope: IScope;
|
|
36
|
-
constant: boolean;
|
|
37
|
-
macro: boolean;
|
|
38
|
-
eval(scope: IScope): TValueInstructions;
|
|
39
|
-
call(scope: IScope, args: IValue[]): TValueInstructions;
|
|
40
|
-
get(scope: IScope, name: IValue): TValueInstructions;
|
|
41
|
-
};
|
|
42
|
-
export declare type TLiteral = string | number;
|
|
43
|
-
export interface IBindableValue extends IValue {
|
|
44
|
-
data: TLiteral;
|
|
45
|
-
}
|
|
46
|
-
export interface IFunctionValue extends IValue {
|
|
47
|
-
return(scope: IScope, argument: IValue): TValueInstructions;
|
|
48
|
-
}
|
|
49
|
-
export declare type TValueInstructions = [IValue, IInstruction[]];
|
package/build/types.js
DELETED
|
@@ -1,24 +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
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.es = void 0;
|
|
23
|
-
exports.es = __importStar(require("estree"));
|
|
24
|
-
//# sourceMappingURL=types.js.map
|
package/build/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA6B"}
|
package/build/utils.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.nodeName = void 0;
|
|
4
|
-
function nodeName(node) {
|
|
5
|
-
const { line, column } = node.loc.start;
|
|
6
|
-
return line + ":" + column;
|
|
7
|
-
}
|
|
8
|
-
exports.nodeName = nodeName;
|
|
9
|
-
//# sourceMappingURL=utils.js.map
|
package/build/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAEA,SAAgB,QAAQ,CAAC,IAAa;IAClC,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAA;IACrC,OAAO,IAAI,GAAG,GAAG,GAAG,MAAM,CAAA;AAC9B,CAAC;AAHD,4BAGC"}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BaseValue = void 0;
|
|
4
|
-
const instructions_1 = require("../instructions");
|
|
5
|
-
const operators_1 = require("../operators");
|
|
6
|
-
const _1 = require(".");
|
|
7
|
-
class BaseValue extends _1.VoidValue {
|
|
8
|
-
"u-"(scope) {
|
|
9
|
-
const [that, inst] = this.eval(scope);
|
|
10
|
-
const temp = new _1.TempValue(scope);
|
|
11
|
-
return [
|
|
12
|
-
temp,
|
|
13
|
-
[...inst, new instructions_1.OperationInstruction("sub", temp, new _1.LiteralValue(scope, 0), that)],
|
|
14
|
-
];
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
exports.BaseValue = BaseValue;
|
|
18
|
-
const operatorMap = {
|
|
19
|
-
"==": "equal",
|
|
20
|
-
"===": "strictEqual",
|
|
21
|
-
"!=": "notEqual",
|
|
22
|
-
"!==": "notEqual",
|
|
23
|
-
"<": "lessThan",
|
|
24
|
-
">": "greaterThan",
|
|
25
|
-
"<=": "lessThanEq",
|
|
26
|
-
">=": "greaterThanEq",
|
|
27
|
-
"+": "add",
|
|
28
|
-
"-": "sub",
|
|
29
|
-
"*": "mul",
|
|
30
|
-
"/": "div",
|
|
31
|
-
"%": "mod",
|
|
32
|
-
"**": "pow",
|
|
33
|
-
"|": "or",
|
|
34
|
-
"&": "and",
|
|
35
|
-
"^": "xor",
|
|
36
|
-
">>": "shr",
|
|
37
|
-
">>>": "shr",
|
|
38
|
-
"<<": "shl",
|
|
39
|
-
"&&": "land",
|
|
40
|
-
"||": "or",
|
|
41
|
-
};
|
|
42
|
-
for (const key in operatorMap) {
|
|
43
|
-
const kind = operatorMap[key];
|
|
44
|
-
BaseValue.prototype[key] = function (scope, value) {
|
|
45
|
-
const [left, leftInst] = this.eval(scope);
|
|
46
|
-
const [right, rightInst] = value.eval(scope);
|
|
47
|
-
const temp = new _1.TempValue(scope);
|
|
48
|
-
return [
|
|
49
|
-
temp,
|
|
50
|
-
[...leftInst, ...rightInst, new instructions_1.OperationInstruction(kind, temp, left, right)],
|
|
51
|
-
];
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
const unaryOperatorMap = {
|
|
55
|
-
"!": "not",
|
|
56
|
-
"~": "flip",
|
|
57
|
-
};
|
|
58
|
-
for (const key in unaryOperatorMap) {
|
|
59
|
-
const name = unaryOperatorMap[key];
|
|
60
|
-
BaseValue.prototype[key] = function (scope) {
|
|
61
|
-
const [that, inst] = this.eval(scope);
|
|
62
|
-
const temp = new _1.TempValue(scope);
|
|
63
|
-
return [temp, [...inst, new instructions_1.OperationInstruction(name, temp, that)]];
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
const assignmentToBinary = {
|
|
67
|
-
"+=": "+",
|
|
68
|
-
"-=": "-",
|
|
69
|
-
"*=": "*",
|
|
70
|
-
"/=": "/",
|
|
71
|
-
"%=": "%",
|
|
72
|
-
"**=": "**",
|
|
73
|
-
"|=": "|",
|
|
74
|
-
"&=": "&",
|
|
75
|
-
"^=": "^",
|
|
76
|
-
">>=": ">>",
|
|
77
|
-
">>>=": ">>>",
|
|
78
|
-
"<<=": "<<",
|
|
79
|
-
"&&=": "&&",
|
|
80
|
-
"||=": "||",
|
|
81
|
-
};
|
|
82
|
-
for (const op in assignmentToBinary) {
|
|
83
|
-
BaseValue.prototype[op] = function (scope, value) {
|
|
84
|
-
const [opValue, opInst] = this[assignmentToBinary[op]](scope, value);
|
|
85
|
-
const [retValue, retInst] = this["="](scope, opValue);
|
|
86
|
-
return [retValue, [...opInst, ...retInst]];
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
for (const key of operators_1.updateOperators) {
|
|
90
|
-
BaseValue.prototype[key] = function (scope, prefix) {
|
|
91
|
-
let [ret, inst] = this.eval(scope);
|
|
92
|
-
if (!prefix) {
|
|
93
|
-
const temp = new _1.TempValue(scope);
|
|
94
|
-
const [tempValue, tempInst] = temp["="](scope, ret);
|
|
95
|
-
ret = tempValue;
|
|
96
|
-
inst.push(...tempInst);
|
|
97
|
-
}
|
|
98
|
-
const kind = key === "++" ? "+=" : "-=";
|
|
99
|
-
return [ret, [...inst, ...this[kind](scope, new _1.LiteralValue(scope, 1))[1]]];
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
//# sourceMappingURL=BaseValue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BaseValue.js","sourceRoot":"","sources":["../../src/values/BaseValue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,101 +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 = [new instructions_1.AddressResolver(this.addr), ...this.c.handle(this.scope, this.body)[1]];
|
|
35
|
-
this.inst.push(new instructions_1.SetCounterInstruction(this.ret));
|
|
36
|
-
}
|
|
37
|
-
normalReturn(scope, arg) {
|
|
38
|
-
const argInst = arg ? this.temp["="](scope, arg)[1] : [];
|
|
39
|
-
return [null, [...argInst, new instructions_1.SetCounterInstruction(this.ret)]];
|
|
40
|
-
}
|
|
41
|
-
normalCall(scope, args) {
|
|
42
|
-
if (!this.bundled)
|
|
43
|
-
this.scope.inst.push(...this.inst);
|
|
44
|
-
this.bundled = true;
|
|
45
|
-
const callAddressLiteral = new LiteralValue_1.LiteralValue(scope, null);
|
|
46
|
-
const inst = this.paramStores
|
|
47
|
-
.map((param, i) => param["="](scope, args[i])[1])
|
|
48
|
-
.reduce((s, c) => s.concat(c), [])
|
|
49
|
-
.concat(...this.ret["="](scope, callAddressLiteral)[1], new instructions_1.JumpInstruction(this.addr, instructions_1.EJumpKind.Always), new instructions_1.AddressResolver(callAddressLiteral));
|
|
50
|
-
return [this.temp, inst];
|
|
51
|
-
}
|
|
52
|
-
inlineReturn(scope, arg) {
|
|
53
|
-
const argInst = arg ? this.inlineTemp["="](scope, arg)[1] : [];
|
|
54
|
-
return [null, [...argInst, new instructions_1.ReturnInstruction(this.inlineEnd)]];
|
|
55
|
-
}
|
|
56
|
-
inlineCall(scope, args) {
|
|
57
|
-
// create return value
|
|
58
|
-
this.inlineTemp = new TempValue_1.TempValue(scope);
|
|
59
|
-
this.inlineEnd = new LiteralValue_1.LiteralValue(scope, null);
|
|
60
|
-
// make a copy of the function scope
|
|
61
|
-
const fnScope = this.scope.copy();
|
|
62
|
-
// hard set variables within the function scope
|
|
63
|
-
this.paramNames.forEach((name, i) => fnScope.hardSet(name, args[i]));
|
|
64
|
-
this.tryingInline = true;
|
|
65
|
-
let inst = this.c.handle(fnScope, this.body)[1];
|
|
66
|
-
this.tryingInline = false;
|
|
67
|
-
// removing useless instruction
|
|
68
|
-
// get the last instructions
|
|
69
|
-
// const [jump] = inst.slice(-1);
|
|
70
|
-
// if (jump instanceof JumpInstruction) {
|
|
71
|
-
// // remove useless jump
|
|
72
|
-
// if (jump.args[1] === this.inlineEnd) inst.pop();
|
|
73
|
-
// }
|
|
74
|
-
inst.push(new instructions_1.AddressResolver(this.inlineEnd));
|
|
75
|
-
// return the function value
|
|
76
|
-
return [this.inlineTemp, inst];
|
|
77
|
-
}
|
|
78
|
-
call(scope, args) {
|
|
79
|
-
if (args.length !== this.paramStores.length)
|
|
80
|
-
throw new Error("Cannot call: argument count not matching.");
|
|
81
|
-
const inlineCall = this.inlineCall(scope, args);
|
|
82
|
-
const inlineSize = inlineCall[1].filter((i) => !i.hidden).length;
|
|
83
|
-
if (this.inline || inlineSize <= this.callSize)
|
|
84
|
-
return inlineCall;
|
|
85
|
-
return this.normalCall(scope, args);
|
|
86
|
-
}
|
|
87
|
-
return(scope, arg) {
|
|
88
|
-
if (arg && arg.macro) {
|
|
89
|
-
this.inline = true;
|
|
90
|
-
return [null, []];
|
|
91
|
-
}
|
|
92
|
-
if (this.inline || this.tryingInline)
|
|
93
|
-
return this.inlineReturn(scope, arg);
|
|
94
|
-
return this.normalReturn(scope, arg);
|
|
95
|
-
}
|
|
96
|
-
eval(scope) {
|
|
97
|
-
return [this, []];
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
exports.FunctionValue = FunctionValue;
|
|
101
|
-
//# 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,89 +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) => Math.pow(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
|
-
;
|
|
75
|
-
return [new LiteralValue(scope, fn(this.num, value.num)), []];
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
const unaryOperatorMap = {
|
|
79
|
-
"!": (v) => +!v,
|
|
80
|
-
"~": (v) => ~v,
|
|
81
|
-
"u-": (v) => -v,
|
|
82
|
-
};
|
|
83
|
-
for (const key in unaryOperatorMap) {
|
|
84
|
-
LiteralValue.prototype[key] = function (scope) {
|
|
85
|
-
const fn = unaryOperatorMap[key];
|
|
86
|
-
return [new LiteralValue(scope, fn(this.num)), []];
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
//# 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;IAKzC,YAAY,KAAa,EAAE,OAAgC,EAAE;QAC5D,KAAK,CAAC,KAAK,CAAC,CAAC;QALd,aAAQ,GAAG,IAAI,CAAC;QAChB,UAAK,GAAG,IAAI,CAAC;QAKZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,KAAa;QACnB,OAAO,CAAC,IAAI,2BAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,GAAiB;QACnC,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;IAChC,CAAC;IAED,IAAI,CAAC,KAAa;QACjB,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;IAC9B,CAAC;IAED,IAAI,CAAC,KAAa,EAAE,IAAc;QACjC,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;IAChC,CAAC;CACD;AAjCD,kCAiCC;AAED,KAAK,MAAM,EAAE,IAAI,qBAAS,EAAE;IAC3B,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,UAA6B,GAAG,IAAW;QACtE,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,CAAA;QAC7B,aAAa;QACb,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC,CAAC;CACF"}
|
|
@@ -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;IAGxC,YAAY,KAAa,EAAE,IAAY;QACtC,KAAK,CAAC,KAAK,CAAC,CAAC;QAFd,aAAQ,GAAG,KAAK,CAAC;QAGhB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,KAAa;QACnB,OAAO,CAAC,IAAI,eAAY,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;IAC9C,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,KAAa;QAC/B,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACvF,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;IACnE,CAAC;IACD,IAAI,CAAC,KAAa;QACjB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACnB,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;CACD;AAxBD,gCAwBC"}
|
|
@@ -1,53 +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 !== null && name !== void 0 ? 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 [...operators_1.operators, "eval", "get", "call", "toString", "proxy"]) {
|
|
38
|
-
if (key !== "=" && key in value)
|
|
39
|
-
this[key] = (...args) => value[key].apply(value, args);
|
|
40
|
-
}
|
|
41
|
-
this.setInst = new instructions_1.SetInstruction(this, value);
|
|
42
|
-
this.setInst.hidden = true;
|
|
43
|
-
return [this, [this.setInst]];
|
|
44
|
-
}
|
|
45
|
-
noProxy() {
|
|
46
|
-
this.setInst.hidden = false;
|
|
47
|
-
for (const key of [...operators_1.operators, "eval", "get", "call", "toString", "proxy"]) {
|
|
48
|
-
this[key] = TempValue.prototype[key];
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
exports.TempValue = TempValue;
|
|
53
|
-
//# 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;IAKxC,YAAY,KAAa,EAAE,IAAa;QACvC,KAAK,CAAC,KAAK,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAJhF,aAAQ,GAAG,IAAI,CAAC;QAKf,IAAI,CAAC,IAAI;YAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC,KAAa;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAGD,GAAG,CAAC,KAAa,EAAE,KAAa;QAC/B,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,6BAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;SAChD;QACD,IAAI,KAAK,YAAY,2BAAY,IAAI,IAAI,CAAC,QAAQ,EAAE;YACnD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACzB;QACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,KAAa;QAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACnB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACzB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;SACnD;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,CAAA;QACrB,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,qBAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAU,EAAE;YACtF,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,KAAK;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAS,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SAC7F;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,6BAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC9C,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAA;QAC1B,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO;QACN,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAA;QAC3B,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,qBAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAU,EAAE;YACtF,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;SACpC;IACF,CAAC;CACD;AAhDD,8BAgDC"}
|
|
@@ -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;IAIrB,YAAY,KAAa;QAFzB,aAAQ,GAAG,KAAK,CAAC;QACjB,UAAK,GAAG,KAAK,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,CAAC;IACD,IAAI,CAAC,KAAa;QACjB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,eAAe,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,CAAC,KAAa,EAAE,IAAc;QACjC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,eAAe,CAAC,CAAC;IACzC,CAAC;IACD,GAAG,CAAC,KAAa,EAAE,IAAY;QAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,cAAc,CAAC,CAAC;IACxC,CAAC;IACD,QAAQ;QACP,OAAO,MAAM,CAAC;IACf,CAAC;CACD;AAnBD,8BAmBC;AAED,KAAK,MAAM,GAAG,IAAI,qBAAS,EAAE;IAC5B,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG;QAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,YAAY,GAAG,cAAc,CAAC,CAAC;IACvD,CAAC,CAAC;CACF"}
|