mlogjs 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +2 -2
  3. package/build/Compiler.js +104 -99
  4. package/build/Compiler.js.map +1 -1
  5. package/build/CompilerError.js +11 -0
  6. package/build/CompilerError.js.map +1 -0
  7. package/build/Scope.js +70 -60
  8. package/build/Scope.js.map +1 -1
  9. package/build/bin.js +74 -60
  10. package/build/bin.js.map +1 -1
  11. package/build/handlers/BlockStatement.js +13 -13
  12. package/build/handlers/BlockStatement.js.map +1 -1
  13. package/build/handlers/CallExpression.js +19 -19
  14. package/build/handlers/CallExpression.js.map +1 -1
  15. package/build/handlers/File.js +9 -0
  16. package/build/handlers/File.js.map +1 -0
  17. package/build/handlers/ForStatement.js +31 -31
  18. package/build/handlers/ForStatement.js.map +1 -1
  19. package/build/handlers/Function.js +46 -35
  20. package/build/handlers/Function.js.map +1 -1
  21. package/build/handlers/Identifier.js +7 -7
  22. package/build/handlers/IfStatement.js +24 -24
  23. package/build/handlers/IfStatement.js.map +1 -1
  24. package/build/handlers/Literal.js +14 -17
  25. package/build/handlers/Literal.js.map +1 -1
  26. package/build/handlers/Object.js +54 -43
  27. package/build/handlers/Object.js.map +1 -1
  28. package/build/handlers/OperationExpressions.js +37 -32
  29. package/build/handlers/OperationExpressions.js.map +1 -1
  30. package/build/handlers/Program.js +8 -8
  31. package/build/handlers/Program.js.map +1 -1
  32. package/build/handlers/Statements.js +29 -29
  33. package/build/handlers/Statements.js.map +1 -1
  34. package/build/handlers/TemplateExpression.js +17 -17
  35. package/build/handlers/TemplateExpression.js.map +1 -1
  36. package/build/handlers/VariableDeclaration.js +71 -55
  37. package/build/handlers/VariableDeclaration.js.map +1 -1
  38. package/build/handlers/WhileStatement.js +22 -22
  39. package/build/handlers/WhileStatement.js.map +1 -1
  40. package/build/handlers/index.js +31 -30
  41. package/build/handlers/index.js.map +1 -1
  42. package/build/index.js +7 -7
  43. package/build/index.js.map +1 -1
  44. package/build/initScope.js +39 -39
  45. package/build/instructions/AddressResolver.js +30 -30
  46. package/build/instructions/ControlInstructions.js +22 -22
  47. package/build/instructions/EndInstruction.js +10 -10
  48. package/build/instructions/InstructionBase.js +20 -20
  49. package/build/instructions/InstructionBase.js.map +1 -1
  50. package/build/instructions/JumpInstruction.js +21 -21
  51. package/build/instructions/JumpInstruction.js.map +1 -1
  52. package/build/instructions/OperationInstruction.js +10 -10
  53. package/build/instructions/OperationInstruction.js.map +1 -1
  54. package/build/instructions/SetCounterInstruction.js +10 -10
  55. package/build/instructions/SetInstruction.js +10 -10
  56. package/build/instructions/ZeroSpaceInstruction.js +10 -10
  57. package/build/instructions/index.js +25 -25
  58. package/build/macros/Building.js +88 -80
  59. package/build/macros/Building.js.map +1 -1
  60. package/build/macros/Function.js +19 -19
  61. package/build/macros/Function.js.map +1 -1
  62. package/build/macros/Math.js +61 -56
  63. package/build/macros/Math.js.map +1 -1
  64. package/build/macros/Memory.js +62 -60
  65. package/build/macros/Memory.js.map +1 -1
  66. package/build/macros/Namespace.js +110 -97
  67. package/build/macros/Namespace.js.map +1 -1
  68. package/build/macros/Other.js +20 -19
  69. package/build/macros/Other.js.map +1 -1
  70. package/build/macros/RawValue.js +16 -15
  71. package/build/macros/RawValue.js.map +1 -1
  72. package/build/macros/commands/Control.js +25 -24
  73. package/build/macros/commands/Control.js.map +1 -1
  74. package/build/macros/commands/Draw.js +39 -38
  75. package/build/macros/commands/Draw.js.map +1 -1
  76. package/build/macros/commands/DrawFlush.js +17 -16
  77. package/build/macros/commands/DrawFlush.js.map +1 -1
  78. package/build/macros/commands/GetLink.js +24 -20
  79. package/build/macros/commands/GetLink.js.map +1 -1
  80. package/build/macros/commands/Lookup.js +24 -23
  81. package/build/macros/commands/Lookup.js.map +1 -1
  82. package/build/macros/commands/Print.js +17 -13
  83. package/build/macros/commands/Print.js.map +1 -1
  84. package/build/macros/commands/PrintFlush.js +17 -16
  85. package/build/macros/commands/PrintFlush.js.map +1 -1
  86. package/build/macros/commands/Radar.js +64 -60
  87. package/build/macros/commands/Radar.js.map +1 -1
  88. package/build/macros/commands/Sensor.js +20 -19
  89. package/build/macros/commands/Sensor.js.map +1 -1
  90. package/build/macros/commands/UnitBind.js +17 -16
  91. package/build/macros/commands/UnitBind.js.map +1 -1
  92. package/build/macros/commands/UnitControl.js +72 -67
  93. package/build/macros/commands/UnitControl.js.map +1 -1
  94. package/build/macros/commands/UnitLocate.js +75 -54
  95. package/build/macros/commands/UnitLocate.js.map +1 -1
  96. package/build/macros/commands/UnitRadar.js +47 -40
  97. package/build/macros/commands/UnitRadar.js.map +1 -1
  98. package/build/macros/commands/Wait.js +18 -17
  99. package/build/macros/commands/Wait.js.map +1 -1
  100. package/build/macros/commands/index.js +32 -32
  101. package/build/macros/index.js +39 -39
  102. package/build/operators.js +101 -101
  103. package/build/operators.js.map +1 -1
  104. package/build/types.js +27 -27
  105. package/build/types.js.map +1 -1
  106. package/build/utils.js +17 -12
  107. package/build/utils.js.map +1 -1
  108. package/build/values/BaseValue.js +111 -111
  109. package/build/values/BaseValue.js.map +1 -1
  110. package/build/values/FunctionValue.js +115 -103
  111. package/build/values/FunctionValue.js.map +1 -1
  112. package/build/values/LiteralValue.js +88 -87
  113. package/build/values/LiteralValue.js.map +1 -1
  114. package/build/values/ObjectValue.js +54 -49
  115. package/build/values/ObjectValue.js.map +1 -1
  116. package/build/values/StoreValue.js +31 -30
  117. package/build/values/StoreValue.js.map +1 -1
  118. package/build/values/TempValue.js +77 -66
  119. package/build/values/TempValue.js.map +1 -1
  120. package/build/values/VoidValue.js +31 -30
  121. package/build/values/VoidValue.js.map +1 -1
  122. package/build/values/index.js +22 -22
  123. package/dist/bin.cjs +82 -0
  124. package/dist/bin.cjs.map +1 -0
  125. package/dist/index.cjs +2220 -0
  126. package/dist/index.cjs.map +1 -0
  127. package/dist/index.mjs +2195 -0
  128. package/dist/index.mjs.map +1 -0
  129. package/dist/types/Compiler.d.ts +26 -0
  130. package/dist/types/CompilerError.d.ts +9 -0
  131. package/dist/types/Scope.d.ts +24 -0
  132. package/dist/types/bin.d.ts +1 -0
  133. package/dist/types/handlers/BlockStatement.d.ts +2 -0
  134. package/dist/types/handlers/CallExpression.d.ts +3 -0
  135. package/dist/types/handlers/File.d.ts +2 -0
  136. package/dist/types/handlers/ForStatement.d.ts +2 -0
  137. package/{build → dist/types}/handlers/Function.d.ts +5 -4
  138. package/{build → dist/types}/handlers/Identifier.d.ts +2 -2
  139. package/dist/types/handlers/IfStatement.d.ts +2 -0
  140. package/dist/types/handlers/Literal.d.ts +5 -0
  141. package/{build → dist/types}/handlers/Object.d.ts +6 -4
  142. package/{build → dist/types}/handlers/OperationExpressions.d.ts +8 -7
  143. package/dist/types/handlers/Program.d.ts +2 -0
  144. package/dist/types/handlers/Statements.d.ts +5 -0
  145. package/dist/types/handlers/TemplateExpression.d.ts +2 -0
  146. package/dist/types/handlers/Typescript.d.ts +7 -0
  147. package/dist/types/handlers/VariableDeclaration.d.ts +3 -0
  148. package/dist/types/handlers/WhileStatement.d.ts +3 -0
  149. package/{build → dist/types}/handlers/index.d.ts +16 -14
  150. package/dist/types/index.d.ts +2 -0
  151. package/{build → dist/types}/initScope.d.ts +5 -2
  152. package/{build → dist/types}/instructions/AddressResolver.d.ts +12 -12
  153. package/{build → dist/types}/instructions/ControlInstructions.d.ts +8 -11
  154. package/{build → dist/types}/instructions/EndInstruction.d.ts +4 -4
  155. package/{build → dist/types}/instructions/InstructionBase.d.ts +10 -10
  156. package/{build → dist/types}/instructions/JumpInstruction.d.ts +15 -15
  157. package/{build → dist/types}/instructions/OperationInstruction.d.ts +5 -5
  158. package/{build → dist/types}/instructions/SetCounterInstruction.d.ts +5 -5
  159. package/{build → dist/types}/instructions/SetInstruction.d.ts +6 -5
  160. package/{build → dist/types}/instructions/ZeroSpaceInstruction.d.ts +4 -4
  161. package/{build → dist/types}/instructions/index.d.ts +9 -9
  162. package/{build → dist/types}/macros/Building.d.ts +10 -11
  163. package/dist/types/macros/Entities.d.ts +11 -0
  164. package/dist/types/macros/Function.d.ts +13 -0
  165. package/dist/types/macros/GetGlobal.d.ts +5 -0
  166. package/{build → dist/types}/macros/Math.d.ts +5 -5
  167. package/{build → dist/types}/macros/Memory.d.ts +5 -5
  168. package/{build → dist/types}/macros/Namespace.d.ts +16 -21
  169. package/{build → dist/types}/macros/Other.d.ts +5 -5
  170. package/{build → dist/types}/macros/RawValue.d.ts +5 -5
  171. package/{build → dist/types}/macros/commands/Control.d.ts +5 -5
  172. package/dist/types/macros/commands/Draw.d.ts +5 -0
  173. package/{build → dist/types}/macros/commands/DrawFlush.d.ts +5 -5
  174. package/{build/macros/commands/Draw.d.ts → dist/types/macros/commands/End.d.ts} +5 -5
  175. package/{build → dist/types}/macros/commands/GetLink.d.ts +5 -5
  176. package/{build → dist/types}/macros/commands/Lookup.d.ts +5 -5
  177. package/{build → dist/types}/macros/commands/Print.d.ts +5 -5
  178. package/{build → dist/types}/macros/commands/PrintFlush.d.ts +5 -5
  179. package/{build → dist/types}/macros/commands/Radar.d.ts +7 -7
  180. package/{build → dist/types}/macros/commands/Sensor.d.ts +5 -5
  181. package/{build → dist/types}/macros/commands/UnitBind.d.ts +5 -5
  182. package/dist/types/macros/commands/UnitControl.d.ts +5 -0
  183. package/{build → dist/types}/macros/commands/UnitLocate.d.ts +5 -5
  184. package/{build → dist/types}/macros/commands/UnitRadar.d.ts +5 -5
  185. package/{build → dist/types}/macros/commands/Wait.d.ts +5 -5
  186. package/{build → dist/types}/macros/commands/index.d.ts +15 -14
  187. package/{build → dist/types}/macros/index.d.ts +6 -7
  188. package/{build → dist/types}/operators.d.ts +25 -25
  189. package/dist/types/types.d.ts +224 -0
  190. package/dist/types/utils.d.ts +30 -0
  191. package/dist/types/values/BaseValue.d.ts +7 -0
  192. package/dist/types/values/DestructuringValue.d.ts +17 -0
  193. package/dist/types/values/FunctionValue.d.ts +47 -0
  194. package/{build → dist/types}/values/LiteralValue.d.ts +13 -12
  195. package/dist/types/values/ObjectValue.d.ts +23 -0
  196. package/dist/types/values/SenseableValue.d.ts +23 -0
  197. package/dist/types/values/StackValue.d.ts +16 -0
  198. package/dist/types/values/StoreValue.d.ts +15 -0
  199. package/{build → dist/types}/values/TempValue.d.ts +19 -12
  200. package/dist/types/values/ValueOwner.d.ts +27 -0
  201. package/dist/types/values/VoidValue.d.ts +16 -0
  202. package/{build → dist/types}/values/index.d.ts +7 -6
  203. package/lib/commands.d.ts +242 -36
  204. package/lib/eslib/lib.es5.d.ts +1 -1
  205. package/lib/globals.d.ts +172 -159
  206. package/lib/helpers.d.ts +2 -2
  207. package/lib/memory.d.ts +1 -1
  208. package/lib/traits.d.ts +130 -110
  209. package/package.json +33 -38
  210. package/build/Compiler.d.ts +0 -18
  211. package/build/Scope.d.ts +0 -26
  212. package/build/bin.d.ts +0 -2
  213. package/build/handlers/BlockStatement.d.ts +0 -2
  214. package/build/handlers/CallExpression.d.ts +0 -3
  215. package/build/handlers/ForStatement.d.ts +0 -2
  216. package/build/handlers/IfStatement.d.ts +0 -2
  217. package/build/handlers/Literal.d.ts +0 -2
  218. package/build/handlers/Program.d.ts +0 -2
  219. package/build/handlers/Statements.d.ts +0 -5
  220. package/build/handlers/TemplateExpression.d.ts +0 -2
  221. package/build/handlers/VariableDeclaration.d.ts +0 -3
  222. package/build/handlers/WhileStatement.d.ts +0 -2
  223. package/build/index.d.ts +0 -1
  224. package/build/macros/Function.d.ts +0 -12
  225. package/build/macros/commands/UnitControl.d.ts +0 -5
  226. package/build/types.d.ts +0 -49
  227. package/build/utils.d.ts +0 -3
  228. package/build/values/BaseValue.d.ts +0 -5
  229. package/build/values/FunctionValue.d.ts +0 -34
  230. package/build/values/ObjectValue.d.ts +0 -17
  231. package/build/values/StoreValue.d.ts +0 -11
  232. package/build/values/VoidValue.d.ts +0 -11
  233. package/dist/mlogjs.es.js +0 -6366
  234. package/dist/mlogjs.umd.js +0 -8
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2021 Wei
3
+ Copyright (c) 2022 Wei, JeanJPNM
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <div markdown="1" align="center">
2
2
 
