ranger-compiler 2.1.69 → 3.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (363) hide show
  1. package/CHANGELOG.md +103 -0
  2. package/README.md +991 -96
  3. package/{compiler/Lang.clj → dist/Lang.rgr} +2345 -75
  4. package/dist/README.md +116 -0
  5. package/dist/{bin/api.d.ts → api.d.ts} +430 -154
  6. package/dist/api.js +34345 -0
  7. package/{lib/Ajax.clj → dist/lib/Ajax.rgr} +1 -1
  8. package/{lib/CmdParams.clj → dist/lib/CmdParams.rgr} +72 -72
  9. package/{lib/Crypto.clj → dist/lib/Crypto.rgr} +1 -1
  10. package/{lib/DOMLib.clj → dist/lib/DOMLib.rgr} +2 -2
  11. package/{lib/Engine3D.clj → dist/lib/Engine3D.rgr} +1 -1
  12. package/{lib/ImmutableVector.clj → dist/lib/ImmutableVector.rgr} +364 -364
  13. package/{lib/IndexedDB.clj → dist/lib/IndexedDB.rgr} +1 -1
  14. package/{lib/JSON.clj → dist/lib/JSON.rgr} +105 -2
  15. package/{lib/JinxProcess.clj → dist/lib/JinxProcess.rgr} +3 -3
  16. package/{lib/Storage.clj → dist/lib/Storage.rgr} +1 -1
  17. package/{lib/Timers.clj → dist/lib/Timers.rgr} +176 -170
  18. package/{lib/ViewLib.clj → dist/lib/ViewLib.rgr} +1 -1
  19. package/dist/lib/lib/ACEEditor.rgr +5 -0
  20. package/dist/lib/lib/Ajax.rgr +196 -0
  21. package/dist/lib/lib/CmdParams.rgr +72 -0
  22. package/dist/lib/lib/Crypto.rgr +90 -0
  23. package/dist/lib/lib/DOMLib.rgr +307 -0
  24. package/{examples/3D/Engine3D.clj → dist/lib/lib/Engine3D.rgr} +870 -857
  25. package/dist/lib/lib/ImmutableVector.rgr +364 -0
  26. package/dist/lib/lib/IndexedDB.rgr +32 -0
  27. package/{compiler/JSON.clj → dist/lib/lib/JSON.rgr} +106 -3
  28. package/dist/lib/lib/JinxProcess.rgr +838 -0
  29. package/dist/lib/lib/SQL.rgr +44 -0
  30. package/dist/lib/lib/ServiceLib.rgr +9 -0
  31. package/dist/lib/lib/Storage.rgr +89 -0
  32. package/dist/lib/lib/Time.rgr +75 -0
  33. package/dist/lib/lib/Timers.rgr +176 -0
  34. package/dist/lib/lib/TypedArrays.rgr +14 -0
  35. package/dist/lib/lib/ViewLib.rgr +851 -0
  36. package/dist/lib/lib/WebLib.rgr +47 -0
  37. package/dist/lib/lib/WebServerLib.rgr +137 -0
  38. package/{lib/ranger-dir.clj → dist/lib/lib/ranger-dir.rgr} +1 -1
  39. package/{compiler/stdlib.clj → dist/lib/lib/stdlib.rgr} +42 -19
  40. package/{lib/stdops.clj → dist/lib/lib/stdops.rgr} +1 -1
  41. package/dist/lib/ranger-dir.rgr +175 -0
  42. package/{lib/stdlib.clj → dist/lib/stdlib.rgr} +2 -2
  43. package/dist/lib/stdops.rgr +168 -0
  44. package/dist/package.json +47 -0
  45. package/{bin/output.js → dist/rgrc.js} +15377 -7935
  46. package/dist/stdops.rgr +168 -0
  47. package/package.json +196 -38
  48. package/adventofcode/day1/bin/LambdaSignature1.java +0 -3
  49. package/adventofcode/day1/bin/LambdaSignature2.java +0 -3
  50. package/adventofcode/day1/bin/LambdaSignature3.java +0 -3
  51. package/adventofcode/day1/bin/day1.cpp +0 -124
  52. package/adventofcode/day1/bin/day1.go +0 -75
  53. package/adventofcode/day1/bin/day1.js +0 -45
  54. package/adventofcode/day1/bin/day1.php +0 -46
  55. package/adventofcode/day1/bin/day1.scala +0 -48
  56. package/adventofcode/day1/bin/day1.swift +0 -48
  57. package/adventofcode/day1/bin/day1_part2.cpp +0 -180
  58. package/adventofcode/day1/bin/day1_part2.go +0 -123
  59. package/adventofcode/day1/bin/day1_part2.js +0 -76
  60. package/adventofcode/day1/bin/day1_part2.php +0 -88
  61. package/adventofcode/day1/bin/day1_part2.scala +0 -81
  62. package/adventofcode/day1/bin/day1_part2.swift +0 -91
  63. package/adventofcode/day1/bin/day_one.java +0 -38
  64. package/adventofcode/day1/bin/day_one_part_two.java +0 -57
  65. package/adventofcode/day1/bin/operatorsOf.java +0 -37
  66. package/adventofcode/day1/bin/operatorsOf_5.java +0 -10
  67. package/adventofcode/day1/bin/operatorsOfboolean_5.java +0 -10
  68. package/adventofcode/day1/bin/variant.hpp +0 -2416
  69. package/adventofcode/day1/compile.bat +0 -7
  70. package/adventofcode/day1/compile2.bat +0 -7
  71. package/adventofcode/day1/day1.clj +0 -19
  72. package/adventofcode/day1/day1_part2.clj +0 -43
  73. package/adventofcode/day1/input1.txt +0 -1
  74. package/adventofcode/day2/bin/LambdaSignature1.class +0 -0
  75. package/adventofcode/day2/bin/LambdaSignature1.java +0 -3
  76. package/adventofcode/day2/bin/LambdaSignature2.class +0 -0
  77. package/adventofcode/day2/bin/LambdaSignature2.java +0 -3
  78. package/adventofcode/day2/bin/day2.cpp +0 -133
  79. package/adventofcode/day2/bin/day2.go +0 -85
  80. package/adventofcode/day2/bin/day2.js +0 -45
  81. package/adventofcode/day2/bin/day2.php +0 -59
  82. package/adventofcode/day2/bin/day2.scala +0 -54
  83. package/adventofcode/day2/bin/day2.swift +0 -62
  84. package/adventofcode/day2/bin/day2_part2.cpp +0 -150
  85. package/adventofcode/day2/bin/day2_part2.go +0 -101
  86. package/adventofcode/day2/bin/day2_part2.js +0 -54
  87. package/adventofcode/day2/bin/day2_part2.php +0 -80
  88. package/adventofcode/day2/bin/day2_part2.scala +0 -68
  89. package/adventofcode/day2/bin/day2_part2.swift +0 -82
  90. package/adventofcode/day2/bin/day_two.java +0 -61
  91. package/adventofcode/day2/bin/day_two_part_two$1$1$1.class +0 -0
  92. package/adventofcode/day2/bin/day_two_part_two$1$1.class +0 -0
  93. package/adventofcode/day2/bin/day_two_part_two$1.class +0 -0
  94. package/adventofcode/day2/bin/day_two_part_two.class +0 -0
  95. package/adventofcode/day2/bin/day_two_part_two.java +0 -80
  96. package/adventofcode/day2/bin/operatorsOf.class +0 -0
  97. package/adventofcode/day2/bin/operatorsOf.java +0 -18
  98. package/adventofcode/day2/bin/variant.hpp +0 -2416
  99. package/adventofcode/day2/compile.bat +0 -7
  100. package/adventofcode/day2/compile2.bat +0 -7
  101. package/adventofcode/day2/day2.clj +0 -60
  102. package/adventofcode/day2/day2_part2.clj +0 -69
  103. package/adventofcode/day2/input1.txt +0 -1
  104. package/adventofcode/day3/bin/Grid.java +0 -92
  105. package/adventofcode/day3/bin/GridRow.java +0 -5
  106. package/adventofcode/day3/bin/LambdaSignature1.java +0 -3
  107. package/adventofcode/day3/bin/LambdaSignature2.java +0 -3
  108. package/adventofcode/day3/bin/LambdaSignature3.java +0 -3
  109. package/adventofcode/day3/bin/day3.cpp +0 -64
  110. package/adventofcode/day3/bin/day3.go +0 -55
  111. package/adventofcode/day3/bin/day3.js +0 -42
  112. package/adventofcode/day3/bin/day3.php +0 -41
  113. package/adventofcode/day3/bin/day3.scala +0 -52
  114. package/adventofcode/day3/bin/day3.swift +0 -43
  115. package/adventofcode/day3/bin/day3_part2.cpp +0 -216
  116. package/adventofcode/day3/bin/day3_part2.go +0 -188
  117. package/adventofcode/day3/bin/day3_part2.js +0 -123
  118. package/adventofcode/day3/bin/day3_part2.php +0 -135
  119. package/adventofcode/day3/bin/day3_part2.swift +0 -131
  120. package/adventofcode/day3/bin/day_three_part_two.java +0 -43
  121. package/adventofcode/day3/bin/day_two.java +0 -42
  122. package/adventofcode/day3/bin/operatorsOf.java +0 -14
  123. package/adventofcode/day3/bin/variant.hpp +0 -2416
  124. package/adventofcode/day3/compile.bat +0 -7
  125. package/adventofcode/day3/compile2.bat +0 -7
  126. package/adventofcode/day3/day3.clj +0 -42
  127. package/adventofcode/day3/day3_part2.clj +0 -112
  128. package/adventofcode/day4/bin/LambdaSignature1.java +0 -3
  129. package/adventofcode/day4/bin/day4.cpp +0 -118
  130. package/adventofcode/day4/bin/day4.go +0 -75
  131. package/adventofcode/day4/bin/day4.js +0 -40
  132. package/adventofcode/day4/bin/day4.php +0 -52
  133. package/adventofcode/day4/bin/day4.scala +0 -47
  134. package/adventofcode/day4/bin/day4.swift +0 -56
  135. package/adventofcode/day4/bin/day4_part2.go +0 -129
  136. package/adventofcode/day4/bin/day4_part2.js +0 -72
  137. package/adventofcode/day4/bin/day_four.java +0 -41
  138. package/adventofcode/day4/bin/inputData.java +0 -7
  139. package/adventofcode/day4/bin/operatorsOf.java +0 -11
  140. package/adventofcode/day4/bin/variant.hpp +0 -2416
  141. package/adventofcode/day4/compile.bat +0 -7
  142. package/adventofcode/day4/compile2.bat +0 -7
  143. package/adventofcode/day4/day4.clj +0 -32
  144. package/adventofcode/day4/day4_part2.clj +0 -44
  145. package/adventofcode/day4/input.clj +0 -519
  146. package/adventofcode/day4/input.txt +0 -512
  147. package/bin/api.ts +0 -24471
  148. package/bin/compiler.ts +0 -24482
  149. package/compiler/ColorConsole.clj +0 -22
  150. package/compiler/ContextOperators.clj +0 -75
  151. package/compiler/FlowEnterVarDef.clj +0 -223
  152. package/compiler/InputFileSystem.clj +0 -276
  153. package/compiler/RangerDocs.clj +0 -7
  154. package/compiler/TFactory.clj +0 -146
  155. package/compiler/TFiles.clj +0 -23
  156. package/compiler/TFlow.clj +0 -39
  157. package/compiler/TNodeFactory.clj +0 -84
  158. package/compiler/TTypes.clj +0 -188
  159. package/compiler/VirtualCompiler.clj +0 -800
  160. package/compiler/bin/ng_Compiler.js +0 -23779
  161. package/compiler/commonmark_plugin.clj +0 -359
  162. package/compiler/feat2.bat +0 -2
  163. package/compiler/feats.bat +0 -9
  164. package/compiler/feature_tests.clj +0 -192
  165. package/compiler/index.js +0 -2
  166. package/compiler/issue_57.clj +0 -25
  167. package/compiler/makefile_plugin.clj +0 -135
  168. package/compiler/markdown_plugin.clj +0 -386
  169. package/compiler/maven_plugin.clj +0 -162
  170. package/compiler/ng_AndroidPageWriter.clj +0 -299
  171. package/compiler/ng_CodeNode.clj +0 -756
  172. package/compiler/ng_CodeNodeCompilerExtensions.clj +0 -839
  173. package/compiler/ng_Compiler.clj +0 -49
  174. package/compiler/ng_CompilerGeneric.clj +0 -260
  175. package/compiler/ng_CompilerOrig.clj +0 -854
  176. package/compiler/ng_DictNode.clj +0 -346
  177. package/compiler/ng_DictNode2.clj +0 -316
  178. package/compiler/ng_Execute.clj +0 -138
  179. package/compiler/ng_Execute1.clj +0 -129
  180. package/compiler/ng_FlowWork.clj +0 -3951
  181. package/compiler/ng_LiveCompiler.clj +0 -1109
  182. package/compiler/ng_RagnerJavaScriptClassWriter.clj +0 -402
  183. package/compiler/ng_RangerActiveOperators.clj +0 -86
  184. package/compiler/ng_RangerAppClassDesc.clj +0 -400
  185. package/compiler/ng_RangerAppEnums.clj +0 -86
  186. package/compiler/ng_RangerAppFunctionDesc.clj +0 -127
  187. package/compiler/ng_RangerAppMessages.clj +0 -15
  188. package/compiler/ng_RangerAppOperatorDesc.clj +0 -20
  189. package/compiler/ng_RangerAppParamDesc.clj +0 -388
  190. package/compiler/ng_RangerAppWriterContext.clj +0 -1793
  191. package/compiler/ng_RangerArgMatch.clj +0 -638
  192. package/compiler/ng_RangerCSharpClassWriter.clj +0 -484
  193. package/compiler/ng_RangerCppClassWriter.clj +0 -1023
  194. package/compiler/ng_RangerDocGenerator.clj +0 -305
  195. package/compiler/ng_RangerFlowParser.clj +0 -4992
  196. package/compiler/ng_RangerFlowParserOrig.clj +0 -4002
  197. package/compiler/ng_RangerGenericClassWriter.clj +0 -573
  198. package/compiler/ng_RangerGolangClassWriter.clj +0 -1766
  199. package/compiler/ng_RangerImmutableExtension.clj +0 -77
  200. package/compiler/ng_RangerJava7ClassWriter.clj +0 -961
  201. package/compiler/ng_RangerJavaScriptClassWriter.clj +0 -1042
  202. package/compiler/ng_RangerKotlinClassWriter.clj +0 -372
  203. package/compiler/ng_RangerLanguageWriters.clj +0 -14
  204. package/compiler/ng_RangerLispParser.clj +0 -873
  205. package/compiler/ng_RangerPHPClassWriter.clj +0 -643
  206. package/compiler/ng_RangerPlugin.clj +0 -41
  207. package/compiler/ng_RangerRangerClassWriter.clj +0 -357
  208. package/compiler/ng_RangerRustClassWriter.clj +0 -420
  209. package/compiler/ng_RangerScalaClassWriter.clj +0 -818
  210. package/compiler/ng_RangerSerializeClass.clj +0 -502
  211. package/compiler/ng_RangerServiceBuilder.clj +0 -63
  212. package/compiler/ng_RangerSwift3ClassWriter.clj +0 -809
  213. package/compiler/ng_RangerSwiftClassWriter.clj +0 -0
  214. package/compiler/ng_RangerTypeClass.clj +0 -45
  215. package/compiler/ng_SourceParser.clj +0 -241
  216. package/compiler/ng_SourceParser2.clj +0 -214
  217. package/compiler/ng_WebPageWriter.clj +0 -39
  218. package/compiler/ng_jsonParser.clj +0 -340
  219. package/compiler/ng_p_test.clj +0 -1711
  220. package/compiler/ng_parser.clj +0 -911
  221. package/compiler/ng_parser2.clj +0 -735
  222. package/compiler/ng_parser2_backup.clj +0 -1679
  223. package/compiler/ng_parser_backup.clj +0 -886
  224. package/compiler/ng_parser_ok.clj +0 -1718
  225. package/compiler/ng_parser_ok2.clj +0 -1717
  226. package/compiler/ng_parser_std_match.clj +0 -687
  227. package/compiler/ng_parser_std_match2.clj +0 -1012
  228. package/compiler/ng_parser_v2.clj +0 -1251
  229. package/compiler/ng_ui.clj +0 -403
  230. package/compiler/ng_ui_test.clj +0 -18
  231. package/compiler/ng_writer.clj +0 -338
  232. package/compiler/ng_xmlParser.clj +0 -472
  233. package/compiler/ng_xmlParser2.clj +0 -317
  234. package/compiler/ng_xmlParser3.clj +0 -251
  235. package/compiler/opdoc.bat +0 -4
  236. package/compiler/operators.md +0 -290
  237. package/compiler/p.bat +0 -4
  238. package/compiler/package.json +0 -10
  239. package/compiler/pcmd.bat +0 -4
  240. package/compiler/pcmd2.bat +0 -3
  241. package/compiler/plaintext_plugin.clj +0 -69
  242. package/compiler/plugin.bat +0 -19
  243. package/compiler/plugin2.bat +0 -4
  244. package/compiler/plugin_app.bat +0 -3
  245. package/compiler/plugin_apps.clj +0 -27
  246. package/compiler/plugins.bat +0 -10
  247. package/compiler/reveal_plugin.clj +0 -409
  248. package/compiler/simplePlugin.clj +0 -780
  249. package/compiler/t.bat +0 -3
  250. package/compiler/test_any.clj +0 -43
  251. package/compiler/test_call.clj +0 -141
  252. package/compiler/test_chain.clj +0 -79
  253. package/compiler/test_json.clj +0 -10
  254. package/compiler/test_lambda.clj +0 -153
  255. package/compiler/test_pcmd.clj +0 -32
  256. package/compiler/test_pcmd2.clj +0 -29
  257. package/compiler/test_plugin.clj +0 -237
  258. package/compiler/test_readfile.clj +0 -13
  259. package/compiler/test_reveal.clj +0 -19
  260. package/compiler/test_slides.clj +0 -312
  261. package/compiler/test_types.clj +0 -143
  262. package/compiler/test_types2.clj +0 -49
  263. package/compiler/test_types3.clj +0 -53
  264. package/compiler/test_var.clj +0 -40
  265. package/compiler/tonpm.bat +0 -14
  266. package/compiler/tonpm2.bat +0 -12
  267. package/compiler/ui_plugin.clj +0 -507
  268. package/compiler/ui_plugin2.clj +0 -427
  269. package/compiler/update-git.bat +0 -3
  270. package/compiler/vcomp.bat +0 -4
  271. package/compiler/viewbuilder_Android.clj +0 -176
  272. package/compiler/viewbuilder_Web.clj +0 -105
  273. package/dist/bin/api.js +0 -32422
  274. package/dist/bin/api.js.map +0 -1
  275. package/dist/bin/compiler.d.ts +0 -1638
  276. package/dist/bin/compiler.js +0 -32444
  277. package/dist/bin/compiler.js.map +0 -1
  278. package/examples/3D/bin/test_3d.js +0 -329
  279. package/examples/3D/test_3d.clj +0 -385
  280. package/examples/EVGColor/EVGColor.clj +0 -310
  281. package/examples/EVGColor/EVGColorContext.clj +0 -176
  282. package/examples/EVGColor/bin/EVGColor.js +0 -286
  283. package/examples/EVGColor/bin/minimized.js +0 -286
  284. package/examples/SVGPath/SVGPath.clj +0 -625
  285. package/examples/SVGPath/Vec2.clj +0 -103
  286. package/examples/SVGPath/bin/SVGPath.cpp +0 -887
  287. package/examples/SVGPath/bin/SVGPath.js +0 -682
  288. package/examples/SVGPath/bin/minimized.js +0 -578
  289. package/examples/SVGPath/bin/variant.hpp +0 -2416
  290. package/examples/minification/Vec2.clj +0 -103
  291. package/examples/minification/bin/minified.js +0 -44
  292. package/examples/minification/bin/test.js +0 -117
  293. package/examples/minification/test.clj +0 -13
  294. package/fiddle/VirtualCompiler.js +0 -23495
  295. package/fiddle/browser_editor.js +0 -13240
  296. package/fiddle/compileEnv.js +0 -1
  297. package/fiddle/compileEnv.json +0 -1
  298. package/fiddle/lang_data.js +0 -1
  299. package/index.html +0 -18
  300. package/native/httpd/HttpTester.clj +0 -33
  301. package/native/httpd/RangerWebService.clj +0 -81
  302. package/operators.md +0 -290
  303. package/tsconfig.json +0 -29
  304. package/versions/cpp/compiler.cpp +0 -15032
  305. package/versions/es6/compiler.js +0 -12860
  306. package/versions/go/compiler.go +0 -21338
  307. package/versions/java/AfterCodeNode.java +0 -4
  308. package/versions/java/ClassJoinPoint.java +0 -6
  309. package/versions/java/CodeFile.java +0 -42
  310. package/versions/java/CodeFileSystem.java +0 -72
  311. package/versions/java/CodeNode.java +0 -807
  312. package/versions/java/CodeSlice.java +0 -13
  313. package/versions/java/CodeWriter.java +0 -185
  314. package/versions/java/ColorConsole.java +0 -8
  315. package/versions/java/CompilerInterface.java +0 -213
  316. package/versions/java/DictNode.java +0 -353
  317. package/versions/java/LiveCompiler.java +0 -772
  318. package/versions/java/NodeEvalState.java +0 -24
  319. package/versions/java/OpFindResult.java +0 -6
  320. package/versions/java/RangerAppArrayValue.java +0 -7
  321. package/versions/java/RangerAppClassDesc.java +0 -217
  322. package/versions/java/RangerAppEnum.java +0 -14
  323. package/versions/java/RangerAppFunctionDesc.java +0 -20
  324. package/versions/java/RangerAppHashValue.java +0 -11
  325. package/versions/java/RangerAppInterfaceImpl.java +0 -6
  326. package/versions/java/RangerAppMethodVariants.java +0 -6
  327. package/versions/java/RangerAppParamDesc.java +0 -321
  328. package/versions/java/RangerAppTodo.java +0 -6
  329. package/versions/java/RangerAppValue.java +0 -10
  330. package/versions/java/RangerAppWriterContext.java +0 -800
  331. package/versions/java/RangerArgMatch.java +0 -317
  332. package/versions/java/RangerBackReference.java +0 -7
  333. package/versions/java/RangerCSharpClassWriter.java +0 -287
  334. package/versions/java/RangerCompilerMessage.java +0 -9
  335. package/versions/java/RangerCppClassWriter.java +0 -725
  336. package/versions/java/RangerFlowParser.java +0 -2142
  337. package/versions/java/RangerGenericClassWriter.java +0 -367
  338. package/versions/java/RangerGolangClassWriter.java +0 -1379
  339. package/versions/java/RangerJava7ClassWriter.java +0 -652
  340. package/versions/java/RangerJavaScriptClassWriter.java +0 -305
  341. package/versions/java/RangerKotlinClassWriter.java +0 -380
  342. package/versions/java/RangerLispParser.java +0 -845
  343. package/versions/java/RangerNodeValue.java +0 -9
  344. package/versions/java/RangerPHPClassWriter.java +0 -527
  345. package/versions/java/RangerParamEventHandler.java +0 -6
  346. package/versions/java/RangerParamEventList.java +0 -5
  347. package/versions/java/RangerParamEventMap.java +0 -27
  348. package/versions/java/RangerRangerClassWriter.java +0 -268
  349. package/versions/java/RangerRefForce.java +0 -7
  350. package/versions/java/RangerScalaClassWriter.java +0 -365
  351. package/versions/java/RangerSerializeClass.java +0 -148
  352. package/versions/java/RangerSwift3ClassWriter.java +0 -548
  353. package/versions/java/RangerTypeClass.java +0 -17
  354. package/versions/java/SourceCode.java +0 -65
  355. package/versions/php/compiler.php +0 -13830
  356. package/versions/swift3/compiler.swift +0 -12542
  357. /package/{lib/ACEEditor.clj → dist/lib/ACEEditor.rgr} +0 -0
  358. /package/{lib/SQL.clj → dist/lib/SQL.rgr} +0 -0
  359. /package/{lib/ServiceLib.clj → dist/lib/ServiceLib.rgr} +0 -0
  360. /package/{lib/Time.clj → dist/lib/Time.rgr} +0 -0
  361. /package/{lib/TypedArrays.clj → dist/lib/TypedArrays.rgr} +0 -0
  362. /package/{lib/WebLib.clj → dist/lib/WebLib.rgr} +0 -0
  363. /package/{lib/WebServerLib.clj → dist/lib/WebServerLib.rgr} +0 -0
