@eagleoutice/flowr 1.4.1 → 1.5.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 (300) hide show
  1. package/README.md +3 -3
  2. package/abstract-interpretation/processor.js +9 -3
  3. package/config.d.ts +16 -0
  4. package/config.js +75 -0
  5. package/core/input.d.ts +1 -1
  6. package/core/output.d.ts +1 -2
  7. package/core/print/parse-printer.d.ts +1 -2
  8. package/core/print/parse-printer.js +6 -4
  9. package/core/print/slice-diff-ansi.js +7 -7
  10. package/core/slicer.js +4 -8
  11. package/core/steps.d.ts +355 -31
  12. package/core/steps.js +7 -14
  13. package/dataflow/environments/environment.js +8 -0
  14. package/dataflow/environments/register.js +1 -0
  15. package/dataflow/extractor.d.ts +2 -2
  16. package/dataflow/extractor.js +10 -2
  17. package/dataflow/internal/process/functions/function-call.js +7 -1
  18. package/dataflow/internal/process/functions/source.d.ts +8 -0
  19. package/dataflow/internal/process/functions/source.js +81 -0
  20. package/dataflow/processor.d.ts +10 -1
  21. package/index.d.ts +0 -2
  22. package/index.js +0 -2
  23. package/package.json +75 -202
  24. package/r-bridge/lang-4.x/ast/index.d.ts +1 -0
  25. package/r-bridge/lang-4.x/ast/index.js +3 -0
  26. package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +2 -0
  27. package/r-bridge/lang-4.x/ast/model/processing/decorate.js +6 -1
  28. package/r-bridge/lang-4.x/ast/parser/json/format.d.ts +14 -0
  29. package/r-bridge/lang-4.x/ast/parser/json/format.js +26 -0
  30. package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +7 -0
  31. package/r-bridge/lang-4.x/ast/parser/json/parser.js +57 -0
  32. package/r-bridge/lang-4.x/ast/parser/xml/data.d.ts +0 -3
  33. package/r-bridge/lang-4.x/ast/parser/xml/index.d.ts +0 -2
  34. package/r-bridge/lang-4.x/ast/parser/xml/index.js +0 -2
  35. package/r-bridge/lang-4.x/ast/parser/xml/input-format.d.ts +5 -1
  36. package/r-bridge/lang-4.x/ast/parser/xml/input-format.js +7 -10
  37. package/r-bridge/lang-4.x/ast/parser/xml/internal/access.js +2 -2
  38. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then-else.js +1 -1
  39. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then.js +2 -2
  40. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.js +4 -4
  41. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/argument.js +2 -2
  42. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/call.js +4 -4
  43. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/definition.js +2 -2
  44. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/parameter.js +2 -2
  45. package/r-bridge/lang-4.x/ast/parser/xml/internal/index.d.ts +0 -1
  46. package/r-bridge/lang-4.x/ast/parser/xml/internal/index.js +0 -1
  47. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/break.js +2 -2
  48. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/for.js +3 -6
  49. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/next.js +2 -2
  50. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/repeat.js +2 -2
  51. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/while.js +2 -2
  52. package/r-bridge/lang-4.x/ast/parser/xml/internal/meta.d.ts +6 -11
  53. package/r-bridge/lang-4.x/ast/parser/xml/internal/meta.js +15 -23
  54. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/binary.js +6 -6
  55. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.js +3 -3
  56. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/comment.js +2 -2
  57. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/line-directive.js +2 -2
  58. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.js +3 -3
  59. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.js +3 -4
  60. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.js +2 -2
  61. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/number.js +2 -2
  62. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/string.js +2 -2
  63. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/symbol.js +4 -4
  64. package/r-bridge/lang-4.x/values.d.ts +0 -1
  65. package/r-bridge/lang-4.x/values.js +14 -6
  66. package/r-bridge/retriever.d.ts +25 -21
  67. package/r-bridge/retriever.js +73 -23
  68. package/r-bridge/shell-executor.d.ts +3 -17
  69. package/r-bridge/shell-executor.js +9 -78
  70. package/r-bridge/shell.d.ts +5 -27
  71. package/r-bridge/shell.js +31 -92
  72. package/{statistics/output → util}/ansi.js +1 -1
  73. package/util/args.d.ts +8 -4
  74. package/util/args.js +11 -4
  75. package/util/cfg/visitor.js +1 -1
  76. package/util/files.d.ts +6 -0
  77. package/util/files.js +11 -1
  78. package/util/log.js +3 -0
  79. package/util/{summarizer/summarizer.d.ts → summarizer.d.ts} +15 -1
  80. package/util/summarizer.js +37 -0
  81. package/util/version.d.ts +2 -0
  82. package/util/version.js +10 -0
  83. package/benchmark/index.d.ts +0 -3
  84. package/benchmark/index.js +0 -20
  85. package/benchmark/slicer.d.ts +0 -101
  86. package/benchmark/slicer.js +0 -225
  87. package/benchmark/stats/index.d.ts +0 -10
  88. package/benchmark/stats/index.js +0 -27
  89. package/benchmark/stats/print.d.ts +0 -7
  90. package/benchmark/stats/print.js +0 -157
  91. package/benchmark/stats/stats.d.ts +0 -41
  92. package/benchmark/stats/stats.js +0 -6
  93. package/benchmark/stopwatch.d.ts +0 -35
  94. package/benchmark/stopwatch.js +0 -79
  95. package/cli/benchmark-app.d.ts +0 -9
  96. package/cli/benchmark-app.js +0 -52
  97. package/cli/benchmark-helper-app.d.ts +0 -7
  98. package/cli/benchmark-helper-app.js +0 -60
  99. package/cli/common/features.d.ts +0 -3
  100. package/cli/common/features.js +0 -30
  101. package/cli/common/index.d.ts +0 -2
  102. package/cli/common/index.js +0 -19
  103. package/cli/common/options.d.ts +0 -20
  104. package/cli/common/options.js +0 -82
  105. package/cli/common/script.d.ts +0 -21
  106. package/cli/common/script.js +0 -61
  107. package/cli/common/scripts-info.d.ts +0 -24
  108. package/cli/common/scripts-info.js +0 -69
  109. package/cli/export-quads-app.d.ts +0 -7
  110. package/cli/export-quads-app.js +0 -46
  111. package/cli/repl/commands/cfg.d.ts +0 -3
  112. package/cli/repl/commands/cfg.js +0 -37
  113. package/cli/repl/commands/commands.d.ts +0 -11
  114. package/cli/repl/commands/commands.js +0 -103
  115. package/cli/repl/commands/dataflow.d.ts +0 -3
  116. package/cli/repl/commands/dataflow.js +0 -34
  117. package/cli/repl/commands/execute.d.ts +0 -4
  118. package/cli/repl/commands/execute.js +0 -27
  119. package/cli/repl/commands/index.d.ts +0 -2
  120. package/cli/repl/commands/index.js +0 -19
  121. package/cli/repl/commands/main.d.ts +0 -39
  122. package/cli/repl/commands/main.js +0 -14
  123. package/cli/repl/commands/normalize.d.ts +0 -3
  124. package/cli/repl/commands/normalize.js +0 -34
  125. package/cli/repl/commands/parse.d.ts +0 -2
  126. package/cli/repl/commands/parse.js +0 -109
  127. package/cli/repl/commands/quit.d.ts +0 -2
  128. package/cli/repl/commands/quit.js +0 -12
  129. package/cli/repl/commands/version.d.ts +0 -16
  130. package/cli/repl/commands/version.js +0 -33
  131. package/cli/repl/core.d.ts +0 -39
  132. package/cli/repl/core.js +0 -116
  133. package/cli/repl/execute.d.ts +0 -28
  134. package/cli/repl/execute.js +0 -79
  135. package/cli/repl/index.d.ts +0 -5
  136. package/cli/repl/index.js +0 -22
  137. package/cli/repl/prompt.d.ts +0 -2
  138. package/cli/repl/prompt.js +0 -9
  139. package/cli/repl/server/connection.d.ts +0 -21
  140. package/cli/repl/server/connection.js +0 -218
  141. package/cli/repl/server/messages/analysis.d.ts +0 -71
  142. package/cli/repl/server/messages/analysis.js +0 -21
  143. package/cli/repl/server/messages/error.d.ts +0 -11
  144. package/cli/repl/server/messages/error.js +0 -3
  145. package/cli/repl/server/messages/hello.d.ts +0 -20
  146. package/cli/repl/server/messages/hello.js +0 -3
  147. package/cli/repl/server/messages/index.d.ts +0 -1
  148. package/cli/repl/server/messages/index.js +0 -3
  149. package/cli/repl/server/messages/messages.d.ts +0 -35
  150. package/cli/repl/server/messages/messages.js +0 -40
  151. package/cli/repl/server/messages/repl.d.ts +0 -33
  152. package/cli/repl/server/messages/repl.js +0 -37
  153. package/cli/repl/server/messages/slice.d.ts +0 -25
  154. package/cli/repl/server/messages/slice.js +0 -37
  155. package/cli/repl/server/net.d.ts +0 -49
  156. package/cli/repl/server/net.js +0 -63
  157. package/cli/repl/server/send.d.ts +0 -4
  158. package/cli/repl/server/send.js +0 -18
  159. package/cli/repl/server/server.d.ts +0 -20
  160. package/cli/repl/server/server.js +0 -66
  161. package/cli/repl/server/validate.d.ts +0 -15
  162. package/cli/repl/server/validate.js +0 -34
  163. package/cli/slicer-app.d.ts +0 -11
  164. package/cli/slicer-app.js +0 -81
  165. package/cli/statistics-app.d.ts +0 -11
  166. package/cli/statistics-app.js +0 -98
  167. package/cli/statistics-helper-app.d.ts +0 -11
  168. package/cli/statistics-helper-app.js +0 -83
  169. package/cli/summarizer-app.d.ts +0 -18
  170. package/cli/summarizer-app.js +0 -67
  171. package/flowr.d.ts +0 -27
  172. package/flowr.js +0 -137
  173. package/r-bridge/lang-4.x/ast/parser/xml/config.d.ts +0 -25
  174. package/r-bridge/lang-4.x/ast/parser/xml/config.js +0 -16
  175. package/r-bridge/lang-4.x/ast/parser/xml/internal/xml-to-json.d.ts +0 -9
  176. package/r-bridge/lang-4.x/ast/parser/xml/internal/xml-to-json.js +0 -51
  177. package/r-bridge/lang-4.x/ast/parser/xml/parser.d.ts +0 -17
  178. package/r-bridge/lang-4.x/ast/parser/xml/parser.js +0 -30
  179. package/statistics/features/common-syntax-probability.d.ts +0 -31
  180. package/statistics/features/common-syntax-probability.js +0 -156
  181. package/statistics/features/feature.d.ts +0 -175
  182. package/statistics/features/feature.js +0 -30
  183. package/statistics/features/index.d.ts +0 -1
  184. package/statistics/features/index.js +0 -18
  185. package/statistics/features/post-processing.d.ts +0 -12
  186. package/statistics/features/post-processing.js +0 -21
  187. package/statistics/features/supported/assignments/assignments.d.ts +0 -11
  188. package/statistics/features/supported/assignments/assignments.js +0 -53
  189. package/statistics/features/supported/assignments/index.d.ts +0 -1
  190. package/statistics/features/supported/assignments/index.js +0 -6
  191. package/statistics/features/supported/assignments/post-process.d.ts +0 -3
  192. package/statistics/features/supported/assignments/post-process.js +0 -125
  193. package/statistics/features/supported/comments/comments.d.ts +0 -18
  194. package/statistics/features/supported/comments/comments.js +0 -133
  195. package/statistics/features/supported/comments/index.d.ts +0 -1
  196. package/statistics/features/supported/comments/index.js +0 -6
  197. package/statistics/features/supported/comments/post-process.d.ts +0 -3
  198. package/statistics/features/supported/comments/post-process.js +0 -50
  199. package/statistics/features/supported/control-flow/control-flow.d.ts +0 -17
  200. package/statistics/features/supported/control-flow/control-flow.js +0 -67
  201. package/statistics/features/supported/control-flow/index.d.ts +0 -1
  202. package/statistics/features/supported/control-flow/index.js +0 -6
  203. package/statistics/features/supported/control-flow/post-process.d.ts +0 -3
  204. package/statistics/features/supported/control-flow/post-process.js +0 -65
  205. package/statistics/features/supported/data-access/data-access.d.ts +0 -15
  206. package/statistics/features/supported/data-access/data-access.js +0 -118
  207. package/statistics/features/supported/data-access/index.d.ts +0 -1
  208. package/statistics/features/supported/data-access/index.js +0 -6
  209. package/statistics/features/supported/data-access/post-process.d.ts +0 -3
  210. package/statistics/features/supported/data-access/post-process.js +0 -107
  211. package/statistics/features/supported/defined-functions/defined-functions.d.ts +0 -35
  212. package/statistics/features/supported/defined-functions/defined-functions.js +0 -139
  213. package/statistics/features/supported/defined-functions/index.d.ts +0 -1
  214. package/statistics/features/supported/defined-functions/index.js +0 -6
  215. package/statistics/features/supported/defined-functions/post-process.d.ts +0 -6
  216. package/statistics/features/supported/defined-functions/post-process.js +0 -177
  217. package/statistics/features/supported/expression-list/expression-list.d.ts +0 -9
  218. package/statistics/features/supported/expression-list/expression-list.js +0 -36
  219. package/statistics/features/supported/expression-list/index.d.ts +0 -1
  220. package/statistics/features/supported/expression-list/index.js +0 -6
  221. package/statistics/features/supported/expression-list/post-process.d.ts +0 -3
  222. package/statistics/features/supported/expression-list/post-process.js +0 -44
  223. package/statistics/features/supported/index.d.ts +0 -10
  224. package/statistics/features/supported/index.js +0 -27
  225. package/statistics/features/supported/loops/index.d.ts +0 -1
  226. package/statistics/features/supported/loops/index.js +0 -6
  227. package/statistics/features/supported/loops/loops.d.ts +0 -20
  228. package/statistics/features/supported/loops/loops.js +0 -79
  229. package/statistics/features/supported/loops/post-process.d.ts +0 -3
  230. package/statistics/features/supported/loops/post-process.js +0 -72
  231. package/statistics/features/supported/used-functions/index.d.ts +0 -1
  232. package/statistics/features/supported/used-functions/index.js +0 -6
  233. package/statistics/features/supported/used-functions/post-process.d.ts +0 -6
  234. package/statistics/features/supported/used-functions/post-process.js +0 -179
  235. package/statistics/features/supported/used-functions/used-functions.d.ts +0 -24
  236. package/statistics/features/supported/used-functions/used-functions.js +0 -95
  237. package/statistics/features/supported/used-packages/index.d.ts +0 -1
  238. package/statistics/features/supported/used-packages/index.js +0 -6
  239. package/statistics/features/supported/used-packages/post-process.d.ts +0 -3
  240. package/statistics/features/supported/used-packages/post-process.js +0 -121
  241. package/statistics/features/supported/used-packages/used-packages.d.ts +0 -16
  242. package/statistics/features/supported/used-packages/used-packages.js +0 -130
  243. package/statistics/features/supported/values/index.d.ts +0 -1
  244. package/statistics/features/supported/values/index.js +0 -6
  245. package/statistics/features/supported/values/post-process.d.ts +0 -3
  246. package/statistics/features/supported/values/post-process.js +0 -72
  247. package/statistics/features/supported/values/values.d.ts +0 -14
  248. package/statistics/features/supported/values/values.js +0 -101
  249. package/statistics/features/supported/variables/index.d.ts +0 -1
  250. package/statistics/features/supported/variables/index.js +0 -6
  251. package/statistics/features/supported/variables/post-process.d.ts +0 -9
  252. package/statistics/features/supported/variables/post-process.js +0 -122
  253. package/statistics/features/supported/variables/variables.d.ts +0 -15
  254. package/statistics/features/supported/variables/variables.js +0 -70
  255. package/statistics/index.d.ts +0 -6
  256. package/statistics/index.js +0 -24
  257. package/statistics/meta-statistics.d.ts +0 -33
  258. package/statistics/meta-statistics.js +0 -17
  259. package/statistics/output/file-provider.d.ts +0 -37
  260. package/statistics/output/file-provider.js +0 -97
  261. package/statistics/output/index.d.ts +0 -4
  262. package/statistics/output/index.js +0 -21
  263. package/statistics/output/print-stats.d.ts +0 -17
  264. package/statistics/output/print-stats.js +0 -69
  265. package/statistics/output/statistics-file.d.ts +0 -37
  266. package/statistics/output/statistics-file.js +0 -69
  267. package/statistics/statistics.d.ts +0 -24
  268. package/statistics/statistics.js +0 -109
  269. package/util/summarizer/auto-detect.d.ts +0 -2
  270. package/util/summarizer/auto-detect.js +0 -32
  271. package/util/summarizer/benchmark/data.d.ts +0 -66
  272. package/util/summarizer/benchmark/data.js +0 -13
  273. package/util/summarizer/benchmark/first-phase/input.d.ts +0 -2
  274. package/util/summarizer/benchmark/first-phase/input.js +0 -59
  275. package/util/summarizer/benchmark/first-phase/process.d.ts +0 -10
  276. package/util/summarizer/benchmark/first-phase/process.js +0 -208
  277. package/util/summarizer/benchmark/second-phase/graph.d.ts +0 -2
  278. package/util/summarizer/benchmark/second-phase/graph.js +0 -54
  279. package/util/summarizer/benchmark/second-phase/process.d.ts +0 -4
  280. package/util/summarizer/benchmark/second-phase/process.js +0 -89
  281. package/util/summarizer/benchmark/summarizer.d.ts +0 -35
  282. package/util/summarizer/benchmark/summarizer.js +0 -49
  283. package/util/summarizer/statistics/first-phase/process.d.ts +0 -6
  284. package/util/summarizer/statistics/first-phase/process.js +0 -81
  285. package/util/summarizer/statistics/post-process/clusterer.d.ts +0 -26
  286. package/util/summarizer/statistics/post-process/clusterer.js +0 -43
  287. package/util/summarizer/statistics/post-process/file-based-count.d.ts +0 -17
  288. package/util/summarizer/statistics/post-process/file-based-count.js +0 -49
  289. package/util/summarizer/statistics/post-process/histogram.d.ts +0 -59
  290. package/util/summarizer/statistics/post-process/histogram.js +0 -128
  291. package/util/summarizer/statistics/post-process/index.d.ts +0 -4
  292. package/util/summarizer/statistics/post-process/index.js +0 -21
  293. package/util/summarizer/statistics/post-process/post-process-output.d.ts +0 -16
  294. package/util/summarizer/statistics/post-process/post-process-output.js +0 -104
  295. package/util/summarizer/statistics/second-phase/process.d.ts +0 -11
  296. package/util/summarizer/statistics/second-phase/process.js +0 -117
  297. package/util/summarizer/statistics/summarizer.d.ts +0 -35
  298. package/util/summarizer/statistics/summarizer.js +0 -135
  299. package/util/summarizer/summarizer.js +0 -13
  300. /package/{statistics/output → util}/ansi.d.ts +0 -0
