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,911 +0,0 @@
1
-
2
- Import "ng_CodeNode.clj"
3
-
4
- class RangerLispParser {
5
-
6
- def code@(optional):SourceCode
7
- def buff@(optional):charbuffer
8
- def len:int 0
9
- def i:int 0
10
- def last_line_start 0
11
- def current_line_index 0
12
- def parents@(weak):[CodeNode]
13
- def next@(optional):CodeNode
14
- def paren_cnt:int 0
15
- def get_op_pred:int 0
16
- def rootNode@(optional):CodeNode
17
- def curr_node@(optional weak):CodeNode
18
- def had_error:boolean false
19
- def disableOperators false
20
-
21
- Constructor ( code_module:SourceCode ) {
22
- buff = (to_charbuffer code_module.code)
23
- code = code_module
24
- len = (length (( unwrap buff)))
25
- rootNode = (new CodeNode(( unwrap code) 0 0))
26
- rootNode.is_block_node = true
27
- rootNode.expression = true
28
- curr_node = rootNode
29
- push parents ( unwrap curr_node)
30
- paren_cnt = 1
31
- }
32
-
33
- fn joo:void ( cm@(lives):SourceCode) {
34
- def ll:int ( strlen cm.code)
35
- }
36
-
37
- fn parse_raw_annotation:CodeNode () {
38
- def sp:int i
39
- def ep:int i
40
- i = i + 1
41
- sp = i
42
- ep = i
43
- if (i < len ) {
44
- def a_node2@(returnvalue):CodeNode (new CodeNode(( unwrap code) sp ep))
45
- a_node2.expression = true
46
- a_node2.row = current_line_index
47
- curr_node = a_node2
48
- push parents a_node2
49
- i = i + 1
50
- paren_cnt = paren_cnt + 1
51
- this.parse()
52
- return a_node2
53
- } {
54
- }
55
- return (new CodeNode(( unwrap code) sp ep))
56
- }
57
-
58
- fn skip_space:boolean ( is_block_parent@(lives):boolean) {
59
- def s:charbuffer ( unwrap buff)
60
- def did_break:boolean false
61
- if (i >= len) {
62
- return true
63
- }
64
- def c:char (charAt s i)
65
- def bb:boolean c == ((ccode "."))
66
- while ((i < len) && (c <= 32)) {
67
- if (is_block_parent && ((c == 10) || (c == 13))) {
68
- this.end_expression()
69
- current_line_index = current_line_index + 1
70
- did_break = true
71
- break
72
- }
73
- ; current_line_index = current_line_index + 1
74
- def had_break false
75
- while( c == 10 || c == 13) {
76
- had_break = true
77
- i = i + 1
78
- if (i >= len) {
79
- return true
80
- }
81
- c = (charAt s i)
82
- if( c == 10 || c == 13) {
83
- }
84
- }
85
-
86
- if had_break {
87
- current_line_index = current_line_index + 1
88
- } {
89
- i = 1 + i
90
- if (i >= len) {
91
- return true
92
- }
93
- c = (charAt s i)
94
- }
95
-
96
- }
97
- return did_break
98
- }
99
-
100
- fn end_expression:boolean () {
101
- i = 1 + i
102
- if (i >= len) {
103
- return false
104
- }
105
- paren_cnt = paren_cnt - 1
106
- if (paren_cnt < 0) {
107
- print "Parser error ) mismatch"
108
- }
109
- removeLast parents
110
- if ((!null? curr_node)) {
111
- curr_node.ep = i
112
- curr_node.infix_operator = false
113
- }
114
- if (((array_length parents)) > 0 ) {
115
- curr_node = (itemAt parents (((array_length parents)) - 1))
116
- } {
117
- curr_node = rootNode
118
- }
119
- curr_node.infix_operator = false
120
- return true
121
- }
122
-
123
- fn getOperator:int () {
124
- def s:charbuffer ( unwrap buff)
125
- if ((i + 2) >= len) {
126
- return 0
127
- }
128
- def c:char (charAt s i)
129
- def c2:char (charAt s (i + 1))
130
- switch (c ) {
131
- case (ccode "*") {
132
- i = i + 1
133
- return 14
134
- }
135
- case (ccode "/") {
136
- i = i + 1
137
- return 14
138
- }
139
- case (ccode "+") {
140
- i = i + 1
141
- return 13
142
- }
143
- case (ccode "-") {
144
- i = i + 1
145
- return 13
146
- }
147
- case (ccode "<") {
148
- if (c2 == ((ccode "="))) {
149
- i = i + 2
150
- return 11
151
- }
152
- i = i + 1
153
- return 11
154
- }
155
- case (ccode ">") {
156
- if (c2 == ((ccode "="))) {
157
- i = i + 2
158
- return 11
159
- }
160
- i = i + 1
161
- return 11
162
- }
163
- case (ccode "!") {
164
- if (c2 == ((ccode "="))) {
165
- i = i + 2
166
- return 10
167
- }
168
- return 0
169
- }
170
- case (ccode "=") {
171
- if (c2 == ((ccode "="))) {
172
- i = i + 2
173
- return 10
174
- }
175
- i = i + 1
176
- return 3
177
- }
178
- case (ccode "&") {
179
- if (c2 == ((ccode "&"))) {
180
- i = i + 2
181
- return 6
182
- }
183
- return 0
184
- }
185
- case (ccode "|") {
186
- if (c2 == ((ccode "|"))) {
187
- i = i + 2
188
- return 5
189
- }
190
- return 0
191
- }
192
- default {
193
- }
194
- }
195
- return 0
196
- }
197
-
198
- fn isOperator:int () {
199
- if(this.disableOperators) {
200
- return 0
201
- }
202
- def s:charbuffer ( unwrap buff)
203
- if ((i - 2) > len) {
204
- return 0
205
- }
206
- def c:char (charAt s i)
207
- def c2:char (charAt s (i + 1))
208
- switch (c ) {
209
- case (ccode "*") {
210
- return 1
211
- }
212
- case (ccode "/") {
213
- return 14
214
- }
215
- case (ccode "+") {
216
- return 13
217
- }
218
- case (ccode "-") {
219
- return 13
220
- }
221
- case (ccode "<") {
222
- if (c2 == ((ccode "="))) {
223
- return 11
224
- }
225
- return 11
226
- }
227
- case (ccode ">") {
228
- if (c2 == ((ccode "="))) {
229
- return 11
230
- }
231
- return 11
232
- }
233
- case (ccode "!") {
234
- if (c2 == ((ccode "="))) {
235
- return 10
236
- }
237
- return 0
238
- }
239
- case (ccode "=") {
240
- if (c2 == ((ccode "="))) {
241
- return 10
242
- }
243
- return 3
244
- }
245
- case (ccode "&") {
246
- if (c2 == ((ccode "&"))) {
247
- return 6
248
- }
249
- return 0
250
- }
251
- case (ccode "|") {
252
- if (c2 == ((ccode "|"))) {
253
- return 5
254
- }
255
- return 0
256
- }
257
- default {
258
- }
259
- }
260
- return 0
261
- }
262
-
263
- fn getOperatorPred:int ( str@(lives):string) {
264
- switch (str ) {
265
- case "<" {
266
- return 11
267
- }
268
- case ">" {
269
- return 11
270
- }
271
- case "<=" {
272
- return 11
273
- }
274
- case ">=" {
275
- return 11
276
- }
277
- case "==" {
278
- return 10
279
- }
280
- case "!=" {
281
- return 10
282
- }
283
- case "=" {
284
- return 3
285
- }
286
- case "&&" {
287
- return 6
288
- }
289
- case "||" {
290
- return 5
291
- }
292
- case "+" {
293
- return 13
294
- }
295
- case "-" {
296
- return 13
297
- }
298
- case "*" {
299
- return 14
300
- }
301
- case "/" {
302
- return 14
303
- }
304
- default {
305
- }
306
- }
307
- return 0
308
- }
309
-
310
- fn insert_node:void ( p_node@(strong lives):CodeNode) {
311
- def push_target@(optional weak lives):CodeNode curr_node
312
- if (curr_node.infix_operator) {
313
- push_target = curr_node.infix_node
314
- if (push_target.to_the_right) {
315
- push_target = push_target.right_node
316
- p_node.parent = push_target
317
- }
318
- }
319
- push push_target.children p_node
320
- }
321
-
322
- fn parse:void () {
323
- def s:charbuffer ( unwrap buff)
324
- def c:char (charAt s 0)
325
- def next_c:char 0
326
- def fc:char 0
327
- def new_node@(optional):CodeNode
328
- def sp:int 0
329
- def ep:int 0
330
- def last_i:int 0
331
- def had_lf:boolean false
332
- while (i < len) {
333
- if (had_error) {
334
- break
335
- }
336
- last_i = i
337
- def is_block_parent:boolean false
338
- if (had_lf) {
339
- had_lf = false
340
- this.end_expression()
341
- break
342
- }
343
- if ((!null? curr_node)) {
344
- if ((!null? curr_node.parent)) {
345
- def nodeParent@(optional):CodeNode curr_node.parent
346
- if (nodeParent.is_block_node) {
347
- is_block_parent = true
348
- }
349
- }
350
- }
351
- if ((this.skip_space(is_block_parent))) {
352
- break
353
- }
354
- had_lf = false
355
- c = (charAt s i)
356
- if (i < len) {
357
- c = (charAt s i)
358
- if (c == 59) {
359
- sp = i + 1
360
- while ((i < len) && (((charAt s i)) > 31)) {
361
- i = 1 + i
362
- }
363
- if (i >= len) {
364
- break
365
- }
366
- new_node = (new CodeNode(( unwrap code) sp i))
367
- new_node.parsed_type = RangerNodeType.Comment
368
- new_node.value_type = RangerNodeType.Comment
369
- new_node.string_value = (substring s sp i)
370
- push curr_node.comments ( unwrap new_node)
371
- continue
372
- }
373
- if (i < (len - 1)) {
374
- fc = (charAt s (i + 1))
375
- if ((c == 40) || (c == ((ccode "{"))) || ((c == 39) && (fc == 40)) || ((c == 96) && (fc == 40))) {
376
- paren_cnt = paren_cnt + 1
377
- if ((null? curr_node) ) {
378
- rootNode = (new CodeNode(( unwrap code) i i))
379
- curr_node = rootNode
380
- if (c == 96) {
381
- curr_node.parsed_type = RangerNodeType.Quasiliteral
382
- curr_node.value_type = RangerNodeType.Quasiliteral
383
- }
384
- if (c == 39) {
385
- curr_node.parsed_type = RangerNodeType.Literal
386
- curr_node.value_type = RangerNodeType.Literal
387
- }
388
- curr_node.expression = true
389
- push parents ( unwrap curr_node)
390
- } {
391
- def new_qnode@(lives):CodeNode (new CodeNode(( unwrap code) i i))
392
- if (c == 96) {
393
- new_qnode.value_type = RangerNodeType.Quasiliteral
394
- }
395
- if (c == 39) {
396
- new_qnode.value_type = RangerNodeType.Literal
397
- }
398
- new_qnode.expression = true
399
- this.insert_node(new_qnode)
400
- push parents new_qnode
401
- curr_node = new_qnode
402
- }
403
- if (c == ((ccode "{"))) {
404
- curr_node.is_block_node = true
405
- }
406
- i = 1 + i
407
- this.parse()
408
- continue
409
- }
410
- }
411
- sp = i
412
- ep = i
413
- fc = (charAt s i)
414
- if (((fc == 45) && (((charAt s (i + 1))) >= 46) && (((charAt s (i + 1))) <= 57)) || ((fc >= 48) && (fc <= 57))) {
415
- def is_double:boolean false
416
- sp = i
417
- i = 1 + i
418
- c = (charAt s i)
419
- while ((i < len) && (((c >= 48) && (c <= 57)) || (c == ((ccode "."))) || ((i == sp) && ((c == ((ccode "+"))) || (c == ((ccode "-"))))))) {
420
- if (c == ((ccode "."))) {
421
- is_double = true
422
- }
423
- i = 1 + i
424
- c = (charAt s i)
425
- }
426
- ep = i
427
- def new_num_node:CodeNode (new CodeNode(( unwrap code) sp ep))
428
- if (is_double ) {
429
- new_num_node.parsed_type = RangerNodeType.Double
430
- new_num_node.value_type = RangerNodeType.Double
431
- new_num_node.double_value = ( unwrap ((str2double ((substring s sp ep)))))
432
- } {
433
- new_num_node.parsed_type = RangerNodeType.Integer
434
- new_num_node.value_type = RangerNodeType.Integer
435
- new_num_node.int_value = ( unwrap ((str2int ((substring s sp ep)))))
436
- }
437
- this.insert_node(new_num_node)
438
- continue
439
- }
440
- if (fc == 34) {
441
- sp = i + 1
442
- ep = sp
443
- c = (charAt s i)
444
- def must_encode:boolean false
445
- while (i < len) {
446
- i = 1 + i
447
- c = (charAt s i)
448
- if (c == 34) {
449
- break
450
- }
451
- if (c == 92) {
452
- i = 1 + i
453
- if (i < len ) {
454
- must_encode = true
455
- c = (charAt s i)
456
- } {
457
- break
458
- }
459
- }
460
- }
461
- ep = i
462
- if (i < len) {
463
- def encoded_str:string ""
464
- if (must_encode) {
465
- def orig_str:charbuffer (to_charbuffer ((substring s sp ep)))
466
- def str_length:int (length orig_str)
467
- def ii:int 0
468
- while (ii < str_length) {def cc:char (charAt orig_str ii)
469
- if (cc == 92 ) {
470
- def next_ch:char (charAt orig_str (ii + 1))
471
- switch (next_ch ) {
472
- case 34 {
473
- encoded_str = encoded_str + ((strfromcode 34))
474
- }
475
- case 92 {
476
- encoded_str = encoded_str + ((strfromcode 92))
477
- }
478
- case 47 {
479
- encoded_str = encoded_str + ((strfromcode 47))
480
- }
481
- case 98 {
482
- encoded_str = encoded_str + ((strfromcode 8))
483
- }
484
- case 102 {
485
- encoded_str = encoded_str + ((strfromcode 12))
486
- }
487
- case 110 {
488
- encoded_str = encoded_str + ((strfromcode 10))
489
- }
490
- case 114 {
491
- encoded_str = encoded_str + ((strfromcode 13))
492
- }
493
- case 116 {
494
- encoded_str = encoded_str + ((strfromcode 9))
495
- }
496
- case 117 {
497
- ii = ii + 4
498
- }
499
- default {
500
- }
501
- }
502
- ii = ii + 2
503
- } {
504
- encoded_str = encoded_str + ((substring orig_str ii (1 + ii)))
505
- ii = ii + 1
506
- }
507
- }
508
- }
509
- def new_str_node:CodeNode (new CodeNode(( unwrap code) sp ep))
510
- new_str_node.parsed_type = RangerNodeType.String
511
- new_str_node.value_type = RangerNodeType.String
512
- if (must_encode ) {
513
- new_str_node.string_value = encoded_str
514
- } {
515
- new_str_node.string_value = (substring s sp ep)
516
- }
517
- this.insert_node(new_str_node)
518
- i = 1 + i
519
- continue
520
- }
521
- }
522
- if ((fc == ((ccode "t"))) && (((charAt s (i + 1))) == ((ccode "r"))) && (((charAt s (i + 2))) == ((ccode "u"))) && (((charAt s (i + 3))) == ((ccode "e")))) {
523
- def new_true_node:CodeNode (new CodeNode(( unwrap code) sp sp + 4))
524
- new_true_node.value_type = RangerNodeType.Boolean
525
- new_true_node.parsed_type = RangerNodeType.Boolean
526
- new_true_node.boolean_value = true
527
- this.insert_node(new_true_node)
528
- i = i + 4
529
- continue
530
- }
531
- if ((fc == ((ccode "f"))) && (((charAt s (i + 1))) == ((ccode "a"))) && (((charAt s (i + 2))) == ((ccode "l"))) && (((charAt s (i + 3))) == ((ccode "s"))) && (((charAt s (i + 4))) == ((ccode "e")))) {
532
- def new_f_node:CodeNode (new CodeNode(( unwrap code) sp sp + 5))
533
- new_f_node.value_type = RangerNodeType.Boolean
534
- new_f_node.parsed_type = RangerNodeType.Boolean
535
- new_f_node.boolean_value = false
536
- this.insert_node(new_f_node)
537
- i = i + 5
538
- continue
539
- }
540
- if (fc == ((ccode "@"))) {
541
- i = i + 1
542
- sp = i
543
- ep = i
544
- c = (charAt s i)
545
- while ((i < len) && (((charAt s i)) > 32) && (c != 40) && (c != 41) && (c != ((ccode "}")))) {
546
- i = 1 + i
547
- c = (charAt s i)
548
- }
549
- ep = i
550
- if ((i < len) && (ep > sp)) {
551
- def a_node2@(lives):CodeNode (new CodeNode(( unwrap code) sp ep))
552
- def a_name:string (substring s sp ep)
553
- a_node2.expression = true
554
- curr_node = a_node2
555
- push parents a_node2
556
- i = i + 1
557
- paren_cnt = paren_cnt + 1
558
- this.parse()
559
- def use_first:boolean false
560
- if (1 == ((array_length a_node2.children))) {
561
- def ch1:CodeNode (itemAt a_node2.children 0)
562
- use_first = (ch1.isPrimitive())
563
- }
564
- if (use_first ) {
565
- def theNode:CodeNode (array_extract a_node2.children 0)
566
- set curr_node.props a_name theNode
567
- } {
568
- set curr_node.props a_name a_node2
569
- }
570
- push curr_node.prop_keys a_name
571
- continue
572
- }
573
- }
574
- def ns_list@(temp):[string]
575
- def last_ns:int i
576
- def ns_cnt:int 1
577
- def vref_had_type_ann:boolean false
578
- def vref_ann_node@(optional temp):CodeNode
579
- def vref_end:int i
580
- if ((i < len) && (((charAt s i)) > 32) && (c != 58) && (c != 40) && (c != 41) && (c != ((ccode "}")))) {
581
- if (curr_node.is_block_node == true) {
582
- def new_expr_node:CodeNode (new CodeNode(( unwrap code) sp ep))
583
- new_expr_node.parent = curr_node
584
- new_expr_node.expression = true
585
- push curr_node.children new_expr_node
586
- curr_node = new_expr_node
587
- push parents new_expr_node
588
- paren_cnt = 1 + paren_cnt
589
- this.parse()
590
- continue
591
- }
592
- }
593
- def op_c:int 0
594
- ; if (((array_length curr_node.children)) >= 0) {
595
- op_c = (this.getOperator())
596
- ; }
597
- def last_was_newline:boolean false
598
- if (op_c > 0 ) {
599
- } {
600
- while ((i < len) && (((charAt s i)) > 32) && (c != 58) && (c != 40) && (c != 41) && (c != ((ccode "}")))) {
601
- if (i > sp) {
602
- def is_opchar:int (this.isOperator())
603
- if (is_opchar > 0) {
604
- break
605
- }
606
- }
607
- i = 1 + i
608
- c = (charAt s i)
609
- if ((c == 10) || (c == 13)) {
610
- last_was_newline = true
611
- break
612
- }
613
- if (c == ((ccode "."))) {
614
- push ns_list (substring s last_ns i)
615
- last_ns = i + 1
616
- ns_cnt = 1 + ns_cnt
617
- }
618
- if ((i > vref_end) && (c == ((ccode "@")))) {
619
- vref_had_type_ann = true
620
- vref_end = i
621
- vref_ann_node = (this.parse_raw_annotation())
622
- c = (charAt s i)
623
- break
624
- }
625
- }
626
- }
627
- ep = i
628
- if (vref_had_type_ann) {
629
- ep = vref_end
630
- }
631
- push ns_list (substring s last_ns ep)
632
- c = (charAt s i)
633
- while ((i < len) && (c <= 32) && (false == last_was_newline)) {
634
- i = 1 + i
635
- c = (charAt s i)
636
- if (is_block_parent && ((c == 10) || (c == 13))) {
637
- i = i - 1
638
- c = (charAt s i)
639
- had_lf = true
640
- break
641
- }
642
- }
643
- if (c == 58 ) {
644
- i = i + 1
645
- while ((i < len) && (((charAt s i)) <= 32)) {
646
- i = 1 + i
647
- }
648
- def vt_sp:int i
649
- def vt_ep:int i
650
- c = (charAt s i)
651
- if (c == ((ccode "("))) {
652
-
653
- ; tring to parser as annotation...
654
- def vann_arr2@(lives):CodeNode (this.parse_raw_annotation())
655
- vann_arr2.expression = true
656
-
657
- ;def a_node3@(lives):CodeNode (new CodeNode(( unwrap code) sp ep))
658
- ;a_node3.expression = true
659
- ;curr_node = a_node3
660
- ;push parents a_node3
661
- ;i = i + 1
662
- ;this.parse()
663
- def new_expr_node:CodeNode (new CodeNode(( unwrap code) sp vt_ep))
664
- new_expr_node.vref = (substring s sp ep)
665
- new_expr_node.ns = ns_list
666
- new_expr_node.expression_value = vann_arr2
667
- new_expr_node.parsed_type = RangerNodeType.ExpressionType
668
- new_expr_node.value_type = RangerNodeType.ExpressionType
669
- if (vref_had_type_ann) {
670
- new_expr_node.vref_annotation = vref_ann_node
671
- new_expr_node.has_vref_annotation = true
672
- }
673
- push curr_node.children new_expr_node
674
- continue
675
- }
676
- if (c == ((ccode "["))) {
677
- i = i + 1
678
- vt_sp = i
679
- def hash_sep:int 0
680
- def had_array_type_ann:boolean false
681
- c = (charAt s i)
682
- while ((i < len) && (c > 32) && (c != 93)) {
683
- i = 1 + i
684
- c = (charAt s i)
685
- if (c == ((ccode ":"))) {
686
- hash_sep = i
687
- }
688
- if (c == ((ccode "@"))) {
689
- had_array_type_ann = true
690
- break
691
- }
692
- }
693
- vt_ep = i
694
- if (hash_sep > 0 ) {
695
- vt_ep = i
696
- def type_name:string (substring s (1 + hash_sep) vt_ep)
697
- def key_type_name:string (substring s vt_sp hash_sep)
698
- def new_hash_node:CodeNode (new CodeNode(( unwrap code) sp vt_ep))
699
- new_hash_node.vref = (substring s sp ep)
700
- new_hash_node.ns = ns_list
701
- new_hash_node.parsed_type = RangerNodeType.Hash
702
- new_hash_node.value_type = RangerNodeType.Hash
703
- new_hash_node.array_type = type_name
704
- new_hash_node.key_type = key_type_name
705
- if (vref_had_type_ann) {
706
- new_hash_node.vref_annotation = vref_ann_node
707
- new_hash_node.has_vref_annotation = true
708
- }
709
- if (had_array_type_ann) {
710
- def vann_hash:CodeNode (this.parse_raw_annotation())
711
- new_hash_node.type_annotation = vann_hash
712
- new_hash_node.has_type_annotation = true
713
- }
714
- new_hash_node.parent = curr_node
715
- push curr_node.children new_hash_node
716
- i = 1 + i
717
- continue
718
- } {
719
- vt_ep = i
720
- def type_name:string (substring s vt_sp vt_ep)
721
- def new_arr_node:CodeNode (new CodeNode(( unwrap code) sp vt_ep))
722
- new_arr_node.vref = (substring s sp ep)
723
- new_arr_node.ns = ns_list
724
- new_arr_node.parsed_type = RangerNodeType.Array
725
- new_arr_node.value_type = RangerNodeType.Array
726
- new_arr_node.array_type = type_name
727
- new_arr_node.parent = curr_node
728
- push curr_node.children new_arr_node
729
- if (vref_had_type_ann) {
730
- new_arr_node.vref_annotation = vref_ann_node
731
- new_arr_node.has_vref_annotation = true
732
- }
733
- if (had_array_type_ann) {
734
- def vann_arr:CodeNode (this.parse_raw_annotation())
735
- new_arr_node.type_annotation = vann_arr
736
- new_arr_node.has_type_annotation = true
737
- print "--> parsed ARRAY TYPE annotation"
738
- }
739
- i = 1 + i
740
- continue
741
- }
742
- }
743
- def had_type_ann:boolean false
744
- while ((i < len) && (((charAt s i)) > 32) && (c != 58) && (c != 40) && (c != 41) && (c != ((ccode "}"))) && (c != ((ccode ",")))) {
745
- i = 1 + i
746
- c = (charAt s i)
747
- if (c == ((ccode "@"))) {
748
- had_type_ann = true
749
- break
750
- }
751
- }
752
- if (i < len) {
753
- vt_ep = i
754
- def type_name:string (substring s vt_sp vt_ep)
755
- def new_ref_node:CodeNode (new CodeNode(( unwrap code) sp ep))
756
- new_ref_node.vref = (substring s sp ep)
757
- new_ref_node.ns = ns_list
758
- new_ref_node.parsed_type = RangerNodeType.VRef
759
- new_ref_node.value_type = RangerNodeType.VRef
760
- new_ref_node.type_name = (substring s vt_sp vt_ep)
761
- new_ref_node.parent = curr_node
762
- if (vref_had_type_ann) {
763
- new_ref_node.vref_annotation = vref_ann_node
764
- new_ref_node.has_vref_annotation = true
765
- }
766
- push curr_node.children new_ref_node
767
- if (had_type_ann) {
768
- def vann:CodeNode (this.parse_raw_annotation())
769
- new_ref_node.type_annotation = vann
770
- new_ref_node.has_type_annotation = true
771
- }
772
- continue
773
- }
774
- } {
775
- if ((i < len) && (ep > sp)) {
776
- def new_vref_node:CodeNode (new CodeNode(( unwrap code) sp ep))
777
- new_vref_node.vref = (substring s sp ep)
778
- new_vref_node.parsed_type = RangerNodeType.VRef
779
- new_vref_node.value_type = RangerNodeType.VRef
780
- new_vref_node.ns = ns_list
781
- new_vref_node.parent = curr_node
782
- def op_pred:int (this.getOperatorPred(new_vref_node.vref))
783
- if (new_vref_node.vref == ",") {
784
- curr_node.infix_operator = false
785
- continue
786
- }
787
- def pTarget@(optional weak):CodeNode curr_node
788
- if (curr_node.infix_operator) {
789
- def iNode@(optional):CodeNode curr_node.infix_node
790
- if ((op_pred > 0) || (iNode.to_the_right == false) ) {
791
- pTarget = iNode
792
- } {
793
- def rn@(optional lives):CodeNode iNode.right_node
794
- new_vref_node.parent = rn
795
- pTarget = rn
796
- }
797
- }
798
- push pTarget.children new_vref_node
799
- if (vref_had_type_ann) {
800
- new_vref_node.vref_annotation = vref_ann_node
801
- new_vref_node.has_vref_annotation = true
802
- }
803
- if ( (i + 1) <len ) {
804
- if ((((charAt s (i + 1))) == ((ccode "("))) || (((charAt s (i + 0))) == ((ccode "(")))) {
805
- if ((0 == op_pred) && curr_node.infix_operator && (1 == ((array_length curr_node.children)))) {
806
- }
807
- }
808
- }
809
-
810
- if (((op_pred > 0) && curr_node.infix_operator) || ((op_pred > 0) && (((array_length curr_node.children)) >= 2))) {
811
- if ((op_pred == 3) && (2 == ((array_length curr_node.children))) ) {
812
- def n_ch:CodeNode (array_extract curr_node.children 0)
813
- push curr_node.children n_ch
814
- } {
815
- if (false == curr_node.infix_operator) {
816
- def if_node@(temp lives):CodeNode (new CodeNode(( unwrap code) sp ep))
817
- curr_node.infix_node = if_node
818
- curr_node.infix_operator = true
819
- if_node.infix_subnode = true
820
- curr_node.value_type = RangerNodeType.NoType
821
- curr_node.expression = true
822
- if_node.expression = true
823
- def ch_cnt:int (array_length curr_node.children)
824
- def ii:int 0
825
- def start_from:int ch_cnt - 2
826
- def keep_nodes:CodeNode (new CodeNode(( unwrap code) sp ep))
827
- while (ch_cnt > 0) {def n_ch:CodeNode (array_extract curr_node.children 0)
828
- def p_target:CodeNode if_node
829
- if ((ii < start_from) || n_ch.infix_subnode) {
830
- p_target = keep_nodes
831
- }
832
- push p_target.children n_ch
833
- ch_cnt = ch_cnt - 1
834
- ii = 1 + ii
835
- }
836
- for keep_nodes.children keep:CodeNode i {
837
- push curr_node.children keep
838
- }
839
- push curr_node.children if_node
840
- }
841
- def ifNode@(optional lives):CodeNode curr_node.infix_node
842
- def new_op_node@(temp):CodeNode (new CodeNode(( unwrap code) sp ep))
843
- new_op_node.expression = true
844
- new_op_node.parent = ifNode
845
- def until_index:int ((array_length ifNode.children)) - 1
846
- def to_right:boolean false
847
- def just_continue:boolean false
848
- if ((ifNode.operator_pred > 0) && (ifNode.operator_pred < op_pred)) {
849
- to_right = true
850
- }
851
- if ((ifNode.operator_pred > 0) && (ifNode.operator_pred > op_pred)) {
852
- ifNode.to_the_right = false
853
- }
854
- if ((ifNode.operator_pred > 0) && (ifNode.operator_pred == op_pred)) {
855
- to_right = ifNode.to_the_right
856
- }
857
- def opTarget@(optional):CodeNode ifNode
858
- if (to_right ) {
859
- def op_node:CodeNode (array_extract ifNode.children until_index)
860
- def last_value:CodeNode (array_extract ifNode.children (until_index - 1))
861
- push new_op_node.children op_node
862
- push new_op_node.children last_value
863
- } {
864
- if (false == just_continue) {
865
- while (until_index > 0) {def what_to_add:CodeNode (array_extract ifNode.children 0)
866
- push new_op_node.children what_to_add
867
- until_index = until_index - 1
868
- }
869
- }
870
- }
871
- if (to_right || (false == just_continue)) {
872
- push ifNode.children new_op_node
873
- }
874
- if (to_right) {
875
- ifNode.right_node = new_op_node
876
- ifNode.to_the_right = true
877
- }
878
- ifNode.operator_pred = op_pred
879
- continue
880
- }
881
- }
882
- continue
883
- }
884
- }
885
- if ((c == 41) || (c == ((ccode "}")))) {
886
- if ((c == ((ccode "}"))) && is_block_parent && (((array_length curr_node.children)) > 0)) {
887
- this.end_expression()
888
- }
889
- i = 1 + i
890
- paren_cnt = paren_cnt - 1
891
- if (paren_cnt < 0) {
892
- break
893
- }
894
- removeLast parents
895
- if ((!null? curr_node)) {
896
- curr_node.ep = i
897
- }
898
- if (((array_length parents)) > 0 ) {
899
- curr_node = (itemAt parents (((array_length parents)) - 1))
900
- } {
901
- curr_node = rootNode
902
- }
903
- break
904
- }
905
- if (last_i == i) {
906
- i = 1 + i
907
- }
908
- }
909
- }
910
- }
911
- }