ranger-compiler 2.1.69 → 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 +991 -96
  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/{bin/output.js → dist/rgrc.js} +15377 -7935
  46. package/dist/stdops.rgr +168 -0
  47. package/package.json +196 -38
  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/compiler/ColorConsole.clj +0 -22
  150. package/compiler/ContextOperators.clj +0 -75
  151. package/compiler/FlowEnterVarDef.clj +0 -223
  152. package/compiler/InputFileSystem.clj +0 -276
  153. package/compiler/RangerDocs.clj +0 -7
  154. package/compiler/TFactory.clj +0 -146
  155. package/compiler/TFiles.clj +0 -23
  156. package/compiler/TFlow.clj +0 -39
  157. package/compiler/TNodeFactory.clj +0 -84
  158. package/compiler/TTypes.clj +0 -188
  159. package/compiler/VirtualCompiler.clj +0 -800
  160. package/compiler/bin/ng_Compiler.js +0 -23779
  161. package/compiler/commonmark_plugin.clj +0 -359
  162. package/compiler/feat2.bat +0 -2
  163. package/compiler/feats.bat +0 -9
  164. package/compiler/feature_tests.clj +0 -192
  165. package/compiler/index.js +0 -2
  166. package/compiler/issue_57.clj +0 -25
  167. package/compiler/makefile_plugin.clj +0 -135
  168. package/compiler/markdown_plugin.clj +0 -386
  169. package/compiler/maven_plugin.clj +0 -162
  170. package/compiler/ng_AndroidPageWriter.clj +0 -299
  171. package/compiler/ng_CodeNode.clj +0 -756
  172. package/compiler/ng_CodeNodeCompilerExtensions.clj +0 -839
  173. package/compiler/ng_Compiler.clj +0 -49
  174. package/compiler/ng_CompilerGeneric.clj +0 -260
  175. package/compiler/ng_CompilerOrig.clj +0 -854
  176. package/compiler/ng_DictNode.clj +0 -346
  177. package/compiler/ng_DictNode2.clj +0 -316
  178. package/compiler/ng_Execute.clj +0 -138
  179. package/compiler/ng_Execute1.clj +0 -129
  180. package/compiler/ng_FlowWork.clj +0 -3951
  181. package/compiler/ng_LiveCompiler.clj +0 -1109
  182. package/compiler/ng_RagnerJavaScriptClassWriter.clj +0 -402
  183. package/compiler/ng_RangerActiveOperators.clj +0 -86
  184. package/compiler/ng_RangerAppClassDesc.clj +0 -400
  185. package/compiler/ng_RangerAppEnums.clj +0 -86
  186. package/compiler/ng_RangerAppFunctionDesc.clj +0 -127
  187. package/compiler/ng_RangerAppMessages.clj +0 -15
  188. package/compiler/ng_RangerAppOperatorDesc.clj +0 -20
  189. package/compiler/ng_RangerAppParamDesc.clj +0 -388
  190. package/compiler/ng_RangerAppWriterContext.clj +0 -1793
  191. package/compiler/ng_RangerArgMatch.clj +0 -638
  192. package/compiler/ng_RangerCSharpClassWriter.clj +0 -484
  193. package/compiler/ng_RangerCppClassWriter.clj +0 -1023
  194. package/compiler/ng_RangerDocGenerator.clj +0 -305
  195. package/compiler/ng_RangerFlowParser.clj +0 -4992
  196. package/compiler/ng_RangerFlowParserOrig.clj +0 -4002
  197. package/compiler/ng_RangerGenericClassWriter.clj +0 -573
  198. package/compiler/ng_RangerGolangClassWriter.clj +0 -1766
  199. package/compiler/ng_RangerImmutableExtension.clj +0 -77
  200. package/compiler/ng_RangerJava7ClassWriter.clj +0 -961
  201. package/compiler/ng_RangerJavaScriptClassWriter.clj +0 -1042
  202. package/compiler/ng_RangerKotlinClassWriter.clj +0 -372
  203. package/compiler/ng_RangerLanguageWriters.clj +0 -14
  204. package/compiler/ng_RangerLispParser.clj +0 -873
  205. package/compiler/ng_RangerPHPClassWriter.clj +0 -643
  206. package/compiler/ng_RangerPlugin.clj +0 -41
  207. package/compiler/ng_RangerRangerClassWriter.clj +0 -357
  208. package/compiler/ng_RangerRustClassWriter.clj +0 -420
  209. package/compiler/ng_RangerScalaClassWriter.clj +0 -818
  210. package/compiler/ng_RangerSerializeClass.clj +0 -502
  211. package/compiler/ng_RangerServiceBuilder.clj +0 -63
  212. package/compiler/ng_RangerSwift3ClassWriter.clj +0 -809
  213. package/compiler/ng_RangerSwiftClassWriter.clj +0 -0
  214. package/compiler/ng_RangerTypeClass.clj +0 -45
  215. package/compiler/ng_SourceParser.clj +0 -241
  216. package/compiler/ng_SourceParser2.clj +0 -214
  217. package/compiler/ng_WebPageWriter.clj +0 -39
  218. package/compiler/ng_jsonParser.clj +0 -340
  219. package/compiler/ng_p_test.clj +0 -1711
  220. package/compiler/ng_parser.clj +0 -911
  221. package/compiler/ng_parser2.clj +0 -735
  222. package/compiler/ng_parser2_backup.clj +0 -1679
  223. package/compiler/ng_parser_backup.clj +0 -886
  224. package/compiler/ng_parser_ok.clj +0 -1718
  225. package/compiler/ng_parser_ok2.clj +0 -1717
  226. package/compiler/ng_parser_std_match.clj +0 -687
  227. package/compiler/ng_parser_std_match2.clj +0 -1012
  228. package/compiler/ng_parser_v2.clj +0 -1251
  229. package/compiler/ng_ui.clj +0 -403
  230. package/compiler/ng_ui_test.clj +0 -18
  231. package/compiler/ng_writer.clj +0 -338
  232. package/compiler/ng_xmlParser.clj +0 -472
  233. package/compiler/ng_xmlParser2.clj +0 -317
  234. package/compiler/ng_xmlParser3.clj +0 -251
  235. package/compiler/opdoc.bat +0 -4
  236. package/compiler/operators.md +0 -290
  237. package/compiler/p.bat +0 -4
  238. package/compiler/package.json +0 -10
  239. package/compiler/pcmd.bat +0 -4
  240. package/compiler/pcmd2.bat +0 -3
  241. package/compiler/plaintext_plugin.clj +0 -69
  242. package/compiler/plugin.bat +0 -19
  243. package/compiler/plugin2.bat +0 -4
  244. package/compiler/plugin_app.bat +0 -3
  245. package/compiler/plugin_apps.clj +0 -27
  246. package/compiler/plugins.bat +0 -10
  247. package/compiler/reveal_plugin.clj +0 -409
  248. package/compiler/simplePlugin.clj +0 -780
  249. package/compiler/t.bat +0 -3
  250. package/compiler/test_any.clj +0 -43
  251. package/compiler/test_call.clj +0 -141
  252. package/compiler/test_chain.clj +0 -79
  253. package/compiler/test_json.clj +0 -10
  254. package/compiler/test_lambda.clj +0 -153
  255. package/compiler/test_pcmd.clj +0 -32
  256. package/compiler/test_pcmd2.clj +0 -29
  257. package/compiler/test_plugin.clj +0 -237
  258. package/compiler/test_readfile.clj +0 -13
  259. package/compiler/test_reveal.clj +0 -19
  260. package/compiler/test_slides.clj +0 -312
  261. package/compiler/test_types.clj +0 -143
  262. package/compiler/test_types2.clj +0 -49
  263. package/compiler/test_types3.clj +0 -53
  264. package/compiler/test_var.clj +0 -40
  265. package/compiler/tonpm.bat +0 -14
  266. package/compiler/tonpm2.bat +0 -12
  267. package/compiler/ui_plugin.clj +0 -507
  268. package/compiler/ui_plugin2.clj +0 -427
  269. package/compiler/update-git.bat +0 -3
  270. package/compiler/vcomp.bat +0 -4
  271. package/compiler/viewbuilder_Android.clj +0 -176
  272. package/compiler/viewbuilder_Web.clj +0 -105
  273. package/dist/bin/api.js +0 -32422
  274. package/dist/bin/api.js.map +0 -1
  275. package/dist/bin/compiler.d.ts +0 -1638
  276. package/dist/bin/compiler.js +0 -32444
  277. package/dist/bin/compiler.js.map +0 -1
  278. package/examples/3D/bin/test_3d.js +0 -329
  279. package/examples/3D/test_3d.clj +0 -385
  280. package/examples/EVGColor/EVGColor.clj +0 -310
  281. package/examples/EVGColor/EVGColorContext.clj +0 -176
  282. package/examples/EVGColor/bin/EVGColor.js +0 -286
  283. package/examples/EVGColor/bin/minimized.js +0 -286
  284. package/examples/SVGPath/SVGPath.clj +0 -625
  285. package/examples/SVGPath/Vec2.clj +0 -103
  286. package/examples/SVGPath/bin/SVGPath.cpp +0 -887
  287. package/examples/SVGPath/bin/SVGPath.js +0 -682
  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
- }