package/core/steps.d.ts CHANGED
@@ -13,15 +13,11 @@
13
13
  * @module
14
14
  */
15
15
  import type { MergeableRecord } from '../util/objects';
16
- import { normalize, retrieveXmlFromRCode } from '../r-bridge';
17
- import { produceDataFlowGraph } from '../dataflow';
18
- import { reconstructToCode, staticSlicing } from '../slicing';
19
16
  import type { IStepPrinter } from './print/print';
20
17
  import { internalPrinter, StepOutputFormat } from './print/print';
21
18
  import { normalizedAstToJson, normalizedAstToQuads, printNormalizedAstToMermaid, printNormalizedAstToMermaidUrl } from './print/normalize-printer';
22
19
  import { parseToQuads } from './print/parse-printer';
23
20
  import { dataflowGraphToJson, dataflowGraphToMermaid, dataflowGraphToMermaidUrl, dataflowGraphToQuads } from './print/dataflow-printer';
24
- import type { DataflowInformation } from '../dataflow/internal/info';
25
21
  /**
26
22
  * This represents close a function that we know completely nothing about.
27
23
  * Nevertheless, this is the basis of what a step processor should look like.
@@ -49,7 +45,7 @@ export interface IStep<Fn extends StepFunction> extends MergeableRecord {
49
45
  export declare const STEPS_PER_FILE: {
50
46
  readonly parse: {
51
47
  description: string;
52
- processor: typeof retrieveXmlFromRCode;
48
+ processor: (r: import("../r-bridge").RParseRequest, s: import("../r-bridge").RShell | import("../r-bridge/shell-executor").RShellExecutor) => import("ts-essentials").AsyncOrSync<string>;
53
49
  required: "once-per-file";
54
50
  printer: {
55
51
  0: typeof internalPrinter;
@@ -59,7 +55,179 @@ export declare const STEPS_PER_FILE: {
59
55
  };
60
56
  readonly normalize: {
61
57
  description: string;
62
- processor: typeof normalize;
58
+ processor: (j: string, h: {
59
+ values?: {
60
+ onNumber?: {
61
+ before?: ((data: import("../r-bridge").ParserData, inputObj: import("../r-bridge").XmlBasedJson) => void | import("../r-bridge").XmlBasedJson | undefined) | undefined;
62
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RNumber<import("../r-bridge").NoInfo> | import("../r-bridge").RLogical<import("../r-bridge").NoInfo> | import("../r-bridge").RSymbol<import("../r-bridge").NoInfo, "NA">) => void | import("../r-bridge").RNumber<import("../r-bridge").NoInfo> | import("../r-bridge").RLogical<import("../r-bridge").NoInfo> | import("../r-bridge").RSymbol<import("../r-bridge").NoInfo, "NA"> | undefined) | undefined;
63
+ } | undefined;
64
+ onString?: {
65
+ before?: ((data: import("../r-bridge").ParserData, inputObj: import("../r-bridge").XmlBasedJson) => void | import("../r-bridge").XmlBasedJson | undefined) | undefined;
66
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RString<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RString<import("../r-bridge").NoInfo> | undefined) | undefined;
67
+ } | undefined;
68
+ onSymbol?: {
69
+ unknown?: ((data: import("../r-bridge").ParserData, inputObjs: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").RSymbol<import("../r-bridge").NoInfo, string> | undefined) | undefined;
70
+ before?: ((data: import("../r-bridge").ParserData, inputObjs: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").NamedXmlBasedJson[] | undefined) | undefined;
71
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RSymbol<import("../r-bridge").NoInfo, string> | undefined) => void | import("../r-bridge").RSymbol<import("../r-bridge").NoInfo, string> | undefined) | undefined;
72
+ } | undefined;
73
+ } | undefined;
74
+ onAccess?: {
75
+ unknown?: ((data: import("../r-bridge").ParserData, inputObjs: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").RAccess | undefined) | undefined;
76
+ before?: ((data: import("../r-bridge").ParserData, inputObjs: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").NamedXmlBasedJson[] | undefined) | undefined;
77
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RAccess) => void | import("../r-bridge").RAccess | undefined) | undefined;
78
+ } | undefined;
79
+ other?: {
80
+ onComment?: {
81
+ before?: ((data: import("../r-bridge").ParserData, inputObj: import("../r-bridge").XmlBasedJson) => void | import("../r-bridge").XmlBasedJson | undefined) | undefined;
82
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RComment<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RComment<import("../r-bridge").NoInfo> | undefined) | undefined;
83
+ } | undefined;
84
+ onLineDirective?: {
85
+ before?: ((data: import("../r-bridge").ParserData, inputObj: import("../r-bridge").XmlBasedJson) => void | import("../r-bridge").XmlBasedJson | undefined) | undefined;
86
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RComment<import("../r-bridge").NoInfo> | import("../r-bridge").RLineDirective<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RComment<import("../r-bridge").NoInfo> | import("../r-bridge").RLineDirective<import("../r-bridge").NoInfo> | undefined) | undefined;
87
+ } | undefined;
88
+ } | undefined;
89
+ operators?: {
90
+ onBinary?: {
91
+ unknown?: ((data: import("../r-bridge").ParserData, input: {
92
+ lhs: import("../r-bridge").NamedXmlBasedJson;
93
+ operator: import("../r-bridge").NamedXmlBasedJson;
94
+ rhs: import("../r-bridge").NamedXmlBasedJson;
95
+ }) => void | import("../r-bridge").RNode | undefined) | undefined;
96
+ before?: ((data: import("../r-bridge").ParserData, input: {
97
+ flavor: import("../r-bridge").BinaryOperatorFlavor | "special" | "pipe";
98
+ lhs: import("../r-bridge").NamedXmlBasedJson;
99
+ operator: import("../r-bridge").NamedXmlBasedJson;
100
+ rhs: import("../r-bridge").NamedXmlBasedJson;
101
+ }) => void | {
102
+ flavor: import("../r-bridge").BinaryOperatorFlavor | "special" | "pipe";
103
+ lhs: import("../r-bridge").NamedXmlBasedJson;
104
+ operator: import("../r-bridge").NamedXmlBasedJson;
105
+ rhs: import("../r-bridge").NamedXmlBasedJson;
106
+ } | undefined) | undefined;
107
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RBinaryOp<import("../r-bridge").NoInfo> | import("../r-bridge").RPipe<import("../r-bridge").NoInfo> | import("../r-bridge").RFunctionCall) => void | import("../r-bridge").RBinaryOp<import("../r-bridge").NoInfo> | import("../r-bridge").RPipe<import("../r-bridge").NoInfo> | import("../r-bridge").RFunctionCall | undefined) | undefined;
108
+ } | undefined;
109
+ onUnary?: {
110
+ unknown?: ((data: import("../r-bridge").ParserData, input: {
111
+ operator: import("../r-bridge").NamedXmlBasedJson;
112
+ operand: import("../r-bridge").NamedXmlBasedJson;
113
+ }) => void | import("../r-bridge").RNode | undefined) | undefined;
114
+ before?: ((data: import("../r-bridge").ParserData, input: {
115
+ flavor: import("../r-bridge").UnaryOperatorFlavor;
116
+ operator: import("../r-bridge").NamedXmlBasedJson;
117
+ operand: import("../r-bridge").NamedXmlBasedJson;
118
+ }) => void | {
119
+ flavor: import("../r-bridge").UnaryOperatorFlavor;
120
+ operator: import("../r-bridge").NamedXmlBasedJson;
121
+ operand: import("../r-bridge").NamedXmlBasedJson;
122
+ } | undefined) | undefined;
123
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RUnaryOp<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RUnaryOp<import("../r-bridge").NoInfo> | undefined) | undefined;
124
+ } | undefined;
125
+ } | undefined;
126
+ loops?: {
127
+ onForLoop?: {
128
+ unknown?: ((data: import("../r-bridge").ParserData, input: {
129
+ forToken: import("../r-bridge").NamedXmlBasedJson;
130
+ condition: import("../r-bridge").NamedXmlBasedJson;
131
+ body: import("../r-bridge").NamedXmlBasedJson;
132
+ }) => void | import("../r-bridge").RForLoop<import("../r-bridge").NoInfo> | undefined) | undefined;
133
+ before?: ((data: import("../r-bridge").ParserData, input: {
134
+ forToken: import("../r-bridge").NamedXmlBasedJson;
135
+ condition: import("../r-bridge").NamedXmlBasedJson;
136
+ body: import("../r-bridge").NamedXmlBasedJson;
137
+ }) => void | {
138
+ forToken: import("../r-bridge").NamedXmlBasedJson;
139
+ condition: import("../r-bridge").NamedXmlBasedJson;
140
+ body: import("../r-bridge").NamedXmlBasedJson;
141
+ } | undefined) | undefined;
142
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RForLoop<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RForLoop<import("../r-bridge").NoInfo> | undefined) | undefined;
143
+ } | undefined;
144
+ onRepeatLoop?: {
145
+ unknown?: ((data: import("../r-bridge").ParserData, input: {
146
+ repeatToken: import("../r-bridge").NamedXmlBasedJson;
147
+ body: import("../r-bridge").NamedXmlBasedJson;
148
+ }) => void | import("../r-bridge").RRepeatLoop<import("../r-bridge").NoInfo> | undefined) | undefined;
149
+ before?: ((data: import("../r-bridge").ParserData, input: {
150
+ repeatToken: import("../r-bridge").NamedXmlBasedJson;
151
+ body: import("../r-bridge").NamedXmlBasedJson;
152
+ }) => void | {
153
+ repeatToken: import("../r-bridge").NamedXmlBasedJson;
154
+ body: import("../r-bridge").NamedXmlBasedJson;
155
+ } | undefined) | undefined;
156
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RRepeatLoop<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RRepeatLoop<import("../r-bridge").NoInfo> | undefined) | undefined;
157
+ } | undefined;
158
+ onWhileLoop?: {
159
+ unknown?: ((data: import("../r-bridge").ParserData, input: {
160
+ whileToken: import("../r-bridge").NamedXmlBasedJson;
161
+ leftParen: import("../r-bridge").NamedXmlBasedJson;
162
+ condition: import("../r-bridge").NamedXmlBasedJson;
163
+ rightParen: import("../r-bridge").NamedXmlBasedJson;
164
+ body: import("../r-bridge").NamedXmlBasedJson;
165
+ }) => void | import("../r-bridge").RWhileLoop<import("../r-bridge").NoInfo> | undefined) | undefined;
166
+ before?: ((data: import("../r-bridge").ParserData, input: {
167
+ whileToken: import("../r-bridge").NamedXmlBasedJson;
168
+ leftParen: import("../r-bridge").NamedXmlBasedJson;
169
+ condition: import("../r-bridge").NamedXmlBasedJson;
170
+ rightParen: import("../r-bridge").NamedXmlBasedJson;
171
+ body: import("../r-bridge").NamedXmlBasedJson;
172
+ }) => void | {
173
+ whileToken: import("../r-bridge").NamedXmlBasedJson;
174
+ leftParen: import("../r-bridge").NamedXmlBasedJson;
175
+ condition: import("../r-bridge").NamedXmlBasedJson;
176
+ rightParen: import("../r-bridge").NamedXmlBasedJson;
177
+ body: import("../r-bridge").NamedXmlBasedJson;
178
+ } | undefined) | undefined;
179
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RWhileLoop<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RWhileLoop<import("../r-bridge").NoInfo> | undefined) | undefined;
180
+ } | undefined;
181
+ onBreak?: {
182
+ before?: ((data: import("../r-bridge").ParserData, input: import("../r-bridge").XmlBasedJson) => void | import("../r-bridge").XmlBasedJson | undefined) | undefined;
183
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RBreak<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RBreak<import("../r-bridge").NoInfo> | undefined) | undefined;
184
+ } | undefined;
185
+ onNext?: {
186
+ before?: ((data: import("../r-bridge").ParserData, input: import("../r-bridge").XmlBasedJson) => void | import("../r-bridge").XmlBasedJson | undefined) | undefined;
187
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RNext<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RNext<import("../r-bridge").NoInfo> | undefined) | undefined;
188
+ } | undefined;
189
+ } | undefined;
190
+ functions?: {
191
+ onFunctionDefinition?: {
192
+ unknown?: ((data: import("../r-bridge").ParserData, mappedWithName: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").RFunctionDefinition<import("../r-bridge").NoInfo> | undefined) | undefined;
193
+ before?: ((data: import("../r-bridge").ParserData, mappedWithName: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").NamedXmlBasedJson[] | undefined) | undefined;
194
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RFunctionDefinition<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RFunctionDefinition<import("../r-bridge").NoInfo> | undefined) | undefined;
195
+ } | undefined;
196
+ onParameter?: {
197
+ unknown?: ((data: import("../r-bridge").ParserData, mappedWithName: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").RParameter<import("../r-bridge").NoInfo> | undefined) | undefined;
198
+ before?: ((data: import("../r-bridge").ParserData, mappedWithName: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").NamedXmlBasedJson[] | undefined) | undefined;
199
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RParameter<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RParameter<import("../r-bridge").NoInfo> | undefined) | undefined;
200
+ } | undefined;
201
+ onFunctionCall?: {
202
+ unknown?: ((data: import("../r-bridge").ParserData, mappedWithName: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").RBreak<import("../r-bridge").NoInfo> | import("../r-bridge").RNext<import("../r-bridge").NoInfo> | import("../r-bridge").RFunctionCall | undefined) | undefined;
203
+ before?: ((data: import("../r-bridge").ParserData, mappedWithName: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").NamedXmlBasedJson[] | undefined) | undefined;
204
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RBreak<import("../r-bridge").NoInfo> | import("../r-bridge").RNext<import("../r-bridge").NoInfo> | import("../r-bridge").RFunctionCall) => void | import("../r-bridge").RBreak<import("../r-bridge").NoInfo> | import("../r-bridge").RNext<import("../r-bridge").NoInfo> | import("../r-bridge").RFunctionCall | undefined) | undefined;
205
+ } | undefined;
206
+ onArgument?: {
207
+ unknown?: ((data: import("../r-bridge").ParserData, mappedWithName: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").RArgument<import("../r-bridge").NoInfo> | undefined) | undefined;
208
+ before?: ((data: import("../r-bridge").ParserData, mappedWithName: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").NamedXmlBasedJson[] | undefined) | undefined;
209
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RArgument<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RArgument<import("../r-bridge").NoInfo> | undefined) | undefined;
210
+ } | undefined;
211
+ } | undefined;
212
+ expression?: {
213
+ onExpression?: {
214
+ before?: ((data: import("../r-bridge").ParserData, inputObj: import("../r-bridge").XmlBasedJson) => void | import("../r-bridge").XmlBasedJson | undefined) | undefined;
215
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RNode) => void | import("../r-bridge").RNode | undefined) | undefined;
216
+ } | undefined;
217
+ } | undefined;
218
+ control?: {
219
+ onIfThen?: {
220
+ unknown?: ((data: import("../r-bridge").ParserData, tokens: [ifToken: import("../r-bridge").NamedXmlBasedJson, leftParen: import("../r-bridge").NamedXmlBasedJson, condition: import("../r-bridge").NamedXmlBasedJson, rightParen: import("../r-bridge").NamedXmlBasedJson, then: import("../r-bridge").NamedXmlBasedJson]) => void | import("../r-bridge").RIfThenElse<import("../r-bridge").NoInfo> | undefined) | undefined;
221
+ before?: ((data: import("../r-bridge").ParserData, tokens: [ifToken: import("../r-bridge").NamedXmlBasedJson, leftParen: import("../r-bridge").NamedXmlBasedJson, condition: import("../r-bridge").NamedXmlBasedJson, rightParen: import("../r-bridge").NamedXmlBasedJson, then: import("../r-bridge").NamedXmlBasedJson]) => void | [ifToken: import("../r-bridge").NamedXmlBasedJson, leftParen: import("../r-bridge").NamedXmlBasedJson, condition: import("../r-bridge").NamedXmlBasedJson, rightParen: import("../r-bridge").NamedXmlBasedJson, then: import("../r-bridge").NamedXmlBasedJson] | undefined) | undefined;
222
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RIfThenElse<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RIfThenElse<import("../r-bridge").NoInfo> | undefined) | undefined;
223
+ } | undefined;
224
+ onIfThenElse?: {
225
+ unknown?: ((data: import("../r-bridge").ParserData, tokens: [ifToken: import("../r-bridge").NamedXmlBasedJson, leftParen: import("../r-bridge").NamedXmlBasedJson, condition: import("../r-bridge").NamedXmlBasedJson, rightParen: import("../r-bridge").NamedXmlBasedJson, then: import("../r-bridge").NamedXmlBasedJson, elseToken: import("../r-bridge").NamedXmlBasedJson, elseBlock: import("../r-bridge").NamedXmlBasedJson]) => void | import("../r-bridge").RIfThenElse<import("../r-bridge").NoInfo> | undefined) | undefined;
226
+ before?: ((data: import("../r-bridge").ParserData, tokens: [ifToken: import("../r-bridge").NamedXmlBasedJson, leftParen: import("../r-bridge").NamedXmlBasedJson, condition: import("../r-bridge").NamedXmlBasedJson, rightParen: import("../r-bridge").NamedXmlBasedJson, then: import("../r-bridge").NamedXmlBasedJson, elseToken: import("../r-bridge").NamedXmlBasedJson, elseBlock: import("../r-bridge").NamedXmlBasedJson]) => void | [ifToken: import("../r-bridge").NamedXmlBasedJson, leftParen: import("../r-bridge").NamedXmlBasedJson, condition: import("../r-bridge").NamedXmlBasedJson, rightParen: import("../r-bridge").NamedXmlBasedJson, then: import("../r-bridge").NamedXmlBasedJson, elseToken: import("../r-bridge").NamedXmlBasedJson, elseBlock: import("../r-bridge").NamedXmlBasedJson] | undefined) | undefined;
227
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RIfThenElse<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RIfThenElse<import("../r-bridge").NoInfo> | undefined) | undefined;
228
+ } | undefined;
229
+ } | undefined;
230
+ } | undefined, g: import("../r-bridge").IdGenerator<import("../r-bridge").NoInfo> | undefined) => import("../r-bridge").NormalizedAst<import("../r-bridge").ParentInformation>;
63
231
  required: "once-per-file";
64
232
  printer: {
65
233
  0: typeof internalPrinter;
@@ -71,7 +239,7 @@ export declare const STEPS_PER_FILE: {
71
239
  };
72
240
  readonly dataflow: {
73
241
  description: string;
74
- processor: typeof produceDataFlowGraph;
242
+ processor: (r: import("../r-bridge").RParseRequest, a: import("../r-bridge").NormalizedAst<import("../r-bridge").ParentInformation>) => import("../dataflow/internal/info").DataflowInformation;
75
243
  required: "once-per-file";
76
244
  printer: {
77
245
  0: typeof internalPrinter;
@@ -81,19 +249,11 @@ export declare const STEPS_PER_FILE: {
81
249
  4: typeof dataflowGraphToMermaidUrl;
82
250
  };
83
251
  };
84
- readonly ai: {
85
- description: string;
86
- processor: (_: import("../r-bridge").NormalizedAst<import("../r-bridge").ParentInformation>, dfInfo: DataflowInformation) => DataflowInformation;
87
- required: "once-per-file";
88
- printer: {
89
- 0: typeof internalPrinter;
90
- };
91
- };
92
252
  };
93
253
  export declare const STEPS_PER_SLICE: {
94
254
  readonly slice: {
95
255
  description: string;
96
- processor: typeof staticSlicing;
256
+ processor: (d: import("../dataflow").DataflowGraph, a: import("../r-bridge").NormalizedAst<import("../r-bridge").ParentInformation>, c: import("../slicing").SlicingCriteria) => Readonly<import("../slicing").SliceResult>;
97
257
  required: "once-per-slice";
98
258
  printer: {
99
259
  0: typeof internalPrinter;
@@ -101,7 +261,7 @@ export declare const STEPS_PER_SLICE: {
101
261
  };
102
262
  readonly reconstruct: {
103
263
  description: string;
104
- processor: typeof reconstructToCode;
264
+ processor: (a: import("../r-bridge").NormalizedAst<unknown>, s: Set<import("../r-bridge").NodeId>) => import("../slicing").ReconstructionResult;
105
265
  required: "once-per-slice";
106
266
  printer: {
107
267
  0: typeof internalPrinter;
@@ -111,7 +271,7 @@ export declare const STEPS_PER_SLICE: {
111
271
  export declare const STEPS: {
112
272
  readonly slice: {
113
273
  description: string;
114
- processor: typeof staticSlicing;
274
+ processor: (d: import("../dataflow").DataflowGraph, a: import("../r-bridge").NormalizedAst<import("../r-bridge").ParentInformation>, c: import("../slicing").SlicingCriteria) => Readonly<import("../slicing").SliceResult>;
115
275
  required: "once-per-slice";
116
276
  printer: {
117
277
  0: typeof internalPrinter;
@@ -119,7 +279,7 @@ export declare const STEPS: {
119
279
  };
120
280
  readonly reconstruct: {
121
281
  description: string;
122
- processor: typeof reconstructToCode;
282
+ processor: (a: import("../r-bridge").NormalizedAst<unknown>, s: Set<import("../r-bridge").NodeId>) => import("../slicing").ReconstructionResult;
123
283
  required: "once-per-slice";
124
284
  printer: {
125
285
  0: typeof internalPrinter;
@@ -127,7 +287,7 @@ export declare const STEPS: {
127
287
  };
128
288
  readonly parse: {
129
289
  description: string;
130
- processor: typeof retrieveXmlFromRCode;
290
+ processor: (r: import("../r-bridge").RParseRequest, s: import("../r-bridge").RShell | import("../r-bridge/shell-executor").RShellExecutor) => import("ts-essentials").AsyncOrSync<string>;
131
291
  required: "once-per-file";
132
292
  printer: {
133
293
  0: typeof internalPrinter;
@@ -137,7 +297,179 @@ export declare const STEPS: {
137
297
  };
138
298
  readonly normalize: {
139
299
  description: string;
140
- processor: typeof normalize;
300
+ processor: (j: string, h: {
301
+ values?: {
302
+ onNumber?: {
303
+ before?: ((data: import("../r-bridge").ParserData, inputObj: import("../r-bridge").XmlBasedJson) => void | import("../r-bridge").XmlBasedJson | undefined) | undefined;
304
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RNumber<import("../r-bridge").NoInfo> | import("../r-bridge").RLogical<import("../r-bridge").NoInfo> | import("../r-bridge").RSymbol<import("../r-bridge").NoInfo, "NA">) => void | import("../r-bridge").RNumber<import("../r-bridge").NoInfo> | import("../r-bridge").RLogical<import("../r-bridge").NoInfo> | import("../r-bridge").RSymbol<import("../r-bridge").NoInfo, "NA"> | undefined) | undefined;
305
+ } | undefined;
306
+ onString?: {
307
+ before?: ((data: import("../r-bridge").ParserData, inputObj: import("../r-bridge").XmlBasedJson) => void | import("../r-bridge").XmlBasedJson | undefined) | undefined;
308
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RString<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RString<import("../r-bridge").NoInfo> | undefined) | undefined;
309
+ } | undefined;
310
+ onSymbol?: {
311
+ unknown?: ((data: import("../r-bridge").ParserData, inputObjs: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").RSymbol<import("../r-bridge").NoInfo, string> | undefined) | undefined;
312
+ before?: ((data: import("../r-bridge").ParserData, inputObjs: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").NamedXmlBasedJson[] | undefined) | undefined;
313
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RSymbol<import("../r-bridge").NoInfo, string> | undefined) => void | import("../r-bridge").RSymbol<import("../r-bridge").NoInfo, string> | undefined) | undefined;
314
+ } | undefined;
315
+ } | undefined;
316
+ onAccess?: {
317
+ unknown?: ((data: import("../r-bridge").ParserData, inputObjs: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").RAccess | undefined) | undefined;
318
+ before?: ((data: import("../r-bridge").ParserData, inputObjs: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").NamedXmlBasedJson[] | undefined) | undefined;
319
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RAccess) => void | import("../r-bridge").RAccess | undefined) | undefined;
320
+ } | undefined;
321
+ other?: {
322
+ onComment?: {
323
+ before?: ((data: import("../r-bridge").ParserData, inputObj: import("../r-bridge").XmlBasedJson) => void | import("../r-bridge").XmlBasedJson | undefined) | undefined;
324
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RComment<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RComment<import("../r-bridge").NoInfo> | undefined) | undefined;
325
+ } | undefined;
326
+ onLineDirective?: {
327
+ before?: ((data: import("../r-bridge").ParserData, inputObj: import("../r-bridge").XmlBasedJson) => void | import("../r-bridge").XmlBasedJson | undefined) | undefined;
328
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RComment<import("../r-bridge").NoInfo> | import("../r-bridge").RLineDirective<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RComment<import("../r-bridge").NoInfo> | import("../r-bridge").RLineDirective<import("../r-bridge").NoInfo> | undefined) | undefined;
329
+ } | undefined;
330
+ } | undefined;
331
+ operators?: {
332
+ onBinary?: {
333
+ unknown?: ((data: import("../r-bridge").ParserData, input: {
334
+ lhs: import("../r-bridge").NamedXmlBasedJson;
335
+ operator: import("../r-bridge").NamedXmlBasedJson;
336
+ rhs: import("../r-bridge").NamedXmlBasedJson;
337
+ }) => void | import("../r-bridge").RNode | undefined) | undefined;
338
+ before?: ((data: import("../r-bridge").ParserData, input: {
339
+ flavor: import("../r-bridge").BinaryOperatorFlavor | "special" | "pipe";
340
+ lhs: import("../r-bridge").NamedXmlBasedJson;
341
+ operator: import("../r-bridge").NamedXmlBasedJson;
342
+ rhs: import("../r-bridge").NamedXmlBasedJson;
343
+ }) => void | {
344
+ flavor: import("../r-bridge").BinaryOperatorFlavor | "special" | "pipe";
345
+ lhs: import("../r-bridge").NamedXmlBasedJson;
346
+ operator: import("../r-bridge").NamedXmlBasedJson;
347
+ rhs: import("../r-bridge").NamedXmlBasedJson;
348
+ } | undefined) | undefined;
349
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RBinaryOp<import("../r-bridge").NoInfo> | import("../r-bridge").RPipe<import("../r-bridge").NoInfo> | import("../r-bridge").RFunctionCall) => void | import("../r-bridge").RBinaryOp<import("../r-bridge").NoInfo> | import("../r-bridge").RPipe<import("../r-bridge").NoInfo> | import("../r-bridge").RFunctionCall | undefined) | undefined;
350
+ } | undefined;
351
+ onUnary?: {
352
+ unknown?: ((data: import("../r-bridge").ParserData, input: {
353
+ operator: import("../r-bridge").NamedXmlBasedJson;
354
+ operand: import("../r-bridge").NamedXmlBasedJson;
355
+ }) => void | import("../r-bridge").RNode | undefined) | undefined;
356
+ before?: ((data: import("../r-bridge").ParserData, input: {
357
+ flavor: import("../r-bridge").UnaryOperatorFlavor;
358
+ operator: import("../r-bridge").NamedXmlBasedJson;
359
+ operand: import("../r-bridge").NamedXmlBasedJson;
360
+ }) => void | {
361
+ flavor: import("../r-bridge").UnaryOperatorFlavor;
362
+ operator: import("../r-bridge").NamedXmlBasedJson;
363
+ operand: import("../r-bridge").NamedXmlBasedJson;
364
+ } | undefined) | undefined;
365
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RUnaryOp<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RUnaryOp<import("../r-bridge").NoInfo> | undefined) | undefined;
366
+ } | undefined;
367
+ } | undefined;
368
+ loops?: {
369
+ onForLoop?: {
370
+ unknown?: ((data: import("../r-bridge").ParserData, input: {
371
+ forToken: import("../r-bridge").NamedXmlBasedJson;
372
+ condition: import("../r-bridge").NamedXmlBasedJson;
373
+ body: import("../r-bridge").NamedXmlBasedJson;
374
+ }) => void | import("../r-bridge").RForLoop<import("../r-bridge").NoInfo> | undefined) | undefined;
375
+ before?: ((data: import("../r-bridge").ParserData, input: {
376
+ forToken: import("../r-bridge").NamedXmlBasedJson;
377
+ condition: import("../r-bridge").NamedXmlBasedJson;
378
+ body: import("../r-bridge").NamedXmlBasedJson;
379
+ }) => void | {
380
+ forToken: import("../r-bridge").NamedXmlBasedJson;
381
+ condition: import("../r-bridge").NamedXmlBasedJson;
382
+ body: import("../r-bridge").NamedXmlBasedJson;
383
+ } | undefined) | undefined;
384
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RForLoop<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RForLoop<import("../r-bridge").NoInfo> | undefined) | undefined;
385
+ } | undefined;
386
+ onRepeatLoop?: {
387
+ unknown?: ((data: import("../r-bridge").ParserData, input: {
388
+ repeatToken: import("../r-bridge").NamedXmlBasedJson;
389
+ body: import("../r-bridge").NamedXmlBasedJson;
390
+ }) => void | import("../r-bridge").RRepeatLoop<import("../r-bridge").NoInfo> | undefined) | undefined;
391
+ before?: ((data: import("../r-bridge").ParserData, input: {
392
+ repeatToken: import("../r-bridge").NamedXmlBasedJson;
393
+ body: import("../r-bridge").NamedXmlBasedJson;
394
+ }) => void | {
395
+ repeatToken: import("../r-bridge").NamedXmlBasedJson;
396
+ body: import("../r-bridge").NamedXmlBasedJson;
397
+ } | undefined) | undefined;
398
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RRepeatLoop<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RRepeatLoop<import("../r-bridge").NoInfo> | undefined) | undefined;
399
+ } | undefined;
400
+ onWhileLoop?: {
401
+ unknown?: ((data: import("../r-bridge").ParserData, input: {
402
+ whileToken: import("../r-bridge").NamedXmlBasedJson;
403
+ leftParen: import("../r-bridge").NamedXmlBasedJson;
404
+ condition: import("../r-bridge").NamedXmlBasedJson;
405
+ rightParen: import("../r-bridge").NamedXmlBasedJson;
406
+ body: import("../r-bridge").NamedXmlBasedJson;
407
+ }) => void | import("../r-bridge").RWhileLoop<import("../r-bridge").NoInfo> | undefined) | undefined;
408
+ before?: ((data: import("../r-bridge").ParserData, input: {
409
+ whileToken: import("../r-bridge").NamedXmlBasedJson;
410
+ leftParen: import("../r-bridge").NamedXmlBasedJson;
411
+ condition: import("../r-bridge").NamedXmlBasedJson;
412
+ rightParen: import("../r-bridge").NamedXmlBasedJson;
413
+ body: import("../r-bridge").NamedXmlBasedJson;
414
+ }) => void | {
415
+ whileToken: import("../r-bridge").NamedXmlBasedJson;
416
+ leftParen: import("../r-bridge").NamedXmlBasedJson;
417
+ condition: import("../r-bridge").NamedXmlBasedJson;
418
+ rightParen: import("../r-bridge").NamedXmlBasedJson;
419
+ body: import("../r-bridge").NamedXmlBasedJson;
420
+ } | undefined) | undefined;
421
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RWhileLoop<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RWhileLoop<import("../r-bridge").NoInfo> | undefined) | undefined;
422
+ } | undefined;
423
+ onBreak?: {
424
+ before?: ((data: import("../r-bridge").ParserData, input: import("../r-bridge").XmlBasedJson) => void | import("../r-bridge").XmlBasedJson | undefined) | undefined;
425
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RBreak<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RBreak<import("../r-bridge").NoInfo> | undefined) | undefined;
426
+ } | undefined;
427
+ onNext?: {
428
+ before?: ((data: import("../r-bridge").ParserData, input: import("../r-bridge").XmlBasedJson) => void | import("../r-bridge").XmlBasedJson | undefined) | undefined;
429
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RNext<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RNext<import("../r-bridge").NoInfo> | undefined) | undefined;
430
+ } | undefined;
431
+ } | undefined;
432
+ functions?: {
433
+ onFunctionDefinition?: {
434
+ unknown?: ((data: import("../r-bridge").ParserData, mappedWithName: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").RFunctionDefinition<import("../r-bridge").NoInfo> | undefined) | undefined;
435
+ before?: ((data: import("../r-bridge").ParserData, mappedWithName: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").NamedXmlBasedJson[] | undefined) | undefined;
436
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RFunctionDefinition<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RFunctionDefinition<import("../r-bridge").NoInfo> | undefined) | undefined;
437
+ } | undefined;
438
+ onParameter?: {
439
+ unknown?: ((data: import("../r-bridge").ParserData, mappedWithName: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").RParameter<import("../r-bridge").NoInfo> | undefined) | undefined;
440
+ before?: ((data: import("../r-bridge").ParserData, mappedWithName: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").NamedXmlBasedJson[] | undefined) | undefined;
441
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RParameter<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RParameter<import("../r-bridge").NoInfo> | undefined) | undefined;
442
+ } | undefined;
443
+ onFunctionCall?: {
444
+ unknown?: ((data: import("../r-bridge").ParserData, mappedWithName: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").RBreak<import("../r-bridge").NoInfo> | import("../r-bridge").RNext<import("../r-bridge").NoInfo> | import("../r-bridge").RFunctionCall | undefined) | undefined;
445
+ before?: ((data: import("../r-bridge").ParserData, mappedWithName: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").NamedXmlBasedJson[] | undefined) | undefined;
446
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RBreak<import("../r-bridge").NoInfo> | import("../r-bridge").RNext<import("../r-bridge").NoInfo> | import("../r-bridge").RFunctionCall) => void | import("../r-bridge").RBreak<import("../r-bridge").NoInfo> | import("../r-bridge").RNext<import("../r-bridge").NoInfo> | import("../r-bridge").RFunctionCall | undefined) | undefined;
447
+ } | undefined;
448
+ onArgument?: {
449
+ unknown?: ((data: import("../r-bridge").ParserData, mappedWithName: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").RArgument<import("../r-bridge").NoInfo> | undefined) | undefined;
450
+ before?: ((data: import("../r-bridge").ParserData, mappedWithName: import("../r-bridge").NamedXmlBasedJson[]) => void | import("../r-bridge").NamedXmlBasedJson[] | undefined) | undefined;
451
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RArgument<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RArgument<import("../r-bridge").NoInfo> | undefined) | undefined;
452
+ } | undefined;
453
+ } | undefined;
454
+ expression?: {
455
+ onExpression?: {
456
+ before?: ((data: import("../r-bridge").ParserData, inputObj: import("../r-bridge").XmlBasedJson) => void | import("../r-bridge").XmlBasedJson | undefined) | undefined;
457
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RNode) => void | import("../r-bridge").RNode | undefined) | undefined;
458
+ } | undefined;
459
+ } | undefined;
460
+ control?: {
461
+ onIfThen?: {
462
+ unknown?: ((data: import("../r-bridge").ParserData, tokens: [ifToken: import("../r-bridge").NamedXmlBasedJson, leftParen: import("../r-bridge").NamedXmlBasedJson, condition: import("../r-bridge").NamedXmlBasedJson, rightParen: import("../r-bridge").NamedXmlBasedJson, then: import("../r-bridge").NamedXmlBasedJson]) => void | import("../r-bridge").RIfThenElse<import("../r-bridge").NoInfo> | undefined) | undefined;
463
+ before?: ((data: import("../r-bridge").ParserData, tokens: [ifToken: import("../r-bridge").NamedXmlBasedJson, leftParen: import("../r-bridge").NamedXmlBasedJson, condition: import("../r-bridge").NamedXmlBasedJson, rightParen: import("../r-bridge").NamedXmlBasedJson, then: import("../r-bridge").NamedXmlBasedJson]) => void | [ifToken: import("../r-bridge").NamedXmlBasedJson, leftParen: import("../r-bridge").NamedXmlBasedJson, condition: import("../r-bridge").NamedXmlBasedJson, rightParen: import("../r-bridge").NamedXmlBasedJson, then: import("../r-bridge").NamedXmlBasedJson] | undefined) | undefined;
464
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RIfThenElse<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RIfThenElse<import("../r-bridge").NoInfo> | undefined) | undefined;
465
+ } | undefined;
466
+ onIfThenElse?: {
467
+ unknown?: ((data: import("../r-bridge").ParserData, tokens: [ifToken: import("../r-bridge").NamedXmlBasedJson, leftParen: import("../r-bridge").NamedXmlBasedJson, condition: import("../r-bridge").NamedXmlBasedJson, rightParen: import("../r-bridge").NamedXmlBasedJson, then: import("../r-bridge").NamedXmlBasedJson, elseToken: import("../r-bridge").NamedXmlBasedJson, elseBlock: import("../r-bridge").NamedXmlBasedJson]) => void | import("../r-bridge").RIfThenElse<import("../r-bridge").NoInfo> | undefined) | undefined;
468
+ before?: ((data: import("../r-bridge").ParserData, tokens: [ifToken: import("../r-bridge").NamedXmlBasedJson, leftParen: import("../r-bridge").NamedXmlBasedJson, condition: import("../r-bridge").NamedXmlBasedJson, rightParen: import("../r-bridge").NamedXmlBasedJson, then: import("../r-bridge").NamedXmlBasedJson, elseToken: import("../r-bridge").NamedXmlBasedJson, elseBlock: import("../r-bridge").NamedXmlBasedJson]) => void | [ifToken: import("../r-bridge").NamedXmlBasedJson, leftParen: import("../r-bridge").NamedXmlBasedJson, condition: import("../r-bridge").NamedXmlBasedJson, rightParen: import("../r-bridge").NamedXmlBasedJson, then: import("../r-bridge").NamedXmlBasedJson, elseToken: import("../r-bridge").NamedXmlBasedJson, elseBlock: import("../r-bridge").NamedXmlBasedJson] | undefined) | undefined;
469
+ after?: ((data: import("../r-bridge").ParserData, result: import("../r-bridge").RIfThenElse<import("../r-bridge").NoInfo>) => void | import("../r-bridge").RIfThenElse<import("../r-bridge").NoInfo> | undefined) | undefined;
470
+ } | undefined;
471
+ } | undefined;
472
+ } | undefined, g: import("../r-bridge").IdGenerator<import("../r-bridge").NoInfo> | undefined) => import("../r-bridge").NormalizedAst<import("../r-bridge").ParentInformation>;
141
473
  required: "once-per-file";
142
474
  printer: {
143
475
  0: typeof internalPrinter;
@@ -149,7 +481,7 @@ export declare const STEPS: {
149
481
  };
150
482
  readonly dataflow: {
151
483
  description: string;
152
- processor: typeof produceDataFlowGraph;
484
+ processor: (r: import("../r-bridge").RParseRequest, a: import("../r-bridge").NormalizedAst<import("../r-bridge").ParentInformation>) => import("../dataflow/internal/info").DataflowInformation;
153
485
  required: "once-per-file";
154
486
  printer: {
155
487
  0: typeof internalPrinter;
@@ -159,16 +491,8 @@ export declare const STEPS: {
159
491
  4: typeof dataflowGraphToMermaidUrl;
160
492
  };
161
493
  };
162
- readonly ai: {
163
- description: string;
164
- processor: (_: import("../r-bridge").NormalizedAst<import("../r-bridge").ParentInformation>, dfInfo: DataflowInformation) => DataflowInformation;
165
- required: "once-per-file";
166
- printer: {
167
- 0: typeof internalPrinter;
168
- };
169
- };
170
494
  };
171
- export declare const LAST_PER_FILE_STEP: "ai";
495
+ export declare const LAST_PER_FILE_STEP: "dataflow";
172
496
  export declare const LAST_STEP: "reconstruct";
173
497
  export type StepName = keyof typeof STEPS;
174
498
  export type Step<Name extends StepName> = typeof STEPS[Name];
package/core/steps.js CHANGED
@@ -23,10 +23,11 @@ const normalize_printer_1 = require("./print/normalize-printer");
23
23
  const assert_1 = require("../util/assert");
24
24
  const parse_printer_1 = require("./print/parse-printer");
25
25
  const dataflow_printer_1 = require("./print/dataflow-printer");
26
+ const parser_1 = require("../r-bridge/lang-4.x/ast/parser/json/parser");
26
27
  exports.STEPS_PER_FILE = {
27
28
  'parse': {
28
29
  description: 'Parse the given R code into an AST',
29
- processor: r_bridge_1.retrieveXmlFromRCode,
30
+ processor: (r, s) => (0, r_bridge_1.retrieveParseDataFromRCode)(r, s),
30
31
  required: 'once-per-file',
31
32
  printer: {
32
33
  [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter,
@@ -36,7 +37,7 @@ exports.STEPS_PER_FILE = {
36
37
  },
37
38
  'normalize': {
38
39
  description: 'Normalize the AST to flowR\'s AST (first step of the normalization)',
39
- processor: r_bridge_1.normalize,
40
+ processor: (j, h, g) => (0, parser_1.normalize)(j, h, g),
40
41
  required: 'once-per-file',
41
42
  printer: {
42
43
  [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter,
@@ -48,7 +49,7 @@ exports.STEPS_PER_FILE = {
48
49
  },
49
50
  'dataflow': {
50
51
  description: 'Construct the dataflow graph',
51
- processor: dataflow_1.produceDataFlowGraph,
52
+ processor: (r, a) => (0, dataflow_1.produceDataFlowGraph)(r, a),
52
53
  required: 'once-per-file',
53
54
  printer: {
54
55
  [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter,
@@ -57,20 +58,12 @@ exports.STEPS_PER_FILE = {
57
58
  [3 /* StepOutputFormat.Mermaid */]: dataflow_printer_1.dataflowGraphToMermaid,
