@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,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tryNormalizeWhile = void 0;
4
+ const input_format_1 = require("../../input-format");
5
+ const meta_1 = require("../meta");
6
+ const parser_1 = require("../../parser");
7
+ const structure_1 = require("../structure");
8
+ const hooks_1 = require("../../hooks");
9
+ function tryNormalizeWhile(data, whileToken, leftParen, condition, rightParen, body) {
10
+ if (whileToken.name !== "WHILE" /* RawRType.While */) {
11
+ parser_1.parseLog.debug('encountered non-while token for supposed while-loop structure');
12
+ return (0, hooks_1.executeUnknownHook)(data.hooks.loops.onWhileLoop.unknown, data, { whileToken, leftParen, condition, rightParen, body });
13
+ }
14
+ else if (leftParen.name !== "(" /* RawRType.ParenLeft */) {
15
+ throw new input_format_1.XmlParseError(`expected left-parenthesis for while but found ${JSON.stringify(leftParen)}`);
16
+ }
17
+ else if (rightParen.name !== ")" /* RawRType.ParenRight */) {
18
+ throw new input_format_1.XmlParseError(`expected right-parenthesis for while but found ${JSON.stringify(rightParen)}`);
19
+ }
20
+ parser_1.parseLog.debug('trying to parse while-loop');
21
+ const parsedCondition = (0, structure_1.tryNormalizeSingleNode)(data, condition);
22
+ const parseBody = (0, structure_1.tryNormalizeSingleNode)(data, body);
23
+ if (parsedCondition.type === "RDelimiter" /* RType.Delimiter */ || parseBody.type === "RDelimiter" /* RType.Delimiter */) {
24
+ throw new input_format_1.XmlParseError(`unexpected under-sided while-loop, received ${JSON.stringify([
25
+ parsedCondition,
26
+ parseBody,
27
+ ])} for ${JSON.stringify([whileToken, condition, body])}`);
28
+ }
29
+ const { location, content } = (0, meta_1.retrieveMetaStructure)(data.config, whileToken.content);
30
+ const result = {
31
+ type: "RWhileLoop" /* RType.WhileLoop */,
32
+ condition: parsedCondition,
33
+ body: (0, meta_1.ensureExpressionList)(parseBody),
34
+ lexeme: content,
35
+ location,
36
+ info: {
37
+ fullRange: data.currentRange,
38
+ additionalTokens: [],
39
+ fullLexeme: data.currentLexeme
40
+ }
41
+ };
42
+ return (0, hooks_1.executeHook)(data.hooks.loops.onWhileLoop.after, data, result);
43
+ }
44
+ exports.tryNormalizeWhile = tryNormalizeWhile;
45
+ //# sourceMappingURL=while.js.map
@@ -0,0 +1,50 @@
1
+ import { NamedXmlBasedJson, XmlBasedJson } from '../input-format';
2
+ import { SourceRange } from '../../../../../../util/range';
3
+ import { XmlParserConfig } from '../config';
4
+ import { RawRType, RExpressionList, RNode } from '../../../model';
5
+ /**
6
+ * if the passed object is an array with only one element, remove the array wrapper
7
+ */
8
+ export declare function objectWithArrUnwrap(obj: XmlBasedJson[] | XmlBasedJson): XmlBasedJson;
9
+ /**
10
+ * given a xml element, extract the source location of the corresponding element in the R-ast
11
+ */
12
+ export declare function extractLocation(ast: XmlBasedJson): SourceRange;
13
+ /**
14
+ * The json object that represents the input xml contains various meta-information.
15
+ * This function extracts the meta-information and returns it.
16
+ *
17
+ * @param config - The configuration of the parser to use to retrieve the corresponding name fields
18
+ * @param obj - The json object to extract the meta-information from
19
+ */
20
+ export declare function retrieveMetaStructure(config: XmlParserConfig, obj: XmlBasedJson): {
21
+ /** the obj passed in, but potentially without surrounding array wrappers (see {@link objectWithArrUnwrap}) */
22
+ unwrappedObj: XmlBasedJson;
23
+ /** location information of the corresponding R-ast element */
24
+ location: SourceRange;
25
+ content: string;
26
+ };
27
+ export declare function revertTokenReplacement(tokenMap: XmlParserConfig['tokenMap'], token: string): string;
28
+ export declare function assureTokenType(tokenMap: XmlParserConfig['tokenMap'], obj: XmlBasedJson, expectedName: RawRType): void;
29
+ /**
30
+ * Extract the token-type of the given object. This is based on the knowledge, that all json objects created
31
+ * from the R xml have a name attached.
32
+ *
33
+ * @param tokenMap - used to revert token types (i.e., revert `xmlparsedata`)
34
+ * @param content - the json object to extract the token-type from
35
+ */
36
+ export declare function getTokenType(tokenMap: XmlParserConfig['tokenMap'], content: XmlBasedJson): RawRType;
37
+ export declare function getWithTokenType(tokenMap: XmlParserConfig['tokenMap'], obj: XmlBasedJson[]): {
38
+ name: RawRType;
39
+ content: XmlBasedJson;
40
+ }[];
41
+ export declare function retrieveOpName(config: XmlParserConfig, operator: NamedXmlBasedJson): string;
42
+ /**
43
+ * Ensure that the first child is completely before the second child.
44
+ *
45
+ * @param config - the configuration of the parser to use to retrieve the corresponding name fields
46
+ * @param first - the first child which should be the lhs
47
+ * @param second - the second child which should be the rhs
48
+ */
49
+ export declare function ensureChildrenAreLhsAndRhsOrdered(config: XmlParserConfig, first: XmlBasedJson, second: XmlBasedJson): void;
50
+ export declare function ensureExpressionList<Info>(node: RNode<Info>): RExpressionList<Info>;
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ensureExpressionList = exports.ensureChildrenAreLhsAndRhsOrdered = exports.retrieveOpName = exports.getWithTokenType = exports.getTokenType = exports.assureTokenType = exports.revertTokenReplacement = exports.retrieveMetaStructure = exports.extractLocation = exports.objectWithArrUnwrap = void 0;
4
+ const input_format_1 = require("../input-format");
5
+ const range_1 = require("../../../../../../util/range");
6
+ const assert_1 = require("../../../../../../util/assert");
7
+ /**
8
+ * if the passed object is an array with only one element, remove the array wrapper
9
+ */
10
+ function objectWithArrUnwrap(obj) {
11
+ if (Array.isArray(obj)) {
12
+ if (obj.length !== 1) {
13
+ throw new input_format_1.XmlParseError(`expected only one element in the wrapped array, yet received ${JSON.stringify(obj)}`);
14
+ }
15
+ return obj[0];
16
+ }
17
+ else if (typeof obj === 'object') {
18
+ return obj;
19
+ }
20
+ else {
21
+ throw new input_format_1.XmlParseError(`expected array or object, yet received ${JSON.stringify(obj)}`);
22
+ }
23
+ }
24
+ exports.objectWithArrUnwrap = objectWithArrUnwrap;
25
+ /**
26
+ * given a xml element, extract the source location of the corresponding element in the R-ast
27
+ */
28
+ function extractLocation(ast) {
29
+ const { line1, col1, line2, col2 } = (0, input_format_1.getKeysGuarded)(ast, 'line1', 'col1', 'line2', 'col2');
30
+ return (0, range_1.rangeFrom)(line1, col1, line2, col2);
31
+ }
32
+ exports.extractLocation = extractLocation;
33
+ /**
34
+ * The json object that represents the input xml contains various meta-information.
35
+ * This function extracts the meta-information and returns it.
36
+ *
37
+ * @param config - The configuration of the parser to use to retrieve the corresponding name fields
38
+ * @param obj - The json object to extract the meta-information from
39
+ */
40
+ function retrieveMetaStructure(config, obj) {
41
+ const unwrappedObj = objectWithArrUnwrap(obj);
42
+ const attributes = obj[config.attributeName];
43
+ const content = obj[config.contentName] ?? '';
44
+ (0, assert_1.guard)(attributes !== undefined, () => `expected attributes to be defined for ${JSON.stringify(obj)}`);
45
+ const location = extractLocation(attributes);
46
+ return {
47
+ unwrappedObj,
48
+ location,
49
+ content
50
+ };
51
+ }
52
+ exports.retrieveMetaStructure = retrieveMetaStructure;
53
+ function revertTokenReplacement(tokenMap, token) {
54
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- it is still necessary as we do not know if we have a replacement for the given token
55
+ return tokenMap[token] ?? token;
56
+ }
57
+ exports.revertTokenReplacement = revertTokenReplacement;
58
+ function assureTokenType(tokenMap, obj, expectedName) {
59
+ const name = getTokenType(tokenMap, obj);
60
+ if (name !== expectedName) {
61
+ throw new input_format_1.XmlParseError(`expected name to be ${expectedName}, yet received ${name} for ${JSON.stringify(obj)}`);
62
+ }
63
+ }
64
+ exports.assureTokenType = assureTokenType;
65
+ /**
66
+ * Extract the token-type of the given object. This is based on the knowledge, that all json objects created
67
+ * from the R xml have a name attached.
68
+ *
69
+ * @param tokenMap - used to revert token types (i.e., revert `xmlparsedata`)
70
+ * @param content - the json object to extract the token-type from
71
+ */
72
+ function getTokenType(tokenMap, content) {
73
+ return revertTokenReplacement(tokenMap, (0, input_format_1.getKeysGuarded)(content, '#name'));
74
+ }
75
+ exports.getTokenType = getTokenType;
76
+ function getWithTokenType(tokenMap, obj) {
77
+ return obj.map((content) => ({
78
+ name: getTokenType(tokenMap, content),
79
+ content
80
+ }));
81
+ }
82
+ exports.getWithTokenType = getWithTokenType;
83
+ function retrieveOpName(config, operator) {
84
+ /*
85
+ * only real arithmetic ops have their operation as their own name, the others identify via content
86
+ */
87
+ return operator.content[config.contentName];
88
+ }
89
+ exports.retrieveOpName = retrieveOpName;
90
+ /**
91
+ * Ensure that the first child is completely before the second child.
92
+ *
93
+ * @param config - the configuration of the parser to use to retrieve the corresponding name fields
94
+ * @param first - the first child which should be the lhs
95
+ * @param second - the second child which should be the rhs
96
+ */
97
+ function ensureChildrenAreLhsAndRhsOrdered(config, first, second) {
98
+ const firstOtherLoc = extractLocation(first[config.attributeName]);
99
+ const secondOtherLoc = extractLocation(second[config.attributeName]);
100
+ if (!(0, range_1.rangeStartsCompletelyBefore)(firstOtherLoc, secondOtherLoc)) {
101
+ throw new input_format_1.XmlParseError(`expected the first child to be the lhs, yet received ${JSON.stringify(first)} & ${JSON.stringify(second)}`);
102
+ }
103
+ }
104
+ exports.ensureChildrenAreLhsAndRhsOrdered = ensureChildrenAreLhsAndRhsOrdered;
105
+ function ensureExpressionList(node) {
106
+ if (node.type !== "RExpressionList" /* RType.ExpressionList */) {
107
+ return {
108
+ type: "RExpressionList" /* RType.ExpressionList */,
109
+ location: node.location,
110
+ info: node.info,
111
+ lexeme: undefined,
112
+ children: [node]
113
+ };
114
+ }
115
+ return node;
116
+ }
117
+ exports.ensureExpressionList = ensureExpressionList;
118
+ //# sourceMappingURL=meta.js.map
@@ -0,0 +1,8 @@
1
+ import { NamedXmlBasedJson } from '../../input-format';
2
+ import { ParserData } from '../../data';
3
+ import { RNode } from '../../../../model';
4
+ /**
5
+ * Parsing binary operations includes the pipe, even though the produced PIPE construct is not a binary operation,
6
+ * to ensure it is handled separately from the others (especially in the combination of a pipe bind)
7
+ */
8
+ export declare function tryNormalizeBinary(data: ParserData, lhs: NamedXmlBasedJson, operator: NamedXmlBasedJson, rhs: NamedXmlBasedJson): RNode | undefined;
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tryNormalizeBinary = void 0;
4
+ const input_format_1 = require("../../input-format");
5
+ const parser_1 = require("../../parser");
6
+ const meta_1 = require("../meta");
7
+ const special_1 = require("./special");
8
+ const structure_1 = require("../structure");
9
+ const model_1 = require("../../../../model");
10
+ const hooks_1 = require("../../hooks");
11
+ const assert_1 = require("../../../../../../../util/assert");
12
+ /**
13
+ * Parsing binary operations includes the pipe, even though the produced PIPE construct is not a binary operation,
14
+ * to ensure it is handled separately from the others (especially in the combination of a pipe bind)
15
+ */
16
+ function tryNormalizeBinary(data, lhs, operator, rhs) {
17
+ parser_1.parseLog.trace(`binary op for ${lhs.name} [${operator.name}] ${rhs.name}`);
18
+ let flavor;
19
+ if ("SPECIAL" /* RawRType.Special */ === operator.name) {
20
+ flavor = 'special';
21
+ }
22
+ else if (model_1.ArithmeticOperatorsRAst.has(operator.name)) {
23
+ flavor = 'arithmetic';
24
+ }
25
+ else if (model_1.ComparisonOperatorsRAst.has(operator.name)) {
26
+ flavor = 'comparison';
27
+ }
28
+ else if (model_1.LogicalOperatorsRAst.has(operator.name)) {
29
+ flavor = 'logical';
30
+ }
31
+ else if (model_1.ModelFormulaOperatorsRAst.has(operator.name)) {
32
+ flavor = 'model formula';
33
+ }
34
+ else if (model_1.AssignmentsRAst.has(operator.name)) {
35
+ flavor = 'assignment';
36
+ }
37
+ else if (operator.name === "PIPE" /* RawRType.Pipe */) {
38
+ flavor = 'pipe';
39
+ }
40
+ else {
41
+ return (0, hooks_1.executeUnknownHook)(data.hooks.operators.onBinary.unknown, data, { lhs, operator, rhs });
42
+ }
43
+ return parseBinaryOp(data, flavor, lhs, operator, rhs);
44
+ }
45
+ exports.tryNormalizeBinary = tryNormalizeBinary;
46
+ function parseBinaryOp(data, flavor, lhs, operator, rhs) {
47
+ parser_1.parseLog.debug(`[binary op] trying to parse ${flavor}`);
48
+ ({ flavor, lhs, rhs, operator } = (0, hooks_1.executeHook)(data.hooks.operators.onBinary.before, data, { flavor, lhs, operator, rhs }));
49
+ (0, meta_1.ensureChildrenAreLhsAndRhsOrdered)(data.config, lhs.content, rhs.content);
50
+ let parsedLhs = (0, structure_1.tryNormalizeSingleNode)(data, lhs);
51
+ let parsedRhs = (0, structure_1.tryNormalizeSingleNode)(data, rhs);
52
+ if (parsedLhs.type === "RDelimiter" /* RType.Delimiter */ || parsedRhs.type === "RDelimiter" /* RType.Delimiter */) {
53
+ throw new input_format_1.XmlParseError(`unexpected under-sided binary op, received ${JSON.stringify([parsedLhs, parsedRhs])} for ${JSON.stringify([lhs, operator, rhs])}`);
54
+ }
55
+ const operationName = (0, meta_1.retrieveOpName)(data.config, operator);
56
+ // special support for strings in assignments
57
+ if (flavor === 'assignment') {
58
+ [parsedLhs, parsedRhs] = processLhsAndRhsForAssignment(data, operationName, parsedLhs, parsedRhs);
59
+ }
60
+ const { location, content } = (0, meta_1.retrieveMetaStructure)(data.config, operator.content);
61
+ if (flavor === 'special') {
62
+ flavor = (0, special_1.identifySpecialOp)(content);
63
+ }
64
+ if (flavor === 'special') {
65
+ (0, assert_1.guard)(parsedLhs.location !== undefined && parsedLhs.lexeme !== undefined && parsedRhs.location !== undefined && parsedRhs.lexeme !== undefined, () => `special op lhs and rhs must have a locations and lexemes, but ${JSON.stringify(parsedLhs)} and ${JSON.stringify(parsedRhs)})`);
66
+ // parse as infix function call!
67
+ const result = {
68
+ type: "RFunctionCall" /* RType.FunctionCall */,
69
+ flavor: 'named',
70
+ infixSpecial: true,
71
+ lexeme: data.currentLexeme ?? content,
72
+ location,
73
+ functionName: {
74
+ type: "RSymbol" /* RType.Symbol */,
75
+ location,
76
+ lexeme: content,
77
+ content,
78
+ namespace: undefined,
79
+ info: {}
80
+ },
81
+ arguments: [
82
+ {
83
+ type: "RArgument" /* RType.Argument */,
84
+ location: parsedLhs.location,
85
+ value: parsedLhs,
86
+ name: undefined,
87
+ lexeme: parsedLhs.lexeme,
88
+ info: {}
89
+ },
90
+ {
91
+ type: "RArgument" /* RType.Argument */,
92
+ location: parsedRhs.location,
93
+ value: parsedRhs,
94
+ name: undefined,
95
+ lexeme: parsedRhs.lexeme,
96
+ info: {}
97
+ }
98
+ ],
99
+ info: {}
100
+ };
101
+ return (0, hooks_1.executeHook)(data.hooks.operators.onBinary.after, data, result);
102
+ }
103
+ let result;
104
+ if (flavor === 'pipe') {
105
+ (0, assert_1.guard)(parsedLhs.location !== undefined, () => `pipe lhs must have a location, but ${JSON.stringify(parsedLhs)})`);
106
+ (0, assert_1.guard)(parsedLhs.lexeme !== undefined, () => `pipe lhs must have a full lexeme, but ${JSON.stringify(parsedLhs)})`);
107
+ result = {
108
+ type: "RPipe" /* RType.Pipe */,
109
+ location,
110
+ lhs: {
111
+ type: "RArgument" /* RType.Argument */,
112
+ location: parsedLhs.location,
113
+ value: parsedLhs,
114
+ name: undefined,
115
+ lexeme: parsedLhs.lexeme,
116
+ info: {}
117
+ },
118
+ rhs: parsedRhs,
119
+ lexeme: content,
120
+ info: {
121
+ fullRange: data.currentRange,
122
+ additionalTokens: [],
123
+ fullLexeme: data.currentLexeme
124
+ }
125
+ };
126
+ }
127
+ else {
128
+ result = {
129
+ type: "RBinaryOp" /* RType.BinaryOp */,
130
+ flavor,
131
+ location,
132
+ lhs: parsedLhs,
133
+ rhs: parsedRhs,
134
+ operator: operationName,
135
+ lexeme: content,
136
+ info: {
137
+ fullRange: data.currentRange,
138
+ additionalTokens: [],
139
+ fullLexeme: data.currentLexeme
140
+ }
141
+ };
142
+ }
143
+ return (0, hooks_1.executeHook)(data.hooks.operators.onBinary.after, data, result);
144
+ }
145
+ function processLhsAndRhsForAssignment(data, opName, parsedLhs, parsedRhs) {
146
+ const isRhs = opName === '->' || opName === '->>';
147
+ const assigned = isRhs ? parsedRhs : parsedLhs;
148
+ if (assigned.type !== "RString" /* RType.String */) {
149
+ return [parsedLhs, parsedRhs];
150
+ }
151
+ // update the assigned value to be parsed as a symbol
152
+ const result = {
153
+ type: "RSymbol" /* RType.Symbol */,
154
+ lexeme: assigned.lexeme,
155
+ location: assigned.location,
156
+ content: assigned.content.str,
157
+ namespace: undefined,
158
+ info: assigned.info
159
+ };
160
+ return isRhs ? [parsedLhs, result] : [result, parsedRhs];
161
+ }
162
+ //# sourceMappingURL=binary.js.map
@@ -0,0 +1,3 @@
1
+ export * from './unary';
2
+ export * from './binary';
3
+ export * from './special';
@@ -0,0 +1,20 @@
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("./unary"), exports);
18
+ __exportStar(require("./binary"), exports);
19
+ __exportStar(require("./special"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,6 @@
1
+ import { BinaryOperatorFlavor } from '../../../../model';
2
+ /**
3
+ * Identify the flavor of a given operator, as we do not really have a use for "special"
4
+ * operators within our internal AST.
5
+ */
6
+ export declare function identifySpecialOp(content: string): BinaryOperatorFlavor | 'special';
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.identifySpecialOp = void 0;
4
+ const model_1 = require("../../../../model");
5
+ /**
6
+ * Identify the flavor of a given operator, as we do not really have a use for "special"
7
+ * operators within our internal AST.
8
+ */
9
+ function identifySpecialOp(content) {
10
+ if (model_1.ComparisonOperatorsRAst.has(content)) {
11
+ return 'comparison';
12
+ }
13
+ else if (model_1.LogicalOperatorsRAst.has(content)) {
14
+ return 'logical';
15
+ }
16
+ else if (model_1.ArithmeticOperatorsRAst.has(content)) {
17
+ return 'arithmetic';
18
+ }
19
+ else {
20
+ return 'special';
21
+ }
22
+ }
23
+ exports.identifySpecialOp = identifySpecialOp;
24
+ //# sourceMappingURL=special.js.map
@@ -0,0 +1,13 @@
1
+ import { NamedXmlBasedJson } from '../../input-format';
2
+ import { ParserData } from '../../data';
3
+ import { RNode } from '../../../../model';
4
+ /**
5
+ * Parses the construct as a {@link RUnaryOp} (automatically identifies the flavor).
6
+ *
7
+ * @param data - The data used by the parser (see {@link ParserData})
8
+ * @param operator - The operator token
9
+ * @param operand - The operand of the unary operator
10
+ *
11
+ * @returns The parsed {@link RUnaryOp} or `undefined` if the given construct is not a unary operator
12
+ */
13
+ export declare function tryNormalizeUnary(data: ParserData, operator: NamedXmlBasedJson, operand: NamedXmlBasedJson): RNode | undefined;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tryNormalizeUnary = void 0;
4
+ const meta_1 = require("../meta");
5
+ const parser_1 = require("../../parser");
6
+ const structure_1 = require("../structure");
7
+ const assert_1 = require("../../../../../../../util/assert");
8
+ const model_1 = require("../../../../model");
9
+ const hooks_1 = require("../../hooks");
10
+ /**
11
+ * Parses the construct as a {@link RUnaryOp} (automatically identifies the flavor).
12
+ *
13
+ * @param data - The data used by the parser (see {@link ParserData})
14
+ * @param operator - The operator token
15
+ * @param operand - The operand of the unary operator
16
+ *
17
+ * @returns The parsed {@link RUnaryOp} or `undefined` if the given construct is not a unary operator
18
+ */
19
+ function tryNormalizeUnary(data, operator, operand) {
20
+ parser_1.parseLog.trace(`unary op for ${operator.name} ${operand.name}`);
21
+ let flavor;
22
+ if (model_1.ArithmeticOperatorsRAst.has(operator.name)) {
23
+ flavor = 'arithmetic';
24
+ }
25
+ else if (model_1.LogicalOperatorsRAst.has(operator.name)) {
26
+ flavor = 'logical';
27
+ }
28
+ else if (model_1.ModelFormulaOperatorsRAst.has(operator.name)) {
29
+ flavor = 'model formula';
30
+ }
31
+ else {
32
+ return (0, hooks_1.executeUnknownHook)(data.hooks.operators.onUnary.unknown, data, { operator, operand });
33
+ }
34
+ return parseUnaryOp(data, flavor, operator, operand);
35
+ }
36
+ exports.tryNormalizeUnary = tryNormalizeUnary;
37
+ function parseUnaryOp(data, flavor, operator, operand) {
38
+ parser_1.parseLog.debug(`[unary op] parse ${flavor}`); // <- semicolon sadly required for not miss-interpreting the destructuring match as call
39
+ ({ flavor, operator, operand } = (0, hooks_1.executeHook)(data.hooks.operators.onUnary.before, data, { flavor, operator, operand }));
40
+ const parsedOperand = (0, structure_1.tryNormalizeSingleNode)(data, operand);
41
+ (0, assert_1.guard)(parsedOperand.type !== "RDelimiter" /* RType.Delimiter */, () => 'unexpected under-sided unary op');
42
+ const operationName = (0, meta_1.retrieveOpName)(data.config, operator);
43
+ const { location, content } = (0, meta_1.retrieveMetaStructure)(data.config, operator.content);
44
+ const result = {
45
+ type: "RUnaryOp" /* RType.UnaryOp */,
46
+ flavor,
47
+ location,
48
+ operator: operationName,
49
+ lexeme: content,
50
+ operand: parsedOperand,
51
+ info: {
52
+ fullRange: data.currentRange,
53
+ additionalTokens: [],
54
+ fullLexeme: data.currentLexeme
55
+ }
56
+ };
57
+ return (0, hooks_1.executeHook)(data.hooks.operators.onUnary.after, data, result);
58
+ }
59
+ //# sourceMappingURL=unary.js.map
@@ -0,0 +1,11 @@
1
+ import { XmlBasedJson } from '../../input-format';
2
+ import { RComment } from '../../../../model';
3
+ import { ParserData } from '../../data';
4
+ /**
5
+ * Normalize the given object as an R comment.
6
+ * This requires you to check the corresponding name beforehand.
7
+ *
8
+ * @param data - The data used by the parser (see {@link ParserData})
9
+ * @param obj - The json object to extract the meta-information from
10
+ */
11
+ export declare function normalizeComment(data: ParserData, obj: XmlBasedJson): RComment;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeComment = void 0;
4
+ const parser_1 = require("../../parser");
5
+ const meta_1 = require("../meta");
6
+ const assert_1 = require("../../../../../../../util/assert");
7
+ const hooks_1 = require("../../hooks");
8
+ /**
9
+ * Normalize the given object as an R comment.
10
+ * This requires you to check the corresponding name beforehand.
11
+ *
12
+ * @param data - The data used by the parser (see {@link ParserData})
13
+ * @param obj - The json object to extract the meta-information from
14
+ */
15
+ function normalizeComment(data, obj) {
16
+ parser_1.parseLog.debug('[comment]');
17
+ obj = (0, hooks_1.executeHook)(data.hooks.other.onComment.before, data, obj);
18
+ const { location, content } = (0, meta_1.retrieveMetaStructure)(data.config, obj);
19
+ (0, assert_1.guard)(content.startsWith('#'), 'comment must start with #');
20
+ const result = {
21
+ type: "RComment" /* RType.Comment */,
22
+ location,
23
+ content: content.slice(1),
24
+ lexeme: content,
25
+ info: {
26
+ fullRange: data.currentRange,
27
+ additionalTokens: [],
28
+ fullLexeme: content
29
+ }
30
+ };
31
+ return (0, hooks_1.executeHook)(data.hooks.other.onComment.after, data, result);
32
+ }
33
+ exports.normalizeComment = normalizeComment;
34
+ //# sourceMappingURL=comment.js.map
@@ -0,0 +1 @@
1
+ export * from './comment';
@@ -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("./comment"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,12 @@
1
+ import { XmlBasedJson } from '../../input-format';
2
+ import { RComment, RLineDirective } from '../../../../model';
3
+ import { ParserData } from '../../data';
4
+ /**
5
+ * Normalize the given object as an R line directive (`#line <number> "<file>"`).
6
+ * This requires you to check the corresponding name beforehand.
7
+ * If the given object turns out to be no line directive, this returns a normal comment instead.
8
+ *
9
+ * @param data - The data used by the parser (see {@link ParserData})
10
+ * @param obj - The json object to extract the meta-information from
11
+ */
12
+ export declare function normalizeLineDirective(data: ParserData, obj: XmlBasedJson): RLineDirective | RComment;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeLineDirective = void 0;
4
+ const parser_1 = require("../../parser");
5
+ const meta_1 = require("../meta");
6
+ const assert_1 = require("../../../../../../../util/assert");
7
+ const hooks_1 = require("../../hooks");
8
+ const LineDirectiveRegex = /^#line\s+(\d+)\s+"([^"]+)"\s*$/;
9
+ /**
10
+ * Normalize the given object as an R line directive (`#line <number> "<file>"`).
11
+ * This requires you to check the corresponding name beforehand.
12
+ * If the given object turns out to be no line directive, this returns a normal comment instead.
13
+ *
14
+ * @param data - The data used by the parser (see {@link ParserData})
15
+ * @param obj - The json object to extract the meta-information from
16
+ */
17
+ function normalizeLineDirective(data, obj) {
18
+ parser_1.parseLog.debug('[line-directive]');
19
+ obj = (0, hooks_1.executeHook)(data.hooks.other.onLineDirective.before, data, obj);
20
+ const { location, content } = (0, meta_1.retrieveMetaStructure)(data.config, obj);
21
+ (0, assert_1.guard)(content.startsWith('#line'), 'line directive must start with #line');
22
+ const match = LineDirectiveRegex.exec(content);
23
+ let result;
24
+ if (match === null) {
25
+ parser_1.parseLog.debug(`[line-directive] does not match the regex ${LineDirectiveRegex.source} given ${JSON.stringify(content)}`);
26
+ result = {
27
+ type: "RComment" /* RType.Comment */,
28
+ location,
29
+ lexeme: content,
30
+ info: {
31
+ fullRange: data.currentRange,
32
+ additionalTokens: [],
33
+ fullLexeme: content
34
+ },
35
+ content: content.slice(1)
36
+ };
37
+ }
38
+ else {
39
+ result = {
40
+ type: "RLineDirective" /* RType.LineDirective */,
41
+ location,
42
+ line: parseInt(match[1]),
43
+ file: match[2],
44
+ lexeme: content,
45
+ info: {
46
+ fullRange: data.currentRange,
47
+ additionalTokens: [],
48
+ fullLexeme: content
49
+ }
50
+ };
51
+ }
52
+ return (0, hooks_1.executeHook)(data.hooks.other.onLineDirective.after, data, result);
53
+ }
54
+ exports.normalizeLineDirective = normalizeLineDirective;
55
+ //# sourceMappingURL=line-directive.js.map