ranger-compiler 2.1.70 → 3.0.4

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 +114 -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,839 +0,0 @@
1
- Import "TFactory.clj"
2
- Import "TTypes.clj"
3
-
4
- class CallChain {
5
- def methodName:string ""
6
- def method@(weak):CodeNode
7
- def args@(weak):CodeNode
8
- }
9
-
10
- class NodeEvalState {
11
- def ctx@(weak):RangerAppWriterContext
12
- def is_running:boolean false
13
-
14
- def child_index:int -1
15
- def cmd_index:int -1
16
-
17
- def is_ready:boolean false
18
- def is_waiting:boolean false
19
-
20
- def exit_after:boolean false
21
- def expand_args:boolean false
22
-
23
- def ask_expand:boolean false
24
- def eval_rest:boolean false
25
- def exec_cnt:int 0
26
- def b_debugger:boolean false
27
- def b_top_node:boolean false
28
-
29
- def ask_eval:boolean false
30
- def param_eval_on:boolean false
31
- def eval_index:int -1
32
- def eval_end_index:int -1
33
- def ask_eval_start:int 0
34
- def ask_eval_end:int 0
35
- def evaluating_cmd@(weak):CodeNode
36
- }
37
-
38
- extension CodeNode {
39
-
40
- ; the evaluated type class...
41
- ;
42
- def definedTypeClass@(weak):RangerTypeClass
43
- def evalTypeClass@(weak):RangerTypeClass
44
-
45
- def lambda_ctx:RangerAppWriterContext
46
- def nsp@(weak):[RangerAppParamDesc]
47
- def eval_type:RangerNodeType RangerNodeType.NoType
48
- def eval_type_name:string ""
49
- def eval_key_type:string ""
50
- def eval_array_type:string ""
51
- def eval_function@(weak):CodeNode
52
- def flow_done:boolean false
53
- def ref_change_done:boolean false
54
- def eval_type_node:CodeNode
55
-
56
- def didReturnAtIndex:int -1
57
- def hasVarDef:boolean false
58
- def hasClassDescription:boolean false
59
- def hasNewOper:boolean false
60
- def clDesc@(weak):RangerAppClassDesc
61
- def hasFnCall:boolean false
62
- def fnDesc:RangerAppFunctionDesc
63
- def lambdaFnDesc@(weak):RangerAppFunctionDesc
64
- def hasParamDesc:boolean false
65
- def paramDesc@(weak optional):RangerAppParamDesc
66
- def ownParamDesc@(optional):RangerAppParamDesc
67
- def evalCtx@(weak):RangerAppWriterContext
68
- def evalState:NodeEvalState
69
-
70
- def operator_node@(weak):CodeNode
71
- def flow_ctx@(weak):RangerAppWriterContext
72
-
73
- def is_part_of_chain false
74
- def methodChain:[CallChain]
75
-
76
- def chainTarget:CodeNode
77
-
78
- def register_set false
79
- def did_walk false
80
- def reg_compiled_name ""
81
-
82
- ; tag for debugging the nodes if necessary...
83
- def tag ""
84
- def matched_type ""
85
-
86
- fn isParsedAsPrimitive:boolean () {
87
- return (TTypes.isPrimitive(parsed_type))
88
- }
89
-
90
- ; fn isPrimitive:boolean () {
91
- ; return (TTypes.isPrimitive(value_type))
92
- ; }
93
- fn isPrimitiveType:boolean () {
94
- return (TTypes.isPrimitive((TTypes.nameToValue(type_name))))
95
- }
96
- fn isAPrimitiveType:boolean () {
97
- return (TTypes.isPrimitive((TTypes.nameToValue(array_type))))
98
- }
99
-
100
-
101
- fn writeCode:void (wr:CodeWriter) {
102
- switch value_type {
103
- case RangerNodeType.Double {
104
- wr.out((double2str double_value) false)
105
- }
106
- case RangerNodeType.String {
107
- wr.out(((strfromcode 34) + string_value + (strfromcode 34)) false)
108
- }
109
- case RangerNodeType.Integer {
110
- wr.out( "" + int_value , false)
111
- }
112
- case RangerNodeType.Boolean {
113
- if(boolean_value) {
114
- wr.out("true" false)
115
- } {
116
- wr.out("false" false)
117
- }
118
- }
119
- case RangerNodeType.VRef {
120
- wr.out(vref false)
121
- if(has type_name) {
122
- wr.out(":" + type_name , false)
123
- }
124
- }
125
- case RangerNodeType.Hash {
126
- wr.out(vref false)
127
- wr.out(":[" + key_type + ":" + array_type + "]" , false)
128
- }
129
- case RangerNodeType.Array {
130
- wr.out(vref false)
131
- wr.out(":[" + array_type + "]" , false)
132
- }
133
- case RangerNodeType.ExpressionType {
134
- wr.out("(fn--> " false) ; "
135
- for children ch:CodeNode i {
136
- ch.writeCode(wr)
137
- }
138
- wr.out(")" false) ; "
139
- }
140
- default {
141
- if expression {
142
- wr.out("(" false)
143
- for children ch:CodeNode i {
144
- if( i > 0) {
145
- wr.out(' ' false)
146
- }
147
- ch.writeCode(wr)
148
- }
149
- wr.out(")" false) ; "
150
- } {
151
- if is_block_node {
152
- wr.out("{" true)
153
- for children ch:CodeNode i {
154
- ch.writeCode(wr)
155
- }
156
- wr.out("}" true)
157
- } {
158
- wr.out("<unknown>" false)
159
- wr.out("{" true)
160
- for children ch:CodeNode i {
161
- ch.writeCode(wr)
162
- }
163
- wr.out("}" true)
164
- }
165
- }
166
-
167
- }
168
- }
169
- }
170
-
171
- fn createChainTarget() {
172
- def chCnt (array_length children)
173
- if( chCnt > 2 ) {
174
- def fc (this.getFirst())
175
- ; def xyz something
176
- if(fc.vref == "def" ) {
177
- chainTarget = (this.getThird())
178
- }
179
- ; obj = foobba
180
- if(fc.vref == "=" ) {
181
- chainTarget = (this.getThird())
182
- }
183
- }
184
- }
185
-
186
- fn inferDefExpressionTypeFromValue ( node:CodeNode ) {
187
- def cn (itemAt node.children 1)
188
- def nodeValue:CodeNode (itemAt node.children 2)
189
- ; print " > Infer value type " + nodeValue.value_type
190
- ; print " > Infer eval_tyåe type " + nodeValue.eval_type
191
-
192
- if( !null? cn.expression_value ) {
193
- ; print "^ but has expression value"
194
- cn.value_type = RangerNodeType.ExpressionType
195
- cn.parsed_type = RangerNodeType.ExpressionType
196
- cn.has_vref_annotation = true
197
-
198
- ; print "==> expression : " + (cn.expression_value.getCode())
199
- }
200
-
201
- if(nodeValue.eval_type == RangerNodeType.ExpressionType) {
202
- if(!null? nodeValue.expression_value) {
203
- cn.expression_value = ( nodeValue.expression_value.copy() )
204
- } {
205
- if( (null? node.expression_value)) {
206
- ; infer the node type
207
- def copyOf (nodeValue.rebuildWithType( (new RangerArgMatch () ) false))
208
- removeLast copyOf.children
209
- cn.expression_value = copyOf
210
- }
211
- }
212
- cn.value_type = RangerNodeType.ExpressionType
213
- }
214
- }
215
-
216
- fn inferDefTypeFromValue ( node:CodeNode ) {
217
- def cn (itemAt node.children 1)
218
- def nodeValue:CodeNode (itemAt node.children 2)
219
-
220
- cn.value_type = nodeValue.eval_type
221
- cn.type_name = nodeValue.eval_type_name
222
- cn.array_type = nodeValue.eval_array_type
223
- cn.key_type = nodeValue.eval_key_type
224
-
225
- if(nodeValue.eval_type == RangerNodeType.ExpressionType) {
226
- if(!null? nodeValue.expression_value) {
227
- cn.expression_value = ( nodeValue.expression_value.copy() )
228
- } {
229
- if( (null? node.expression_value)) {
230
- ; infer the node type
231
- def copyOf (nodeValue.rebuildWithType( (new RangerArgMatch () ) false))
232
- removeLast copyOf.children
233
- cn.expression_value = copyOf
234
- }
235
- }
236
- cn.type_name = ""
237
- }
238
- }
239
-
240
- fn getCode:string () {
241
- def wr:CodeWriter (new CodeWriter ())
242
- this.writeCode(wr)
243
- return (wr.getCode())
244
- }
245
-
246
- ; cleans away the flow parser information from the node...
247
- fn cleanNode ( ) {
248
-
249
- def cp@(temp) this
250
-
251
- nullify cp.evalTypeClass
252
- nullify cp.lambda_ctx
253
- clear cp.nsp
254
-
255
- cp.eval_type = RangerNodeType.NoType
256
- cp.eval_type_name = ""
257
- cp.eval_key_type = ""
258
- cp.eval_array_type = ""
259
-
260
- nullify cp.eval_function
261
- cp.flow_done = false
262
- cp.ref_change_done = false
263
- nullify cp.eval_type_node
264
- cp.didReturnAtIndex = -1
265
- cp.hasVarDef = false
266
- cp.hasClassDescription = false
267
- cp.hasNewOper = false
268
- nullify cp.clDesc
269
- cp.hasFnCall = false
270
- nullify cp.fnDesc
271
- cp.hasParamDesc = false
272
- nullify cp.paramDesc
273
- nullify cp.ownParamDesc
274
- nullify cp.evalCtx
275
- nullify cp.evalState
276
- nullify cp.operator_node
277
- nullify cp.flow_ctx
278
- cp.is_part_of_chain = false
279
- clear cp.methodChain
280
- nullify cp.chainTarget
281
- cp.tag = ""
282
-
283
- cp.has_operator = false
284
- cp.disabled_node = false
285
- cp.op_index = 0
286
- cp.is_array_literal = false
287
- cp.is_system_class = false
288
- cp.is_plugin = false
289
-
290
- cp.mutable_def = false
291
- cp.has_lambda = false
292
- cp.has_lambda_call = false
293
- cp.has_call = false
294
-
295
- cp.type_type = type_type
296
- cp.value_type = parsed_type
297
-
298
- ; TODO:
299
-
300
- ; def has_vref_annotation:boolean false
301
- ; def vref_annotation:CodeNode
302
- ; def has_type_annotation:boolean false
303
- ; def type_annotation:CodeNode
304
- ; def ref_type:RangerNodeRefType RangerNodeRefType.NoType
305
- ; def ref_need_assign:int 0
306
- ; def expression_value:CodeNode
307
- ; def props:[string:CodeNode]
308
- ; def prop_keys:[string]
309
- ; def comments:[CodeNode]
310
- ; def children:[CodeNode]
311
- ; def parent@(weak):CodeNode
312
- ; def attrs:[CodeNode]
313
- ; def appGUID:string ""
314
- ; def register_name:string ""
315
-
316
- cp.children.forEach({
317
- item.cleanNode()
318
- })
319
-
320
- }
321
-
322
- ; creates copy that should be ready to be re-compiled
323
- fn cleanCopy:CodeNode () {
324
- def match (new RangerArgMatch)
325
- def cp (this.rebuildWithType( match false))
326
- cp.cleanNode()
327
- return cp
328
- }
329
-
330
- fn copy:CodeNode () {
331
- def match (new RangerArgMatch)
332
- def cp (this.rebuildWithType( match false))
333
- cp.register_expressions = (clone this.register_expressions)
334
- return cp
335
- }
336
-
337
- fn clone:CodeNode () {
338
- def match (new RangerArgMatch)
339
- def cp (this.cloneWithType( match false))
340
- return cp
341
- }
342
-
343
- fn push (node@(strong):CodeNode) {
344
- push this.children node
345
- node.parent = this
346
- }
347
-
348
- fn add (node@(strong):CodeNode) {
349
- push this.children node
350
- node.parent = this
351
- }
352
-
353
- fn newVRefNode:CodeNode (name:string) {
354
- def newNode@(lives):CodeNode (new CodeNode ( (unwrap code) sp ep))
355
- newNode.vref = name
356
- newNode.value_type = RangerNodeType.VRef
357
- newNode.parsed_type = RangerNodeType.VRef
358
- newNode.ns = (strsplit name ".")
359
- return newNode
360
- }
361
-
362
- fn newStringNode:CodeNode (name:string) {
363
- def newNode@(lives):CodeNode (new CodeNode ( (unwrap code) sp ep))
364
- newNode.string_value = name
365
- newNode.value_type = RangerNodeType.String
366
- newNode.parsed_type = RangerNodeType.VRef
367
- return newNode
368
- }
369
-
370
- fn newExpressionNode:CodeNode () {
371
- def newNode@(lives):CodeNode (new CodeNode ( (unwrap code) sp ep))
372
- newNode.expression = true
373
- return newNode
374
- }
375
-
376
-
377
- fn getChildrenFrom (otherNode:CodeNode) {
378
- clear this.children
379
- for otherNode.children ch@(lives):CodeNode i {
380
- this.push(ch)
381
- ch.parent = this
382
- }
383
- clear otherNode.children
384
- }
385
-
386
- fn cloneWithType:CodeNode (match:RangerArgMatch changeVref:boolean) {
387
- def newNode@(lives):CodeNode (new CodeNode ( (unwrap code) sp ep))
388
- if( has match.nodes vref) {
389
- def ast (unwrap (get match.nodes vref))
390
- return (ast.rebuildWithType(match true))
391
- }
392
- newNode.has_operator = has_operator
393
- newNode.op_index = op_index
394
- newNode.mutable_def = mutable_def
395
- newNode.expression = expression
396
- newNode.register_name = register_name
397
- newNode.operator_node = operator_node
398
- if changeVref {
399
- newNode.vref = (match.getTypeName(vref))
400
- } {
401
- newNode.vref = vref
402
- }
403
- newNode.is_block_node = is_block_node
404
- newNode.type_type = (match.getTypeName(type_type))
405
- newNode.type_name = (match.getTypeName(type_name))
406
- newNode.key_type = (match.getTypeName(key_type))
407
- newNode.array_type = (match.getTypeName(array_type))
408
- newNode.value_type = value_type
409
- newNode.parsed_type = parsed_type
410
-
411
- newNode.copyEvalResFrom( this )
412
- newNode.register_expressions = (clone this.register_expressions)
413
-
414
- if has_vref_annotation {
415
- newNode.has_vref_annotation = true
416
- def ann:CodeNode vref_annotation
417
- newNode.vref_annotation = (ann.cloneWithType(match true))
418
- }
419
- if has_type_annotation {
420
- newNode.has_type_annotation = true
421
- def t_ann:CodeNode type_annotation
422
- newNode.type_annotation = (t_ann.cloneWithType(match true))
423
- }
424
- for ns n:string i {
425
- if changeVref {
426
- def new_ns (match.getTypeName(n))
427
- push newNode.ns new_ns
428
- } {
429
- newNode.vref = vref
430
- push newNode.ns n
431
- }
432
- }
433
- newNode.string_value = string_value
434
- switch value_type {
435
- case RangerNodeType.Double {
436
- newNode.double_value = double_value
437
- }
438
- case RangerNodeType.String {
439
- newNode.string_value = string_value
440
- }
441
- case RangerNodeType.Integer {
442
- newNode.int_value = int_value
443
- }
444
- case RangerNodeType.Boolean {
445
- newNode.boolean_value = boolean_value
446
- }
447
- case RangerNodeType.ExpressionType {
448
- if (!null? expression_value) {
449
- newNode.expression_value = (expression_value.cloneWithType(match changeVref))
450
- }
451
- }
452
- }
453
- for prop_keys key:string i {
454
- push newNode.prop_keys key
455
- def oldp:CodeNode (get props key)
456
- def np:CodeNode (oldp.cloneWithType(match changeVref))
457
- set newNode.props key np
458
- }
459
- for children ch:CodeNode i {
460
- def newCh:CodeNode (ch.cloneWithType(match changeVref))
461
- newCh.parent = newNode
462
- push newNode.children newCh
463
- }
464
- for attrs ch:CodeNode i {
465
- def newCh:CodeNode (ch.rebuildWithType(match changeVref))
466
- push newNode.attrs newCh
467
- }
468
- return newNode
469
- }
470
-
471
-
472
- fn rebuildWithType:CodeNode (match:RangerArgMatch changeVref:boolean) {
473
-
474
- def newNode@(lives):CodeNode (new CodeNode ( (unwrap code) sp ep))
475
- if( has match.nodes vref) {
476
- def ast (unwrap (get match.nodes vref))
477
- ; can not rebuild using the same node :/
478
- if( ast == this) {
479
- def tmp@(temp) this
480
- return tmp
481
- }
482
- ; print "--> changin " + vref + " to " + (this.getCode()) + " from " + (ast.getCode())
483
- def newNode@(tmp lives) (ast.rebuildWithType(match true))
484
- set match.builtNodes vref newNode
485
- return newNode
486
- }
487
- newNode.has_operator = has_operator
488
- newNode.op_index = op_index
489
- newNode.mutable_def = mutable_def
490
- newNode.expression = expression
491
- newNode.register_name = register_name
492
- newNode.reg_compiled_name = reg_compiled_name
493
- newNode.operator_node = operator_node
494
- newNode.matched_type = matched_type
495
- if changeVref {
496
- newNode.vref = (match.getTypeName(vref))
497
- } {
498
- newNode.vref = vref
499
- }
500
- newNode.is_block_node = is_block_node
501
- newNode.type_type = (match.getTypeName(type_type))
502
- newNode.type_name = (match.getTypeName(type_name))
503
- newNode.key_type = (match.getTypeName(key_type))
504
- newNode.array_type = (match.getTypeName(array_type))
505
- newNode.value_type = value_type
506
- newNode.parsed_type = parsed_type
507
- if has_vref_annotation {
508
- newNode.has_vref_annotation = true
509
- def ann:CodeNode vref_annotation
510
- newNode.vref_annotation = (ann.rebuildWithType(match true))
511
- }
512
- if has_type_annotation {
513
- newNode.has_type_annotation = true
514
- def t_ann:CodeNode type_annotation
515
- newNode.type_annotation = (t_ann.rebuildWithType(match true))
516
- }
517
- for ns n:string i {
518
- if changeVref {
519
- def new_ns (match.getTypeName(n))
520
- push newNode.ns new_ns
521
- } {
522
- newNode.vref = vref
523
- push newNode.ns n
524
- }
525
- }
526
- newNode.string_value = string_value
527
- switch value_type {
528
- case RangerNodeType.Double {
529
- newNode.double_value = double_value
530
- }
531
- case RangerNodeType.String {
532
- newNode.string_value = string_value
533
- }
534
- case RangerNodeType.Integer {
535
- newNode.int_value = int_value
536
- }
537
- case RangerNodeType.Boolean {
538
- newNode.boolean_value = boolean_value
539
- }
540
- case RangerNodeType.ExpressionType {
541
- if (!null? expression_value) {
542
- newNode.expression_value = (expression_value.rebuildWithType(match changeVref))
543
- }
544
- }
545
- }
546
- for prop_keys key:string i {
547
- push newNode.prop_keys key
548
- def oldp:CodeNode (get props key)
549
- def np:CodeNode (oldp.rebuildWithType(match changeVref))
550
- set newNode.props key np
551
- }
552
- for children ch:CodeNode i {
553
- def newCh:CodeNode (ch.rebuildWithType(match changeVref))
554
- newCh.parent = newNode
555
- push newNode.children newCh
556
- }
557
- for attrs ch:CodeNode i {
558
- def newCh:CodeNode (ch.rebuildWithType(match changeVref))
559
- push newNode.attrs newCh
560
- }
561
- return newNode
562
- }
563
- fn buildTypeSignatureUsingMatch:string (match:RangerArgMatch) {
564
- def tName:string (match.getTypeName(type_name))
565
- switch tName {
566
- case "double" {
567
- return "double"
568
- }
569
- case "string" {
570
- return "string"
571
- }
572
- case "integer" {
573
- return "int"
574
- }
575
- case "boolean" {
576
- return "boolean"
577
- }
578
- }
579
- def s:string ""
580
- if (value_type == RangerNodeType.Array) {
581
- s = (s + "[")
582
- s = (s + (match.getTypeName(array_type)))
583
- s = (s + (this.getTypeSignatureWithMatch(match)))
584
- s = (s + "]")
585
- return s
586
- }
587
- if (value_type == RangerNodeType.Hash) {
588
- s = (s + "[")
589
- s = (s + (match.getTypeName(key_type)))
590
- s = (s + ":")
591
- s = (s + (match.getTypeName(array_type)))
592
- s = (s + (this.getTypeSignatureWithMatch(match)))
593
- s = (s + "]")
594
- return s
595
- }
596
- s = (match.getTypeName(type_name))
597
- s = (s + (this.getVRefSignatureWithMatch(match)))
598
- return s
599
- }
600
-
601
- fn buildTypeSignature:string () {
602
- if(this.hasFlag('keyword')) {
603
- return (this.vref + "::keyword")
604
- }
605
- if( TTypes.isPrimitive( value_type ) ) {
606
- return (TTypes.valueAsString(value_type))
607
- }
608
- def s:string ""
609
- if (value_type == RangerNodeType.Array) {
610
- s = (s + "[")
611
- s = (s + array_type)
612
- s = (s + (this.getTypeSignature()))
613
- s = (s + "]")
614
- return s
615
- }
616
- if (value_type == RangerNodeType.Hash) {
617
- s = (s + "[")
618
- s = (s + key_type)
619
- s = (s + ":")
620
- s = (s + array_type)
621
- s = (s + (this.getTypeSignature()))
622
- s = (s + "]")
623
- return s
624
- }
625
- if (value_type == RangerNodeType.ExpressionType) {
626
- def fnNode (expression_value.getFirst())
627
- def argNode (expression_value.getSecond())
628
- s = s + "(_:" + (fnNode.buildTypeSignature())
629
- s = s + " (" + (join (map argNode.children {
630
- return ("_:" + (item.buildTypeSignature()))
631
- } to:[string]) " ") + "))"
632
- return s
633
- }
634
- s = type_name
635
- return s
636
- }
637
-
638
- fn getVRefSignatureWithMatch:string (match:RangerArgMatch) {
639
- if has_vref_annotation {
640
- def nn:CodeNode (vref_annotation.rebuildWithType(match true))
641
- return ("@" + (nn.getCode()))
642
- }
643
- return ""
644
- }
645
- fn getVRefSignature:string () {
646
- if has_vref_annotation {
647
- return ("@" + (vref_annotation.getCode()))
648
- }
649
- return ""
650
- }
651
- fn getTypeSignatureWithMatch:string (match:RangerArgMatch) {
652
- if has_type_annotation {
653
- def nn:CodeNode (type_annotation.rebuildWithType(match true))
654
- return ("@" + (nn.getCode()))
655
- }
656
- return ""
657
- }
658
- fn getTypeSignature:string () {
659
- if has_type_annotation {
660
- return ("@" + (type_annotation.getCode()))
661
- }
662
- return ""
663
- }
664
-
665
-
666
- fn typeNameAsType:RangerNodeType (ctx:RangerAppWriterContext) {
667
- if(value_type == RangerNodeType.ExpressionType || eval_type == RangerNodeType.ExpressionType ) {
668
- return RangerNodeType.ExpressionType
669
- }
670
- def conv (TTypes.nameToValue(type_name))
671
- if(conv != RangerNodeType.NoType) {
672
- return conv
673
- }
674
- if (== true expression) {
675
- (return RangerNodeType.ExpressionType)
676
- }
677
- if (== value_type RangerNodeType.VRef) {
678
- if(ctx.isEnumDefined(type_name)) {
679
- return RangerNodeType.Enum
680
- }
681
- if(ctx.isDefinedClass(type_name)) {
682
- return RangerNodeType.Object
683
- }
684
- }
685
- return value_type
686
- }
687
-
688
- fn copyEvalResFrom:void (node:CodeNode) {
689
- if node.hasParamDesc {
690
- hasParamDesc = node.hasParamDesc
691
- paramDesc = node.paramDesc
692
- }
693
- if (!null? node.evalTypeClass) {
694
- evalTypeClass = node.evalTypeClass
695
- }
696
- eval_type = node.eval_type
697
- eval_type_name = node.eval_type_name
698
-
699
- ; here -> get optionality from operator if possible
700
- if( !null? node.operator_node ) {
701
- def nn (itemAt node.operator_node.children 1 )
702
- if (nn.hasFlag("optional")) {
703
- this.setFlag("optional")
704
- }
705
- if( nn.hasFlag("immutable")) {
706
- this.setFlag("immutable")
707
- }
708
- } {
709
- if (node.hasFlag("optional")) {
710
- this.setFlag("optional")
711
- }
712
- if( node.hasFlag("immutable")) {
713
- this.setFlag("immutable")
714
- }
715
- }
716
-
717
- eval_key_type = node.eval_key_type
718
- eval_array_type = node.eval_array_type
719
- if (node.value_type == RangerNodeType.Hash) {
720
- eval_type = RangerNodeType.Hash
721
- }
722
- if (node.value_type == RangerNodeType.Array) {
723
- eval_type = RangerNodeType.Array
724
- }
725
- if( node.value_type == RangerNodeType.ExpressionType ) {
726
- eval_type = RangerNodeType.ExpressionType
727
- eval_function = node.eval_function
728
- }
729
-
730
- }
731
-
732
- fn defineNodeTypeTo:void (node:CodeNode ctx:RangerAppWriterContext) {
733
- ; TODO: this function may have some problems
734
- if(node.value_type == RangerNodeType.ExpressionType || node.eval_type == RangerNodeType.ExpressionType ) {
735
- return
736
- }
737
-
738
- switch type_name {
739
- case "double" {
740
- node.value_type = RangerNodeType.Double
741
- node.eval_type = RangerNodeType.Double
742
- node.eval_type_name = "double"
743
- }
744
- case "int" {
745
- node.value_type = RangerNodeType.Integer
746
- node.eval_type = RangerNodeType.Integer
747
- node.eval_type_name = "int"
748
- }
749
- case "char" {
750
- node.value_type = RangerNodeType.Char
751
- node.eval_type = RangerNodeType.Char
752
- node.eval_type_name = "char"
753
- }
754
- case "charbuffer" {
755
- node.value_type = RangerNodeType.CharBuffer
756
- node.eval_type = RangerNodeType.CharBuffer
757
- node.eval_type_name = "charbuffer"
758
- }
759
- case "string" {
760
- node.value_type = RangerNodeType.String
761
- node.eval_type = RangerNodeType.String
762
- node.eval_type_name = "string"
763
- }
764
- case "boolean" {
765
- node.value_type = RangerNodeType.Boolean
766
- node.eval_type = RangerNodeType.Boolean
767
- node.eval_type_name = "string"
768
- }
769
-
770
- default {
771
- if (true == expression) {
772
- node.value_type = RangerNodeType.ExpressionType
773
- node.eval_type = RangerNodeType.ExpressionType
774
- node.expression = true
775
- }
776
- if (value_type == RangerNodeType.Array) {
777
- node.value_type = RangerNodeType.Array
778
- node.eval_type = RangerNodeType.Array
779
- node.eval_type_name = type_name
780
- node.eval_array_type = array_type
781
- }
782
- if (value_type == RangerNodeType.Hash) {
783
- node.value_type = RangerNodeType.Hash
784
- node.eval_type = RangerNodeType.Hash
785
- node.eval_type_name = type_name
786
- node.eval_array_type = array_type
787
- node.key_type = key_type
788
- }
789
- if (value_type == RangerNodeType.Enum) {
790
- node.value_type = RangerNodeType.Enum
791
- node.eval_type = RangerNodeType.Enum
792
- node.eval_type_name = type_name
793
- }
794
- if (value_type == RangerNodeType.VRef) {
795
- if (ctx.isEnumDefined(type_name)) {
796
- node.value_type = RangerNodeType.Enum
797
- node.eval_type = RangerNodeType.Enum
798
- node.eval_type_name = type_name
799
- }
800
- if (ctx.isDefinedClass(type_name)) {
801
- node.value_type = RangerNodeType.Object
802
- node.eval_type = RangerNodeType.Object
803
- node.eval_type_name = type_name
804
- }
805
- }
806
- }
807
- }
808
- }
809
-
810
-
811
- fn ifNoTypeSetToVoid:void () {
812
- if( ( (strlen type_name) == 0 ) && ( (strlen key_type) == 0) && ( (strlen array_type) == 0) ) {
813
- type_name = "void"
814
- }
815
- }
816
- fn ifNoTypeSetToEvalTypeOf:boolean (node:CodeNode) {
817
- if( ( (strlen type_name) == 0 ) && ( (strlen key_type) == 0) && ( (strlen array_type) == 0) ) {
818
- type_name = node.eval_type_name
819
- array_type = node.eval_array_type
820
- key_type = node.eval_key_type
821
- value_type = node.eval_type
822
- eval_type = node.eval_type
823
- eval_type_name = node.eval_type_name
824
- eval_array_type = node.eval_array_type
825
- eval_key_type = node.eval_key_type
826
-
827
- if(node.value_type == RangerNodeType.ExpressionType) {
828
- if( (null? expression_value)) {
829
- def copyOf (node.rebuildWithType( (new RangerArgMatch () ) false))
830
- removeLast copyOf.children
831
- expression_value = copyOf
832
- }
833
- }
834
- return true
835
- }
836
- return false
837
- }
838
-
839
- }