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.
Files changed (218) hide show
  1. package/build/bin.cjs +69 -0
  2. package/dist/bin.cjs +69 -0
  3. package/dist/index.cjs +1817 -0
  4. package/dist/index.mjs +1813 -0
  5. package/dist/types/Compiler.d.ts +18 -0
  6. package/{build → dist/types}/Scope.d.ts +23 -26
  7. package/dist/types/bin.d.ts +1 -0
  8. package/dist/types/handlers/BlockStatement.d.ts +2 -0
  9. package/dist/types/handlers/CallExpression.d.ts +3 -0
  10. package/dist/types/handlers/ForStatement.d.ts +2 -0
  11. package/{build → dist/types}/handlers/Function.d.ts +4 -4
  12. package/{build → dist/types}/handlers/Identifier.d.ts +2 -2
  13. package/dist/types/handlers/IfStatement.d.ts +2 -0
  14. package/{build → dist/types}/handlers/Literal.d.ts +2 -2
  15. package/{build → dist/types}/handlers/Object.d.ts +4 -4
  16. package/{build → dist/types}/handlers/OperationExpressions.d.ts +7 -7
  17. package/dist/types/handlers/Program.d.ts +2 -0
  18. package/dist/types/handlers/Statements.d.ts +5 -0
  19. package/dist/types/handlers/TemplateExpression.d.ts +2 -0
  20. package/dist/types/handlers/VariableDeclaration.d.ts +3 -0
  21. package/dist/types/handlers/WhileStatement.d.ts +2 -0
  22. package/{build → dist/types}/handlers/index.d.ts +14 -14
  23. package/dist/types/index.d.ts +1 -0
  24. package/{build → dist/types}/initScope.d.ts +2 -2
  25. package/{build → dist/types}/instructions/AddressResolver.d.ts +12 -12
  26. package/{build → dist/types}/instructions/ControlInstructions.d.ts +11 -11
  27. package/{build → dist/types}/instructions/EndInstruction.d.ts +4 -4
  28. package/{build → dist/types}/instructions/InstructionBase.d.ts +10 -10
  29. package/{build → dist/types}/instructions/JumpInstruction.d.ts +15 -15
  30. package/{build → dist/types}/instructions/OperationInstruction.d.ts +5 -5
  31. package/{build → dist/types}/instructions/SetCounterInstruction.d.ts +5 -5
  32. package/{build → dist/types}/instructions/SetInstruction.d.ts +5 -5
  33. package/{build → dist/types}/instructions/ZeroSpaceInstruction.d.ts +4 -4
  34. package/{build → dist/types}/instructions/index.d.ts +9 -9
  35. package/{build → dist/types}/macros/Building.d.ts +11 -11
  36. package/dist/types/macros/Function.d.ts +12 -0
  37. package/{build → dist/types}/macros/Math.d.ts +5 -5
  38. package/{build → dist/types}/macros/Memory.d.ts +5 -5
  39. package/{build → dist/types}/macros/Namespace.d.ts +21 -21
  40. package/{build → dist/types}/macros/Other.d.ts +5 -5
  41. package/{build → dist/types}/macros/RawValue.d.ts +5 -5
  42. package/{build → dist/types}/macros/commands/Control.d.ts +5 -5
  43. package/{build → dist/types}/macros/commands/Draw.d.ts +5 -5
  44. package/{build → dist/types}/macros/commands/DrawFlush.d.ts +5 -5
  45. package/{build → dist/types}/macros/commands/GetLink.d.ts +5 -5
  46. package/{build → dist/types}/macros/commands/Lookup.d.ts +5 -5
  47. package/{build → dist/types}/macros/commands/Print.d.ts +5 -5
  48. package/{build → dist/types}/macros/commands/PrintFlush.d.ts +5 -5
  49. package/{build → dist/types}/macros/commands/Radar.d.ts +7 -7
  50. package/{build → dist/types}/macros/commands/Sensor.d.ts +5 -5
  51. package/{build → dist/types}/macros/commands/UnitBind.d.ts +5 -5
  52. package/dist/types/macros/commands/UnitControl.d.ts +5 -0
  53. package/{build → dist/types}/macros/commands/UnitLocate.d.ts +5 -5
  54. package/{build → dist/types}/macros/commands/UnitRadar.d.ts +5 -5
  55. package/{build → dist/types}/macros/commands/Wait.d.ts +5 -5
  56. package/{build → dist/types}/macros/commands/index.d.ts +14 -14
  57. package/{build → dist/types}/macros/index.d.ts +7 -7
  58. package/{build → dist/types}/operators.d.ts +25 -25
  59. package/dist/types/types.d.ts +100 -0
  60. package/{build → dist/types}/utils.d.ts +3 -3
  61. package/{build → dist/types}/values/BaseValue.d.ts +5 -5
  62. package/{build → dist/types}/values/FunctionValue.d.ts +34 -34
  63. package/{build → dist/types}/values/LiteralValue.d.ts +12 -12
  64. package/dist/types/values/ObjectValue.d.ts +19 -0
  65. package/{build → dist/types}/values/StoreValue.d.ts +11 -11
  66. package/{build → dist/types}/values/TempValue.d.ts +12 -12
  67. package/{build → dist/types}/values/VoidValue.d.ts +13 -11
  68. package/{build → dist/types}/values/index.d.ts +6 -6
  69. package/doc/README.md +9 -0
  70. package/lib/eslib/lib.es5.d.ts +1 -1
  71. package/lib/traits.d.ts +0 -1
  72. package/package.json +17 -27
  73. package/build/Compiler.d.ts +0 -18
  74. package/build/Compiler.js +0 -100
  75. package/build/Compiler.js.map +0 -1
  76. package/build/Scope.js +0 -61
  77. package/build/Scope.js.map +0 -1
  78. package/build/bin.d.ts +0 -2
  79. package/build/bin.js +0 -61
  80. package/build/bin.js.map +0 -1
  81. package/build/handlers/BlockStatement.d.ts +0 -2
  82. package/build/handlers/BlockStatement.js +0 -14
  83. package/build/handlers/BlockStatement.js.map +0 -1
  84. package/build/handlers/CallExpression.d.ts +0 -3
  85. package/build/handlers/CallExpression.js +0 -20
  86. package/build/handlers/CallExpression.js.map +0 -1
  87. package/build/handlers/ForStatement.d.ts +0 -2
  88. package/build/handlers/ForStatement.js +0 -32
  89. package/build/handlers/ForStatement.js.map +0 -1
  90. package/build/handlers/Function.js +0 -36
  91. package/build/handlers/Function.js.map +0 -1
  92. package/build/handlers/Identifier.js +0 -8
  93. package/build/handlers/Identifier.js.map +0 -1
  94. package/build/handlers/IfStatement.d.ts +0 -2
  95. package/build/handlers/IfStatement.js +0 -25
  96. package/build/handlers/IfStatement.js.map +0 -1
  97. package/build/handlers/Literal.js +0 -18
  98. package/build/handlers/Literal.js.map +0 -1
  99. package/build/handlers/Object.js +0 -44
  100. package/build/handlers/Object.js.map +0 -1
  101. package/build/handlers/OperationExpressions.js +0 -33
  102. package/build/handlers/OperationExpressions.js.map +0 -1
  103. package/build/handlers/Program.d.ts +0 -2
  104. package/build/handlers/Program.js +0 -9
  105. package/build/handlers/Program.js.map +0 -1
  106. package/build/handlers/Statements.d.ts +0 -5
  107. package/build/handlers/Statements.js +0 -30
  108. package/build/handlers/Statements.js.map +0 -1
  109. package/build/handlers/TemplateExpression.d.ts +0 -2
  110. package/build/handlers/TemplateExpression.js +0 -18
  111. package/build/handlers/TemplateExpression.js.map +0 -1
  112. package/build/handlers/VariableDeclaration.d.ts +0 -3
  113. package/build/handlers/VariableDeclaration.js +0 -56
  114. package/build/handlers/VariableDeclaration.js.map +0 -1
  115. package/build/handlers/WhileStatement.d.ts +0 -2
  116. package/build/handlers/WhileStatement.js +0 -23
  117. package/build/handlers/WhileStatement.js.map +0 -1
  118. package/build/handlers/index.js +0 -31
  119. package/build/handlers/index.js.map +0 -1
  120. package/build/index.d.ts +0 -1
  121. package/build/index.js +0 -8
  122. package/build/index.js.map +0 -1
  123. package/build/initScope.js +0 -40
  124. package/build/initScope.js.map +0 -1
  125. package/build/instructions/AddressResolver.js +0 -31
  126. package/build/instructions/AddressResolver.js.map +0 -1
  127. package/build/instructions/ControlInstructions.js +0 -23
  128. package/build/instructions/ControlInstructions.js.map +0 -1
  129. package/build/instructions/EndInstruction.js +0 -11
  130. package/build/instructions/EndInstruction.js.map +0 -1
  131. package/build/instructions/InstructionBase.js +0 -21
  132. package/build/instructions/InstructionBase.js.map +0 -1
  133. package/build/instructions/JumpInstruction.js +0 -22
  134. package/build/instructions/JumpInstruction.js.map +0 -1
  135. package/build/instructions/OperationInstruction.js +0 -11
  136. package/build/instructions/OperationInstruction.js.map +0 -1
  137. package/build/instructions/SetCounterInstruction.js +0 -11
  138. package/build/instructions/SetCounterInstruction.js.map +0 -1
  139. package/build/instructions/SetInstruction.js +0 -11
  140. package/build/instructions/SetInstruction.js.map +0 -1
  141. package/build/instructions/ZeroSpaceInstruction.js +0 -11
  142. package/build/instructions/ZeroSpaceInstruction.js.map +0 -1
  143. package/build/instructions/index.js +0 -26
  144. package/build/instructions/index.js.map +0 -1
  145. package/build/macros/Building.js +0 -81
  146. package/build/macros/Building.js.map +0 -1
  147. package/build/macros/Function.d.ts +0 -12
  148. package/build/macros/Function.js +0 -20
  149. package/build/macros/Function.js.map +0 -1
  150. package/build/macros/Math.js +0 -57
  151. package/build/macros/Math.js.map +0 -1
  152. package/build/macros/Memory.js +0 -61
  153. package/build/macros/Memory.js.map +0 -1
  154. package/build/macros/Namespace.js +0 -98
  155. package/build/macros/Namespace.js.map +0 -1
  156. package/build/macros/Other.js +0 -20
  157. package/build/macros/Other.js.map +0 -1
  158. package/build/macros/RawValue.js +0 -16
  159. package/build/macros/RawValue.js.map +0 -1
  160. package/build/macros/commands/Control.js +0 -25
  161. package/build/macros/commands/Control.js.map +0 -1
  162. package/build/macros/commands/Draw.js +0 -39
  163. package/build/macros/commands/Draw.js.map +0 -1
  164. package/build/macros/commands/DrawFlush.js +0 -17
  165. package/build/macros/commands/DrawFlush.js.map +0 -1
  166. package/build/macros/commands/GetLink.js +0 -21
  167. package/build/macros/commands/GetLink.js.map +0 -1
  168. package/build/macros/commands/Lookup.js +0 -24
  169. package/build/macros/commands/Lookup.js.map +0 -1
  170. package/build/macros/commands/Print.js +0 -14
  171. package/build/macros/commands/Print.js.map +0 -1
  172. package/build/macros/commands/PrintFlush.js +0 -17
  173. package/build/macros/commands/PrintFlush.js.map +0 -1
  174. package/build/macros/commands/Radar.js +0 -61
  175. package/build/macros/commands/Radar.js.map +0 -1
  176. package/build/macros/commands/Sensor.js +0 -20
  177. package/build/macros/commands/Sensor.js.map +0 -1
  178. package/build/macros/commands/UnitBind.js +0 -17
  179. package/build/macros/commands/UnitBind.js.map +0 -1
  180. package/build/macros/commands/UnitControl.d.ts +0 -5
  181. package/build/macros/commands/UnitControl.js +0 -68
  182. package/build/macros/commands/UnitControl.js.map +0 -1
  183. package/build/macros/commands/UnitLocate.js +0 -55
  184. package/build/macros/commands/UnitLocate.js.map +0 -1
  185. package/build/macros/commands/UnitRadar.js +0 -41
  186. package/build/macros/commands/UnitRadar.js.map +0 -1
  187. package/build/macros/commands/Wait.js +0 -18
  188. package/build/macros/commands/Wait.js.map +0 -1
  189. package/build/macros/commands/index.js +0 -33
  190. package/build/macros/commands/index.js.map +0 -1
  191. package/build/macros/index.js +0 -40
  192. package/build/macros/index.js.map +0 -1
  193. package/build/operators.js +0 -102
  194. package/build/operators.js.map +0 -1
  195. package/build/types.d.ts +0 -49
  196. package/build/types.js +0 -28
  197. package/build/types.js.map +0 -1
  198. package/build/utils.js +0 -13
  199. package/build/utils.js.map +0 -1
  200. package/build/values/BaseValue.js +0 -112
  201. package/build/values/BaseValue.js.map +0 -1
  202. package/build/values/FunctionValue.js +0 -104
  203. package/build/values/FunctionValue.js.map +0 -1
  204. package/build/values/LiteralValue.js +0 -88
  205. package/build/values/LiteralValue.js.map +0 -1
  206. package/build/values/ObjectValue.d.ts +0 -17
  207. package/build/values/ObjectValue.js +0 -50
  208. package/build/values/ObjectValue.js.map +0 -1
  209. package/build/values/StoreValue.js +0 -31
  210. package/build/values/StoreValue.js.map +0 -1
  211. package/build/values/TempValue.js +0 -67
  212. package/build/values/TempValue.js.map +0 -1
  213. package/build/values/VoidValue.js +0 -31
  214. package/build/values/VoidValue.js.map +0 -1
  215. package/build/values/index.js +0 -23
  216. package/build/values/index.js.map +0 -1
  217. package/dist/mlogjs.es.js +0 -6366
  218. package/dist/mlogjs.umd.js +0 -8
