@eagleoutice/flowr 1.5.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (570) hide show
  1. package/abstract-interpretation/handler/binop/binop.d.ts +3 -4
  2. package/abstract-interpretation/handler/binop/binop.js +4 -2
  3. package/abstract-interpretation/handler/binop/operators.d.ts +2 -2
  4. package/abstract-interpretation/handler/binop/operators.js +14 -28
  5. package/abstract-interpretation/processor.d.ts +3 -2
  6. package/abstract-interpretation/processor.js +2 -2
  7. package/benchmark/slicer.d.ts +101 -0
  8. package/benchmark/slicer.js +214 -0
  9. package/benchmark/stats/print.d.ts +7 -0
  10. package/benchmark/stats/print.js +151 -0
  11. package/benchmark/stats/stats.d.ts +42 -0
  12. package/benchmark/stats/stats.js +6 -0
  13. package/benchmark/stopwatch.d.ts +35 -0
  14. package/benchmark/stopwatch.js +79 -0
  15. package/benchmark/summarizer/data.d.ts +54 -0
  16. package/benchmark/summarizer/first-phase/input.d.ts +3 -0
  17. package/benchmark/summarizer/first-phase/input.js +76 -0
  18. package/benchmark/summarizer/first-phase/process.d.ts +11 -0
  19. package/benchmark/summarizer/first-phase/process.js +205 -0
  20. package/benchmark/summarizer/second-phase/graph.d.ts +2 -0
  21. package/benchmark/summarizer/second-phase/graph.js +54 -0
  22. package/benchmark/summarizer/second-phase/process.d.ts +6 -0
  23. package/benchmark/summarizer/second-phase/process.js +127 -0
  24. package/benchmark/summarizer/summarizer.d.ts +31 -0
  25. package/benchmark/summarizer/summarizer.js +58 -0
  26. package/cli/benchmark-app.d.ts +10 -0
  27. package/cli/benchmark-app.js +67 -0
  28. package/cli/benchmark-helper-app.d.ts +9 -0
  29. package/cli/benchmark-helper-app.js +69 -0
  30. package/cli/common/features.d.ts +3 -0
  31. package/cli/common/features.js +30 -0
  32. package/cli/common/options.d.ts +20 -0
  33. package/cli/common/options.js +85 -0
  34. package/cli/common/script.d.ts +21 -0
  35. package/cli/common/script.js +61 -0
  36. package/cli/common/scripts-info.d.ts +25 -0
  37. package/cli/common/scripts-info.js +83 -0
  38. package/cli/export-quads-app.d.ts +7 -0
  39. package/cli/export-quads-app.js +43 -0
  40. package/cli/flowr.d.ts +29 -0
  41. package/cli/flowr.js +141 -0
  42. package/cli/repl/commands/cfg.d.ts +3 -0
  43. package/cli/repl/commands/cfg.js +37 -0
  44. package/cli/repl/commands/commands.d.ts +13 -0
  45. package/cli/repl/commands/commands.js +142 -0
  46. package/cli/repl/commands/dataflow.d.ts +3 -0
  47. package/cli/repl/commands/dataflow.js +34 -0
  48. package/cli/repl/commands/execute.d.ts +4 -0
  49. package/cli/repl/commands/execute.js +27 -0
  50. package/cli/repl/commands/main.d.ts +39 -0
  51. package/cli/repl/commands/main.js +14 -0
  52. package/cli/repl/commands/normalize.d.ts +3 -0
  53. package/cli/repl/commands/normalize.js +34 -0
  54. package/cli/repl/commands/parse.d.ts +2 -0
  55. package/cli/repl/commands/parse.js +110 -0
  56. package/cli/repl/commands/quit.d.ts +2 -0
  57. package/cli/repl/commands/quit.js +15 -0
  58. package/cli/repl/commands/version.d.ts +16 -0
  59. package/cli/repl/commands/version.js +28 -0
  60. package/cli/repl/core.d.ts +36 -0
  61. package/cli/repl/core.js +174 -0
  62. package/cli/repl/execute.d.ts +28 -0
  63. package/cli/repl/execute.js +79 -0
  64. package/cli/repl/print-version.d.ts +2 -0
  65. package/cli/repl/print-version.js +10 -0
  66. package/cli/repl/prompt.d.ts +2 -0
  67. package/cli/repl/prompt.js +9 -0
  68. package/cli/repl/server/connection.d.ts +21 -0
  69. package/cli/repl/server/connection.js +218 -0
  70. package/cli/repl/server/messages/analysis.d.ts +72 -0
  71. package/cli/repl/server/messages/analysis.js +21 -0
  72. package/cli/repl/server/messages/error.d.ts +11 -0
  73. package/{core/input.js → cli/repl/server/messages/error.js} +1 -1
  74. package/cli/repl/server/messages/hello.d.ts +20 -0
  75. package/{core/output.js → cli/repl/server/messages/hello.js} +1 -1
  76. package/cli/repl/server/messages/messages.d.ts +35 -0
  77. package/cli/repl/server/messages/messages.js +40 -0
  78. package/cli/repl/server/messages/repl.d.ts +33 -0
  79. package/cli/repl/server/messages/repl.js +37 -0
  80. package/cli/repl/server/messages/slice.d.ts +26 -0
  81. package/cli/repl/server/messages/slice.js +37 -0
  82. package/cli/repl/server/net.d.ts +49 -0
  83. package/cli/repl/server/net.js +63 -0
  84. package/cli/repl/server/send.d.ts +4 -0
  85. package/cli/repl/server/send.js +18 -0
  86. package/cli/repl/server/server.d.ts +20 -0
  87. package/cli/repl/server/server.js +66 -0
  88. package/cli/repl/server/validate.d.ts +15 -0
  89. package/cli/repl/server/validate.js +34 -0
  90. package/cli/slicer-app.d.ts +11 -0
  91. package/cli/slicer-app.js +83 -0
  92. package/cli/statistics-app.d.ts +11 -0
  93. package/cli/statistics-app.js +99 -0
  94. package/cli/statistics-helper-app.d.ts +11 -0
  95. package/cli/statistics-helper-app.js +87 -0
  96. package/cli/summarizer-app.d.ts +18 -0
  97. package/cli/summarizer-app.js +66 -0
  98. package/core/pipeline-executor.d.ts +154 -0
  99. package/core/pipeline-executor.js +221 -0
  100. package/core/print/dataflow-printer.d.ts +3 -4
  101. package/core/print/dataflow-printer.js +5 -5
  102. package/core/print/normalize-printer.d.ts +1 -1
  103. package/core/print/normalize-printer.js +3 -3
  104. package/core/print/parse-printer.js +3 -3
  105. package/core/print/print.d.ts +13 -4
  106. package/core/print/print.js +13 -2
  107. package/core/print/slice-diff-ansi.d.ts +3 -2
  108. package/core/print/slice-diff-ansi.js +4 -4
  109. package/core/steps/all/core/00-parse.d.ts +28 -0
  110. package/core/steps/all/core/00-parse.js +24 -0
  111. package/core/steps/all/core/10-normalize.d.ts +29 -0
  112. package/core/steps/all/core/10-normalize.js +26 -0
  113. package/core/steps/all/core/20-dataflow.d.ts +27 -0
  114. package/core/steps/all/core/20-dataflow.js +29 -0
  115. package/core/steps/all/static-slicing/00-slice.d.ts +28 -0
  116. package/core/steps/all/static-slicing/00-slice.js +21 -0
  117. package/core/steps/all/static-slicing/10-reconstruct.d.ts +25 -0
  118. package/core/steps/all/static-slicing/10-reconstruct.js +21 -0
  119. package/core/steps/pipeline/create-pipeline.d.ts +6 -0
  120. package/core/steps/pipeline/create-pipeline.js +130 -0
  121. package/core/steps/pipeline/default-pipelines.d.ts +251 -0
  122. package/core/steps/pipeline/default-pipelines.js +18 -0
  123. package/core/steps/pipeline/invalid-pipeline-error.d.ts +6 -0
  124. package/core/steps/pipeline/invalid-pipeline-error.js +14 -0
  125. package/core/steps/pipeline/pipeline.d.ts +60 -0
  126. package/core/steps/pipeline/pipeline.js +28 -0
  127. package/core/steps/pipeline-step.d.ts +85 -0
  128. package/core/steps/pipeline-step.js +8 -0
  129. package/dataflow/environments/append.d.ts +4 -4
  130. package/dataflow/environments/append.js +4 -4
  131. package/dataflow/environments/built-in.d.ts +25 -0
  132. package/dataflow/environments/built-in.js +123 -0
  133. package/dataflow/environments/clone.d.ts +2 -0
  134. package/dataflow/environments/clone.js +23 -0
  135. package/dataflow/environments/{register.d.ts → define.d.ts} +3 -3
  136. package/dataflow/environments/define.js +51 -0
  137. package/dataflow/environments/diff.d.ts +6 -0
  138. package/dataflow/environments/diff.js +85 -0
  139. package/dataflow/environments/environment.d.ts +10 -43
  140. package/dataflow/environments/environment.js +32 -138
  141. package/dataflow/environments/identifier.d.ts +31 -0
  142. package/dataflow/environments/identifier.js +3 -0
  143. package/dataflow/environments/overwrite.d.ts +4 -4
  144. package/dataflow/environments/overwrite.js +9 -22
  145. package/dataflow/environments/resolve-by-name.d.ts +7 -6
  146. package/dataflow/environments/resolve-by-name.js +35 -19
  147. package/dataflow/environments/scoping.js +1 -4
  148. package/dataflow/extractor.d.ts +6 -6
  149. package/dataflow/extractor.js +47 -57
  150. package/dataflow/graph/diff.d.ts +24 -7
  151. package/dataflow/graph/diff.js +114 -74
  152. package/dataflow/graph/edge.d.ts +66 -20
  153. package/dataflow/graph/edge.js +73 -27
  154. package/dataflow/graph/graph.d.ts +53 -29
  155. package/dataflow/graph/graph.js +84 -89
  156. package/dataflow/graph/quads.js +2 -2
  157. package/dataflow/graph/vertex.d.ts +37 -34
  158. package/dataflow/info.d.ts +49 -0
  159. package/dataflow/info.js +29 -0
  160. package/dataflow/internal/linker.d.ts +11 -10
  161. package/dataflow/internal/linker.js +64 -90
  162. package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +6 -0
  163. package/dataflow/internal/process/functions/call/argument/make-argument.js +31 -0
  164. package/dataflow/internal/process/functions/call/argument/unpack-argument.d.ts +3 -0
  165. package/dataflow/internal/process/functions/call/argument/unpack-argument.js +18 -0
  166. package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +9 -0
  167. package/dataflow/internal/process/functions/call/built-in/built-in-access.js +82 -0
  168. package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +29 -0
  169. package/dataflow/internal/process/functions/call/built-in/built-in-assignment.js +167 -0
  170. package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.d.ts +11 -0
  171. package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +165 -0
  172. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.d.ts +7 -0
  173. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +97 -0
  174. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.d.ts +7 -0
  175. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +165 -0
  176. package/dataflow/internal/process/functions/call/built-in/built-in-get.d.ts +7 -0
  177. package/dataflow/internal/process/functions/call/built-in/built-in-get.js +36 -0
  178. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.d.ts +7 -0
  179. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +100 -0
  180. package/dataflow/internal/process/functions/call/built-in/built-in-library.d.ts +7 -0
  181. package/dataflow/internal/process/functions/call/built-in/built-in-library.js +32 -0
  182. package/dataflow/internal/process/functions/call/built-in/built-in-logical-bin-op.d.ts +9 -0
  183. package/dataflow/internal/process/functions/call/built-in/built-in-logical-bin-op.js +35 -0
  184. package/dataflow/internal/process/functions/call/built-in/built-in-pipe.d.ts +7 -0
  185. package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +35 -0
  186. package/dataflow/internal/process/functions/call/built-in/built-in-quote.d.ts +9 -0
  187. package/dataflow/internal/process/functions/call/built-in/built-in-quote.js +29 -0
  188. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.d.ts +7 -0
  189. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +32 -0
  190. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.d.ts +12 -0
  191. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +45 -0
  192. package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +11 -0
  193. package/dataflow/internal/process/functions/call/built-in/built-in-source.js +72 -0
  194. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.d.ts +7 -0
  195. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +61 -0
  196. package/dataflow/internal/process/functions/call/common.d.ts +35 -0
  197. package/dataflow/internal/process/functions/call/common.js +70 -0
  198. package/dataflow/internal/process/functions/call/default-call-handling.d.ts +5 -0
  199. package/dataflow/internal/process/functions/call/default-call-handling.js +15 -0
  200. package/dataflow/internal/process/functions/call/known-call-handling.d.ts +26 -0
  201. package/dataflow/internal/process/functions/call/known-call-handling.js +62 -0
  202. package/dataflow/internal/process/functions/call/named-call-handling.d.ts +7 -0
  203. package/dataflow/internal/process/functions/call/named-call-handling.js +53 -0
  204. package/dataflow/internal/process/functions/call/unnamed-call-handling.d.ts +6 -0
  205. package/dataflow/internal/process/functions/call/unnamed-call-handling.js +58 -0
  206. package/dataflow/internal/process/functions/process-argument.d.ts +9 -0
  207. package/dataflow/internal/process/functions/{argument.js → process-argument.js} +25 -20
  208. package/dataflow/internal/process/functions/{parameter.d.ts → process-parameter.d.ts} +3 -2
  209. package/dataflow/internal/process/functions/{parameter.js → process-parameter.js} +10 -13
  210. package/dataflow/internal/process/process-named-call.d.ts +6 -0
  211. package/dataflow/internal/process/process-named-call.js +17 -0
  212. package/dataflow/internal/process/process-symbol.d.ts +5 -0
  213. package/dataflow/internal/process/process-symbol.js +26 -0
  214. package/dataflow/internal/process/process-uninteresting-leaf.d.ts +4 -0
  215. package/dataflow/internal/process/process-uninteresting-leaf.js +9 -0
  216. package/dataflow/internal/process/process-value.d.ts +4 -0
  217. package/dataflow/internal/process/process-value.js +22 -0
  218. package/dataflow/logger.d.ts +1 -0
  219. package/dataflow/logger.js +6 -0
  220. package/dataflow/processor.d.ts +18 -13
  221. package/dataflow/processor.js +1 -1
  222. package/package.json +48 -85
  223. package/r-bridge/data/data.d.ts +603 -0
  224. package/r-bridge/data/data.js +753 -0
  225. package/r-bridge/data/get.d.ts +19 -0
  226. package/r-bridge/data/get.js +51 -0
  227. package/r-bridge/data/print.d.ts +1 -0
  228. package/r-bridge/data/print.js +58 -0
  229. package/r-bridge/data/types.d.ts +33 -0
  230. package/r-bridge/data/types.js +3 -0
  231. package/r-bridge/init.d.ts +3 -0
  232. package/r-bridge/init.js +22 -0
  233. package/r-bridge/lang-4.x/ast/model/collect.d.ts +2 -1
  234. package/r-bridge/lang-4.x/ast/model/collect.js +2 -2
  235. package/r-bridge/lang-4.x/ast/model/model.d.ts +26 -5
  236. package/r-bridge/lang-4.x/ast/model/nodes/r-access.d.ts +4 -3
  237. package/r-bridge/lang-4.x/ast/model/nodes/r-argument.d.ts +4 -0
  238. package/r-bridge/lang-4.x/ast/model/nodes/r-binary-op.d.ts +0 -17
  239. package/r-bridge/lang-4.x/ast/model/nodes/r-expression-list.d.ts +3 -1
  240. package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +6 -4
  241. package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.js +2 -0
  242. package/r-bridge/lang-4.x/ast/model/nodes/r-function-definition.d.ts +2 -3
  243. package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +1 -1
  244. package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +1 -1
  245. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +2 -2
  246. package/r-bridge/lang-4.x/ast/model/nodes/r-unary-op.d.ts +0 -11
  247. package/r-bridge/lang-4.x/ast/model/operators.d.ts +6 -18
  248. package/r-bridge/lang-4.x/ast/model/operators.js +36 -48
  249. package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +19 -15
  250. package/r-bridge/lang-4.x/ast/model/processing/decorate.js +59 -54
  251. package/r-bridge/lang-4.x/ast/model/processing/node-id.d.ts +8 -0
  252. package/r-bridge/lang-4.x/ast/model/processing/node-id.js +18 -0
  253. package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +2 -2
  254. package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +28 -17
  255. package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.js +7 -34
  256. package/r-bridge/lang-4.x/ast/model/processing/visitor.js +5 -2
  257. package/r-bridge/lang-4.x/ast/model/type.js +13 -6
  258. package/r-bridge/lang-4.x/ast/parser/json/format.d.ts +4 -1
  259. package/r-bridge/lang-4.x/ast/parser/json/format.js +9 -2
  260. package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +5 -5
  261. package/r-bridge/lang-4.x/ast/parser/json/parser.js +22 -27
  262. package/r-bridge/lang-4.x/ast/parser/xml/input-format.d.ts +10 -7
  263. package/r-bridge/lang-4.x/ast/parser/xml/input-format.js +19 -11
  264. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then-else.d.ts → normalize-if-then-else.d.ts} +3 -3
  265. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then-else.js → normalize-if-then-else.js} +10 -13
  266. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then.d.ts → normalize-if-then.d.ts} +3 -3
  267. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then.js → normalize-if-then.js} +9 -12
  268. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/normalize-expression.d.ts +10 -0
  269. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/normalize-expression.js +64 -0
  270. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{argument.d.ts → normalize-argument.d.ts} +4 -4
  271. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{argument.js → normalize-argument.js} +13 -17
  272. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{call.d.ts → normalize-call.d.ts} +6 -4
  273. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{call.js → normalize-call.js} +24 -29
  274. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/normalize-definition.d.ts +12 -0
  275. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{definition.js → normalize-definition.js} +14 -19
  276. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{parameter.d.ts → normalize-parameter.d.ts} +4 -4
  277. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{parameter.js → normalize-parameter.js} +12 -16
  278. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-break.d.ts +4 -0
  279. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{break.js → normalize-break.js} +6 -8
  280. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-for.d.ts +4 -0
  281. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{for.js → normalize-for.js} +18 -20
  282. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-next.d.ts +4 -0
  283. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{next.js → normalize-next.js} +6 -8
  284. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-repeat.d.ts +13 -0
  285. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{repeat.js → normalize-repeat.js} +13 -16
  286. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-while.d.ts +4 -0
  287. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{while.js → normalize-while.js} +10 -12
  288. package/r-bridge/lang-4.x/ast/parser/xml/internal/{access.d.ts → normalize-access.d.ts} +4 -4
  289. package/r-bridge/lang-4.x/ast/parser/xml/internal/{access.js → normalize-access.js} +44 -45
  290. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/{binary.d.ts → normalize-binary.d.ts} +3 -3
  291. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/{binary.js → normalize-binary.js} +23 -73
  292. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/normalize-unary.d.ts +13 -0
  293. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/normalize-unary.js +47 -0
  294. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/normalize-comment.d.ts +11 -0
  295. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/{comment.js → normalize-comment.js} +5 -10
  296. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/normalize-line-directive.d.ts +13 -0
  297. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/{line-directive.js → normalize-line-directive.js} +7 -12
  298. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-delimiter.d.ts +3 -0
  299. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-delimiter.js +15 -0
  300. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-expressions.d.ts +10 -0
  301. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-expressions.js +182 -0
  302. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-root.d.ts +4 -0
  303. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-root.js +34 -0
  304. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-single-node.d.ts +13 -0
  305. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-single-node.js +59 -0
  306. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/normalize-number.d.ts +16 -0
  307. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{number.js → normalize-number.js} +12 -18
  308. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/normalize-string.d.ts +11 -0
  309. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{string.js → normalize-string.js} +7 -12
  310. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{symbol.d.ts → normalize-symbol.d.ts} +4 -4
  311. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{symbol.js → normalize-symbol.js} +12 -15
  312. package/r-bridge/lang-4.x/ast/parser/xml/{internal/meta.d.ts → normalize-meta.d.ts} +5 -3
  313. package/r-bridge/lang-4.x/ast/parser/xml/{internal/meta.js → normalize-meta.js} +8 -8
  314. package/r-bridge/lang-4.x/ast/parser/xml/{data.d.ts → normalizer-data.d.ts} +1 -5
  315. package/r-bridge/lang-4.x/ast/parser/xml/normalizer-data.js +3 -0
  316. package/r-bridge/lang-4.x/{values.d.ts → convert-values.d.ts} +2 -2
  317. package/r-bridge/lang-4.x/{values.js → convert-values.js} +5 -5
  318. package/r-bridge/retriever.d.ts +5 -5
  319. package/r-bridge/retriever.js +11 -24
  320. package/r-bridge/shell-executor.d.ts +0 -1
  321. package/r-bridge/shell-executor.js +7 -12
  322. package/r-bridge/shell.d.ts +14 -12
  323. package/r-bridge/shell.js +52 -47
  324. package/reconstruct/reconstruct.d.ts +4 -2
  325. package/reconstruct/reconstruct.js +193 -185
  326. package/slicing/criterion/collect-all.d.ts +4 -3
  327. package/slicing/criterion/collect-all.js +5 -1
  328. package/slicing/criterion/filters/all-variables.js +14 -22
  329. package/slicing/criterion/parse.d.ts +4 -2
  330. package/slicing/criterion/parse.js +13 -11
  331. package/slicing/static/fingerprint.d.ts +5 -0
  332. package/slicing/static/fingerprint.js +17 -0
  333. package/slicing/static/slice-call.d.ts +10 -0
  334. package/slicing/static/slice-call.js +86 -0
  335. package/slicing/static/slicer-types.d.ts +33 -0
  336. package/slicing/static/slicer-types.js +3 -0
  337. package/slicing/static/static-slicer.d.ts +6 -24
  338. package/slicing/static/static-slicer.js +54 -155
  339. package/slicing/static/visiting-queue.d.ts +23 -0
  340. package/slicing/static/visiting-queue.js +53 -0
  341. package/statistics/features/common-syntax-probability.d.ts +29 -0
  342. package/statistics/features/common-syntax-probability.js +159 -0
  343. package/statistics/features/feature.d.ts +182 -0
  344. package/statistics/features/feature.js +39 -0
  345. package/statistics/features/post-processing.d.ts +12 -0
  346. package/statistics/features/post-processing.js +21 -0
  347. package/statistics/features/supported/assignments/assignments.d.ts +12 -0
  348. package/statistics/features/supported/assignments/assignments.js +55 -0
  349. package/statistics/features/supported/assignments/post-process.d.ts +3 -0
  350. package/statistics/features/supported/assignments/post-process.js +124 -0
  351. package/statistics/features/supported/comments/comments.d.ts +18 -0
  352. package/statistics/features/supported/comments/comments.js +133 -0
  353. package/statistics/features/supported/comments/post-process.d.ts +3 -0
  354. package/statistics/features/supported/comments/post-process.js +49 -0
  355. package/statistics/features/supported/control-flow/control-flow.d.ts +17 -0
  356. package/statistics/features/supported/control-flow/control-flow.js +68 -0
  357. package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
  358. package/statistics/features/supported/control-flow/post-process.js +64 -0
  359. package/statistics/features/supported/data-access/data-access.d.ts +15 -0
  360. package/statistics/features/supported/data-access/data-access.js +120 -0
  361. package/statistics/features/supported/data-access/post-process.d.ts +3 -0
  362. package/statistics/features/supported/data-access/post-process.js +106 -0
  363. package/statistics/features/supported/defined-functions/defined-functions.d.ts +34 -0
  364. package/statistics/features/supported/defined-functions/defined-functions.js +142 -0
  365. package/statistics/features/supported/defined-functions/post-process.d.ts +6 -0
  366. package/statistics/features/supported/defined-functions/post-process.js +169 -0
  367. package/statistics/features/supported/expression-list/expression-list.d.ts +9 -0
  368. package/statistics/features/supported/expression-list/expression-list.js +36 -0
  369. package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
  370. package/statistics/features/supported/expression-list/post-process.js +43 -0
  371. package/statistics/features/supported/loops/loops.d.ts +20 -0
  372. package/statistics/features/supported/loops/loops.js +79 -0
  373. package/statistics/features/supported/loops/post-process.d.ts +3 -0
  374. package/statistics/features/supported/loops/post-process.js +71 -0
  375. package/statistics/features/supported/used-functions/post-process.d.ts +6 -0
  376. package/statistics/features/supported/used-functions/post-process.js +178 -0
  377. package/statistics/features/supported/used-functions/used-functions.d.ts +24 -0
  378. package/statistics/features/supported/used-functions/used-functions.js +97 -0
  379. package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
  380. package/statistics/features/supported/used-packages/post-process.js +120 -0
  381. package/statistics/features/supported/used-packages/used-packages.d.ts +16 -0
  382. package/statistics/features/supported/used-packages/used-packages.js +130 -0
  383. package/statistics/features/supported/values/post-process.d.ts +3 -0
  384. package/statistics/features/supported/values/post-process.js +71 -0
  385. package/statistics/features/supported/values/values.d.ts +14 -0
  386. package/statistics/features/supported/values/values.js +101 -0
  387. package/statistics/features/supported/variables/post-process.d.ts +9 -0
  388. package/statistics/features/supported/variables/post-process.js +121 -0
  389. package/statistics/features/supported/variables/variables.d.ts +15 -0
  390. package/statistics/features/supported/variables/variables.js +60 -0
  391. package/statistics/meta-statistics.d.ts +33 -0
  392. package/statistics/meta-statistics.js +17 -0
  393. package/statistics/output/file-provider.d.ts +37 -0
  394. package/statistics/output/file-provider.js +97 -0
  395. package/statistics/output/print-stats.d.ts +17 -0
  396. package/statistics/output/print-stats.js +69 -0
  397. package/statistics/output/statistics-file.d.ts +37 -0
  398. package/statistics/output/statistics-file.js +69 -0
  399. package/statistics/statistics.d.ts +28 -0
  400. package/statistics/statistics.js +108 -0
  401. package/statistics/summarizer/auto-detect.d.ts +2 -0
  402. package/statistics/summarizer/auto-detect.js +32 -0
  403. package/statistics/summarizer/first-phase/process.d.ts +6 -0
  404. package/statistics/summarizer/first-phase/process.js +81 -0
  405. package/statistics/summarizer/post-process/clusterer.d.ts +26 -0
  406. package/statistics/summarizer/post-process/clusterer.js +43 -0
  407. package/statistics/summarizer/post-process/file-based-count.d.ts +17 -0
  408. package/statistics/summarizer/post-process/file-based-count.js +49 -0
  409. package/statistics/summarizer/post-process/histogram.d.ts +59 -0
  410. package/statistics/summarizer/post-process/histogram.js +128 -0
  411. package/statistics/summarizer/post-process/post-process-output.d.ts +16 -0
  412. package/statistics/summarizer/post-process/post-process-output.js +105 -0
  413. package/statistics/summarizer/second-phase/process.d.ts +11 -0
  414. package/statistics/summarizer/second-phase/process.js +116 -0
  415. package/statistics/summarizer/summarizer.d.ts +35 -0
  416. package/statistics/summarizer/summarizer.js +135 -0
  417. package/util/ansi.d.ts +2 -2
  418. package/util/ansi.js +2 -2
  419. package/util/arrays.d.ts +11 -1
  420. package/util/arrays.js +34 -1
  421. package/util/assert.d.ts +1 -0
  422. package/util/assert.js +5 -1
  423. package/util/cfg/cfg.d.ts +3 -2
  424. package/util/cfg/cfg.js +17 -28
  425. package/util/cfg/visitor.d.ts +1 -1
  426. package/util/defaultmap.d.ts +1 -1
  427. package/util/defaultmap.js +1 -1
  428. package/util/diff.d.ts +4 -4
  429. package/util/files.d.ts +2 -2
  430. package/util/files.js +1 -1
  431. package/util/log.d.ts +1 -0
  432. package/util/log.js +7 -1
  433. package/util/logic.d.ts +1 -0
  434. package/util/logic.js +3 -0
  435. package/util/mermaid/ast.d.ts +1 -1
  436. package/util/mermaid/ast.js +2 -2
  437. package/util/mermaid/cfg.d.ts +1 -1
  438. package/util/mermaid/dfg.d.ts +34 -8
  439. package/util/mermaid/dfg.js +99 -70
  440. package/util/mermaid/mermaid.d.ts +1 -1
  441. package/util/mermaid/mermaid.js +6 -7
  442. package/util/objects.js +4 -0
  443. package/util/quads.d.ts +3 -3
  444. package/util/quads.js +0 -1
  445. package/util/range.d.ts +27 -14
  446. package/util/range.js +31 -27
  447. package/util/version.js +1 -1
  448. package/core/index.d.ts +0 -4
  449. package/core/index.js +0 -23
  450. package/core/input.d.ts +0 -42
  451. package/core/output.d.ts +0 -15
  452. package/core/slicer.d.ts +0 -124
  453. package/core/slicer.js +0 -227
  454. package/core/steps.d.ts +0 -508
  455. package/core/steps.js +0 -100
  456. package/dataflow/environments/index.d.ts +0 -7
  457. package/dataflow/environments/index.js +0 -23
  458. package/dataflow/environments/register.js +0 -40
  459. package/dataflow/environments/scopes.d.ts +0 -6
  460. package/dataflow/environments/scopes.js +0 -6
  461. package/dataflow/graph/index.d.ts +0 -4
  462. package/dataflow/graph/index.js +0 -21
  463. package/dataflow/index.d.ts +0 -5
  464. package/dataflow/index.js +0 -24
  465. package/dataflow/internal/info.d.ts +0 -21
  466. package/dataflow/internal/info.js +0 -16
  467. package/dataflow/internal/process/access.d.ts +0 -4
  468. package/dataflow/internal/process/access.js +0 -53
  469. package/dataflow/internal/process/expression-list.d.ts +0 -8
  470. package/dataflow/internal/process/expression-list.js +0 -144
  471. package/dataflow/internal/process/functions/argument.d.ts +0 -8
  472. package/dataflow/internal/process/functions/exit-points.d.ts +0 -2
  473. package/dataflow/internal/process/functions/exit-points.js +0 -121
  474. package/dataflow/internal/process/functions/function-call.d.ts +0 -5
  475. package/dataflow/internal/process/functions/function-call.js +0 -105
  476. package/dataflow/internal/process/functions/function-definition.d.ts +0 -4
  477. package/dataflow/internal/process/functions/function-definition.js +0 -176
  478. package/dataflow/internal/process/functions/source.d.ts +0 -8
  479. package/dataflow/internal/process/functions/source.js +0 -81
  480. package/dataflow/internal/process/if-then-else.d.ts +0 -4
  481. package/dataflow/internal/process/if-then-else.js +0 -56
  482. package/dataflow/internal/process/loops/for-loop.d.ts +0 -4
  483. package/dataflow/internal/process/loops/for-loop.js +0 -54
  484. package/dataflow/internal/process/loops/repeat-loop.d.ts +0 -4
  485. package/dataflow/internal/process/loops/repeat-loop.js +0 -21
  486. package/dataflow/internal/process/loops/while-loop.d.ts +0 -4
  487. package/dataflow/internal/process/loops/while-loop.js +0 -31
  488. package/dataflow/internal/process/operators/assignment.d.ts +0 -4
  489. package/dataflow/internal/process/operators/assignment.js +0 -129
  490. package/dataflow/internal/process/operators/non-assignment-binary-op.d.ts +0 -4
  491. package/dataflow/internal/process/operators/non-assignment-binary-op.js +0 -25
  492. package/dataflow/internal/process/operators/pipe.d.ts +0 -4
  493. package/dataflow/internal/process/operators/pipe.js +0 -46
  494. package/dataflow/internal/process/operators/unary-op.d.ts +0 -4
  495. package/dataflow/internal/process/operators/unary-op.js +0 -10
  496. package/dataflow/internal/process/symbol.d.ts +0 -4
  497. package/dataflow/internal/process/symbol.js +0 -21
  498. package/dataflow/internal/process/uninteresting-leaf.d.ts +0 -3
  499. package/dataflow/internal/process/uninteresting-leaf.js +0 -9
  500. package/index.d.ts +0 -4
  501. package/index.js +0 -21
  502. package/r-bridge/index.d.ts +0 -11
  503. package/r-bridge/index.js +0 -28
  504. package/r-bridge/lang-4.x/ast/index.d.ts +0 -3
  505. package/r-bridge/lang-4.x/ast/index.js +0 -22
  506. package/r-bridge/lang-4.x/ast/model/index.d.ts +0 -6
  507. package/r-bridge/lang-4.x/ast/model/index.js +0 -23
  508. package/r-bridge/lang-4.x/ast/model/nodes/index.d.ts +0 -21
  509. package/r-bridge/lang-4.x/ast/model/nodes/index.js +0 -38
  510. package/r-bridge/lang-4.x/ast/model/nodes/info/index.d.ts +0 -13
  511. package/r-bridge/lang-4.x/ast/model/nodes/info/index.js +0 -27
  512. package/r-bridge/lang-4.x/ast/model/processing/index.d.ts +0 -5
  513. package/r-bridge/lang-4.x/ast/model/processing/index.js +0 -22
  514. package/r-bridge/lang-4.x/ast/parser/xml/hooks.d.ts +0 -292
  515. package/r-bridge/lang-4.x/ast/parser/xml/hooks.js +0 -136
  516. package/r-bridge/lang-4.x/ast/parser/xml/index.d.ts +0 -3
  517. package/r-bridge/lang-4.x/ast/parser/xml/index.js +0 -20
  518. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.d.ts +0 -2
  519. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.js +0 -19
  520. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.d.ts +0 -10
  521. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.js +0 -65
  522. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.d.ts +0 -1
  523. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.js +0 -18
  524. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/definition.d.ts +0 -12
  525. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.d.ts +0 -2
  526. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.js +0 -20
  527. package/r-bridge/lang-4.x/ast/parser/xml/internal/index.d.ts +0 -9
  528. package/r-bridge/lang-4.x/ast/parser/xml/internal/index.js +0 -26
  529. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/break.d.ts +0 -4
  530. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/for.d.ts +0 -4
  531. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.d.ts +0 -5
  532. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.js +0 -22
  533. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/next.d.ts +0 -4
  534. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/repeat.d.ts +0 -13
  535. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/while.d.ts +0 -4
  536. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.d.ts +0 -3
  537. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.js +0 -20
  538. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.d.ts +0 -6
  539. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.js +0 -24
  540. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.d.ts +0 -13
  541. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.js +0 -59
  542. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/comment.d.ts +0 -11
  543. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.d.ts +0 -1
  544. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.js +0 -18
  545. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/line-directive.d.ts +0 -12
  546. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.d.ts +0 -10
  547. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.js +0 -159
  548. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.d.ts +0 -3
  549. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.js +0 -20
  550. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.d.ts +0 -4
  551. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.js +0 -33
  552. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.d.ts +0 -13
  553. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.js +0 -64
  554. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.d.ts +0 -3
  555. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.js +0 -20
  556. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/number.d.ts +0 -13
  557. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/string.d.ts +0 -11
  558. package/r-bridge/lang-4.x/index.d.ts +0 -2
  559. package/r-bridge/lang-4.x/index.js +0 -19
  560. package/slicing/criterion/filters/index.d.ts +0 -1
  561. package/slicing/criterion/filters/index.js +0 -18
  562. package/slicing/criterion/index.d.ts +0 -3
  563. package/slicing/criterion/index.js +0 -20
  564. package/slicing/index.d.ts +0 -3
  565. package/slicing/index.js +0 -20
  566. package/slicing/static/index.d.ts +0 -1
  567. package/slicing/static/index.js +0 -18
  568. package/util/mermaid/index.d.ts +0 -3
  569. package/util/mermaid/index.js +0 -20
  570. /package/{r-bridge/lang-4.x/ast/parser/xml → benchmark/summarizer}/data.js +0 -0
