ranger-compiler 2.1.70 → 3.0.3

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 (363) hide show
  1. package/CHANGELOG.md +103 -0
  2. package/README.md +956 -133
  3. package/{compiler/Lang.clj → dist/Lang.rgr} +2345 -75
  4. package/dist/README.md +116 -0
  5. package/dist/{bin/api.d.ts → api.d.ts} +430 -154
  6. package/dist/api.js +34345 -0
  7. package/{lib/Ajax.clj → dist/lib/Ajax.rgr} +1 -1
  8. package/{lib/CmdParams.clj → dist/lib/CmdParams.rgr} +72 -72
  9. package/{lib/Crypto.clj → dist/lib/Crypto.rgr} +1 -1
  10. package/{lib/DOMLib.clj → dist/lib/DOMLib.rgr} +2 -2
  11. package/{lib/Engine3D.clj → dist/lib/Engine3D.rgr} +1 -1
  12. package/{lib/ImmutableVector.clj → dist/lib/ImmutableVector.rgr} +364 -364
  13. package/{lib/IndexedDB.clj → dist/lib/IndexedDB.rgr} +1 -1
  14. package/{lib/JSON.clj → dist/lib/JSON.rgr} +105 -2
  15. package/{lib/JinxProcess.clj → dist/lib/JinxProcess.rgr} +3 -3
  16. package/{lib/Storage.clj → dist/lib/Storage.rgr} +1 -1
  17. package/{lib/Timers.clj → dist/lib/Timers.rgr} +176 -170
  18. package/{lib/ViewLib.clj → dist/lib/ViewLib.rgr} +1 -1
  19. package/dist/lib/lib/ACEEditor.rgr +5 -0
  20. package/dist/lib/lib/Ajax.rgr +196 -0
  21. package/dist/lib/lib/CmdParams.rgr +72 -0
  22. package/dist/lib/lib/Crypto.rgr +90 -0
  23. package/dist/lib/lib/DOMLib.rgr +307 -0
  24. package/{examples/3D/Engine3D.clj → dist/lib/lib/Engine3D.rgr} +870 -857
  25. package/dist/lib/lib/ImmutableVector.rgr +364 -0
  26. package/dist/lib/lib/IndexedDB.rgr +32 -0
  27. package/{compiler/JSON.clj → dist/lib/lib/JSON.rgr} +106 -3
  28. package/dist/lib/lib/JinxProcess.rgr +838 -0
  29. package/dist/lib/lib/SQL.rgr +44 -0
  30. package/dist/lib/lib/ServiceLib.rgr +9 -0
  31. package/dist/lib/lib/Storage.rgr +89 -0
  32. package/dist/lib/lib/Time.rgr +75 -0
  33. package/dist/lib/lib/Timers.rgr +176 -0
  34. package/dist/lib/lib/TypedArrays.rgr +14 -0
  35. package/dist/lib/lib/ViewLib.rgr +851 -0
  36. package/dist/lib/lib/WebLib.rgr +47 -0
  37. package/dist/lib/lib/WebServerLib.rgr +137 -0
  38. package/{lib/ranger-dir.clj → dist/lib/lib/ranger-dir.rgr} +1 -1
  39. package/{compiler/stdlib.clj → dist/lib/lib/stdlib.rgr} +42 -19
  40. package/{lib/stdops.clj → dist/lib/lib/stdops.rgr} +1 -1
  41. package/dist/lib/ranger-dir.rgr +175 -0
  42. package/{lib/stdlib.clj → dist/lib/stdlib.rgr} +2 -2
  43. package/dist/lib/stdops.rgr +168 -0
  44. package/dist/package.json +47 -0
  45. package/{compiler/bin/output.js → dist/rgrc.js} +15377 -7936
  46. package/dist/stdops.rgr +168 -0
  47. package/package.json +196 -39
  48. package/adventofcode/day1/bin/LambdaSignature1.java +0 -3
  49. package/adventofcode/day1/bin/LambdaSignature2.java +0 -3
  50. package/adventofcode/day1/bin/LambdaSignature3.java +0 -3
  51. package/adventofcode/day1/bin/day1.cpp +0 -124
  52. package/adventofcode/day1/bin/day1.go +0 -75
  53. package/adventofcode/day1/bin/day1.js +0 -45
  54. package/adventofcode/day1/bin/day1.php +0 -46
  55. package/adventofcode/day1/bin/day1.scala +0 -48
  56. package/adventofcode/day1/bin/day1.swift +0 -48
  57. package/adventofcode/day1/bin/day1_part2.cpp +0 -180
  58. package/adventofcode/day1/bin/day1_part2.go +0 -123
  59. package/adventofcode/day1/bin/day1_part2.js +0 -76
  60. package/adventofcode/day1/bin/day1_part2.php +0 -88
  61. package/adventofcode/day1/bin/day1_part2.scala +0 -81
  62. package/adventofcode/day1/bin/day1_part2.swift +0 -91
  63. package/adventofcode/day1/bin/day_one.java +0 -38
  64. package/adventofcode/day1/bin/day_one_part_two.java +0 -57
  65. package/adventofcode/day1/bin/operatorsOf.java +0 -37
  66. package/adventofcode/day1/bin/operatorsOf_5.java +0 -10
  67. package/adventofcode/day1/bin/operatorsOfboolean_5.java +0 -10
  68. package/adventofcode/day1/bin/variant.hpp +0 -2416
  69. package/adventofcode/day1/compile.bat +0 -7
  70. package/adventofcode/day1/compile2.bat +0 -7
  71. package/adventofcode/day1/day1.clj +0 -19
  72. package/adventofcode/day1/day1_part2.clj +0 -43
  73. package/adventofcode/day1/input1.txt +0 -1
  74. package/adventofcode/day2/bin/LambdaSignature1.class +0 -0
  75. package/adventofcode/day2/bin/LambdaSignature1.java +0 -3
  76. package/adventofcode/day2/bin/LambdaSignature2.class +0 -0
  77. package/adventofcode/day2/bin/LambdaSignature2.java +0 -3
  78. package/adventofcode/day2/bin/day2.cpp +0 -133
  79. package/adventofcode/day2/bin/day2.go +0 -85
  80. package/adventofcode/day2/bin/day2.js +0 -45
  81. package/adventofcode/day2/bin/day2.php +0 -59
  82. package/adventofcode/day2/bin/day2.scala +0 -54
  83. package/adventofcode/day2/bin/day2.swift +0 -62
  84. package/adventofcode/day2/bin/day2_part2.cpp +0 -150
  85. package/adventofcode/day2/bin/day2_part2.go +0 -101
  86. package/adventofcode/day2/bin/day2_part2.js +0 -54
  87. package/adventofcode/day2/bin/day2_part2.php +0 -80
  88. package/adventofcode/day2/bin/day2_part2.scala +0 -68
  89. package/adventofcode/day2/bin/day2_part2.swift +0 -82
  90. package/adventofcode/day2/bin/day_two.java +0 -61
  91. package/adventofcode/day2/bin/day_two_part_two$1$1$1.class +0 -0
  92. package/adventofcode/day2/bin/day_two_part_two$1$1.class +0 -0
  93. package/adventofcode/day2/bin/day_two_part_two$1.class +0 -0
  94. package/adventofcode/day2/bin/day_two_part_two.class +0 -0
  95. package/adventofcode/day2/bin/day_two_part_two.java +0 -80
  96. package/adventofcode/day2/bin/operatorsOf.class +0 -0
  97. package/adventofcode/day2/bin/operatorsOf.java +0 -18
  98. package/adventofcode/day2/bin/variant.hpp +0 -2416
  99. package/adventofcode/day2/compile.bat +0 -7
  100. package/adventofcode/day2/compile2.bat +0 -7
  101. package/adventofcode/day2/day2.clj +0 -60
  102. package/adventofcode/day2/day2_part2.clj +0 -69
  103. package/adventofcode/day2/input1.txt +0 -1
  104. package/adventofcode/day3/bin/Grid.java +0 -92
  105. package/adventofcode/day3/bin/GridRow.java +0 -5
  106. package/adventofcode/day3/bin/LambdaSignature1.java +0 -3
  107. package/adventofcode/day3/bin/LambdaSignature2.java +0 -3
  108. package/adventofcode/day3/bin/LambdaSignature3.java +0 -3
  109. package/adventofcode/day3/bin/day3.cpp +0 -64
  110. package/adventofcode/day3/bin/day3.go +0 -55
  111. package/adventofcode/day3/bin/day3.js +0 -42
  112. package/adventofcode/day3/bin/day3.php +0 -41
  113. package/adventofcode/day3/bin/day3.scala +0 -52
  114. package/adventofcode/day3/bin/day3.swift +0 -43
  115. package/adventofcode/day3/bin/day3_part2.cpp +0 -216
  116. package/adventofcode/day3/bin/day3_part2.go +0 -188
  117. package/adventofcode/day3/bin/day3_part2.js +0 -123
  118. package/adventofcode/day3/bin/day3_part2.php +0 -135
  119. package/adventofcode/day3/bin/day3_part2.swift +0 -131
  120. package/adventofcode/day3/bin/day_three_part_two.java +0 -43
  121. package/adventofcode/day3/bin/day_two.java +0 -42
  122. package/adventofcode/day3/bin/operatorsOf.java +0 -14
  123. package/adventofcode/day3/bin/variant.hpp +0 -2416
  124. package/adventofcode/day3/compile.bat +0 -7
  125. package/adventofcode/day3/compile2.bat +0 -7
  126. package/adventofcode/day3/day3.clj +0 -42
  127. package/adventofcode/day3/day3_part2.clj +0 -112
  128. package/adventofcode/day4/bin/LambdaSignature1.java +0 -3
  129. package/adventofcode/day4/bin/day4.cpp +0 -118
  130. package/adventofcode/day4/bin/day4.go +0 -75
  131. package/adventofcode/day4/bin/day4.js +0 -40
  132. package/adventofcode/day4/bin/day4.php +0 -52
  133. package/adventofcode/day4/bin/day4.scala +0 -47
  134. package/adventofcode/day4/bin/day4.swift +0 -56
  135. package/adventofcode/day4/bin/day4_part2.go +0 -129
  136. package/adventofcode/day4/bin/day4_part2.js +0 -72
  137. package/adventofcode/day4/bin/day_four.java +0 -41
  138. package/adventofcode/day4/bin/inputData.java +0 -7
  139. package/adventofcode/day4/bin/operatorsOf.java +0 -11
  140. package/adventofcode/day4/bin/variant.hpp +0 -2416
  141. package/adventofcode/day4/compile.bat +0 -7
  142. package/adventofcode/day4/compile2.bat +0 -7
  143. package/adventofcode/day4/day4.clj +0 -32
  144. package/adventofcode/day4/day4_part2.clj +0 -44
  145. package/adventofcode/day4/input.clj +0 -519
  146. package/adventofcode/day4/input.txt +0 -512
  147. package/bin/api.ts +0 -24471
  148. package/bin/compiler.ts +0 -24482
  149. package/bin/output.js +0 -23819
  150. package/compiler/ColorConsole.clj +0 -22
  151. package/compiler/ContextOperators.clj +0 -75
  152. package/compiler/FlowEnterVarDef.clj +0 -223
  153. package/compiler/InputFileSystem.clj +0 -276
  154. package/compiler/RangerDocs.clj +0 -7
  155. package/compiler/TFactory.clj +0 -146
  156. package/compiler/TFiles.clj +0 -23
  157. package/compiler/TFlow.clj +0 -39
  158. package/compiler/TNodeFactory.clj +0 -84
  159. package/compiler/TTypes.clj +0 -188
  160. package/compiler/VirtualCompiler.clj +0 -807
  161. package/compiler/bin/ng_Compiler.js +0 -23779
  162. package/compiler/commonmark_plugin.clj +0 -359
  163. package/compiler/feat2.bat +0 -2
  164. package/compiler/feats.bat +0 -9
  165. package/compiler/feature_tests.clj +0 -192
  166. package/compiler/index.js +0 -2
  167. package/compiler/issue_57.clj +0 -25
  168. package/compiler/makefile_plugin.clj +0 -135
  169. package/compiler/markdown_plugin.clj +0 -386
  170. package/compiler/maven_plugin.clj +0 -162
  171. package/compiler/ng_AndroidPageWriter.clj +0 -299
  172. package/compiler/ng_CodeNode.clj +0 -756
  173. package/compiler/ng_CodeNodeCompilerExtensions.clj +0 -839
  174. package/compiler/ng_Compiler.clj +0 -49
  175. package/compiler/ng_CompilerGeneric.clj +0 -260
  176. package/compiler/ng_CompilerOrig.clj +0 -854
  177. package/compiler/ng_DictNode.clj +0 -346
  178. package/compiler/ng_DictNode2.clj +0 -316
  179. package/compiler/ng_Execute.clj +0 -138
  180. package/compiler/ng_Execute1.clj +0 -129
  181. package/compiler/ng_FlowWork.clj +0 -3951
  182. package/compiler/ng_LiveCompiler.clj +0 -1109
  183. package/compiler/ng_RagnerJavaScriptClassWriter.clj +0 -402
  184. package/compiler/ng_RangerActiveOperators.clj +0 -86
  185. package/compiler/ng_RangerAppClassDesc.clj +0 -400
  186. package/compiler/ng_RangerAppEnums.clj +0 -86
  187. package/compiler/ng_RangerAppFunctionDesc.clj +0 -127
  188. package/compiler/ng_RangerAppMessages.clj +0 -15
  189. package/compiler/ng_RangerAppOperatorDesc.clj +0 -20
  190. package/compiler/ng_RangerAppParamDesc.clj +0 -388
  191. package/compiler/ng_RangerAppWriterContext.clj +0 -1793
  192. package/compiler/ng_RangerArgMatch.clj +0 -638
  193. package/compiler/ng_RangerCSharpClassWriter.clj +0 -484
  194. package/compiler/ng_RangerCppClassWriter.clj +0 -1023
  195. package/compiler/ng_RangerDocGenerator.clj +0 -305
  196. package/compiler/ng_RangerFlowParser.clj +0 -4992
  197. package/compiler/ng_RangerFlowParserOrig.clj +0 -4002
  198. package/compiler/ng_RangerGenericClassWriter.clj +0 -573
  199. package/compiler/ng_RangerGolangClassWriter.clj +0 -1766
  200. package/compiler/ng_RangerImmutableExtension.clj +0 -77
  201. package/compiler/ng_RangerJava7ClassWriter.clj +0 -961
  202. package/compiler/ng_RangerJavaScriptClassWriter.clj +0 -1040
  203. package/compiler/ng_RangerKotlinClassWriter.clj +0 -372
  204. package/compiler/ng_RangerLanguageWriters.clj +0 -14
  205. package/compiler/ng_RangerLispParser.clj +0 -873
  206. package/compiler/ng_RangerPHPClassWriter.clj +0 -643
  207. package/compiler/ng_RangerPlugin.clj +0 -41
  208. package/compiler/ng_RangerRangerClassWriter.clj +0 -357
  209. package/compiler/ng_RangerRustClassWriter.clj +0 -420
  210. package/compiler/ng_RangerScalaClassWriter.clj +0 -818
  211. package/compiler/ng_RangerSerializeClass.clj +0 -502
  212. package/compiler/ng_RangerServiceBuilder.clj +0 -63
  213. package/compiler/ng_RangerSwift3ClassWriter.clj +0 -809
  214. package/compiler/ng_RangerSwiftClassWriter.clj +0 -0
  215. package/compiler/ng_RangerTypeClass.clj +0 -45
  216. package/compiler/ng_SourceParser.clj +0 -241
  217. package/compiler/ng_SourceParser2.clj +0 -214
  218. package/compiler/ng_WebPageWriter.clj +0 -39
  219. package/compiler/ng_jsonParser.clj +0 -340
  220. package/compiler/ng_p_test.clj +0 -1711
  221. package/compiler/ng_parser.clj +0 -911
  222. package/compiler/ng_parser2.clj +0 -735
  223. package/compiler/ng_parser2_backup.clj +0 -1679
  224. package/compiler/ng_parser_backup.clj +0 -886
  225. package/compiler/ng_parser_ok.clj +0 -1718
  226. package/compiler/ng_parser_ok2.clj +0 -1717
  227. package/compiler/ng_parser_std_match.clj +0 -687
  228. package/compiler/ng_parser_std_match2.clj +0 -1012
  229. package/compiler/ng_parser_v2.clj +0 -1251
  230. package/compiler/ng_ui.clj +0 -403
  231. package/compiler/ng_ui_test.clj +0 -18
  232. package/compiler/ng_writer.clj +0 -338
  233. package/compiler/ng_xmlParser.clj +0 -472
  234. package/compiler/ng_xmlParser2.clj +0 -317
  235. package/compiler/ng_xmlParser3.clj +0 -251
  236. package/compiler/opdoc.bat +0 -4
  237. package/compiler/operators.md +0 -290
  238. package/compiler/p.bat +0 -4
  239. package/compiler/package.json +0 -10
  240. package/compiler/pcmd.bat +0 -4
  241. package/compiler/pcmd2.bat +0 -3
  242. package/compiler/plaintext_plugin.clj +0 -69
  243. package/compiler/plugin.bat +0 -19
  244. package/compiler/plugin2.bat +0 -4
  245. package/compiler/plugin_app.bat +0 -3
  246. package/compiler/plugin_apps.clj +0 -27
  247. package/compiler/plugins.bat +0 -10
  248. package/compiler/reveal_plugin.clj +0 -409
  249. package/compiler/simplePlugin.clj +0 -780
  250. package/compiler/t.bat +0 -3
  251. package/compiler/test_any.clj +0 -43
  252. package/compiler/test_call.clj +0 -141
  253. package/compiler/test_chain.clj +0 -79
  254. package/compiler/test_json.clj +0 -10
  255. package/compiler/test_lambda.clj +0 -153
  256. package/compiler/test_pcmd.clj +0 -32
  257. package/compiler/test_pcmd2.clj +0 -29
  258. package/compiler/test_plugin.clj +0 -237
  259. package/compiler/test_readfile.clj +0 -13
  260. package/compiler/test_reveal.clj +0 -19
  261. package/compiler/test_slides.clj +0 -312
  262. package/compiler/test_types.clj +0 -143
  263. package/compiler/test_types2.clj +0 -49
  264. package/compiler/test_types3.clj +0 -53
  265. package/compiler/test_var.clj +0 -40
  266. package/compiler/tonpm.bat +0 -14
  267. package/compiler/tonpm2.bat +0 -12
  268. package/compiler/ui_plugin.clj +0 -507
  269. package/compiler/ui_plugin2.clj +0 -427
  270. package/compiler/update-git.bat +0 -3
  271. package/compiler/vcomp.bat +0 -4
  272. package/compiler/viewbuilder_Android.clj +0 -176
  273. package/compiler/viewbuilder_Web.clj +0 -105
  274. package/dist/bin/api.js +0 -32422
  275. package/dist/bin/compiler.d.ts +0 -1638
  276. package/dist/bin/compiler.js +0 -32444
  277. package/examples/3D/bin/test_3d.js +0 -329
  278. package/examples/3D/test_3d.clj +0 -385
  279. package/examples/EVGColor/EVGColor.clj +0 -310
  280. package/examples/EVGColor/EVGColorContext.clj +0 -176
  281. package/examples/EVGColor/bin/EVGColor.js +0 -286
  282. package/examples/EVGColor/bin/minimized.js +0 -286
  283. package/examples/SVGPath/SVGPath.clj +0 -625
  284. package/examples/SVGPath/Vec2.clj +0 -103
  285. package/examples/SVGPath/bin/SVGPath.cpp +0 -887
  286. package/examples/SVGPath/bin/SVGPath.js +0 -682
  287. package/examples/SVGPath/bin/SVGPath.ts +0 -711
  288. package/examples/SVGPath/bin/minimized.js +0 -578
  289. package/examples/SVGPath/bin/variant.hpp +0 -2416
  290. package/examples/minification/Vec2.clj +0 -103
  291. package/examples/minification/bin/minified.js +0 -44
  292. package/examples/minification/bin/test.js +0 -117
  293. package/examples/minification/test.clj +0 -13
  294. package/fiddle/VirtualCompiler.js +0 -23495
  295. package/fiddle/browser_editor.js +0 -13240
  296. package/fiddle/compileEnv.js +0 -1
  297. package/fiddle/compileEnv.json +0 -1
  298. package/fiddle/lang_data.js +0 -1
  299. package/index.html +0 -18
  300. package/native/httpd/HttpTester.clj +0 -33
  301. package/native/httpd/RangerWebService.clj +0 -81
  302. package/operators.md +0 -290
  303. package/tsconfig.json +0 -29
  304. package/versions/cpp/compiler.cpp +0 -15032
  305. package/versions/es6/compiler.js +0 -12860
  306. package/versions/go/compiler.go +0 -21338
  307. package/versions/java/AfterCodeNode.java +0 -4
  308. package/versions/java/ClassJoinPoint.java +0 -6
  309. package/versions/java/CodeFile.java +0 -42
  310. package/versions/java/CodeFileSystem.java +0 -72
  311. package/versions/java/CodeNode.java +0 -807
  312. package/versions/java/CodeSlice.java +0 -13
  313. package/versions/java/CodeWriter.java +0 -185
  314. package/versions/java/ColorConsole.java +0 -8
  315. package/versions/java/CompilerInterface.java +0 -213
  316. package/versions/java/DictNode.java +0 -353
  317. package/versions/java/LiveCompiler.java +0 -772
  318. package/versions/java/NodeEvalState.java +0 -24
  319. package/versions/java/OpFindResult.java +0 -6
  320. package/versions/java/RangerAppArrayValue.java +0 -7
  321. package/versions/java/RangerAppClassDesc.java +0 -217
  322. package/versions/java/RangerAppEnum.java +0 -14
  323. package/versions/java/RangerAppFunctionDesc.java +0 -20
  324. package/versions/java/RangerAppHashValue.java +0 -11
  325. package/versions/java/RangerAppInterfaceImpl.java +0 -6
  326. package/versions/java/RangerAppMethodVariants.java +0 -6
  327. package/versions/java/RangerAppParamDesc.java +0 -321
  328. package/versions/java/RangerAppTodo.java +0 -6
  329. package/versions/java/RangerAppValue.java +0 -10
  330. package/versions/java/RangerAppWriterContext.java +0 -800
  331. package/versions/java/RangerArgMatch.java +0 -317
  332. package/versions/java/RangerBackReference.java +0 -7
  333. package/versions/java/RangerCSharpClassWriter.java +0 -287
  334. package/versions/java/RangerCompilerMessage.java +0 -9
  335. package/versions/java/RangerCppClassWriter.java +0 -725
  336. package/versions/java/RangerFlowParser.java +0 -2142
  337. package/versions/java/RangerGenericClassWriter.java +0 -367
  338. package/versions/java/RangerGolangClassWriter.java +0 -1379
  339. package/versions/java/RangerJava7ClassWriter.java +0 -652
  340. package/versions/java/RangerJavaScriptClassWriter.java +0 -305
  341. package/versions/java/RangerKotlinClassWriter.java +0 -380
  342. package/versions/java/RangerLispParser.java +0 -845
  343. package/versions/java/RangerNodeValue.java +0 -9
  344. package/versions/java/RangerPHPClassWriter.java +0 -527
  345. package/versions/java/RangerParamEventHandler.java +0 -6
  346. package/versions/java/RangerParamEventList.java +0 -5
  347. package/versions/java/RangerParamEventMap.java +0 -27
  348. package/versions/java/RangerRangerClassWriter.java +0 -268
  349. package/versions/java/RangerRefForce.java +0 -7
  350. package/versions/java/RangerScalaClassWriter.java +0 -365
  351. package/versions/java/RangerSerializeClass.java +0 -148
  352. package/versions/java/RangerSwift3ClassWriter.java +0 -548
  353. package/versions/java/RangerTypeClass.java +0 -17
  354. package/versions/java/SourceCode.java +0 -65
  355. package/versions/php/compiler.php +0 -13830
  356. package/versions/swift3/compiler.swift +0 -12542
  357. /package/{lib/ACEEditor.clj → dist/lib/ACEEditor.rgr} +0 -0
  358. /package/{lib/SQL.clj → dist/lib/SQL.rgr} +0 -0
  359. /package/{lib/ServiceLib.clj → dist/lib/ServiceLib.rgr} +0 -0
  360. /package/{lib/Time.clj → dist/lib/Time.rgr} +0 -0
  361. /package/{lib/TypedArrays.clj → dist/lib/TypedArrays.rgr} +0 -0
  362. /package/{lib/WebLib.clj → dist/lib/WebLib.rgr} +0 -0
  363. /package/{lib/WebServerLib.clj → dist/lib/WebServerLib.rgr} +0 -0
