@eagleoutice/flowr 1.3.11 → 1.3.12

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 (125) hide show
  1. package/cli/common/scripts-info.d.ts +1 -1
  2. package/package.json +1 -1
  3. package/benchmark/benchmark-slicer.js +0 -223
  4. package/core/pipeline-executor.js +0 -221
  5. package/core/stepping-slicer.js +0 -160
  6. package/core/steps/all/00-parse.js +0 -19
  7. package/core/steps/all/10-normalize.js +0 -21
  8. package/core/steps/all/20-dataflow.js +0 -21
  9. package/core/steps/all/30-slice.js +0 -16
  10. package/core/steps/all/40-reconstruct.js +0 -16
  11. package/core/steps/all/core/00-parse.js +0 -24
  12. package/core/steps/all/core/10-normalize.js +0 -46
  13. package/core/steps/all/core/20-dataflow.js +0 -39
  14. package/core/steps/all/static-slicing/00-slice.js +0 -21
  15. package/core/steps/all/static-slicing/10-reconstruct.js +0 -21
  16. package/core/steps/index.js +0 -21
  17. package/core/steps/input.js +0 -3
  18. package/core/steps/output.js +0 -3
  19. package/core/steps/pipeline/create.js +0 -130
  20. package/core/steps/pipeline/default.js +0 -15
  21. package/core/steps/pipeline/dependency-checker.js +0 -76
  22. package/core/steps/pipeline/index.js +0 -20
  23. package/core/steps/pipeline/invalid-pipeline-error.js +0 -14
  24. package/core/steps/pipeline/pipeline.js +0 -28
  25. package/core/steps/step.js +0 -8
  26. package/core/steps/steps-provider.js +0 -3
  27. package/core/steps/steps.js +0 -35
  28. package/dataflow/common/environments/append.js +0 -48
  29. package/dataflow/common/environments/environment.js +0 -165
  30. package/dataflow/common/environments/index.js +0 -23
  31. package/dataflow/common/environments/overwrite.js +0 -82
  32. package/dataflow/common/environments/register.js +0 -49
  33. package/dataflow/common/environments/resolve-by-name.js +0 -35
  34. package/dataflow/common/environments/scopes.js +0 -6
  35. package/dataflow/common/environments/scoping.js +0 -27
  36. package/dataflow/graph/equal.js +0 -127
  37. package/dataflow/v1/extractor.js +0 -60
  38. package/dataflow/v1/graph/diff.js +0 -206
  39. package/dataflow/v1/graph/edge.js +0 -32
  40. package/dataflow/v1/graph/graph.js +0 -298
  41. package/dataflow/v1/graph/index.js +0 -21
  42. package/dataflow/v1/graph/quads.js +0 -27
  43. package/dataflow/v1/graph/vertex.js +0 -3
  44. package/dataflow/v1/index.js +0 -24
  45. package/dataflow/v1/internal/info.js +0 -16
  46. package/dataflow/v1/internal/linker.js +0 -255
  47. package/dataflow/v1/internal/process/access.js +0 -54
  48. package/dataflow/v1/internal/process/expression-list.js +0 -154
  49. package/dataflow/v1/internal/process/functions/argument.js +0 -46
  50. package/dataflow/v1/internal/process/functions/exit-points.js +0 -125
  51. package/dataflow/v1/internal/process/functions/function-call.js +0 -99
  52. package/dataflow/v1/internal/process/functions/function-definition.js +0 -176
  53. package/dataflow/v1/internal/process/functions/parameter.js +0 -47
  54. package/dataflow/v1/internal/process/if-then-else.js +0 -57
  55. package/dataflow/v1/internal/process/loops/for-loop.js +0 -54
  56. package/dataflow/v1/internal/process/loops/repeat-loop.js +0 -21
  57. package/dataflow/v1/internal/process/loops/while-loop.js +0 -31
  58. package/dataflow/v1/internal/process/operators/assignment.js +0 -129
  59. package/dataflow/v1/internal/process/operators/non-assignment-binary-op.js +0 -25
  60. package/dataflow/v1/internal/process/operators/pipe.js +0 -46
  61. package/dataflow/v1/internal/process/operators/unary-op.js +0 -10
  62. package/dataflow/v1/internal/process/symbol.js +0 -21
  63. package/dataflow/v1/internal/process/uninteresting-leaf.js +0 -9
  64. package/dataflow/v1/processor.js +0 -20
  65. package/dataflow/v2/entry.js +0 -11
  66. package/flowr-1.3.7.tgz +0 -0
  67. package/r-bridge/lang-4.x/ast/parser/xml/common/config.js +0 -16
  68. package/r-bridge/lang-4.x/ast/parser/xml/common/input-format.js +0 -42
  69. package/r-bridge/lang-4.x/ast/parser/xml/common/meta.js +0 -118
  70. package/r-bridge/lang-4.x/ast/parser/xml/common/xml-to-json.js +0 -58
  71. package/r-bridge/lang-4.x/ast/parser/xml/v1/data.js +0 -3
  72. package/r-bridge/lang-4.x/ast/parser/xml/v1/hooks.js +0 -136
  73. package/r-bridge/lang-4.x/ast/parser/xml/v1/index.js +0 -22
  74. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/access.js +0 -107
  75. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/control/if-then-else.js +0 -32
  76. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/control/if-then.js +0 -46
  77. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/control/index.js +0 -19
  78. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/expression/expression.js +0 -65
  79. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/expression/index.js +0 -18
  80. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/argument.js +0 -74
  81. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/call.js +0 -149
  82. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/definition.js +0 -60
  83. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/index.js +0 -20
  84. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/parameter.js +0 -64
  85. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/index.js +0 -27
  86. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/break.js +0 -24
  87. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/for.js +0 -72
  88. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/index.js +0 -22
  89. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/next.js +0 -24
  90. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/repeat.js +0 -42
  91. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/while.js +0 -45
  92. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/binary.js +0 -162
  93. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/index.js +0 -20
  94. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/special.js +0 -24
  95. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/unary.js +0 -59
  96. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/other/comment.js +0 -34
  97. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/other/index.js +0 -18
  98. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/other/line-directive.js +0 -55
  99. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/elements.js +0 -159
  100. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/index.js +0 -20
  101. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/root.js +0 -34
  102. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/single-element.js +0 -64
  103. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/index.js +0 -20
  104. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/number.js +0 -56
  105. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/string.js +0 -41
  106. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/symbol.js +0 -56
  107. package/r-bridge/lang-4.x/ast/parser/xml/v1/normalize.js +0 -30
  108. package/r-bridge/lang-4.x/ast/parser/xml/v2/data.js +0 -3
  109. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/access.js +0 -95
  110. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/expression.js +0 -99
  111. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/functions/argument.js +0 -71
  112. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/operators/binary.js +0 -30
  113. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/operators/index.js +0 -19
  114. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/operators/unary.js +0 -35
  115. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/other/comment.js +0 -25
  116. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/other/index.js +0 -18
  117. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/other/line-directive.js +0 -38
  118. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/root.js +0 -26
  119. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/single-element.js +0 -63
  120. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/index.js +0 -18
  121. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/number.js +0 -46
  122. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/string.js +0 -33
  123. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/symbol.js +0 -63
  124. package/r-bridge/lang-4.x/ast/parser/xml/v2/normalize.js +0 -25
  125. package/util/summarizer/benchmark/benchmark-summarizer.js +0 -208