58
59
  [4 /* StepOutputFormat.MermaidUrl */]: dataflow_printer_1.dataflowGraphToMermaidUrl
59
60
  }
60
- },
61
- 'ai': {
62
- description: 'Run abstract interpretation',
63
- processor: (_, dfInfo) => dfInfo, // Use runAbstractInterpretation here when it's ready
64
- required: 'once-per-file',
65
- printer: {
66
- [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter
67
- }
68
61
  }
69
62
  };
70
63
  exports.STEPS_PER_SLICE = {
71
64
  'slice': {
72
65
  description: 'Calculate the actual static slice from the dataflow graph and the given slicing criteria',
73
- processor: slicing_1.staticSlicing,
66
+ processor: (d, a, c) => (0, slicing_1.staticSlicing)(d, a, c),
74
67
  required: 'once-per-slice',
75
68
  printer: {
76
69
  [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter
@@ -78,7 +71,7 @@ exports.STEPS_PER_SLICE = {
78
71
  },
79
72
  'reconstruct': {
80
73
  description: 'Reconstruct R code from the static slice',
81
- processor: slicing_1.reconstructToCode,
74
+ processor: (a, s) => (0, slicing_1.reconstructToCode)(a, s),
82
75
  required: 'once-per-slice',
83
76
  printer: {
84
77
  [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter
@@ -86,7 +79,7 @@ exports.STEPS_PER_SLICE = {
86
79
  }
87
80
  };
88
81
  exports.STEPS = { ...exports.STEPS_PER_FILE, ...exports.STEPS_PER_SLICE };
89
- exports.LAST_PER_FILE_STEP = 'ai';
82
+ exports.LAST_PER_FILE_STEP = 'dataflow';
90
83
  exports.LAST_STEP = 'reconstruct';
91
84
  function executeSingleSubStep(subStep, ...input) {
92
85
  // @ts-expect-error - this is safe, as we know that the function arguments are correct by 'satisfies', this saves an explicit cast with 'as'
@@ -77,6 +77,14 @@ exports.DefaultEnvironmentMemory = new Map([
77
77
  definedAt: exports.BuiltIn,
78
78
  name: 'print',
79
79
  nodeId: exports.BuiltIn
80
+ }]],
81
+ ['source', [{
82
+ kind: 'built-in-function',
83
+ scope: scopes_1.GlobalScope,
84
+ used: 'always',
85
+ definedAt: exports.BuiltIn,
86
+ name: 'source',
87
+ nodeId: exports.BuiltIn
80
88
  }]]
81
89
  ]);
82
90
  function initializeCleanEnvironments() {
@@ -10,6 +10,7 @@ const assert_1 = require("../../util/assert");
10
10
  */
11
11
  function define(definition, withinScope, environments) {
12
12
  let newEnvironments = environments;
13
+ (0, assert_1.guard)(withinScope === definition.scope, 'Mismatching scopes');
13
14
  if (withinScope === scopes_1.LocalScope) {
14
15
  newEnvironments = (0, environment_1.cloneEnvironments)(environments, false);
15
16
  newEnvironments.current.memory.set(definition.name, [definition]);
@@ -1,6 +1,6 @@
1
- import type { NormalizedAst, ParentInformation, RBinaryOp } from '../r-bridge';
1
+ import type { NormalizedAst, ParentInformation, RBinaryOp, RParseRequest } from '../r-bridge';
2
2
  import type { DataflowInformation } from './internal/info';
3
3
  import type { DataflowProcessorInformation } from './processor';
4
4
  import type { DataflowScopeName } from './environments';
5
- export declare function produceDataFlowGraph<OtherInfo>(ast: NormalizedAst<OtherInfo & ParentInformation>, initialScope?: DataflowScopeName): DataflowInformation;
5
+ export declare function produceDataFlowGraph<OtherInfo>(request: RParseRequest, ast: NormalizedAst<OtherInfo & ParentInformation>, initialScope?: DataflowScopeName): DataflowInformation;
6
6
  export declare function processBinaryOp<OtherInfo>(node: RBinaryOp<OtherInfo & ParentInformation>, data: DataflowProcessorInformation<OtherInfo & ParentInformation>): DataflowInformation;