@@ -0,0 +1,19 @@
1
+ import type { FlowrCapability } from './types';
2
+ import { flowrCapabilities } from './data';
3
+ type CapabilityIdFilter<T extends FlowrCapability, Filter> = T extends Filter ? T['id'] : never;
4
+ /** Recursively extract all valid identifiers (which have the given support predicate) */
5
+ type ExtractAllIds<T extends FlowrCapability, Filter = FlowrCapability> = T extends {
6
+ readonly capabilities: infer U;
7
+ } ? U extends readonly FlowrCapability[] ? (CapabilityIdFilter<T, Filter> | ExtractAllIds<U[number]>) : CapabilityIdFilter<T, Filter> : CapabilityIdFilter<T, Filter>;
8
+ type Capabilities = (typeof flowrCapabilities)['capabilities'][number];
9
+ export type FlowrCapabilityId = ExtractAllIds<Capabilities>;
10
+ export type SupportedFlowrCapabilityId = ExtractAllIds<Capabilities, {
11
+ readonly supported: 'partially' | 'fully';
12
+ }>;
13
+ type PathToCapability = readonly number[];
14
+ export interface FlowrCapabilityWithPath extends FlowrCapability {
15
+ path: PathToCapability;
16
+ }
17
+ export declare function getCapabilityById(id: FlowrCapabilityId): FlowrCapabilityWithPath;
18
+ export declare function getAllCapabilities(): readonly FlowrCapabilityWithPath[];
19
+ export {};
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAllCapabilities = exports.getCapabilityById = void 0;
4
+ const assert_1 = require("../../util/assert");
5
+ const data_1 = require("./data");
6
+ function search(id, capabilities, path = []) {
7
+ let idx = 0;
8
+ for (const capability of capabilities) {
9
+ idx++; // index by one :)
10
+ if (capability.id === id) {
11
+ return { ...capability, path: [...path, idx] };
12
+ }
13
+ if (capability.capabilities) {
14
+ const found = search(id, capability.capabilities, [...path, idx]);
15
+ if (found) {
16
+ return found;
17
+ }
18
+ }
19
+ }
20
+ return undefined;
21
+ }
22
+ const capabilityCache = new Map();
23
+ function getCapabilityById(id) {
24
+ const cached = capabilityCache.get(id);
25
+ if (cached) {
26
+ return cached;
27
+ }
28
+ const value = search(id, data_1.flowrCapabilities.capabilities);
29
+ (0, assert_1.guard)(value !== undefined, () => `Could not find capability with id ${id}`);
30
+ capabilityCache.set(id, value);
31
+ return value;
32
+ }
33
+ exports.getCapabilityById = getCapabilityById;
34
+ function getAllCapabilities() {
35
+ const result = [];
36
+ function traverse(capabilities, currentPath = []) {
37
+ let idx = 0;
38
+ for (const capability of capabilities) {
39
+ idx++;
40
+ const nextPath = [...currentPath, idx];
41
+ result.push({ ...capability, path: nextPath });
42
+ if (capability.capabilities) {
43
+ traverse(capability.capabilities, nextPath);
44
+ }
45
+ }
46
+ }
47
+ traverse(data_1.flowrCapabilities.capabilities, []);
48
+ return result;
49
+ }
50
+ exports.getAllCapabilities = getAllCapabilities;
51
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const data_1 = require("./data");
4
+ const supportedSymbolMap = new Map([
5
+ ['not', ':red_circle:'],
6
+ ['partially', ':large_orange_diamond:'],
7
+ ['fully', ':green_square:']
8
+ ]);
9
+ function printSingleCapability(depth, index, capability) {
10
+ const indent = ' '.repeat(depth);
11
+ const indexStr = index.toString().padStart(2, ' ');
12
+ const nextLineIndent = ' '.repeat(depth + indexStr.length);
13
+ const mainLine = `${indent}${indexStr}. **${capability.name}** (<a id='${capability.id}'>\`${capability.id}\`</a>)`;
14
+ let nextLine = '';
15
+ if (capability.supported) {
16
+ nextLine += `${supportedSymbolMap.get(capability.supported)} `;
17
+ }
18
+ if (capability.description) {
19
+ nextLine += capability.description;
20
+ }
21
+ if (capability.note) {
22
+ nextLine += `\\\n${nextLineIndent}_${capability.note}_`;
23
+ }
24
+ return nextLine ? `${mainLine}\\\n${nextLineIndent}${nextLine}` : mainLine;
25
+ }
26
+ function printAsMarkdown(capabilities, depth = 0, lines = []) {
27
+ for (let i = 0; i < capabilities.length; i++) {
28
+ const capability = capabilities[i];
29
+ const result = printSingleCapability(depth, i + 1, capability);
30
+ lines.push(result);
31
+ if (capability.capabilities) {
32
+ printAsMarkdown(capability.capabilities, depth + 1, lines);
33
+ }
34
+ }
35
+ return lines.join('\n');
36
+ }
37
+ function getPreamble() {
38
+ const currentDateAndTime = new Date().toISOString().replace('T', ', ').replace(/\.\d+Z$/, ' UTC');
39
+ return `_This document was generated automatically from '${module.filename}' on ${currentDateAndTime} summarizig flowR's current capabilities_
40
+
41
+ The code-font behind each capability name is a link to the capability's id. This id can be used to reference the capability in a labeled test within flowR.
42
+ Besides, we use colored bullets like this:
43
+
44
+ | <!-- --> | <!-- --> |
45
+ | ---------------------- | ----------------------------------------------------- |
46
+ | :green_square: | _flowR_ is capable of handling this feature fully |
47
+ | :large_orange_diamond: | _flowR_ is capable of handling this feature partially |
48
+ | :red_circle: | _flowR_ is not capable of handling this feature |
49
+
50
+ :cloud: This could be a feature diagram... :cloud:
51
+
52
+ `;
53
+ }
54
+ /** if we run this script, we want a markdown representation of the capabilities */
55
+ if (require.main === module) {
56
+ console.log(getPreamble() + printAsMarkdown(data_1.flowrCapabilities.capabilities));
57
+ }
58
+ //# sourceMappingURL=print.js.map
@@ -0,0 +1,33 @@
1
+ declare const enum RequiredFeature {
2
+ /** https://github.com/Code-Inspect/flowr/labels/typing */
3
+ Typing = 0,
4
+ /** https://github.com/Code-Inspect/flowr/labels/abstract%20interpretation */
5
+ AbstractInterpretation = 1
6
+ }
7
+ export interface FlowrCapability {
8
+ /** The human-readable name of the capability */
9
+ readonly name: string;
10
+ /**
11
+ * The unique identifier of the capability, used to refer to it independent of the location.
12
+ * We could use a key-value mapping. However, this way, an id is self-contained and can be moved around as one object.
13
+ */
14
+ readonly id: string;
15
+ /** A list of features that are required for the capability, extend at need. */
16
+ readonly needs?: RequiredFeature[];
17
+ readonly description?: string;
18
+ readonly note?: string;
19
+ /** The level of support for the capability, undefined if it is a meta-capability that does not need such an attribute */
20
+ readonly supported?: 'not' | 'partially' | 'fully';
21
+ readonly capabilities?: readonly FlowrCapability[];
22
+ }
23
+ export interface FlowrCapabilities {
24
+ /** The human-readable name of the capabilities */
25
+ readonly name: string;
26
+ /** A description of the capabilities */
27
+ readonly description: string;
28
+ /** The version of the capabilities */
29
+ readonly version: string;
30
+ /** A list of the capabilities */
31
+ readonly capabilities: readonly FlowrCapability[];
32
+ }
33
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,3 @@
1
+ export declare const ErrorMarker = "err";
2
+ /** Command(s) to be issued at the start of each shell */
3
+ export declare function initCommand(eol: string): string;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initCommand = exports.ErrorMarker = void 0;
4
+ const convert_values_1 = require("./lang-4.x/convert-values");
5
+ exports.ErrorMarker = 'err';
6
+ /** Command(s) to be issued at the start of each shell */
7
+ function initCommand(eol) {
8
+ /* define the get function complete wrapped in a try so that we can handle failures gracefully on stdout
9
+ * furthermore, we compile for performance reasons
10
+ */
11
+ return 'flowr_get_ast<-compiler::cmpfun(function(...){tryCatch({'
12
+ /* the actual code to parse the R code, ... allows us to keep the old 'file=path' and 'text=content' semantics. we define flowr_output using the super assignment to persist it in the env! */
13
+ + 'flowr_output<<-getParseData(parse(...,keep.source=TRUE),includeText=TRUE);'
14
+ /* json conversion of the output, dataframe="values" allows us to receive a list of lists (which is more compact)!
15
+ * so we do not depend on jsonlite and friends, we do so manually (:sparkles:)
16
+ */
17
+ + 'cat(paste0(sprintf("[%s,%s,%s,%s,%s,%s,%s,%s,%s]",flowr_output$line1,flowr_output$col1,flowr_output$line2,flowr_output$col2,flowr_output$id,flowr_output$parent,encodeString(flowr_output$token,quote="\\""),ifelse(flowr_output$terminal,"true","false"),encodeString(flowr_output$text,quote="\\"")),collapse=","))'
18
+ /* error handling (just produce the marker) */
19
+ + `},error=function(e){cat("${exports.ErrorMarker}")});cat(${(0, convert_values_1.ts2r)(eol)})},options=compiler::setCompilerOptions(optimize=3));`;
20
+ }
21
+ exports.initCommand = initCommand;
22
+ //# sourceMappingURL=init.js.map
@@ -1,5 +1,6 @@
1
- import type { NodeId, ParentInformation } from './processing';
2
1
  import type { RNode } from './model';
