@eagleoutice/flowr 1.5.1 → 2.0.0

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 (570) hide show
  1. package/abstract-interpretation/handler/binop/binop.d.ts +3 -4
  2. package/abstract-interpretation/handler/binop/binop.js +4 -2
  3. package/abstract-interpretation/handler/binop/operators.d.ts +2 -2
  4. package/abstract-interpretation/handler/binop/operators.js +14 -28
  5. package/abstract-interpretation/processor.d.ts +3 -2
  6. package/abstract-interpretation/processor.js +2 -2
  7. package/benchmark/slicer.d.ts +101 -0
  8. package/benchmark/slicer.js +214 -0
  9. package/benchmark/stats/print.d.ts +7 -0
  10. package/benchmark/stats/print.js +151 -0
  11. package/benchmark/stats/stats.d.ts +42 -0
  12. package/benchmark/stats/stats.js +6 -0
  13. package/benchmark/stopwatch.d.ts +35 -0
  14. package/benchmark/stopwatch.js +79 -0
  15. package/benchmark/summarizer/data.d.ts +54 -0
  16. package/benchmark/summarizer/first-phase/input.d.ts +3 -0
  17. package/benchmark/summarizer/first-phase/input.js +76 -0
  18. package/benchmark/summarizer/first-phase/process.d.ts +11 -0
  19. package/benchmark/summarizer/first-phase/process.js +205 -0
  20. package/benchmark/summarizer/second-phase/graph.d.ts +2 -0
  21. package/benchmark/summarizer/second-phase/graph.js +54 -0
  22. package/benchmark/summarizer/second-phase/process.d.ts +6 -0
  23. package/benchmark/summarizer/second-phase/process.js +127 -0
  24. package/benchmark/summarizer/summarizer.d.ts +31 -0
  25. package/benchmark/summarizer/summarizer.js +58 -0
  26. package/cli/benchmark-app.d.ts +10 -0
  27. package/cli/benchmark-app.js +67 -0
  28. package/cli/benchmark-helper-app.d.ts +9 -0
  29. package/cli/benchmark-helper-app.js +69 -0
  30. package/cli/common/features.d.ts +3 -0
  31. package/cli/common/features.js +30 -0
  32. package/cli/common/options.d.ts +20 -0
  33. package/cli/common/options.js +85 -0
  34. package/cli/common/script.d.ts +21 -0
  35. package/cli/common/script.js +61 -0
  36. package/cli/common/scripts-info.d.ts +25 -0
  37. package/cli/common/scripts-info.js +83 -0
  38. package/cli/export-quads-app.d.ts +7 -0
  39. package/cli/export-quads-app.js +43 -0
  40. package/cli/flowr.d.ts +29 -0
  41. package/cli/flowr.js +141 -0
  42. package/cli/repl/commands/cfg.d.ts +3 -0
  43. package/cli/repl/commands/cfg.js +37 -0
  44. package/cli/repl/commands/commands.d.ts +13 -0
  45. package/cli/repl/commands/commands.js +142 -0
  46. package/cli/repl/commands/dataflow.d.ts +3 -0
  47. package/cli/repl/commands/dataflow.js +34 -0
  48. package/cli/repl/commands/execute.d.ts +4 -0
  49. package/cli/repl/commands/execute.js +27 -0
  50. package/cli/repl/commands/main.d.ts +39 -0
  51. package/cli/repl/commands/main.js +14 -0
  52. package/cli/repl/commands/normalize.d.ts +3 -0
  53. package/cli/repl/commands/normalize.js +34 -0
  54. package/cli/repl/commands/parse.d.ts +2 -0
  55. package/cli/repl/commands/parse.js +110 -0
  56. package/cli/repl/commands/quit.d.ts +2 -0
  57. package/cli/repl/commands/quit.js +15 -0
  58. package/cli/repl/commands/version.d.ts +16 -0
  59. package/cli/repl/commands/version.js +28 -0
  60. package/cli/repl/core.d.ts +36 -0
  61. package/cli/repl/core.js +174 -0
  62. package/cli/repl/execute.d.ts +28 -0
  63. package/cli/repl/execute.js +79 -0
  64. package/cli/repl/print-version.d.ts +2 -0
  65. package/cli/repl/print-version.js +10 -0
  66. package/cli/repl/prompt.d.ts +2 -0
  67. package/cli/repl/prompt.js +9 -0
  68. package/cli/repl/server/connection.d.ts +21 -0
  69. package/cli/repl/server/connection.js +218 -0
  70. package/cli/repl/server/messages/analysis.d.ts +72 -0
  71. package/cli/repl/server/messages/analysis.js +21 -0
  72. package/cli/repl/server/messages/error.d.ts +11 -0
  73. package/{core/input.js → cli/repl/server/messages/error.js} +1 -1
  74. package/cli/repl/server/messages/hello.d.ts +20 -0
  75. package/{core/output.js → cli/repl/server/messages/hello.js} +1 -1
  76. package/cli/repl/server/messages/messages.d.ts +35 -0
  77. package/cli/repl/server/messages/messages.js +40 -0
  78. package/cli/repl/server/messages/repl.d.ts +33 -0
  79. package/cli/repl/server/messages/repl.js +37 -0
  80. package/cli/repl/server/messages/slice.d.ts +26 -0
  81. package/cli/repl/server/messages/slice.js +37 -0
  82. package/cli/repl/server/net.d.ts +49 -0
  83. package/cli/repl/server/net.js +63 -0
  84. package/cli/repl/server/send.d.ts +4 -0
  85. package/cli/repl/server/send.js +18 -0
  86. package/cli/repl/server/server.d.ts +20 -0
  87. package/cli/repl/server/server.js +66 -0
  88. package/cli/repl/server/validate.d.ts +15 -0
  89. package/cli/repl/server/validate.js +34 -0
  90. package/cli/slicer-app.d.ts +11 -0
  91. package/cli/slicer-app.js +83 -0
  92. package/cli/statistics-app.d.ts +11 -0
  93. package/cli/statistics-app.js +99 -0
  94. package/cli/statistics-helper-app.d.ts +11 -0
  95. package/cli/statistics-helper-app.js +87 -0
  96. package/cli/summarizer-app.d.ts +18 -0
  97. package/cli/summarizer-app.js +66 -0
  98. package/core/pipeline-executor.d.ts +154 -0
  99. package/core/pipeline-executor.js +221 -0
  100. package/core/print/dataflow-printer.d.ts +3 -4
  101. package/core/print/dataflow-printer.js +5 -5
  102. package/core/print/normalize-printer.d.ts +1 -1
  103. package/core/print/normalize-printer.js +3 -3
  104. package/core/print/parse-printer.js +3 -3
  105. package/core/print/print.d.ts +13 -4
  106. package/core/print/print.js +13 -2
  107. package/core/print/slice-diff-ansi.d.ts +3 -2
  108. package/core/print/slice-diff-ansi.js +4 -4
  109. package/core/steps/all/core/00-parse.d.ts +28 -0
  110. package/core/steps/all/core/00-parse.js +24 -0
  111. package/core/steps/all/core/10-normalize.d.ts +29 -0
  112. package/core/steps/all/core/10-normalize.js +26 -0
  113. package/core/steps/all/core/20-dataflow.d.ts +27 -0
  114. package/core/steps/all/core/20-dataflow.js +29 -0
  115. package/core/steps/all/static-slicing/00-slice.d.ts +28 -0
  116. package/core/steps/all/static-slicing/00-slice.js +21 -0
  117. package/core/steps/all/static-slicing/10-reconstruct.d.ts +25 -0
  118. package/core/steps/all/static-slicing/10-reconstruct.js +21 -0
  119. package/core/steps/pipeline/create-pipeline.d.ts +6 -0
  120. package/core/steps/pipeline/create-pipeline.js +130 -0
  121. package/core/steps/pipeline/default-pipelines.d.ts +251 -0
  122. package/core/steps/pipeline/default-pipelines.js +18 -0
  123. package/core/steps/pipeline/invalid-pipeline-error.d.ts +6 -0
  124. package/core/steps/pipeline/invalid-pipeline-error.js +14 -0
  125. package/core/steps/pipeline/pipeline.d.ts +60 -0
  126. package/core/steps/pipeline/pipeline.js +28 -0
  127. package/core/steps/pipeline-step.d.ts +85 -0
  128. package/core/steps/pipeline-step.js +8 -0
  129. package/dataflow/environments/append.d.ts +4 -4
  130. package/dataflow/environments/append.js +4 -4
  131. package/dataflow/environments/built-in.d.ts +25 -0
  132. package/dataflow/environments/built-in.js +123 -0
  133. package/dataflow/environments/clone.d.ts +2 -0
  134. package/dataflow/environments/clone.js +23 -0
  135. package/dataflow/environments/{register.d.ts → define.d.ts} +3 -3
  136. package/dataflow/environments/define.js +51 -0
  137. package/dataflow/environments/diff.d.ts +6 -0
  138. package/dataflow/environments/diff.js +85 -0
  139. package/dataflow/environments/environment.d.ts +10 -43
  140. package/dataflow/environments/environment.js +32 -138
  141. package/dataflow/environments/identifier.d.ts +31 -0
  142. package/dataflow/environments/identifier.js +3 -0
  143. package/dataflow/environments/overwrite.d.ts +4 -4
  144. package/dataflow/environments/overwrite.js +9 -22
  145. package/dataflow/environments/resolve-by-name.d.ts +7 -6
  146. package/dataflow/environments/resolve-by-name.js +35 -19
  147. package/dataflow/environments/scoping.js +1 -4
  148. package/dataflow/extractor.d.ts +6 -6
  149. package/dataflow/extractor.js +47 -57
  150. package/dataflow/graph/diff.d.ts +24 -7
  151. package/dataflow/graph/diff.js +114 -74
  152. package/dataflow/graph/edge.d.ts +66 -20
  153. package/dataflow/graph/edge.js +73 -27
  154. package/dataflow/graph/graph.d.ts +53 -29
  155. package/dataflow/graph/graph.js +84 -89
  156. package/dataflow/graph/quads.js +2 -2
  157. package/dataflow/graph/vertex.d.ts +37 -34
  158. package/dataflow/info.d.ts +49 -0
  159. package/dataflow/info.js +29 -0
  160. package/dataflow/internal/linker.d.ts +11 -10
  161. package/dataflow/internal/linker.js +64 -90
  162. package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +6 -0
  163. package/dataflow/internal/process/functions/call/argument/make-argument.js +31 -0
  164. package/dataflow/internal/process/functions/call/argument/unpack-argument.d.ts +3 -0
  165. package/dataflow/internal/process/functions/call/argument/unpack-argument.js +18 -0
  166. package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +9 -0
  167. package/dataflow/internal/process/functions/call/built-in/built-in-access.js +82 -0
  168. package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +29 -0
  169. package/dataflow/internal/process/functions/call/built-in/built-in-assignment.js +167 -0
  170. package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.d.ts +11 -0
  171. package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +165 -0
  172. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.d.ts +7 -0
  173. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +97 -0
  174. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.d.ts +7 -0
  175. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +165 -0
  176. package/dataflow/internal/process/functions/call/built-in/built-in-get.d.ts +7 -0
  177. package/dataflow/internal/process/functions/call/built-in/built-in-get.js +36 -0
  178. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.d.ts +7 -0
  179. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +100 -0
  180. package/dataflow/internal/process/functions/call/built-in/built-in-library.d.ts +7 -0
  181. package/dataflow/internal/process/functions/call/built-in/built-in-library.js +32 -0
  182. package/dataflow/internal/process/functions/call/built-in/built-in-logical-bin-op.d.ts +9 -0
  183. package/dataflow/internal/process/functions/call/built-in/built-in-logical-bin-op.js +35 -0
  184. package/dataflow/internal/process/functions/call/built-in/built-in-pipe.d.ts +7 -0
  185. package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +35 -0
  186. package/dataflow/internal/process/functions/call/built-in/built-in-quote.d.ts +9 -0
  187. package/dataflow/internal/process/functions/call/built-in/built-in-quote.js +29 -0
  188. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.d.ts +7 -0
  189. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +32 -0
  190. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.d.ts +12 -0
  191. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +45 -0
  192. package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +11 -0
  193. package/dataflow/internal/process/functions/call/built-in/built-in-source.js +72 -0
  194. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.d.ts +7 -0
  195. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +61 -0
  196. package/dataflow/internal/process/functions/call/common.d.ts +35 -0
  197. package/dataflow/internal/process/functions/call/common.js +70 -0
  198. package/dataflow/internal/process/functions/call/default-call-handling.d.ts +5 -0
  199. package/dataflow/internal/process/functions/call/default-call-handling.js +15 -0
  200. package/dataflow/internal/process/functions/call/known-call-handling.d.ts +26 -0
  201. package/dataflow/internal/process/functions/call/known-call-handling.js +62 -0
  202. package/dataflow/internal/process/functions/call/named-call-handling.d.ts +7 -0
  203. package/dataflow/internal/process/functions/call/named-call-handling.js +53 -0
  204. package/dataflow/internal/process/functions/call/unnamed-call-handling.d.ts +6 -0
  205. package/dataflow/internal/process/functions/call/unnamed-call-handling.js +58 -0
  206. package/dataflow/internal/process/functions/process-argument.d.ts +9 -0
  207. package/dataflow/internal/process/functions/{argument.js → process-argument.js} +25 -20
  208. package/dataflow/internal/process/functions/{parameter.d.ts → process-parameter.d.ts} +3 -2
  209. package/dataflow/internal/process/functions/{parameter.js → process-parameter.js} +10 -13
  210. package/dataflow/internal/process/process-named-call.d.ts +6 -0
  211. package/dataflow/internal/process/process-named-call.js +17 -0
  212. package/dataflow/internal/process/process-symbol.d.ts +5 -0
  213. package/dataflow/internal/process/process-symbol.js +26 -0
  214. package/dataflow/internal/process/process-uninteresting-leaf.d.ts +4 -0
  215. package/dataflow/internal/process/process-uninteresting-leaf.js +9 -0
  216. package/dataflow/internal/process/process-value.d.ts +4 -0
  217. package/dataflow/internal/process/process-value.js +22 -0
  218. package/dataflow/logger.d.ts +1 -0
  219. package/dataflow/logger.js +6 -0
  220. package/dataflow/processor.d.ts +18 -13
  221. package/dataflow/processor.js +1 -1
  222. package/package.json +48 -85
  223. package/r-bridge/data/data.d.ts +603 -0
  224. package/r-bridge/data/data.js +753 -0
  225. package/r-bridge/data/get.d.ts +19 -0
  226. package/r-bridge/data/get.js +51 -0
  227. package/r-bridge/data/print.d.ts +1 -0
  228. package/r-bridge/data/print.js +58 -0
  229. package/r-bridge/data/types.d.ts +33 -0
  230. package/r-bridge/data/types.js +3 -0
  231. package/r-bridge/init.d.ts +3 -0
  232. package/r-bridge/init.js +22 -0
  233. package/r-bridge/lang-4.x/ast/model/collect.d.ts +2 -1
  234. package/r-bridge/lang-4.x/ast/model/collect.js +2 -2
  235. package/r-bridge/lang-4.x/ast/model/model.d.ts +26 -5
  236. package/r-bridge/lang-4.x/ast/model/nodes/r-access.d.ts +4 -3
  237. package/r-bridge/lang-4.x/ast/model/nodes/r-argument.d.ts +4 -0
  238. package/r-bridge/lang-4.x/ast/model/nodes/r-binary-op.d.ts +0 -17
  239. package/r-bridge/lang-4.x/ast/model/nodes/r-expression-list.d.ts +3 -1
  240. package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +6 -4
  241. package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.js +2 -0
  242. package/r-bridge/lang-4.x/ast/model/nodes/r-function-definition.d.ts +2 -3
  243. package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +1 -1
  244. package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +1 -1
  245. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +2 -2
  246. package/r-bridge/lang-4.x/ast/model/nodes/r-unary-op.d.ts +0 -11
  247. package/r-bridge/lang-4.x/ast/model/operators.d.ts +6 -18
  248. package/r-bridge/lang-4.x/ast/model/operators.js +36 -48
  249. package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +19 -15
  250. package/r-bridge/lang-4.x/ast/model/processing/decorate.js +59 -54
  251. package/r-bridge/lang-4.x/ast/model/processing/node-id.d.ts +8 -0
  252. package/r-bridge/lang-4.x/ast/model/processing/node-id.js +18 -0
  253. package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +2 -2
  254. package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +28 -17
  255. package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.js +7 -34
  256. package/r-bridge/lang-4.x/ast/model/processing/visitor.js +5 -2
  257. package/r-bridge/lang-4.x/ast/model/type.js +13 -6
  258. package/r-bridge/lang-4.x/ast/parser/json/format.d.ts +4 -1
  259. package/r-bridge/lang-4.x/ast/parser/json/format.js +9 -2
  260. package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +5 -5
  261. package/r-bridge/lang-4.x/ast/parser/json/parser.js +22 -27
  262. package/r-bridge/lang-4.x/ast/parser/xml/input-format.d.ts +10 -7
  263. package/r-bridge/lang-4.x/ast/parser/xml/input-format.js +19 -11
  264. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then-else.d.ts → normalize-if-then-else.d.ts} +3 -3
  265. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then-else.js → normalize-if-then-else.js} +10 -13
  266. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then.d.ts → normalize-if-then.d.ts} +3 -3
  267. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then.js → normalize-if-then.js} +9 -12
  268. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/normalize-expression.d.ts +10 -0
  269. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/normalize-expression.js +64 -0
  270. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{argument.d.ts → normalize-argument.d.ts} +4 -4
  271. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{argument.js → normalize-argument.js} +13 -17
  272. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{call.d.ts → normalize-call.d.ts} +6 -4
  273. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{call.js → normalize-call.js} +24 -29
  274. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/normalize-definition.d.ts +12 -0
  275. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{definition.js → normalize-definition.js} +14 -19
  276. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{parameter.d.ts → normalize-parameter.d.ts} +4 -4
  277. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{parameter.js → normalize-parameter.js} +12 -16
  278. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-break.d.ts +4 -0
  279. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{break.js → normalize-break.js} +6 -8
  280. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-for.d.ts +4 -0
  281. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{for.js → normalize-for.js} +18 -20
  282. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-next.d.ts +4 -0
  283. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{next.js → normalize-next.js} +6 -8
  284. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-repeat.d.ts +13 -0
  285. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{repeat.js → normalize-repeat.js} +13 -16
  286. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-while.d.ts +4 -0
  287. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{while.js → normalize-while.js} +10 -12
  288. package/r-bridge/lang-4.x/ast/parser/xml/internal/{access.d.ts → normalize-access.d.ts} +4 -4
  289. package/r-bridge/lang-4.x/ast/parser/xml/internal/{access.js → normalize-access.js} +44 -45
  290. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/{binary.d.ts → normalize-binary.d.ts} +3 -3
  291. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/{binary.js → normalize-binary.js} +23 -73
  292. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/normalize-unary.d.ts +13 -0
  293. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/normalize-unary.js +47 -0
  294. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/normalize-comment.d.ts +11 -0
  295. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/{comment.js → normalize-comment.js} +5 -10
  296. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/normalize-line-directive.d.ts +13 -0
  297. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/{line-directive.js → normalize-line-directive.js} +7 -12
  298. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-delimiter.d.ts +3 -0
  299. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-delimiter.js +15 -0
  300. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-expressions.d.ts +10 -0
  301. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-expressions.js +182 -0
  302. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-root.d.ts +4 -0
  303. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-root.js +34 -0
  304. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-single-node.d.ts +13 -0
  305. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-single-node.js +59 -0
  306. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/normalize-number.d.ts +16 -0
  307. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{number.js → normalize-number.js} +12 -18
  308. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/normalize-string.d.ts +11 -0
  309. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{string.js → normalize-string.js} +7 -12
  310. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{symbol.d.ts → normalize-symbol.d.ts} +4 -4
  311. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{symbol.js → normalize-symbol.js} +12 -15
  312. package/r-bridge/lang-4.x/ast/parser/xml/{internal/meta.d.ts → normalize-meta.d.ts} +5 -3
  313. package/r-bridge/lang-4.x/ast/parser/xml/{internal/meta.js → normalize-meta.js} +8 -8
  314. package/r-bridge/lang-4.x/ast/parser/xml/{data.d.ts → normalizer-data.d.ts} +1 -5
  315. package/r-bridge/lang-4.x/ast/parser/xml/normalizer-data.js +3 -0
  316. package/r-bridge/lang-4.x/{values.d.ts → convert-values.d.ts} +2 -2
  317. package/r-bridge/lang-4.x/{values.js → convert-values.js} +5 -5
  318. package/r-bridge/retriever.d.ts +5 -5
  319. package/r-bridge/retriever.js +11 -24
  320. package/r-bridge/shell-executor.d.ts +0 -1
  321. package/r-bridge/shell-executor.js +7 -12
  322. package/r-bridge/shell.d.ts +14 -12
  323. package/r-bridge/shell.js +52 -47
  324. package/reconstruct/reconstruct.d.ts +4 -2
  325. package/reconstruct/reconstruct.js +193 -185
  326. package/slicing/criterion/collect-all.d.ts +4 -3
  327. package/slicing/criterion/collect-all.js +5 -1
  328. package/slicing/criterion/filters/all-variables.js +14 -22
  329. package/slicing/criterion/parse.d.ts +4 -2
  330. package/slicing/criterion/parse.js +13 -11
  331. package/slicing/static/fingerprint.d.ts +5 -0
  332. package/slicing/static/fingerprint.js +17 -0
  333. package/slicing/static/slice-call.d.ts +10 -0
  334. package/slicing/static/slice-call.js +86 -0
  335. package/slicing/static/slicer-types.d.ts +33 -0
  336. package/slicing/static/slicer-types.js +3 -0
  337. package/slicing/static/static-slicer.d.ts +6 -24
  338. package/slicing/static/static-slicer.js +54 -155
  339. package/slicing/static/visiting-queue.d.ts +23 -0
  340. package/slicing/static/visiting-queue.js +53 -0
  341. package/statistics/features/common-syntax-probability.d.ts +29 -0
  342. package/statistics/features/common-syntax-probability.js +159 -0
  343. package/statistics/features/feature.d.ts +182 -0
  344. package/statistics/features/feature.js +39 -0
  345. package/statistics/features/post-processing.d.ts +12 -0
  346. package/statistics/features/post-processing.js +21 -0
  347. package/statistics/features/supported/assignments/assignments.d.ts +12 -0
  348. package/statistics/features/supported/assignments/assignments.js +55 -0
  349. package/statistics/features/supported/assignments/post-process.d.ts +3 -0
  350. package/statistics/features/supported/assignments/post-process.js +124 -0
  351. package/statistics/features/supported/comments/comments.d.ts +18 -0
  352. package/statistics/features/supported/comments/comments.js +133 -0
  353. package/statistics/features/supported/comments/post-process.d.ts +3 -0
  354. package/statistics/features/supported/comments/post-process.js +49 -0
  355. package/statistics/features/supported/control-flow/control-flow.d.ts +17 -0
  356. package/statistics/features/supported/control-flow/control-flow.js +68 -0
  357. package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
  358. package/statistics/features/supported/control-flow/post-process.js +64 -0
  359. package/statistics/features/supported/data-access/data-access.d.ts +15 -0
  360. package/statistics/features/supported/data-access/data-access.js +120 -0
  361. package/statistics/features/supported/data-access/post-process.d.ts +3 -0
  362. package/statistics/features/supported/data-access/post-process.js +106 -0
  363. package/statistics/features/supported/defined-functions/defined-functions.d.ts +34 -0
  364. package/statistics/features/supported/defined-functions/defined-functions.js +142 -0
  365. package/statistics/features/supported/defined-functions/post-process.d.ts +6 -0
  366. package/statistics/features/supported/defined-functions/post-process.js +169 -0
  367. package/statistics/features/supported/expression-list/expression-list.d.ts +9 -0
  368. package/statistics/features/supported/expression-list/expression-list.js +36 -0
  369. package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
  370. package/statistics/features/supported/expression-list/post-process.js +43 -0
  371. package/statistics/features/supported/loops/loops.d.ts +20 -0
  372. package/statistics/features/supported/loops/loops.js +79 -0
  373. package/statistics/features/supported/loops/post-process.d.ts +3 -0
  374. package/statistics/features/supported/loops/post-process.js +71 -0
  375. package/statistics/features/supported/used-functions/post-process.d.ts +6 -0
  376. package/statistics/features/supported/used-functions/post-process.js +178 -0
  377. package/statistics/features/supported/used-functions/used-functions.d.ts +24 -0
  378. package/statistics/features/supported/used-functions/used-functions.js +97 -0
  379. package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
  380. package/statistics/features/supported/used-packages/post-process.js +120 -0
  381. package/statistics/features/supported/used-packages/used-packages.d.ts +16 -0
  382. package/statistics/features/supported/used-packages/used-packages.js +130 -0
  383. package/statistics/features/supported/values/post-process.d.ts +3 -0
  384. package/statistics/features/supported/values/post-process.js +71 -0
  385. package/statistics/features/supported/values/values.d.ts +14 -0
  386. package/statistics/features/supported/values/values.js +101 -0
  387. package/statistics/features/supported/variables/post-process.d.ts +9 -0
  388. package/statistics/features/supported/variables/post-process.js +121 -0
  389. package/statistics/features/supported/variables/variables.d.ts +15 -0
  390. package/statistics/features/supported/variables/variables.js +60 -0
  391. package/statistics/meta-statistics.d.ts +33 -0
  392. package/statistics/meta-statistics.js +17 -0
  393. package/statistics/output/file-provider.d.ts +37 -0
  394. package/statistics/output/file-provider.js +97 -0
  395. package/statistics/output/print-stats.d.ts +17 -0
  396. package/statistics/output/print-stats.js +69 -0
  397. package/statistics/output/statistics-file.d.ts +37 -0
  398. package/statistics/output/statistics-file.js +69 -0
  399. package/statistics/statistics.d.ts +28 -0
  400. package/statistics/statistics.js +108 -0
  401. package/statistics/summarizer/auto-detect.d.ts +2 -0
  402. package/statistics/summarizer/auto-detect.js +32 -0
  403. package/statistics/summarizer/first-phase/process.d.ts +6 -0
  404. package/statistics/summarizer/first-phase/process.js +81 -0
  405. package/statistics/summarizer/post-process/clusterer.d.ts +26 -0
  406. package/statistics/summarizer/post-process/clusterer.js +43 -0
  407. package/statistics/summarizer/post-process/file-based-count.d.ts +17 -0
  408. package/statistics/summarizer/post-process/file-based-count.js +49 -0
  409. package/statistics/summarizer/post-process/histogram.d.ts +59 -0
  410. package/statistics/summarizer/post-process/histogram.js +128 -0
  411. package/statistics/summarizer/post-process/post-process-output.d.ts +16 -0
  412. package/statistics/summarizer/post-process/post-process-output.js +105 -0
  413. package/statistics/summarizer/second-phase/process.d.ts +11 -0
  414. package/statistics/summarizer/second-phase/process.js +116 -0
  415. package/statistics/summarizer/summarizer.d.ts +35 -0
  416. package/statistics/summarizer/summarizer.js +135 -0
  417. package/util/ansi.d.ts +2 -2
  418. package/util/ansi.js +2 -2
  419. package/util/arrays.d.ts +11 -1
  420. package/util/arrays.js +34 -1
  421. package/util/assert.d.ts +1 -0
  422. package/util/assert.js +5 -1
  423. package/util/cfg/cfg.d.ts +3 -2
  424. package/util/cfg/cfg.js +17 -28
  425. package/util/cfg/visitor.d.ts +1 -1
  426. package/util/defaultmap.d.ts +1 -1
  427. package/util/defaultmap.js +1 -1
  428. package/util/diff.d.ts +4 -4
  429. package/util/files.d.ts +2 -2
  430. package/util/files.js +1 -1
  431. package/util/log.d.ts +1 -0
  432. package/util/log.js +7 -1
  433. package/util/logic.d.ts +1 -0
  434. package/util/logic.js +3 -0
  435. package/util/mermaid/ast.d.ts +1 -1
  436. package/util/mermaid/ast.js +2 -2
  437. package/util/mermaid/cfg.d.ts +1 -1
  438. package/util/mermaid/dfg.d.ts +34 -8
  439. package/util/mermaid/dfg.js +99 -70
  440. package/util/mermaid/mermaid.d.ts +1 -1
  441. package/util/mermaid/mermaid.js +6 -7
  442. package/util/objects.js +4 -0
  443. package/util/quads.d.ts +3 -3
  444. package/util/quads.js +0 -1
  445. package/util/range.d.ts +27 -14
  446. package/util/range.js +31 -27
  447. package/util/version.js +1 -1
  448. package/core/index.d.ts +0 -4
  449. package/core/index.js +0 -23
  450. package/core/input.d.ts +0 -42
  451. package/core/output.d.ts +0 -15
  452. package/core/slicer.d.ts +0 -124
  453. package/core/slicer.js +0 -227
  454. package/core/steps.d.ts +0 -508
  455. package/core/steps.js +0 -100
  456. package/dataflow/environments/index.d.ts +0 -7
  457. package/dataflow/environments/index.js +0 -23
  458. package/dataflow/environments/register.js +0 -40
  459. package/dataflow/environments/scopes.d.ts +0 -6
  460. package/dataflow/environments/scopes.js +0 -6
  461. package/dataflow/graph/index.d.ts +0 -4
  462. package/dataflow/graph/index.js +0 -21
  463. package/dataflow/index.d.ts +0 -5
  464. package/dataflow/index.js +0 -24
  465. package/dataflow/internal/info.d.ts +0 -21
  466. package/dataflow/internal/info.js +0 -16
  467. package/dataflow/internal/process/access.d.ts +0 -4
  468. package/dataflow/internal/process/access.js +0 -53
  469. package/dataflow/internal/process/expression-list.d.ts +0 -8
  470. package/dataflow/internal/process/expression-list.js +0 -144
  471. package/dataflow/internal/process/functions/argument.d.ts +0 -8
  472. package/dataflow/internal/process/functions/exit-points.d.ts +0 -2
  473. package/dataflow/internal/process/functions/exit-points.js +0 -121
  474. package/dataflow/internal/process/functions/function-call.d.ts +0 -5
  475. package/dataflow/internal/process/functions/function-call.js +0 -105
  476. package/dataflow/internal/process/functions/function-definition.d.ts +0 -4
  477. package/dataflow/internal/process/functions/function-definition.js +0 -176
  478. package/dataflow/internal/process/functions/source.d.ts +0 -8
  479. package/dataflow/internal/process/functions/source.js +0 -81
  480. package/dataflow/internal/process/if-then-else.d.ts +0 -4
  481. package/dataflow/internal/process/if-then-else.js +0 -56
  482. package/dataflow/internal/process/loops/for-loop.d.ts +0 -4
  483. package/dataflow/internal/process/loops/for-loop.js +0 -54
  484. package/dataflow/internal/process/loops/repeat-loop.d.ts +0 -4
  485. package/dataflow/internal/process/loops/repeat-loop.js +0 -21
  486. package/dataflow/internal/process/loops/while-loop.d.ts +0 -4
  487. package/dataflow/internal/process/loops/while-loop.js +0 -31
  488. package/dataflow/internal/process/operators/assignment.d.ts +0 -4
  489. package/dataflow/internal/process/operators/assignment.js +0 -129
  490. package/dataflow/internal/process/operators/non-assignment-binary-op.d.ts +0 -4
  491. package/dataflow/internal/process/operators/non-assignment-binary-op.js +0 -25
  492. package/dataflow/internal/process/operators/pipe.d.ts +0 -4
  493. package/dataflow/internal/process/operators/pipe.js +0 -46
  494. package/dataflow/internal/process/operators/unary-op.d.ts +0 -4
  495. package/dataflow/internal/process/operators/unary-op.js +0 -10
  496. package/dataflow/internal/process/symbol.d.ts +0 -4
  497. package/dataflow/internal/process/symbol.js +0 -21
  498. package/dataflow/internal/process/uninteresting-leaf.d.ts +0 -3
  499. package/dataflow/internal/process/uninteresting-leaf.js +0 -9
  500. package/index.d.ts +0 -4
  501. package/index.js +0 -21
  502. package/r-bridge/index.d.ts +0 -11
  503. package/r-bridge/index.js +0 -28
  504. package/r-bridge/lang-4.x/ast/index.d.ts +0 -3
  505. package/r-bridge/lang-4.x/ast/index.js +0 -22
  506. package/r-bridge/lang-4.x/ast/model/index.d.ts +0 -6
  507. package/r-bridge/lang-4.x/ast/model/index.js +0 -23
  508. package/r-bridge/lang-4.x/ast/model/nodes/index.d.ts +0 -21
  509. package/r-bridge/lang-4.x/ast/model/nodes/index.js +0 -38
  510. package/r-bridge/lang-4.x/ast/model/nodes/info/index.d.ts +0 -13
  511. package/r-bridge/lang-4.x/ast/model/nodes/info/index.js +0 -27
  512. package/r-bridge/lang-4.x/ast/model/processing/index.d.ts +0 -5
  513. package/r-bridge/lang-4.x/ast/model/processing/index.js +0 -22
  514. package/r-bridge/lang-4.x/ast/parser/xml/hooks.d.ts +0 -292
  515. package/r-bridge/lang-4.x/ast/parser/xml/hooks.js +0 -136
  516. package/r-bridge/lang-4.x/ast/parser/xml/index.d.ts +0 -3
  517. package/r-bridge/lang-4.x/ast/parser/xml/index.js +0 -20
  518. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.d.ts +0 -2
  519. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.js +0 -19
  520. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.d.ts +0 -10
  521. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.js +0 -65
  522. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.d.ts +0 -1
  523. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.js +0 -18
  524. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/definition.d.ts +0 -12
  525. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.d.ts +0 -2
  526. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.js +0 -20
  527. package/r-bridge/lang-4.x/ast/parser/xml/internal/index.d.ts +0 -9
  528. package/r-bridge/lang-4.x/ast/parser/xml/internal/index.js +0 -26
  529. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/break.d.ts +0 -4
  530. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/for.d.ts +0 -4
  531. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.d.ts +0 -5
  532. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.js +0 -22
  533. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/next.d.ts +0 -4
  534. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/repeat.d.ts +0 -13
  535. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/while.d.ts +0 -4
  536. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.d.ts +0 -3
  537. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.js +0 -20
  538. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.d.ts +0 -6
  539. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.js +0 -24
  540. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.d.ts +0 -13
  541. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.js +0 -59
  542. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/comment.d.ts +0 -11
  543. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.d.ts +0 -1
  544. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.js +0 -18
  545. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/line-directive.d.ts +0 -12
  546. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.d.ts +0 -10
  547. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.js +0 -159
  548. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.d.ts +0 -3
  549. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.js +0 -20
  550. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.d.ts +0 -4
  551. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.js +0 -33
  552. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.d.ts +0 -13
  553. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.js +0 -64
  554. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.d.ts +0 -3
  555. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.js +0 -20
  556. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/number.d.ts +0 -13
  557. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/string.d.ts +0 -11
  558. package/r-bridge/lang-4.x/index.d.ts +0 -2
  559. package/r-bridge/lang-4.x/index.js +0 -19
  560. package/slicing/criterion/filters/index.d.ts +0 -1
  561. package/slicing/criterion/filters/index.js +0 -18
  562. package/slicing/criterion/index.d.ts +0 -3
  563. package/slicing/criterion/index.js +0 -20
  564. package/slicing/index.d.ts +0 -3
  565. package/slicing/index.js +0 -20
  566. package/slicing/static/index.d.ts +0 -1
  567. package/slicing/static/index.js +0 -18
  568. package/util/mermaid/index.d.ts +0 -3
  569. package/util/mermaid/index.js +0 -20
  570. /package/{r-bridge/lang-4.x/ast/parser/xml → benchmark/summarizer}/data.js +0 -0
