@eagleoutice/flowr 1.3.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +674 -0
- package/README.md +27 -0
- package/benchmark/benchmark-slicer.js +223 -0
- package/benchmark/index.d.ts +3 -0
- package/benchmark/index.js +20 -0
- package/benchmark/slicer.d.ts +100 -0
- package/benchmark/slicer.js +223 -0
- package/benchmark/stats/index.d.ts +10 -0
- package/benchmark/stats/index.js +27 -0
- package/benchmark/stats/print.d.ts +7 -0
- package/benchmark/stats/print.js +157 -0
- package/benchmark/stats/stats.d.ts +41 -0
- package/benchmark/stats/stats.js +6 -0
- package/benchmark/stopwatch.d.ts +35 -0
- package/benchmark/stopwatch.js +79 -0
- package/cli/benchmark-app.d.ts +9 -0
- package/cli/benchmark-app.js +52 -0
- package/cli/benchmark-helper-app.d.ts +7 -0
- package/cli/benchmark-helper-app.js +60 -0
- package/cli/common/features.d.ts +3 -0
- package/cli/common/features.js +30 -0
- package/cli/common/index.d.ts +2 -0
- package/cli/common/index.js +19 -0
- package/cli/common/options.d.ts +20 -0
- package/cli/common/options.js +82 -0
- package/cli/common/script.d.ts +21 -0
- package/cli/common/script.js +61 -0
- package/cli/common/scripts-info.d.ts +24 -0
- package/cli/common/scripts-info.js +69 -0
- package/cli/export-quads-app.d.ts +7 -0
- package/cli/export-quads-app.js +46 -0
- package/cli/repl/commands/cfg.d.ts +3 -0
- package/cli/repl/commands/cfg.js +37 -0
- package/cli/repl/commands/commands.d.ts +11 -0
- package/cli/repl/commands/commands.js +103 -0
- package/cli/repl/commands/dataflow.d.ts +3 -0
- package/cli/repl/commands/dataflow.js +34 -0
- package/cli/repl/commands/execute.d.ts +4 -0
- package/cli/repl/commands/execute.js +27 -0
- package/cli/repl/commands/index.d.ts +2 -0
- package/cli/repl/commands/index.js +19 -0
- package/cli/repl/commands/main.d.ts +39 -0
- package/cli/repl/commands/main.js +14 -0
- package/cli/repl/commands/normalize.d.ts +3 -0
- package/cli/repl/commands/normalize.js +34 -0
- package/cli/repl/commands/parse.d.ts +2 -0
- package/cli/repl/commands/parse.js +109 -0
- package/cli/repl/commands/quit.d.ts +2 -0
- package/cli/repl/commands/quit.js +12 -0
- package/cli/repl/commands/version.d.ts +16 -0
- package/cli/repl/commands/version.js +33 -0
- package/cli/repl/core.d.ts +41 -0
- package/cli/repl/core.js +89 -0
- package/cli/repl/execute.d.ts +28 -0
- package/cli/repl/execute.js +79 -0
- package/cli/repl/index.d.ts +5 -0
- package/cli/repl/index.js +22 -0
- package/cli/repl/prompt.d.ts +2 -0
- package/cli/repl/prompt.js +9 -0
- package/cli/repl/server/connection.d.ts +21 -0
- package/cli/repl/server/connection.js +217 -0
- package/cli/repl/server/messages/analysis.d.ts +71 -0
- package/cli/repl/server/messages/analysis.js +21 -0
- package/cli/repl/server/messages/error.d.ts +11 -0
- package/cli/repl/server/messages/error.js +3 -0
- package/cli/repl/server/messages/hello.d.ts +20 -0
- package/cli/repl/server/messages/hello.js +3 -0
- package/cli/repl/server/messages/index.d.ts +1 -0
- package/cli/repl/server/messages/index.js +3 -0
- package/cli/repl/server/messages/messages.d.ts +35 -0
- package/cli/repl/server/messages/messages.js +20 -0
- package/cli/repl/server/messages/repl.d.ts +33 -0
- package/cli/repl/server/messages/repl.js +17 -0
- package/cli/repl/server/messages/slice.d.ts +25 -0
- package/cli/repl/server/messages/slice.js +17 -0
- package/cli/repl/server/net.d.ts +33 -0
- package/cli/repl/server/net.js +24 -0
- package/cli/repl/server/send.d.ts +4 -0
- package/cli/repl/server/send.js +18 -0
- package/cli/repl/server/server.d.ts +20 -0
- package/cli/repl/server/server.js +66 -0
- package/cli/repl/server/validate.d.ts +15 -0
- package/cli/repl/server/validate.js +34 -0
- package/cli/slicer-app.d.ts +11 -0
- package/cli/slicer-app.js +81 -0
- package/cli/statistics-app.d.ts +11 -0
- package/cli/statistics-app.js +98 -0
- package/cli/statistics-helper-app.d.ts +11 -0
- package/cli/statistics-helper-app.js +83 -0
- package/cli/summarizer-app.d.ts +18 -0
- package/cli/summarizer-app.js +67 -0
- package/core/index.d.ts +4 -0
- package/core/index.js +23 -0
- package/core/input.d.ts +42 -0
- package/core/input.js +3 -0
- package/core/output.d.ts +15 -0
- package/core/output.js +3 -0
- package/core/pipeline-executor.js +221 -0
- package/core/print/dataflow-printer.d.ts +8 -0
- package/core/print/dataflow-printer.js +62 -0
- package/core/print/normalize-printer.d.ts +7 -0
- package/core/print/normalize-printer.js +31 -0
- package/core/print/parse-printer.d.ts +3 -0
- package/core/print/parse-printer.js +29 -0
- package/core/print/print.d.ts +47 -0
- package/core/print/print.js +13 -0
- package/core/print/slice-diff-ansi.d.ts +2 -0
- package/core/print/slice-diff-ansi.js +49 -0
- package/core/slicer.d.ts +123 -0
- package/core/slicer.js +227 -0
- package/core/stepping-slicer.js +160 -0
- package/core/steps/all/00-parse.js +19 -0
- package/core/steps/all/10-normalize.js +21 -0
- package/core/steps/all/20-dataflow.js +21 -0
- package/core/steps/all/30-slice.js +16 -0
- package/core/steps/all/40-reconstruct.js +16 -0
- package/core/steps/all/core/00-parse.js +24 -0
- package/core/steps/all/core/10-normalize.js +46 -0
- package/core/steps/all/core/20-dataflow.js +39 -0
- package/core/steps/all/static-slicing/00-slice.js +21 -0
- package/core/steps/all/static-slicing/10-reconstruct.js +21 -0
- package/core/steps/index.js +21 -0
- package/core/steps/input.js +3 -0
- package/core/steps/output.js +3 -0
- package/core/steps/pipeline/create.js +130 -0
- package/core/steps/pipeline/default.js +15 -0
- package/core/steps/pipeline/dependency-checker.js +76 -0
- package/core/steps/pipeline/index.js +20 -0
- package/core/steps/pipeline/invalid-pipeline-error.js +14 -0
- package/core/steps/pipeline/pipeline.js +28 -0
- package/core/steps/step.js +8 -0
- package/core/steps/steps-provider.js +3 -0
- package/core/steps/steps.js +35 -0
- package/core/steps.d.ts +166 -0
- package/core/steps.js +99 -0
- package/dataflow/common/environments/append.js +48 -0
- package/dataflow/common/environments/environment.js +165 -0
- package/dataflow/common/environments/index.js +23 -0
- package/dataflow/common/environments/overwrite.js +82 -0
- package/dataflow/common/environments/register.js +49 -0
- package/dataflow/common/environments/resolve-by-name.js +35 -0
- package/dataflow/common/environments/scopes.js +6 -0
- package/dataflow/common/environments/scoping.js +27 -0
- package/dataflow/environments/append.d.ts +8 -0
- package/dataflow/environments/append.js +48 -0
- package/dataflow/environments/environment.d.ts +78 -0
- package/dataflow/environments/environment.js +161 -0
- package/dataflow/environments/index.d.ts +7 -0
- package/dataflow/environments/index.js +23 -0
- package/dataflow/environments/overwrite.d.ts +6 -0
- package/dataflow/environments/overwrite.js +82 -0
- package/dataflow/environments/register.d.ts +7 -0
- package/dataflow/environments/register.js +39 -0
- package/dataflow/environments/resolve-by-name.d.ts +12 -0
- package/dataflow/environments/resolve-by-name.js +35 -0
- package/dataflow/environments/scopes.d.ts +6 -0
- package/dataflow/environments/scopes.js +6 -0
- package/dataflow/environments/scoping.d.ts +4 -0
- package/dataflow/environments/scoping.js +27 -0
- package/dataflow/extractor.d.ts +6 -0
- package/dataflow/extractor.js +60 -0
- package/dataflow/graph/diff.d.ts +18 -0
- package/dataflow/graph/diff.js +206 -0
- package/dataflow/graph/edge.d.ts +37 -0
- package/dataflow/graph/edge.js +32 -0
- package/dataflow/graph/equal.js +127 -0
- package/dataflow/graph/graph.d.ts +120 -0
- package/dataflow/graph/graph.js +298 -0
- package/dataflow/graph/index.d.ts +4 -0
- package/dataflow/graph/index.js +21 -0
- package/dataflow/graph/quads.d.ts +8 -0
- package/dataflow/graph/quads.js +27 -0
- package/dataflow/graph/vertex.d.ts +86 -0
- package/dataflow/graph/vertex.js +3 -0
- package/dataflow/index.d.ts +5 -0
- package/dataflow/index.js +24 -0
- package/dataflow/internal/info.d.ts +21 -0
- package/dataflow/internal/info.js +16 -0
- package/dataflow/internal/linker.d.ts +41 -0
- package/dataflow/internal/linker.js +255 -0
- package/dataflow/internal/process/access.d.ts +4 -0
- package/dataflow/internal/process/access.js +53 -0
- package/dataflow/internal/process/expression-list.d.ts +8 -0
- package/dataflow/internal/process/expression-list.js +148 -0
- package/dataflow/internal/process/functions/argument.d.ts +8 -0
- package/dataflow/internal/process/functions/argument.js +46 -0
- package/dataflow/internal/process/functions/exit-points.d.ts +2 -0
- package/dataflow/internal/process/functions/exit-points.js +121 -0
- package/dataflow/internal/process/functions/function-call.d.ts +5 -0
- package/dataflow/internal/process/functions/function-call.js +99 -0
- package/dataflow/internal/process/functions/function-definition.d.ts +4 -0
- package/dataflow/internal/process/functions/function-definition.js +176 -0
- package/dataflow/internal/process/functions/parameter.d.ts +4 -0
- package/dataflow/internal/process/functions/parameter.js +47 -0
- package/dataflow/internal/process/if-then-else.d.ts +4 -0
- package/dataflow/internal/process/if-then-else.js +56 -0
- package/dataflow/internal/process/loops/for-loop.d.ts +4 -0
- package/dataflow/internal/process/loops/for-loop.js +54 -0
- package/dataflow/internal/process/loops/repeat-loop.d.ts +4 -0
- package/dataflow/internal/process/loops/repeat-loop.js +21 -0
- package/dataflow/internal/process/loops/while-loop.d.ts +4 -0
- package/dataflow/internal/process/loops/while-loop.js +31 -0
- package/dataflow/internal/process/operators/assignment.d.ts +4 -0
- package/dataflow/internal/process/operators/assignment.js +129 -0
- package/dataflow/internal/process/operators/non-assignment-binary-op.d.ts +4 -0
- package/dataflow/internal/process/operators/non-assignment-binary-op.js +25 -0
- package/dataflow/internal/process/operators/pipe.d.ts +4 -0
- package/dataflow/internal/process/operators/pipe.js +46 -0
- package/dataflow/internal/process/operators/unary-op.d.ts +4 -0
- package/dataflow/internal/process/operators/unary-op.js +10 -0
- package/dataflow/internal/process/symbol.d.ts +4 -0
- package/dataflow/internal/process/symbol.js +21 -0
- package/dataflow/internal/process/uninteresting-leaf.d.ts +3 -0
- package/dataflow/internal/process/uninteresting-leaf.js +9 -0
- package/dataflow/processor.d.ts +47 -0
- package/dataflow/processor.js +20 -0
- package/dataflow/v1/extractor.js +60 -0
- package/dataflow/v1/graph/diff.js +206 -0
- package/dataflow/v1/graph/edge.js +32 -0
- package/dataflow/v1/graph/graph.js +298 -0
- package/dataflow/v1/graph/index.js +21 -0
- package/dataflow/v1/graph/quads.js +27 -0
- package/dataflow/v1/graph/vertex.js +3 -0
- package/dataflow/v1/index.js +24 -0
- package/dataflow/v1/internal/info.js +16 -0
- package/dataflow/v1/internal/linker.js +255 -0
- package/dataflow/v1/internal/process/access.js +54 -0
- package/dataflow/v1/internal/process/expression-list.js +154 -0
- package/dataflow/v1/internal/process/functions/argument.js +46 -0
- package/dataflow/v1/internal/process/functions/exit-points.js +125 -0
- package/dataflow/v1/internal/process/functions/function-call.js +99 -0
- package/dataflow/v1/internal/process/functions/function-definition.js +176 -0
- package/dataflow/v1/internal/process/functions/parameter.js +47 -0
- package/dataflow/v1/internal/process/if-then-else.js +57 -0
- package/dataflow/v1/internal/process/loops/for-loop.js +54 -0
- package/dataflow/v1/internal/process/loops/repeat-loop.js +21 -0
- package/dataflow/v1/internal/process/loops/while-loop.js +31 -0
- package/dataflow/v1/internal/process/operators/assignment.js +129 -0
- package/dataflow/v1/internal/process/operators/non-assignment-binary-op.js +25 -0
- package/dataflow/v1/internal/process/operators/pipe.js +46 -0
- package/dataflow/v1/internal/process/operators/unary-op.js +10 -0
- package/dataflow/v1/internal/process/symbol.js +21 -0
- package/dataflow/v1/internal/process/uninteresting-leaf.js +9 -0
- package/dataflow/v1/processor.js +20 -0
- package/dataflow/v2/entry.js +11 -0
- package/flowr-1.3.7.tgz +0 -0
- package/flowr.d.ts +26 -0
- package/flowr.js +135 -0
- package/index.d.ts +6 -0
- package/index.js +23 -0
- package/package.json +384 -0
- package/r-bridge/index.d.ts +11 -0
- package/r-bridge/index.js +28 -0
- package/r-bridge/lang-4.x/ast/index.d.ts +2 -0
- package/r-bridge/lang-4.x/ast/index.js +19 -0
- package/r-bridge/lang-4.x/ast/model/collect.d.ts +9 -0
- package/r-bridge/lang-4.x/ast/model/collect.js +23 -0
- package/r-bridge/lang-4.x/ast/model/index.d.ts +6 -0
- package/r-bridge/lang-4.x/ast/model/index.js +23 -0
- package/r-bridge/lang-4.x/ast/model/model.d.ts +127 -0
- package/r-bridge/lang-4.x/ast/model/model.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/index.d.ts +21 -0
- package/r-bridge/lang-4.x/ast/model/nodes/index.js +38 -0
- package/r-bridge/lang-4.x/ast/model/nodes/info/index.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/model/nodes/info/index.js +27 -0
- package/r-bridge/lang-4.x/ast/model/nodes/info/r-delimiter.d.ts +12 -0
- package/r-bridge/lang-4.x/ast/model/nodes/info/r-delimiter.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-access.d.ts +24 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-access.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-argument.d.ts +11 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-argument.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-binary-op.d.ts +25 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-binary-op.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-break.d.ts +5 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-break.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-comment.d.ts +6 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-comment.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-expression-list.d.ts +6 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-expression-list.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-for-loop.d.ts +18 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-for-loop.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +31 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-definition.d.ts +10 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-definition.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-if-then-else.d.ts +9 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-if-then-else.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-line-directive.d.ts +7 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-line-directive.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-logical.d.ts +7 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-logical.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-next.d.ts +5 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-next.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +8 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-number.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-parameter.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-parameter.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-pipe.d.ts +7 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-pipe.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-repeat-loop.d.ts +12 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-repeat-loop.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +7 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-string.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.d.ts +7 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +9 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-unary-op.d.ts +18 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-unary-op.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-while-loop.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-while-loop.js +3 -0
- package/r-bridge/lang-4.x/ast/model/operators.d.ts +46 -0
- package/r-bridge/lang-4.x/ast/model/operators.js +67 -0
- package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +81 -0
- package/r-bridge/lang-4.x/ast/model/processing/decorate.js +342 -0
- package/r-bridge/lang-4.x/ast/model/processing/fold.d.ts +10 -0
- package/r-bridge/lang-4.x/ast/model/processing/fold.js +20 -0
- package/r-bridge/lang-4.x/ast/model/processing/index.d.ts +5 -0
- package/r-bridge/lang-4.x/ast/model/processing/index.js +22 -0
- package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +41 -0
- package/r-bridge/lang-4.x/ast/model/processing/role.js +17 -0
- package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +61 -0
- package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.js +87 -0
- package/r-bridge/lang-4.x/ast/model/processing/visitor.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/model/processing/visitor.js +109 -0
- package/r-bridge/lang-4.x/ast/model/type.d.ts +206 -0
- package/r-bridge/lang-4.x/ast/model/type.js +18 -0
- package/r-bridge/lang-4.x/ast/model/versions.d.ts +9 -0
- package/r-bridge/lang-4.x/ast/model/versions.js +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/common/config.js +16 -0
- package/r-bridge/lang-4.x/ast/parser/xml/common/input-format.js +42 -0
- package/r-bridge/lang-4.x/ast/parser/xml/common/meta.js +118 -0
- package/r-bridge/lang-4.x/ast/parser/xml/common/xml-to-json.js +58 -0
- package/r-bridge/lang-4.x/ast/parser/xml/config.d.ts +25 -0
- package/r-bridge/lang-4.x/ast/parser/xml/config.js +16 -0
- package/r-bridge/lang-4.x/ast/parser/xml/data.d.ts +22 -0
- package/r-bridge/lang-4.x/ast/parser/xml/data.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/xml/hooks.d.ts +292 -0
- package/r-bridge/lang-4.x/ast/parser/xml/hooks.js +136 -0
- package/r-bridge/lang-4.x/ast/parser/xml/index.d.ts +5 -0
- package/r-bridge/lang-4.x/ast/parser/xml/index.js +22 -0
- package/r-bridge/lang-4.x/ast/parser/xml/input-format.d.ts +32 -0
- package/r-bridge/lang-4.x/ast/parser/xml/input-format.js +33 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/access.d.ts +12 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/access.js +107 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then-else.d.ts +15 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then-else.js +32 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then.js +46 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.d.ts +2 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.js +19 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.d.ts +10 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.js +65 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.d.ts +1 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.js +18 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/argument.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/argument.js +74 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/call.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/call.js +149 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/definition.d.ts +12 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/definition.js +60 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.d.ts +2 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/parameter.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/parameter.js +64 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/index.d.ts +10 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/index.js +27 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/break.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/break.js +24 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/for.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/for.js +72 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.d.ts +5 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.js +22 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/next.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/next.js +24 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/repeat.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/repeat.js +42 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/while.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/while.js +45 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/meta.d.ts +50 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/meta.js +118 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/binary.d.ts +8 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/binary.js +162 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.d.ts +6 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.js +24 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.js +59 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/comment.d.ts +11 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/comment.js +34 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.d.ts +1 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.js +18 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/line-directive.d.ts +12 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/line-directive.js +55 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.d.ts +10 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.js +159 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.js +34 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.js +64 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/number.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/number.js +56 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/string.d.ts +11 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/string.js +41 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/symbol.d.ts +14 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/symbol.js +56 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/xml-to-json.d.ts +9 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/xml-to-json.js +51 -0
- package/r-bridge/lang-4.x/ast/parser/xml/parser.d.ts +17 -0
- package/r-bridge/lang-4.x/ast/parser/xml/parser.js +30 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/data.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/hooks.js +136 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/index.js +22 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/access.js +107 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/control/if-then-else.js +32 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/control/if-then.js +46 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/control/index.js +19 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/expression/expression.js +65 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/expression/index.js +18 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/argument.js +74 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/call.js +149 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/definition.js +60 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/parameter.js +64 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/index.js +27 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/break.js +24 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/for.js +72 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/index.js +22 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/next.js +24 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/repeat.js +42 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/while.js +45 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/binary.js +162 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/special.js +24 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/unary.js +59 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/other/comment.js +34 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/other/index.js +18 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/other/line-directive.js +55 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/elements.js +159 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/root.js +34 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/single-element.js +64 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/number.js +56 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/string.js +41 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/symbol.js +56 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/normalize.js +30 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/data.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/access.js +95 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/expression.js +99 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/functions/argument.js +71 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/operators/binary.js +30 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/operators/index.js +19 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/operators/unary.js +35 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/other/comment.js +25 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/other/index.js +18 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/other/line-directive.js +38 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/root.js +26 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/single-element.js +63 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/index.js +18 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/number.js +46 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/string.js +33 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/symbol.js +63 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/normalize.js +25 -0
- package/r-bridge/lang-4.x/index.d.ts +2 -0
- package/r-bridge/lang-4.x/index.js +19 -0
- package/r-bridge/lang-4.x/values.d.ts +39 -0
- package/r-bridge/lang-4.x/values.js +149 -0
- package/r-bridge/retriever.d.ts +48 -0
- package/r-bridge/retriever.js +71 -0
- package/r-bridge/shell.d.ts +147 -0
- package/r-bridge/shell.js +423 -0
- package/reconstruct/reconstruct.d.ts +28 -0
- package/reconstruct/reconstruct.js +448 -0
- package/slicing/criterion/collect-all.d.ts +36 -0
- package/slicing/criterion/collect-all.js +23 -0
- package/slicing/criterion/filters/all-variables.d.ts +2 -0
- package/slicing/criterion/filters/all-variables.js +63 -0
- package/slicing/criterion/filters/index.d.ts +1 -0
- package/slicing/criterion/filters/index.js +18 -0
- package/slicing/criterion/index.d.ts +3 -0
- package/slicing/criterion/index.js +20 -0
- package/slicing/criterion/parse.d.ts +20 -0
- package/slicing/criterion/parse.js +79 -0
- package/slicing/index.d.ts +3 -0
- package/slicing/index.js +20 -0
- package/slicing/static/index.d.ts +1 -0
- package/slicing/static/index.js +18 -0
- package/slicing/static/static-slicer.d.ts +29 -0
- package/slicing/static/static-slicer.js +186 -0
- package/statistics/features/common-syntax-probability.d.ts +30 -0
- package/statistics/features/common-syntax-probability.js +159 -0
- package/statistics/features/feature.d.ts +175 -0
- package/statistics/features/feature.js +30 -0
- package/statistics/features/index.d.ts +1 -0
- package/statistics/features/index.js +18 -0
- package/statistics/features/post-processing.d.ts +12 -0
- package/statistics/features/post-processing.js +21 -0
- package/statistics/features/supported/assignments/assignments.d.ts +11 -0
- package/statistics/features/supported/assignments/assignments.js +53 -0
- package/statistics/features/supported/assignments/index.d.ts +1 -0
- package/statistics/features/supported/assignments/index.js +6 -0
- package/statistics/features/supported/assignments/post-process.d.ts +3 -0
- package/statistics/features/supported/assignments/post-process.js +125 -0
- package/statistics/features/supported/comments/comments.d.ts +18 -0
- package/statistics/features/supported/comments/comments.js +133 -0
- package/statistics/features/supported/comments/index.d.ts +1 -0
- package/statistics/features/supported/comments/index.js +6 -0
- package/statistics/features/supported/comments/post-process.d.ts +3 -0
- package/statistics/features/supported/comments/post-process.js +50 -0
- package/statistics/features/supported/control-flow/control-flow.d.ts +17 -0
- package/statistics/features/supported/control-flow/control-flow.js +67 -0
- package/statistics/features/supported/control-flow/index.d.ts +1 -0
- package/statistics/features/supported/control-flow/index.js +6 -0
- package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
- package/statistics/features/supported/control-flow/post-process.js +65 -0
- package/statistics/features/supported/data-access/data-access.d.ts +15 -0
- package/statistics/features/supported/data-access/data-access.js +118 -0
- package/statistics/features/supported/data-access/index.d.ts +1 -0
- package/statistics/features/supported/data-access/index.js +6 -0
- package/statistics/features/supported/data-access/post-process.d.ts +3 -0
- package/statistics/features/supported/data-access/post-process.js +107 -0
- package/statistics/features/supported/defined-functions/defined-functions.d.ts +35 -0
- package/statistics/features/supported/defined-functions/defined-functions.js +139 -0
- package/statistics/features/supported/defined-functions/index.d.ts +1 -0
- package/statistics/features/supported/defined-functions/index.js +6 -0
- package/statistics/features/supported/defined-functions/post-process.d.ts +6 -0
- package/statistics/features/supported/defined-functions/post-process.js +177 -0
- package/statistics/features/supported/expression-list/expression-list.d.ts +9 -0
- package/statistics/features/supported/expression-list/expression-list.js +36 -0
- package/statistics/features/supported/expression-list/index.d.ts +1 -0
- package/statistics/features/supported/expression-list/index.js +6 -0
- package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
- package/statistics/features/supported/expression-list/post-process.js +44 -0
- package/statistics/features/supported/index.d.ts +10 -0
- package/statistics/features/supported/index.js +27 -0
- package/statistics/features/supported/loops/index.d.ts +1 -0
- package/statistics/features/supported/loops/index.js +6 -0
- package/statistics/features/supported/loops/loops.d.ts +20 -0
- package/statistics/features/supported/loops/loops.js +79 -0
- package/statistics/features/supported/loops/post-process.d.ts +3 -0
- package/statistics/features/supported/loops/post-process.js +72 -0
- package/statistics/features/supported/used-functions/index.d.ts +1 -0
- package/statistics/features/supported/used-functions/index.js +6 -0
- package/statistics/features/supported/used-functions/post-process.d.ts +6 -0
- package/statistics/features/supported/used-functions/post-process.js +179 -0
- package/statistics/features/supported/used-functions/used-functions.d.ts +24 -0
- package/statistics/features/supported/used-functions/used-functions.js +95 -0
- package/statistics/features/supported/used-packages/index.d.ts +1 -0
- package/statistics/features/supported/used-packages/index.js +6 -0
- package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
- package/statistics/features/supported/used-packages/post-process.js +121 -0
- package/statistics/features/supported/used-packages/used-packages.d.ts +16 -0
- package/statistics/features/supported/used-packages/used-packages.js +130 -0
- package/statistics/features/supported/values/index.d.ts +1 -0
- package/statistics/features/supported/values/index.js +6 -0
- package/statistics/features/supported/values/post-process.d.ts +3 -0
- package/statistics/features/supported/values/post-process.js +72 -0
- package/statistics/features/supported/values/values.d.ts +14 -0
- package/statistics/features/supported/values/values.js +101 -0
- package/statistics/features/supported/variables/index.d.ts +1 -0
- package/statistics/features/supported/variables/index.js +6 -0
- package/statistics/features/supported/variables/post-process.d.ts +9 -0
- package/statistics/features/supported/variables/post-process.js +122 -0
- package/statistics/features/supported/variables/variables.d.ts +15 -0
- package/statistics/features/supported/variables/variables.js +70 -0
- package/statistics/index.d.ts +6 -0
- package/statistics/index.js +24 -0
- package/statistics/meta-statistics.d.ts +33 -0
- package/statistics/meta-statistics.js +17 -0
- package/statistics/output/ansi.d.ts +50 -0
- package/statistics/output/ansi.js +58 -0
- package/statistics/output/file-provider.d.ts +37 -0
- package/statistics/output/file-provider.js +97 -0
- package/statistics/output/index.d.ts +4 -0
- package/statistics/output/index.js +21 -0
- package/statistics/output/print-stats.d.ts +17 -0
- package/statistics/output/print-stats.js +69 -0
- package/statistics/output/statistics-file.d.ts +37 -0
- package/statistics/output/statistics-file.js +69 -0
- package/statistics/statistics.d.ts +24 -0
- package/statistics/statistics.js +109 -0
- package/util/args.d.ts +14 -0
- package/util/args.js +67 -0
- package/util/arrays.d.ts +44 -0
- package/util/arrays.js +145 -0
- package/util/assert.d.ts +11 -0
- package/util/assert.js +35 -0
- package/util/bimap.d.ts +24 -0
- package/util/bimap.js +71 -0
- package/util/cfg.d.ts +55 -0
- package/util/cfg.js +498 -0
- package/util/defaultmap.d.ts +34 -0
- package/util/defaultmap.js +65 -0
- package/util/diff.d.ts +43 -0
- package/util/diff.js +28 -0
- package/util/files.d.ts +54 -0
- package/util/files.js +144 -0
- package/util/json.d.ts +2 -0
- package/util/json.js +28 -0
- package/util/log.d.ts +22 -0
- package/util/log.js +48 -0
- package/util/mermaid/ast.d.ts +6 -0
- package/util/mermaid/ast.js +28 -0
- package/util/mermaid/cfg.d.ts +7 -0
- package/util/mermaid/cfg.js +44 -0
- package/util/mermaid/dfg.d.ts +21 -0
- package/util/mermaid/dfg.js +165 -0
- package/util/mermaid/index.d.ts +3 -0
- package/util/mermaid/index.js +20 -0
- package/util/mermaid/mermaid.d.ts +7 -0
- package/util/mermaid/mermaid.js +24 -0
- package/util/numbers.d.ts +1 -0
- package/util/numbers.js +9 -0
- package/util/objects.d.ts +17 -0
- package/util/objects.js +60 -0
- package/util/os.d.ts +2 -0
- package/util/os.js +25 -0
- package/util/parallel.d.ts +30 -0
- package/util/parallel.js +103 -0
- package/util/quads.d.ts +92 -0
- package/util/quads.js +189 -0
- package/util/random.d.ts +4 -0
- package/util/random.js +22 -0
- package/util/range.d.ts +32 -0
- package/util/range.js +61 -0
- package/util/set.d.ts +8 -0
- package/util/set.js +32 -0
- package/util/strings.d.ts +12 -0
- package/util/strings.js +41 -0
- package/util/summarizer/auto-detect.d.ts +2 -0
- package/util/summarizer/auto-detect.js +32 -0
- package/util/summarizer/benchmark/benchmark-summarizer.js +208 -0
- package/util/summarizer/benchmark/data.d.ts +66 -0
- package/util/summarizer/benchmark/data.js +13 -0
- package/util/summarizer/benchmark/first-phase/input.d.ts +2 -0
- package/util/summarizer/benchmark/first-phase/input.js +59 -0
- package/util/summarizer/benchmark/first-phase/process.d.ts +10 -0
- package/util/summarizer/benchmark/first-phase/process.js +208 -0
- package/util/summarizer/benchmark/second-phase/graph.d.ts +2 -0
- package/util/summarizer/benchmark/second-phase/graph.js +54 -0
- package/util/summarizer/benchmark/second-phase/process.d.ts +4 -0
- package/util/summarizer/benchmark/second-phase/process.js +89 -0
- package/util/summarizer/benchmark/summarizer.d.ts +34 -0
- package/util/summarizer/benchmark/summarizer.js +53 -0
- package/util/summarizer/statistics/first-phase/process.d.ts +6 -0
- package/util/summarizer/statistics/first-phase/process.js +81 -0
- package/util/summarizer/statistics/post-process/clusterer.d.ts +26 -0
- package/util/summarizer/statistics/post-process/clusterer.js +43 -0
- package/util/summarizer/statistics/post-process/file-based-count.d.ts +17 -0
- package/util/summarizer/statistics/post-process/file-based-count.js +49 -0
- package/util/summarizer/statistics/post-process/histogram.d.ts +59 -0
- package/util/summarizer/statistics/post-process/histogram.js +128 -0
- package/util/summarizer/statistics/post-process/index.d.ts +4 -0
- package/util/summarizer/statistics/post-process/index.js +21 -0
- package/util/summarizer/statistics/post-process/post-process-output.d.ts +16 -0
- package/util/summarizer/statistics/post-process/post-process-output.js +104 -0
- package/util/summarizer/statistics/second-phase/process.d.ts +11 -0
- package/util/summarizer/statistics/second-phase/process.js +117 -0
- package/util/summarizer/statistics/summarizer.d.ts +34 -0
- package/util/summarizer/statistics/summarizer.js +135 -0
- package/util/summarizer/summarizer.d.ts +25 -0
- package/util/summarizer/summarizer.js +13 -0
- package/util/time.d.ts +6 -0
- package/util/time.js +13 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cloneEnvironments = exports.diffEnvironments = exports.diffEnvironment = exports.initializeCleanEnvironments = exports.DefaultEnvironmentMemory = exports.Environment = exports.makeAllMaybe = exports.diffIdentifierReferences = exports.BuiltIn = void 0;
|
|
4
|
+
const resolve_by_name_1 = require("./resolve-by-name");
|
|
5
|
+
const scopes_1 = require("./scopes");
|
|
6
|
+
const diff_1 = require("../../util/diff");
|
|
7
|
+
const json_1 = require("../../util/json");
|
|
8
|
+
exports.BuiltIn = 'built-in';
|
|
9
|
+
function diffIdentifierReferences(a, b, info) {
|
|
10
|
+
if (a.name !== b.name) {
|
|
11
|
+
info.report.addComment(`${info.position}Different identifier names: ${a.name} vs. ${b.name}`);
|
|
12
|
+
}
|
|
13
|
+
if (a.scope !== b.scope) {
|
|
14
|
+
info.report.addComment(`${info.position}Different scopes: ${a.scope} vs. ${b.scope}`);
|
|
15
|
+
}
|
|
16
|
+
if (a.nodeId !== b.nodeId) {
|
|
17
|
+
info.report.addComment(`${info.position}Different nodeIds: ${a.nodeId} vs. ${b.nodeId}`);
|
|
18
|
+
}
|
|
19
|
+
if (a.used !== b.used) {
|
|
20
|
+
info.report.addComment(`${info.position}Different used: ${a.used} vs. ${b.used}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.diffIdentifierReferences = diffIdentifierReferences;
|
|
24
|
+
function makeAllMaybe(references, graph, environments) {
|
|
25
|
+
if (references === undefined) {
|
|
26
|
+
return [];
|
|
27
|
+
}
|
|
28
|
+
return references.map(ref => {
|
|
29
|
+
const node = graph.get(ref.nodeId, true);
|
|
30
|
+
const definitions = (0, resolve_by_name_1.resolveByName)(ref.name, scopes_1.LocalScope, environments);
|
|
31
|
+
for (const definition of definitions ?? []) {
|
|
32
|
+
if (definition.kind !== 'built-in-function') {
|
|
33
|
+
definition.used = 'maybe';
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (node) {
|
|
37
|
+
node[0].when = 'maybe';
|
|
38
|
+
}
|
|
39
|
+
return { ...ref, used: 'maybe' };
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
exports.makeAllMaybe = makeAllMaybe;
|
|
43
|
+
let environmentIdCounter = 0;
|
|
44
|
+
class Environment {
|
|
45
|
+
name;
|
|
46
|
+
id = `${environmentIdCounter++}`;
|
|
47
|
+
parent;
|
|
48
|
+
memory;
|
|
49
|
+
constructor(name, parent) {
|
|
50
|
+
this.name = name;
|
|
51
|
+
this.parent = parent;
|
|
52
|
+
this.memory = new Map();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.Environment = Environment;
|
|
56
|
+
exports.DefaultEnvironmentMemory = new Map([
|
|
57
|
+
['return', [{
|
|
58
|
+
kind: 'built-in-function',
|
|
59
|
+
scope: scopes_1.GlobalScope,
|
|
60
|
+
used: 'always',
|
|
61
|
+
definedAt: exports.BuiltIn,
|
|
62
|
+
name: 'return',
|
|
63
|
+
nodeId: exports.BuiltIn
|
|
64
|
+
}]],
|
|
65
|
+
['cat', [{
|
|
66
|
+
kind: 'built-in-function',
|
|
67
|
+
scope: scopes_1.GlobalScope,
|
|
68
|
+
used: 'always',
|
|
69
|
+
definedAt: exports.BuiltIn,
|
|
70
|
+
name: 'cat',
|
|
71
|
+
nodeId: exports.BuiltIn
|
|
72
|
+
}]],
|
|
73
|
+
['print', [{
|
|
74
|
+
kind: 'built-in-function',
|
|
75
|
+
scope: scopes_1.GlobalScope,
|
|
76
|
+
used: 'always',
|
|
77
|
+
definedAt: exports.BuiltIn,
|
|
78
|
+
name: 'print',
|
|
79
|
+
nodeId: exports.BuiltIn
|
|
80
|
+
}]]
|
|
81
|
+
]);
|
|
82
|
+
function initializeCleanEnvironments() {
|
|
83
|
+
const global = new Environment(scopes_1.GlobalScope);
|
|
84
|
+
// use a copy
|
|
85
|
+
global.memory = new Map(exports.DefaultEnvironmentMemory);
|
|
86
|
+
return {
|
|
87
|
+
current: global,
|
|
88
|
+
level: 0
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
exports.initializeCleanEnvironments = initializeCleanEnvironments;
|
|
92
|
+
function diffEnvironment(a, b, info) {
|
|
93
|
+
if (a === undefined || b === undefined) {
|
|
94
|
+
if (a !== b) {
|
|
95
|
+
info.report.addComment(`${info.position}Different environments. ${info.leftname}: ${JSON.stringify(a, json_1.jsonReplacer)} vs. ${info.rightname}: ${JSON.stringify(b, json_1.jsonReplacer)}`);
|
|
96
|
+
}
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (a.name !== b.name) {
|
|
100
|
+
info.report.addComment(`${info.position}Different environment names. ${info.leftname}: ${JSON.stringify(a, json_1.jsonReplacer)} vs. ${info.rightname}: ${JSON.stringify(b, json_1.jsonReplacer)}`);
|
|
101
|
+
}
|
|
102
|
+
if (a.memory.size !== b.memory.size) {
|
|
103
|
+
info.report.addComment(`${info.position}Different environment sizes. ${info.leftname}: ${JSON.stringify(a, json_1.jsonReplacer)} vs. ${info.rightname}: ${JSON.stringify(b, json_1.jsonReplacer)}`);
|
|
104
|
+
(0, diff_1.setDifference)(new Set([...a.memory.keys()]), new Set([...b.memory.keys()]), { ...info, position: `${info.position}Key comparison. ` });
|
|
105
|
+
}
|
|
106
|
+
for (const [key, value] of a.memory) {
|
|
107
|
+
const value2 = b.memory.get(key);
|
|
108
|
+
if (value2 === undefined || value.length !== value2.length) {
|
|
109
|
+
info.report.addComment(`${info.position}Different definitions for ${key}. ${info.leftname}: ${JSON.stringify(value, json_1.jsonReplacer)} vs. ${info.rightname}: ${JSON.stringify(value2, json_1.jsonReplacer)}`);
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
for (let i = 0; i < value.length; ++i) {
|
|
113
|
+
const aVal = value[i];
|
|
114
|
+
const bVal = value2[i];
|
|
115
|
+
if (aVal.name !== bVal.name) {
|
|
116
|
+
info.report.addComment(`${info.position}Different names for ${key}. ${info.leftname}: ${aVal.name} vs. ${info.rightname}: ${bVal.name}`);
|
|
117
|
+
}
|
|
118
|
+
if (aVal.nodeId !== bVal.nodeId) {
|
|
119
|
+
info.report.addComment(`${info.position}Different ids for ${key}. ${info.leftname}: ${aVal.nodeId} vs. ${info.rightname}: ${bVal.nodeId}`);
|
|
120
|
+
}
|
|
121
|
+
if (aVal.scope !== bVal.scope) {
|
|
122
|
+
info.report.addComment(`${info.position}Different scopes for ${key}. ${info.leftname}: ${aVal.scope} vs. ${info.rightname}: ${bVal.scope}`);
|
|
123
|
+
}
|
|
124
|
+
if (aVal.used !== bVal.used) {
|
|
125
|
+
info.report.addComment(`${info.position}Different used for ${key}. ${info.leftname}: ${aVal.used} vs. ${info.rightname}: ${bVal.used}`);
|
|
126
|
+
}
|
|
127
|
+
if (aVal.definedAt !== bVal.definedAt) {
|
|
128
|
+
info.report.addComment(`${info.position}Different definition ids (definedAt) for ${key}. ${info.leftname}: ${aVal.definedAt} vs. ${info.rightname}: ${bVal.definedAt}`);
|
|
129
|
+
}
|
|
130
|
+
if (aVal.kind !== bVal.kind) {
|
|
131
|
+
info.report.addComment(`${info.position}Different kinds for ${key}. ${info.leftname}: ${aVal.kind} vs. ${info.rightname}: ${bVal.kind}`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
diffEnvironment(a.parent, b.parent, { ...info, position: `${info.position}Parents of ${a.id} & ${b.id}. ` });
|
|
136
|
+
}
|
|
137
|
+
exports.diffEnvironment = diffEnvironment;
|
|
138
|
+
function diffEnvironments(a, b, info) {
|
|
139
|
+
if (a === undefined || b === undefined) {
|
|
140
|
+
info.report.addComment(`${info.position}Different environments: ${JSON.stringify(a, json_1.jsonReplacer)} vs. ${JSON.stringify(b, json_1.jsonReplacer)}`);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
diffEnvironment(a.current, b.current, info);
|
|
144
|
+
}
|
|
145
|
+
exports.diffEnvironments = diffEnvironments;
|
|
146
|
+
function cloneEnvironment(environment, recurseParents) {
|
|
147
|
+
if (environment === undefined) {
|
|
148
|
+
return undefined;
|
|
149
|
+
}
|
|
150
|
+
const clone = new Environment(environment.name, recurseParents ? cloneEnvironment(environment.parent, recurseParents) : environment.parent);
|
|
151
|
+
clone.memory = new Map(JSON.parse(JSON.stringify([...environment.memory])));
|
|
152
|
+
return clone;
|
|
153
|
+
}
|
|
154
|
+
function cloneEnvironments(environment, recurseParents = true) {
|
|
155
|
+
return {
|
|
156
|
+
current: cloneEnvironment(environment.current, recurseParents),
|
|
157
|
+
level: environment.level
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
exports.cloneEnvironments = cloneEnvironments;
|
|
161
|
+
//# sourceMappingURL=environment.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./append"), exports);
|
|
18
|
+
__exportStar(require("./resolve-by-name"), exports);
|
|
19
|
+
__exportStar(require("./scoping"), exports);
|
|
20
|
+
__exportStar(require("./overwrite"), exports);
|
|
21
|
+
__exportStar(require("./environment"), exports);
|
|
22
|
+
__exportStar(require("./register"), exports);
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { REnvironmentInformation, IEnvironment } from './environment';
|
|
2
|
+
export declare function overwriteIEnvironmentWith(base: IEnvironment | undefined, next: IEnvironment | undefined, includeParent?: boolean): IEnvironment;
|
|
3
|
+
export declare function overwriteEnvironments(base: REnvironmentInformation, next: REnvironmentInformation | undefined): REnvironmentInformation;
|
|
4
|
+
export declare function overwriteEnvironments(base: REnvironmentInformation | undefined, next: REnvironmentInformation): REnvironmentInformation;
|
|
5
|
+
export declare function overwriteEnvironments(base: undefined, next: undefined): undefined;
|
|
6
|
+
export declare function overwriteEnvironments(base: REnvironmentInformation | undefined, next: REnvironmentInformation | undefined): REnvironmentInformation | undefined;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.overwriteEnvironments = exports.overwriteIEnvironmentWith = void 0;
|
|
4
|
+
const assert_1 = require("../../util/assert");
|
|
5
|
+
const environment_1 = require("./environment");
|
|
6
|
+
function anyIsMaybeGuardingSame(values) {
|
|
7
|
+
if (values.length === 0) {
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
const attr = values[0].used;
|
|
11
|
+
if (attr === 'maybe') {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
let same = true;
|
|
15
|
+
for (let i = 1; i < values.length; i++) {
|
|
16
|
+
const used = values[i].used;
|
|
17
|
+
if (used === 'maybe') {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- in case we want to add more attributes in the future
|
|
21
|
+
if (used !== attr) {
|
|
22
|
+
same = false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (!same) {
|
|
26
|
+
throw new Error('all values must have either a maybe or are all the same');
|
|
27
|
+
}
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
function overwriteIEnvironmentWith(base, next, includeParent = true) {
|
|
31
|
+
(0, assert_1.guard)(base !== undefined && next !== undefined, 'can not overwrite environments with undefined');
|
|
32
|
+
(0, assert_1.guard)(base.name === next.name, 'cannot overwrite environments with different names');
|
|
33
|
+
const map = new Map(base.memory);
|
|
34
|
+
for (const [key, values] of next.memory) {
|
|
35
|
+
const hasMaybe = anyIsMaybeGuardingSame(values);
|
|
36
|
+
if (hasMaybe) {
|
|
37
|
+
const old = map.get(key);
|
|
38
|
+
// we need to make a copy to avoid side effects for old reference in other environments
|
|
39
|
+
const updatedOld = old ?? [];
|
|
40
|
+
for (const v of values) {
|
|
41
|
+
const index = updatedOld.findIndex(o => o.nodeId === v.nodeId && o.definedAt === v.definedAt);
|
|
42
|
+
if (index < 0) {
|
|
43
|
+
updatedOld.push(v);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
map.set(key, [...updatedOld]);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
map.set(key, values);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
let parent;
|
|
53
|
+
if (includeParent) {
|
|
54
|
+
parent = base.parent === undefined ? undefined : overwriteIEnvironmentWith(base.parent, next.parent);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
parent = base.parent;
|
|
58
|
+
}
|
|
59
|
+
const out = new environment_1.Environment(base.name, parent);
|
|
60
|
+
out.memory = map;
|
|
61
|
+
return out;
|
|
62
|
+
}
|
|
63
|
+
exports.overwriteIEnvironmentWith = overwriteIEnvironmentWith;
|
|
64
|
+
/**
|
|
65
|
+
* Assumes, that all definitions within next replace those within base (given the same name).
|
|
66
|
+
* <b>But</b> if all definitions within next are maybe, then they are appended to the base definitions (updating them to be `maybe` from now on as well), similar to {@link appendEnvironments}.
|
|
67
|
+
*/
|
|
68
|
+
function overwriteEnvironments(base, next) {
|
|
69
|
+
if (base === undefined) {
|
|
70
|
+
return next;
|
|
71
|
+
}
|
|
72
|
+
else if (next === undefined) {
|
|
73
|
+
return base;
|
|
74
|
+
}
|
|
75
|
+
(0, assert_1.guard)(next.level === base.level, `cannot overwrite environments with differently nested local scopes, base ${base.level} vs. next ${next.level}. This should not happen.`);
|
|
76
|
+
return {
|
|
77
|
+
current: overwriteIEnvironmentWith(base.current, next.current),
|
|
78
|
+
level: base.level
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
exports.overwriteEnvironments = overwriteEnvironments;
|
|
82
|
+
//# sourceMappingURL=overwrite.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IdentifierDefinition, REnvironmentInformation } from './environment';
|
|
2
|
+
import { DataflowScopeName } from './scopes';
|
|
3
|
+
/**
|
|
4
|
+
* Insert the given `definition` --- defined within the given scope --- into the passed along `environments` will take care of propagation.
|
|
5
|
+
* Does not modify the passed along `environments` in-place! It returns the new reference.
|
|
6
|
+
*/
|
|
7
|
+
export declare function define(definition: IdentifierDefinition, withinScope: DataflowScopeName, environments: REnvironmentInformation): REnvironmentInformation;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.define = void 0;
|
|
4
|
+
const environment_1 = require("./environment");
|
|
5
|
+
const scopes_1 = require("./scopes");
|
|
6
|
+
const assert_1 = require("../../util/assert");
|
|
7
|
+
/**
|
|
8
|
+
* Insert the given `definition` --- defined within the given scope --- into the passed along `environments` will take care of propagation.
|
|
9
|
+
* Does not modify the passed along `environments` in-place! It returns the new reference.
|
|
10
|
+
*/
|
|
11
|
+
function define(definition, withinScope, environments) {
|
|
12
|
+
let newEnvironments = environments;
|
|
13
|
+
if (withinScope === scopes_1.LocalScope) {
|
|
14
|
+
newEnvironments = (0, environment_1.cloneEnvironments)(environments, false);
|
|
15
|
+
newEnvironments.current.memory.set(definition.name, [definition]);
|
|
16
|
+
}
|
|
17
|
+
else if (withinScope === scopes_1.GlobalScope) {
|
|
18
|
+
newEnvironments = (0, environment_1.cloneEnvironments)(environments, true);
|
|
19
|
+
let current = newEnvironments.current;
|
|
20
|
+
let last = undefined;
|
|
21
|
+
let found = false;
|
|
22
|
+
do {
|
|
23
|
+
if (current.memory.has(definition.name)) {
|
|
24
|
+
current.memory.set(definition.name, [definition]);
|
|
25
|
+
found = true;
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
last = current;
|
|
29
|
+
current = current.parent;
|
|
30
|
+
} while (current !== undefined);
|
|
31
|
+
if (!found) {
|
|
32
|
+
(0, assert_1.guard)(last !== undefined, () => `Could not find global scope for ${definition.name}`);
|
|
33
|
+
last.memory.set(definition.name, [definition]);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return newEnvironments;
|
|
37
|
+
}
|
|
38
|
+
exports.define = define;
|
|
39
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Identifier, IdentifierDefinition, REnvironmentInformation } from './environment';
|
|
2
|
+
import { DataflowScopeName } from './scopes';
|
|
3
|
+
/**
|
|
4
|
+
* Resolves a given identifier name to a list of its possible definition location using R scoping and resolving rules.
|
|
5
|
+
*
|
|
6
|
+
* @param name - The name of the identifier to resolve
|
|
7
|
+
* @param withinScope - The scope in which the identifier is used
|
|
8
|
+
* @param environments - The current environments used for name resolution
|
|
9
|
+
*
|
|
10
|
+
* @returns A list of possible definitions of the identifier (one if the definition location is exactly and always known), or `undefined` if the identifier is undefined in the current scope/with the current environment information.
|
|
11
|
+
*/
|
|
12
|
+
export declare function resolveByName(name: Identifier, withinScope: DataflowScopeName, environments: REnvironmentInformation): IdentifierDefinition[] | undefined;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveByName = void 0;
|
|
4
|
+
const index_1 = require("../index");
|
|
5
|
+
const scopes_1 = require("./scopes");
|
|
6
|
+
/**
|
|
7
|
+
* Resolves a given identifier name to a list of its possible definition location using R scoping and resolving rules.
|
|
8
|
+
*
|
|
9
|
+
* @param name - The name of the identifier to resolve
|
|
10
|
+
* @param withinScope - The scope in which the identifier is used
|
|
11
|
+
* @param environments - The current environments used for name resolution
|
|
12
|
+
*
|
|
13
|
+
* @returns A list of possible definitions of the identifier (one if the definition location is exactly and always known), or `undefined` if the identifier is undefined in the current scope/with the current environment information.
|
|
14
|
+
*/
|
|
15
|
+
function resolveByName(name, withinScope, environments) {
|
|
16
|
+
if (withinScope !== scopes_1.LocalScope) {
|
|
17
|
+
throw new Error('Non-local scoping is not yet supported');
|
|
18
|
+
}
|
|
19
|
+
return resolve(name, withinScope, environments);
|
|
20
|
+
}
|
|
21
|
+
exports.resolveByName = resolveByName;
|
|
22
|
+
function resolve(name, withinScope, environments) {
|
|
23
|
+
index_1.dataflowLogger.trace(`Resolving local identifier ${name} (scope name: ${withinScope}, local stack size: ${environments.level})`);
|
|
24
|
+
let current = environments.current;
|
|
25
|
+
do {
|
|
26
|
+
const definition = current.memory.get(name);
|
|
27
|
+
if (definition !== undefined) {
|
|
28
|
+
return definition;
|
|
29
|
+
}
|
|
30
|
+
current = current.parent;
|
|
31
|
+
} while (current !== undefined);
|
|
32
|
+
index_1.dataflowLogger.trace(`Unable to find identifier ${name} in stack`);
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=resolve-by-name.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const GlobalScope = ".GlobalEnv";
|
|
2
|
+
export declare const LocalScope = "local";
|
|
3
|
+
/**
|
|
4
|
+
* Used to represent usual R scopes
|
|
5
|
+
*/
|
|
6
|
+
export type DataflowScopeName = /** default R global environment */ typeof GlobalScope | /** unspecified automatic local environment */ typeof LocalScope | /** named environments */ string;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { REnvironmentInformation } from './environment';
|
|
2
|
+
/** Add a new local environment scope to the stack, returns the modified variant - sharing the original environments in the stack (no deep-clone) */
|
|
3
|
+
export declare function pushLocalEnvironment(base: REnvironmentInformation): REnvironmentInformation;
|
|
4
|
+
export declare function popLocalEnvironment(base: REnvironmentInformation): REnvironmentInformation;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.popLocalEnvironment = exports.pushLocalEnvironment = void 0;
|
|
4
|
+
const environment_1 = require("./environment");
|
|
5
|
+
const assert_1 = require("../../util/assert");
|
|
6
|
+
const scopes_1 = require("./scopes");
|
|
7
|
+
/** Add a new local environment scope to the stack, returns the modified variant - sharing the original environments in the stack (no deep-clone) */
|
|
8
|
+
function pushLocalEnvironment(base) {
|
|
9
|
+
const local = new environment_1.Environment(scopes_1.LocalScope);
|
|
10
|
+
local.parent = base.current;
|
|
11
|
+
return {
|
|
12
|
+
current: local,
|
|
13
|
+
level: base.level + 1
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
exports.pushLocalEnvironment = pushLocalEnvironment;
|
|
17
|
+
function popLocalEnvironment(base) {
|
|
18
|
+
(0, assert_1.guard)(base.level > 0, 'cannot remove the global/root environment');
|
|
19
|
+
const parent = base.current.parent;
|
|
20
|
+
(0, assert_1.guard)(parent !== undefined, 'level is wrong, parent is undefined even though level suggested depth > 0 (starts with 0)');
|
|
21
|
+
return {
|
|
22
|
+
current: parent,
|
|
23
|
+
level: base.level - 1
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
exports.popLocalEnvironment = popLocalEnvironment;
|
|
27
|
+
//# sourceMappingURL=scoping.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { NormalizedAst, ParentInformation, RBinaryOp } from '../r-bridge';
|
|
2
|
+
import { DataflowInformation } from './internal/info';
|
|
3
|
+
import { DataflowProcessorInformation } from './processor';
|
|
4
|
+
import { DataflowScopeName } from './environments';
|
|
5
|
+
export declare function produceDataFlowGraph<OtherInfo>(ast: NormalizedAst<OtherInfo & ParentInformation>, initialScope?: DataflowScopeName): DataflowInformation;
|
|
6
|
+
export declare function processBinaryOp<OtherInfo>(node: RBinaryOp<OtherInfo & ParentInformation>, data: DataflowProcessorInformation<OtherInfo & ParentInformation>): DataflowInformation;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.processBinaryOp = exports.produceDataFlowGraph = void 0;
|
|
4
|
+
const processor_1 = require("./processor");
|
|
5
|
+
const uninteresting_leaf_1 = require("./internal/process/uninteresting-leaf");
|
|
6
|
+
const symbol_1 = require("./internal/process/symbol");
|
|
7
|
+
const non_assignment_binary_op_1 = require("./internal/process/operators/non-assignment-binary-op");
|
|
8
|
+
const unary_op_1 = require("./internal/process/operators/unary-op");
|
|
9
|
+
const expression_list_1 = require("./internal/process/expression-list");
|
|
10
|
+
const repeat_loop_1 = require("./internal/process/loops/repeat-loop");
|
|
11
|
+
const for_loop_1 = require("./internal/process/loops/for-loop");
|
|
12
|
+
const while_loop_1 = require("./internal/process/loops/while-loop");
|
|
13
|
+
const if_then_else_1 = require("./internal/process/if-then-else");
|
|
14
|
+
const function_call_1 = require("./internal/process/functions/function-call");
|
|
15
|
+
const function_definition_1 = require("./internal/process/functions/function-definition");
|
|
16
|
+
const parameter_1 = require("./internal/process/functions/parameter");
|
|
17
|
+
const environments_1 = require("./environments");
|
|
18
|
+
const argument_1 = require("./internal/process/functions/argument");
|
|
19
|
+
const assignment_1 = require("./internal/process/operators/assignment");
|
|
20
|
+
const access_1 = require("./internal/process/access");
|
|
21
|
+
const pipe_1 = require("./internal/process/operators/pipe");
|
|
22
|
+
const scopes_1 = require("./environments/scopes");
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- allows type adaption without re-creation
|
|
24
|
+
const processors = {
|
|
25
|
+
["RNumber" /* RType.Number */]: uninteresting_leaf_1.processUninterestingLeaf,
|
|
26
|
+
["RString" /* RType.String */]: uninteresting_leaf_1.processUninterestingLeaf,
|
|
27
|
+
["RLogical" /* RType.Logical */]: uninteresting_leaf_1.processUninterestingLeaf,
|
|
28
|
+
["RAccess" /* RType.Access */]: access_1.processAccess,
|
|
29
|
+
["RSymbol" /* RType.Symbol */]: symbol_1.processSymbol,
|
|
30
|
+
["RBinaryOp" /* RType.BinaryOp */]: processBinaryOp,
|
|
31
|
+
["RPipe" /* RType.Pipe */]: pipe_1.processPipeOperation,
|
|
32
|
+
["RUnaryOp" /* RType.UnaryOp */]: unary_op_1.processUnaryOp,
|
|
33
|
+
["RForLoop" /* RType.ForLoop */]: for_loop_1.processForLoop,
|
|
34
|
+
["RWhileLoop" /* RType.WhileLoop */]: while_loop_1.processWhileLoop,
|
|
35
|
+
["RRepeatLoop" /* RType.RepeatLoop */]: repeat_loop_1.processRepeatLoop,
|
|
36
|
+
["RIfThenElse" /* RType.IfThenElse */]: if_then_else_1.processIfThenElse,
|
|
37
|
+
["RBreak" /* RType.Break */]: uninteresting_leaf_1.processUninterestingLeaf,
|
|
38
|
+
["RNext" /* RType.Next */]: uninteresting_leaf_1.processUninterestingLeaf,
|
|
39
|
+
["RComment" /* RType.Comment */]: uninteresting_leaf_1.processUninterestingLeaf,
|
|
40
|
+
["RLineDirective" /* RType.LineDirective */]: uninteresting_leaf_1.processUninterestingLeaf,
|
|
41
|
+
["RFunctionCall" /* RType.FunctionCall */]: function_call_1.processFunctionCall,
|
|
42
|
+
["RFunctionDefinition" /* RType.FunctionDefinition */]: function_definition_1.processFunctionDefinition,
|
|
43
|
+
["RParameter" /* RType.Parameter */]: parameter_1.processFunctionParameter,
|
|
44
|
+
["RArgument" /* RType.Argument */]: argument_1.processFunctionArgument,
|
|
45
|
+
["RExpressionList" /* RType.ExpressionList */]: expression_list_1.processExpressionList,
|
|
46
|
+
};
|
|
47
|
+
function produceDataFlowGraph(ast, initialScope = scopes_1.LocalScope) {
|
|
48
|
+
return (0, processor_1.processDataflowFor)(ast.ast, { completeAst: ast, activeScope: initialScope, environments: (0, environments_1.initializeCleanEnvironments)(), processors: processors });
|
|
49
|
+
}
|
|
50
|
+
exports.produceDataFlowGraph = produceDataFlowGraph;
|
|
51
|
+
function processBinaryOp(node, data) {
|
|
52
|
+
if (node.flavor === 'assignment') {
|
|
53
|
+
return (0, assignment_1.processAssignment)(node, data);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
return (0, non_assignment_binary_op_1.processNonAssignmentBinaryOp)(node, data);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.processBinaryOp = processBinaryOp;
|
|
60
|
+
//# sourceMappingURL=extractor.js.map
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { NodeId } from '../../r-bridge';
|
|
2
|
+
import { DataflowGraph, FunctionArgument, OutgoingEdges } from './graph';
|
|
3
|
+
import { GenericDifferenceInformation, DifferenceReport } from '../../util/diff';
|
|
4
|
+
export interface NamedGraph {
|
|
5
|
+
name: string;
|
|
6
|
+
graph: DataflowGraph;
|
|
7
|
+
}
|
|
8
|
+
interface DataflowDiffContext extends GenericDifferenceInformation {
|
|
9
|
+
left: DataflowGraph;
|
|
10
|
+
right: DataflowGraph;
|
|
11
|
+
}
|
|
12
|
+
export declare function diffOfDataflowGraphs(left: NamedGraph, right: NamedGraph): DifferenceReport;
|
|
13
|
+
export declare function equalExitPoints(a: NodeId[] | undefined, b: NodeId[] | undefined): boolean;
|
|
14
|
+
export declare function equalFunctionArguments(a: false | FunctionArgument[], b: false | FunctionArgument[]): boolean;
|
|
15
|
+
export declare function diffFunctionArguments(a: false | FunctionArgument[], b: false | FunctionArgument[], ctx: GenericDifferenceInformation): void;
|
|
16
|
+
export declare function diffVertices(ctx: DataflowDiffContext): void;
|
|
17
|
+
export declare function diffEdges(ctx: DataflowDiffContext, id: NodeId, lEdges: OutgoingEdges | undefined, rEdges: OutgoingEdges | undefined): void;
|
|
18
|
+
export {};
|