@@ -1,886 +0,0 @@
1
- class RangerLispParser {
2
- def code@(optional):SourceCode
3
- def buff@(optional):charbuffer
4
- def len:int 0
5
- def i:int 0
6
- def parents@(weak):[CodeNode]
7
- def next@(optional):CodeNode
8
- def paren_cnt:int 0
9
- def get_op_pred:int 0
10
- def rootNode@(optional):CodeNode
11
- def curr_node@(optional weak):CodeNode
12
- def had_error:boolean false
13
-
14
- Constructor ( code_module:SourceCode ) {
15
- buff = (to_charbuffer code_module.code)
16
- code = code_module
17
- len = (length (( unwrap buff)))
18
- rootNode = (new CodeNode(( unwrap code) 0 0))
19
- rootNode.is_block_node = true
20
- rootNode.expression = true
21
- curr_node = rootNode
22
- push parents ( unwrap curr_node)
23
- paren_cnt = 1
24
- }
25
-
26
- fn joo:void ( cm@(lives):SourceCode) {
27
- def ll:int ( strlen cm.code)
28
- }
29
-
30
- fn getCode:string () {
31
- return (rootNode.getCode())
32
- }
33
-
34
- fn parse_raw_annotation:CodeNode () {
35
- def sp:int i
36
- def ep:int i
37
- i = i + 1
38
- sp = i
39
- ep = i
40
- if (i < len ) {
41
- def a_node2@(returnvalue):CodeNode (new CodeNode(( unwrap code) sp ep))
42
- a_node2.expression = true
43
- curr_node = a_node2
44
- push parents a_node2
45
- i = i + 1
46
- paren_cnt = paren_cnt + 1
47
- this.parse()
48
- return a_node2
49
- } {
50
- }
51
- return (new CodeNode(( unwrap code) sp ep))
52
- }
53
-
54
- fn skip_space:boolean ( is_block_parent@(lives):boolean) {
55
- def s:charbuffer ( unwrap buff)
56
- def did_break:boolean false
57
- if (i >= len) {
58
- return true
59
- }
60
- def c:char (charAt s i)
61
- def bb:boolean c == ((ccode "."))
62
- while ((i < len) && (c <= 32)) {
63
- if (is_block_parent && ((c == 10) || (c == 13))) {
64
- this.end_expression()
65
- did_break = true
66
- break
67
- }
68
- i = 1 + i
69
- if (i >= len) {
70
- return true
71
- }
72
- c = (charAt s i)
73
- }
74
- return did_break
75
- }
76
-
77
- fn end_expression:boolean () {
78
- i = 1 + i
79
- if (i >= len) {
80
- return false
81
- }
82
- paren_cnt = paren_cnt - 1
83
- if (paren_cnt < 0) {
84
- print "Parser error ) mismatch"
85
- }
86
- removeLast parents
87
- if ((!null? curr_node)) {
88
- curr_node.ep = i
89
- curr_node.infix_operator = false
90
- }
91
- if (((array_length parents)) > 0 ) {
92
- curr_node = (itemAt parents (((array_length parents)) - 1))
93
- } {
94
- curr_node = rootNode
95
- }
96
- curr_node.infix_operator = false
97
- return true
98
- }
99
-
100
- fn getOperator:int () {
101
- def s:charbuffer ( unwrap buff)
102
- if ((i + 2) >= len) {
103
- return 0
104
- }
105
- def c:char (charAt s i)
106
- def c2:char (charAt s (i + 1))
107
- switch (c ) {
108
- case (ccode "*") {
109
- i = i + 1
110
- return 14
111
- }
112
- case (ccode "/") {
113
- i = i + 1
114
- return 14
115
- }
116
- case (ccode "+") {
117
- i = i + 1
118
- return 13
119
- }
120
- case (ccode "-") {
121
- i = i + 1
122
- return 13
123
- }
124
- case (ccode "<") {
125
- if (c2 == ((ccode "="))) {
126
- i = i + 2
127
- return 11
128
- }
129
- i = i + 1
130
- return 11
131
- }
132
- case (ccode ">") {
133
- if (c2 == ((ccode "="))) {
134
- i = i + 2
135
- return 11
136
- }
137
- i = i + 1
138
- return 11
139
- }
140
- case (ccode "!") {
141
- if (c2 == ((ccode "="))) {
142
- i = i + 2
143
- return 10
144
- }
145
- return 0
146
- }
147
- case (ccode "=") {
148
- if (c2 == ((ccode "="))) {
149
- i = i + 2
150
- return 10
151
- }
152
- i = i + 1
153
- return 3
154
- }
155
- case (ccode "&") {
156
- if (c2 == ((ccode "&"))) {
157
- i = i + 2
158
- return 6
159
- }
160
- return 0
161
- }
162
- case (ccode "|") {
163
- if (c2 == ((ccode "|"))) {
164
- i = i + 2
165
- return 5
166
- }
167
- return 0
168
- }
169
- default {
170
- }
171
- }
172
- return 0
173
- }
174
-
175
- fn isOperator:int () {
176
- def s:charbuffer ( unwrap buff)
177
- if ((i - 2) > len) {
178
- return 0
179
- }
180
- def c:char (charAt s i)
181
- def c2:char (charAt s (i + 1))
182
- switch (c ) {
183
- case (ccode "*") {
184
- return 1
185
- }
186
- case (ccode "/") {
187
- return 14
188
- }
189
- case (ccode "+") {
190
- return 13
191
- }
192
- case (ccode "-") {
193
- return 13
194
- }
195
- case (ccode "<") {
196
- if (c2 == ((ccode "="))) {
197
- return 11
198
- }
199
- return 11
200
- }
201
- case (ccode ">") {
202
- if (c2 == ((ccode "="))) {
203
- return 11
204
- }
205
- return 11
206
- }
207
- case (ccode "!") {
208
- if (c2 == ((ccode "="))) {
209
- return 10
210
- }
211
- return 0
212
- }
213
- case (ccode "=") {
214
- if (c2 == ((ccode "="))) {
215
- return 10
216
- }
217
- return 3
218
- }
219
- case (ccode "&") {
220
- if (c2 == ((ccode "&"))) {
221
- return 6
222
- }
223
- return 0
224
- }
225
- case (ccode "|") {
226
- if (c2 == ((ccode "|"))) {
227
- return 5
228
- }
229
- return 0
230
- }
231
- default {
232
- }
233
- }
234
- return 0
235
- }
236
-
237
- fn getOperatorPred:int ( str@(lives):string) {
238
- switch (str ) {
239
- case "<" {
240
- return 11
241
- }
242
- case ">" {
243
- return 11
244
- }
245
- case "<=" {
246
- return 11
247
- }
248
- case ">=" {
249
- return 11
250
- }
251
- case "==" {
252
- return 10
253
- }
254
- case "!=" {
255
- return 10
256
- }
257
- case "=" {
258
- return 3
259
- }
260
- case "&&" {
261
- return 6
262
- }
263
- case "||" {
264
- return 5
265
- }
266
- case "+" {
267
- return 13
268
- }
269
- case "-" {
270
- return 13
271
- }
272
- case "*" {
273
- return 14
274
- }
275
- case "/" {
276
- return 14
277
- }
278
- default {
279
- }
280
- }
281
- return 0
282
- }
283
-
284
- fn insert_node:void ( p_node@(strong lives):CodeNode) {
285
- def push_target@(optional weak lives):CodeNode curr_node
286
- if (curr_node.infix_operator) {
287
- push_target = curr_node.infix_node
288
- if (push_target.to_the_right) {
289
- push_target = push_target.right_node
290
- p_node.parent = push_target
291
- }
292
- }
293
- push push_target.children p_node
294
- }
295
-
296
- fn parse:void () {
297
- def s:charbuffer ( unwrap buff)
298
- def c:char (charAt s 0)
299
- def next_c:char 0
300
- def fc:char 0
301
- def new_node@(optional):CodeNode
302
- def sp:int 0
303
- def ep:int 0
304
- def last_i:int 0
305
- def had_lf:boolean false
306
- while (i < len) {
307
- if (had_error) {
308
- break
309
- }
310
- last_i = i
311
- def is_block_parent:boolean false
312
- if (had_lf) {
313
- had_lf = false
314
- this.end_expression()
315
- break
316
- }
317
- if ((!null? curr_node)) {
318
- if ((!null? curr_node.parent)) {
319
- def nodeParent@(optional):CodeNode curr_node.parent
320
- if (nodeParent.is_block_node) {
321
- is_block_parent = true
322
- }
323
- }
324
- }
325
- if ((this.skip_space(is_block_parent))) {
326
- break
327
- }
328
- had_lf = false
329
- c = (charAt s i)
330
- if (i < len) {
331
- c = (charAt s i)
332
- if (c == 59) {
333
- sp = i + 1
334
- while ((i < len) && (((charAt s i)) > 31)) {
335
- i = 1 + i
336
- }
337
- if (i >= len) {
338
- break
339
- }
340
- new_node = (new CodeNode(( unwrap code) sp i))
341
- new_node.parsed_type = RangerNodeType.Comment
342
- new_node.value_type = RangerNodeType.Comment
343
- new_node.string_value = (substring s sp i)
344
- push curr_node.comments ( unwrap new_node)
345
- continue
346
- }
347
- if (i < (len - 1)) {
348
- fc = (charAt s (i + 1))
349
- if ((c == 40) || (c == ((ccode "{"))) || ((c == 39) && (fc == 40)) || ((c == 96) && (fc == 40))) {
350
- paren_cnt = paren_cnt + 1
351
- if ((null? curr_node) ) {
352
- rootNode = (new CodeNode(( unwrap code) i i))
353
- curr_node = rootNode
354
- if (c == 96) {
355
- curr_node.parsed_type = RangerNodeType.Quasiliteral
356
- curr_node.value_type = RangerNodeType.Quasiliteral
357
- }
358
- if (c == 39) {
359
- curr_node.parsed_type = RangerNodeType.Literal
360
- curr_node.value_type = RangerNodeType.Literal
361
- }
362
- curr_node.expression = true
363
- push parents ( unwrap curr_node)
364
- } {
365
- def new_qnode@(lives):CodeNode (new CodeNode(( unwrap code) i i))
366
- if (c == 96) {
367
- new_qnode.value_type = RangerNodeType.Quasiliteral
368
- }
369
- if (c == 39) {
370
- new_qnode.value_type = RangerNodeType.Literal
371
- }
372
- new_qnode.expression = true
373
- this.insert_node(new_qnode)
374
- push parents new_qnode
375
- curr_node = new_qnode
376
- }
377
- if (c == ((ccode "{"))) {
378
- curr_node.is_block_node = true
379
- }
380
- i = 1 + i
381
- this.parse()
382
- continue
383
- }
384
- }
385
- sp = i
386
- ep = i
387
- fc = (charAt s i)
388
- if (((fc == 45) && (((charAt s (i + 1))) >= 46) && (((charAt s (i + 1))) <= 57)) || ((fc >= 48) && (fc <= 57))) {
389
- def is_double:boolean false
390
- sp = i
391
- i = 1 + i
392
- c = (charAt s i)
393
- while ((i < len) && (((c >= 48) && (c <= 57)) || (c == ((ccode "."))) || ((i == sp) && ((c == ((ccode "+"))) || (c == ((ccode "-"))))))) {
394
- if (c == ((ccode "."))) {
395
- is_double = true
396
- }
397
- i = 1 + i
398
- c = (charAt s i)
399
- }
400
- ep = i
401
- def new_num_node:CodeNode (new CodeNode(( unwrap code) sp ep))
402
- if (is_double ) {
403
- new_num_node.parsed_type = RangerNodeType.Double
404
- new_num_node.value_type = RangerNodeType.Double
405
- new_num_node.double_value = ( unwrap ((str2double ((substring s sp ep)))))
406
- } {
407
- new_num_node.parsed_type = RangerNodeType.Integer
408
- new_num_node.value_type = RangerNodeType.Integer
409
- new_num_node.int_value = ( unwrap ((str2int ((substring s sp ep)))))
410
- }
411
- this.insert_node(new_num_node)
412
- continue
413
- }
414
- if (fc == 34) {
415
- sp = i + 1
416
- ep = sp
417
- c = (charAt s i)
418
- def must_encode:boolean false
419
- while (i < len) {
420
- i = 1 + i
421
- c = (charAt s i)
422
- if (c == 34) {
423
- break
424
- }
425
- if (c == 92) {
426
- i = 1 + i
427
- if (i < len ) {
428
- must_encode = true
429
- c = (charAt s i)
430
- } {
431
- break
432
- }
433
- }
434
- }
435
- ep = i
436
- if (i < len) {
437
- def encoded_str:string ""
438
- if (must_encode) {
439
- def orig_str:charbuffer (to_charbuffer ((substring s sp ep)))
440
- def str_length:int (length orig_str)
441
- def ii:int 0
442
- while (ii < str_length) {def cc:char (charAt orig_str ii)
443
- if (cc == 92 ) {
444
- def next_ch:char (charAt orig_str (ii + 1))
445
- switch (next_ch ) {
446
- case 34 {
447
- encoded_str = encoded_str + ((strfromcode 34))
448
- }
449
- case 92 {
450
- encoded_str = encoded_str + ((strfromcode 92))
451
- }
452
- case 47 {
453
- encoded_str = encoded_str + ((strfromcode 47))
454
- }
455
- case 98 {
456
- encoded_str = encoded_str + ((strfromcode 8))
457
- }
458
- case 102 {
459
- encoded_str = encoded_str + ((strfromcode 12))
460
- }
461
- case 110 {
462
- encoded_str = encoded_str + ((strfromcode 10))
463
- }
464
- case 114 {
465
- encoded_str = encoded_str + ((strfromcode 13))
466
- }
467
- case 116 {
468
- encoded_str = encoded_str + ((strfromcode 9))
469
- }
470
- case 117 {
471
- ii = ii + 4
472
- }
473
- default {
474
- }
475
- }
476
- ii = ii + 2
477
- } {
478
- encoded_str = encoded_str + ((substring orig_str ii (1 + ii)))
479
- ii = ii + 1
480
- }
481
- }
482
- }
483
- def new_str_node:CodeNode (new CodeNode(( unwrap code) sp ep))
484
- new_str_node.parsed_type = RangerNodeType.String
485
- new_str_node.value_type = RangerNodeType.String
486
- if (must_encode ) {
487
- new_str_node.string_value = encoded_str
488
- } {
489
- new_str_node.string_value = (substring s sp ep)
490
- }
491
- this.insert_node(new_str_node)
492
- i = 1 + i
493
- continue
494
- }
495
- }
496
- if ((fc == ((ccode "t"))) && (((charAt s (i + 1))) == ((ccode "r"))) && (((charAt s (i + 2))) == ((ccode "u"))) && (((charAt s (i + 3))) == ((ccode "e")))) {
497
- def new_true_node:CodeNode (new CodeNode(( unwrap code) sp sp + 4))
498
- new_true_node.value_type = RangerNodeType.Boolean
499
- new_true_node.parsed_type = RangerNodeType.Boolean
500
- new_true_node.boolean_value = true
501
- this.insert_node(new_true_node)
502
- i = i + 4
503
- continue
504
- }
505
- 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")))) {
506
- def new_f_node:CodeNode (new CodeNode(( unwrap code) sp sp + 5))
507
- new_f_node.value_type = RangerNodeType.Boolean
508
- new_f_node.parsed_type = RangerNodeType.Boolean
509
- new_f_node.boolean_value = false
510
- this.insert_node(new_f_node)
511
- i = i + 5
512
- continue
513
- }
514
- if (fc == ((ccode "@"))) {
515
- i = i + 1
516
- sp = i
517
- ep = i
518
- c = (charAt s i)
519
- while ((i < len) && (((charAt s i)) > 32) && (c != 40) && (c != 41) && (c != ((ccode "}")))) {
520
- i = 1 + i
521
- c = (charAt s i)
522
- }
523
- ep = i
524
- if ((i < len) && (ep > sp)) {
525
- def a_node2@(lives):CodeNode (new CodeNode(( unwrap code) sp ep))
526
- def a_name:string (substring s sp ep)
527
- a_node2.expression = true
528
- curr_node = a_node2
529
- push parents a_node2
530
- i = i + 1
531
- paren_cnt = paren_cnt + 1
532
- this.parse()
533
- def use_first:boolean false
534
- if (1 == ((array_length a_node2.children))) {
535
- def ch1:CodeNode (itemAt a_node2.children 0)
536
- use_first = (ch1.isPrimitive())
537
- }
538
- if (use_first ) {
539
- def theNode:CodeNode (array_extract a_node2.children 0)
540
- set curr_node.props a_name theNode
541
- } {
542
- set curr_node.props a_name a_node2
543
- }
544
- push curr_node.prop_keys a_name
545
- continue
546
- }
547
- }
548
- def ns_list@(temp):[string]
549
- def last_ns:int i
550
- def ns_cnt:int 1
551
- def vref_had_type_ann:boolean false
552
- def vref_ann_node@(optional temp):CodeNode
553
- def vref_end:int i
554
- if ((i < len) && (((charAt s i)) > 32) && (c != 58) && (c != 40) && (c != 41) && (c != ((ccode "}")))) {
555
- if (curr_node.is_block_node == true) {
556
- def new_expr_node:CodeNode (new CodeNode(( unwrap code) sp ep))
557
- new_expr_node.parent = curr_node
558
- new_expr_node.expression = true
559
- push curr_node.children new_expr_node
560
- curr_node = new_expr_node
561
- push parents new_expr_node
562
- paren_cnt = 1 + paren_cnt
563
- this.parse()
564
- continue
565
- }
566
- }
567
- def op_c:int 0
568
- if (((array_length curr_node.children)) >= 0) {
569
- op_c = (this.getOperator())
570
- }
571
- def last_was_newline:boolean false
572
- if (op_c > 0 ) {
573
- } {
574
- while ((i < len) && (((charAt s i)) > 32) && (c != 58) && (c != 40) && (c != 41) && (c != ((ccode "}")))) {
575
- if (i > sp) {
576
- def is_opchar:int (this.isOperator())
577
- if (is_opchar > 0) {
578
- break
579
- }
580
- }
581
- i = 1 + i
582
- c = (charAt s i)
583
- if ((c == 10) || (c == 13)) {
584
- last_was_newline = true
585
- break
586
- }
587
- if (c == ((ccode "."))) {
588
- push ns_list (substring s last_ns i)
589
- last_ns = i + 1
590
- ns_cnt = 1 + ns_cnt
591
- }
592
- if ((i > vref_end) && (c == ((ccode "@")))) {
593
- vref_had_type_ann = true
594
- vref_end = i
595
- vref_ann_node = (this.parse_raw_annotation())
596
- c = (charAt s i)
597
- break
598
- }
599
- }
600
- }
601
- ep = i
602
- if (vref_had_type_ann) {
603
- ep = vref_end
604
- }
605
- push ns_list (substring s last_ns ep)
606
- c = (charAt s i)
607
- while ((i < len) && (c <= 32) && (false == last_was_newline)) {
608
- i = 1 + i
609
- c = (charAt s i)
610
- if (is_block_parent && ((c == 10) || (c == 13))) {
611
- i = i - 1
612
- c = (charAt s i)
613
- had_lf = true
614
- break
615
- }
616
- }
617
- if (c == 58 ) {
618
- i = i + 1
619
- while ((i < len) && (((charAt s i)) <= 32)) {
620
- i = 1 + i
621
- }
622
- def vt_sp:int i
623
- def vt_ep:int i
624
- c = (charAt s i)
625
- if (c == ((ccode "("))) {
626
-
627
- ; tring to parser as annotation...
628
- def vann_arr2@(lives):CodeNode (this.parse_raw_annotation())
629
- vann_arr2.expression = true
630
-
631
- ;def a_node3@(lives):CodeNode (new CodeNode(( unwrap code) sp ep))
632
- ;a_node3.expression = true
633
- ;curr_node = a_node3
634
- ;push parents a_node3
635
- ;i = i + 1
636
- ;this.parse()
637
- def new_expr_node:CodeNode (new CodeNode(( unwrap code) sp vt_ep))
638
- new_expr_node.vref = (substring s sp ep)
639
- new_expr_node.ns = ns_list
640
- new_expr_node.expression_value = vann_arr2
641
- new_expr_node.parsed_type = RangerNodeType.ExpressionType
642
- new_expr_node.value_type = RangerNodeType.ExpressionType
643
- if (vref_had_type_ann) {
644
- new_expr_node.vref_annotation = vref_ann_node
645
- new_expr_node.has_vref_annotation = true
646
- }
647
- push curr_node.children new_expr_node
648
- continue
649
- }
650
- if (c == ((ccode "["))) {
651
- i = i + 1
652
- vt_sp = i
653
- def hash_sep:int 0
654
- def had_array_type_ann:boolean false
655
- c = (charAt s i)
656
- while ((i < len) && (c > 32) && (c != 93)) {
657
- i = 1 + i
658
- c = (charAt s i)
659
- if (c == ((ccode ":"))) {
660
- hash_sep = i
661
- }
662
- if (c == ((ccode "@"))) {
663
- had_array_type_ann = true
664
- break
665
- }
666
- }
667
- vt_ep = i
668
- if (hash_sep > 0 ) {
669
- vt_ep = i
670
- def type_name:string (substring s (1 + hash_sep) vt_ep)
671
- def key_type_name:string (substring s vt_sp hash_sep)
672
- def new_hash_node:CodeNode (new CodeNode(( unwrap code) sp vt_ep))
673
- new_hash_node.vref = (substring s sp ep)
674
- new_hash_node.ns = ns_list
675
- new_hash_node.parsed_type = RangerNodeType.Hash
676
- new_hash_node.value_type = RangerNodeType.Hash
677
- new_hash_node.array_type = type_name
678
- new_hash_node.key_type = key_type_name
679
- if (vref_had_type_ann) {
680
- new_hash_node.vref_annotation = vref_ann_node
681
- new_hash_node.has_vref_annotation = true
682
- }
683
- if (had_array_type_ann) {
684
- def vann_hash:CodeNode (this.parse_raw_annotation())
685
- new_hash_node.type_annotation = vann_hash
686
- new_hash_node.has_type_annotation = true
687
- print "--> parsed HASH TYPE annotation"
688
- }
689
- new_hash_node.parent = curr_node
690
- push curr_node.children new_hash_node
691
- i = 1 + i
692
- continue
693
- } {
694
- vt_ep = i
695
- def type_name:string (substring s vt_sp vt_ep)
696
- def new_arr_node:CodeNode (new CodeNode(( unwrap code) sp vt_ep))
697
- new_arr_node.vref = (substring s sp ep)
698
- new_arr_node.ns = ns_list
699
- new_arr_node.parsed_type = RangerNodeType.Array
700
- new_arr_node.value_type = RangerNodeType.Array
701
- new_arr_node.array_type = type_name
702
- new_arr_node.parent = curr_node
703
- push curr_node.children new_arr_node
704
- if (vref_had_type_ann) {
705
- new_arr_node.vref_annotation = vref_ann_node
706
- new_arr_node.has_vref_annotation = true
707
- }
708
- if (had_array_type_ann) {
709
- def vann_arr:CodeNode (this.parse_raw_annotation())
710
- new_arr_node.type_annotation = vann_arr
711
- new_arr_node.has_type_annotation = true
712
- print "--> parsed ARRAY TYPE annotation"
713
- }
714
- i = 1 + i
715
- continue
716
- }
717
- }
718
- def had_type_ann:boolean false
719
- while ((i < len) && (((charAt s i)) > 32) && (c != 58) && (c != 40) && (c != 41) && (c != ((ccode "}"))) && (c != ((ccode ",")))) {
720
- i = 1 + i
721
- c = (charAt s i)
722
- if (c == ((ccode "@"))) {
723
- had_type_ann = true
724
- break
725
- }
726
- }
727
- if (i < len) {
728
- vt_ep = i
729
- def type_name:string (substring s vt_sp vt_ep)
730
- def new_ref_node:CodeNode (new CodeNode(( unwrap code) sp ep))
731
- new_ref_node.vref = (substring s sp ep)
732
- new_ref_node.ns = ns_list
733
- new_ref_node.parsed_type = RangerNodeType.VRef
734
- new_ref_node.value_type = RangerNodeType.VRef
735
- new_ref_node.type_name = (substring s vt_sp vt_ep)
736
- new_ref_node.parent = curr_node
737
- if (vref_had_type_ann) {
738
- new_ref_node.vref_annotation = vref_ann_node
739
- new_ref_node.has_vref_annotation = true
740
- }
741
- push curr_node.children new_ref_node
742
- if (had_type_ann) {
743
- def vann:CodeNode (this.parse_raw_annotation())
744
- new_ref_node.type_annotation = vann
745
- new_ref_node.has_type_annotation = true
746
- }
747
- continue
748
- }
749
- } {
750
- if ((i < len) && (ep > sp)) {
751
- def new_vref_node:CodeNode (new CodeNode(( unwrap code) sp ep))
752
- new_vref_node.vref = (substring s sp ep)
753
- new_vref_node.parsed_type = RangerNodeType.VRef
754
- new_vref_node.value_type = RangerNodeType.VRef
755
- new_vref_node.ns = ns_list
756
- new_vref_node.parent = curr_node
757
- def op_pred:int (this.getOperatorPred(new_vref_node.vref))
758
- if (new_vref_node.vref == ",") {
759
- curr_node.infix_operator = false
760
- continue
761
- }
762
- def pTarget@(optional weak):CodeNode curr_node
763
- if (curr_node.infix_operator) {
764
- def iNode@(optional):CodeNode curr_node.infix_node
765
- if ((op_pred > 0) || (iNode.to_the_right == false) ) {
766
- pTarget = iNode
767
- } {
768
- def rn@(optional lives):CodeNode iNode.right_node
769
- new_vref_node.parent = rn
770
- pTarget = rn
771
- }
772
- }
773
- push pTarget.children new_vref_node
774
- if (vref_had_type_ann) {
775
- new_vref_node.vref_annotation = vref_ann_node
776
- new_vref_node.has_vref_annotation = true
777
- }
778
- if ( (i + 1) <len ) {
779
- if ((((charAt s (i + 1))) == ((ccode "("))) || (((charAt s (i + 0))) == ((ccode "(")))) {
780
- if ((0 == op_pred) && curr_node.infix_operator && (1 == ((array_length curr_node.children)))) {
781
- }
782
- }
783
- }
784
-
785
- if (((op_pred > 0) && curr_node.infix_operator) || ((op_pred > 0) && (((array_length curr_node.children)) >= 2))) {
786
- if ((op_pred == 3) && (2 == ((array_length curr_node.children))) ) {
787
- def n_ch:CodeNode (array_extract curr_node.children 0)
788
- push curr_node.children n_ch
789
- } {
790
- if (false == curr_node.infix_operator) {
791
- def if_node@(temp lives):CodeNode (new CodeNode(( unwrap code) sp ep))
792
- curr_node.infix_node = if_node
793
- curr_node.infix_operator = true
794
- if_node.infix_subnode = true
795
- curr_node.value_type = RangerNodeType.NoType
796
- curr_node.expression = true
797
- if_node.expression = true
798
- def ch_cnt:int (array_length curr_node.children)
799
- def ii:int 0
800
- def start_from:int ch_cnt - 2
801
- def keep_nodes:CodeNode (new CodeNode(( unwrap code) sp ep))
802
- while (ch_cnt > 0) {def n_ch:CodeNode (array_extract curr_node.children 0)
803
- def p_target:CodeNode if_node
804
- if ((ii < start_from) || n_ch.infix_subnode) {
805
- p_target = keep_nodes
806
- }
807
- push p_target.children n_ch
808
- ch_cnt = ch_cnt - 1
809
- ii = 1 + ii
810
- }
811
- for keep_nodes.children keep:CodeNode i {
812
- push curr_node.children keep
813
- }
814
- push curr_node.children if_node
815
- }
816
- def ifNode@(optional lives):CodeNode curr_node.infix_node
817
- def new_op_node@(temp):CodeNode (new CodeNode(( unwrap code) sp ep))
818
- new_op_node.expression = true
819
- new_op_node.parent = ifNode
820
- def until_index:int ((array_length ifNode.children)) - 1
821
- def to_right:boolean false
822
- def just_continue:boolean false
823
- if ((ifNode.operator_pred > 0) && (ifNode.operator_pred < op_pred)) {
824
- to_right = true
825
- }
826
- if ((ifNode.operator_pred > 0) && (ifNode.operator_pred > op_pred)) {
827
- ifNode.to_the_right = false
828
- }
829
- if ((ifNode.operator_pred > 0) && (ifNode.operator_pred == op_pred)) {
830
- to_right = ifNode.to_the_right
831
- }
832
- def opTarget@(optional):CodeNode ifNode
833
- if (to_right ) {
834
- def op_node:CodeNode (array_extract ifNode.children until_index)
835
- def last_value:CodeNode (array_extract ifNode.children (until_index - 1))
836
- push new_op_node.children op_node
837
- push new_op_node.children last_value
838
- } {
839
- if (false == just_continue) {
840
- while (until_index > 0) {def what_to_add:CodeNode (array_extract ifNode.children 0)
841
- push new_op_node.children what_to_add
842
- until_index = until_index - 1
843
- }
844
- }
845
- }
846
- if (to_right || (false == just_continue)) {
847
- push ifNode.children new_op_node
848
- }
849
- if (to_right) {
850
- ifNode.right_node = new_op_node
851
- ifNode.to_the_right = true
852
- }
853
- ifNode.operator_pred = op_pred
854
- continue
855
- }
856
- }
857
- continue
858
- }
859
- }
860
- if ((c == 41) || (c == ((ccode "}")))) {
861
- if ((c == ((ccode "}"))) && is_block_parent && (((array_length curr_node.children)) > 0)) {
862
- this.end_expression()
863
- }
864
- i = 1 + i
865
- paren_cnt = paren_cnt - 1
866
- if (paren_cnt < 0) {
867
- break
868
- }
869
- removeLast parents
870
- if ((!null? curr_node)) {
871
- curr_node.ep = i
872
- }
873
- if (((array_length parents)) > 0 ) {
874
- curr_node = (itemAt parents (((array_length parents)) - 1))
875
- } {
876
- curr_node = rootNode
877
- }
878
- break
879
- }
880
- if (last_i == i) {
881
- i = 1 + i
882
- }
883
- }
884
- }
885
- }
886
- }