3
- [![mlogjs](https://weisrc.github.io/mlogjs/logo.png)][docs]
3
+ [![mlogjs](https://mlogjs.github.io/mlogjs/logo.png)][docs]
4
4
 
5
5
  # **JavaScript [MLog](https://mindustrygame.github.io/wiki/logic/0-introduction/) Compiler**
6
6
 
@@ -65,4 +65,4 @@ MIT
65
65
 
66
66
  [npm]: https://www.npmjs.com/package/mlogjs
67
67
  [ci]: https://github.com/weisrc/mlogjs/actions/workflows/ci.yml
68
- [docs]: https://weisrc.github.io/mlogjs
68
+ [docs]: https://mlogjs.github.io/mlogjs
package/build/Compiler.js CHANGED
@@ -1,100 +1,105 @@
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;
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 parser_1 = require("@babel/parser");
28
+ const CompilerError_1 = require("./CompilerError");
29
+ const handlers = __importStar(require("./handlers"));
30
+ const initScope_1 = require("./initScope");
31
+ const instructions_1 = require("./instructions");
32
+ const Scope_1 = require("./Scope");
33
+ class Compiler {
34
+ constructor({ stackName, compactNames = false } = {}) {
35
+ this.handlers = handlers;
36
+ this.usingStack = !!stackName;
37
+ this.stackName = stackName;
38
+ this.compactNames = compactNames;
39
+ }
40
+ compile(script) {
41
+ let output;
42
+ try {
43
+ const program = this.parse(script);
44
+ const scope = new Scope_1.Scope({});
45
+ (0, initScope_1.initScope)(scope);
46
+ const valueInst = this.handle(scope, program);
47
+ valueInst[1].push(new instructions_1.EndInstruction(), ...scope.inst);
48
+ this.resolve(valueInst);
49
+ output = this.serialize(valueInst) + "\n";
50
+ }
51
+ catch (error) {
52
+ const nodeStack = error instanceof CompilerError_1.CompilerError ? error.nodeStack : [];
53
+ return [null, error, nodeStack];
54
+ }
55
+ return [output, null, []];
56
+ }
57
+ resolve(valueInst) {
58
+ let i = 0;
59
+ for (const inst of valueInst[1]) {
60
+ inst.resolve(i);
61
+ if (!inst.hidden)
62
+ i++;
63
+ }
64
+ }
65
+ serialize(resLines) {
66
+ const [, inst] = resLines;
67
+ return inst.filter(l => !l.hidden).join("\n");
68
+ }
69
+ parse(script) {
70
+ return (0, parser_1.parse)(script, {
71
+ ranges: true,
72
+ plugins: ["typescript"],
73
+ });
74
+ }
75
+ handle(scope, node) {
76
+ try {
77
+ const handler = this.handlers[node.type];
78
+ if (!handler)
79
+ throw new CompilerError_1.CompilerError("Missing handler for " + node.type);
80
+ return handler(this, scope, node, null);
81
+ }
82
+ catch (error) {
83
+ if (error instanceof CompilerError_1.CompilerError) {
84
+ error.nodeStack.push(node);
85
+ }
86
+ throw error;
87
+ }
88
+ }
89
+ handleEval(scope, node) {
90
+ const [res, inst] = this.handle(scope, node);
91
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
92
+ const [evaluated, evaluatedLines] = res.eval(scope);
93
+ return [evaluated, [...inst, ...evaluatedLines]];
94
+ }
95
+ handleMany(scope, nodes, handler = this.handle.bind(this)) {
96
+ const lines = [];
97
+ for (const node of nodes) {
98
+ const [, nodeLines] = handler(scope, node);
99
+ lines.push(...nodeLines);
100
+ }
101
+ return [null, lines];
102
+ }
103
+ }
104
+ exports.Compiler = Compiler;
100
105
  //# sourceMappingURL=Compiler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Compiler.js","sourceRoot":"","sources":["../src/Compiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Compiler.js","sourceRoot":"","sources":["../src/Compiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CompilerError = void 0;
4
+ class CompilerError extends Error {
5
+ constructor(message, nodeStack = []) {
6
+ super(message);
7
+ this.nodeStack = nodeStack;
8
+ }
9
+ }
10
+ exports.CompilerError = CompilerError;
11
+ //# sourceMappingURL=CompilerError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CompilerError.js","sourceRoot":"","sources":["../src/CompilerError.ts"],"names":[],"mappings":";;;AAEA,MAAa,aAAc,SAAQ,KAAK;IAMtC,YAAY,OAAe,EAAS,YAAuB,EAAE;QAC3D,KAAK,CAAC,OAAO,CAAC,CAAC;QADmB,cAAS,GAAT,SAAS,CAAgB;IAE7D,CAAC;CACF;AATD,sCASC"}
package/build/Scope.js CHANGED
@@ -1,61 +1,71 @@
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;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Scope = void 0;
4
+ const values_1 = require("./values");
5
+ const CompilerError_1 = require("./CompilerError");
6
+ const utils_1 = require("./utils");
7
+ class Scope {
8
+ constructor(values, parent = null, stacked = false, ntemp = 0, name = "", inst = []) {
9
+ this.parent = parent;
10
+ this.stacked = stacked;
11
+ this.ntemp = ntemp;
12
+ this.name = name;
13
+ this.inst = inst;
14
+ this.data = values;
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 new CompilerError_1.CompilerError(`${name} is not declared.`);
46
+ }
47
+ set(name, value) {
48
+ if (name in this.data)
49
+ throw new CompilerError_1.CompilerError(`${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
+ makeTempName() {
60
+ const result = this.formatName(`${utils_1.internalPrefix}t${this.ntemp}`);
61
+ this.ntemp++;
62
+ return result;
63
+ }
64
+ formatName(name) {
65
+ if (!this.name)
66
+ return name;
67
+ return `${name}:${this.name}`;
68
+ }
69
+ }
70
+ exports.Scope = Scope;
61
71
  //# sourceMappingURL=Scope.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Scope.js","sourceRoot":"","sources":["../src/Scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Scope.js","sourceRoot":"","sources":["../src/Scope.ts"],"names":[],"mappings":"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"}
package/build/bin.js CHANGED
@@ -1,61 +1,75 @@
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();
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fs_1 = require("fs");
7
+ const helpers_1 = require("yargs/helpers");
8
+ const _1 = require(".");
9
+ const cli_highlight_1 = require("cli-highlight");
10
+ const yargs_1 = __importDefault(require("yargs"));
11
+ const chalk_1 = __importDefault(require("chalk"));
12
+ const path_1 = require("path");
13
+ (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
14
+ .command("$0 [path] [out]", "compiles your Javascript file to MLog", yargs => {
15
+ return yargs
16
+ .positional("path", {
17
+ describe: "path of the file to compile",
18
+ type: "string",
19
+ })
20
+ .positional("out", {
21
+ describe: "path of the output file",
22
+ type: "string",
23
+ })
24
+ .option("compact-names", {
25
+ type: "boolean",
26
+ default: false,
27
+ describe: "Wether the compiler should preserve or compact variable and function names",
28
+ });
29
+ }, argv => {
30
+ const path = argv.path;
31
+ if (!path)
32
+ return console.log("missing required path argument");
33
+ if (!(0, fs_1.existsSync)(path))
34
+ return console.log(`file at ${path} does not exist`);
35
+ const out = argv.out ?? defaultOutPath(path);
36
+ if (path == out)
37
+ return console.log("The out path cannot be the same as the input path");
38
+ const compiler = new _1.Compiler({
39
+ compactNames: argv["compact-names"],
40
+ });
41
+ const code = (0, fs_1.readFileSync)(path, "utf8");
42
+ const [output, error, [node]] = compiler.compile(code);
43
+ if (error) {
44
+ let start = error.loc;
45
+ let end = start;
46
+ if (node) {
47
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
48
+ start = node.loc.start;
49
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
50
+ end = node.loc.end;
51
+ }
52
+ const lines = code.split("\n");
53
+ console.log(chalk_1.default.cyanBright([(0, path_1.resolve)(path), start.line, start.column].join(":")));
54
+ for (let i = Math.max(start.line - 3, 0); i < Math.min(end.line + 2, lines.length); i++) {
55
+ const n = i + 1;
56
+ const head = chalk_1.default.gray(`${n} | `.padStart(6, " "));
57
+ console.log(head + (0, cli_highlight_1.highlight)(lines[i], { language: "js" }));
58
+ if (n === start.line) {
59
+ console.log(chalk_1.default.red(" ".repeat(6 + start.column) + "^ " + error.message));
60
+ }
61
+ }
62
+ return;
63
+ }
64
+ (0, fs_1.writeFileSync)(out, output);
65
+ console.log(`Success: Compiled ${path}. Your compiled code is at ${out}.`);
66
+ })
67
+ .help()
68
+ .scriptName("mlogjs")
69
+ .demandCommand()
70
+ .parse();
71
+ function defaultOutPath(path) {
72
+ const parsed = (0, path_1.parse)(path);
73
+ return (0, path_1.join)(parsed.dir, `${parsed.name}.mlog`);
74
+ }
61
75
  //# sourceMappingURL=bin.js.map
package/build/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,14 @@
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;
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
14
  //# sourceMappingURL=BlockStatement.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"BlockStatement.js","sourceRoot":"","sources":["../../src/handlers/BlockStatement.ts"],"names":[],"mappings":";;;AAEO,MAAM,cAAc,GAA4B,CACrD,CAAC,EACD,KAAK,EACL,IAAuB,EACvB,EAAE;IACF,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;AAZW,QAAA,cAAc,kBAYzB"}