2
+ import type { NodeId } from './processing/node-id';
3
+ import type { ParentInformation } from './processing/decorate';
3
4
  /**
4
5
  * Collects all node ids within a tree given by a respective root node
5
6
  *
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.collectAllIds = void 0;
4
- const processing_1 = require("./processing");
4
+ const visitor_1 = require("./processing/visitor");
5
5
  /**
6
6
  * Collects all node ids within a tree given by a respective root node
7
7
  *
@@ -10,7 +10,7 @@ const processing_1 = require("./processing");
10
10
  */
11
11
  function collectAllIds(nodes, stop = () => false) {
12
12
  const ids = new Set();
13
- (0, processing_1.visitAst)(nodes, (node) => {
13
+ (0, visitor_1.visitAst)(nodes, (node) => {
14
14
  if (stop(node)) {
15
15
  return true;
16
16
  }
@@ -1,9 +1,29 @@
1
1
  import type { SourceRange } from '../../../../util/range';
2
2
  import type { RType } from './type';
3
3
  import type { MergeableRecord } from '../../../../util/objects';
4
- import type { RNa, RNull } from '../../values';
5
- import type { RExpressionList, RNumber, RSymbol, RLogical, RString, RBinaryOp, RUnaryOp, RIfThenElse, RParameter, RFunctionDefinition, RRepeatLoop, RForLoop, RWhileLoop, RComment, RFunctionCall, RBreak, RNext, RArgument, RNamedAccess, RIndexAccess, RLineDirective, RPipe } from './nodes';
6
- import type { OtherInfoNode } from './nodes/info';
4
+ import type { RNa, RNull } from '../../convert-values';
5
+ import type { RNumber } from './nodes/r-number';
6
+ import type { RString } from './nodes/r-string';
7
+ import type { RLogical } from './nodes/r-logical';
8
+ import type { RSymbol } from './nodes/r-symbol';
9
+ import type { RComment } from './nodes/r-comment';
10
+ import type { RBreak } from './nodes/r-break';
11
+ import type { RNext } from './nodes/r-next';
12
+ import type { RLineDirective } from './nodes/r-line-directive';
13
+ import type { RForLoop } from './nodes/r-for-loop';
14
+ import type { RRepeatLoop } from './nodes/r-repeat-loop';
15
+ import type { RWhileLoop } from './nodes/r-while-loop';
16
+ import type { RIfThenElse } from './nodes/r-if-then-else';
17
+ import type { RFunctionDefinition } from './nodes/r-function-definition';
18
+ import type { RFunctionCall } from './nodes/r-function-call';
19
+ import type { RParameter } from './nodes/r-parameter';
20
+ import type { RArgument } from './nodes/r-argument';
21
+ import type { RExpressionList } from './nodes/r-expression-list';
22
+ import type { RIndexAccess, RNamedAccess } from './nodes/r-access';
23
+ import type { RUnaryOp } from './nodes/r-unary-op';
24
+ import type { RBinaryOp } from './nodes/r-binary-op';
25
+ import type { RPipe } from './nodes/r-pipe';
26
+ import type { RDelimiter } from './nodes/info/r-delimiter';
7
27
  /** Simply an empty interface used to say that there are additional decorations (see {@link Base}). */
8
28
  export interface NoInfo {
9
29
  }
@@ -31,7 +51,7 @@ interface Source {
31
51
  additionalTokens?: OtherInfoNode[];
32
52
  }
33
53
  /**
34
- * Provides the common base of all {@link RNode | RNodes}.
54
+ * Provides the common base of all {@link RNode|RNodes}.
35
55
  *
36
56
  * @typeParam Info - can be used to store additional information about the node
37
57
  * @typeParam LexemeType - the type of the lexeme, probably always a `string` or `string | undefined`
@@ -44,7 +64,7 @@ export interface Base<Info, LexemeType = string> extends MergeableRecord {
44
64
  info: Info & Source;
45
65
  }
46
66
  export interface WithChildren<Info, Children extends Base<Info, string | undefined>> {
47
- children: Children[];
67
+ children: readonly Children[];
48
68
  }
49
69
  /**
50
70
  * A helper interface we use to "mark" leaf nodes.
@@ -124,4 +144,5 @@ export type ROther<Info> = RComment<Info> | RLineDirective<Info>;
124
144
  * exclusive, some nodes can appear in multiple subtypes.
125
145
  */
126
146
  export type RNode<Info = NoInfo> = RExpressionList<Info> | RFunctions<Info> | ROther<Info> | RConstructs<Info> | RNamedAccess<Info> | RIndexAccess<Info> | RUnaryOp<Info> | RBinaryOp<Info> | RSingleNode<Info> | RPipe<Info>;
147
+ export type OtherInfoNode = RNode | RDelimiter;
127
148
  export {};
@@ -1,6 +1,7 @@
1
1
  import type { Base, Location, NoInfo, RNode } from '../model';
2
2
  import type { RType } from '../type';
3
- import type { RArgument } from './r-argument';
3
+ import type { RArgument, RUnnamedArgument } from './r-argument';
4
+ import type { EmptyArgument } from './r-function-call';
4
5
  /**
5
6
  * Represents an R Indexing operation with `$`, `@`, `[[`, or `[`.
6
7
  */
@@ -12,13 +13,13 @@ interface RAccessBase<Info = NoInfo> extends Base<Info>, Location {
12
13
  }
13
14
  export interface RNamedAccess<Info = NoInfo> extends RAccessBase<Info> {
14
15
  operator: '$' | '@';
15
- access: string;
16
+ access: [RUnnamedArgument<Info>];
16
17
  }
17
18
  /** access can be a number, a variable or an expression that resolves to one, a filter etc. */
18
19
  export interface RIndexAccess<Info = NoInfo> extends RAccessBase<Info> {
19
20
  operator: '[' | '[[';
20
21
  /** is null if the access is empty, e.g. `a[,3]` */
21
- access: (RArgument<Info> | null)[];
22
+ access: readonly (RArgument<Info> | typeof EmptyArgument)[];
22
23
  }
23
24
  export type RAccess<Info = NoInfo> = RNamedAccess<Info> | RIndexAccess<Info>;
24
25
  export {};
@@ -9,3 +9,7 @@ export interface RArgument<Info = NoInfo> extends Base<Info>, Location {
9
9
  name: RSymbol<Info> | undefined;
10
10
  value: RNode<Info> | undefined;
11
11
  }
12
+ export interface RUnnamedArgument<Info = NoInfo> extends RArgument<Info> {
13
+ name: undefined;
14
+ value: RNode<Info>;
15
+ }
@@ -1,25 +1,8 @@
1
1
  import type { Base, Location, NoInfo, RNode } from '../model';
2
2
  import type { RType } from '../type';
3
- import type { BinaryOperatorFlavor } from '../operators';
4
3
  export interface RBinaryOp<Info = NoInfo> extends Base<Info>, Location {
5
4
  readonly type: RType.BinaryOp;
6
- readonly flavor: BinaryOperatorFlavor;
7
5
  operator: string;
8
6
  lhs: RNode<Info>;
9
7
  rhs: RNode<Info>;
10
8
  }
11
- export interface RLogicalBinaryOp<Info = NoInfo> extends RBinaryOp<Info> {
12
- flavor: 'logical';
13
- }
14
- export interface RArithmeticBinaryOp<Info = NoInfo> extends RBinaryOp<Info> {
15
- flavor: 'arithmetic';
16
- }
17
- export interface RComparisonBinaryOp<Info = NoInfo> extends RBinaryOp<Info> {
18
- flavor: 'comparison';
19
- }
20
- export interface RAssignmentOp<Info = NoInfo> extends RBinaryOp<Info> {
21
- flavor: 'assignment';
22
- }
23
- export interface RModelFormulaBinaryOp<Info = NoInfo> extends RBinaryOp<Info> {
24
- flavor: 'model formula';
25
- }
@@ -1,6 +1,8 @@
1
1
  import type { Base, Location, NoInfo, RNode, WithChildren } from '../model';
2
2
  import type { RType } from '../type';
3
+ import type { RSymbol } from './r-symbol';
3
4
  export interface RExpressionList<Info = NoInfo> extends WithChildren<Info, RNode<Info>>, Base<Info, string | undefined>, Partial<Location> {
4
5
  readonly type: RType.ExpressionList;
5
- readonly content?: string;
6
+ /** encodes wrappers like `{}` or `()` */
7
+ readonly grouping: undefined | [start: RSymbol<Info>, end: RSymbol<Info>];
6
8
  }
@@ -2,6 +2,8 @@ import type { Base, Location, NoInfo, RNode } from '../model';
2
2
  import type { RType } from '../type';
3
3
  import type { RSymbol } from './r-symbol';
4
4
  import type { RArgument } from './r-argument';
5
+ export declare const EmptyArgument = "<>";
6
+ export type RFunctionArgument<Info = NoInfo> = RArgument<Info> | typeof EmptyArgument;
5
7
  /**
6
8
  * Calls of functions like `a()` and `foo(42, "hello")`.
7
9
  *
@@ -11,8 +13,8 @@ export interface RNamedFunctionCall<Info = NoInfo> extends Base<Info>, Location
11
13
  readonly type: RType.FunctionCall;
12
14
  readonly flavor: 'named';
13
15
  functionName: RSymbol<Info>;
14
- /** arguments can be undefined, for example when calling as `a(1, ,3)` */
15
- arguments: (RArgument<Info> | undefined)[];
16
+ /** arguments can be empty, for example when calling as `a(1, ,3)` */
17
+ readonly arguments: readonly RFunctionArgument<Info>[];
16
18
  }
17
19
  /**
18
20
  * Direct calls of functions like `(function(x) { x })(3)`.
@@ -23,9 +25,9 @@ export interface RUnnamedFunctionCall<Info = NoInfo> extends Base<Info>, Locatio
23
25
  readonly type: RType.FunctionCall;
24
26
  readonly flavor: 'unnamed';
25
27
  calledFunction: RNode<Info>;
26
- /** marks function calls like `3 %xx% 4` which have been written in special infix notation */
28
+ /** marks function calls like `3 %xx% 4` which have been written in special infix notation; deprecated in v2 */
27
29
  infixSpecial?: boolean;
28
30
  /** arguments can be undefined, for example when calling as `a(1, ,3)` */
29
- arguments: (RArgument<Info> | undefined)[];
31
+ readonly arguments: readonly RFunctionArgument<Info>[];
30
32
  }
31
33
  export type RFunctionCall<Info = NoInfo> = RNamedFunctionCall<Info> | RUnnamedFunctionCall<Info>;
@@ -1,3 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EmptyArgument = void 0;
4
+ exports.EmptyArgument = '<>';
3
5
  //# sourceMappingURL=r-function-call.js.map
@@ -1,10 +1,9 @@
1
- import type { Base, Location, NoInfo } from '../model';
1
+ import type { Base, Location, NoInfo, RNode } from '../model';
2
2
  import type { RType } from '../type';
3
3
  import type { RParameter } from './r-parameter';
4
- import type { RExpressionList } from './r-expression-list';
5
4
  export interface RFunctionDefinition<Info = NoInfo> extends Base<Info>, Location {
6
5
  readonly type: RType.FunctionDefinition;
7
6
  /** the R formals, to our knowledge they must be unique */
8
7
  parameters: RParameter<Info>[];
9
- body: RExpressionList<Info>;
8
+ body: RNode<Info>;
10
9
  }
@@ -1,6 +1,6 @@
1
1
  import type { Leaf, Location, NoInfo } from '../model';
2
2
  import type { RType } from '../type';
3
- import type { RNumberValue } from '../../../values';
3
+ import type { RNumberValue } from '../../../convert-values';
4
4
  /** includes numeric, integer, and complex */
5
5
  export interface RNumber<Info = NoInfo> extends Leaf<Info>, Location {
6
6
  readonly type: RType.Number;
@@ -1,6 +1,6 @@
1
1
  import type { Leaf, Location, NoInfo } from '../model';
2
2
  import type { RType } from '../type';
3
- import type { RStringValue } from '../../../values';
3
+ import type { RStringValue } from '../../../convert-values';
4
4
  export interface RString<Info = NoInfo> extends Leaf<Info>, Location {
5
5
  readonly type: RType.String;
6
6
  content: RStringValue;
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isSpecialSymbol = void 0;
4
- const values_1 = require("../../../values");
4
+ const convert_values_1 = require("../../../convert-values");
5
5
  function isSpecialSymbol(symbol) {
6
- return symbol.content === values_1.RNull || symbol.content === values_1.RNa;
6
+ return symbol.content === convert_values_1.RNull || symbol.content === convert_values_1.RNa;
7
7
  }
8
8
  exports.isSpecialSymbol = isSpecialSymbol;
9
9
  //# sourceMappingURL=r-symbol.js.map
@@ -1,18 +1,7 @@
1
1
  import type { Base, Location, NoInfo, RNode } from '../model';
2
2
  import type { RType } from '../type';
3
- import type { UnaryOperatorFlavor } from '../operators';
4
3
  export interface RUnaryOp<Info = NoInfo> extends Base<Info>, Location {
5
4
  readonly type: RType.UnaryOp;
6
- readonly flavor: UnaryOperatorFlavor;
7
5
  operator: string;
8
6
  operand: RNode<Info>;
9
7
  }
10
- export interface RLogicalUnaryOp<Info = NoInfo> extends RUnaryOp<Info> {
11
- flavor: 'logical';
12
- }
13
- export interface RArithmeticUnaryOp<Info = NoInfo> extends RUnaryOp<Info> {
14
- flavor: 'arithmetic';
15
- }
16
- export interface RModelFormulaUnaryOp<Info = NoInfo> extends RUnaryOp<Info> {
17
- flavor: 'model formula';
18
- }
@@ -1,5 +1,6 @@
1
1
  import type { MergeableRecord } from '../../../../util/objects';
2
2
  import { RawRType } from './type';
3
+ import type { SupportedFlowrCapabilityId } from '../../../data/get';
3
4
  /**
4
5
  * Just a type-alias so that type declarations become more readable.
5
6
  *
@@ -14,33 +15,20 @@ export declare const enum OperatorArity {
14
15
  Binary = 2,
15
16
  Both = 3
16
17
  }
17
- export type UnaryOperatorFlavor = 'arithmetic' | 'logical' | 'model formula';
18
- export type BinaryOperatorFlavor = UnaryOperatorFlavor | 'comparison' | 'assignment';
19
- export type BinaryOperatorFlavorInAst = BinaryOperatorFlavor | 'special';
20
18
  export type OperatorWrittenAs = 'infix' | 'prefix';
21
19
  export type OperatorUsedAs = 'assignment' | 'operation' | 'access';
22
- export type OperatorName = string;
23
20
  export interface OperatorInformationValue extends MergeableRecord {
24
- name: OperatorName;
21
+ name: string;
25
22
  stringUsedInRAst: RawRType | `%${string}%`;
26
23
  stringUsedInternally: string;
27
- flavorInRAst: BinaryOperatorFlavorInAst;
28
- flavor: BinaryOperatorFlavor;
29
24
  writtenAs: OperatorWrittenAs;
30
25
  arity: OperatorArity;
31
26
  usedAs: OperatorUsedAs;
27
+ /** The capabilities this operator maps to using the new desugaring */
28
+ capabilities: readonly SupportedFlowrCapabilityId[];
32
29
  }
33
30
  export declare const OperatorDatabase: Record<StringUsedInRCode, OperatorInformationValue> & MergeableRecord;
34
- export declare const ArithmeticOperators: readonly string[];
35
- export declare const ArithmeticOperatorsRAst: Set<string>;
36
- export declare const ComparisonOperators: readonly string[];
37
- export declare const ComparisonOperatorsRAst: Set<string>;
38
- export declare const LogicalOperators: readonly string[];
39
- export declare const LogicalOperatorsRAst: Set<string>;
40
- export declare const ModelFormulaOperators: readonly string[];
41
- export declare const ModelFormulaOperatorsRAst: Set<string>;
42
- export declare const Assignments: readonly string[];
43
- export declare const AssignmentsRAst: Set<string>;
44
31
  export declare const Operators: readonly string[];
45
- export type Operator = (typeof Operators)[number];
32
+ export declare const OperatorsInRAst: Set<string>;
33
+ export declare const UnaryOperatorsInRAst: Set<string>;
46
34
  export {};