@eagleoutice/flowr 2.0.15 → 2.0.17

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 (66) hide show
  1. package/README.md +15 -5
  2. package/cli/repl/commands/commands.js +3 -1
  3. package/cli/repl/commands/lineage.d.ts +15 -0
  4. package/cli/repl/commands/lineage.js +66 -0
  5. package/cli/repl/server/connection.d.ts +1 -0
  6. package/cli/repl/server/connection.js +34 -0
  7. package/cli/repl/server/messages/lineage.d.ts +16 -0
  8. package/cli/repl/server/messages/lineage.js +17 -0
  9. package/cli/repl/server/messages/messages.d.ts +2 -1
  10. package/dataflow/environments/built-in.js +18 -8
  11. package/dataflow/environments/environment.js +4 -3
  12. package/dataflow/environments/resolve-by-name.d.ts +1 -1
  13. package/dataflow/environments/resolve-by-name.js +4 -4
  14. package/dataflow/graph/diff.js +1 -0
  15. package/dataflow/graph/graph.d.ts +18 -19
  16. package/dataflow/graph/graph.js +41 -24
  17. package/dataflow/graph/vertex.d.ts +6 -1
  18. package/dataflow/graph/vertex.js +21 -0
  19. package/dataflow/info.d.ts +1 -1
  20. package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +2 -1
  21. package/dataflow/internal/process/functions/call/built-in/built-in-access.js +3 -3
  22. package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +2 -1
  23. package/dataflow/internal/process/functions/call/built-in/built-in-assignment.js +5 -4
  24. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +1 -1
  25. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +10 -1
  26. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +4 -4
  27. package/dataflow/internal/process/functions/call/built-in/built-in-library.js +1 -0
  28. package/dataflow/internal/process/functions/call/built-in/built-in-quote.d.ts +3 -2
  29. package/dataflow/internal/process/functions/call/built-in/built-in-quote.js +1 -1
  30. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.d.ts +3 -2
  31. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +2 -1
  32. package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +2 -2
  33. package/dataflow/internal/process/functions/call/built-in/built-in-source.js +18 -7
  34. package/dataflow/internal/process/functions/call/built-in/{built-in-logical-bin-op.d.ts → built-in-special-bin-op.d.ts} +2 -1
  35. package/dataflow/internal/process/functions/call/built-in/{built-in-logical-bin-op.js → built-in-special-bin-op.js} +3 -3
  36. package/dataflow/internal/process/functions/call/common.d.ts +6 -2
  37. package/dataflow/internal/process/functions/call/common.js +36 -1
  38. package/dataflow/internal/process/functions/call/known-call-handling.d.ts +3 -2
  39. package/dataflow/internal/process/functions/call/known-call-handling.js +2 -2
  40. package/dataflow/internal/process/functions/call/named-call-handling.js +3 -1
  41. package/dataflow/internal/process/functions/call/unnamed-call-handling.js +1 -0
  42. package/dataflow/internal/process/functions/process-argument.js +0 -28
  43. package/package.json +3 -2
  44. package/r-bridge/data/data.d.ts +5 -0
  45. package/r-bridge/data/data.js +6 -0
  46. package/reconstruct/reconstruct.js +3 -3
  47. package/slicing/criterion/parse.d.ts +3 -4
  48. package/slicing/criterion/parse.js +3 -3
  49. package/slicing/static/slice-call.js +35 -13
  50. package/slicing/static/static-slicer.d.ts +1 -1
  51. package/slicing/static/static-slicer.js +10 -4
  52. package/statistics/statistics.js +1 -1
  53. package/util/json.d.ts +1 -1
  54. package/util/json.js +3 -3
  55. package/util/logic.d.ts +5 -1
  56. package/util/version.js +1 -1
  57. package/abstract-interpretation/domain.d.ts +0 -57
  58. package/abstract-interpretation/domain.js +0 -176
  59. package/abstract-interpretation/handler/binop/binop.d.ts +0 -15
  60. package/abstract-interpretation/handler/binop/binop.js +0 -42
  61. package/abstract-interpretation/handler/binop/operators.d.ts +0 -2
  62. package/abstract-interpretation/handler/binop/operators.js +0 -28
  63. package/abstract-interpretation/handler/handler.d.ts +0 -6
  64. package/abstract-interpretation/handler/handler.js +0 -3
  65. package/abstract-interpretation/processor.d.ts +0 -11
  66. package/abstract-interpretation/processor.js +0 -84
