@eagleoutice/flowr 1.3.11

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 (668) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +27 -0
  3. package/benchmark/benchmark-slicer.js +223 -0
  4. package/benchmark/index.d.ts +3 -0
  5. package/benchmark/index.js +20 -0
  6. package/benchmark/slicer.d.ts +100 -0
  7. package/benchmark/slicer.js +223 -0
  8. package/benchmark/stats/index.d.ts +10 -0
  9. package/benchmark/stats/index.js +27 -0
  10. package/benchmark/stats/print.d.ts +7 -0
  11. package/benchmark/stats/print.js +157 -0
  12. package/benchmark/stats/stats.d.ts +41 -0
  13. package/benchmark/stats/stats.js +6 -0
  14. package/benchmark/stopwatch.d.ts +35 -0
  15. package/benchmark/stopwatch.js +79 -0
  16. package/cli/benchmark-app.d.ts +9 -0
  17. package/cli/benchmark-app.js +52 -0
  18. package/cli/benchmark-helper-app.d.ts +7 -0
  19. package/cli/benchmark-helper-app.js +60 -0
  20. package/cli/common/features.d.ts +3 -0
  21. package/cli/common/features.js +30 -0
  22. package/cli/common/index.d.ts +2 -0
  23. package/cli/common/index.js +19 -0
  24. package/cli/common/options.d.ts +20 -0
  25. package/cli/common/options.js +82 -0
  26. package/cli/common/script.d.ts +21 -0
  27. package/cli/common/script.js +61 -0
  28. package/cli/common/scripts-info.d.ts +24 -0
  29. package/cli/common/scripts-info.js +69 -0
  30. package/cli/export-quads-app.d.ts +7 -0
  31. package/cli/export-quads-app.js +46 -0
  32. package/cli/repl/commands/cfg.d.ts +3 -0
  33. package/cli/repl/commands/cfg.js +37 -0
  34. package/cli/repl/commands/commands.d.ts +11 -0
  35. package/cli/repl/commands/commands.js +103 -0
  36. package/cli/repl/commands/dataflow.d.ts +3 -0
  37. package/cli/repl/commands/dataflow.js +34 -0
  38. package/cli/repl/commands/execute.d.ts +4 -0
  39. package/cli/repl/commands/execute.js +27 -0
  40. package/cli/repl/commands/index.d.ts +2 -0
  41. package/cli/repl/commands/index.js +19 -0
  42. package/cli/repl/commands/main.d.ts +39 -0
  43. package/cli/repl/commands/main.js +14 -0
  44. package/cli/repl/commands/normalize.d.ts +3 -0
  45. package/cli/repl/commands/normalize.js +34 -0
  46. package/cli/repl/commands/parse.d.ts +2 -0
  47. package/cli/repl/commands/parse.js +109 -0
  48. package/cli/repl/commands/quit.d.ts +2 -0
  49. package/cli/repl/commands/quit.js +12 -0
  50. package/cli/repl/commands/version.d.ts +16 -0
  51. package/cli/repl/commands/version.js +33 -0
  52. package/cli/repl/core.d.ts +41 -0
  53. package/cli/repl/core.js +89 -0
  54. package/cli/repl/execute.d.ts +28 -0
  55. package/cli/repl/execute.js +79 -0
  56. package/cli/repl/index.d.ts +5 -0
  57. package/cli/repl/index.js +22 -0
  58. package/cli/repl/prompt.d.ts +2 -0
  59. package/cli/repl/prompt.js +9 -0
  60. package/cli/repl/server/connection.d.ts +21 -0
  61. package/cli/repl/server/connection.js +217 -0
  62. package/cli/repl/server/messages/analysis.d.ts +71 -0
  63. package/cli/repl/server/messages/analysis.js +21 -0
  64. package/cli/repl/server/messages/error.d.ts +11 -0
  65. package/cli/repl/server/messages/error.js +3 -0
  66. package/cli/repl/server/messages/hello.d.ts +20 -0
  67. package/cli/repl/server/messages/hello.js +3 -0
  68. package/cli/repl/server/messages/index.d.ts +1 -0
  69. package/cli/repl/server/messages/index.js +3 -0
  70. package/cli/repl/server/messages/messages.d.ts +35 -0
  71. package/cli/repl/server/messages/messages.js +20 -0
  72. package/cli/repl/server/messages/repl.d.ts +33 -0
  73. package/cli/repl/server/messages/repl.js +17 -0
  74. package/cli/repl/server/messages/slice.d.ts +25 -0
  75. package/cli/repl/server/messages/slice.js +17 -0
  76. package/cli/repl/server/net.d.ts +33 -0
  77. package/cli/repl/server/net.js +24 -0
  78. package/cli/repl/server/send.d.ts +4 -0
  79. package/cli/repl/server/send.js +18 -0
  80. package/cli/repl/server/server.d.ts +20 -0
  81. package/cli/repl/server/server.js +66 -0
  82. package/cli/repl/server/validate.d.ts +15 -0
  83. package/cli/repl/server/validate.js +34 -0
  84. package/cli/slicer-app.d.ts +11 -0
  85. package/cli/slicer-app.js +81 -0
  86. package/cli/statistics-app.d.ts +11 -0
  87. package/cli/statistics-app.js +98 -0
  88. package/cli/statistics-helper-app.d.ts +11 -0
  89. package/cli/statistics-helper-app.js +83 -0
  90. package/cli/summarizer-app.d.ts +18 -0
  91. package/cli/summarizer-app.js +67 -0
  92. package/core/index.d.ts +4 -0
  93. package/core/index.js +23 -0
  94. package/core/input.d.ts +42 -0
  95. package/core/input.js +3 -0
  96. package/core/output.d.ts +15 -0
  97. package/core/output.js +3 -0
  98. package/core/pipeline-executor.js +221 -0
  99. package/core/print/dataflow-printer.d.ts +8 -0
  100. package/core/print/dataflow-printer.js +62 -0
  101. package/core/print/normalize-printer.d.ts +7 -0
  102. package/core/print/normalize-printer.js +31 -0
  103. package/core/print/parse-printer.d.ts +3 -0
  104. package/core/print/parse-printer.js +29 -0
  105. package/core/print/print.d.ts +47 -0
  106. package/core/print/print.js +13 -0
  107. package/core/print/slice-diff-ansi.d.ts +2 -0
  108. package/core/print/slice-diff-ansi.js +49 -0
  109. package/core/slicer.d.ts +123 -0
  110. package/core/slicer.js +227 -0
  111. package/core/stepping-slicer.js +160 -0
  112. package/core/steps/all/00-parse.js +19 -0
  113. package/core/steps/all/10-normalize.js +21 -0
  114. package/core/steps/all/20-dataflow.js +21 -0
  115. package/core/steps/all/30-slice.js +16 -0
  116. package/core/steps/all/40-reconstruct.js +16 -0
  117. package/core/steps/all/core/00-parse.js +24 -0
  118. package/core/steps/all/core/10-normalize.js +46 -0
  119. package/core/steps/all/core/20-dataflow.js +39 -0
  120. package/core/steps/all/static-slicing/00-slice.js +21 -0
  121. package/core/steps/all/static-slicing/10-reconstruct.js +21 -0
  122. package/core/steps/index.js +21 -0
  123. package/core/steps/input.js +3 -0
  124. package/core/steps/output.js +3 -0
  125. package/core/steps/pipeline/create.js +130 -0
  126. package/core/steps/pipeline/default.js +15 -0
  127. package/core/steps/pipeline/dependency-checker.js +76 -0
  128. package/core/steps/pipeline/index.js +20 -0
  129. package/core/steps/pipeline/invalid-pipeline-error.js +14 -0
  130. package/core/steps/pipeline/pipeline.js +28 -0
  131. package/core/steps/step.js +8 -0
  132. package/core/steps/steps-provider.js +3 -0
  133. package/core/steps/steps.js +35 -0
  134. package/core/steps.d.ts +166 -0
  135. package/core/steps.js +99 -0
  136. package/dataflow/common/environments/append.js +48 -0
  137. package/dataflow/common/environments/environment.js +165 -0
  138. package/dataflow/common/environments/index.js +23 -0
  139. package/dataflow/common/environments/overwrite.js +82 -0
  140. package/dataflow/common/environments/register.js +49 -0
  141. package/dataflow/common/environments/resolve-by-name.js +35 -0
  142. package/dataflow/common/environments/scopes.js +6 -0
  143. package/dataflow/common/environments/scoping.js +27 -0
  144. package/dataflow/environments/append.d.ts +8 -0
  145. package/dataflow/environments/append.js +48 -0
  146. package/dataflow/environments/environment.d.ts +78 -0
  147. package/dataflow/environments/environment.js +161 -0
  148. package/dataflow/environments/index.d.ts +7 -0
  149. package/dataflow/environments/index.js +23 -0
  150. package/dataflow/environments/overwrite.d.ts +6 -0
  151. package/dataflow/environments/overwrite.js +82 -0
  152. package/dataflow/environments/register.d.ts +7 -0
  153. package/dataflow/environments/register.js +39 -0
  154. package/dataflow/environments/resolve-by-name.d.ts +12 -0
  155. package/dataflow/environments/resolve-by-name.js +35 -0
  156. package/dataflow/environments/scopes.d.ts +6 -0
  157. package/dataflow/environments/scopes.js +6 -0
  158. package/dataflow/environments/scoping.d.ts +4 -0
  159. package/dataflow/environments/scoping.js +27 -0
  160. package/dataflow/extractor.d.ts +6 -0
  161. package/dataflow/extractor.js +60 -0
  162. package/dataflow/graph/diff.d.ts +18 -0
  163. package/dataflow/graph/diff.js +206 -0
  164. package/dataflow/graph/edge.d.ts +37 -0
  165. package/dataflow/graph/edge.js +32 -0
  166. package/dataflow/graph/equal.js +127 -0
  167. package/dataflow/graph/graph.d.ts +120 -0
  168. package/dataflow/graph/graph.js +298 -0
  169. package/dataflow/graph/index.d.ts +4 -0
  170. package/dataflow/graph/index.js +21 -0
  171. package/dataflow/graph/quads.d.ts +8 -0
  172. package/dataflow/graph/quads.js +27 -0
  173. package/dataflow/graph/vertex.d.ts +86 -0
  174. package/dataflow/graph/vertex.js +3 -0
  175. package/dataflow/index.d.ts +5 -0
  176. package/dataflow/index.js +24 -0
  177. package/dataflow/internal/info.d.ts +21 -0
  178. package/dataflow/internal/info.js +16 -0
  179. package/dataflow/internal/linker.d.ts +41 -0
  180. package/dataflow/internal/linker.js +255 -0
  181. package/dataflow/internal/process/access.d.ts +4 -0
  182. package/dataflow/internal/process/access.js +53 -0
  183. package/dataflow/internal/process/expression-list.d.ts +8 -0
  184. package/dataflow/internal/process/expression-list.js +148 -0
  185. package/dataflow/internal/process/functions/argument.d.ts +8 -0
  186. package/dataflow/internal/process/functions/argument.js +46 -0
  187. package/dataflow/internal/process/functions/exit-points.d.ts +2 -0
  188. package/dataflow/internal/process/functions/exit-points.js +121 -0
  189. package/dataflow/internal/process/functions/function-call.d.ts +5 -0
  190. package/dataflow/internal/process/functions/function-call.js +99 -0
  191. package/dataflow/internal/process/functions/function-definition.d.ts +4 -0
  192. package/dataflow/internal/process/functions/function-definition.js +176 -0
  193. package/dataflow/internal/process/functions/parameter.d.ts +4 -0
  194. package/dataflow/internal/process/functions/parameter.js +47 -0
  195. package/dataflow/internal/process/if-then-else.d.ts +4 -0
  196. package/dataflow/internal/process/if-then-else.js +56 -0
  197. package/dataflow/internal/process/loops/for-loop.d.ts +4 -0
  198. package/dataflow/internal/process/loops/for-loop.js +54 -0
  199. package/dataflow/internal/process/loops/repeat-loop.d.ts +4 -0
  200. package/dataflow/internal/process/loops/repeat-loop.js +21 -0
  201. package/dataflow/internal/process/loops/while-loop.d.ts +4 -0
  202. package/dataflow/internal/process/loops/while-loop.js +31 -0
  203. package/dataflow/internal/process/operators/assignment.d.ts +4 -0
  204. package/dataflow/internal/process/operators/assignment.js +129 -0
  205. package/dataflow/internal/process/operators/non-assignment-binary-op.d.ts +4 -0
  206. package/dataflow/internal/process/operators/non-assignment-binary-op.js +25 -0
  207. package/dataflow/internal/process/operators/pipe.d.ts +4 -0
  208. package/dataflow/internal/process/operators/pipe.js +46 -0
  209. package/dataflow/internal/process/operators/unary-op.d.ts +4 -0
  210. package/dataflow/internal/process/operators/unary-op.js +10 -0
  211. package/dataflow/internal/process/symbol.d.ts +4 -0
  212. package/dataflow/internal/process/symbol.js +21 -0
  213. package/dataflow/internal/process/uninteresting-leaf.d.ts +3 -0
  214. package/dataflow/internal/process/uninteresting-leaf.js +9 -0
  215. package/dataflow/processor.d.ts +47 -0
  216. package/dataflow/processor.js +20 -0
  217. package/dataflow/v1/extractor.js +60 -0
  218. package/dataflow/v1/graph/diff.js +206 -0
  219. package/dataflow/v1/graph/edge.js +32 -0
  220. package/dataflow/v1/graph/graph.js +298 -0
  221. package/dataflow/v1/graph/index.js +21 -0
  222. package/dataflow/v1/graph/quads.js +27 -0
  223. package/dataflow/v1/graph/vertex.js +3 -0
  224. package/dataflow/v1/index.js +24 -0
  225. package/dataflow/v1/internal/info.js +16 -0
  226. package/dataflow/v1/internal/linker.js +255 -0
  227. package/dataflow/v1/internal/process/access.js +54 -0
  228. package/dataflow/v1/internal/process/expression-list.js +154 -0
  229. package/dataflow/v1/internal/process/functions/argument.js +46 -0
  230. package/dataflow/v1/internal/process/functions/exit-points.js +125 -0
  231. package/dataflow/v1/internal/process/functions/function-call.js +99 -0
  232. package/dataflow/v1/internal/process/functions/function-definition.js +176 -0
  233. package/dataflow/v1/internal/process/functions/parameter.js +47 -0
  234. package/dataflow/v1/internal/process/if-then-else.js +57 -0
  235. package/dataflow/v1/internal/process/loops/for-loop.js +54 -0
  236. package/dataflow/v1/internal/process/loops/repeat-loop.js +21 -0
  237. package/dataflow/v1/internal/process/loops/while-loop.js +31 -0
  238. package/dataflow/v1/internal/process/operators/assignment.js +129 -0
  239. package/dataflow/v1/internal/process/operators/non-assignment-binary-op.js +25 -0
  240. package/dataflow/v1/internal/process/operators/pipe.js +46 -0
  241. package/dataflow/v1/internal/process/operators/unary-op.js +10 -0
  242. package/dataflow/v1/internal/process/symbol.js +21 -0
  243. package/dataflow/v1/internal/process/uninteresting-leaf.js +9 -0
  244. package/dataflow/v1/processor.js +20 -0
  245. package/dataflow/v2/entry.js +11 -0
  246. package/flowr-1.3.7.tgz +0 -0
  247. package/flowr.d.ts +26 -0
  248. package/flowr.js +135 -0
  249. package/index.d.ts +6 -0
  250. package/index.js +23 -0
  251. package/package.json +384 -0
  252. package/r-bridge/index.d.ts +11 -0
  253. package/r-bridge/index.js +28 -0
  254. package/r-bridge/lang-4.x/ast/index.d.ts +2 -0
  255. package/r-bridge/lang-4.x/ast/index.js +19 -0
  256. package/r-bridge/lang-4.x/ast/model/collect.d.ts +9 -0
  257. package/r-bridge/lang-4.x/ast/model/collect.js +23 -0
  258. package/r-bridge/lang-4.x/ast/model/index.d.ts +6 -0
  259. package/r-bridge/lang-4.x/ast/model/index.js +23 -0
  260. package/r-bridge/lang-4.x/ast/model/model.d.ts +127 -0
  261. package/r-bridge/lang-4.x/ast/model/model.js +3 -0
  262. package/r-bridge/lang-4.x/ast/model/nodes/index.d.ts +21 -0
  263. package/r-bridge/lang-4.x/ast/model/nodes/index.js +38 -0
  264. package/r-bridge/lang-4.x/ast/model/nodes/info/index.d.ts +13 -0
  265. package/r-bridge/lang-4.x/ast/model/nodes/info/index.js +27 -0
  266. package/r-bridge/lang-4.x/ast/model/nodes/info/r-delimiter.d.ts +12 -0
  267. package/r-bridge/lang-4.x/ast/model/nodes/info/r-delimiter.js +3 -0
  268. package/r-bridge/lang-4.x/ast/model/nodes/r-access.d.ts +24 -0
  269. package/r-bridge/lang-4.x/ast/model/nodes/r-access.js +3 -0
  270. package/r-bridge/lang-4.x/ast/model/nodes/r-argument.d.ts +11 -0
  271. package/r-bridge/lang-4.x/ast/model/nodes/r-argument.js +3 -0
  272. package/r-bridge/lang-4.x/ast/model/nodes/r-binary-op.d.ts +25 -0
  273. package/r-bridge/lang-4.x/ast/model/nodes/r-binary-op.js +3 -0
  274. package/r-bridge/lang-4.x/ast/model/nodes/r-break.d.ts +5 -0
  275. package/r-bridge/lang-4.x/ast/model/nodes/r-break.js +3 -0
  276. package/r-bridge/lang-4.x/ast/model/nodes/r-comment.d.ts +6 -0
  277. package/r-bridge/lang-4.x/ast/model/nodes/r-comment.js +3 -0
  278. package/r-bridge/lang-4.x/ast/model/nodes/r-expression-list.d.ts +6 -0
  279. package/r-bridge/lang-4.x/ast/model/nodes/r-expression-list.js +3 -0
  280. package/r-bridge/lang-4.x/ast/model/nodes/r-for-loop.d.ts +18 -0
  281. package/r-bridge/lang-4.x/ast/model/nodes/r-for-loop.js +3 -0
  282. package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +31 -0
  283. package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.js +3 -0
  284. package/r-bridge/lang-4.x/ast/model/nodes/r-function-definition.d.ts +10 -0
  285. package/r-bridge/lang-4.x/ast/model/nodes/r-function-definition.js +3 -0
  286. package/r-bridge/lang-4.x/ast/model/nodes/r-if-then-else.d.ts +9 -0
  287. package/r-bridge/lang-4.x/ast/model/nodes/r-if-then-else.js +3 -0
  288. package/r-bridge/lang-4.x/ast/model/nodes/r-line-directive.d.ts +7 -0
  289. package/r-bridge/lang-4.x/ast/model/nodes/r-line-directive.js +3 -0
  290. package/r-bridge/lang-4.x/ast/model/nodes/r-logical.d.ts +7 -0
  291. package/r-bridge/lang-4.x/ast/model/nodes/r-logical.js +3 -0
  292. package/r-bridge/lang-4.x/ast/model/nodes/r-next.d.ts +5 -0
  293. package/r-bridge/lang-4.x/ast/model/nodes/r-next.js +3 -0
  294. package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +8 -0
  295. package/r-bridge/lang-4.x/ast/model/nodes/r-number.js +3 -0
  296. package/r-bridge/lang-4.x/ast/model/nodes/r-parameter.d.ts +13 -0
  297. package/r-bridge/lang-4.x/ast/model/nodes/r-parameter.js +3 -0
  298. package/r-bridge/lang-4.x/ast/model/nodes/r-pipe.d.ts +7 -0
  299. package/r-bridge/lang-4.x/ast/model/nodes/r-pipe.js +3 -0
  300. package/r-bridge/lang-4.x/ast/model/nodes/r-repeat-loop.d.ts +12 -0
  301. package/r-bridge/lang-4.x/ast/model/nodes/r-repeat-loop.js +3 -0
  302. package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +7 -0
  303. package/r-bridge/lang-4.x/ast/model/nodes/r-string.js +3 -0
  304. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.d.ts +7 -0
  305. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +9 -0
  306. package/r-bridge/lang-4.x/ast/model/nodes/r-unary-op.d.ts +18 -0
  307. package/r-bridge/lang-4.x/ast/model/nodes/r-unary-op.js +3 -0
  308. package/r-bridge/lang-4.x/ast/model/nodes/r-while-loop.d.ts +13 -0
  309. package/r-bridge/lang-4.x/ast/model/nodes/r-while-loop.js +3 -0
  310. package/r-bridge/lang-4.x/ast/model/operators.d.ts +46 -0
  311. package/r-bridge/lang-4.x/ast/model/operators.js +67 -0
  312. package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +81 -0
  313. package/r-bridge/lang-4.x/ast/model/processing/decorate.js +342 -0
  314. package/r-bridge/lang-4.x/ast/model/processing/fold.d.ts +10 -0
  315. package/r-bridge/lang-4.x/ast/model/processing/fold.js +20 -0
  316. package/r-bridge/lang-4.x/ast/model/processing/index.d.ts +5 -0
  317. package/r-bridge/lang-4.x/ast/model/processing/index.js +22 -0
  318. package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +41 -0
  319. package/r-bridge/lang-4.x/ast/model/processing/role.js +17 -0
  320. package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +61 -0
  321. package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.js +87 -0
  322. package/r-bridge/lang-4.x/ast/model/processing/visitor.d.ts +13 -0
  323. package/r-bridge/lang-4.x/ast/model/processing/visitor.js +109 -0
  324. package/r-bridge/lang-4.x/ast/model/type.d.ts +206 -0
  325. package/r-bridge/lang-4.x/ast/model/type.js +18 -0
  326. package/r-bridge/lang-4.x/ast/model/versions.d.ts +9 -0
  327. package/r-bridge/lang-4.x/ast/model/versions.js +13 -0
  328. package/r-bridge/lang-4.x/ast/parser/xml/common/config.js +16 -0
  329. package/r-bridge/lang-4.x/ast/parser/xml/common/input-format.js +42 -0
  330. package/r-bridge/lang-4.x/ast/parser/xml/common/meta.js +118 -0
  331. package/r-bridge/lang-4.x/ast/parser/xml/common/xml-to-json.js +58 -0
  332. package/r-bridge/lang-4.x/ast/parser/xml/config.d.ts +25 -0
  333. package/r-bridge/lang-4.x/ast/parser/xml/config.js +16 -0
  334. package/r-bridge/lang-4.x/ast/parser/xml/data.d.ts +22 -0
  335. package/r-bridge/lang-4.x/ast/parser/xml/data.js +3 -0
  336. package/r-bridge/lang-4.x/ast/parser/xml/hooks.d.ts +292 -0
  337. package/r-bridge/lang-4.x/ast/parser/xml/hooks.js +136 -0
  338. package/r-bridge/lang-4.x/ast/parser/xml/index.d.ts +5 -0
  339. package/r-bridge/lang-4.x/ast/parser/xml/index.js +22 -0
  340. package/r-bridge/lang-4.x/ast/parser/xml/input-format.d.ts +32 -0
  341. package/r-bridge/lang-4.x/ast/parser/xml/input-format.js +33 -0
  342. package/r-bridge/lang-4.x/ast/parser/xml/internal/access.d.ts +12 -0
  343. package/r-bridge/lang-4.x/ast/parser/xml/internal/access.js +107 -0
  344. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then-else.d.ts +15 -0
  345. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then-else.js +32 -0
  346. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then.d.ts +13 -0
  347. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then.js +46 -0
  348. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.d.ts +2 -0
  349. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.js +19 -0
  350. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.d.ts +10 -0
  351. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.js +65 -0
  352. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.d.ts +1 -0
  353. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.js +18 -0
  354. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/argument.d.ts +13 -0
  355. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/argument.js +74 -0
  356. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/call.d.ts +13 -0
  357. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/call.js +149 -0
  358. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/definition.d.ts +12 -0
  359. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/definition.js +60 -0
  360. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.d.ts +2 -0
  361. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.js +20 -0
  362. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/parameter.d.ts +13 -0
  363. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/parameter.js +64 -0
  364. package/r-bridge/lang-4.x/ast/parser/xml/internal/index.d.ts +10 -0
  365. package/r-bridge/lang-4.x/ast/parser/xml/internal/index.js +27 -0
  366. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/break.d.ts +4 -0
  367. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/break.js +24 -0
  368. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/for.d.ts +4 -0
  369. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/for.js +72 -0
  370. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.d.ts +5 -0
  371. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.js +22 -0
  372. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/next.d.ts +4 -0
  373. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/next.js +24 -0
  374. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/repeat.d.ts +13 -0
  375. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/repeat.js +42 -0
  376. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/while.d.ts +4 -0
  377. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/while.js +45 -0
  378. package/r-bridge/lang-4.x/ast/parser/xml/internal/meta.d.ts +50 -0
  379. package/r-bridge/lang-4.x/ast/parser/xml/internal/meta.js +118 -0
  380. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/binary.d.ts +8 -0
  381. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/binary.js +162 -0
  382. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.d.ts +3 -0
  383. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.js +20 -0
  384. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.d.ts +6 -0
  385. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.js +24 -0
  386. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.d.ts +13 -0
  387. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.js +59 -0
  388. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/comment.d.ts +11 -0
  389. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/comment.js +34 -0
  390. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.d.ts +1 -0
  391. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.js +18 -0
  392. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/line-directive.d.ts +12 -0
  393. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/line-directive.js +55 -0
  394. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.d.ts +10 -0
  395. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.js +159 -0
  396. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.d.ts +3 -0
  397. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.js +20 -0
  398. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.d.ts +4 -0
  399. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.js +34 -0
  400. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.d.ts +13 -0
  401. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.js +64 -0
  402. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.d.ts +3 -0
  403. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.js +20 -0
  404. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/number.d.ts +13 -0
  405. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/number.js +56 -0
  406. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/string.d.ts +11 -0
  407. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/string.js +41 -0
  408. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/symbol.d.ts +14 -0
  409. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/symbol.js +56 -0
  410. package/r-bridge/lang-4.x/ast/parser/xml/internal/xml-to-json.d.ts +9 -0
  411. package/r-bridge/lang-4.x/ast/parser/xml/internal/xml-to-json.js +51 -0
  412. package/r-bridge/lang-4.x/ast/parser/xml/parser.d.ts +17 -0
  413. package/r-bridge/lang-4.x/ast/parser/xml/parser.js +30 -0
  414. package/r-bridge/lang-4.x/ast/parser/xml/v1/data.js +3 -0
  415. package/r-bridge/lang-4.x/ast/parser/xml/v1/hooks.js +136 -0
  416. package/r-bridge/lang-4.x/ast/parser/xml/v1/index.js +22 -0
  417. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/access.js +107 -0
  418. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/control/if-then-else.js +32 -0
  419. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/control/if-then.js +46 -0
  420. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/control/index.js +19 -0
  421. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/expression/expression.js +65 -0
  422. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/expression/index.js +18 -0
  423. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/argument.js +74 -0
  424. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/call.js +149 -0
  425. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/definition.js +60 -0
  426. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/index.js +20 -0
  427. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/parameter.js +64 -0
  428. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/index.js +27 -0
  429. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/break.js +24 -0
  430. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/for.js +72 -0
  431. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/index.js +22 -0
  432. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/next.js +24 -0
  433. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/repeat.js +42 -0
  434. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/while.js +45 -0
  435. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/binary.js +162 -0
  436. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/index.js +20 -0
  437. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/special.js +24 -0
  438. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/unary.js +59 -0
  439. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/other/comment.js +34 -0
  440. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/other/index.js +18 -0
  441. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/other/line-directive.js +55 -0
  442. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/elements.js +159 -0
  443. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/index.js +20 -0
  444. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/root.js +34 -0
  445. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/single-element.js +64 -0
  446. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/index.js +20 -0
  447. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/number.js +56 -0
  448. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/string.js +41 -0
  449. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/symbol.js +56 -0
  450. package/r-bridge/lang-4.x/ast/parser/xml/v1/normalize.js +30 -0
  451. package/r-bridge/lang-4.x/ast/parser/xml/v2/data.js +3 -0
  452. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/access.js +95 -0
  453. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/expression.js +99 -0
  454. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/functions/argument.js +71 -0
  455. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/operators/binary.js +30 -0
  456. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/operators/index.js +19 -0
  457. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/operators/unary.js +35 -0
  458. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/other/comment.js +25 -0
  459. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/other/index.js +18 -0
  460. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/other/line-directive.js +38 -0
  461. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/root.js +26 -0
  462. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/single-element.js +63 -0
  463. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/index.js +18 -0
  464. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/number.js +46 -0
  465. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/string.js +33 -0
  466. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/symbol.js +63 -0
  467. package/r-bridge/lang-4.x/ast/parser/xml/v2/normalize.js +25 -0
  468. package/r-bridge/lang-4.x/index.d.ts +2 -0
  469. package/r-bridge/lang-4.x/index.js +19 -0
  470. package/r-bridge/lang-4.x/values.d.ts +39 -0
  471. package/r-bridge/lang-4.x/values.js +149 -0
  472. package/r-bridge/retriever.d.ts +48 -0
  473. package/r-bridge/retriever.js +71 -0
  474. package/r-bridge/shell.d.ts +147 -0
  475. package/r-bridge/shell.js +423 -0
  476. package/reconstruct/reconstruct.d.ts +28 -0
  477. package/reconstruct/reconstruct.js +448 -0
  478. package/slicing/criterion/collect-all.d.ts +36 -0
  479. package/slicing/criterion/collect-all.js +23 -0
  480. package/slicing/criterion/filters/all-variables.d.ts +2 -0
  481. package/slicing/criterion/filters/all-variables.js +63 -0
  482. package/slicing/criterion/filters/index.d.ts +1 -0
  483. package/slicing/criterion/filters/index.js +18 -0
  484. package/slicing/criterion/index.d.ts +3 -0
  485. package/slicing/criterion/index.js +20 -0
  486. package/slicing/criterion/parse.d.ts +20 -0
  487. package/slicing/criterion/parse.js +79 -0
  488. package/slicing/index.d.ts +3 -0
  489. package/slicing/index.js +20 -0
  490. package/slicing/static/index.d.ts +1 -0
  491. package/slicing/static/index.js +18 -0
  492. package/slicing/static/static-slicer.d.ts +29 -0
  493. package/slicing/static/static-slicer.js +186 -0
  494. package/statistics/features/common-syntax-probability.d.ts +30 -0
  495. package/statistics/features/common-syntax-probability.js +159 -0
  496. package/statistics/features/feature.d.ts +175 -0
  497. package/statistics/features/feature.js +30 -0
  498. package/statistics/features/index.d.ts +1 -0
  499. package/statistics/features/index.js +18 -0
  500. package/statistics/features/post-processing.d.ts +12 -0
  501. package/statistics/features/post-processing.js +21 -0
  502. package/statistics/features/supported/assignments/assignments.d.ts +11 -0
  503. package/statistics/features/supported/assignments/assignments.js +53 -0
  504. package/statistics/features/supported/assignments/index.d.ts +1 -0
  505. package/statistics/features/supported/assignments/index.js +6 -0
  506. package/statistics/features/supported/assignments/post-process.d.ts +3 -0
  507. package/statistics/features/supported/assignments/post-process.js +125 -0
  508. package/statistics/features/supported/comments/comments.d.ts +18 -0
  509. package/statistics/features/supported/comments/comments.js +133 -0
  510. package/statistics/features/supported/comments/index.d.ts +1 -0
  511. package/statistics/features/supported/comments/index.js +6 -0
  512. package/statistics/features/supported/comments/post-process.d.ts +3 -0
  513. package/statistics/features/supported/comments/post-process.js +50 -0
  514. package/statistics/features/supported/control-flow/control-flow.d.ts +17 -0
  515. package/statistics/features/supported/control-flow/control-flow.js +67 -0
  516. package/statistics/features/supported/control-flow/index.d.ts +1 -0
  517. package/statistics/features/supported/control-flow/index.js +6 -0
  518. package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
  519. package/statistics/features/supported/control-flow/post-process.js +65 -0
  520. package/statistics/features/supported/data-access/data-access.d.ts +15 -0
  521. package/statistics/features/supported/data-access/data-access.js +118 -0
  522. package/statistics/features/supported/data-access/index.d.ts +1 -0
  523. package/statistics/features/supported/data-access/index.js +6 -0
  524. package/statistics/features/supported/data-access/post-process.d.ts +3 -0
  525. package/statistics/features/supported/data-access/post-process.js +107 -0
  526. package/statistics/features/supported/defined-functions/defined-functions.d.ts +35 -0
  527. package/statistics/features/supported/defined-functions/defined-functions.js +139 -0
  528. package/statistics/features/supported/defined-functions/index.d.ts +1 -0
  529. package/statistics/features/supported/defined-functions/index.js +6 -0
  530. package/statistics/features/supported/defined-functions/post-process.d.ts +6 -0
  531. package/statistics/features/supported/defined-functions/post-process.js +177 -0
  532. package/statistics/features/supported/expression-list/expression-list.d.ts +9 -0
  533. package/statistics/features/supported/expression-list/expression-list.js +36 -0
  534. package/statistics/features/supported/expression-list/index.d.ts +1 -0
  535. package/statistics/features/supported/expression-list/index.js +6 -0
  536. package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
  537. package/statistics/features/supported/expression-list/post-process.js +44 -0
  538. package/statistics/features/supported/index.d.ts +10 -0
  539. package/statistics/features/supported/index.js +27 -0
  540. package/statistics/features/supported/loops/index.d.ts +1 -0
  541. package/statistics/features/supported/loops/index.js +6 -0
  542. package/statistics/features/supported/loops/loops.d.ts +20 -0
  543. package/statistics/features/supported/loops/loops.js +79 -0
  544. package/statistics/features/supported/loops/post-process.d.ts +3 -0
  545. package/statistics/features/supported/loops/post-process.js +72 -0
  546. package/statistics/features/supported/used-functions/index.d.ts +1 -0
  547. package/statistics/features/supported/used-functions/index.js +6 -0
  548. package/statistics/features/supported/used-functions/post-process.d.ts +6 -0
  549. package/statistics/features/supported/used-functions/post-process.js +179 -0
  550. package/statistics/features/supported/used-functions/used-functions.d.ts +24 -0
  551. package/statistics/features/supported/used-functions/used-functions.js +95 -0
  552. package/statistics/features/supported/used-packages/index.d.ts +1 -0
  553. package/statistics/features/supported/used-packages/index.js +6 -0
  554. package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
  555. package/statistics/features/supported/used-packages/post-process.js +121 -0
  556. package/statistics/features/supported/used-packages/used-packages.d.ts +16 -0
  557. package/statistics/features/supported/used-packages/used-packages.js +130 -0
  558. package/statistics/features/supported/values/index.d.ts +1 -0
  559. package/statistics/features/supported/values/index.js +6 -0
  560. package/statistics/features/supported/values/post-process.d.ts +3 -0
  561. package/statistics/features/supported/values/post-process.js +72 -0
  562. package/statistics/features/supported/values/values.d.ts +14 -0
  563. package/statistics/features/supported/values/values.js +101 -0
  564. package/statistics/features/supported/variables/index.d.ts +1 -0
  565. package/statistics/features/supported/variables/index.js +6 -0
  566. package/statistics/features/supported/variables/post-process.d.ts +9 -0
  567. package/statistics/features/supported/variables/post-process.js +122 -0
  568. package/statistics/features/supported/variables/variables.d.ts +15 -0
  569. package/statistics/features/supported/variables/variables.js +70 -0
  570. package/statistics/index.d.ts +6 -0
  571. package/statistics/index.js +24 -0
  572. package/statistics/meta-statistics.d.ts +33 -0
  573. package/statistics/meta-statistics.js +17 -0
  574. package/statistics/output/ansi.d.ts +50 -0
  575. package/statistics/output/ansi.js +58 -0
  576. package/statistics/output/file-provider.d.ts +37 -0
  577. package/statistics/output/file-provider.js +97 -0
  578. package/statistics/output/index.d.ts +4 -0
  579. package/statistics/output/index.js +21 -0
  580. package/statistics/output/print-stats.d.ts +17 -0
  581. package/statistics/output/print-stats.js +69 -0
  582. package/statistics/output/statistics-file.d.ts +37 -0
  583. package/statistics/output/statistics-file.js +69 -0
  584. package/statistics/statistics.d.ts +24 -0
  585. package/statistics/statistics.js +109 -0
  586. package/util/args.d.ts +14 -0
  587. package/util/args.js +67 -0
  588. package/util/arrays.d.ts +44 -0
  589. package/util/arrays.js +145 -0
  590. package/util/assert.d.ts +11 -0
  591. package/util/assert.js +35 -0
  592. package/util/bimap.d.ts +24 -0
  593. package/util/bimap.js +71 -0
  594. package/util/cfg.d.ts +55 -0
  595. package/util/cfg.js +498 -0
  596. package/util/defaultmap.d.ts +34 -0
  597. package/util/defaultmap.js +65 -0
  598. package/util/diff.d.ts +43 -0
  599. package/util/diff.js +28 -0
  600. package/util/files.d.ts +54 -0
  601. package/util/files.js +144 -0
  602. package/util/json.d.ts +2 -0
  603. package/util/json.js +28 -0
  604. package/util/log.d.ts +22 -0
  605. package/util/log.js +48 -0
  606. package/util/mermaid/ast.d.ts +6 -0
  607. package/util/mermaid/ast.js +28 -0
  608. package/util/mermaid/cfg.d.ts +7 -0
  609. package/util/mermaid/cfg.js +44 -0
  610. package/util/mermaid/dfg.d.ts +21 -0
  611. package/util/mermaid/dfg.js +165 -0
  612. package/util/mermaid/index.d.ts +3 -0
  613. package/util/mermaid/index.js +20 -0
  614. package/util/mermaid/mermaid.d.ts +7 -0
  615. package/util/mermaid/mermaid.js +24 -0
  616. package/util/numbers.d.ts +1 -0
  617. package/util/numbers.js +9 -0
  618. package/util/objects.d.ts +17 -0
  619. package/util/objects.js +60 -0
  620. package/util/os.d.ts +2 -0
  621. package/util/os.js +25 -0
  622. package/util/parallel.d.ts +30 -0
  623. package/util/parallel.js +103 -0
  624. package/util/quads.d.ts +92 -0
  625. package/util/quads.js +189 -0
  626. package/util/random.d.ts +4 -0
  627. package/util/random.js +22 -0
  628. package/util/range.d.ts +32 -0
  629. package/util/range.js +61 -0
  630. package/util/set.d.ts +8 -0
  631. package/util/set.js +32 -0
  632. package/util/strings.d.ts +12 -0
  633. package/util/strings.js +41 -0
  634. package/util/summarizer/auto-detect.d.ts +2 -0
  635. package/util/summarizer/auto-detect.js +32 -0
  636. package/util/summarizer/benchmark/benchmark-summarizer.js +208 -0
  637. package/util/summarizer/benchmark/data.d.ts +66 -0
  638. package/util/summarizer/benchmark/data.js +13 -0
  639. package/util/summarizer/benchmark/first-phase/input.d.ts +2 -0
  640. package/util/summarizer/benchmark/first-phase/input.js +59 -0
  641. package/util/summarizer/benchmark/first-phase/process.d.ts +10 -0
  642. package/util/summarizer/benchmark/first-phase/process.js +208 -0
  643. package/util/summarizer/benchmark/second-phase/graph.d.ts +2 -0
  644. package/util/summarizer/benchmark/second-phase/graph.js +54 -0
  645. package/util/summarizer/benchmark/second-phase/process.d.ts +4 -0
  646. package/util/summarizer/benchmark/second-phase/process.js +89 -0
  647. package/util/summarizer/benchmark/summarizer.d.ts +34 -0
  648. package/util/summarizer/benchmark/summarizer.js +53 -0
  649. package/util/summarizer/statistics/first-phase/process.d.ts +6 -0
  650. package/util/summarizer/statistics/first-phase/process.js +81 -0
  651. package/util/summarizer/statistics/post-process/clusterer.d.ts +26 -0
  652. package/util/summarizer/statistics/post-process/clusterer.js +43 -0
  653. package/util/summarizer/statistics/post-process/file-based-count.d.ts +17 -0
  654. package/util/summarizer/statistics/post-process/file-based-count.js +49 -0
  655. package/util/summarizer/statistics/post-process/histogram.d.ts +59 -0
  656. package/util/summarizer/statistics/post-process/histogram.js +128 -0
  657. package/util/summarizer/statistics/post-process/index.d.ts +4 -0
  658. package/util/summarizer/statistics/post-process/index.js +21 -0
  659. package/util/summarizer/statistics/post-process/post-process-output.d.ts +16 -0
  660. package/util/summarizer/statistics/post-process/post-process-output.js +104 -0
  661. package/util/summarizer/statistics/second-phase/process.d.ts +11 -0
  662. package/util/summarizer/statistics/second-phase/process.js +117 -0
  663. package/util/summarizer/statistics/summarizer.d.ts +34 -0
  664. package/util/summarizer/statistics/summarizer.js +135 -0
  665. package/util/summarizer/summarizer.d.ts +25 -0
  666. package/util/summarizer/summarizer.js +13 -0
  667. package/util/time.d.ts +6 -0
  668. package/util/time.js +13 -0
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeRoot = void 0;
4
+ const input_format_1 = require("../../common/input-format");
5
+ const expression_1 = require("./expression");
6
+ const normalize_1 = require("../normalize");
7
+ function normalizeRoot(config, obj) {
8
+ const exprContent = (0, input_format_1.getKeyGuarded)(obj, "exprlist" /* RawRType.ExpressionList */);
9
+ let normalized = [];
10
+ // the children of an expression list are an array of expressions
11
+ if (config.children in exprContent) {
12
+ const children = (0, input_format_1.getKeyGuarded)(exprContent, config.children);
13
+ normalized = (0, expression_1.normalizeExpression)(config, children);
14
+ }
15
+ else {
16
+ normalize_1.normalizeLog.debug('assume empty root');
17
+ }
18
+ return {
19
+ type: "RExpressionList" /* RType.ExpressionList */,
20
+ children: normalized,
21
+ lexeme: undefined,
22
+ info: {}
23
+ };
24
+ }
25
+ exports.normalizeRoot = normalizeRoot;
26
+ //# sourceMappingURL=root.js.map
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeSingleToken = void 0;
4
+ const input_format_1 = require("../../common/input-format");
5
+ const expression_1 = require("./expression");
6
+ const values_1 = require("./values");
7
+ const string_1 = require("./values/string");
8
+ const symbol_1 = require("./values/symbol");
9
+ const assert_1 = require("../../../../../../../util/assert");
10
+ const other_1 = require("./other");
11
+ const line_directive_1 = require("./other/line-directive");
12
+ const meta_1 = require("../../common/meta");
13
+ const todo = (...x) => { throw new Error('not implemented: ' + JSON.stringify(x)); };
14
+ /**
15
+ * Parses a single structure in the ast based on its type (e.g., a string, a number, a symbol, ...)
16
+ *
17
+ * @param config - The data used by the parser (see {@link ParserData})
18
+ * @param token - The element to parse
19
+ *
20
+ * @returns The parsed element as an `RNode` or an `RDelimiter` if it is such.
21
+ */
22
+ function normalizeSingleToken(config, token) {
23
+ const name = (0, meta_1.getTokenType)(config.tokenMap, token);
24
+ switch (name) {
25
+ case "(" /* RawRType.ParenLeft */:
26
+ case ")" /* RawRType.ParenRight */:
27
+ case "{" /* RawRType.BraceLeft */:
28
+ case "}" /* RawRType.BraceRight */:
29
+ return todo(name);
30
+ case "COMMENT" /* RawRType.Comment */:
31
+ return (0, other_1.normalizeComment)(config, token);
32
+ case "LINE_DIRECTIVE" /* RawRType.LineDirective */:
33
+ return (0, line_directive_1.normalizeLineDirective)(config, token);
34
+ case "exprlist" /* RawRType.ExpressionList */:
35
+ case "expr" /* RawRType.Expression */:
36
+ case "expr_or_assign_or_help" /* RawRType.ExprOfAssignOrHelp */: {
37
+ config.currentLexeme = token[config.content];
38
+ const res = (0, expression_1.normalizeExpression)(config, (0, input_format_1.getKeyGuarded)(token, config.children));
39
+ (0, assert_1.guard)(res.length === 1, () => `expected only one element in the expression list, yet received ${JSON.stringify(res)}`);
40
+ return res[0];
41
+ }
42
+ case "NUM_CONST" /* RawRType.NumericConst */:
43
+ return (0, values_1.normalizeNumber)(config, token);
44
+ case "STR_CONST" /* RawRType.StringConst */:
45
+ return (0, string_1.normalizeString)(config, token);
46
+ case "BREAK" /* RawRType.Break */:
47
+ return todo(name);
48
+ case "NEXT" /* RawRType.Next */:
49
+ return todo(name);
50
+ case "SYMBOL" /* RawRType.Symbol */:
51
+ case "SLOT" /* RawRType.Slot */:
52
+ case "NULL_CONST" /* RawRType.NullConst */: {
53
+ // TODO: optimize manually?
54
+ const symbol = (0, symbol_1.tryNormalizeSymbolNoNamespace)(config, token);
55
+ (0, assert_1.guard)(symbol !== undefined, () => `should have been parsed to a symbol but was ${JSON.stringify(symbol)}`);
56
+ return symbol;
57
+ }
58
+ default:
59
+ throw new input_format_1.XmlParseError(`unknown type ${name} for ${JSON.stringify(token)} in ${JSON.stringify(config)}`);
60
+ }
61
+ }
62
+ exports.normalizeSingleToken = normalizeSingleToken;
63
+ //# sourceMappingURL=single-element.js.map
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./number"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeNumber = void 0;
4
+ const values_1 = require("../../../../../../values");
5
+ const meta_1 = require("../../../common/meta");
6
+ /**
7
+ * Normalize the given object as a R number (see {@link number2ts}), supporting booleans (see {@link boolean2ts}),
8
+ * and special values.
9
+ * This requires you to check the corresponding name beforehand.
10
+ *
11
+ * @param config - The configuration used by the normalizer (see {@link NormalizeConfiguration})
12
+ * @param obj - The json object to extract the meta-information from
13
+ */
14
+ function normalizeNumber(config, obj) {
15
+ const { location, content } = (0, meta_1.retrieveMetaStructure)(config, obj);
16
+ const common = {
17
+ location,
18
+ lexeme: content,
19
+ info: {}
20
+ };
21
+ /* the special symbol */
22
+ if ((0, values_1.isNA)(content)) {
23
+ return {
24
+ ...common,
25
+ namespace: undefined,
26
+ type: "RSymbol" /* RType.Symbol */,
27
+ content
28
+ };
29
+ }
30
+ else if ((0, values_1.isBoolean)(content)) {
31
+ return {
32
+ ...common,
33
+ type: "RLogical" /* RType.Logical */,
34
+ content: (0, values_1.boolean2ts)(content)
35
+ };
36
+ }
37
+ else {
38
+ return {
39
+ ...common,
40
+ type: "RNumber" /* RType.Number */,
41
+ content: (0, values_1.number2ts)(content)
42
+ };
43
+ }
44
+ }
45
+ exports.normalizeNumber = normalizeNumber;
46
+ //# sourceMappingURL=number.js.map
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeString = void 0;
4
+ const meta_1 = require("../../../common/meta");
5
+ const values_1 = require("../../../../../../values");
6
+ const assert_1 = require("../../../../../../../../util/assert");
7
+ /**
8
+ * Normalize the given object as a R string (see {@link string2ts}).
9
+ * This requires you to check the corresponding name beforehand.
10
+ *
11
+ * @param config - The configuration used by the normalizer
12
+ * @param obj - The json object to extract the meta-information from
13
+ */
14
+ function normalizeString(config, obj) {
15
+ const { location, content } = (0, meta_1.retrieveMetaStructure)(config, obj);
16
+ // based on https://www.rdocumentation.org/packages/utils/versions/3.6.2/topics/getParseData we do not get strings with 1000 characters or more within the text field.
17
+ // therefore, we recover the full string from the surrounding expr lexeme field
18
+ let stringContent = content;
19
+ if (stringContent.startsWith('[')) { // something like "[9999 chars quoted with '"']"
20
+ // ... as they are not stored by the R parser post-processor
21
+ (0, assert_1.guard)(config.currentLexeme !== undefined, 'need cur. lexeme for too long strings');
22
+ stringContent = config.currentLexeme;
23
+ }
24
+ return {
25
+ type: "RString" /* RType.String */,
26
+ location,
27
+ content: (0, values_1.string2ts)(stringContent),
28
+ lexeme: stringContent,
29
+ info: {}
30
+ };
31
+ }
32
+ exports.normalizeString = normalizeString;
33
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tryNormalizeSymbolWithNamespace = exports.tryNormalizeSymbolNoNamespace = void 0;
4
+ const meta_1 = require("../../../common/meta");
5
+ const model_1 = require("../../../../../model");
6
+ const strings_1 = require("../../../../../../../../util/strings");
7
+ const xml_to_json_1 = require("../../../common/xml-to-json");
8
+ // remove backticks from symbol
9
+ function removeBackticks(content) {
10
+ return (0, strings_1.startAndEndsWith)(content, '`') ? content.substring(1, content.length - 1) : content;
11
+ }
12
+ /**
13
+ * Normalize the given object as an R symbol without namespace information.
14
+ * For the variant with namespace information, see {@link tryNormalizeSymbolWithNamespace}.
15
+ *
16
+ * @param config - The configuration used by the normalizer
17
+ * @param symbol - The json object to extract the symbol from
18
+ *
19
+ * @returns The parsed symbol or `undefined` if the given object is not a symbol.
20
+ */
21
+ function tryNormalizeSymbolNoNamespace(config, symbol) {
22
+ const name = symbol[xml_to_json_1.XML_NAME];
23
+ if (!(0, model_1.isSymbol)(name)) {
24
+ return undefined;
25
+ }
26
+ const { location, content } = (0, meta_1.retrieveMetaStructure)(config, symbol);
27
+ return {
28
+ type: "RSymbol" /* RType.Symbol */,
29
+ namespace: undefined,
30
+ location,
31
+ content: removeBackticks(content),
32
+ lexeme: content,
33
+ info: {}
34
+ };
35
+ }
36
+ exports.tryNormalizeSymbolNoNamespace = tryNormalizeSymbolNoNamespace;
37
+ /**
38
+ * Normalize the given object as an R symbol without namespace information.
39
+ * For the variant without namespace information, see {@link tryNormalizeSymbolNoNamespace}.
40
+ *
41
+ * @param config - The configuration used by the normalizer
42
+ * @param namespace - The json object to extract the namespace from
43
+ * @param symbol - The json object to extract the symbol from
44
+ *
45
+ * @returns The parsed symbol (with populated namespace information) or `undefined` if the given object is not a symbol.
46
+ */
47
+ function tryNormalizeSymbolWithNamespace(config, [namespace, , symbol]) {
48
+ const name = symbol[xml_to_json_1.XML_NAME];
49
+ if (!(0, model_1.isSymbol)(name)) {
50
+ return undefined;
51
+ }
52
+ const { location, content } = (0, meta_1.retrieveMetaStructure)(config, symbol);
53
+ return {
54
+ type: "RSymbol" /* RType.Symbol */,
55
+ namespace: namespace[config.content],
56
+ location,
57
+ content: removeBackticks(content),
58
+ lexeme: content,
59
+ info: {}
60
+ };
61
+ }
62
+ exports.tryNormalizeSymbolWithNamespace = tryNormalizeSymbolWithNamespace;
63
+ //# sourceMappingURL=symbol.js.map
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalize = exports.normalizeLog = void 0;
4
+ const log_1 = require("../../../../../../util/log");
5
+ const config_1 = require("../common/config");
6
+ const model_1 = require("../../../model");
7
+ const xml_to_json_1 = require("../common/xml-to-json");
8
+ const root_1 = require("./internal/root");
9
+ exports.normalizeLog = log_1.log.getSubLogger({ name: 'v2-normalize' });
10
+ /**
11
+ * The main entry point to normalize the given R ast (using v2, which desugars the AST to function-calls only).
12
+ *
13
+ * @param xmlString - The XML string obtained probably by {@link retrieveXmlFromRCode} to normalization and desugar.
14
+ * @param tokenMap - The token replacement map in effect by the XML parser
15
+ * @param getId - The function to be used to generate unique ids for the nodes of the ast. It is up to you to ensure that the ids are unique!
16
+ *
17
+ * @returns The normalized and decorated AST (i.e., as a doubly linked tree)
18
+ */
19
+ async function normalize(xmlString, tokenMap, getId = (0, model_1.deterministicCountingIdGenerator)(0)) {
20
+ const config = { ...config_1.DEFAULT_XML_PARSER_CONFIG, tokenMap, currentLexeme: undefined };
21
+ const object = await (0, xml_to_json_1.xlm2jsonObject)(config, xmlString);
22
+ return (0, model_1.decorateAst)((0, root_1.normalizeRoot)(config, object), getId);
23
+ }
24
+ exports.normalize = normalize;
25
+ //# sourceMappingURL=normalize.js.map
@@ -0,0 +1,2 @@
1
+ export * from './values';
2
+ export * from './ast';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./values"), exports);
18
+ __exportStar(require("./ast"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,39 @@
1
+ /**
2
+ * transforms a value to something R can understand (e.g., booleans to TRUE/FALSE)
3
+ */
4
+ export declare function ts2r<T>(value: T): string;
5
+ /** The R literal for the logical true */
6
+ export declare const RTrue = "TRUE";
7
+ /** The R literal for the logical false */
8
+ export declare const RFalse = "FALSE";
9
+ export declare function isBoolean(value: string): boolean;
10
+ export declare function boolean2ts(value: string): boolean;
11
+ export declare const RNumHexFloatRegex: RegExp;
12
+ export declare const RImaginaryMarker = "i";
13
+ export declare const RIntegerMarker = "L";
14
+ export declare const RInf = "Inf";
15
+ export interface RNumberValue {
16
+ num: number;
17
+ /** see {@link RIntegerMarker}, still, R treats 1.1L as numeric and not especially integer */
18
+ markedAsInt: boolean;
19
+ /** see {@link RImaginaryMarker}, compound imaginary numbers are expressions in R */
20
+ complexNumber: boolean;
21
+ }
22
+ export declare function number2ts(value: string): RNumberValue;
23
+ export interface RStringValue {
24
+ str: string;
25
+ /** from the R-language definition a string is either delimited by a pair of single or double quotes */
26
+ quotes: '"' | '\'';
27
+ /** a string is raw if prefixed with r */
28
+ flag?: 'raw';
29
+ }
30
+ /**
31
+ * Convert a valid R string into a {@link RStringValue}.
32
+ *
33
+ * @throws {@link ValueConversionError} if the string has an unknown starting quote
34
+ */
35
+ export declare function string2ts(value: string): RStringValue;
36
+ export declare const RNa = "NA";
37
+ export declare const RNull = "NULL";
38
+ export declare function isNA(value: string): value is (typeof RNa);
39
+ export declare function parseCSV(lines: string[]): string[][];
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseCSV = exports.isNA = exports.RNull = exports.RNa = exports.string2ts = exports.number2ts = exports.RInf = exports.RIntegerMarker = exports.RImaginaryMarker = exports.RNumHexFloatRegex = exports.boolean2ts = exports.isBoolean = exports.RFalse = exports.RTrue = exports.ts2r = void 0;
4
+ const sync_1 = require("csv-parse/sync");
5
+ class ValueConversionError extends Error {
6
+ constructor(message) {
7
+ super(message);
8
+ this.name = 'ValueConversionError';
9
+ }
10
+ }
11
+ /**
12
+ * transforms a value to something R can understand (e.g., booleans to TRUE/FALSE)
13
+ */
14
+ function ts2r(value) {
15
+ if (typeof value === 'undefined') {
16
+ return 'NA';
17
+ }
18
+ else if (typeof value === 'string') {
19
+ return JSON.stringify(value);
20
+ }
21
+ else if (typeof value === 'number') {
22
+ return value.toString();
23
+ }
24
+ else if (typeof value === 'boolean') {
25
+ return value ? 'TRUE' : 'FALSE';
26
+ }
27
+ else if (value === null) {
28
+ return 'NULL';
29
+ }
30
+ else if (Array.isArray(value)) {
31
+ return `c(${value.map(ts2r).join(', ')})`;
32
+ }
33
+ else if (typeof value === 'object') {
34
+ const obj = Object.entries(value)
35
+ .map(([key, value]) => `${key} = ${ts2r(value)}`)
36
+ .join(', ');
37
+ return `list(${obj})`;
38
+ }
39
+ throw new ValueConversionError(`cannot convert value of type ${typeof value} to R code`);
40
+ }
41
+ exports.ts2r = ts2r;
42
+ /** The R literal for the logical true */
43
+ exports.RTrue = 'TRUE';
44
+ /** The R literal for the logical false */
45
+ exports.RFalse = 'FALSE';
46
+ function isBoolean(value) {
47
+ return value === exports.RTrue || value === exports.RFalse;
48
+ }
49
+ exports.isBoolean = isBoolean;
50
+ function boolean2ts(value) {
51
+ if (value === exports.RTrue) {
52
+ return true;
53
+ }
54
+ else if (value === exports.RFalse) {
55
+ return false;
56
+ }
57
+ throw new ValueConversionError(`value ${value} is not a legal R boolean`);
58
+ }
59
+ exports.boolean2ts = boolean2ts;
60
+ exports.RNumHexFloatRegex = /^\s*0x(?<intPart>[0-9a-f]+)?(\.(?<floatPart>[0-9a-f]*))?p(?<exp>[-+]?\d+)\s*$/;
61
+ function getDecimalPlacesWithRadix(floatPart, radix) {
62
+ return [...floatPart].reduce((acc, c, idx) => acc + parseInt(c, radix) / (radix ** (idx + 1)), 0);
63
+ }
64
+ exports.RImaginaryMarker = 'i';
65
+ exports.RIntegerMarker = 'L';
66
+ exports.RInf = 'Inf';
67
+ function number2ts(value) {
68
+ // check for hexadecimal number with floating point addon which is supported by R but not by JS :/
69
+ let lcValue = value.toLowerCase();
70
+ /* both checks are case-sensitive! */
71
+ const last = value[value.length - 1];
72
+ const markedAsInt = last === exports.RIntegerMarker;
73
+ const complexNumber = last === exports.RImaginaryMarker;
74
+ if (markedAsInt || complexNumber) {
75
+ lcValue = lcValue.slice(0, -1);
76
+ }
77
+ if (value === exports.RInf) {
78
+ return {
79
+ num: Infinity,
80
+ complexNumber,
81
+ markedAsInt
82
+ };
83
+ }
84
+ const floatHex = lcValue.match(exports.RNumHexFloatRegex);
85
+ if (floatHex == null) {
86
+ return {
87
+ num: Number(lcValue),
88
+ complexNumber,
89
+ markedAsInt
90
+ };
91
+ }
92
+ else {
93
+ const { intPart, floatPart, exp } = floatHex.groups;
94
+ const base = intPart === undefined ? 0 : parseInt(`${intPart}`, 16);
95
+ const floatSuffix = floatPart === undefined ? 0 : getDecimalPlacesWithRadix(floatPart, 16);
96
+ const exponent = parseInt(exp, 10);
97
+ return {
98
+ num: (base + floatSuffix) * Math.pow(2, exponent),
99
+ complexNumber,
100
+ markedAsInt
101
+ };
102
+ }
103
+ }
104
+ exports.number2ts = number2ts;
105
+ /**
106
+ * Convert a valid R string into a {@link RStringValue}.
107
+ *
108
+ * @throws {@link ValueConversionError} if the string has an unknown starting quote
109
+ */
110
+ function string2ts(value) {
111
+ if (value.length < 2) {
112
+ throw new ValueConversionError(`cannot parse string '${value}' as it is too short`);
113
+ }
114
+ const init = value[0];
115
+ if (init === '"' || init === '\'') {
116
+ return {
117
+ str: value.slice(1, -1),
118
+ quotes: init
119
+ };
120
+ }
121
+ else if (init === 'r' || init === 'R' && value.length >= 3) {
122
+ const flags = value[1];
123
+ if (flags === '"' || flags === '\'') {
124
+ return {
125
+ str: value.slice(2, -1),
126
+ quotes: flags,
127
+ flag: 'raw'
128
+ };
129
+ }
130
+ else {
131
+ throw new ValueConversionError(`expected string to start with a known quote (' or "), or raw, yet received ${value}`);
132
+ }
133
+ }
134
+ else {
135
+ throw new ValueConversionError(`expected string to start with a known quote (' or "), or raw, yet received ${value}`);
136
+ }
137
+ }
138
+ exports.string2ts = string2ts;
139
+ exports.RNa = 'NA';
140
+ exports.RNull = 'NULL';
141
+ function isNA(value) {
142
+ return value === exports.RNa;
143
+ }
144
+ exports.isNA = isNA;
145
+ function parseCSV(lines) {
146
+ return (0, sync_1.parse)(lines.join('\n'), { skipEmptyLines: true });
147
+ }
148
+ exports.parseCSV = parseCSV;
149
+ //# sourceMappingURL=values.js.map
@@ -0,0 +1,48 @@
1
+ import { type RShell } from './shell';
2
+ import { XmlParserHooks, NormalizedAst } from './lang-4.x';
3
+ import { DeepPartial, DeepReadonly } from 'ts-essentials';
4
+ export interface RParseRequestFromFile {
5
+ request: 'file';
6
+ /** The path to the file (absolute paths are probably best here */
7
+ content: string;
8
+ }
9
+ export interface RParseRequestFromText {
10
+ request: 'text';
11
+ content: string;
12
+ }
13
+ interface RParseRequestBase {
14
+ /**
15
+ * Ensure that all required packages are present and if not install them?
16
+ * The only reason to set this to `false` is probably in a series of parse requests for the same session.
17
+ */
18
+ ensurePackageInstalled: boolean;
19
+ }
20
+ /**
21
+ * A request that can be passed along to {@link retrieveXmlFromRCode}.
22
+ */
23
+ export type RParseRequest = (RParseRequestFromFile | RParseRequestFromText) & RParseRequestBase;
24
+ export declare function requestFromInput(input: `file://${string}`): RParseRequestFromFile & RParseRequestBase;
25
+ export declare function requestFromInput(input: string): RParseRequestFromText & RParseRequestBase;
26
+ /**
27
+ * Provides the capability to parse R files/R code using the R parser.
28
+ * Depends on {@link RShell} to provide a connection to R.
29
+ * <p>
30
+ * Throws if the file could not be parsed.
31
+ * If successful, allows to further query the last result with {@link retrieveNumberOfRTokensOfLastParse}.
32
+ */
33
+ export declare function retrieveXmlFromRCode(request: RParseRequest, shell: RShell): Promise<string>;
34
+ /**
35
+ * Uses {@link retrieveXmlFromRCode} and returns the nicely formatted object-AST.
36
+ * If successful, allows to further query the last result with {@link retrieveNumberOfRTokensOfLastParse}.
37
+ */
38
+ export declare function retrieveNormalizedAstFromRCode(request: RParseRequest, shell: RShell, hooks?: DeepPartial<XmlParserHooks>): Promise<NormalizedAst>;
39
+ /**
40
+ * If the string has (R-)quotes around it, they will be removed, otherwise the string is returned unchanged.
41
+ */
42
+ export declare function removeTokenMapQuotationMarks(str: string): string;
43
+ export type TokenMap = DeepReadonly<Record<string, string>>;
44
+ /**
45
+ * Needs to be called *after* {@link retrieveXmlFromRCode} (or {@link retrieveNormalizedAstFromRCode})
46
+ */
47
+ export declare function retrieveNumberOfRTokensOfLastParse(shell: RShell): Promise<number>;
48
+ export {};
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.retrieveNumberOfRTokensOfLastParse = exports.removeTokenMapQuotationMarks = exports.retrieveNormalizedAstFromRCode = exports.retrieveXmlFromRCode = exports.requestFromInput = void 0;
4
+ const lang_4_x_1 = require("./lang-4.x");
5
+ const strings_1 = require("../util/strings");
6
+ const assert_1 = require("../util/assert");
7
+ /**
8
+ * Creates a {@link RParseRequest} from a given input.
9
+ */
10
+ function requestFromInput(input) {
11
+ const file = input.startsWith('file://');
12
+ return {
13
+ request: file ? 'file' : 'text',
14
+ content: file ? input.slice(7) : input,
15
+ ensurePackageInstalled: false // should be called within describeSession for that!
16
+ };
17
+ }
18
+ exports.requestFromInput = requestFromInput;
19
+ const ErrorMarker = 'err';
20
+ /**
21
+ * Provides the capability to parse R files/R code using the R parser.
22
+ * Depends on {@link RShell} to provide a connection to R.
23
+ * <p>
24
+ * Throws if the file could not be parsed.
25
+ * If successful, allows to further query the last result with {@link retrieveNumberOfRTokensOfLastParse}.
26
+ */
27
+ async function retrieveXmlFromRCode(request, shell) {
28
+ if (request.ensurePackageInstalled) {
29
+ await shell.ensurePackageInstalled('xmlparsedata', true);
30
+ }
31
+ const suffix = request.request === 'file' ? ', encoding="utf-8"' : '';
32
+ shell.sendCommands(`flowr_output <- flowr_parsed <- "${ErrorMarker}"`,
33
+ // now, try to retrieve the ast
34
+ `try(flowr_parsed<-parse(${request.request}=${JSON.stringify(request.content)},keep.source=TRUE${suffix}),silent=FALSE)`, 'try(flowr_output<-xmlparsedata::xml_parse_data(flowr_parsed,includeText=TRUE,pretty=FALSE),silent=FALSE)');
35
+ const xml = await shell.sendCommandWithOutput(`cat(flowr_output,${(0, lang_4_x_1.ts2r)(shell.options.eol)})`);
36
+ const output = xml.join(shell.options.eol);
37
+ (0, assert_1.guard)(output !== ErrorMarker, () => `unable to parse R code (see the log for more information) for request ${JSON.stringify(request)}}`);
38
+ return output;
39
+ }
40
+ exports.retrieveXmlFromRCode = retrieveXmlFromRCode;
41
+ /**
42
+ * Uses {@link retrieveXmlFromRCode} and returns the nicely formatted object-AST.
43
+ * If successful, allows to further query the last result with {@link retrieveNumberOfRTokensOfLastParse}.
44
+ */
45
+ async function retrieveNormalizedAstFromRCode(request, shell, hooks) {
46
+ const xml = await retrieveXmlFromRCode(request, shell);
47
+ return await (0, lang_4_x_1.normalize)(xml, await shell.tokenMap(), hooks);
48
+ }
49
+ exports.retrieveNormalizedAstFromRCode = retrieveNormalizedAstFromRCode;
50
+ /**
51
+ * If the string has (R-)quotes around it, they will be removed, otherwise the string is returned unchanged.
52
+ */
53
+ function removeTokenMapQuotationMarks(str) {
54
+ if (str.length > 1 && ((0, strings_1.startAndEndsWith)(str, '\'') || (0, strings_1.startAndEndsWith)(str, '"'))) {
55
+ return str.slice(1, -1);
56
+ }
57
+ else {
58
+ return str;
59
+ }
60
+ }
61
+ exports.removeTokenMapQuotationMarks = removeTokenMapQuotationMarks;
62
+ /**
63
+ * Needs to be called *after* {@link retrieveXmlFromRCode} (or {@link retrieveNormalizedAstFromRCode})
64
+ */
65
+ async function retrieveNumberOfRTokensOfLastParse(shell) {
66
+ const result = await shell.sendCommandWithOutput(`cat(nrow(getParseData(flowr_parsed)),${(0, lang_4_x_1.ts2r)(shell.options.eol)})`);
67
+ (0, assert_1.guard)(result.length === 1, () => `expected exactly one line to obtain the number of R tokens, but got: ${JSON.stringify(result)}`);
68
+ return Number(result[0]);
69
+ }
70
+ exports.retrieveNumberOfRTokensOfLastParse = retrieveNumberOfRTokensOfLastParse;
71
+ //# sourceMappingURL=retriever.js.map