@@ -1,756 +0,0 @@
1
- Import "stdlib.clj"
2
-
3
- ; Import "Collection.clj"
4
-
5
- ; Import "TFactory.clj"
6
- Import "TNodeFactory.clj"
7
- Import "ng_RangerAppEnums.clj"
8
-
9
- class SourceCode {
10
- def code:string ""
11
- def lines:[string]
12
- def filename:string ""
13
- Constructor (code_str:string ) {
14
- code = code_str
15
- lines = (strsplit code_str "\n")
16
- }
17
-
18
- fn getLineString:string (line_index:int) {
19
- if (> (array_length lines) line_index) {
20
- return (itemAt lines line_index)
21
- }
22
- return ""
23
- }
24
- fn getLine:int (sp:int) {
25
- def cnt:int 0
26
- for lines str:string i {
27
- cnt = (+ cnt (+ (strlen str) 1)))
28
- if (> cnt sp) {
29
- return i
30
- }
31
- }
32
- return -1
33
- }
34
- fn getColumnStr:string (sp:int) {
35
- def cnt:int 0
36
- def last_col:int 0
37
- for lines str:string i {
38
- cnt = (+ cnt (+ (strlen str) 1)))
39
- if (> cnt sp) {
40
- def ll:int (sp - last_col)
41
- def ss:string ""
42
- while (ll > 0) {
43
- ss = ss + " "
44
- ll = ll - 1
45
- }
46
- return ss
47
- }
48
- last_col = cnt
49
- }
50
- return ""
51
- }
52
- fn getColumn:int (sp:int) {
53
- def cnt:int 0
54
- def last_col:int 0
55
- for lines str:string i {
56
- cnt = (+ cnt (+ (strlen str) 1)))
57
- if (> cnt sp) {
58
- return (sp - last_col)
59
- }
60
- last_col = cnt
61
- }
62
- return -1
63
- }
64
- }
65
-
66
-
67
- class CodeNodeLiteral @serialize(true) {
68
- def expression:boolean false
69
- def vref:string ""
70
- def is_block_node:boolean false
71
- def type_name:string ""
72
- def key_type:string ""
73
- def array_type:string ""
74
- def ns:[string]
75
- def has_vref_annotation:boolean false
76
- def vref_annotation:CodeNodeLiteral
77
- def has_type_annotation:boolean false
78
- def type_annotation:CodeNodeLiteral
79
- def parsed_type:RangerNodeType RangerNodeType.NoType
80
- def value_type:RangerNodeType RangerNodeType.NoType
81
- def double_value:double 0.0
82
- def string_value:string ""
83
- def int_value:int 0
84
- def boolean_value:boolean false
85
- def expression_value:CodeNodeLiteral
86
- def props:[string:CodeNodeLiteral]
87
- def prop_keys:[string]
88
- def comments:[CodeNodeLiteral]
89
- def children:[CodeNodeLiteral]
90
- def attrs:[CodeNodeLiteral]
91
- }
92
-
93
- operator type:void all {
94
- fn toLiteral:CodeNodeLiteral ( node:CodeNode ) {
95
- def nn (new CodeNodeLiteral)
96
- nn.expression = node.expression
97
- nn.vref = node.vref
98
- nn.is_block_node = node.is_block_node
99
- nn.type_name = node.type_name
100
- nn.key_type = node.key_type
101
- nn.array_type = node.array_type
102
- nn.ns = (clone node.ns)
103
- nn.has_vref_annotation = node.has_vref_annotation
104
- if(!null? node.vref_annotation) {
105
- nn.vref_annotation = (toLiteral (unwrap node.vref_annotation))
106
- }
107
- nn.has_type_annotation = node.has_type_annotation
108
- if(!null? node.type_annotation) {
109
- nn.type_annotation = (toLiteral (unwrap node.type_annotation))
110
- }
111
- nn.parsed_type = node.parsed_type
112
- nn.value_type = node.value_type
113
- nn.double_value = node.double_value
114
- nn.string_value = node.string_value
115
- nn.int_value = node.int_value
116
- nn.boolean_value = node.boolean_value
117
- if(!null? node.expression_value) {
118
- nn.expression_value = (toLiteral (unwrap node.expression_value))
119
- }
120
- forEach node.props {
121
- set nn.props index (toLiteral item)
122
- }
123
- nn.prop_keys = (clone node.prop_keys)
124
- forEach node.comments {
125
- push nn.comments (toLiteral item)
126
- }
127
- forEach node.children {
128
- push nn.children (toLiteral item)
129
- }
130
- forEach node.attrs {
131
- push nn.attrs (toLiteral item)
132
- }
133
- return nn
134
- }
135
-
136
- fn fromLiteral:CodeNode ( node:CodeNodeLiteral ) {
137
- def source (new SourceCode('<literal>'))
138
- def nn (new CodeNode(source 0 0))
139
- nn.expression = node.expression
140
- nn.vref = node.vref
141
- nn.is_block_node = node.is_block_node
142
- nn.type_name = node.type_name
143
- nn.key_type = node.key_type
144
- nn.array_type = node.array_type
145
- nn.ns = (clone node.ns)
146
- nn.has_vref_annotation = node.has_vref_annotation
147
- if(!null? node.vref_annotation) {
148
- nn.vref_annotation = (fromLiteral (unwrap node.vref_annotation))
149
- }
150
- nn.has_type_annotation = node.has_type_annotation
151
- if(!null? node.type_annotation) {
152
- nn.type_annotation = (fromLiteral (unwrap node.type_annotation))
153
- }
154
- nn.parsed_type = node.parsed_type
155
- nn.value_type = node.value_type
156
- nn.double_value = node.double_value
157
- nn.string_value = node.string_value
158
- nn.int_value = node.int_value
159
- nn.boolean_value = node.boolean_value
160
- if(!null? node.expression_value) {
161
- nn.expression_value = (fromLiteral (unwrap node.expression_value))
162
- }
163
- forEach node.props {
164
- set nn.props index (fromLiteral item)
165
- }
166
- nn.prop_keys = (clone node.prop_keys)
167
- forEach node.comments {
168
- push nn.comments (fromLiteral item)
169
- }
170
- forEach node.children {
171
- push nn.children (fromLiteral item)
172
- }
173
- forEach node.attrs {
174
- push nn.attrs (fromLiteral item)
175
- }
176
- return nn
177
- }
178
-
179
- }
180
-
181
- class CodeNode {
182
- def code:SourceCode
183
- def sp:int 0
184
- def ep:int 0
185
- def row 0
186
- def col 0
187
- def has_operator:boolean false
188
- def disabled_node:boolean false
189
- def op_index:int 0
190
- def is_array_literal false
191
- def is_system_class:boolean false
192
- def is_plugin false
193
- def is_direct_method_call false
194
- def mutable_def:boolean false
195
- def expression:boolean false
196
- def vref:string ""
197
- def is_block_node:boolean false
198
- def infix_operator:boolean false
199
- def infix_node:CodeNode
200
- def infix_subnode:boolean false
201
- def has_lambda:boolean false
202
- def has_lambda_call:boolean false
203
- def has_call false
204
- ; def method_type:RangerMethodCallType RangerMethodCallType.NoType
205
- def operator_pred:int 0
206
- def to_the_right:boolean false
207
- def right_node:CodeNode
208
- def type_type:string ""
209
- def type_name:string ""
210
- def key_type:string ""
211
- def array_type:string ""
212
- def ns:[string]
213
- def has_vref_annotation:boolean false
214
- def vref_annotation:CodeNode
215
- def has_type_annotation:boolean false
216
- def type_annotation:CodeNode
217
- def parsed_type:RangerNodeType RangerNodeType.NoType
218
- def value_type:RangerNodeType RangerNodeType.NoType
219
- def ref_type:RangerNodeRefType RangerNodeRefType.NoType
220
- def ref_need_assign:int 0
221
- def double_value:double 0.0
222
- def string_value:string ""
223
- def int_value:int 0
224
- def boolean_value:boolean false
225
- def expression_value:CodeNode
226
- def props:[string:CodeNode]
227
- def prop_keys:[string]
228
- def comments:[CodeNode]
229
- def children:[CodeNode]
230
- def parent@(weak):CodeNode
231
- def attrs:[CodeNode]
232
- def appGUID:string ""
233
-
234
- ; register expressions are expressions that must be moved before this expression
235
- def register_name:string ""
236
- def register_expressions:[CodeNode]
237
- def after_expression:[CodeNode]
238
-
239
- Constructor (source:SourceCode start:int end:int) {
240
- sp = start
241
- ep = end
242
- code = source
243
- }
244
-
245
- fn childCnt:int () {
246
- return (array_length children)
247
- }
248
-
249
- fn getChild@(optional):CodeNode ( index:int ) {
250
- def res:CodeNode
251
- if( (index >=0 ) && ((array_length children) > index ) ) {
252
- res = (itemAt children index)
253
- }
254
- return res
255
- }
256
-
257
- static fn vref1:CodeNode (name:string) {
258
- def code (new SourceCode( name 0 (strlen name)))
259
- def newNode@(lives):CodeNode (new CodeNode (code 0 (strlen name)))
260
- newNode.vref = name
261
- newNode.value_type = RangerNodeType.VRef
262
- newNode.parsed_type = RangerNodeType.VRef
263
- newNode.ns = (strsplit name ".")
264
- return newNode
265
- }
266
-
267
- static fn vref2:CodeNode (name:string typeName:string) {
268
- def code (new SourceCode( name 0 (strlen name)))
269
- def newNode@(lives):CodeNode (new CodeNode (code 0 (strlen name)))
270
- newNode.vref = name
271
- newNode.type_name = typeName
272
- newNode.value_type = RangerNodeType.VRef
273
- newNode.parsed_type = RangerNodeType.VRef
274
- newNode.ns = (strsplit name ".")
275
- return newNode
276
- }
277
-
278
- static fn newStr:CodeNode (name:string) {
279
- def code (new SourceCode( "" 0 0))
280
- def newNode@(lives):CodeNode (new CodeNode (code 0 0))
281
- newNode.string_value = name
282
- newNode.value_type = RangerNodeType.String
283
- newNode.parsed_type = RangerNodeType.String
284
- return newNode
285
- }
286
-
287
- static fn newBool:CodeNode (value:boolean) {
288
- def code (new SourceCode( "" 0 0))
289
- def newNode@(lives):CodeNode (new CodeNode (code 0 0))
290
- newNode.boolean_value = value
291
- newNode.value_type = RangerNodeType.Boolean
292
- newNode.parsed_type = RangerNodeType.Boolean
293
- return newNode
294
- }
295
-
296
- static fn newInt:CodeNode (value:int) {
297
- def code (new SourceCode( "" 0 0))
298
- def newNode@(lives):CodeNode (new CodeNode (code 0 0))
299
- newNode.int_value = value
300
- newNode.value_type = RangerNodeType.Integer
301
- newNode.parsed_type = RangerNodeType.Integer
302
- return newNode
303
- }
304
-
305
- static fn newDouble:CodeNode (value:double) {
306
- def code (new SourceCode( "" 0 0))
307
- def newNode@(lives):CodeNode (new CodeNode (code 0 0))
308
- newNode.double_value = value
309
- newNode.value_type = RangerNodeType.Double
310
- newNode.parsed_type = RangerNodeType.Double
311
- return newNode
312
- }
313
-
314
- static fn op:CodeNode ( opName:string ) {
315
- def code (new SourceCode( "" 0 0))
316
- def newNode@(lives):CodeNode (new CodeNode (code 0 0))
317
- newNode.expression = true
318
- def opNode (r.vref opName)
319
- push newNode.children opNode
320
- return newNode
321
- }
322
-
323
- static fn op2:CodeNode ( opName:string param1@(strong):CodeNode ) {
324
- def code (new SourceCode( "" 0 0))
325
- def newNode@(lives):CodeNode (new CodeNode (code 0 0))
326
- newNode.expression = true
327
- def opNode (r.vref opName)
328
- push newNode.children opNode
329
- push newNode.children param1
330
- return newNode
331
- }
332
-
333
- static fn op3:CodeNode ( opName:string list:[CodeNode] ) {
334
- def code (new SourceCode( "" 0 0))
335
- def newNode@(lives):CodeNode (new CodeNode (code 0 0))
336
- newNode.expression = true
337
- def opNode (r.vref opName)
338
- push newNode.children opNode
339
- for list item@(lives):CodeNode i {
340
- push newNode.children item
341
- }
342
- return newNode
343
- }
344
-
345
- static fn fromList:CodeNode ( list:[CodeNode] ) {
346
- def code (new SourceCode( "" 0 0))
347
- def newNode@(lives):CodeNode (new CodeNode (code 0 0))
348
- newNode.expression = true
349
- for list item@(lives):CodeNode i {
350
- push newNode.children item
351
- item.parent = newNode
352
- }
353
- return newNode
354
- }
355
-
356
- static fn expressionNode:CodeNode () {
357
- def code (new SourceCode( "" 0 0))
358
- def newNode@(lives):CodeNode (new CodeNode (code 0 0))
359
- newNode.expression = true
360
- return newNode
361
- }
362
-
363
- static fn blockNode:CodeNode () {
364
- def code (new SourceCode( "" 0 0))
365
- def newNode@(lives):CodeNode (new CodeNode (code 0 0))
366
- newNode.is_block_node = true
367
- newNode.expression = true
368
- return newNode
369
- }
370
-
371
- static fn blockFromList:CodeNode ( list:[CodeNode] ) {
372
- def code (new SourceCode( "" 0 0))
373
- def newNode@(lives):CodeNode (new CodeNode (code 0 0))
374
- newNode.is_block_node = true
375
- newNode.expression = true
376
- for list item@(lives):CodeNode i {
377
- push newNode.children item
378
- item.parent = newNode
379
- }
380
- return newNode
381
- }
382
-
383
- fn chlen:int () {
384
- return (array_length children)
385
- }
386
-
387
- fn forTree:void ( callback:( fn:void (item:CodeNode i:int)) ) {
388
- for children ch:CodeNode i {
389
- callback(ch i)
390
- ch.forTree(callback)
391
- }
392
- }
393
-
394
- fn parallelTree:void ( otherTree:CodeNode callback:( fn:void (left@(optional):CodeNode right@(optional):CodeNode i:int)) ) {
395
- def left_cnt (size this.children)
396
- def right_cnt (size otherTree.children)
397
-
398
- def cnt (max left_cnt right_cnt)
399
- def i 0
400
- while ( i < cnt ) {
401
- def left@(optional):CodeNode
402
- def right@(optional):CodeNode
403
- if( i < left_cnt ) {
404
- left = (at this.children i)
405
- }
406
- if( i < right_cnt ) {
407
- right = (at otherTree.children i)
408
- }
409
- callback( left right i)
410
- if( (!null? left) && (!null? right)) {
411
- if(has left.children) {
412
- left.parallelTree( (unwrap right) callback)
413
- }
414
- }
415
- i = i + 1
416
- }
417
- }
418
-
419
-
420
- fn walkTreeUntil:void ( callback:( fn:boolean (item:CodeNode i:int)) ) {
421
- for children ch:CodeNode i {
422
- if( callback(ch i) ) {
423
- ch.walkTreeUntil( callback )
424
- }
425
- }
426
- }
427
-
428
- fn getParsedString:string () {
429
- return (substring code.code sp ep)
430
- }
431
-
432
- fn getFilename:string () {
433
- return code.filename
434
- }
435
- fn getFlag@(optional weak):CodeNode (flagName:string) {
436
-
437
- def res:CodeNode
438
- if (false == has_vref_annotation) {
439
- return res
440
- }
441
- for vref_annotation.children ch:CodeNode i {
442
- if (ch.vref == flagName) {
443
- res = ch
444
- return res
445
- }
446
- }
447
- return res
448
- }
449
- fn hasFlag:boolean (flagName:string) {
450
- if (false == has_vref_annotation) {
451
- return false
452
- }
453
- for vref_annotation.children ch:CodeNode i {
454
- if (ch.vref == flagName) {
455
- return true
456
- }
457
- }
458
- return false
459
- }
460
- fn setFlag:void (flagName:string) {
461
- if (false == has_vref_annotation) {
462
- vref_annotation = (new CodeNode ((unwrap code) sp ep))
463
- }
464
- if (this.hasFlag(flagName)) {
465
- return
466
- }
467
- def flag:CodeNode (new CodeNode ((unwrap code) sp ep))
468
- flag.vref = flagName
469
- flag.value_type = RangerNodeType.VRef
470
- flag.parsed_type = flag.value_type
471
- push vref_annotation.children flag
472
- has_vref_annotation = true
473
- }
474
- fn getTypeInformationString:string () {
475
- def s:string ""
476
- if ((strlen vref) > 0) {
477
- s = (s + "<vref:" + vref + ">")
478
- } {
479
- s = (s + "<no.vref>")
480
- }
481
- if ((strlen type_name) > 0) {
482
- s = (s + "<type_name:" + type_name + ">")
483
- } {
484
- s = (s + "<no.type_name>")
485
- }
486
- if ((strlen array_type) > 0) {
487
- s = (s + "<array_type:" + array_type + ">")
488
- } {
489
- s = (s + "<no.array_type>")
490
- }
491
- if ((strlen key_type) > 0) {
492
- s = (s + "<key_type:" + key_type + ">")
493
- } {
494
- s = (s + "<no.key_type>")
495
- }
496
- switch value_type {
497
- case RangerNodeType.Boolean {
498
- s = (s + "<value_type=Boolean>")
499
- }
500
- case RangerNodeType.String {
501
- s = (s + "<value_type=String>")
502
- }
503
- }
504
- return s
505
- }
506
- fn getLine:int () {
507
- return (code.getLine(sp))
508
- }
509
- fn getLineString:string (line_index:int) {
510
- return (code.getLineString(line_index))
511
- }
512
- fn getColStartString:string () {
513
- return (code.getColumnStr(sp))
514
- }
515
- fn getLineAsString:string () {
516
- def idx:int (this.getLine())
517
- def line_name_idx:int (idx + 1)
518
- return ((this.getFilename()) + ", line " + line_name_idx + " : " + (code.getLineString(idx)))
519
- }
520
- fn getSource:string () {
521
- if (ep > sp) {
522
- def start:int sp
523
- def end:int ep
524
- return (substring code.code start end)
525
- }
526
- return ""
527
- }
528
- fn getPositionalString:string () {
529
- if ((ep > sp) && ((ep - sp) < 50)) {
530
- def start:int sp
531
- def end:int ep
532
- start = (start - 100)
533
- end = (end + 50)
534
- if (start < 0) {
535
- start = 0
536
- }
537
- if (end >= (strlen code.code)) {
538
- end = ((strlen code.code) - 1)
539
- }
540
- return (substring code.code start end)
541
- }
542
- return ""
543
- }
544
-
545
- fn isPrimitive:boolean () {
546
- switch value_type {
547
- case RangerNodeType.Double {
548
- return true
549
- }
550
- case RangerNodeType.String {
551
- return true
552
- }
553
- case RangerNodeType.Integer {
554
- return true
555
- }
556
- case RangerNodeType.Boolean {
557
- return true
558
- }
559
- case RangerNodeType.Char {
560
- return true
561
- }
562
- case RangerNodeType.CharBuffer {
563
- return true
564
- }
565
- case RangerNodeType.Enum {
566
- return true
567
- }
568
- }
569
- return false
570
- }
571
-
572
- fn getFirst:CodeNode () {
573
- return (itemAt children 0)
574
- }
575
- fn getSecond:CodeNode () {
576
- return (itemAt children 1)
577
- }
578
- fn getThird:CodeNode () {
579
- return (itemAt children 2)
580
- }
581
- fn isSecondExpr:boolean () {
582
- if ((array_length children) > 1) {
583
- def second:CodeNode (itemAt children 1)
584
- if second.expression {
585
- return true
586
- }
587
- }
588
- return false
589
- }
590
- fn getOperator:string () {
591
- def s:string ""
592
- if ((array_length children) > 0) {
593
- def fc:CodeNode (itemAt children 0)
594
- if (fc.value_type == RangerNodeType.VRef) {
595
- return fc.vref
596
- }
597
- }
598
- return s
599
- }
600
- fn getVRefAt:string (idx:int) {
601
- def s:string ""
602
- if ((array_length children) > idx) {
603
- def fc:CodeNode (itemAt children idx)
604
- return fc.vref
605
- }
606
- return s
607
- }
608
- fn getStringAt:string (idx:int) {
609
- def s:string ""
610
- if ((array_length children) > idx) {
611
- def fc:CodeNode (itemAt children idx)
612
- if (fc.value_type == RangerNodeType.String) {
613
- return fc.string_value
614
- }
615
- }
616
- return s
617
- }
618
- fn hasExpressionProperty:boolean (name:string) {
619
- def ann:CodeNode (get props name)
620
- if (!null? ann) {
621
- return ann.expression
622
- }
623
- return false
624
- }
625
- fn getExpressionProperty@(weak optional):CodeNode (name:string) {
626
- def ann:CodeNode (get props name)
627
- if (!null? ann) {
628
- return ann
629
- }
630
- return ann
631
- }
632
- fn hasIntProperty:boolean (name:string) {
633
- def ann:CodeNode (get props name)
634
- if (!null? ann) {
635
- def fc:CodeNode (itemAt ann.children 0)
636
- if (fc.value_type == RangerNodeType.Integer) {
637
- return true
638
- }
639
- }
640
- return false
641
- }
642
- fn getIntProperty:int (name:string) {
643
- def ann:CodeNode (get props name)
644
- if (!null? ann) {
645
- def fc:CodeNode (itemAt ann.children 0)
646
- if (fc.value_type == RangerNodeType.Integer) {
647
- return fc.int_value
648
- }
649
- }
650
- return 0
651
- }
652
- fn hasDoubleProperty:boolean (name:string) {
653
- def ann:CodeNode (get props name)
654
- if (!null? ann) {
655
- if (ann.value_type == RangerNodeType.Double) {
656
- return true
657
- }
658
- }
659
- return false
660
- }
661
- fn getDoubleProperty:double (name:string) {
662
- def ann:CodeNode (get props name)
663
- if (!null? ann) {
664
- if (ann.value_type == RangerNodeType.Double) {
665
- return ann.double_value
666
- }
667
- }
668
- return 0.0
669
- }
670
- fn setStringProperty (name:string value:string) {
671
- set props name (r.value value)
672
- }
673
- fn hasStringProperty:boolean (name:string) {
674
- if( false == (has props name) ) {
675
- return false
676
- }
677
- def ann:CodeNode (get props name)
678
- if (!null? ann) {
679
- if (ann.value_type == RangerNodeType.String) {
680
- return true
681
- }
682
- }
683
- return false
684
- }
685
- fn getStringProperty:string (name:string) {
686
- def ann:CodeNode (get props name)
687
- if (!null? ann) {
688
- if (ann.value_type == RangerNodeType.String) {
689
- return ann.string_value
690
- }
691
- }
692
- return ""
693
- }
694
- fn hasBooleanProperty:boolean (name:string) {
695
- def ann:CodeNode (get props name)
696
- if (!null? ann) {
697
- if (ann.value_type == RangerNodeType.Boolean) {
698
- return true
699
- }
700
- }
701
- return false
702
- }
703
- fn getBooleanProperty:boolean (name:string) {
704
- def ann:CodeNode (get props name)
705
- if (!null? ann) {
706
- if (ann.value_type == RangerNodeType.Boolean) {
707
- return ann.boolean_value
708
- }
709
- }
710
- return false
711
- }
712
- fn isFirstTypeVref:boolean (vrefName:string) {
713
- if ((array_length children) > 0) {
714
- def fc:CodeNode (itemAt children 0)
715
- if (fc.value_type == RangerNodeType.VRef) {
716
- return true
717
- }
718
- }
719
- return false
720
- }
721
- fn isFirstVref:boolean (vrefName:string) {
722
- if ((array_length children) > 0) {
723
- def fc:CodeNode (itemAt children 0)
724
- if (fc.vref == vrefName) {
725
- return true
726
- }
727
- }
728
- return false
729
- }
730
- fn getString:string () {
731
- return (substring code.code sp ep)
732
- }
733
-
734
-
735
- fn walk:void () {
736
- switch value_type {
737
- case RangerNodeType.Double {
738
- print ("Double : " + double_value)
739
- }
740
- case RangerNodeType.String {
741
- print ("String : " + string_value)
742
- }
743
- }
744
- if expression {
745
- print "("
746
- } {
747
- print (substring code.code sp ep)
748
- }
749
- for children item:CodeNode i {
750
- item.walk()
751
- }
752
- if expression {
753
- print ")"
754
- }
755
- }
756
- }