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,735 +0,0 @@
1
- Import "ng_RangerAppEnums.clj"
2
-
3
- class SourceCode {
4
- def code:string ""
5
- def sp:int 0
6
- def ep:int 0
7
- def lines:[string]
8
- def filename:string ""
9
-
10
- Constructor (code_str:string ) {
11
- code = code_str
12
- lines = (strsplit code_str "\n")
13
- }
14
-
15
- fn getLineString:string (line_index:int) {
16
-
17
- if (> (array_length lines) line_index) {
18
- return (itemAt lines line_index)
19
- }
20
- return ""
21
- }
22
-
23
- fn getLine:int (sp:int) {
24
- def cnt:int 0
25
- for lines str:string i {
26
- cnt = (+ cnt (+ (strlen str) 1)))
27
- if (> cnt sp) {
28
- return i
29
- }
30
- }
31
- return -1
32
- }
33
-
34
- }
35
-
36
-
37
- class CodeNode {
38
- def code:SourceCode
39
- def sp:int 0
40
- def ep:int 0
41
- def has_operator:boolean false
42
- def op_index:int 0
43
- def is_system_class:boolean false
44
- def mutable_def:boolean false
45
- def expression:boolean false
46
- def vref:string ""
47
- def is_block_node:boolean false
48
- def infix_operator:boolean false
49
- def infix_node:CodeNode
50
- def infix_subnode:boolean false
51
- def operator_pred:int 0
52
- def to_the_right:boolean false
53
- def right_node:CodeNode
54
- def type_type:string ""
55
- def type_name:string ""
56
- def key_type:string ""
57
- def array_type:string ""
58
- def ns:[string]
59
- def has_vref_annotation:boolean false
60
- def vref_annotation:CodeNode
61
- def has_type_annotation:boolean false
62
- def type_annotation:CodeNode
63
- def value_type:RangerNodeType RangerNodeType.NoType
64
- def eval_type:RangerNodeType RangerNodeType.NoType
65
- def eval_type_name:string ""
66
- def eval_key_type:string ""
67
- def eval_array_type:string ""
68
- def flow_done:boolean false
69
- def ref_change_done:boolean false
70
- def eval_type_node:CodeNode
71
- def ref_type:RangerNodeRefType RangerNodeRefType.NoType
72
- def ref_need_assign:int 0
73
- def double_value:double 0.0
74
- def string_value:string ""
75
- def int_value:int 0
76
- def boolean_value:boolean false
77
- def expression_value:CodeNode
78
- def props:[string:CodeNode]
79
- def prop_keys:[string]
80
- def comments:[CodeNode]
81
- def children:[CodeNode]
82
- def parent@(weak):CodeNode
83
- def didReturnAtIndex:int -1
84
- def hasVarDef:boolean false
85
- def hasClassDescription:boolean false
86
- def hasNewOper:boolean false
87
- def hasFnCall:boolean false
88
- def hasParamDesc:boolean false
89
-
90
-
91
- Constructor (source:SourceCode start:int end:int) {
92
- sp = start
93
- ep = end
94
- code = source
95
- }
96
-
97
- fn getParsedString:string () {
98
- return (substring code.code sp ep)
99
- }
100
-
101
- fn rebuildWithType:CodeNode (match:RangerArgMatch changeVref:boolean) {
102
- def newNode@(lives):CodeNode (new CodeNode ( (unwrap code) sp ep))
103
- newNode.has_operator = has_operator
104
- newNode.op_index = op_index
105
- newNode.mutable_def = mutable_def
106
- newNode.expression = expression
107
- if changeVref {
108
- newNode.vref = (match.getTypeName(vref))
109
- } {
110
- newNode.vref = vref
111
- }
112
- newNode.is_block_node = is_block_node
113
- newNode.type_type = (match.getTypeName(type_type))
114
- newNode.type_name = (match.getTypeName(type_name))
115
- newNode.key_type = (match.getTypeName(key_type))
116
- newNode.array_type = (match.getTypeName(array_type))
117
- newNode.value_type = value_type
118
- if has_vref_annotation {
119
- newNode.has_vref_annotation = true
120
- def ann:CodeNode vref_annotation
121
- newNode.vref_annotation = (ann.rebuildWithType(match true))
122
- }
123
- if has_type_annotation {
124
- newNode.has_type_annotation = true
125
- def t_ann:CodeNode type_annotation
126
- newNode.type_annotation = (t_ann.rebuildWithType(match true))
127
- }
128
- for ns n:string i {
129
- push newNode.ns n
130
- }
131
- switch value_type {
132
- case RangerNodeType.Double {
133
- newNode.double_value = double_value
134
- }
135
- case RangerNodeType.String {
136
- newNode.string_value = string_value
137
- }
138
- case RangerNodeType.Integer {
139
- newNode.int_value = int_value
140
- }
141
- case RangerNodeType.Boolean {
142
- newNode.boolean_value = boolean_value
143
- }
144
- case RangerNodeType.ExpressionType {
145
- if (!null? expression_value) {
146
- newNode.expression_value = (expression_value.rebuildWithType(match changeVref))
147
- }
148
- }
149
- }
150
- for prop_keys key:string i {
151
- push newNode.prop_keys key
152
- def oldp:CodeNode (get props key)
153
- def np:CodeNode (oldp.rebuildWithType(match changeVref))
154
- set newNode.props key np
155
- }
156
- for children ch:CodeNode i {
157
- def newCh:CodeNode (ch.rebuildWithType(match changeVref))
158
- newCh.parent = newNode
159
- push newNode.children newCh
160
- }
161
- return newNode
162
- }
163
- fn buildTypeSignatureUsingMatch:string (match:RangerArgMatch) {
164
- def tName:string (match.getTypeName(type_name))
165
- switch tName {
166
- case "double" {
167
- return "double"
168
- }
169
- case "string" {
170
- return "string"
171
- }
172
- case "integer" {
173
- return "int"
174
- }
175
- case "boolean" {
176
- return "boolean"
177
- }
178
- }
179
- def s:string ""
180
- if (value_type == RangerNodeType.Array) {
181
- s = (s + "[")
182
- s = (s + (match.getTypeName(array_type)))
183
- s = (s + (this.getTypeSignatureWithMatch(match)))
184
- s = (s + "]")
185
- return s
186
- }
187
- if (value_type == RangerNodeType.Hash) {
188
- s = (s + "[")
189
- s = (s + (match.getTypeName(key_type)))
190
- s = (s + ":")
191
- s = (s + (match.getTypeName(array_type)))
192
- s = (s + (this.getTypeSignatureWithMatch(match)))
193
- s = (s + "]")
194
- return s
195
- }
196
- s = (match.getTypeName(type_name))
197
- s = (s + (this.getVRefSignatureWithMatch(match)))
198
- return s
199
- }
200
- fn buildTypeSignature:string () {
201
- switch value_type {
202
- case RangerNodeType.Double {
203
- return "double"
204
- }
205
- case RangerNodeType.String {
206
- return "string"
207
- }
208
- case RangerNodeType.Integer {
209
- return "int"
210
- }
211
- case RangerNodeType.Boolean {
212
- return "boolean"
213
- }
214
- case RangerNodeType.Char {
215
- return "char"
216
- }
217
- case RangerNodeType.CharBuffer {
218
- return "charbuffer"
219
- }
220
- }
221
- def s:string ""
222
- if (value_type == RangerNodeType.Array) {
223
- s = (s + "[")
224
- s = (s + array_type)
225
- s = (s + (this.getTypeSignature()))
226
- s = (s + "]")
227
- return s
228
- }
229
- if (value_type == RangerNodeType.Hash) {
230
- s = (s + "[")
231
- s = (s + key_type)
232
- s = (s + ":")
233
- s = (s + array_type)
234
- s = (s + (this.getTypeSignature()))
235
- s = (s + "]")
236
- return s
237
- }
238
- s = type_name
239
- s = (s + (this.getVRefSignature()))
240
- return s
241
- }
242
-
243
- fn getVRefSignatureWithMatch:string (match:RangerArgMatch) {
244
- if has_vref_annotation {
245
- def nn:CodeNode (vref_annotation.rebuildWithType(match true))
246
- return ("@" + (nn.getCode()))
247
- }
248
- return ""
249
- }
250
- fn getVRefSignature:string () {
251
- if has_vref_annotation {
252
- return ("@" + (vref_annotation.getCode()))
253
- }
254
- return ""
255
- }
256
- fn getTypeSignatureWithMatch:string (match:RangerArgMatch) {
257
- if has_type_annotation {
258
- def nn:CodeNode (type_annotation.rebuildWithType(match true))
259
- return ("@" + (nn.getCode()))
260
- }
261
- return ""
262
- }
263
- fn getTypeSignature:string () {
264
- if has_type_annotation {
265
- return ("@" + (type_annotation.getCode()))
266
- }
267
- return ""
268
- }
269
- fn getFilename:string () {
270
- return code.filename
271
- }
272
- fn getFlag@(optional weak):CodeNode (flagName:string) {
273
-
274
- def res:CodeNode
275
- if (false == has_vref_annotation) {
276
- return res
277
- }
278
- for vref_annotation.children ch:CodeNode i {
279
- if (ch.vref == flagName) {
280
- res = ch
281
- return res
282
- }
283
- }
284
- return res
285
- }
286
- fn hasFlag:boolean (flagName:string) {
287
- if (false == has_vref_annotation) {
288
- return false
289
- }
290
- for vref_annotation.children ch:CodeNode i {
291
- if (ch.vref == flagName) {
292
- return true
293
- }
294
- }
295
- return false
296
- }
297
- fn setFlag:void (flagName:string) {
298
- if (false == has_vref_annotation) {
299
- vref_annotation = (new CodeNode ((unwrap code) sp ep))
300
- }
301
- if (this.hasFlag(flagName)) {
302
- return
303
- }
304
- def flag:CodeNode (new CodeNode ((unwrap code) sp ep))
305
- flag.vref = flagName
306
- flag.value_type = RangerNodeType.VRef
307
- push vref_annotation.children flag
308
- has_vref_annotation = true
309
- }
310
- fn getTypeInformationString:string () {
311
- def s:string ""
312
- if ((strlen vref) > 0) {
313
- s = (s + "<vref:" + vref + ">")
314
- } {
315
- s = (s + "<no.vref>")
316
- }
317
- if ((strlen type_name) > 0) {
318
- s = (s + "<type_name:" + type_name + ">")
319
- } {
320
- s = (s + "<no.type_name>")
321
- }
322
- if ((strlen array_type) > 0) {
323
- s = (s + "<array_type:" + array_type + ">")
324
- } {
325
- s = (s + "<no.array_type>")
326
- }
327
- if ((strlen key_type) > 0) {
328
- s = (s + "<key_type:" + key_type + ">")
329
- } {
330
- s = (s + "<no.key_type>")
331
- }
332
- switch value_type {
333
- case RangerNodeType.Boolean {
334
- s = (s + "<value_type=Boolean>")
335
- }
336
- case RangerNodeType.String {
337
- s = (s + "<value_type=String>")
338
- }
339
- }
340
- return s
341
- }
342
- fn getLine:int () {
343
- return (code.getLine(sp))
344
- }
345
- fn getLineString:string (line_index:int) {
346
- return (code.getLineString(line_index))
347
- }
348
- fn getLineAsString:string () {
349
- def idx:int (this.getLine())
350
- def line_name_idx:int (idx + 1)
351
- return ((this.getFilename()) + ", line " + line_name_idx + " : " + (code.getLineString(idx)))
352
- }
353
- fn getPositionalString:string () {
354
- if ((ep > sp) && ((ep - sp) < 50)) {
355
- def start:int sp
356
- def end:int ep
357
- start = (start - 100)
358
- end = (end + 50)
359
- if (start < 0) {
360
- start = 0
361
- }
362
- if (end >= (strlen code.code)) {
363
- end = ((strlen code.code) - 1)
364
- }
365
- return (substring code.code start end)
366
- }
367
- return ""
368
- }
369
- fn copyEvalResFrom:void (node:CodeNode) {
370
- if node.hasParamDesc {
371
- hasParamDesc = node.hasParamDesc
372
- paramDesc = node.paramDesc
373
- }
374
- if (!null? node.typeClass) {
375
- typeClass = node.typeClass
376
- }
377
- eval_type = node.eval_type
378
- eval_type_name = node.eval_type_name
379
- if (node.hasFlag("optional")) {
380
- this.setFlag("optional")
381
- }
382
- if (node.value_type == RangerNodeType.Hash) {
383
- eval_key_type = node.eval_key_type
384
- eval_array_type = node.eval_array_type
385
- eval_type = RangerNodeType.Hash
386
- }
387
- if (node.value_type == RangerNodeType.Array) {
388
- eval_key_type = node.eval_key_type
389
- eval_array_type = node.eval_array_type
390
- eval_type = RangerNodeType.Array
391
- }
392
- }
393
- fn defineNodeTypeTo:void (node:CodeNode ctx:RangerAppWriterContext) {
394
- switch type_name {
395
- case "double" {
396
- node.value_type = RangerNodeType.Double
397
- node.eval_type = RangerNodeType.Double
398
- node.eval_type_name = "double"
399
- }
400
- case "int" {
401
- node.value_type = RangerNodeType.Integer
402
- node.eval_type = RangerNodeType.Integer
403
- node.eval_type_name = "int"
404
- }
405
- case "char" {
406
- node.value_type = RangerNodeType.Char
407
- node.eval_type = RangerNodeType.Char
408
- node.eval_type_name = "char"
409
- }
410
- case "charbuffer" {
411
- node.value_type = RangerNodeType.CharBuffer
412
- node.eval_type = RangerNodeType.CharBuffer
413
- node.eval_type_name = "charbuffer"
414
- }
415
- case "string" {
416
- node.value_type = RangerNodeType.String
417
- node.eval_type = RangerNodeType.String
418
- node.eval_type_name = "string"
419
- }
420
- case "boolean" {
421
- node.value_type = RangerNodeType.Boolean
422
- node.eval_type = RangerNodeType.Boolean
423
- node.eval_type_name = "string"
424
- }
425
-
426
- default {
427
- if (true == expression) {
428
- node.value_type = RangerNodeType.ExpressionType
429
- node.eval_type = RangerNodeType.ExpressionType
430
- node.expression = true
431
- }
432
- if (value_type == RangerNodeType.Array) {
433
- node.value_type = RangerNodeType.Array
434
- node.eval_type = RangerNodeType.Array
435
- node.eval_type_name = type_name
436
- node.eval_array_type = array_type
437
- }
438
- if (value_type == RangerNodeType.Hash) {
439
- node.value_type = RangerNodeType.Hash
440
- node.eval_type = RangerNodeType.Hash
441
- node.eval_type_name = type_name
442
- node.eval_array_type = array_type
443
- node.key_type = key_type
444
- }
445
- if (value_type == RangerNodeType.Enum) {
446
- node.value_type = RangerNodeType.Enum
447
- node.eval_type = RangerNodeType.Enum
448
- node.eval_type_name = type_name
449
- }
450
- if (value_type == RangerNodeType.VRef) {
451
- if (ctx.isEnumDefined(type_name)) {
452
- node.value_type = RangerNodeType.Enum
453
- node.eval_type = RangerNodeType.Enum
454
- node.eval_type_name = type_name
455
- }
456
- if (ctx.isDefinedClass(type_name)) {
457
- node.value_type = RangerNodeType.Object
458
- node.eval_type = RangerNodeType.Object
459
- node.eval_type_name = type_name
460
- }
461
- }
462
- }
463
- }
464
- }
465
- fn typeNameAsType:RangerNodeType (ctx:RangerAppWriterContext) {
466
- switch type_name {
467
- case "double" {
468
- return RangerNodeType.Double
469
- }
470
- case "int" {
471
- return RangerNodeType.Integer
472
- }
473
- case "string" {
474
- return RangerNodeType.String
475
- }
476
- case "boolean" {
477
- return RangerNodeType.Boolean
478
- }
479
- case "char" {
480
- return RangerNodeType.Char
481
- }
482
- case "charbuffer" {
483
- return RangerNodeType.CharBuffer
484
- }
485
-
486
- default {
487
- if (== true expression) {
488
- (return RangerNodeType.ExpressionType)
489
- }
490
-
491
- if (== value_type RangerNodeType.VRef) {
492
- if(ctx.isEnumDefined(type_name)) {
493
- return RangerNodeType.Enum
494
- }
495
- if(ctx.isDefinedClass(type_name)) {
496
- return RangerNodeType.Object
497
- }
498
- }
499
- }
500
- }
501
- return value_type
502
- }
503
- fn isPrimitive:boolean () {
504
- if ((value_type == RangerNodeType.Double) || (value_type == RangerNodeType.String) || (value_type == RangerNodeType.Integer) || (value_type == RangerNodeType.Char) || (value_type == RangerNodeType.CharBuffer) || (value_type == RangerNodeType.Boolean)) {
505
- return true
506
- }
507
- return false
508
- }
509
- fn isPrimitiveType:boolean () {
510
- def tn:string type_name
511
- if ((tn == "double") || (tn == "string") || (tn == "int") || (tn == "char") || (tn == "charbuffer") || (tn == "boolean")) {
512
- return true
513
- }
514
- return false
515
- }
516
- fn isAPrimitiveType:boolean () {
517
- def tn:string type_name
518
- if ((value_type == RangerNodeType.Array) || (value_type == RangerNodeType.Hash)) {
519
- tn = array_type
520
- }
521
- if ((tn == "double") || (tn == "string") || (tn == "int") || (tn == "char") || (tn == "charbuffer") || (tn == "boolean")) {
522
- return true
523
- }
524
- return false
525
- }
526
- fn getFirst:CodeNode () {
527
- return (itemAt children 0)
528
- }
529
- fn getSecond:CodeNode () {
530
- return (itemAt children 1)
531
- }
532
- fn getThird:CodeNode () {
533
- return (itemAt children 2)
534
- }
535
- fn isSecondExpr:boolean () {
536
- if ((array_length children) > 1) {
537
- def second:CodeNode (itemAt children 1)
538
- if second.expression {
539
- return true
540
- }
541
- }
542
- return false
543
- }
544
- fn getOperator:string () {
545
- def s:string ""
546
- if ((array_length children) > 0) {
547
- def fc:CodeNode (itemAt children 0)
548
- if (fc.value_type == RangerNodeType.VRef) {
549
- return fc.vref
550
- }
551
- }
552
- return s
553
- }
554
- fn getVRefAt:string (idx:int) {
555
- def s:string ""
556
- if ((array_length children) > idx) {
557
- def fc:CodeNode (itemAt children idx)
558
- return fc.vref
559
- }
560
- return s
561
- }
562
- fn getStringAt:string (idx:int) {
563
- def s:string ""
564
- if ((array_length children) > idx) {
565
- def fc:CodeNode (itemAt children idx)
566
- if (fc.value_type == RangerNodeType.String) {
567
- return fc.string_value
568
- }
569
- }
570
- return s
571
- }
572
- fn hasExpressionProperty:boolean (name:string) {
573
- def ann:CodeNode (get props name)
574
- if (!null? ann) {
575
- return ann.expression
576
- }
577
- return false
578
- }
579
- fn getExpressionProperty@(weak optional):CodeNode (name:string) {
580
- def ann:CodeNode (get props name)
581
- if (!null? ann) {
582
- return ann
583
- }
584
- return ann
585
- }
586
- fn hasIntProperty:boolean (name:string) {
587
- def ann:CodeNode (get props name)
588
- if (!null? ann) {
589
- def fc:CodeNode (itemAt ann.children 0)
590
- if (fc.value_type == RangerNodeType.Integer) {
591
- return true
592
- }
593
- }
594
- return false
595
- }
596
- fn getIntProperty:int (name:string) {
597
- def ann:CodeNode (get props name)
598
- if (!null? ann) {
599
- def fc:CodeNode (itemAt ann.children 0)
600
- if (fc.value_type == RangerNodeType.Integer) {
601
- return fc.int_value
602
- }
603
- }
604
- return 0
605
- }
606
- fn hasDoubleProperty:boolean (name:string) {
607
- def ann:CodeNode (get props name)
608
- if (!null? ann) {
609
- if (ann.value_type == RangerNodeType.Double) {
610
- return true
611
- }
612
- }
613
- return false
614
- }
615
- fn getDoubleProperty:double (name:string) {
616
- def ann:CodeNode (get props name)
617
- if (!null? ann) {
618
- if (ann.value_type == RangerNodeType.Double) {
619
- return ann.double_value
620
- }
621
- }
622
- return 0.0
623
- }
624
- fn hasStringProperty:boolean (name:string) {
625
- if( false == (has props name) ) {
626
- return false
627
- }
628
- def ann:CodeNode (get props name)
629
- if (!null? ann) {
630
- if (ann.value_type == RangerNodeType.String) {
631
- return true
632
- }
633
- }
634
- return false
635
- }
636
- fn getStringProperty:string (name:string) {
637
- def ann:CodeNode (get props name)
638
- if (!null? ann) {
639
- if (ann.value_type == RangerNodeType.String) {
640
- return ann.string_value
641
- }
642
- }
643
- return ""
644
- }
645
- fn hasBooleanProperty:boolean (name:string) {
646
- def ann:CodeNode (get props name)
647
- if (!null? ann) {
648
- if (ann.value_type == RangerNodeType.Boolean) {
649
- return true
650
- }
651
- }
652
- return false
653
- }
654
- fn getBooleanProperty:boolean (name:string) {
655
- def ann:CodeNode (get props name)
656
- if (!null? ann) {
657
- if (ann.value_type == RangerNodeType.Boolean) {
658
- return ann.boolean_value
659
- }
660
- }
661
- return false
662
- }
663
- fn isFirstTypeVref:boolean (vrefName:string) {
664
- if ((array_length children) > 0) {
665
- def fc:CodeNode (itemAt children 0)
666
- if (fc.value_type == RangerNodeType.VRef) {
667
- return true
668
- }
669
- }
670
- return false
671
- }
672
- fn isFirstVref:boolean (vrefName:string) {
673
- if ((array_length children) > 0) {
674
- def fc:CodeNode (itemAt children 0)
675
- if (fc.vref == vrefName) {
676
- return true
677
- }
678
- }
679
- return false
680
- }
681
- fn getString:string () {
682
- return (substring code.code sp ep)
683
- }
684
- fn writeCode:void (wr:CodeWriter) {
685
- switch value_type {
686
- case RangerNodeType.Double {
687
- wr.out((double2str double_value) false)
688
- }
689
- case RangerNodeType.String {
690
- wr.out(((strfromcode 34) + string_value + (strfromcode 34)) false)
691
- }
692
- case RangerNodeType.Integer {
693
- wr.out( "" + int_value , false)
694
- }
695
- case RangerNodeType.Boolean {
696
- if(boolean_value) {
697
- wr.out("true" false)
698
- } {
699
- wr.out("false" false)
700
- }
701
- }
702
- }
703
- }
704
- fn getCode:string () {
705
- def wr:CodeWriter (new CodeWriter ())
706
- this.writeCode(wr)
707
- return (wr.getCode())
708
- }
709
- fn walk:void () {
710
- switch value_type {
711
- case RangerNodeType.Double {
712
- print ("Double : " + double_value)
713
- }
714
- case RangerNodeType.String {
715
- print ("String : " + string_value)
716
- }
717
- }
718
- if expression {
719
- print "("
720
- } {
721
- print (substring code.code sp ep)
722
- }
723
- for children item:CodeNode i {
724
- item.walk()
725
- }
726
- if expression {
727
- print ")"
728
- }
729
- }
730
- }
731
-
732
-
733
- class AfterCodeNode {
734
- def ff:int 0
735
- }