@@ -1,84 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runAbstractInterpretation = exports.aiLogger = void 0;
4
- const cfg_1 = require("../util/cfg/cfg");
5
- const visitor_1 = require("../util/cfg/visitor");
6
- const assert_1 = require("../util/assert");
7
- const binop_1 = require("./handler/binop/binop");
8
- const domain_1 = require("./domain");
9
- const log_1 = require("../util/log");
10
- const edge_1 = require("../dataflow/graph/edge");
11
- exports.aiLogger = log_1.log.getSubLogger({ name: 'abstract-interpretation' });
12
- class Stack {
13
- backingStore = [];
14
- size() {
15
- return this.backingStore.length;
16
- }
17
- peek() {
18
- return this.backingStore[this.size() - 1];
19
- }
20
- pop() {
21
- return this.backingStore.pop();
22
- }
23
- push(item) {
24
- this.backingStore.push(item);
25
- return item;
26
- }
27
- }
28
- function getDomainOfDfgChild(node, dfg, nodeMap) {
29
- const dfgNode = dfg.graph.get(node);
30
- (0, assert_1.guard)(dfgNode !== undefined, `No DFG-Node found with ID ${node}`);
31
- const [_, children] = dfgNode;
32
- const ids = Array.from(children.entries())
33
- .filter(([_, edge]) => (0, edge_1.edgeIncludesType)(edge.types, 1 /* EdgeType.Reads */))
34
- .map(([id, _]) => id);
35
- const domains = [];
36
- for (const id of ids) {
37
- const domain = nodeMap.get(id)?.domain;
38
- (0, assert_1.guard)(domain !== undefined, `No domain found for ID ${id}`);
39
- domains.push(domain);
40
- }
41
- return (0, domain_1.unifyDomains)(domains);
42
- }
43
- function runAbstractInterpretation(ast, dfg) {
44
- const cfg = (0, cfg_1.extractCFG)(ast);
45
- const operationStack = new Stack();
46
- const nodeMap = new Map();
47
- (0, visitor_1.visitCfg)(cfg, (node, _) => {
48
- const astNode = ast.idMap.get(node.id);
49
- if (astNode?.type === "RBinaryOp" /* RType.BinaryOp */) {
50
- operationStack.push(new binop_1.BinOp(astNode)).enter();
51
- }
52
- else if (astNode?.type === "RSymbol" /* RType.Symbol */) {
53
- operationStack.peek()?.next({
54
- id: astNode.info.id,
55
- domain: getDomainOfDfgChild(node.id, dfg, nodeMap),
56
- astNode: astNode,
57
- });
58
- }
59
- else if (astNode?.type === "RNumber" /* RType.Number */) {
60
- const num = astNode.content.num;
61
- operationStack.peek()?.next({
62
- id: astNode.info.id,
63
- domain: domain_1.Domain.fromScalar(num),
64
- astNode: astNode,
65
- });
66
- }
67
- else if (node.type === "end-marker" /* CfgVertexType.EndMarker */) {
68
- const operation = operationStack.pop();
69
- if (operation === undefined) {
70
- return;
71
- }
72
- const operationResult = operation.exit();
73
- (0, assert_1.guard)(!nodeMap.has(operationResult.id), `Domain for ID ${operationResult.id} already exists`);
74
- nodeMap.set(operationResult.id, operationResult);
75
- operationStack.peek()?.next(operationResult);
76
- }
77
- else {
78
- exports.aiLogger.warn(`Unknown node type ${node.type}`);
79
- }
80
- });
81
- return dfg;
82
- }
83
- exports.runAbstractInterpretation = runAbstractInterpretation;
84
- //# sourceMappingURL=processor.js.map