mlogjs 0.2.0 → 0.3.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +68 -18
  3. package/build/Compiler.js +32 -47
  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 +17 -7
  8. package/build/Scope.js.map +1 -1
  9. package/build/bin.js +45 -12
  10. package/build/bin.js.map +1 -1
  11. package/build/handlers/BlockStatement.js.map +1 -1
  12. package/build/handlers/CallExpression.js.map +1 -1
  13. package/build/handlers/File.js +9 -0
  14. package/build/handlers/File.js.map +1 -0
  15. package/build/handlers/ForStatement.js.map +1 -1
  16. package/build/handlers/Function.js +20 -9
  17. package/build/handlers/Function.js.map +1 -1
  18. package/build/handlers/IfStatement.js.map +1 -1
  19. package/build/handlers/Literal.js +11 -14
  20. package/build/handlers/Literal.js.map +1 -1
  21. package/build/handlers/Object.js +16 -5
  22. package/build/handlers/Object.js.map +1 -1
  23. package/build/handlers/OperationExpressions.js +6 -1
  24. package/build/handlers/OperationExpressions.js.map +1 -1
  25. package/build/handlers/Program.js +1 -1
  26. package/build/handlers/Program.js.map +1 -1
  27. package/build/handlers/Statements.js.map +1 -1
  28. package/build/handlers/TemplateExpression.js.map +1 -1
  29. package/build/handlers/VariableDeclaration.js +25 -9
  30. package/build/handlers/VariableDeclaration.js.map +1 -1
  31. package/build/handlers/WhileStatement.js.map +1 -1
  32. package/build/handlers/index.js +1 -0
  33. package/build/handlers/index.js.map +1 -1
  34. package/build/index.js +5 -5
  35. package/build/index.js.map +1 -1
  36. package/build/initScope.js +40 -0
  37. package/build/initScope.js.map +1 -0
  38. package/build/instructions/InstructionBase.js +1 -1
  39. package/build/instructions/InstructionBase.js.map +1 -1
  40. package/build/instructions/JumpInstruction.js +1 -1
  41. package/build/instructions/JumpInstruction.js.map +1 -1
  42. package/build/instructions/OperationInstruction.js.map +1 -1
  43. package/build/macros/Building.js +16 -8
  44. package/build/macros/Building.js.map +1 -1
  45. package/build/macros/Function.js +1 -1
  46. package/build/macros/Function.js.map +1 -1
  47. package/build/macros/Math.js +13 -8
  48. package/build/macros/Math.js.map +1 -1
  49. package/build/macros/Memory.js +7 -5
  50. package/build/macros/Memory.js.map +1 -1
  51. package/build/macros/Namespace.js +24 -11
  52. package/build/macros/Namespace.js.map +1 -1
  53. package/build/macros/Other.js +2 -1
  54. package/build/macros/Other.js.map +1 -1
  55. package/build/macros/RawValue.js +2 -1
  56. package/build/macros/RawValue.js.map +1 -1
  57. package/build/macros/commands/{control.js → Control.js} +4 -3
  58. package/build/macros/commands/Control.js.map +1 -0
  59. package/build/macros/commands/Draw.js +4 -3
  60. package/build/macros/commands/Draw.js.map +1 -1
  61. package/build/macros/commands/DrawFlush.js +2 -1
  62. package/build/macros/commands/DrawFlush.js.map +1 -1
  63. package/build/macros/commands/GetLink.js +8 -4
  64. package/build/macros/commands/GetLink.js.map +1 -1
  65. package/build/macros/commands/Lookup.js +5 -4
  66. package/build/macros/commands/Lookup.js.map +1 -1
  67. package/build/macros/commands/Print.js +5 -1
  68. package/build/macros/commands/Print.js.map +1 -1
  69. package/build/macros/commands/PrintFlush.js +2 -1
  70. package/build/macros/commands/PrintFlush.js.map +1 -1
  71. package/build/macros/commands/Radar.js +16 -12
  72. package/build/macros/commands/Radar.js.map +1 -1
  73. package/build/macros/commands/Sensor.js +4 -3
  74. package/build/macros/commands/Sensor.js.map +1 -1
  75. package/build/macros/commands/UnitBind.js +2 -1
  76. package/build/macros/commands/UnitBind.js.map +1 -1
  77. package/build/macros/commands/UnitControl.js +13 -8
  78. package/build/macros/commands/UnitControl.js.map +1 -1
  79. package/build/macros/commands/UnitLocate.js +29 -8
  80. package/build/macros/commands/UnitLocate.js.map +1 -1
  81. package/build/macros/commands/UnitRadar.js +17 -10
  82. package/build/macros/commands/UnitRadar.js.map +1 -1
  83. package/build/macros/commands/Wait.js +2 -1
  84. package/build/macros/commands/Wait.js.map +1 -1
  85. package/build/operators.js.map +1 -1
  86. package/build/types.js +1 -1
  87. package/build/types.js.map +1 -1
  88. package/build/utils.js +7 -2
  89. package/build/utils.js.map +1 -1
  90. package/build/values/BaseValue.js +5 -5
  91. package/build/values/BaseValue.js.map +1 -1
  92. package/build/values/FunctionValue.js +25 -13
  93. package/build/values/FunctionValue.js.map +1 -1
  94. package/build/values/LiteralValue.js +5 -4
  95. package/build/values/LiteralValue.js.map +1 -1
  96. package/build/values/ObjectValue.js +11 -6
  97. package/build/values/ObjectValue.js.map +1 -1
  98. package/build/values/StoreValue.js +3 -2
  99. package/build/values/StoreValue.js.map +1 -1
  100. package/build/values/TempValue.js +18 -7
  101. package/build/values/TempValue.js.map +1 -1
  102. package/build/values/VoidValue.js +8 -7
  103. package/build/values/VoidValue.js.map +1 -1
  104. package/dist/bin.cjs +82 -0
  105. package/dist/bin.cjs.map +1 -0
  106. package/dist/index.cjs +2187 -0
  107. package/dist/index.cjs.map +1 -0
  108. package/dist/index.mjs +2162 -0
  109. package/dist/index.mjs.map +1 -0
  110. package/dist/types/Compiler.d.ts +26 -0
  111. package/dist/types/CompilerError.d.ts +9 -0
  112. package/dist/types/Scope.d.ts +24 -0
  113. package/dist/types/bin.d.ts +1 -0
  114. package/dist/types/handlers/BlockStatement.d.ts +2 -0
  115. package/dist/types/handlers/CallExpression.d.ts +3 -0
  116. package/dist/types/handlers/File.d.ts +2 -0
  117. package/dist/types/handlers/ForStatement.d.ts +2 -0
  118. package/{build → dist/types}/handlers/Function.d.ts +1 -0
  119. package/{build → dist/types}/handlers/Identifier.d.ts +0 -0
  120. package/dist/types/handlers/IfStatement.d.ts +2 -0
  121. package/dist/types/handlers/Literal.d.ts +5 -0
  122. package/{build → dist/types}/handlers/Object.d.ts +2 -0
  123. package/{build → dist/types}/handlers/OperationExpressions.d.ts +1 -0
  124. package/dist/types/handlers/Program.d.ts +2 -0
  125. package/dist/types/handlers/Statements.d.ts +5 -0
  126. package/dist/types/handlers/TemplateExpression.d.ts +2 -0
  127. package/dist/types/handlers/Typescript.d.ts +7 -0
  128. package/dist/types/handlers/VariableDeclaration.d.ts +3 -0
  129. package/dist/types/handlers/WhileStatement.d.ts +3 -0
  130. package/{build → dist/types}/handlers/index.d.ts +2 -0
  131. package/dist/types/index.d.ts +2 -0
  132. package/dist/types/initScope.d.ts +5 -0
  133. package/{build → dist/types}/instructions/AddressResolver.d.ts +1 -1
  134. package/{build → dist/types}/instructions/ControlInstructions.d.ts +0 -3
  135. package/{build → dist/types}/instructions/EndInstruction.d.ts +0 -0
  136. package/{build → dist/types}/instructions/InstructionBase.d.ts +4 -4
  137. package/{build → dist/types}/instructions/JumpInstruction.d.ts +1 -1
  138. package/{build → dist/types}/instructions/OperationInstruction.d.ts +1 -1
  139. package/{build → dist/types}/instructions/SetCounterInstruction.d.ts +0 -0
  140. package/{build → dist/types}/instructions/SetInstruction.d.ts +1 -0
  141. package/{build → dist/types}/instructions/ZeroSpaceInstruction.d.ts +0 -0
  142. package/{build → dist/types}/instructions/index.d.ts +0 -0
  143. package/{build → dist/types}/macros/Building.d.ts +1 -2
  144. package/dist/types/macros/Entities.d.ts +11 -0
  145. package/dist/types/macros/Function.d.ts +13 -0
  146. package/{build/macros/Draw.d.ts → dist/types/macros/GetGlobal.d.ts} +1 -1
  147. package/{build → dist/types}/macros/Math.d.ts +0 -0
  148. package/{build → dist/types}/macros/Memory.d.ts +0 -0
  149. package/{build → dist/types}/macros/Namespace.d.ts +0 -5
  150. package/{build → dist/types}/macros/Other.d.ts +0 -0
  151. package/{build → dist/types}/macros/RawValue.d.ts +0 -0
  152. package/{build/macros/commands/Asm.d.ts → dist/types/macros/commands/Control.d.ts} +1 -1
  153. package/{build/macros/helpers/GetVar.d.ts → dist/types/macros/commands/Draw.d.ts} +1 -1
  154. package/{build → dist/types}/macros/commands/DrawFlush.d.ts +1 -1
  155. package/{build/macros/commands/Draw.d.ts → dist/types/macros/commands/End.d.ts} +1 -1
  156. package/{build → dist/types}/macros/commands/GetLink.d.ts +0 -0
  157. package/{build → dist/types}/macros/commands/Lookup.d.ts +0 -0
  158. package/{build → dist/types}/macros/commands/Print.d.ts +1 -1
  159. package/{build → dist/types}/macros/commands/PrintFlush.d.ts +1 -1
  160. package/{build → dist/types}/macros/commands/Radar.d.ts +0 -0
  161. package/{build → dist/types}/macros/commands/Sensor.d.ts +0 -0
  162. package/{build → dist/types}/macros/commands/UnitBind.d.ts +1 -1
  163. package/dist/types/macros/commands/UnitControl.d.ts +5 -0
  164. package/{build → dist/types}/macros/commands/UnitLocate.d.ts +0 -0
  165. package/{build → dist/types}/macros/commands/UnitRadar.d.ts +0 -0
  166. package/{build → dist/types}/macros/commands/Wait.d.ts +1 -1
  167. package/{build → dist/types}/macros/commands/index.d.ts +1 -0
  168. package/{build → dist/types}/macros/index.d.ts +0 -1
  169. package/{build → dist/types}/operators.d.ts +1 -1
  170. package/dist/types/types.d.ts +209 -0
  171. package/dist/types/utils.d.ts +24 -0
  172. package/dist/types/values/BaseValue.d.ts +7 -0
  173. package/dist/types/values/DestructuringValue.d.ts +17 -0
  174. package/{build → dist/types}/values/FunctionValue.d.ts +21 -8
  175. package/{build → dist/types}/values/LiteralValue.d.ts +2 -1
  176. package/dist/types/values/ObjectValue.d.ts +23 -0
  177. package/dist/types/values/SenseableValue.d.ts +23 -0
  178. package/dist/types/values/StackValue.d.ts +16 -0
  179. package/{build → dist/types}/values/StoreValue.d.ts +7 -3
  180. package/{build → dist/types}/values/TempValue.d.ts +9 -2
  181. package/dist/types/values/ValueOwner.d.ts +27 -0
  182. package/dist/types/values/VoidValue.d.ts +16 -0
  183. package/{build → dist/types}/values/index.d.ts +2 -1
  184. package/lib/commands.d.ts +532 -326
  185. package/lib/eslib/index.d.ts +3 -3
  186. package/lib/eslib/lib.d.ts +9 -9
  187. package/lib/eslib/lib.es2015.collection.d.ts +89 -89
  188. package/lib/eslib/lib.es2015.core.d.ts +16 -16
  189. package/lib/eslib/lib.es2015.d.ts +30 -30
  190. package/lib/eslib/lib.es2015.generator.d.ts +79 -79
  191. package/lib/eslib/lib.es2015.iterable.d.ts +70 -70
  192. package/lib/eslib/lib.es5.d.ts +295 -295
  193. package/lib/eslib/lib.es6.d.ts +18 -18
  194. package/lib/globals.d.ts +341 -328
  195. package/lib/helpers.d.ts +23 -23
  196. package/lib/index.d.ts +7 -7
  197. package/lib/kinds.d.ts +36 -36
  198. package/lib/memory.d.ts +17 -17
  199. package/lib/traits.d.ts +141 -121
  200. package/lib/util.d.ts +32 -32
  201. package/package.json +68 -48
  202. package/build/Compiler.d.ts +0 -18
  203. package/build/Scope.d.ts +0 -26
  204. package/build/bin.d.ts +0 -2
  205. package/build/handlers/BlockStatement.d.ts +0 -2
  206. package/build/handlers/CallExpression.d.ts +0 -3
  207. package/build/handlers/ForStatement.d.ts +0 -2
  208. package/build/handlers/IfStatement.d.ts +0 -2
  209. package/build/handlers/Literal.d.ts +0 -2
  210. package/build/handlers/Program.d.ts +0 -2
  211. package/build/handlers/Statements.d.ts +0 -5
  212. package/build/handlers/TemplateExpression.d.ts +0 -2
  213. package/build/handlers/VariableDeclaration.d.ts +0 -3
  214. package/build/handlers/WhileStatement.d.ts +0 -2
  215. package/build/index.d.ts +0 -1
  216. package/build/macros/Blocks.d.ts +0 -5
  217. package/build/macros/Blocks.js +0 -143
  218. package/build/macros/Blocks.js.map +0 -1
  219. package/build/macros/Draw.js +0 -39
  220. package/build/macros/Draw.js.map +0 -1
  221. package/build/macros/Function.d.ts +0 -12
  222. package/build/macros/Items.d.ts +0 -5
  223. package/build/macros/Items.js +0 -20
  224. package/build/macros/Items.js.map +0 -1
  225. package/build/macros/Liquids.d.ts +0 -5
  226. package/build/macros/Liquids.js +0 -18
  227. package/build/macros/Liquids.js.map +0 -1
  228. package/build/macros/Symbol.d.ts +0 -0
  229. package/build/macros/Symbol.js +0 -1
  230. package/build/macros/Symbol.js.map +0 -1
  231. package/build/macros/SymbolNamespace.d.ts +0 -0
  232. package/build/macros/SymbolNamespace.js +0 -1
  233. package/build/macros/SymbolNamespace.js.map +0 -1
  234. package/build/macros/TypeFactory.d.ts +0 -8
  235. package/build/macros/TypeFactory.js +0 -22
  236. package/build/macros/TypeFactory.js.map +0 -1
  237. package/build/macros/Units.d.ts +0 -5
  238. package/build/macros/Units.js +0 -18
  239. package/build/macros/Units.js.map +0 -1
  240. package/build/macros/Vars.d.ts +0 -5
  241. package/build/macros/Vars.js +0 -18
  242. package/build/macros/Vars.js.map +0 -1
  243. package/build/macros/commands/Asm.js +0 -21
  244. package/build/macros/commands/Asm.js.map +0 -1
  245. package/build/macros/commands/UnitControl.d.ts +0 -5
  246. package/build/macros/commands/control.d.ts +0 -5
  247. package/build/macros/commands/control.js.map +0 -1
  248. package/build/macros/commands/io.d.ts +0 -8
  249. package/build/macros/commands/io.js +0 -47
  250. package/build/macros/commands/io.js.map +0 -1
  251. package/build/macros/helpers/GetBuilding.d.ts +0 -5
  252. package/build/macros/helpers/GetBuilding.js +0 -16
  253. package/build/macros/helpers/GetBuilding.js.map +0 -1
  254. package/build/macros/helpers/GetVar.js +0 -16
  255. package/build/macros/helpers/GetVar.js.map +0 -1
  256. package/build/macros/helpers/index.d.ts +0 -2
  257. package/build/macros/helpers/index.js +0 -15
  258. package/build/macros/helpers/index.js.map +0 -1
  259. package/build/types.d.ts +0 -49
  260. package/build/utils.d.ts +0 -3
  261. package/build/values/BaseValue.d.ts +0 -5
  262. package/build/values/ObjectValue.d.ts +0 -17
  263. package/build/values/VoidValue.d.ts +0 -11
  264. package/dist/bundle.js +0 -1
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2021 STR1Z
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2022 Wei, JeanJPNM
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,18 +1,68 @@
1
- # MlogJS
2
-
3
- MlogJS is a compiler that allows users to compile complex JavaScript programs into Mindustry Logic Code.
4
-
5
- ## Discord
6
-
7
- You can join the Discord server for more information and help.
8
-
9
- https://discord.gg/SvgjCtZnR5
10
-
11
- ## Getting started!
12
-
13
- ```
14
- npm i mlogjs -g
15
- ```
16
-
17
- After installing the package from NPM, please visit the docs.
18
- https://weisrc.github.io/mlogjs/
1
+ <div markdown="1" align="center">
2
+
3
+ [![mlogjs](https://mlogjs.github.io/mlogjs/logo.png)][docs]
4
+
5
+ # **JavaScript [MLog](https://mindustrygame.github.io/wiki/logic/0-introduction/) Compiler**
6
+
7
+ [![ci](https://github.com/weisrc/mlogjs/actions/workflows/ci.yml/badge.svg)][ci]
8
+ [![npm](https://img.shields.io/npm/v/mlogjs?color=cb3837&logo=npm)][npm]
9
+ [![docs](https://img.shields.io/badge/docs-mlogjs-41B883?logo=readthedocs)][docs]
10
+
11
+ </div>
12
+
13
+ ## Features
14
+
15
+ - Optimzing compiler
16
+ - Easy to use
17
+ - Fully Typed API
18
+ - Macros
19
+ - All Instructions and Variables
20
+
21
+ ## Installation
22
+
23
+ #### In the terminal
24
+
25
+ ```sh
26
+ npm i -g mlogjs
27
+ ```
28
+
29
+ ## Usage
30
+
31
+ #### Creating `hello.js`
32
+
33
+ ```js
34
+ const message1 = getBuilding("message1")
35
+ print("Hello world")
36
+ printFlush(message1)
37
+ ```
38
+
39
+ #### Compile
40
+
41
+ ```sh
42
+ mlogjs hello.js hello.mlog
43
+ ```
44
+
45
+ ## Resources
46
+
47
+ - [Discord](https://discord.gg/SvgjCtZnR5)
48
+ - [Documentation][docs]
49
+ - [NPM package][npm]
50
+ - [GitHub Action CI][ci]
51
+
52
+ ## Maintainers
53
+
54
+ Massive thanks to [@JeanJPNM](https://github.com/JeanJPNM) for adding new features!
55
+
56
+ ## Contribute
57
+
58
+ Help and suggestions are welcomed!
59
+
60
+ ## License
61
+
62
+ MIT
63
+
64
+ <!-- url -->
65
+
66
+ [npm]: https://www.npmjs.com/package/mlogjs
67
+ [ci]: https://github.com/weisrc/mlogjs/actions/workflows/ci.yml
68
+ [docs]: https://mlogjs.github.io/mlogjs
package/build/Compiler.js CHANGED
@@ -24,57 +24,35 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.Compiler = void 0;
27
+ const parser_1 = require("@babel/parser");
28
+ const CompilerError_1 = require("./CompilerError");
27
29
  const handlers = __importStar(require("./handlers"));
28
- const esprima_1 = require("esprima");
30
+ const initScope_1 = require("./initScope");
29
31
  const instructions_1 = require("./instructions");
30
32
  const Scope_1 = require("./Scope");
31
- const macros_1 = require("./macros");
32
- const utils_1 = require("./utils");
33
- const Namespace_1 = require("./macros/Namespace");
34
- const RawValue_1 = require("./macros/RawValue");
35
33
  class Compiler {
36
- constructor(stackName) {
34
+ constructor({ stackName, compactNames = false } = {}) {
37
35
  this.handlers = handlers;
38
36
  this.usingStack = !!stackName;
39
37
  this.stackName = stackName;
38
+ this.compactNames = compactNames;
40
39
  }
41
40
  compile(script) {
42
- const program = this.parse(script);
43
- const scope = new Scope_1.Scope({});
44
- // namespaces
45
- scope.hardSet("ControlKind", new Namespace_1.NamespaceMacro(scope));
46
- scope.hardSet("Vars", new Namespace_1.VarsNamespace(scope));
47
- scope.hardSet("Items", new Namespace_1.NamespaceMacro(scope, { changeCasing: true }));
48
- scope.hardSet("Liquids", new Namespace_1.NamespaceMacro(scope));
49
- scope.hardSet("Units", new Namespace_1.NamespaceMacro(scope));
50
- scope.hardSet("LAccess", new Namespace_1.NamespaceMacro(scope));
51
- scope.hardSet("UnitCommands", new Namespace_1.UCommandsNamespace(scope));
52
- scope.hardSet("Blocks", new Namespace_1.NamespaceMacro(scope, { changeCasing: true }));
53
- // helper methods
54
- scope.hardSet("getBuilding", new macros_1.BuildingBuilder(scope));
55
- scope.hardSet("getVar", new RawValue_1.RawValueMacro(scope));
56
- scope.hardSet("concat", new macros_1.Concat(scope));
57
- scope.hardSet("Math", new macros_1.MlogMath(scope));
58
- scope.hardSet("Memory", new macros_1.MemoryBuilder(scope));
59
- // commands
60
- scope.hardSet("draw", new macros_1.commands.Draw(scope));
61
- scope.hardSet("print", new macros_1.commands.Print(scope));
62
- scope.hardSet("printFlush", new macros_1.commands.PrintFlush(scope));
63
- scope.hardSet("drawFlush", new macros_1.commands.DrawFlush(scope));
64
- scope.hardSet("getLink", new macros_1.commands.GetLink(scope));
65
- scope.hardSet("control", new macros_1.commands.Control(scope));
66
- scope.hardSet("radar", new macros_1.commands.Radar(scope));
67
- scope.hardSet("sensor", new macros_1.commands.Sensor(scope));
68
- scope.hardSet("wait", new macros_1.commands.Wait(scope));
69
- scope.hardSet("lookup", new macros_1.commands.Lookup(scope));
70
- scope.hardSet("unitBind", new macros_1.commands.UnitBind(scope));
71
- scope.hardSet("unitControl", new macros_1.commands.UnitControl(scope));
72
- scope.hardSet("unitRadar", new macros_1.commands.UnitRadar(scope));
73
- scope.hardSet("unitLocate", new macros_1.commands.UnitLocate(scope));
74
- const valueInst = this.handle(scope, program);
75
- valueInst[1].push(new instructions_1.EndInstruction(), ...scope.inst);
76
- this.resolve(valueInst);
77
- return this.serialize(valueInst) + "\n";
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, []];
78
56
  }
79
57
  resolve(valueInst) {
80
58
  let i = 0;
@@ -85,32 +63,39 @@ class Compiler {
85
63
  }
86
64
  }
87
65
  serialize(resLines) {
88
- const [_, inst] = resLines;
66
+ const [, inst] = resLines;
89
67
  return inst.filter(l => !l.hidden).join("\n");
90
68
  }
91
69
  parse(script) {
92
- return (0, esprima_1.parseScript)(script, { loc: true });
70
+ return (0, parser_1.parse)(script, {
71
+ ranges: true,
72
+ plugins: ["typescript"],
73
+ });
93
74
  }
94
75
  handle(scope, node) {
95
76
  try {
96
77
  const handler = this.handlers[node.type];
97
78
  if (!handler)
98
- throw Error("Missing handler for " + node.type);
79
+ throw new CompilerError_1.CompilerError("Missing handler for " + node.type);
99
80
  return handler(this, scope, node, null);
100
81
  }
101
82
  catch (error) {
102
- throw new Error(`${node.type} ${(0, utils_1.nodeName)(node)} > ${error.message}`);
83
+ if (error instanceof CompilerError_1.CompilerError) {
84
+ error.nodeStack.push(node);
85
+ }
86
+ throw error;
103
87
  }
104
88
  }
105
89
  handleEval(scope, node) {
106
90
  const [res, inst] = this.handle(scope, node);
91
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
107
92
  const [evaluated, evaluatedLines] = res.eval(scope);
108
93
  return [evaluated, [...inst, ...evaluatedLines]];
109
94
  }
110
95
  handleMany(scope, nodes, handler = this.handle.bind(this)) {
111
96
  const lines = [];
112
97
  for (const node of nodes) {
113
- const [_, nodeLines] = handler(scope, node);
98
+ const [, nodeLines] = handler(scope, node);
114
99
  lines.push(...nodeLines);
115
100
  }
116
101
  return [null, lines];
@@ -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
@@ -2,19 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Scope = void 0;
4
4
  const values_1 = require("./values");
5
+ const CompilerError_1 = require("./CompilerError");
6
+ const utils_1 = require("./utils");
5
7
  class Scope {
6
8
  constructor(values, parent = null, stacked = false, ntemp = 0, name = "", inst = []) {
7
- this.stacked = false;
8
- this.ntemp = 0;
9
- this.data = values;
10
9
  this.parent = parent;
11
10
  this.stacked = stacked;
12
11
  this.ntemp = ntemp;
13
12
  this.name = name;
14
13
  this.inst = inst;
14
+ this.data = values;
15
15
  }
16
16
  copy() {
17
- const scope = new Scope(Object.assign({}, this.data), this.parent, this.stacked, this.ntemp, this.name, this.inst);
17
+ const scope = new Scope({ ...this.data }, this.parent, this.stacked, this.ntemp, this.name, this.inst);
18
18
  scope.break = this.break;
19
19
  scope.continue = this.continue;
20
20
  scope.function = this.function;
@@ -27,7 +27,7 @@ class Scope {
27
27
  return scope;
28
28
  }
29
29
  createFunction(name, stacked) {
30
- return new Scope({}, this, stacked !== null && stacked !== void 0 ? stacked : this.stacked, 0, name, this.inst);
30
+ return new Scope({}, this, stacked ?? this.stacked, 0, name, this.inst);
31
31
  }
32
32
  has(name) {
33
33
  if (name in this.data)
@@ -42,11 +42,11 @@ class Scope {
42
42
  return value;
43
43
  if (this.parent)
44
44
  return this.parent.get(name);
45
- throw Error(`${name} is not declared.`);
45
+ throw new CompilerError_1.CompilerError(`${name} is not declared.`);
46
46
  }
47
47
  set(name, value) {
48
48
  if (name in this.data)
49
- throw Error(`${name} is already declared.`);
49
+ throw new CompilerError_1.CompilerError(`${name} is already declared.`);
50
50
  return this.hardSet(name, value);
51
51
  }
52
52
  hardSet(name, value) {
@@ -56,6 +56,16 @@ class Scope {
56
56
  make(name, storeName) {
57
57
  return this.set(name, this.stacked ? null : new values_1.StoreValue(this, storeName));
58
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
+ }
59
69
  }
60
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,42 +1,75 @@
1
- #!/usr/bin/env node
2
1
  "use strict";
3
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
4
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
4
  };
6
5
  Object.defineProperty(exports, "__esModule", { value: true });
7
6
  const fs_1 = require("fs");
7
+ const helpers_1 = require("yargs/helpers");
8
8
  const _1 = require(".");
9
+ const cli_highlight_1 = require("cli-highlight");
9
10
  const yargs_1 = __importDefault(require("yargs"));
10
- const helpers_1 = require("yargs/helpers");
11
+ const chalk_1 = __importDefault(require("chalk"));
12
+ const path_1 = require("path");
11
13
  (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
12
14
  .command("$0 [path] [out]", "compiles your Javascript file to MLog", yargs => {
13
15
  return yargs
14
16
  .positional("path", {
15
17
  describe: "path of the file to compile",
18
+ type: "string",
16
19
  })
17
20
  .positional("out", {
18
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",
19
28
  });
20
29
  }, argv => {
21
30
  const path = argv.path;
22
- const out = argv.out;
23
31
  if (!path)
24
32
  return console.log("missing required path argument");
25
- if (!out)
26
- return console.log("missing output path");
27
33
  if (!(0, fs_1.existsSync)(path))
28
34
  return console.log(`file at ${path} does not exist`);
29
- try {
30
- const compiled = (0, _1.compile)((0, fs_1.readFileSync)(path, { encoding: "utf-8" }));
31
- (0, fs_1.writeFileSync)(out, compiled);
32
- console.log(`Success: Compiled ${path}. Your compiled code is at ${out}.`);
33
- }
34
- catch (e) {
35
- console.log("Error: " + e.message);
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;
36
63
  }
64
+ (0, fs_1.writeFileSync)(out, output);
65
+ console.log(`Success: Compiled ${path}. Your compiled code is at ${out}.`);
37
66
  })
38
67
  .help()
39
68
  .scriptName("mlogjs")
40
69
  .demandCommand()
41
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
+ }
42
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":";;;;;;AACA,2BAA6D;AAC7D,wBAA4B;AAC5B,kDAA0B;AAC1B,2CAAwC;AAExC,IAAA,eAAK,EAAC,IAAA,iBAAO,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACzB,OAAO,CACN,iBAAiB,EACjB,uCAAuC,EACvC,KAAK,CAAC,EAAE;IACN,OAAO,KAAK;SACT,UAAU,CAAC,MAAM,EAAE;QAClB,QAAQ,EAAE,6BAA6B;KACxC,CAAC;SACD,UAAU,CAAC,KAAK,EAAE;QACjB,QAAQ,EAAE,yBAAyB;KACpC,CAAC,CAAC;AACP,CAAC,EACD,IAAI,CAAC,EAAE;IACL,MAAM,IAAI,GAAG,IAAI,CAAC,IAAc,CAAC;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAa,CAAC;IAC/B,IAAI,CAAC,IAAI;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAChE,IAAI,CAAC,GAAG;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACpD,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC;QACnB,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,iBAAiB,CAAC,CAAC;IACvD,IAAI;QACF,MAAM,QAAQ,GAAG,IAAA,UAAO,EACtB,IAAA,iBAAY,EAAC,IAAc,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CACpD,CAAC;QACF,IAAA,kBAAa,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CACT,qBAAqB,IAAI,8BAA8B,GAAG,GAAG,CAC9D,CAAC;KACH;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;KACpC;AACH,CAAC,CACF;KACA,IAAI,EAAE;KACN,UAAU,CAAC,QAAQ,CAAC;KACpB,aAAa,EAAE;KACf,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -1 +1 @@
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
+ {"version":3,"file":"CallExpression.js","sourceRoot":"","sources":["../../src/handlers/CallExpression.ts"],"names":[],"mappings":";;;AAEO,MAAM,cAAc,GAA4B,CACrD,CAAC,EACD,KAAK,EACL,IAAuB,EACvB,EAAE;IACF,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;AArBW,QAAA,cAAc,kBAqBzB;AAEW,QAAA,aAAa,GAAG,sBAAc,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.File = void 0;
4
+ const Scope_1 = require("../Scope");
5
+ const File = (c, scope, node) => {
6
+ return c.handle(scope ?? new Scope_1.Scope({}), node.program);
7
+ };
8
+ exports.File = File;
9
+ //# sourceMappingURL=File.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"File.js","sourceRoot":"","sources":["../../src/handlers/File.ts"],"names":[],"mappings":";;;AAAA,oCAAiC;AAG1B,MAAM,IAAI,GAA4B,CAAC,CAAC,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;IACvE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,aAAK,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACxD,CAAC,CAAC;AAFW,QAAA,IAAI,QAEf"}
@@ -1 +1 @@
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
+ {"version":3,"file":"ForStatement.js","sourceRoot":"","sources":["../../src/handlers/ForStatement.ts"],"names":[],"mappings":";;;AAAA,kDAA8E;AAE9E,sCAAyC;AAElC,MAAM,YAAY,GAAmB,CAC1C,CAAC,EACD,KAAK,EACL,IAAqB,EACrB,EAAE;IACF,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,IAAa,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,IAAI,qBAAY,CAAC,KAAK,EAAE,IAAa,CAAC,CAAC;IAE3D,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;AApCW,QAAA,YAAY,gBAoCvB"}
@@ -1,36 +1,47 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FunctionExpression = exports.FunctionDeclaration = exports.ArrowFunctionExpression = void 0;
3
+ exports.ObjectMethod = exports.FunctionExpression = exports.FunctionDeclaration = exports.ArrowFunctionExpression = void 0;
4
4
  const utils_1 = require("../utils");
5
5
  const FunctionValue_1 = require("../values/FunctionValue");
6
6
  const ArrowFunctionExpression = (c, scope, node) => {
7
7
  const name = (0, utils_1.nodeName)(node);
8
- scope = scope.createFunction(name);
8
+ const functionScope = scope.createFunction(name);
9
9
  let { params, body } = node;
10
10
  if (node.expression) {
11
11
  body = {
12
12
  type: "BlockStatement",
13
- body: [{ type: "ReturnStatement", argument: body }],
13
+ body: [
14
+ { ...body, type: "ReturnStatement", argument: body },
15
+ ],
14
16
  };
15
17
  }
16
18
  const paramNames = [];
17
19
  const paramStores = [];
18
20
  for (const id of params) {
19
21
  paramNames.push(id.name);
20
- paramStores.push(scope.make(id.name, (0, utils_1.nodeName)(id)));
22
+ paramStores.push(functionScope.make(id.name, c.compactNames ? (0, utils_1.nodeName)(id) : functionScope.formatName(id.name)));
21
23
  }
22
24
  return [
23
- new FunctionValue_1.FunctionValue(scope, name, paramNames, paramStores, body, c),
25
+ new FunctionValue_1.FunctionValue({
26
+ scope: functionScope,
27
+ name,
28
+ paramNames,
29
+ paramStores,
30
+ body: body,
31
+ c,
32
+ renameable: true,
33
+ }),
24
34
  [],
25
35
  ];
26
36
  };
27
37
  exports.ArrowFunctionExpression = ArrowFunctionExpression;
28
38
  const FunctionDeclaration = (c, scope, node) => {
29
- return [
30
- scope.set(node.id.name, (0, exports.ArrowFunctionExpression)(c, scope, node, null)[0]),
31
- [],
32
- ];
39
+ const functionIns = (0, exports.ArrowFunctionExpression)(c, scope, node, null);
40
+ const name = node.id.name;
41
+ functionIns[0].rename?.(c.compactNames ? (0, utils_1.nodeName)(node) : scope.formatName(name));
42
+ return [scope.set(name, functionIns[0]), []];
33
43
  };
34
44
  exports.FunctionDeclaration = FunctionDeclaration;
35
45
  exports.FunctionExpression = exports.ArrowFunctionExpression;
46
+ exports.ObjectMethod = exports.ArrowFunctionExpression;
36
47
  //# sourceMappingURL=Function.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"Function.js","sourceRoot":"","sources":["../../src/handlers/Function.ts"],"names":[],"mappings":";;;AACA,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,MAAM,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACjD,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;gBACJ,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAqB,EAAE;aACtE;SACmB,CAAC;KACxB;IAED,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,MAAM,WAAW,GAAiB,EAAE,CAAC;IAErC,KAAK,MAAM,EAAE,IAAI,MAAyB,EAAE;QAC1C,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACzB,WAAW,CAAC,IAAI,CACd,aAAa,CAAC,IAAI,CAChB,EAAE,CAAC,IAAI,EACP,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAClE,CACF,CAAC;KACH;IAED,OAAO;QACL,IAAI,6BAAa,CAAC;YAChB,KAAK,EAAE,aAAa;YACpB,IAAI;YACJ,UAAU;YACV,WAAW;YACX,IAAI,EAAE,IAAyB;YAC/B,CAAC;YACD,UAAU,EAAE,IAAI;SACjB,CAAC;QACF,EAAE;KACH,CAAC;AACJ,CAAC,CAAC;AA3CW,QAAA,uBAAuB,2BA2ClC;AAEK,MAAM,mBAAmB,GAAa,CAC3C,CAAC,EACD,KAAK,EACL,IAA4B,EAC5B,EAAE;IACF,MAAM,WAAW,GAAG,IAAA,+BAAuB,EAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAClE,MAAM,IAAI,GAAI,IAAI,CAAC,EAAoB,CAAC,IAAI,CAAC;IAC7C,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CACrB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CACzD,CAAC;IACF,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC,CAAC;AAXW,QAAA,mBAAmB,uBAW9B;AAEW,QAAA,kBAAkB,GAAa,+BAAuB,CAAC;AACvD,QAAA,YAAY,GAAa,+BAAuB,CAAC"}
@@ -1 +1 @@
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
+ {"version":3,"file":"IfStatement.js","sourceRoot":"","sources":["../../src/handlers/IfStatement.ts"],"names":[],"mappings":";;;AAAA,kDAAmE;AACnE,kDAA4C;AAE5C,sCAAyC;AAElC,MAAM,WAAW,GAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,IAAoB,EAAE,EAAE;IAC5E,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,IAAa,CAAC,CAAC;IACzD,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,IAAa,CAAC,CAAC;IAC3D,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 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Literal = void 0;
3
+ exports.BooleanLiteral = exports.NullLiteral = exports.StringLiteral = exports.NumericLiteral = void 0;
4
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;
5
+ const Literal = (_c, scope, node) => [new values_1.LiteralValue(scope, node.value), []];
6
+ exports.NumericLiteral = Literal;
7
+ exports.StringLiteral = Literal;
8
+ const NullLiteral = (_c, scope) => [
9
+ new values_1.LiteralValue(scope, null),
10
+ [],
11
+ ];
12
+ exports.NullLiteral = NullLiteral;
13
+ const BooleanLiteral = (_c, scope, node) => [new values_1.LiteralValue(scope, +node.value), []];
14
+ exports.BooleanLiteral = BooleanLiteral;
18
15
  //# sourceMappingURL=Literal.js.map