@@ -1,208 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.summarizeSummarizedMeasurement = exports.summarizeMeasurement = exports.summarizeSlicerStats = void 0;
30
- const tmp = __importStar(require("tmp"));
31
- const assert_1 = require("../../assert");
32
- const log_1 = require("../../log");
33
- const defaultmap_1 = require("../../defaultmap");
34
- const r_bridge_1 = require("../../../r-bridge");
35
- const strings_1 = require("../../strings");
36
- const fs_1 = __importDefault(require("fs"));
37
- const arrays_1 = require("../../arrays");
38
- const tempfile = (() => {
39
- let _tempfile = undefined;
40
- return () => {
41
- if (_tempfile === undefined) {
42
- _tempfile = tmp.fileSync({ postfix: '.R', keep: false });
43
- process.on('beforeExit', () => _tempfile?.removeCallback());
44
- }
45
- return _tempfile;
46
- };
47
- })();
48
- function safeDivPercentage(a, b) {
49
- if (isNaN(a) || isNaN(b)) {
50
- return undefined;
51
- }
52
- else if (b === 0) {
53
- return a === 0 ? 0 : undefined;
54
- }
55
- else {
56
- const result = 1 - (a / b);
57
- if (isNaN(result)) {
58
- log_1.log.error(`NaN for ${a} and ${b}\n`);
59
- return undefined;
60
- }
61
- else {
62
- return result;
63
- }
64
- }
65
- }
66
- function calculateReductionForSlice(input, dataflow, perSlice) {
67
- return {
68
- numberOfLines: safeDivPercentage(perSlice.lines, input.numberOfLines),
69
- numberOfLinesNoAutoSelection: safeDivPercentage(perSlice.lines - perSlice.autoSelected, input.numberOfLines),
70
- numberOfCharacters: safeDivPercentage(perSlice.characters, input.numberOfCharacters),
71
- numberOfNonWhitespaceCharacters: safeDivPercentage(perSlice.nonWhitespaceCharacters, input.numberOfNonWhitespaceCharacters),
72
- numberOfRTokens: safeDivPercentage(perSlice.tokens, input.numberOfRTokens),
73
- numberOfNormalizedTokens: safeDivPercentage(perSlice.normalizedTokens, input.numberOfNormalizedTokens),
74
- numberOfDataflowNodes: safeDivPercentage(perSlice.dataflowNodes, dataflow.numberOfNodes)
75
- };
76
- }
77
- /**
78
- * Summarizes the given stats by calculating the min, max, median, mean, and the standard deviation for each measurement.
79
- * @see Slicer
80
- */
81
- async function summarizeSlicerStats(stats, report = () => {
82
- }) {
83
- const perSliceStats = stats.perSliceMeasurements;
84
- const collect = new defaultmap_1.DefaultMap(() => []);
85
- const sizeOfSliceCriteria = [];
86
- const reParseShellSession = new r_bridge_1.RShell();
87
- reParseShellSession.tryToInjectHomeLibPath();
88
- const reductions = [];
89
- let failedOutputs = 0;
90
- const sliceSize = {
91
- lines: [],
92
- autoSelected: [],
93
- characters: [],
94
- nonWhitespaceCharacters: [],
95
- tokens: [],
96
- normalizedTokens: [],
97
- dataflowNodes: []
98
- };
99
- let first = true;
100
- let timesHitThreshold = 0;
101
- for (const [criteria, perSliceStat] of perSliceStats) {
102
- report(criteria, perSliceStat);
103
- for (const measure of perSliceStat.measurements) {
104
- collect.get(measure[0]).push(Number(measure[1]));
105
- }
106
- sizeOfSliceCriteria.push(perSliceStat.slicingCriteria.length);
107
- timesHitThreshold += perSliceStat.timesHitThreshold > 0 ? 1 : 0;
108
- const { code: output, autoSelected } = perSliceStat.reconstructedCode;
109
- sliceSize.autoSelected.push(autoSelected);
110
- const lines = output.split('\n').length;
111
- sliceSize.lines.push(lines);
112
- sliceSize.characters.push(output.length);
113
- const nonWhitespace = (0, strings_1.withoutWhitespace)(output).length;
114
- sliceSize.nonWhitespaceCharacters.push(nonWhitespace);
115
- // reparse the output to get the number of tokens
116
- try {
117
- // there seem to be encoding issues, therefore, we dump to a temp file
118
- fs_1.default.writeFileSync(tempfile().name, output);
119
- const reParsed = await (0, r_bridge_1.retrieveNormalizedAstFromRCode)({ request: 'file', content: tempfile().name, ensurePackageInstalled: first }, reParseShellSession);
120
- first = false;
121
- let numberOfNormalizedTokens = 0;
122
- (0, r_bridge_1.visitAst)(reParsed.ast, _ => {
123
- numberOfNormalizedTokens++;
124
- return false;
125
- });
126
- sliceSize.normalizedTokens.push(numberOfNormalizedTokens);
127
- const numberOfRTokens = await (0, r_bridge_1.retrieveNumberOfRTokensOfLastParse)(reParseShellSession);
128
- sliceSize.tokens.push(numberOfRTokens);
129
- reductions.push(calculateReductionForSlice(stats.input, stats.dataflow, {
130
- lines: lines,
131
- characters: output.length,
132
- nonWhitespaceCharacters: nonWhitespace,
133
- autoSelected: autoSelected,
134
- tokens: numberOfRTokens,
135
- normalizedTokens: numberOfNormalizedTokens,
136
- dataflowNodes: perSliceStat.numberOfDataflowNodesSliced
137
- }));
138
- }
139
- catch (e) {
140
- console.error(` ! Failed to re-parse the output of the slicer for ${JSON.stringify(criteria)}`); //, e
141
- console.error(` Code: ${output}\n`);
142
- failedOutputs++;
143
- }
144
- sliceSize.dataflowNodes.push(perSliceStat.numberOfDataflowNodesSliced);
145
- }
146
- // summarize all measurements:
147
- const summarized = new Map();
148
- for (const [criterion, measurements] of collect.entries()) {
149
- summarized.set(criterion, summarizeMeasurement(measurements));
150
- }
151
- reParseShellSession.close();
152
- return {
153
- ...stats,
154
- perSliceMeasurements: {
155
- numberOfSlices: perSliceStats.size,
156
- sliceCriteriaSizes: summarizeMeasurement(sizeOfSliceCriteria),
157
- measurements: summarized,
158
- failedToRepParse: failedOutputs,
159
- timesHitThreshold,
160
- reduction: {
161
- numberOfLines: summarizeMeasurement(reductions.map(r => r.numberOfLines).filter(assert_1.isNotUndefined)),
162
- numberOfLinesNoAutoSelection: summarizeMeasurement(reductions.map(r => r.numberOfLinesNoAutoSelection).filter(assert_1.isNotUndefined)),
163
- numberOfCharacters: summarizeMeasurement(reductions.map(r => r.numberOfCharacters).filter(assert_1.isNotUndefined)),
164
- numberOfNonWhitespaceCharacters: summarizeMeasurement(reductions.map(r => r.numberOfNonWhitespaceCharacters).filter(assert_1.isNotUndefined)),
165
- numberOfRTokens: summarizeMeasurement(reductions.map(r => r.numberOfRTokens).filter(assert_1.isNotUndefined)),
166
- numberOfNormalizedTokens: summarizeMeasurement(reductions.map(r => r.numberOfNormalizedTokens).filter(assert_1.isNotUndefined)),
167
- numberOfDataflowNodes: summarizeMeasurement(reductions.map(r => r.numberOfDataflowNodes).filter(assert_1.isNotUndefined))
168
- },
169
- sliceSize: {
170
- lines: summarizeMeasurement(sliceSize.lines),
171
- characters: summarizeMeasurement(sliceSize.characters),
172
- nonWhitespaceCharacters: summarizeMeasurement(sliceSize.nonWhitespaceCharacters),
173
- autoSelected: summarizeMeasurement(sliceSize.autoSelected),
174
- tokens: summarizeMeasurement(sliceSize.tokens),
175
- normalizedTokens: summarizeMeasurement(sliceSize.normalizedTokens),
176
- dataflowNodes: summarizeMeasurement(sliceSize.dataflowNodes)
177
- }
178
- }
179
- };
180
- }
181
- exports.summarizeSlicerStats = summarizeSlicerStats;
182
- function summarizeMeasurement(data, totalNumberOfDataPoints) {
183
- // just to avoid in-place modification
184
- const sorted = [...data].sort((a, b) => a - b);
185
- const min = sorted[0];
186
- const max = sorted[sorted.length - 1];
187
- const median = sorted[Math.floor(sorted.length / 2)];
188
- const total = (0, arrays_1.sum)(sorted);
189
- const length = totalNumberOfDataPoints ?? sorted.length;
190
- const mean = total / length;
191
- // sqrt(sum(x-mean)^2 / n)
192
- const std = Math.sqrt(sorted.map(x => (x - mean) ** 2).reduce((a, b) => a + b, 0) / length);
193
- return { min, max, median, mean, std, total };
194
- }
195
- exports.summarizeMeasurement = summarizeMeasurement;
196
- function summarizeSummarizedMeasurement(data) {
197
- const min = data.map(d => d.min).filter(assert_1.isNotUndefined).reduce((a, b) => Math.min(a, b), Infinity);
198
- const max = data.map(d => d.max).filter(assert_1.isNotUndefined).reduce((a, b) => Math.max(a, b), -Infinity);
199
- // get most average
200
- const median = data.map(d => d.median).filter(assert_1.isNotUndefined).reduce((a, b) => a + b, 0) / data.length;
201
- const mean = data.map(d => d.mean).filter(assert_1.isNotUndefined).reduce((a, b) => a + b, 0) / data.length;
202
- // Method 1 of https://www.statology.org/averaging-standard-deviations/
203
- const std = Math.sqrt(data.map(d => d.std ** 2).filter(assert_1.isNotUndefined).reduce((a, b) => a + b, 0) / data.length);
204
- const total = data.map(d => d.total).filter(assert_1.isNotUndefined).reduce((a, b) => a + b, 0);
205
- return { min, max, median, mean, std, total };
206
- }
207
- exports.summarizeSummarizedMeasurement = summarizeSummarizedMeasurement;
208
- //# sourceMappingURL=benchmark-summarizer.js.map