@@ -1,35 +1,32 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.tryToNormalizeArgument = void 0;
4
- const meta_1 = require("../meta");
5
- const hooks_1 = require("../../hooks");
6
- const log_1 = require("../../../../../../../util/log");
7
- const assert_1 = require("../../../../../../../util/assert");
8
- const structure_1 = require("../structure");
9
4
  const parser_1 = require("../../../json/parser");
5
+ const normalize_meta_1 = require("../../normalize-meta");
6
+ const assert_1 = require("../../../../../../../util/assert");
7
+ const normalize_single_node_1 = require("../structure/normalize-single-node");
10
8
  /**
11
9
  * Either parses `[expr]` or `[SYMBOL_SUB, EQ_SUB, expr]` as an argument of a function call in R.
12
10
  * Probably directly called by the function call parser as otherwise, we do not expect to find arguments.
13
11
  *
14
- * @param data - The data used by the parser (see {@link ParserData})
12
+ * @param data - The data used by the parser (see {@link NormalizerData})
15
13
  * @param objs - Either `[expr]` or `[SYMBOL_FORMALS, EQ_FORMALS, expr]`
16
14
  *
17
15
  * @returns The parsed argument or `undefined` if the given object is not an argument.
18
16
  */
19
17
  function tryToNormalizeArgument(data, objs) {
20
18
  parser_1.parseLog.debug('[argument]');
21
- objs = (0, hooks_1.executeHook)(data.hooks.functions.onArgument.before, data, objs);
22
19
  if (objs.length < 1 || objs.length > 3) {
23
- log_1.log.warn(`Either [expr|value], [SYMBOL_SUB, EQ_SUB], or [SYMBOL_SUB, EQ_SUB, expr], but got: ${objs.map(o => o.name).join(', ')}`);
24
- return (0, hooks_1.executeUnknownHook)(data.hooks.functions.onArgument.unknown, data, objs);
20
+ parser_1.parseLog.warn(`Either [expr|value], [SYMBOL_SUB, EQ_SUB], or [SYMBOL_SUB, EQ_SUB, expr], but got: ${objs.map(o => o.name).join(', ')}`);
21
+ return undefined;
25
22
  }
26
23
  const symbolOrExpr = objs[0];
27
- const { location, content } = (0, meta_1.retrieveMetaStructure)(symbolOrExpr.content);
24
+ const { location, content } = (0, normalize_meta_1.retrieveMetaStructure)(symbolOrExpr.content);
28
25
  let parsedValue;
29
26
  let name;
30
27
  if (symbolOrExpr.name === "expr" /* RawRType.Expression */) {
31
28
  name = undefined;
32
- parsedValue = (0, structure_1.tryNormalizeSingleNode)(data, symbolOrExpr);
29
+ parsedValue = (0, normalize_single_node_1.normalizeSingleNode)(data, symbolOrExpr);
33
30
  }
34
31
  else if (symbolOrExpr.name === "SYMBOL_SUB" /* RawRType.SymbolSub */ || symbolOrExpr.name === "STR_CONST" /* RawRType.StringConst */) {
35
32
  name = {
@@ -47,11 +44,11 @@ function tryToNormalizeArgument(data, objs) {
47
44
  parsedValue = parseWithValue(data, objs);
48
45
  }
49
46
  else {
50
- log_1.log.warn(`expected symbol or expr for argument, yet received ${objs.map(o => o.name).join(',')}`);
51
- return (0, hooks_1.executeUnknownHook)(data.hooks.functions.onArgument.unknown, data, objs);
47
+ parser_1.parseLog.warn(`expected symbol or expr for argument, yet received ${objs.map(o => o.name).join(',')}`);
48
+ return undefined;
52
49
  }
53
50
  (0, assert_1.guard)(parsedValue !== undefined && parsedValue?.type !== "RDelimiter" /* RType.Delimiter */, () => `[argument] parsed value must not be undefined, yet: ${JSON.stringify(objs)}`);
54
- const result = {
51
+ return {
55
52
  type: "RArgument" /* RType.Argument */,
56
53
  location,
57
54
  lexeme: content,
@@ -63,12 +60,11 @@ function tryToNormalizeArgument(data, objs) {
63
60
  additionalTokens: []
64
61
  }
65
62
  };
66
- return (0, hooks_1.executeHook)(data.hooks.functions.onArgument.after, data, result);
67
63
  }
68
64
  exports.tryToNormalizeArgument = tryToNormalizeArgument;
69
65
  function parseWithValue(data, objs) {
70
66
  (0, assert_1.guard)(objs[1].name === "EQ_SUB" /* RawRType.EqualSub */, () => `[arg-default] second element of parameter must be ${"EQ_FORMALS" /* RawRType.EqualFormals */}, but: ${JSON.stringify(objs)}`);
71
67
  (0, assert_1.guard)(objs.length === 2 || objs[2].name === "expr" /* RawRType.Expression */, () => `[arg-default] third element of parameter must be an Expression or undefined (for 'x=') but: ${JSON.stringify(objs)}`);
72
- return objs[2] ? (0, structure_1.tryNormalizeSingleNode)(data, objs[2]) : null;
68
+ return objs[2] ? (0, normalize_single_node_1.normalizeSingleNode)(data, objs[2]) : null;
73
69
  }
74
- //# sourceMappingURL=argument.js.map
70
+ //# sourceMappingURL=normalize-argument.js.map
@@ -1,13 +1,15 @@
1
+ import type { NormalizerData } from '../../normalizer-data';
1
2
  import type { NamedXmlBasedJson } from '../../input-format';
2
- import type { ParserData } from '../../data';
3
- import type { RFunctionCall, RNext, RBreak } from '../../../../model';
3
+ import type { RFunctionCall } from '../../../../model/nodes/r-function-call';
4
+ import type { RNext } from '../../../../model/nodes/r-next';
5
+ import type { RBreak } from '../../../../model/nodes/r-break';
4
6
  /**
5
7
  * Tries to parse the given data as a function call.
6
8
  *
7
- * @param data - The data used by the parser (see {@link ParserData})
9
+ * @param data - The data used by the parser (see {@link NormalizerData})
8
10
  * @param mappedWithName - The json object to extract the meta-information from
9
11
  *
10
12
  * @returns The parsed {@link RFunctionCall} (either named or unnamed) or `undefined` if the given construct is not a function call
11
13
  * May return a {@link RNext} or {@link RBreak} as `next()` and `break()` work as such.
12
14
  */
13
- export declare function tryNormalizeFunctionCall(data: ParserData, mappedWithName: NamedXmlBasedJson[]): RFunctionCall | RNext | RBreak | undefined;
15
+ export declare function tryNormalizeFunctionCall(data: NormalizerData, mappedWithName: NamedXmlBasedJson[]): RFunctionCall | RNext | RBreak | undefined;
@@ -2,18 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.tryNormalizeFunctionCall = void 0;
4
4
  const input_format_1 = require("../../input-format");
5
- const assert_1 = require("../../../../../../../util/assert");
6
- const meta_1 = require("../meta");
7
- const arrays_1 = require("../../../../../../../util/arrays");
8
- const values_1 = require("../values");
9
- const hooks_1 = require("../../hooks");
10
- const argument_1 = require("./argument");
11
- const expression_1 = require("../expression");
12
5
  const parser_1 = require("../../../json/parser");
6
+ const normalize_meta_1 = require("../../normalize-meta");
7
+ const arrays_1 = require("../../../../../../../util/arrays");
8
+ const assert_1 = require("../../../../../../../util/assert");
9
+ const normalize_argument_1 = require("./normalize-argument");
10
+ const r_function_call_1 = require("../../../../model/nodes/r-function-call");
11
+ const normalize_expression_1 = require("../expression/normalize-expression");
12
+ const normalize_string_1 = require("../values/normalize-string");
13
+ const normalize_symbol_1 = require("../values/normalize-symbol");
13
14
  /**
14
15
  * Tries to parse the given data as a function call.
15
16
  *
16
- * @param data - The data used by the parser (see {@link ParserData})
17
+ * @param data - The data used by the parser (see {@link NormalizerData})
17
18
  * @param mappedWithName - The json object to extract the meta-information from
18
19
  *
19
20
  * @returns The parsed {@link RFunctionCall} (either named or unnamed) or `undefined` if the given construct is not a function call
@@ -23,34 +24,28 @@ function tryNormalizeFunctionCall(data, mappedWithName) {
23
24
  const fnBase = mappedWithName[0];
24
25
  if (fnBase.name !== "expr" /* RawRType.Expression */ && fnBase.name !== "expr_or_assign_or_help" /* RawRType.ExprOfAssignOrHelp */) {
25
26
  parser_1.parseLog.trace(`expected function call name to be wrapped an expression, yet received ${fnBase.name}`);
26
- return (0, hooks_1.executeUnknownHook)(data.hooks.functions.onFunctionCall.unknown, data, mappedWithName);
27
+ return undefined;
27
28
  }
28
29
  if (mappedWithName.length < 3 || mappedWithName[1].name !== "(" /* RawRType.ParenLeft */ || mappedWithName[mappedWithName.length - 1].name !== ")" /* RawRType.ParenRight */) {
29
30
  parser_1.parseLog.trace('expected function call to have parenthesis for a call, but was not');
30
31
  return undefined;
31
32
  }
32
33
  parser_1.parseLog.trace('trying to parse function call');
33
- mappedWithName = (0, hooks_1.executeHook)(data.hooks.functions.onFunctionCall.before, data, mappedWithName);
34
- const { unwrappedObj, content, location } = (0, meta_1.retrieveMetaStructure)(fnBase.content);
35
- const symbolContent = (0, input_format_1.getKeysGuarded)(unwrappedObj, input_format_1.childrenKey);
36
- let result;
37
- const namedSymbolContent = (0, meta_1.getWithTokenType)(symbolContent);
34
+ const { unwrappedObj, content, location } = (0, normalize_meta_1.retrieveMetaStructure)(fnBase.content);
35
+ const symbolContent = (0, input_format_1.getKeyGuarded)(unwrappedObj, input_format_1.childrenKey);
36
+ const namedSymbolContent = (0, normalize_meta_1.getWithTokenType)(symbolContent);
38
37
  if (namedSymbolContent.length === 1 && namedSymbolContent[0].name === "STR_CONST" /* RawRType.StringConst */) {
39
38
  // special handling when someone calls a function by string
40
- result = parseNamedFunctionCall(data, namedSymbolContent, mappedWithName, location, content);
39
+ return parseNamedFunctionCall(data, namedSymbolContent, mappedWithName, location, content);
41
40
  }
42
41
  else if (namedSymbolContent.findIndex(x => x.name === "SYMBOL_FUNCTION_CALL" /* RawRType.SymbolFunctionCall */) < 0) {
43
42
  parser_1.parseLog.trace(`is not named function call, as the name is not of type ${"RFunctionCall" /* RType.FunctionCall */}, but: ${namedSymbolContent.map(n => n.name).join(',')}`);
44
43
  const mayResult = tryParseUnnamedFunctionCall(data, mappedWithName, location, content);
45
- if (mayResult === undefined) {
46
- return (0, hooks_1.executeUnknownHook)(data.hooks.functions.onFunctionCall.unknown, data, mappedWithName);
47
- }
48
- result = mayResult;
44
+ return mayResult;
49
45
  }
50
46
  else {
51
- result = parseNamedFunctionCall(data, namedSymbolContent, mappedWithName, location, content);
47
+ return parseNamedFunctionCall(data, namedSymbolContent, mappedWithName, location, content);
52
48
  }
53
- return (0, hooks_1.executeHook)(data.hooks.functions.onFunctionCall.after, data, result);
54
49
  }
55
50
  exports.tryNormalizeFunctionCall = tryNormalizeFunctionCall;
56
51
  function parseArguments(mappedWithName, data) {
@@ -59,7 +54,7 @@ function parseArguments(mappedWithName, data) {
59
54
  const splitArgumentsOnComma = (0, arrays_1.splitArrayOn)(argContainer.slice(1, argContainer.length - 1), x => x.name === "," /* RawRType.Comma */);
60
55
  return splitArgumentsOnComma.map(x => {
61
56
  parser_1.parseLog.trace('trying to parse argument');
62
- return (0, argument_1.tryToNormalizeArgument)(data, x);
57
+ return (0, normalize_argument_1.tryToNormalizeArgument)(data, x);
63
58
  });
64
59
  }
65
60
  function tryParseUnnamedFunctionCall(data, mappedWithName, location, content) {
@@ -70,7 +65,7 @@ function tryParseUnnamedFunctionCall(data, mappedWithName, location, content) {
70
65
  }
71
66
  parser_1.parseLog.trace('Assuming structure to be a function call');
72
67
  // we parse an expression to allow function calls
73
- const calledFunction = (0, expression_1.normalizeExpression)(data, mappedWithName[0].content);
68
+ const calledFunction = (0, normalize_expression_1.normalizeExpression)(data, mappedWithName[0].content);
74
69
  const parsedArguments = parseArguments(mappedWithName, data);
75
70
  if (parsedArguments.length === 0) {
76
71
  // sadly, next() and break() work
@@ -105,7 +100,7 @@ function tryParseUnnamedFunctionCall(data, mappedWithName, location, content) {
105
100
  location,
106
101
  lexeme: content,
107
102
  calledFunction: calledFunction,
108
- arguments: parsedArguments,
103
+ arguments: parsedArguments.map(x => x ?? r_function_call_1.EmptyArgument),
109
104
  info: {
110
105
  fullRange: data.currentRange,
111
106
  additionalTokens: [],
@@ -116,7 +111,7 @@ function tryParseUnnamedFunctionCall(data, mappedWithName, location, content) {
116
111
  function parseNamedFunctionCall(data, symbolContent, mappedWithName, location, content) {
117
112
  let functionName;
118
113
  if (symbolContent.length === 1 && symbolContent[0].name === "STR_CONST" /* RawRType.StringConst */) {
119
- const stringBase = (0, values_1.normalizeString)(data, symbolContent[0].content);
114
+ const stringBase = (0, normalize_string_1.normalizeString)(data, symbolContent[0].content);
120
115
  functionName = {
121
116
  type: "RSymbol" /* RType.Symbol */,
122
117
  namespace: undefined,
@@ -127,10 +122,10 @@ function parseNamedFunctionCall(data, symbolContent, mappedWithName, location, c
127
122
  };
128
123
  }
129
124
  else {
130
- functionName = (0, values_1.tryNormalizeSymbol)(data, symbolContent);
125
+ functionName = (0, normalize_symbol_1.tryNormalizeSymbol)(data, symbolContent);
131
126
  }
132
127
  (0, assert_1.guard)(functionName !== undefined, 'expected function name to be a symbol, yet received none');
133
- (0, assert_1.guard)(functionName.type === "RSymbol" /* RType.Symbol */, () => `expected function name to be a symbol, yet received ${JSON.stringify(functionName)}`);
128
+ (0, assert_1.guard)((functionName).type === "RSymbol" /* RType.Symbol */, () => `expected function name to be a symbol, yet received ${JSON.stringify(functionName)}`);
134
129
  const parsedArguments = parseArguments(mappedWithName, data);
135
130
  return {
136
131
  type: "RFunctionCall" /* RType.FunctionCall */,
@@ -138,7 +133,7 @@ function parseNamedFunctionCall(data, symbolContent, mappedWithName, location, c
138
133
  location,
139
134
  lexeme: content,
140
135
  functionName,
141
- arguments: parsedArguments,
136
+ arguments: parsedArguments.map(x => x ?? r_function_call_1.EmptyArgument),
142
137
  info: {
143
138
  fullRange: data.currentRange,
144
139
  additionalTokens: [],
@@ -146,4 +141,4 @@ function parseNamedFunctionCall(data, symbolContent, mappedWithName, location, c
146
141
  }
147
142
  };
148
143
  }
149
- //# sourceMappingURL=call.js.map
144
+ //# sourceMappingURL=normalize-call.js.map
@@ -0,0 +1,12 @@
1
+ import type { NormalizerData } from '../../normalizer-data';
2
+ import type { NamedXmlBasedJson } from '../../input-format';
3
+ import type { RFunctionDefinition } from '../../../../model/nodes/r-function-definition';
4
+ /**
5
+ * Tries to parse the given data as a function definition.
6
+ *
7
+ * @param data - The data used by the parser (see {@link NormalizerData})
8
+ * @param mappedWithName - The json object to extract the meta-information from
9
+ *
10
+ * @returns The parsed {@link RFunctionDefinition} or `undefined` if the given construct is not a function definition
11
+ */
12
+ export declare function tryNormalizeFunctionDefinition(data: NormalizerData, mappedWithName: readonly NamedXmlBasedJson[]): RFunctionDefinition | undefined;
@@ -1,18 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.tryNormalizeFunctionDefinition = void 0;
4
- const hooks_1 = require("../../hooks");
5
- const meta_1 = require("../meta");
4
+ const parser_1 = require("../../../json/parser");
5
+ const normalize_meta_1 = require("../../normalize-meta");
6
6
  const assert_1 = require("../../../../../../../util/assert");
7
7
  const arrays_1 = require("../../../../../../../util/arrays");
8
- const structure_1 = require("../structure");
9
- const parameter_1 = require("./parameter");
10
- const log_1 = require("../../../../../../../util/log");
11
- const parser_1 = require("../../../json/parser");
8
+ const normalize_parameter_1 = require("./normalize-parameter");
9
+ const normalize_expressions_1 = require("../structure/normalize-expressions");
12
10
  /**
13
11
  * Tries to parse the given data as a function definition.
14
12
  *
15
- * @param data - The data used by the parser (see {@link ParserData})
13
+ * @param data - The data used by the parser (see {@link NormalizerData})
16
14
  * @param mappedWithName - The json object to extract the meta-information from
17
15
  *
18
16
  * @returns The parsed {@link RFunctionDefinition} or `undefined` if the given construct is not a function definition
@@ -21,40 +19,37 @@ function tryNormalizeFunctionDefinition(data, mappedWithName) {
21
19
  const fnBase = mappedWithName[0];
22
20
  if (fnBase.name !== "FUNCTION" /* RawRType.Function */ && fnBase.name !== "\\\\" /* RawRType.Lambda */) {
23
21
  parser_1.parseLog.trace(`expected function definition to be identified by keyword, yet received ${fnBase.name}`);
24
- return (0, hooks_1.executeUnknownHook)(data.hooks.functions.onFunctionDefinition.unknown, data, mappedWithName);
22
+ return undefined;
25
23
  }
26
- parser_1.parseLog.trace('trying to parse function definition');
27
- mappedWithName = (0, hooks_1.executeHook)(data.hooks.functions.onFunctionDefinition.before, data, mappedWithName);
28
- const { content, location } = (0, meta_1.retrieveMetaStructure)(fnBase.content);
24
+ const { content, location } = (0, normalize_meta_1.retrieveMetaStructure)(fnBase.content);
29
25
  const openParen = mappedWithName[1];
30
26
  (0, assert_1.guard)(openParen.name === "(" /* RawRType.ParenLeft */, () => `expected opening parenthesis, yet received ${openParen.name}`);
31
27
  const closingParenIndex = mappedWithName.findIndex(x => x.name === ")" /* RawRType.ParenRight */);
32
28
  (0, assert_1.guard)(closingParenIndex !== -1, () => `expected closing parenthesis, yet received ${JSON.stringify(mappedWithName)}`);
33
29
  const splitParameters = (0, arrays_1.splitArrayOn)(mappedWithName.slice(2, closingParenIndex), x => x.name === "," /* RawRType.Comma */);
34
30
  parser_1.parseLog.trace(`function definition has ${splitParameters.length} parameters (by comma split)`);
35
- const parameters = splitParameters.map(x => (0, parameter_1.tryNormalizeParameter)(data, x));
31
+ const parameters = splitParameters.map(x => (0, normalize_parameter_1.tryNormalizeParameter)(data, x));
36
32
  if (parameters.some(p => p === undefined)) {
37
- log_1.log.error(`function had unexpected unknown parameters: ${JSON.stringify(parameters.filter(assert_1.isNotUndefined))}, aborting.`);
38
- return (0, hooks_1.executeUnknownHook)(data.hooks.functions.onFunctionDefinition.unknown, data, mappedWithName);
33
+ parser_1.parseLog.error(`function had unexpected unknown parameters: ${JSON.stringify(parameters.filter(assert_1.isNotUndefined))}, aborting.`);
34
+ return undefined;
39
35
  }
40
36
  parser_1.parseLog.trace(`function definition retained ${parameters.length} parameters after parsing, moving to body.`);
41
37
  const bodyStructure = mappedWithName.slice(closingParenIndex + 1);
42
38
  (0, assert_1.guard)(bodyStructure.length === 1, () => `expected function body to be unique, yet received ${bodyStructure.length}`);
43
- const body = (0, structure_1.normalizeBasedOnType)(data, bodyStructure);
39
+ const body = (0, normalize_expressions_1.normalizeExpressions)(data, bodyStructure);
44
40
  (0, assert_1.guard)(body.length === 1 && body[0].type !== "RDelimiter" /* RType.Delimiter */, () => `expected function body to yield one normalized expression, but ${body.length}`);
45
- const result = {
41
+ return {
46
42
  type: "RFunctionDefinition" /* RType.FunctionDefinition */,
47
43
  location,
48
44
  lexeme: content,
49
45
  parameters: parameters,
50
- body: (0, meta_1.ensureExpressionList)(body[0]),
46
+ body: (0, normalize_meta_1.ensureExpressionList)(body[0]),
51
47
  info: {
52
48
  fullRange: data.currentRange,
53
49
  additionalTokens: [],
54
50
  fullLexeme: data.currentLexeme
55
51
  }
56
52
  };
57
- return (0, hooks_1.executeHook)(data.hooks.functions.onFunctionDefinition.after, data, result);
58
53
  }
59
54
  exports.tryNormalizeFunctionDefinition = tryNormalizeFunctionDefinition;
60
- //# sourceMappingURL=definition.js.map
55
+ //# sourceMappingURL=normalize-definition.js.map
@@ -1,13 +1,13 @@
1
+ import type { NormalizerData } from '../../normalizer-data';
1
2
  import type { NamedXmlBasedJson } from '../../input-format';
2
- import type { RParameter } from '../../../../model';
3
- import type { ParserData } from '../../data';
3
+ import type { RParameter } from '../../../../model/nodes/r-parameter';
4
4
  /**
5
5
  * Either parses `[SYMBOL_FORMALS]` or `[SYMBOL_FORMALS, EQ_FORMALS, expr]` as a parameter of a function definition in R.
6
6
  * Probably directly called by the function definition parser as otherwise, we do not expect to find parameters.
7
7
  *
8
- * @param data - The data used by the parser (see {@link ParserData})
8
+ * @param data - The data used by the parser (see {@link NormalizerData})
9
9
  * @param objs - Either `[SYMBOL_FORMALS]` or `[SYMBOL_FORMALS, EQ_FORMALS, expr]`
10
10
  *
11
11
  * @returns The parsed parameter or `undefined` if the given object is not a parameter.
12
12
  */
13
- export declare function tryNormalizeParameter(data: ParserData, objs: NamedXmlBasedJson[]): RParameter | undefined;
13
+ export declare function tryNormalizeParameter(data: NormalizerData, objs: readonly NamedXmlBasedJson[]): RParameter | undefined;
@@ -1,36 +1,33 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.tryNormalizeParameter = void 0;
4
- const meta_1 = require("../meta");
5
- const hooks_1 = require("../../hooks");
6
- const log_1 = require("../../../../../../../util/log");
7
- const assert_1 = require("../../../../../../../util/assert");
8
- const structure_1 = require("../structure");
9
4
  const parser_1 = require("../../../json/parser");
5
+ const normalize_meta_1 = require("../../normalize-meta");
6
+ const assert_1 = require("../../../../../../../util/assert");
7
+ const normalize_single_node_1 = require("../structure/normalize-single-node");
10
8
  /**
11
9
  * Either parses `[SYMBOL_FORMALS]` or `[SYMBOL_FORMALS, EQ_FORMALS, expr]` as a parameter of a function definition in R.
12
10
  * Probably directly called by the function definition parser as otherwise, we do not expect to find parameters.
13
11
  *
14
- * @param data - The data used by the parser (see {@link ParserData})
12
+ * @param data - The data used by the parser (see {@link NormalizerData})
15
13
  * @param objs - Either `[SYMBOL_FORMALS]` or `[SYMBOL_FORMALS, EQ_FORMALS, expr]`
16
14
  *
17
15
  * @returns The parsed parameter or `undefined` if the given object is not a parameter.
18
16
  */
19
17
  function tryNormalizeParameter(data, objs) {
20
18
  parser_1.parseLog.debug('[parameter]');
21
- objs = (0, hooks_1.executeHook)(data.hooks.functions.onParameter.before, data, objs);
22
19
  if (objs.length !== 1 && objs.length !== 3) {
23
- log_1.log.warn(`Either [SYMBOL_FORMALS] or [SYMBOL_FORMALS, EQ_FORMALS, expr], but got: ${JSON.stringify(objs)}`);
24
- return (0, hooks_1.executeUnknownHook)(data.hooks.functions.onParameter.unknown, data, objs);
20
+ parser_1.parseLog.warn(`Either [SYMBOL_FORMALS] or [SYMBOL_FORMALS, EQ_FORMALS, expr], but got: ${JSON.stringify(objs)}`);
21
+ return undefined;
25
22
  }
26
23
  const symbol = objs[0];
27
24
  if (symbol.name !== "SYMBOL_FORMALS" /* RawRType.SymbolFormals */) {
28
- log_1.log.warn(`expected symbol for parameter, yet received ${JSON.stringify(objs)}`);
29
- return (0, hooks_1.executeUnknownHook)(data.hooks.functions.onParameter.unknown, data, objs);
25
+ parser_1.parseLog.warn(`expected symbol for parameter, yet received ${JSON.stringify(objs)}`);
26
+ return undefined;
30
27
  }
31
28
  const defaultValue = objs.length === 3 ? parseWithDefaultValue(data, objs) : undefined;
32
- const { location, content } = (0, meta_1.retrieveMetaStructure)(symbol.content);
33
- const result = {
29
+ const { location, content } = (0, normalize_meta_1.retrieveMetaStructure)(symbol.content);
30
+ return {
34
31
  type: "RParameter" /* RType.Parameter */,
35
32
  location,
36
33
  special: content === '...',
@@ -53,12 +50,11 @@ function tryNormalizeParameter(data, objs) {
53
50
  additionalTokens: defaultValue?.type === "RDelimiter" /* RType.Delimiter */ ? [defaultValue] : []
54
51
  }
55
52
  };
56
- return (0, hooks_1.executeHook)(data.hooks.functions.onParameter.after, data, result);
57
53
  }
58
54
  exports.tryNormalizeParameter = tryNormalizeParameter;
59
55
  function parseWithDefaultValue(data, objs) {
60
56
  (0, assert_1.guard)(objs[1].name === "EQ_FORMALS" /* RawRType.EqualFormals */, () => `[arg-default] second element of parameter must be ${"EQ_FORMALS" /* RawRType.EqualFormals */}, but: ${JSON.stringify(objs)}`);
61
57
  (0, assert_1.guard)(objs[2].name === "expr" /* RawRType.Expression */, () => `[arg-default] third element of parameter must be an Expression but: ${JSON.stringify(objs)}`);
62
- return (0, structure_1.tryNormalizeSingleNode)(data, objs[2]);
58
+ return (0, normalize_single_node_1.normalizeSingleNode)(data, objs[2]);
63
59
  }
64
- //# sourceMappingURL=parameter.js.map
60
+ //# sourceMappingURL=normalize-parameter.js.map
@@ -0,0 +1,4 @@
1
+ import type { NormalizerData } from '../../normalizer-data';
2
+ import type { XmlBasedJson } from '../../input-format';
3
+ import type { RBreak } from '../../../../model/nodes/r-break';
4
+ export declare function normalizeBreak(data: NormalizerData, obj: XmlBasedJson): RBreak;
@@ -1,14 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeBreak = void 0;
4
- const hooks_1 = require("../../hooks");
5
- const meta_1 = require("../meta");
6
4
  const parser_1 = require("../../../json/parser");
5
+ const log_1 = require("../../../../../../../util/log");
6
+ const normalize_meta_1 = require("../../normalize-meta");
7
7
  function normalizeBreak(data, obj) {
8
- parser_1.parseLog.debug(`[break] try: ${JSON.stringify(obj)}`);
9
- obj = (0, hooks_1.executeHook)(data.hooks.loops.onBreak.before, data, obj);
10
- const { location, content } = (0, meta_1.retrieveMetaStructure)(obj);
11
- const result = {
8
+ (0, log_1.expensiveTrace)(parser_1.parseLog, () => `[break] ${JSON.stringify(obj)}`);
9
+ const { location, content } = (0, normalize_meta_1.retrieveMetaStructure)(obj);
10
+ return {
12
11
  type: "RBreak" /* RType.Break */,
13
12
  location,
14
13
  lexeme: content,
@@ -18,7 +17,6 @@ function normalizeBreak(data, obj) {
18
17
  fullLexeme: content
19
18
  }
20
19
  };
21
- return (0, hooks_1.executeHook)(data.hooks.loops.onBreak.after, data, result);
22
20
  }
23
21
  exports.normalizeBreak = normalizeBreak;
24
- //# sourceMappingURL=break.js.map
22
+ //# sourceMappingURL=normalize-break.js.map
@@ -0,0 +1,4 @@
1
+ import type { NormalizerData } from '../../normalizer-data';
2
+ import type { NamedXmlBasedJson } from '../../input-format';
3
+ import type { RForLoop } from '../../../../model/nodes/r-for-loop';
4
+ export declare function tryNormalizeFor(data: NormalizerData, [forToken, head, body]: [NamedXmlBasedJson, NamedXmlBasedJson, NamedXmlBasedJson]): RForLoop | undefined;
@@ -2,18 +2,18 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.tryNormalizeFor = void 0;
4
4
  const input_format_1 = require("../../input-format");
5
- const meta_1 = require("../meta");
6
- const assert_1 = require("../../../../../../../util/assert");
7
- const values_1 = require("../values");
8
- const structure_1 = require("../structure");
9
- const hooks_1 = require("../../hooks");
10
- const other_1 = require("../other");
11
5
  const parser_1 = require("../../../json/parser");
12
- function tryNormalizeFor(data, forToken, head, body) {
6
+ const normalize_meta_1 = require("../../normalize-meta");
7
+ const assert_1 = require("../../../../../../../util/assert");
8
+ const normalize_single_node_1 = require("../structure/normalize-single-node");
9
+ const normalize_expressions_1 = require("../structure/normalize-expressions");
10
+ const normalize_symbol_1 = require("../values/normalize-symbol");
11
+ const normalize_comment_1 = require("../other/normalize-comment");
12
+ function tryNormalizeFor(data, [forToken, head, body]) {
13
13
  // funny, for does not use top-level parenthesis
14
14
  if (forToken.name !== "FOR" /* RawRType.For */) {
15
15
  parser_1.parseLog.debug('encountered non-for token for supposed for-loop structure');
16
- return (0, hooks_1.executeUnknownHook)(data.hooks.loops.onForLoop.unknown, data, { forToken, condition: head, body });
16
+ return undefined;
17
17
  }
18
18
  else if (head.name !== "forcond" /* RawRType.ForCondition */) {
19
19
  throw new input_format_1.XmlParseError(`expected condition for for-loop but found ${JSON.stringify(head)}`);
@@ -23,9 +23,8 @@ function tryNormalizeFor(data, forToken, head, body) {
23
23
  }
24
24
  parser_1.parseLog.debug('trying to parse for-loop');
25
25
  const newParseData = { ...data, data, currentRange: undefined, currentLexeme: undefined };
26
- ({ forToken, condition: head, body } = (0, hooks_1.executeHook)(data.hooks.loops.onForLoop.before, data, { forToken, condition: head, body }));
27
26
  const { variable: parsedVariable, vector: parsedVector, comments } = normalizeForHead(newParseData, head.content);
28
- const parseBody = (0, structure_1.tryNormalizeSingleNode)(newParseData, body);
27
+ const parseBody = (0, normalize_single_node_1.normalizeSingleNode)(newParseData, body);
29
28
  if (parsedVariable === undefined ||
30
29
  parsedVector === undefined ||
31
30
  parseBody.type === "RDelimiter" /* RType.Delimiter */) {
@@ -35,12 +34,12 @@ function tryNormalizeFor(data, forToken, head, body) {
35
34
  parseBody,
36
35
  ])}`);
37
36
  }
38
- const { location, content } = (0, meta_1.retrieveMetaStructure)(forToken.content);
39
- const result = {
37
+ const { location, content } = (0, normalize_meta_1.retrieveMetaStructure)(forToken.content);
38
+ return {
40
39
  type: "RForLoop" /* RType.ForLoop */,
41
40
  variable: parsedVariable,
42
41
  vector: parsedVector,
43
- body: (0, meta_1.ensureExpressionList)(parseBody),
42
+ body: (0, normalize_meta_1.ensureExpressionList)(parseBody),
44
43
  lexeme: content,
45
44
  info: {
46
45
  fullRange: data.currentRange,
@@ -49,21 +48,20 @@ function tryNormalizeFor(data, forToken, head, body) {
49
48
  },
50
49
  location
51
50
  };
52
- return (0, hooks_1.executeHook)(data.hooks.loops.onForLoop.after, data, result);
53
51
  }
54
52
  exports.tryNormalizeFor = tryNormalizeFor;
55
53
  function normalizeForHead(data, forCondition) {
56
54
  // must have a child which is `in`, a variable on the left, and a vector on the right
57
- const children = (0, input_format_1.getKeysGuarded)(forCondition, input_format_1.childrenKey).map(content => ({ name: (0, meta_1.getTokenType)(content), content }));
58
- const { comments, others } = (0, structure_1.splitComments)(children);
55
+ const children = (0, input_format_1.getKeyGuarded)(forCondition, input_format_1.childrenKey).map(content => ({ name: (0, normalize_meta_1.getTokenType)(content), content }));
56
+ const { comments, others } = (0, normalize_expressions_1.splitComments)(children);
59
57
  const inPosition = others.findIndex(elem => elem.name === "IN" /* RawRType.ForIn */);
60
58
  (0, assert_1.guard)(inPosition > 0 && inPosition < others.length - 1, () => `for loop searched in and found at ${inPosition}, but this is not in legal bounds for ${JSON.stringify(children)}`);
61
- const variable = (0, values_1.tryNormalizeSymbol)(data, [others[inPosition - 1]]);
59
+ const variable = (0, normalize_symbol_1.tryNormalizeSymbol)(data, [others[inPosition - 1]]);
62
60
  (0, assert_1.guard)(variable !== undefined, () => `for loop variable should have been parsed to a symbol but was ${JSON.stringify(variable)}`);
63
61
  (0, assert_1.guard)(variable.type === "RSymbol" /* RType.Symbol */, () => `for loop variable should have been parsed to a symbol but was ${JSON.stringify(variable)}`);
64
- const vector = (0, structure_1.normalizeBasedOnType)(data, [others[inPosition + 1]]);
62
+ const vector = (0, normalize_expressions_1.normalizeExpressions)(data, [others[inPosition + 1]]);
65
63
  (0, assert_1.guard)(vector.length === 1 && vector[0].type !== "RDelimiter" /* RType.Delimiter */, () => `for loop vector should have been parsed to a single element but was ${JSON.stringify(vector)}`);
66
- const parsedComments = comments.map(c => (0, other_1.normalizeComment)(data, c.content));
64
+ const parsedComments = comments.map(c => (0, normalize_comment_1.normalizeComment)(data, c.content));
67
65
  return { variable, vector: vector[0], comments: parsedComments };
68
66
  }
69
- //# sourceMappingURL=for.js.map
67
+ //# sourceMappingURL=normalize-for.js.map
@@ -0,0 +1,4 @@
1
+ import type { NormalizerData } from '../../normalizer-data';
2
+ import type { XmlBasedJson } from '../../input-format';
3
+ import type { RNext } from '../../../../model/nodes/r-next';
4
+ export declare function normalizeNext(data: NormalizerData, obj: XmlBasedJson): RNext;
@@ -1,14 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeNext = void 0;
4
- const hooks_1 = require("../../hooks");
5
- const meta_1 = require("../meta");
4
+ const log_1 = require("../../../../../../../util/log");
6
5
  const parser_1 = require("../../../json/parser");
6
+ const normalize_meta_1 = require("../../normalize-meta");
7
7
  function normalizeNext(data, obj) {
8
- parser_1.parseLog.debug(`[next] try: ${JSON.stringify(obj)}`);
9
- obj = (0, hooks_1.executeHook)(data.hooks.loops.onNext.before, data, obj);
10
- const { location, content } = (0, meta_1.retrieveMetaStructure)(obj);
11
- const result = {
8
+ (0, log_1.expensiveTrace)(parser_1.parseLog, () => `[next] ${JSON.stringify(obj)}`);
9
+ const { location, content } = (0, normalize_meta_1.retrieveMetaStructure)(obj);
10
+ return {
12
11
  type: "RNext" /* RType.Next */,
13
12
  location,
14
13
  lexeme: content,
@@ -18,7 +17,6 @@ function normalizeNext(data, obj) {
18
17
  fullLexeme: data.currentLexeme
19
18
  }
20
19
  };
21
- return (0, hooks_1.executeHook)(data.hooks.loops.onNext.after, data, result);
22
20
  }
23
21
  exports.normalizeNext = normalizeNext;
24
- //# sourceMappingURL=next.js.map
22
+ //# sourceMappingURL=normalize-next.js.map
@@ -0,0 +1,13 @@
1
+ import type { NormalizerData } from '../../normalizer-data';
2
+ import type { NamedXmlBasedJson } from '../../input-format';
3
+ import type { RRepeatLoop } from '../../../../model/nodes/r-repeat-loop';
4
+ /**
5
+ * Try to parse the construct as a {@link RRepeatLoop}.
6
+ *
7
+ * @param data - The data used by the parser (see {@link NormalizerData})
8
+ * @param repeatToken - Token which represents the `repeat` keyword
9
+ * @param bodyToken - The `body` of the repeat-loop
10
+ *
11
+ * @returns The parsed {@link RRepeatLoop} or `undefined` if the given construct is not a repeat-loop
12
+ */
13
+ export declare function tryNormalizeRepeat(data: NormalizerData, [repeatToken, bodyToken]: [NamedXmlBasedJson, NamedXmlBasedJson]): RRepeatLoop | undefined;