package/build/Compiler.js DELETED
@@ -1,100 +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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.Compiler = void 0;
27
- const acorn_1 = require("acorn");
28
- const handlers = __importStar(require("./handlers"));
29
- const initScope_1 = require("./initScope");
30
- const instructions_1 = require("./instructions");
31
- const Scope_1 = require("./Scope");
32
- class Compiler {
33
- constructor(stackName) {
34
- this.handlers = handlers;
35
- this.usingStack = !!stackName;
36
- this.stackName = stackName;
37
- }
38
- compile(script) {
39
- let output;
40
- try {
41
- const program = this.parse(script);
42
- const scope = new Scope_1.Scope({});
43
- (0, initScope_1.initScope)(scope);
44
- const valueInst = this.handle(scope, program);
45
- valueInst[1].push(new instructions_1.EndInstruction(), ...scope.inst);
46
- this.resolve(valueInst);
47
- output = this.serialize(valueInst) + "\n";
48
- }
49
- catch (error) {
50
- return [null, error, error?.nodeStack ?? []];
51
- }
52
- return [output, null, []];
53
- }
54
- resolve(valueInst) {
55
- let i = 0;
56
- for (const inst of valueInst[1]) {
57
- inst.resolve(i);
58
- if (!inst.hidden)
59
- i++;
60
- }
61
- }
62
- serialize(resLines) {
63
- const [_, inst] = resLines;
64
- return inst.filter(l => !l.hidden).join("\n");
65
- }
66
- parse(script) {
67
- return (0, acorn_1.parse)(script, {
68
- locations: true,
69
- ecmaVersion: "latest",
70
- });
71
- }
72
- handle(scope, node) {
73
- try {
74
- const handler = this.handlers[node.type];
75
- if (!handler)
76
- throw Error("Missing handler for " + node.type);
77
- return handler(this, scope, node, null);
78
- }
79
- catch (error) {
80
- error.nodeStack ??= [];
81
- error.nodeStack.push(node);
82
- throw error;
83
- }
84
- }
85
- handleEval(scope, node) {
86
- const [res, inst] = this.handle(scope, node);
87
- const [evaluated, evaluatedLines] = res.eval(scope);
88
- return [evaluated, [...inst, ...evaluatedLines]];
89
- }
90
- handleMany(scope, nodes, handler = this.handle.bind(this)) {
91
- const lines = [];
92
- for (const node of nodes) {
93
- const [_, nodeLines] = handler(scope, node);
94
- lines.push(...nodeLines);
95
- }
96
- return [null, lines];
97
- }
98
- }
99
- exports.Compiler = Compiler;
100
- //# sourceMappingURL=Compiler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Compiler.js","sourceRoot":"","sources":["../src/Compiler.ts"],"names":[],"mappings":"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"}
package/build/Scope.js DELETED
@@ -1,61 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Scope = void 0;
4
- const values_1 = require("./values");
5
- class Scope {
6
- constructor(values, parent = null, stacked = false, ntemp = 0, name = "", inst = []) {
7
- this.stacked = false;
8
- this.ntemp = 0;
9
- this.data = values;
10
- this.parent = parent;
11
- this.stacked = stacked;
12
- this.ntemp = ntemp;
13
- this.name = name;
14
- this.inst = inst;
15
- }
16
- copy() {
17
- const scope = new Scope({ ...this.data }, this.parent, this.stacked, this.ntemp, this.name, this.inst);
18
- scope.break = this.break;
19
- scope.continue = this.continue;
20
- scope.function = this.function;
21
- return scope;
22
- }
23
- createScope() {
24
- const scope = this.copy();
25
- scope.data = {};
26
- scope.parent = this;
27
- return scope;
28
- }
29
- createFunction(name, stacked) {
30
- return new Scope({}, this, stacked ?? this.stacked, 0, name, this.inst);
31
- }
32
- has(name) {
33
- if (name in this.data)
34
- return true;
35
- if (this.parent)
36
- return this.parent.has(name);
37
- return false;
38
- }
39
- get(name) {
40
- const value = this.data[name];
41
- if (value)
42
- return value;
43
- if (this.parent)
44
- return this.parent.get(name);
45
- throw Error(`${name} is not declared.`);
46
- }
47
- set(name, value) {
48
- if (name in this.data)
49
- throw Error(`${name} is already declared.`);
50
- return this.hardSet(name, value);
51
- }
52
- hardSet(name, value) {
53
- this.data[name] = value;
54
- return value;
55
- }
56
- make(name, storeName) {
57
- return this.set(name, this.stacked ? null : new values_1.StoreValue(this, storeName));
58
- }
59
- }
60
- exports.Scope = Scope;
61
- //# sourceMappingURL=Scope.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Scope.js","sourceRoot":"","sources":["../src/Scope.ts"],"names":[],"mappings":"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"}
package/build/bin.d.ts DELETED
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
package/build/bin.js DELETED
@@ -1,61 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- const fs_1 = require("fs");
8
- const helpers_1 = require("yargs/helpers");
9
- const _1 = require(".");
10
- const cli_highlight_1 = require("cli-highlight");
11
- const yargs_1 = __importDefault(require("yargs"));
12
- const chalk_1 = __importDefault(require("chalk"));
13
- const path_1 = require("path");
14
- (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
15
- .command("$0 [path] [out]", "compiles your Javascript file to MLog", yargs => {
16
- return yargs
17
- .positional("path", {
18
- describe: "path of the file to compile",
19
- })
20
- .positional("out", {
21
- describe: "path of the output file",
22
- });
23
- }, argv => {
24
- const path = argv.path;
25
- const out = argv.out;
26
- if (!path)
27
- return console.log("missing required path argument");
28
- if (!out)
29
- return console.log("missing output path");
30
- if (!(0, fs_1.existsSync)(path))
31
- return console.log(`file at ${path} does not exist`);
32
- const code = (0, fs_1.readFileSync)(path, "utf8");
33
- const [output, error, [node]] = (0, _1.compile)(code);
34
- if (error) {
35
- // @ts-ignore
36
- let start = error?.loc;
37
- let end = start;
38
- if (node) {
39
- start = node.loc.start;
40
- end = node.loc.end;
41
- }
42
- const lines = code.split("\n");
43
- console.log(chalk_1.default.cyanBright([(0, path_1.resolve)(path), start.line, start.column].join(":")));
44
- for (let i = Math.max(start.line - 3, 0); i < Math.min(end.line + 2, lines.length); i++) {
45
- const n = i + 1;
46
- const head = chalk_1.default.gray((n + " | ").padStart(6, " "));
47
- console.log(head + (0, cli_highlight_1.highlight)(lines[i], { language: "js" }));
48
- if (n === start.line) {
49
- console.log(chalk_1.default.red(" ".repeat(6 + start.column) + "^ " + error.message));
50
- }
51
- }
52
- return;
53
- }
54
- (0, fs_1.writeFileSync)(out, output);
55
- console.log(`Success: Compiled ${path}. Your compiled code is at ${out}.`);
56
- })
57
- .help()
58
- .scriptName("mlogjs")
59
- .demandCommand()
60
- .parse();
61
- //# sourceMappingURL=bin.js.map
package/build/bin.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import { THandler } from "../types";
2
- export declare const BlockStatement: THandler;
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BlockStatement = void 0;
4
- const BlockStatement = (c, scope, node) => {
5
- const [value, insts] = c.handleMany(scope.createScope(), node.body);
6
- // const cleanInst = []
7
- // for (const inst of insts) {
8
- // if (inst instanceof BreakInstruction || inst instanceof ContinueInstruction || inst instanceof ReturnInstruction || inst instanceof SetCounterInstruction) break
9
- // cleanInst.push(inst)
10
- // }
11
- return [value, insts];
12
- };
13
- exports.BlockStatement = BlockStatement;
14
- //# sourceMappingURL=BlockStatement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BlockStatement.js","sourceRoot":"","sources":["../../src/handlers/BlockStatement.ts"],"names":[],"mappings":";;;AAEO,MAAM,cAAc,GAAa,CAAC,CAAC,EAAE,KAAK,EAAE,IAAuB,EAAE,EAAE;IAC5E,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACpE,uBAAuB;IACvB,8BAA8B;IAC9B,uKAAuK;IACvK,2BAA2B;IAC3B,IAAI;IACJ,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACxB,CAAC,CAAC;AARW,QAAA,cAAc,kBAQzB"}
@@ -1,3 +0,0 @@
1
- import { THandler } from "../types";
2
- export declare const CallExpression: THandler;
3
- export declare const NewExpression: THandler;
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NewExpression = exports.CallExpression = void 0;
4
- const CallExpression = (c, scope, node) => {
5
- const inst = [];
6
- const args = node.arguments.map(node => {
7
- // TODO: this might be why t0 did not increment
8
- const [v, i] = c.handleEval(scope, node);
9
- inst.push(...i);
10
- return v;
11
- });
12
- const [callee, calleeInst] = c.handleEval(scope, node.callee);
13
- inst.push(...calleeInst);
14
- const [callValue, callInst] = callee.call(scope, args);
15
- inst.push(...callInst);
16
- return [callValue, inst];
17
- };
18
- exports.CallExpression = CallExpression;
19
- exports.NewExpression = exports.CallExpression;
20
- //# sourceMappingURL=CallExpression.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CallExpression.js","sourceRoot":"","sources":["../../src/handlers/CallExpression.ts"],"names":[],"mappings":";;;AAEO,MAAM,cAAc,GAAa,CAAC,CAAC,EAAE,KAAK,EAAE,IAAuB,EAAE,EAAE;IAC5E,MAAM,IAAI,GAAmB,EAAE,CAAC;IAEhC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACrC,+CAA+C;QAC/C,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAChB,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9D,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;IAEzB,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;IAEvB,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC3B,CAAC,CAAC;AAjBW,QAAA,cAAc,kBAiBzB;AAEW,QAAA,aAAa,GAAG,sBAAc,CAAC"}
@@ -1,2 +0,0 @@
1
- import { THandler } from "../types";
2
- export declare const ForStatement: THandler;
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ForStatement = void 0;
4
- const instructions_1 = require("../instructions");
5
- const values_1 = require("../values");
6
- const ForStatement = (c, scope, node) => {
7
- scope = scope.createScope();
8
- const initInst = node.init ? c.handle(scope, node.init)[1] : [];
9
- const [test, testLines] = node.test
10
- ? c.handleEval(scope, node.test)
11
- : [new values_1.LiteralValue(scope, 1), []];
12
- const updateLines = node.update ? c.handle(scope, node.update)[1] : [];
13
- const startLoopAddr = new values_1.LiteralValue(scope, null);
14
- const endLoopAddr = new values_1.LiteralValue(scope, null);
15
- const startLoopLine = new instructions_1.AddressResolver(startLoopAddr).bindContinue(scope);
16
- const endLoopLine = new instructions_1.AddressResolver(endLoopAddr).bindBreak(scope);
17
- return [
18
- null,
19
- [
20
- ...initInst,
21
- startLoopLine,
22
- ...testLines,
23
- new instructions_1.JumpInstruction(endLoopAddr, instructions_1.EJumpKind.Equal, test, new values_1.LiteralValue(scope, 0)),
24
- ...c.handle(scope, node.body)[1],
25
- ...updateLines,
26
- new instructions_1.JumpInstruction(startLoopAddr, instructions_1.EJumpKind.Always),
27
- endLoopLine,
28
- ],
29
- ];
30
- };
31
- exports.ForStatement = ForStatement;
32
- //# sourceMappingURL=ForStatement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ForStatement.js","sourceRoot":"","sources":["../../src/handlers/ForStatement.ts"],"names":[],"mappings":";;;AAAA,kDAA8E;AAE9E,sCAAyC;AAElC,MAAM,YAAY,GAAa,CAAC,CAAC,EAAE,KAAK,EAAE,IAAqB,EAAE,EAAE;IACxE,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,IAAI;QACjC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;QAChC,CAAC,CAAC,CAAC,IAAI,qBAAY,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,MAAM,aAAa,GAAG,IAAI,qBAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,IAAI,qBAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAElD,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,OAAO;QACL,IAAI;QACJ;YACE,GAAG,QAAQ;YACX,aAAa;YACb,GAAG,SAAS;YACZ,IAAI,8BAAe,CACjB,WAAW,EACX,wBAAS,CAAC,KAAK,EACf,IAAI,EACJ,IAAI,qBAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAC3B;YACD,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,GAAG,WAAW;YACd,IAAI,8BAAe,CAAC,aAAa,EAAE,wBAAS,CAAC,MAAM,CAAC;YACpD,WAAW;SACZ;KACF,CAAC;AACJ,CAAC,CAAC;AAhCW,QAAA,YAAY,gBAgCvB"}
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FunctionExpression = exports.FunctionDeclaration = exports.ArrowFunctionExpression = void 0;
4
- const utils_1 = require("../utils");
5
- const FunctionValue_1 = require("../values/FunctionValue");
6
- const ArrowFunctionExpression = (c, scope, node) => {
7
- const name = (0, utils_1.nodeName)(node);
8
- scope = scope.createFunction(name);
9
- let { params, body } = node;
10
- if (node.expression) {
11
- body = {
12
- type: "BlockStatement",
13
- body: [{ type: "ReturnStatement", argument: body }],
14
- };
15
- }
16
- const paramNames = [];
17
- const paramStores = [];
18
- for (const id of params) {
19
- paramNames.push(id.name);
20
- paramStores.push(scope.make(id.name, (0, utils_1.nodeName)(id)));
21
- }
22
- return [
23
- new FunctionValue_1.FunctionValue(scope, name, paramNames, paramStores, body, c),
24
- [],
25
- ];
26
- };
27
- exports.ArrowFunctionExpression = ArrowFunctionExpression;
28
- const FunctionDeclaration = (c, scope, node) => {
29
- return [
30
- scope.set(node.id.name, (0, exports.ArrowFunctionExpression)(c, scope, node, null)[0]),
31
- [],
32
- ];
33
- };
34
- exports.FunctionDeclaration = FunctionDeclaration;
35
- exports.FunctionExpression = exports.ArrowFunctionExpression;
36
- //# sourceMappingURL=Function.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Function.js","sourceRoot":"","sources":["../../src/handlers/Function.ts"],"names":[],"mappings":";;;AAEA,oCAAoC;AAEpC,2DAAwD;AAEjD,MAAM,uBAAuB,GAAa,CAC/C,CAAC,EACD,KAAK,EACL,IAAgC,EAChC,EAAE;IACF,MAAM,IAAI,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAC5B,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAE5B,IAAI,IAAI,CAAC,UAAU,EAAE;QACnB,IAAI,GAAG;YACL,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAqB,EAAE,CAAC;SACrE,CAAC;KACH;IAED,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,MAAM,WAAW,GAAG,EAAE,CAAC;IAEvB,KAAK,MAAM,EAAE,IAAI,MAAyB,EAAE;QAC1C,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACzB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KACrD;IAED,OAAO;QACL,IAAI,6BAAa,CACf,KAAK,EACL,IAAI,EACJ,UAAU,EACV,WAAW,EACX,IAAyB,EACzB,CAAC,CACF;QACD,EAAE;KACH,CAAC;AACJ,CAAC,CAAC;AAnCW,QAAA,uBAAuB,2BAmClC;AAEK,MAAM,mBAAmB,GAAa,CAC3C,CAAC,EACD,KAAK,EACL,IAA4B,EAC5B,EAAE;IACF,OAAO;QACL,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,IAAA,+BAAuB,EAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,EAAE;KACH,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,mBAAmB,uBAS9B;AAEW,QAAA,kBAAkB,GAAa,+BAAuB,CAAC"}
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Identifier = void 0;
4
- const Identifier = (c, scope, node) => {
5
- return [scope.get(node.name), []];
6
- };
7
- exports.Identifier = Identifier;
8
- //# sourceMappingURL=Identifier.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Identifier.js","sourceRoot":"","sources":["../../src/handlers/Identifier.ts"],"names":[],"mappings":";;;AAEO,MAAM,UAAU,GAAa,CAAC,CAAC,EAAE,KAAK,EAAE,IAAmB,EAAE,EAAE;IACpE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB"}
@@ -1,2 +0,0 @@
1
- import { THandler } from "../types";
2
- export declare const IfStatement: THandler;
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IfStatement = void 0;
4
- const instructions_1 = require("../instructions");
5
- const instructions_2 = require("../instructions");
6
- const values_1 = require("../values");
7
- const IfStatement = (c, scope, node) => {
8
- const inst = [];
9
- const [test, testInst] = c.handleEval(scope, node.test);
10
- if (test instanceof values_1.LiteralValue) {
11
- if (test.data)
12
- inst.push(...c.handle(scope, node.consequent)[1]);
13
- else if (node.alternate)
14
- inst.push(...c.handle(scope, node.alternate)[1]);
15
- return [null, inst];
16
- }
17
- const endIfAddr = new values_1.LiteralValue(scope, null);
18
- inst.push(...testInst, new instructions_1.JumpInstruction(endIfAddr, instructions_2.EJumpKind.Equal, test, new values_1.LiteralValue(scope, 0)), ...c.handle(scope, node.consequent)[1], new instructions_1.AddressResolver(endIfAddr));
19
- const endElseAddr = new values_1.LiteralValue(scope, null);
20
- if (node.alternate)
21
- inst.push(new instructions_1.JumpInstruction(endElseAddr, instructions_2.EJumpKind.Always), new instructions_1.AddressResolver(endIfAddr), ...c.handle(scope, node.alternate)[1], new instructions_1.AddressResolver(endElseAddr));
22
- return [null, inst];
23
- };
24
- exports.IfStatement = IfStatement;
25
- //# sourceMappingURL=IfStatement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IfStatement.js","sourceRoot":"","sources":["../../src/handlers/IfStatement.ts"],"names":[],"mappings":";;;AAAA,kDAAmE;AACnE,kDAA4C;AAE5C,sCAAyC;AAElC,MAAM,WAAW,GAAa,CAAC,CAAC,EAAE,KAAK,EAAE,IAAoB,EAAE,EAAE;IACtE,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAExD,IAAI,IAAI,YAAY,qBAAY,EAAE;QAChC,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5D,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACrB;IAED,MAAM,SAAS,GAAG,IAAI,qBAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC,IAAI,CACP,GAAG,QAAQ,EACX,IAAI,8BAAe,CACjB,SAAS,EACT,wBAAS,CAAC,KAAK,EACf,IAAI,EACJ,IAAI,qBAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAC3B,EACD,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EACtC,IAAI,8BAAe,CAAC,SAAS,CAAC,CAC/B,CAAC;IACF,MAAM,WAAW,GAAG,IAAI,qBAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,IAAI,CAAC,SAAS;QAChB,IAAI,CAAC,IAAI,CACP,IAAI,8BAAe,CAAC,WAAW,EAAE,wBAAS,CAAC,MAAM,CAAC,EAClD,IAAI,8BAAe,CAAC,SAAS,CAAC,EAC9B,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EACrC,IAAI,8BAAe,CAAC,WAAW,CAAC,CACjC,CAAC;IACJ,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACtB,CAAC,CAAC;AA/BW,QAAA,WAAW,eA+BtB"}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Literal = void 0;
4
- const values_1 = require("../values");
5
- const Literal = (c, scope, node) => {
6
- const { value } = node;
7
- if (value === null ||
8
- typeof value === "string" ||
9
- typeof value === "number") {
10
- return [new values_1.LiteralValue(scope, value), []];
11
- }
12
- if (typeof value === "boolean") {
13
- return [new values_1.LiteralValue(scope, +value), []];
14
- }
15
- throw Error("Cannot create literal " + typeof value);
16
- };
17
- exports.Literal = Literal;
18
- //# sourceMappingURL=Literal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Literal.js","sourceRoot":"","sources":["../../src/handlers/Literal.ts"],"names":[],"mappings":";;;AACA,sCAAyC;AAElC,MAAM,OAAO,GAAa,CAAC,CAAC,EAAE,KAAK,EAAE,IAAgB,EAAE,EAAE;IAC9D,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,IACE,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ,EACzB;QACA,OAAO,CAAC,IAAI,qBAAY,CAAC,KAAK,EAAE,KAAiB,CAAC,EAAE,EAAE,CAAC,CAAC;KACzD;IACD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;QAC9B,OAAO,CAAC,IAAI,qBAAY,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;KAC9C;IACD,MAAM,KAAK,CAAC,wBAAwB,GAAG,OAAO,KAAK,CAAC,CAAC;AACvD,CAAC,CAAC;AAbW,QAAA,OAAO,WAalB"}
@@ -1,44 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MemberExpression = exports.ArrayExpression = exports.ObjectExpression = void 0;
4
- const values_1 = require("../values");
5
- const ObjectExpression = (c, scope, node) => {
6
- const data = {};
7
- const inst = [];
8
- for (const prop of node.properties) {
9
- if (prop.computed)
10
- throw new Error("Cannot handle computed property.");
11
- const { key, value } = prop;
12
- let index;
13
- if (key.type === "Identifier")
14
- index = key.name;
15
- else if (key.type === "Literal")
16
- index = "" + key.value;
17
- const [member, memberInst] = c.handleEval(scope, value);
18
- data[index] = member;
19
- inst.push(...memberInst);
20
- }
21
- return [new values_1.ObjectValue(scope, data), inst];
22
- };
23
- exports.ObjectExpression = ObjectExpression;
24
- const ArrayExpression = (c, scope, node) => {
25
- const data = {};
26
- const inst = [];
27
- node.elements.forEach((element, i) => {
28
- const [value, valueInst] = c.handleEval(scope, element);
29
- data[i] = value;
30
- inst.push(...valueInst);
31
- });
32
- return [new values_1.ObjectValue(scope, data), inst];
33
- };
34
- exports.ArrayExpression = ArrayExpression;
35
- const MemberExpression = (c, scope, node) => {
36
- const [obj, objInst] = c.handleEval(scope, node.object);
37
- const [prop, propInst] = node.computed
38
- ? c.handleEval(scope, node.property)
39
- : [new values_1.LiteralValue(scope, node.property.name), []];
40
- const [got, gotInst] = obj.get(scope, prop);
41
- return [got, [...objInst, ...propInst, ...gotInst]];
42
- };
43
- exports.MemberExpression = MemberExpression;
44
- //# sourceMappingURL=Object.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Object.js","sourceRoot":"","sources":["../../src/handlers/Object.ts"],"names":[],"mappings":";;;AAEA,sCAAsD;AAE/C,MAAM,gBAAgB,GAAa,CACxC,CAAC,EACD,KAAK,EACL,IAAyB,EACzB,EAAE;IACF,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAA2B,EAAE;QACnD,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACvE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAC5B,IAAI,KAAa,CAAC;QAClB,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY;YAAE,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC;aAC3C,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;YAAE,KAAK,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;QACxD,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;KAC1B;IACD,OAAO,CAAC,IAAI,oBAAW,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC,CAAC;AAlBW,QAAA,gBAAgB,oBAkB3B;AAEK,MAAM,eAAe,GAAa,CACvC,CAAC,EACD,KAAK,EACL,IAAwB,EACxB,EAAE;IACF,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,oBAAW,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC,CAAC;AAbW,QAAA,eAAe,mBAa1B;AAEK,MAAM,gBAAgB,GAAa,CACxC,CAAC,EACD,KAAK,EACL,IAAyB,EACzB,EAAE;IACF,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAExD,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ;QACpC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;QACpC,CAAC,CAAC,CAAC,IAAI,qBAAY,CAAC,KAAK,EAAG,IAAI,CAAC,QAA0B,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAEzE,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC;AAbW,QAAA,gBAAgB,oBAa3B"}
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UpdateExpression = exports.UnaryExpression = exports.AssignmentExpression = exports.LogicalExpression = exports.BinaryExpression = exports.LRExpression = void 0;
4
- const LRExpression = (c, scope, node) => {
5
- const [left, leftInst] = c.handleEval(scope, node.left);
6
- const [right, rightInst] = c.handleEval(scope, node.right);
7
- const [op, opInst] = left[node.operator](scope, right);
8
- return [op, [...leftInst, ...rightInst, ...opInst]];
9
- };
10
- exports.LRExpression = LRExpression;
11
- exports.BinaryExpression = exports.LRExpression;
12
- exports.LogicalExpression = exports.LRExpression;
13
- const AssignmentExpression = (c, scope, node) => {
14
- const [left, leftInst] = c.handle(scope, node.left);
15
- const [right, rightInst] = c.handleEval(scope, node.right);
16
- const [op, opInst] = left[node.operator](scope, right);
17
- return [op, [...leftInst, ...rightInst, ...opInst]];
18
- };
19
- exports.AssignmentExpression = AssignmentExpression;
20
- const UnaryExpression = (c, scope, { argument, operator }) => {
21
- const [arg, argInst] = c.handleEval(scope, argument);
22
- const operatorId = operator == "+" || operator == "-" ? "u" + operator : operator;
23
- const [op, opInst] = arg[operatorId](scope);
24
- return [op, [...argInst, ...opInst]];
25
- };
26
- exports.UnaryExpression = UnaryExpression;
27
- const UpdateExpression = (c, scope, { argument, operator, prefix }) => {
28
- const [arg, argInst] = c.handle(scope, argument);
29
- const [op, opInst] = arg[operator](scope, prefix);
30
- return [op, [...argInst, ...opInst]];
31
- };
32
- exports.UpdateExpression = UpdateExpression;
33
- //# sourceMappingURL=OperationExpressions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OperationExpressions.js","sourceRoot":"","sources":["../../src/handlers/OperationExpressions.ts"],"names":[],"mappings":";;;AAUO,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,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,oBAAoB,wBAa/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,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAEjE,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;AAXW,QAAA,eAAe,mBAW1B;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,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAClD,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;AACvC,CAAC,CAAC;AARW,QAAA,gBAAgB,oBAQ3B"}
@@ -1,2 +0,0 @@
1
- import { THandler } from "../types";
2
- export declare const Program: THandler;
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Program = void 0;
4
- const Scope_1 = require("../Scope");
5
- const Program = (c, scope, node) => {
6
- return c.handleMany(scope ?? new Scope_1.Scope({}), node.body);
7
- };
8
- exports.Program = Program;
9
- //# sourceMappingURL=Program.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Program.js","sourceRoot":"","sources":["../../src/handlers/Program.ts"],"names":[],"mappings":";;;AAAA,oCAAiC;AAG1B,MAAM,OAAO,GAAa,CAAC,CAAC,EAAE,KAAK,EAAE,IAAgB,EAAE,EAAE;IAC9D,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,5 +0,0 @@
1
- import { THandler } from "../types";
2
- export declare const ExpressionStatement: THandler;
3
- export declare const BreakStatement: THandler;
4
- export declare const ContinueStatement: THandler;
5
- export declare const ReturnStatement: THandler;
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ReturnStatement = exports.ContinueStatement = exports.BreakStatement = exports.ExpressionStatement = void 0;
4
- const instructions_1 = require("../instructions");
5
- const values_1 = require("../values");
6
- const ExpressionStatement = (c, scope, node) => {
7
- return c.handle(scope, node.expression);
8
- };
9
- exports.ExpressionStatement = ExpressionStatement;
10
- const BreakStatement = (_, scope) => {
11
- const addr = new values_1.LiteralValue(scope, null);
12
- scope.break.bind(addr);
13
- return [null, [new instructions_1.BreakInstruction(addr)]];
14
- };
15
- exports.BreakStatement = BreakStatement;
16
- const ContinueStatement = (_, scope) => {
17
- const addr = new values_1.LiteralValue(scope, null);
18
- scope.continue.bind(addr);
19
- return [null, [new instructions_1.ContinueInstruction(addr)]];
20
- };
21
- exports.ContinueStatement = ContinueStatement;
22
- const ReturnStatement = (c, scope, node) => {
23
- const [arg, argInst] = node.argument
24
- ? c.handle(scope, node.argument)
25
- : [null, []];
26
- const [ret, retInst] = scope.function.return(scope, arg);
27
- return [ret, [...argInst, ...retInst]];
28
- };
29
- exports.ReturnStatement = ReturnStatement;
30
- //# sourceMappingURL=Statements.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Statements.js","sourceRoot":"","sources":["../../src/handlers/Statements.ts"],"names":[],"mappings":";;;AAAA,kDAAwE;AAExE,sCAAyC;AAElC,MAAM,mBAAmB,GAAa,CAC3C,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,GAAa,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;IACnD,MAAM,IAAI,GAAG,IAAI,qBAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3C,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,GAAa,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;IACtD,MAAM,IAAI,GAAG,IAAI,qBAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3C,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,GAAa,CACvC,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,2 +0,0 @@
1
- import { THandler } from "../types";
2
- export declare const TemplateLiteral: THandler;