@eagleoutice/flowr 1.5.2 → 2.0.1
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/abstract-interpretation/handler/binop/binop.d.ts +3 -4
- package/abstract-interpretation/handler/binop/binop.js +4 -2
- package/abstract-interpretation/handler/binop/operators.d.ts +2 -2
- package/abstract-interpretation/handler/binop/operators.js +14 -28
- package/abstract-interpretation/processor.d.ts +3 -2
- package/abstract-interpretation/processor.js +2 -2
- package/benchmark/slicer.d.ts +101 -0
- package/benchmark/slicer.js +214 -0
- package/benchmark/stats/print.d.ts +7 -0
- package/benchmark/stats/print.js +151 -0
- package/benchmark/stats/stats.d.ts +42 -0
- package/benchmark/stats/stats.js +6 -0
- package/benchmark/stopwatch.d.ts +35 -0
- package/benchmark/stopwatch.js +79 -0
- package/benchmark/summarizer/data.d.ts +54 -0
- package/benchmark/summarizer/first-phase/input.d.ts +3 -0
- package/benchmark/summarizer/first-phase/input.js +76 -0
- package/benchmark/summarizer/first-phase/process.d.ts +11 -0
- package/benchmark/summarizer/first-phase/process.js +205 -0
- package/benchmark/summarizer/second-phase/graph.d.ts +2 -0
- package/benchmark/summarizer/second-phase/graph.js +54 -0
- package/benchmark/summarizer/second-phase/process.d.ts +6 -0
- package/benchmark/summarizer/second-phase/process.js +127 -0
- package/benchmark/summarizer/summarizer.d.ts +31 -0
- package/benchmark/summarizer/summarizer.js +58 -0
- package/cli/benchmark-app.d.ts +10 -0
- package/cli/benchmark-app.js +67 -0
- package/cli/benchmark-helper-app.d.ts +9 -0
- package/cli/benchmark-helper-app.js +69 -0
- package/cli/common/features.d.ts +3 -0
- package/cli/common/features.js +30 -0
- package/cli/common/options.d.ts +20 -0
- package/cli/common/options.js +85 -0
- package/cli/common/script.d.ts +21 -0
- package/cli/common/script.js +61 -0
- package/cli/common/scripts-info.d.ts +25 -0
- package/cli/common/scripts-info.js +83 -0
- package/cli/export-quads-app.d.ts +7 -0
- package/cli/export-quads-app.js +43 -0
- package/cli/flowr.d.ts +29 -0
- package/cli/flowr.js +141 -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 +13 -0
- package/cli/repl/commands/commands.js +142 -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/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 +110 -0
- package/cli/repl/commands/quit.d.ts +2 -0
- package/cli/repl/commands/quit.js +15 -0
- package/cli/repl/commands/version.d.ts +16 -0
- package/cli/repl/commands/version.js +28 -0
- package/cli/repl/core.d.ts +36 -0
- package/cli/repl/core.js +174 -0
- package/cli/repl/execute.d.ts +28 -0
- package/cli/repl/execute.js +79 -0
- package/cli/repl/print-version.d.ts +2 -0
- package/cli/repl/print-version.js +10 -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 +218 -0
- package/cli/repl/server/messages/analysis.d.ts +72 -0
- package/cli/repl/server/messages/analysis.js +21 -0
- package/cli/repl/server/messages/error.d.ts +11 -0
- package/{core/input.js → cli/repl/server/messages/error.js} +1 -1
- package/cli/repl/server/messages/hello.d.ts +20 -0
- package/{core/output.js → cli/repl/server/messages/hello.js} +1 -1
- package/cli/repl/server/messages/messages.d.ts +35 -0
- package/cli/repl/server/messages/messages.js +40 -0
- package/cli/repl/server/messages/repl.d.ts +33 -0
- package/cli/repl/server/messages/repl.js +37 -0
- package/cli/repl/server/messages/slice.d.ts +26 -0
- package/cli/repl/server/messages/slice.js +37 -0
- package/cli/repl/server/net.d.ts +49 -0
- package/cli/repl/server/net.js +63 -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 +83 -0
- package/cli/statistics-app.d.ts +11 -0
- package/cli/statistics-app.js +99 -0
- package/cli/statistics-helper-app.d.ts +11 -0
- package/cli/statistics-helper-app.js +87 -0
- package/cli/summarizer-app.d.ts +18 -0
- package/cli/summarizer-app.js +66 -0
- package/core/pipeline-executor.d.ts +154 -0
- package/core/pipeline-executor.js +221 -0
- package/core/print/dataflow-printer.d.ts +3 -4
- package/core/print/dataflow-printer.js +5 -5
- package/core/print/normalize-printer.d.ts +1 -1
- package/core/print/normalize-printer.js +3 -3
- package/core/print/parse-printer.js +3 -3
- package/core/print/print.d.ts +13 -4
- package/core/print/print.js +13 -2
- package/core/print/slice-diff-ansi.d.ts +3 -2
- package/core/print/slice-diff-ansi.js +4 -4
- package/core/steps/all/core/00-parse.d.ts +28 -0
- package/core/steps/all/core/00-parse.js +24 -0
- package/core/steps/all/core/10-normalize.d.ts +29 -0
- package/core/steps/all/core/10-normalize.js +26 -0
- package/core/steps/all/core/20-dataflow.d.ts +27 -0
- package/core/steps/all/core/20-dataflow.js +29 -0
- package/core/steps/all/static-slicing/00-slice.d.ts +28 -0
- package/core/steps/all/static-slicing/00-slice.js +21 -0
- package/core/steps/all/static-slicing/10-reconstruct.d.ts +25 -0
- package/core/steps/all/static-slicing/10-reconstruct.js +21 -0
- package/core/steps/pipeline/create-pipeline.d.ts +6 -0
- package/core/steps/pipeline/create-pipeline.js +130 -0
- package/core/steps/pipeline/default-pipelines.d.ts +251 -0
- package/core/steps/pipeline/default-pipelines.js +18 -0
- package/core/steps/pipeline/invalid-pipeline-error.d.ts +6 -0
- package/core/steps/pipeline/invalid-pipeline-error.js +14 -0
- package/core/steps/pipeline/pipeline.d.ts +60 -0
- package/core/steps/pipeline/pipeline.js +28 -0
- package/core/steps/pipeline-step.d.ts +85 -0
- package/core/steps/pipeline-step.js +8 -0
- package/dataflow/environments/append.d.ts +4 -4
- package/dataflow/environments/append.js +4 -4
- package/dataflow/environments/built-in.d.ts +25 -0
- package/dataflow/environments/built-in.js +123 -0
- package/dataflow/environments/clone.d.ts +2 -0
- package/dataflow/environments/clone.js +23 -0
- package/dataflow/environments/{register.d.ts → define.d.ts} +3 -3
- package/dataflow/environments/define.js +51 -0
- package/dataflow/environments/diff.d.ts +6 -0
- package/dataflow/environments/diff.js +85 -0
- package/dataflow/environments/environment.d.ts +10 -43
- package/dataflow/environments/environment.js +32 -138
- package/dataflow/environments/identifier.d.ts +31 -0
- package/dataflow/environments/identifier.js +3 -0
- package/dataflow/environments/overwrite.d.ts +4 -4
- package/dataflow/environments/overwrite.js +9 -22
- package/dataflow/environments/resolve-by-name.d.ts +7 -6
- package/dataflow/environments/resolve-by-name.js +35 -19
- package/dataflow/environments/scoping.js +1 -4
- package/dataflow/extractor.d.ts +6 -6
- package/dataflow/extractor.js +47 -57
- package/dataflow/graph/diff.d.ts +24 -7
- package/dataflow/graph/diff.js +114 -74
- package/dataflow/graph/edge.d.ts +66 -20
- package/dataflow/graph/edge.js +73 -27
- package/dataflow/graph/graph.d.ts +53 -29
- package/dataflow/graph/graph.js +84 -89
- package/dataflow/graph/quads.js +2 -2
- package/dataflow/graph/vertex.d.ts +37 -34
- package/dataflow/info.d.ts +49 -0
- package/dataflow/info.js +29 -0
- package/dataflow/internal/linker.d.ts +11 -10
- package/dataflow/internal/linker.js +64 -90
- package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +6 -0
- package/dataflow/internal/process/functions/call/argument/make-argument.js +31 -0
- package/dataflow/internal/process/functions/call/argument/unpack-argument.d.ts +3 -0
- package/dataflow/internal/process/functions/call/argument/unpack-argument.js +18 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +9 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-access.js +82 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +29 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-assignment.js +167 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.d.ts +11 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +165 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +97 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +165 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-get.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-get.js +36 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +100 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-library.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-library.js +32 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-logical-bin-op.d.ts +9 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-logical-bin-op.js +35 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-pipe.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +35 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-quote.d.ts +9 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-quote.js +29 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +32 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-replacement.d.ts +12 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +45 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +11 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-source.js +72 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +61 -0
- package/dataflow/internal/process/functions/call/common.d.ts +35 -0
- package/dataflow/internal/process/functions/call/common.js +70 -0
- package/dataflow/internal/process/functions/call/default-call-handling.d.ts +5 -0
- package/dataflow/internal/process/functions/call/default-call-handling.js +15 -0
- package/dataflow/internal/process/functions/call/known-call-handling.d.ts +26 -0
- package/dataflow/internal/process/functions/call/known-call-handling.js +62 -0
- package/dataflow/internal/process/functions/call/named-call-handling.d.ts +7 -0
- package/dataflow/internal/process/functions/call/named-call-handling.js +53 -0
- package/dataflow/internal/process/functions/call/unnamed-call-handling.d.ts +6 -0
- package/dataflow/internal/process/functions/call/unnamed-call-handling.js +58 -0
- package/dataflow/internal/process/functions/process-argument.d.ts +9 -0
- package/dataflow/internal/process/functions/{argument.js → process-argument.js} +25 -20
- package/dataflow/internal/process/functions/{parameter.d.ts → process-parameter.d.ts} +3 -2
- package/dataflow/internal/process/functions/{parameter.js → process-parameter.js} +10 -13
- package/dataflow/internal/process/process-named-call.d.ts +6 -0
- package/dataflow/internal/process/process-named-call.js +17 -0
- package/dataflow/internal/process/process-symbol.d.ts +5 -0
- package/dataflow/internal/process/process-symbol.js +26 -0
- package/dataflow/internal/process/process-uninteresting-leaf.d.ts +4 -0
- package/dataflow/internal/process/process-uninteresting-leaf.js +9 -0
- package/dataflow/internal/process/process-value.d.ts +4 -0
- package/dataflow/internal/process/process-value.js +22 -0
- package/dataflow/logger.d.ts +1 -0
- package/dataflow/logger.js +6 -0
- package/dataflow/processor.d.ts +18 -13
- package/dataflow/processor.js +1 -1
- package/package.json +48 -85
- package/r-bridge/data/data.d.ts +603 -0
- package/r-bridge/data/data.js +753 -0
- package/r-bridge/data/get.d.ts +19 -0
- package/r-bridge/data/get.js +51 -0
- package/r-bridge/data/print.d.ts +1 -0
- package/r-bridge/data/print.js +58 -0
- package/r-bridge/data/types.d.ts +33 -0
- package/r-bridge/data/types.js +3 -0
- package/r-bridge/init.d.ts +3 -0
- package/r-bridge/init.js +22 -0
- package/r-bridge/lang-4.x/ast/model/collect.d.ts +2 -1
- package/r-bridge/lang-4.x/ast/model/collect.js +2 -2
- package/r-bridge/lang-4.x/ast/model/model.d.ts +26 -5
- package/r-bridge/lang-4.x/ast/model/nodes/r-access.d.ts +4 -3
- package/r-bridge/lang-4.x/ast/model/nodes/r-argument.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-binary-op.d.ts +0 -17
- package/r-bridge/lang-4.x/ast/model/nodes/r-expression-list.d.ts +3 -1
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +6 -4
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.js +2 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-definition.d.ts +2 -3
- package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +2 -2
- package/r-bridge/lang-4.x/ast/model/nodes/r-unary-op.d.ts +0 -11
- package/r-bridge/lang-4.x/ast/model/operators.d.ts +6 -18
- package/r-bridge/lang-4.x/ast/model/operators.js +36 -48
- package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +19 -15
- package/r-bridge/lang-4.x/ast/model/processing/decorate.js +59 -54
- package/r-bridge/lang-4.x/ast/model/processing/node-id.d.ts +8 -0
- package/r-bridge/lang-4.x/ast/model/processing/node-id.js +18 -0
- package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +2 -2
- package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +28 -17
- package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.js +7 -34
- package/r-bridge/lang-4.x/ast/model/processing/visitor.js +5 -2
- package/r-bridge/lang-4.x/ast/model/type.js +13 -6
- package/r-bridge/lang-4.x/ast/parser/json/format.d.ts +4 -1
- package/r-bridge/lang-4.x/ast/parser/json/format.js +9 -2
- package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +5 -5
- package/r-bridge/lang-4.x/ast/parser/json/parser.js +22 -27
- package/r-bridge/lang-4.x/ast/parser/xml/input-format.d.ts +10 -7
- package/r-bridge/lang-4.x/ast/parser/xml/input-format.js +19 -11
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then-else.d.ts → normalize-if-then-else.d.ts} +3 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then-else.js → normalize-if-then-else.js} +10 -13
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then.d.ts → normalize-if-then.d.ts} +3 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then.js → normalize-if-then.js} +9 -12
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/normalize-expression.d.ts +10 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/normalize-expression.js +64 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{argument.d.ts → normalize-argument.d.ts} +4 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{argument.js → normalize-argument.js} +13 -17
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{call.d.ts → normalize-call.d.ts} +6 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{call.js → normalize-call.js} +24 -29
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/normalize-definition.d.ts +12 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{definition.js → normalize-definition.js} +14 -19
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{parameter.d.ts → normalize-parameter.d.ts} +4 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{parameter.js → normalize-parameter.js} +12 -16
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-break.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{break.js → normalize-break.js} +6 -8
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-for.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{for.js → normalize-for.js} +18 -20
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-next.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{next.js → normalize-next.js} +6 -8
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-repeat.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{repeat.js → normalize-repeat.js} +13 -16
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-while.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{while.js → normalize-while.js} +10 -12
- package/r-bridge/lang-4.x/ast/parser/xml/internal/{access.d.ts → normalize-access.d.ts} +4 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/{access.js → normalize-access.js} +44 -45
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/{binary.d.ts → normalize-binary.d.ts} +3 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/{binary.js → normalize-binary.js} +23 -73
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/normalize-unary.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/normalize-unary.js +47 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/normalize-comment.d.ts +11 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/{comment.js → normalize-comment.js} +5 -10
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/normalize-line-directive.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/{line-directive.js → normalize-line-directive.js} +7 -12
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-delimiter.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-delimiter.js +15 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-expressions.d.ts +10 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-expressions.js +182 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-root.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-root.js +34 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-single-node.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-single-node.js +59 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/normalize-number.d.ts +16 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{number.js → normalize-number.js} +12 -18
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/normalize-string.d.ts +11 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{string.js → normalize-string.js} +7 -12
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{symbol.d.ts → normalize-symbol.d.ts} +4 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{symbol.js → normalize-symbol.js} +12 -15
- package/r-bridge/lang-4.x/ast/parser/xml/{internal/meta.d.ts → normalize-meta.d.ts} +5 -3
- package/r-bridge/lang-4.x/ast/parser/xml/{internal/meta.js → normalize-meta.js} +8 -8
- package/r-bridge/lang-4.x/ast/parser/xml/{data.d.ts → normalizer-data.d.ts} +1 -5
- package/r-bridge/lang-4.x/ast/parser/xml/normalizer-data.js +3 -0
- package/r-bridge/lang-4.x/{values.d.ts → convert-values.d.ts} +2 -2
- package/r-bridge/lang-4.x/{values.js → convert-values.js} +5 -5
- package/r-bridge/retriever.d.ts +5 -5
- package/r-bridge/retriever.js +11 -24
- package/r-bridge/shell-executor.d.ts +0 -1
- package/r-bridge/shell-executor.js +7 -12
- package/r-bridge/shell.d.ts +14 -12
- package/r-bridge/shell.js +50 -45
- package/reconstruct/reconstruct.d.ts +4 -2
- package/reconstruct/reconstruct.js +193 -185
- package/slicing/criterion/collect-all.d.ts +4 -3
- package/slicing/criterion/collect-all.js +5 -1
- package/slicing/criterion/filters/all-variables.js +14 -22
- package/slicing/criterion/parse.d.ts +4 -2
- package/slicing/criterion/parse.js +13 -11
- package/slicing/static/fingerprint.d.ts +5 -0
- package/slicing/static/fingerprint.js +17 -0
- package/slicing/static/slice-call.d.ts +10 -0
- package/slicing/static/slice-call.js +86 -0
- package/slicing/static/slicer-types.d.ts +33 -0
- package/slicing/static/slicer-types.js +3 -0
- package/slicing/static/static-slicer.d.ts +6 -24
- package/slicing/static/static-slicer.js +54 -155
- package/slicing/static/visiting-queue.d.ts +23 -0
- package/slicing/static/visiting-queue.js +53 -0
- package/statistics/features/common-syntax-probability.d.ts +29 -0
- package/statistics/features/common-syntax-probability.js +159 -0
- package/statistics/features/feature.d.ts +182 -0
- package/statistics/features/feature.js +39 -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 +12 -0
- package/statistics/features/supported/assignments/assignments.js +55 -0
- package/statistics/features/supported/assignments/post-process.d.ts +3 -0
- package/statistics/features/supported/assignments/post-process.js +124 -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/post-process.d.ts +3 -0
- package/statistics/features/supported/comments/post-process.js +49 -0
- package/statistics/features/supported/control-flow/control-flow.d.ts +17 -0
- package/statistics/features/supported/control-flow/control-flow.js +68 -0
- package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
- package/statistics/features/supported/control-flow/post-process.js +64 -0
- package/statistics/features/supported/data-access/data-access.d.ts +15 -0
- package/statistics/features/supported/data-access/data-access.js +120 -0
- package/statistics/features/supported/data-access/post-process.d.ts +3 -0
- package/statistics/features/supported/data-access/post-process.js +106 -0
- package/statistics/features/supported/defined-functions/defined-functions.d.ts +34 -0
- package/statistics/features/supported/defined-functions/defined-functions.js +142 -0
- package/statistics/features/supported/defined-functions/post-process.d.ts +6 -0
- package/statistics/features/supported/defined-functions/post-process.js +169 -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/post-process.d.ts +3 -0
- package/statistics/features/supported/expression-list/post-process.js +43 -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 +71 -0
- package/statistics/features/supported/used-functions/post-process.d.ts +6 -0
- package/statistics/features/supported/used-functions/post-process.js +178 -0
- package/statistics/features/supported/used-functions/used-functions.d.ts +24 -0
- package/statistics/features/supported/used-functions/used-functions.js +97 -0
- package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
- package/statistics/features/supported/used-packages/post-process.js +120 -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/post-process.d.ts +3 -0
- package/statistics/features/supported/values/post-process.js +71 -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/post-process.d.ts +9 -0
- package/statistics/features/supported/variables/post-process.js +121 -0
- package/statistics/features/supported/variables/variables.d.ts +15 -0
- package/statistics/features/supported/variables/variables.js +60 -0
- package/statistics/meta-statistics.d.ts +33 -0
- package/statistics/meta-statistics.js +17 -0
- package/statistics/output/file-provider.d.ts +37 -0
- package/statistics/output/file-provider.js +97 -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 +28 -0
- package/statistics/statistics.js +108 -0
- package/statistics/summarizer/auto-detect.d.ts +2 -0
- package/statistics/summarizer/auto-detect.js +32 -0
- package/statistics/summarizer/first-phase/process.d.ts +6 -0
- package/statistics/summarizer/first-phase/process.js +81 -0
- package/statistics/summarizer/post-process/clusterer.d.ts +26 -0
- package/statistics/summarizer/post-process/clusterer.js +43 -0
- package/statistics/summarizer/post-process/file-based-count.d.ts +17 -0
- package/statistics/summarizer/post-process/file-based-count.js +49 -0
- package/statistics/summarizer/post-process/histogram.d.ts +59 -0
- package/statistics/summarizer/post-process/histogram.js +128 -0
- package/statistics/summarizer/post-process/post-process-output.d.ts +16 -0
- package/statistics/summarizer/post-process/post-process-output.js +105 -0
- package/statistics/summarizer/second-phase/process.d.ts +11 -0
- package/statistics/summarizer/second-phase/process.js +116 -0
- package/statistics/summarizer/summarizer.d.ts +35 -0
- package/statistics/summarizer/summarizer.js +135 -0
- package/util/ansi.d.ts +2 -2
- package/util/ansi.js +2 -2
- package/util/arrays.d.ts +11 -1
- package/util/arrays.js +34 -1
- package/util/assert.d.ts +1 -0
- package/util/assert.js +5 -1
- package/util/cfg/cfg.d.ts +3 -2
- package/util/cfg/cfg.js +17 -28
- package/util/cfg/visitor.d.ts +1 -1
- package/util/defaultmap.d.ts +1 -1
- package/util/defaultmap.js +1 -1
- package/util/diff.d.ts +4 -4
- package/util/files.d.ts +2 -2
- package/util/files.js +1 -1
- package/util/log.d.ts +1 -0
- package/util/log.js +7 -1
- package/util/logic.d.ts +1 -0
- package/util/logic.js +3 -0
- package/util/mermaid/ast.d.ts +1 -1
- package/util/mermaid/ast.js +2 -2
- package/util/mermaid/cfg.d.ts +1 -1
- package/util/mermaid/dfg.d.ts +34 -8
- package/util/mermaid/dfg.js +99 -70
- package/util/mermaid/mermaid.d.ts +1 -1
- package/util/mermaid/mermaid.js +6 -7
- package/util/objects.js +4 -0
- package/util/quads.d.ts +3 -3
- package/util/quads.js +0 -1
- package/util/range.d.ts +27 -14
- package/util/range.js +31 -27
- package/util/version.js +1 -1
- package/core/index.d.ts +0 -4
- package/core/index.js +0 -23
- package/core/input.d.ts +0 -42
- package/core/output.d.ts +0 -15
- package/core/slicer.d.ts +0 -124
- package/core/slicer.js +0 -227
- package/core/steps.d.ts +0 -508
- package/core/steps.js +0 -100
- package/dataflow/environments/index.d.ts +0 -7
- package/dataflow/environments/index.js +0 -23
- package/dataflow/environments/register.js +0 -40
- package/dataflow/environments/scopes.d.ts +0 -6
- package/dataflow/environments/scopes.js +0 -6
- package/dataflow/graph/index.d.ts +0 -4
- package/dataflow/graph/index.js +0 -21
- package/dataflow/index.d.ts +0 -5
- package/dataflow/index.js +0 -24
- package/dataflow/internal/info.d.ts +0 -21
- package/dataflow/internal/info.js +0 -16
- package/dataflow/internal/process/access.d.ts +0 -4
- package/dataflow/internal/process/access.js +0 -53
- package/dataflow/internal/process/expression-list.d.ts +0 -8
- package/dataflow/internal/process/expression-list.js +0 -144
- package/dataflow/internal/process/functions/argument.d.ts +0 -8
- package/dataflow/internal/process/functions/exit-points.d.ts +0 -2
- package/dataflow/internal/process/functions/exit-points.js +0 -121
- package/dataflow/internal/process/functions/function-call.d.ts +0 -5
- package/dataflow/internal/process/functions/function-call.js +0 -105
- package/dataflow/internal/process/functions/function-definition.d.ts +0 -4
- package/dataflow/internal/process/functions/function-definition.js +0 -176
- package/dataflow/internal/process/functions/source.d.ts +0 -8
- package/dataflow/internal/process/functions/source.js +0 -81
- package/dataflow/internal/process/if-then-else.d.ts +0 -4
- package/dataflow/internal/process/if-then-else.js +0 -56
- package/dataflow/internal/process/loops/for-loop.d.ts +0 -4
- package/dataflow/internal/process/loops/for-loop.js +0 -54
- package/dataflow/internal/process/loops/repeat-loop.d.ts +0 -4
- package/dataflow/internal/process/loops/repeat-loop.js +0 -21
- package/dataflow/internal/process/loops/while-loop.d.ts +0 -4
- package/dataflow/internal/process/loops/while-loop.js +0 -31
- package/dataflow/internal/process/operators/assignment.d.ts +0 -4
- package/dataflow/internal/process/operators/assignment.js +0 -129
- package/dataflow/internal/process/operators/non-assignment-binary-op.d.ts +0 -4
- package/dataflow/internal/process/operators/non-assignment-binary-op.js +0 -25
- package/dataflow/internal/process/operators/pipe.d.ts +0 -4
- package/dataflow/internal/process/operators/pipe.js +0 -46
- package/dataflow/internal/process/operators/unary-op.d.ts +0 -4
- package/dataflow/internal/process/operators/unary-op.js +0 -10
- package/dataflow/internal/process/symbol.d.ts +0 -4
- package/dataflow/internal/process/symbol.js +0 -21
- package/dataflow/internal/process/uninteresting-leaf.d.ts +0 -3
- package/dataflow/internal/process/uninteresting-leaf.js +0 -9
- package/index.d.ts +0 -4
- package/index.js +0 -21
- package/r-bridge/index.d.ts +0 -11
- package/r-bridge/index.js +0 -28
- package/r-bridge/lang-4.x/ast/index.d.ts +0 -3
- package/r-bridge/lang-4.x/ast/index.js +0 -22
- package/r-bridge/lang-4.x/ast/model/index.d.ts +0 -6
- package/r-bridge/lang-4.x/ast/model/index.js +0 -23
- package/r-bridge/lang-4.x/ast/model/nodes/index.d.ts +0 -21
- package/r-bridge/lang-4.x/ast/model/nodes/index.js +0 -38
- package/r-bridge/lang-4.x/ast/model/nodes/info/index.d.ts +0 -13
- package/r-bridge/lang-4.x/ast/model/nodes/info/index.js +0 -27
- package/r-bridge/lang-4.x/ast/model/processing/index.d.ts +0 -5
- package/r-bridge/lang-4.x/ast/model/processing/index.js +0 -22
- package/r-bridge/lang-4.x/ast/parser/xml/hooks.d.ts +0 -292
- package/r-bridge/lang-4.x/ast/parser/xml/hooks.js +0 -136
- package/r-bridge/lang-4.x/ast/parser/xml/index.d.ts +0 -3
- package/r-bridge/lang-4.x/ast/parser/xml/index.js +0 -20
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.js +0 -19
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.d.ts +0 -10
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.js +0 -65
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.js +0 -18
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/definition.d.ts +0 -12
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.js +0 -20
- package/r-bridge/lang-4.x/ast/parser/xml/internal/index.d.ts +0 -9
- package/r-bridge/lang-4.x/ast/parser/xml/internal/index.js +0 -26
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/break.d.ts +0 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/for.d.ts +0 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.d.ts +0 -5
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.js +0 -22
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/next.d.ts +0 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/repeat.d.ts +0 -13
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/while.d.ts +0 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.d.ts +0 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.js +0 -20
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.d.ts +0 -6
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.js +0 -24
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.d.ts +0 -13
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.js +0 -59
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/comment.d.ts +0 -11
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.js +0 -18
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/line-directive.d.ts +0 -12
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.d.ts +0 -10
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.js +0 -159
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.d.ts +0 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.js +0 -20
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.d.ts +0 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.js +0 -33
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.d.ts +0 -13
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.js +0 -64
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.d.ts +0 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.js +0 -20
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/number.d.ts +0 -13
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/string.d.ts +0 -11
- package/r-bridge/lang-4.x/index.d.ts +0 -2
- package/r-bridge/lang-4.x/index.js +0 -19
- package/slicing/criterion/filters/index.d.ts +0 -1
- package/slicing/criterion/filters/index.js +0 -18
- package/slicing/criterion/index.d.ts +0 -3
- package/slicing/criterion/index.js +0 -20
- package/slicing/index.d.ts +0 -3
- package/slicing/index.js +0 -20
- package/slicing/static/index.d.ts +0 -1
- package/slicing/static/index.js +0 -18
- package/util/mermaid/index.d.ts +0 -3
- package/util/mermaid/index.js +0 -20
- /package/{r-bridge/lang-4.x/ast/parser/xml → benchmark/summarizer}/data.js +0 -0
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.foldAstStateful = void 0;
|
|
4
4
|
const assert_1 = require("../../../../../util/assert");
|
|
5
|
+
const r_function_call_1 = require("../nodes/r-function-call");
|
|
5
6
|
/**
|
|
6
7
|
* Folds in old functional-fashion over the AST structure but allowing for a down function which can pass context to child nodes.
|
|
7
8
|
*/
|
|
@@ -22,13 +23,13 @@ function foldAstStateful(ast, down, folds) {
|
|
|
22
23
|
case "RLineDirective" /* RType.LineDirective */:
|
|
23
24
|
return folds.other.foldLineDirective(ast, down);
|
|
24
25
|
case "RPipe" /* RType.Pipe */:
|
|
25
|
-
return folds.
|
|
26
|
+
return folds.foldPipe(ast, foldAstStateful(ast.lhs, down, folds), foldAstStateful(ast.rhs, down, folds), down);
|
|
26
27
|
case "RBinaryOp" /* RType.BinaryOp */:
|
|
27
|
-
return foldBinaryOp(ast, down, folds);
|
|
28
|
+
return folds.foldBinaryOp(ast, foldAstStateful(ast.lhs, down, folds), foldAstStateful(ast.rhs, down, folds), down);
|
|
28
29
|
case "RUnaryOp" /* RType.UnaryOp */:
|
|
29
|
-
return foldUnaryOp(ast, down, folds);
|
|
30
|
+
return folds.foldUnaryOp(ast, foldAstStateful(ast.operand, down, folds), down);
|
|
30
31
|
case "RAccess" /* RType.Access */:
|
|
31
|
-
return folds.foldAccess(ast, foldAstStateful(ast.accessed, down, folds), ast.
|
|
32
|
+
return folds.foldAccess(ast, foldAstStateful(ast.accessed, down, folds), ast.access.map(access => access === r_function_call_1.EmptyArgument ? r_function_call_1.EmptyArgument : foldAstStateful(access, down, folds)), down);
|
|
32
33
|
case "RForLoop" /* RType.ForLoop */:
|
|
33
34
|
return folds.loop.foldFor(ast, foldAstStateful(ast.variable, down, folds), foldAstStateful(ast.vector, down, folds), foldAstStateful(ast.body, down, folds), down);
|
|
34
35
|
case "RWhileLoop" /* RType.WhileLoop */:
|
|
@@ -36,7 +37,7 @@ function foldAstStateful(ast, down, folds) {
|
|
|
36
37
|
case "RRepeatLoop" /* RType.RepeatLoop */:
|
|
37
38
|
return folds.loop.foldRepeat(ast, foldAstStateful(ast.body, down, folds), down);
|
|
38
39
|
case "RFunctionCall" /* RType.FunctionCall */:
|
|
39
|
-
return folds.functions.foldFunctionCall(ast, foldAstStateful(ast.flavor === 'named' ? ast.functionName : ast.calledFunction, down, folds), ast.arguments.map(param => param ===
|
|
40
|
+
return folds.functions.foldFunctionCall(ast, foldAstStateful(ast.flavor === 'named' ? ast.functionName : ast.calledFunction, down, folds), ast.arguments.map(param => param === r_function_call_1.EmptyArgument ? param : foldAstStateful(param, down, folds)), down);
|
|
40
41
|
case "RFunctionDefinition" /* RType.FunctionDefinition */:
|
|
41
42
|
return folds.functions.foldFunctionDefinition(ast, ast.parameters.map(param => foldAstStateful(param, down, folds)), foldAstStateful(ast.body, down, folds), down);
|
|
42
43
|
case "RParameter" /* RType.Parameter */:
|
|
@@ -50,38 +51,10 @@ function foldAstStateful(ast, down, folds) {
|
|
|
50
51
|
case "RIfThenElse" /* RType.IfThenElse */:
|
|
51
52
|
return folds.foldIfThenElse(ast, foldAstStateful(ast.condition, down, folds), foldAstStateful(ast.then, down, folds), ast.otherwise === undefined ? undefined : foldAstStateful(ast.otherwise, down, folds), down);
|
|
52
53
|
case "RExpressionList" /* RType.ExpressionList */:
|
|
53
|
-
return folds.foldExprList(ast, ast.children.map(expr => foldAstStateful(expr, down, folds)), down);
|
|
54
|
+
return folds.foldExprList(ast, ast.grouping ? [foldAstStateful(ast.grouping[0], down, folds), foldAstStateful(ast.grouping[1], down, folds)] : undefined, ast.children.map(expr => foldAstStateful(expr, down, folds)), down);
|
|
54
55
|
default:
|
|
55
56
|
(0, assert_1.assertUnreachable)(type);
|
|
56
57
|
}
|
|
57
58
|
}
|
|
58
59
|
exports.foldAstStateful = foldAstStateful;
|
|
59
|
-
function foldBinaryOp(ast, down, folds) {
|
|
60
|
-
switch (ast.flavor) {
|
|
61
|
-
case 'logical':
|
|
62
|
-
return folds.binaryOp.foldLogicalOp(ast, foldAstStateful(ast.lhs, down, folds), foldAstStateful(ast.rhs, down, folds), down);
|
|
63
|
-
case 'arithmetic':
|
|
64
|
-
return folds.binaryOp.foldArithmeticOp(ast, foldAstStateful(ast.lhs, down, folds), foldAstStateful(ast.rhs, down, folds), down);
|
|
65
|
-
case 'comparison':
|
|
66
|
-
return folds.binaryOp.foldComparisonOp(ast, foldAstStateful(ast.lhs, down, folds), foldAstStateful(ast.rhs, down, folds), down);
|
|
67
|
-
case 'assignment':
|
|
68
|
-
return folds.binaryOp.foldAssignment(ast, foldAstStateful(ast.lhs, down, folds), foldAstStateful(ast.rhs, down, folds), down);
|
|
69
|
-
case 'model formula':
|
|
70
|
-
return folds.binaryOp.foldModelFormula(ast, foldAstStateful(ast.lhs, down, folds), foldAstStateful(ast.rhs, down, folds), down);
|
|
71
|
-
default:
|
|
72
|
-
(0, assert_1.assertUnreachable)(ast.flavor);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
function foldUnaryOp(ast, down, folds) {
|
|
76
|
-
switch (ast.flavor) {
|
|
77
|
-
case 'logical':
|
|
78
|
-
return folds.unaryOp.foldLogicalOp(ast, foldAstStateful(ast.operand, down, folds), down);
|
|
79
|
-
case 'arithmetic':
|
|
80
|
-
return folds.unaryOp.foldArithmeticOp(ast, foldAstStateful(ast.operand, down, folds), down);
|
|
81
|
-
case 'model formula':
|
|
82
|
-
return folds.unaryOp.foldModelFormula(ast, foldAstStateful(ast.operand, down, folds), down);
|
|
83
|
-
default:
|
|
84
|
-
(0, assert_1.assertUnreachable)(ast.flavor);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
60
|
//# sourceMappingURL=stateful-fold.js.map
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.visitAst = void 0;
|
|
4
4
|
const assert_1 = require("../../../../../util/assert");
|
|
5
|
+
const r_function_call_1 = require("../nodes/r-function-call");
|
|
5
6
|
// capsuled as a class to avoid passing onExit and onEnter on *each* visit call
|
|
6
7
|
class NodeVisitor {
|
|
7
8
|
onEnter;
|
|
@@ -26,6 +27,7 @@ class NodeVisitor {
|
|
|
26
27
|
this.visitSingle(node.body);
|
|
27
28
|
break;
|
|
28
29
|
case "RExpressionList" /* RType.ExpressionList */:
|
|
30
|
+
this.visit(node.grouping);
|
|
29
31
|
this.visit(node.children);
|
|
30
32
|
break;
|
|
31
33
|
case "RForLoop" /* RType.ForLoop */:
|
|
@@ -84,8 +86,9 @@ class NodeVisitor {
|
|
|
84
86
|
}
|
|
85
87
|
visit(nodes) {
|
|
86
88
|
if (Array.isArray(nodes)) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
+
const n = nodes;
|
|
90
|
+
for (const node of n) {
|
|
91
|
+
if (node && node !== r_function_call_1.EmptyArgument) {
|
|
89
92
|
this.visitSingle(node);
|
|
90
93
|
}
|
|
91
94
|
}
|
|
@@ -1,18 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isSymbol = void 0;
|
|
4
|
+
const validSymbolTypes = new Set([
|
|
5
|
+
"SYMBOL" /* RawRType.Symbol */,
|
|
6
|
+
"SYMBOL_PACKAGE" /* RawRType.SymbolPackage */,
|
|
7
|
+
"SYMBOL_FUNCTION_CALL" /* RawRType.SymbolFunctionCall */,
|
|
8
|
+
"NULL_CONST" /* RawRType.NullConst */,
|
|
9
|
+
"STR_CONST" /* RawRType.StringConst */,
|
|
10
|
+
"(" /* RawRType.ParenLeft */,
|
|
11
|
+
")" /* RawRType.ParenRight */,
|
|
12
|
+
"{" /* RawRType.BraceLeft */,
|
|
13
|
+
"}" /* RawRType.BraceRight */,
|
|
14
|
+
"SLOT" /* RawRType.Slot */,
|
|
15
|
+
]);
|
|
4
16
|
/**
|
|
5
17
|
* Validates, whether the given type can be used as a symbol in R
|
|
6
18
|
*
|
|
7
19
|
* @see RawRType
|
|
8
20
|
*/
|
|
9
21
|
function isSymbol(type) {
|
|
10
|
-
return (type
|
|
11
|
-
type === "SYMBOL_PACKAGE" /* RawRType.SymbolPackage */ ||
|
|
12
|
-
type === "SYMBOL_FUNCTION_CALL" /* RawRType.SymbolFunctionCall */ ||
|
|
13
|
-
type === "NULL_CONST" /* RawRType.NullConst */ ||
|
|
14
|
-
type === "STR_CONST" /* RawRType.StringConst */ ||
|
|
15
|
-
type === "SLOT" /* RawRType.Slot */);
|
|
22
|
+
return validSymbolTypes.has(type);
|
|
16
23
|
}
|
|
17
24
|
exports.isSymbol = isSymbol;
|
|
18
25
|
//# sourceMappingURL=type.js.map
|
|
@@ -11,4 +11,7 @@ export interface Entry extends Record<string, unknown> {
|
|
|
11
11
|
text: string;
|
|
12
12
|
children?: Entry[];
|
|
13
13
|
}
|
|
14
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Parses the given data and sets child relationship, return the list of root entries (with a parent of {@link RootId}).
|
|
16
|
+
*/
|
|
17
|
+
export declare function prepareParsedData(data: string): Entry[];
|
|
@@ -4,12 +4,16 @@ exports.prepareParsedData = exports.RootId = void 0;
|
|
|
4
4
|
const retriever_1 = require("../../../../retriever");
|
|
5
5
|
const assert_1 = require("../../../../../util/assert");
|
|
6
6
|
exports.RootId = 0;
|
|
7
|
+
/**
|
|
8
|
+
* Parses the given data and sets child relationship, return the list of root entries (with a parent of {@link RootId}).
|
|
9
|
+
*/
|
|
7
10
|
function prepareParsedData(data) {
|
|
8
|
-
const json = JSON.parse(data);
|
|
11
|
+
const json = JSON.parse(`[${data}]`);
|
|
9
12
|
(0, assert_1.guard)(Array.isArray(json), () => `Expected ${data} to be an array but was not`);
|
|
10
13
|
const ret = new Map(json.map(([line1, col1, line2, col2, id, parent, token, terminal, text]) => {
|
|
11
14
|
return [id, { line1, col1, line2, col2, id, parent, token: (0, retriever_1.removeRQuotes)(token), terminal, text }];
|
|
12
15
|
}));
|
|
16
|
+
const roots = [];
|
|
13
17
|
// iterate a second time to set parent-child relations (since they may be out of order in the csv)
|
|
14
18
|
for (const entry of ret.values()) {
|
|
15
19
|
if (entry.parent != exports.RootId) {
|
|
@@ -19,8 +23,11 @@ function prepareParsedData(data) {
|
|
|
19
23
|
parent.children.push(entry);
|
|
20
24
|
}
|
|
21
25
|
}
|
|
26
|
+
else {
|
|
27
|
+
roots.push(entry);
|
|
28
|
+
}
|
|
22
29
|
}
|
|
23
|
-
return
|
|
30
|
+
return roots;
|
|
24
31
|
}
|
|
25
32
|
exports.prepareParsedData = prepareParsedData;
|
|
26
33
|
//# sourceMappingURL=format.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { DeepPartial } from 'ts-essentials';
|
|
2
|
-
import type { XmlBasedJson, XmlParserHooks } from '../xml';
|
|
3
|
-
import type { IdGenerator, NoInfo, NormalizedAst } from '../../model';
|
|
4
1
|
import type { Entry } from './format';
|
|
2
|
+
import type { IdGenerator, NormalizedAst } from '../../model/processing/decorate';
|
|
3
|
+
import type { NoInfo } from '../../model/model';
|
|
4
|
+
import type { XmlBasedJson } from '../xml/input-format';
|
|
5
5
|
export declare const parseLog: import("tslog").Logger<import("tslog").ILogObj>;
|
|
6
|
-
export declare function normalize(jsonString: string,
|
|
7
|
-
export declare function convertPreparedParsedData(
|
|
6
|
+
export declare function normalize(jsonString: string, getId?: IdGenerator<NoInfo>): NormalizedAst;
|
|
7
|
+
export declare function convertPreparedParsedData(rootEntries: Entry[]): XmlBasedJson;
|
|
@@ -1,48 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.convertPreparedParsedData = exports.normalize = exports.parseLog = void 0;
|
|
4
|
-
const xml_1 = require("../xml");
|
|
5
|
-
const model_1 = require("../../model");
|
|
6
|
-
const objects_1 = require("../../../../../util/objects");
|
|
7
4
|
const format_1 = require("./format");
|
|
8
|
-
const internal_1 = require("../xml/internal");
|
|
9
5
|
const log_1 = require("../../../../../util/log");
|
|
6
|
+
const decorate_1 = require("../../model/processing/decorate");
|
|
7
|
+
const normalize_root_1 = require("../xml/internal/structure/normalize-root");
|
|
8
|
+
const input_format_1 = require("../xml/input-format");
|
|
10
9
|
exports.parseLog = log_1.log.getSubLogger({ name: 'ast-parser' });
|
|
11
|
-
function normalize(jsonString,
|
|
12
|
-
const
|
|
13
|
-
const data = { hooks: hooksWithDefaults, currentRange: undefined, currentLexeme: undefined };
|
|
10
|
+
function normalize(jsonString, getId = (0, decorate_1.deterministicCountingIdGenerator)(0)) {
|
|
11
|
+
const data = { currentRange: undefined, currentLexeme: undefined };
|
|
14
12
|
const object = convertPreparedParsedData((0, format_1.prepareParsedData)(jsonString));
|
|
15
|
-
return (0,
|
|
13
|
+
return (0, decorate_1.decorateAst)((0, normalize_root_1.normalizeRootObjToAst)(data, object), getId);
|
|
16
14
|
}
|
|
17
15
|
exports.normalize = normalize;
|
|
18
|
-
function convertPreparedParsedData(
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
if (entry.parent == format_1.RootId) {
|
|
24
|
-
children.push(convertEntry(entry));
|
|
16
|
+
function convertPreparedParsedData(rootEntries) {
|
|
17
|
+
return {
|
|
18
|
+
["exprlist" /* RawRType.ExpressionList */]: {
|
|
19
|
+
[input_format_1.nameKey]: "exprlist" /* RawRType.ExpressionList */,
|
|
20
|
+
[input_format_1.childrenKey]: rootEntries.map(convertEntry)
|
|
25
21
|
}
|
|
26
|
-
}
|
|
27
|
-
exprlist[xml_1.childrenKey] = children;
|
|
28
|
-
return { 'exprlist': exprlist };
|
|
22
|
+
};
|
|
29
23
|
}
|
|
30
24
|
exports.convertPreparedParsedData = convertPreparedParsedData;
|
|
31
25
|
function convertEntry(csvEntry) {
|
|
32
|
-
const xmlEntry = {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
26
|
+
const xmlEntry = {
|
|
27
|
+
[input_format_1.nameKey]: csvEntry.token,
|
|
28
|
+
[input_format_1.attributesKey]: {
|
|
29
|
+
'line1': csvEntry.line1,
|
|
30
|
+
'col1': csvEntry.col1,
|
|
31
|
+
'line2': csvEntry.line2,
|
|
32
|
+
'col2': csvEntry.col2
|
|
33
|
+
}
|
|
38
34
|
};
|
|
39
|
-
xmlEntry[xml_1.nameKey] = csvEntry.token;
|
|
40
35
|
if (csvEntry.text) {
|
|
41
|
-
xmlEntry[
|
|
36
|
+
xmlEntry[input_format_1.contentKey] = csvEntry.text;
|
|
42
37
|
}
|
|
43
38
|
// check and recursively iterate children
|
|
44
39
|
if (csvEntry.children && csvEntry.children.length > 0) {
|
|
45
|
-
xmlEntry[
|
|
40
|
+
xmlEntry[input_format_1.childrenKey] = csvEntry.children
|
|
46
41
|
// we sort children the same way xmlparsedata does (by line, by column, by inverse end line, by inverse end column, by terminal state, by combined "start" tiebreaker value)
|
|
47
42
|
// (https://github.com/r-lib/xmlparsedata/blob/main/R/package.R#L153C72-L153C78)
|
|
48
43
|
.sort((c1, c2) => c1.line1 - c2.line1 || c1.col1 - c2.col1 || c2.line2 - c1.line2 || c2.col2 - c1.col2 || Number(c1.terminal) - Number(c2.terminal) || sortTiebreak(c1) - sortTiebreak(c2))
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { RawRType } from '../../model';
|
|
1
|
+
import type { RawRType } from '../../model/type';
|
|
2
2
|
export declare const attributesKey = "a";
|
|
3
3
|
export declare const childrenKey = "c";
|
|
4
4
|
export declare const contentKey = "@";
|
|
@@ -16,21 +16,24 @@ export type XmlBasedJson = Record<string, XmlBasedJsonValue>;
|
|
|
16
16
|
/**
|
|
17
17
|
* A xml element in the json can either link to a string or another xml element
|
|
18
18
|
*/
|
|
19
|
-
export type XmlBasedJsonValue = string | Record<string, unknown> | XmlBasedJson[];
|
|
19
|
+
export type XmlBasedJsonValue = string | Record<string, unknown> | readonly XmlBasedJson[];
|
|
20
20
|
/**
|
|
21
21
|
* We expect all xml elements to have a name attached which represents their R token type.
|
|
22
22
|
*/
|
|
23
23
|
export interface NamedXmlBasedJson {
|
|
24
24
|
/** corresponds to the R token type */
|
|
25
|
-
name: RawRType;
|
|
25
|
+
readonly name: RawRType;
|
|
26
26
|
/** remaining content (e.g., children, ...) */
|
|
27
|
-
content: XmlBasedJson;
|
|
27
|
+
readonly content: XmlBasedJson;
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
|
-
*
|
|
30
|
+
* Single-key variant of {@link getKeysGuarded}. Will throw an {@link XmlParseError} if the key is not present.
|
|
31
|
+
*/
|
|
32
|
+
export declare function getKeyGuarded<T extends XmlBasedJsonValue>(obj: XmlBasedJson, key: string): T;
|
|
33
|
+
/**
|
|
34
|
+
* Retrieves the given keys from the converted xml. For a single key, see {@link getKeyGuarded}.
|
|
31
35
|
* Will throw an {@link XmlParseError} if at least one of the keys is not present
|
|
32
36
|
*
|
|
33
37
|
* @typeParam T - the type of the values to retrieve. Note, that this type is not checked at runtime.
|
|
34
38
|
*/
|
|
35
|
-
export declare function getKeysGuarded<T extends XmlBasedJsonValue>(obj: XmlBasedJson,
|
|
36
|
-
export declare function getKeysGuarded<T extends XmlBasedJsonValue>(obj: XmlBasedJson, ...key: readonly string[]): Record<string, T>;
|
|
39
|
+
export declare function getKeysGuarded<T extends XmlBasedJsonValue>(obj: XmlBasedJson, ...keys: readonly string[]): Record<string, T>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getKeysGuarded = exports.XmlParseError = exports.nameKey = exports.contentKey = exports.childrenKey = exports.attributesKey = void 0;
|
|
3
|
+
exports.getKeysGuarded = exports.getKeyGuarded = exports.XmlParseError = exports.nameKey = exports.contentKey = exports.childrenKey = exports.attributesKey = void 0;
|
|
4
4
|
exports.attributesKey = 'a';
|
|
5
5
|
exports.childrenKey = 'c';
|
|
6
6
|
exports.contentKey = '@';
|
|
@@ -15,16 +15,24 @@ class XmlParseError extends Error {
|
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
exports.XmlParseError = XmlParseError;
|
|
18
|
-
function
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
18
|
+
function error(key, obj) {
|
|
19
|
+
throw new XmlParseError(`expected obj to have key ${key}, yet received ${JSON.stringify(obj)}`);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Single-key variant of {@link getKeysGuarded}. Will throw an {@link XmlParseError} if the key is not present.
|
|
23
|
+
*/
|
|
24
|
+
function getKeyGuarded(obj, key) {
|
|
25
|
+
return (obj[key] ?? error(key, obj));
|
|
26
|
+
}
|
|
27
|
+
exports.getKeyGuarded = getKeyGuarded;
|
|
28
|
+
/**
|
|
29
|
+
* Retrieves the given keys from the converted xml. For a single key, see {@link getKeyGuarded}.
|
|
30
|
+
* Will throw an {@link XmlParseError} if at least one of the keys is not present
|
|
31
|
+
*
|
|
32
|
+
* @typeParam T - the type of the values to retrieve. Note, that this type is not checked at runtime.
|
|
33
|
+
*/
|
|
34
|
+
function getKeysGuarded(obj, ...keys) {
|
|
35
|
+
return Object.fromEntries(keys.map(k => [k, getKeyGuarded(obj, k)]));
|
|
28
36
|
}
|
|
29
37
|
exports.getKeysGuarded = getKeysGuarded;
|
|
30
38
|
//# sourceMappingURL=input-format.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import type { NormalizerData } from '../../normalizer-data';
|
|
1
2
|
import type { NamedXmlBasedJson } from '../../input-format';
|
|
2
|
-
import type {
|
|
3
|
-
import type { RIfThenElse } from '../../../../model';
|
|
3
|
+
import type { RIfThenElse } from '../../../../model/nodes/r-if-then-else';
|
|
4
4
|
/**
|
|
5
5
|
* Try to parse the construct as a {@link RIfThenElse}.
|
|
6
6
|
*/
|
|
7
|
-
export declare function tryNormalizeIfThenElse(data:
|
|
7
|
+
export declare function tryNormalizeIfThenElse(data: NormalizerData, tokens: [
|
|
8
8
|
ifToken: NamedXmlBasedJson,
|
|
9
9
|
leftParen: NamedXmlBasedJson,
|
|
10
10
|
condition: NamedXmlBasedJson,
|
|
@@ -1,32 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.tryNormalizeIfThenElse = void 0;
|
|
4
|
-
const structure_1 = require("../structure");
|
|
5
|
-
const if_then_1 = require("./if-then");
|
|
6
|
-
const assert_1 = require("../../../../../../../util/assert");
|
|
7
|
-
const hooks_1 = require("../../hooks");
|
|
8
|
-
const meta_1 = require("../meta");
|
|
9
4
|
const parser_1 = require("../../../json/parser");
|
|
5
|
+
const normalize_if_then_1 = require("./normalize-if-then");
|
|
6
|
+
const assert_1 = require("../../../../../../../util/assert");
|
|
7
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
8
|
+
const normalize_single_node_1 = require("../structure/normalize-single-node");
|
|
10
9
|
/**
|
|
11
10
|
* Try to parse the construct as a {@link RIfThenElse}.
|
|
12
11
|
*/
|
|
13
12
|
function tryNormalizeIfThenElse(data, tokens) {
|
|
14
13
|
// we start by parsing a regular if-then structure
|
|
15
14
|
parser_1.parseLog.trace('trying to parse if-then-else structure');
|
|
16
|
-
|
|
17
|
-
const parsedIfThen = (0, if_then_1.tryNormalizeIfThen)(data, [tokens[0], tokens[1], tokens[2], tokens[3], tokens[4]]);
|
|
15
|
+
const parsedIfThen = (0, normalize_if_then_1.tryNormalizeIfThen)(data, [tokens[0], tokens[1], tokens[2], tokens[3], tokens[4]]);
|
|
18
16
|
if (parsedIfThen === undefined) {
|
|
19
|
-
return
|
|
17
|
+
return undefined;
|
|
20
18
|
}
|
|
21
19
|
parser_1.parseLog.trace('if-then part successful, now parsing else part');
|
|
22
20
|
(0, assert_1.guard)(tokens[5].name === "ELSE" /* RawRType.Else */, () => `expected else token for if-then-else but found ${JSON.stringify(tokens[5])}`);
|
|
23
|
-
const parsedElse = (0,
|
|
21
|
+
const parsedElse = (0, normalize_single_node_1.normalizeSingleNode)(data, tokens[6]);
|
|
24
22
|
(0, assert_1.guard)(parsedElse.type !== "RDelimiter" /* RType.Delimiter */, () => `unexpected missing else-part of if-then-else, received ${JSON.stringify([parsedIfThen, parsedElse])} for ${JSON.stringify(tokens)}`);
|
|
25
|
-
|
|
23
|
+
return {
|
|
26
24
|
...parsedIfThen,
|
|
27
|
-
otherwise: (0,
|
|
25
|
+
otherwise: (0, normalize_meta_1.ensureExpressionList)(parsedElse)
|
|
28
26
|
};
|
|
29
|
-
return (0, hooks_1.executeHook)(data.hooks.control.onIfThenElse.after, data, result);
|
|
30
27
|
}
|
|
31
28
|
exports.tryNormalizeIfThenElse = tryNormalizeIfThenElse;
|
|
32
|
-
//# sourceMappingURL=if-then-else.js.map
|
|
29
|
+
//# sourceMappingURL=normalize-if-then-else.js.map
|
package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then.d.ts → normalize-if-then.d.ts}
RENAMED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import type { NormalizerData } from '../../normalizer-data';
|
|
1
2
|
import type { NamedXmlBasedJson } from '../../input-format';
|
|
2
|
-
import type {
|
|
3
|
-
import type { RIfThenElse } from '../../../../model';
|
|
3
|
+
import type { RIfThenElse } from '../../../../model/nodes/r-if-then-else';
|
|
4
4
|
/**
|
|
5
5
|
* Try to parse the construct as a {@link RIfThenElse}.
|
|
6
6
|
*/
|
|
7
|
-
export declare function tryNormalizeIfThen(data:
|
|
7
|
+
export declare function tryNormalizeIfThen(data: NormalizerData, tokens: [
|
|
8
8
|
ifToken: NamedXmlBasedJson,
|
|
9
9
|
leftParen: NamedXmlBasedJson,
|
|
10
10
|
condition: NamedXmlBasedJson,
|
package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then.js → normalize-if-then.js}
RENAMED
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.tryNormalizeIfThen = void 0;
|
|
4
4
|
const input_format_1 = require("../../input-format");
|
|
5
|
-
const structure_1 = require("../structure");
|
|
6
|
-
const meta_1 = require("../meta");
|
|
7
|
-
const hooks_1 = require("../../hooks");
|
|
8
5
|
const parser_1 = require("../../../json/parser");
|
|
6
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
7
|
+
const normalize_single_node_1 = require("../structure/normalize-single-node");
|
|
9
8
|
/**
|
|
10
9
|
* Try to parse the construct as a {@link RIfThenElse}.
|
|
11
10
|
*/
|
|
@@ -13,7 +12,7 @@ function tryNormalizeIfThen(data, tokens) {
|
|
|
13
12
|
parser_1.parseLog.trace('trying to parse if-then structure');
|
|
14
13
|
if (tokens[0].name !== "IF" /* RawRType.If */) {
|
|
15
14
|
parser_1.parseLog.debug('encountered non-if token for supposed if-then structure');
|
|
16
|
-
return
|
|
15
|
+
return undefined;
|
|
17
16
|
}
|
|
18
17
|
else if (tokens[1].name !== "(" /* RawRType.ParenLeft */) {
|
|
19
18
|
throw new input_format_1.XmlParseError(`expected left-parenthesis for if but found ${JSON.stringify(tokens[1])}`);
|
|
@@ -21,17 +20,16 @@ function tryNormalizeIfThen(data, tokens) {
|
|
|
21
20
|
else if (tokens[3].name !== ")" /* RawRType.ParenRight */) {
|
|
22
21
|
throw new input_format_1.XmlParseError(`expected right-parenthesis for if but found ${JSON.stringify(tokens[3])}`);
|
|
23
22
|
}
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
const parsedThen = (0, structure_1.tryNormalizeSingleNode)(data, tokens[4]);
|
|
23
|
+
const parsedCondition = (0, normalize_single_node_1.normalizeSingleNode)(data, tokens[2]);
|
|
24
|
+
const parsedThen = (0, normalize_single_node_1.normalizeSingleNode)(data, tokens[4]);
|
|
27
25
|
if (parsedCondition.type === "RDelimiter" /* RType.Delimiter */ || parsedThen.type === "RDelimiter" /* RType.Delimiter */) {
|
|
28
26
|
throw new input_format_1.XmlParseError(`unexpected missing parts of if, received ${JSON.stringify([parsedCondition, parsedThen])} for ${JSON.stringify(tokens)}`);
|
|
29
27
|
}
|
|
30
|
-
const { location, content } = (0,
|
|
31
|
-
|
|
28
|
+
const { location, content } = (0, normalize_meta_1.retrieveMetaStructure)(tokens[0].content);
|
|
29
|
+
return {
|
|
32
30
|
type: "RIfThenElse" /* RType.IfThenElse */,
|
|
33
31
|
condition: parsedCondition,
|
|
34
|
-
then: (0,
|
|
32
|
+
then: (0, normalize_meta_1.ensureExpressionList)(parsedThen),
|
|
35
33
|
location,
|
|
36
34
|
lexeme: content,
|
|
37
35
|
info: {
|
|
@@ -40,7 +38,6 @@ function tryNormalizeIfThen(data, tokens) {
|
|
|
40
38
|
fullLexeme: data.currentLexeme
|
|
41
39
|
}
|
|
42
40
|
};
|
|
43
|
-
return (0, hooks_1.executeHook)(data.hooks.control.onIfThen.after, data, result);
|
|
44
41
|
}
|
|
45
42
|
exports.tryNormalizeIfThen = tryNormalizeIfThen;
|
|
46
|
-
//# sourceMappingURL=if-then.js.map
|
|
43
|
+
//# sourceMappingURL=normalize-if-then.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { NormalizerData } from '../../normalizer-data';
|
|
2
|
+
import type { XmlBasedJson } from '../../input-format';
|
|
3
|
+
import type { RNode } from '../../../../model/model';
|
|
4
|
+
/**
|
|
5
|
+
* Returns an expression list if there are multiple children, otherwise returns the single child directly with no expr wrapper
|
|
6
|
+
*
|
|
7
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
8
|
+
* @param obj - The json object to extract the meta-information from
|
|
9
|
+
*/
|
|
10
|
+
export declare function normalizeExpression(data: NormalizerData, obj: XmlBasedJson): RNode;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeExpression = void 0;
|
|
4
|
+
const input_format_1 = require("../../input-format");
|
|
5
|
+
const parser_1 = require("../../../json/parser");
|
|
6
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
7
|
+
const normalize_access_1 = require("../normalize-access");
|
|
8
|
+
const arrays_1 = require("../../../../../../../util/arrays");
|
|
9
|
+
const normalize_expressions_1 = require("../structure/normalize-expressions");
|
|
10
|
+
const normalize_call_1 = require("../functions/normalize-call");
|
|
11
|
+
const normalize_definition_1 = require("../functions/normalize-definition");
|
|
12
|
+
const normalize_comment_1 = require("../other/normalize-comment");
|
|
13
|
+
/**
|
|
14
|
+
* Returns an expression list if there are multiple children, otherwise returns the single child directly with no expr wrapper
|
|
15
|
+
*
|
|
16
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
17
|
+
* @param obj - The json object to extract the meta-information from
|
|
18
|
+
*/
|
|
19
|
+
function normalizeExpression(data, obj) {
|
|
20
|
+
parser_1.parseLog.debug('[expr]');
|
|
21
|
+
const { unwrappedObj, content, location } = (0, normalize_meta_1.retrieveMetaStructure)(obj);
|
|
22
|
+
const childrenSource = (0, input_format_1.getKeyGuarded)(unwrappedObj, input_format_1.childrenKey);
|
|
23
|
+
const typed = (0, normalize_meta_1.getWithTokenType)(childrenSource);
|
|
24
|
+
const { others, comments } = (0, normalize_expressions_1.splitComments)(typed);
|
|
25
|
+
const childData = { ...data, currentRange: location, currentLexeme: content };
|
|
26
|
+
const maybeFunctionCall = (0, normalize_call_1.tryNormalizeFunctionCall)(childData, others);
|
|
27
|
+
if (maybeFunctionCall !== undefined) {
|
|
28
|
+
maybeFunctionCall.info.additionalTokens = [...maybeFunctionCall.info.additionalTokens ?? [], ...comments.map(x => (0, normalize_comment_1.normalizeComment)(data, x.content))];
|
|
29
|
+
return maybeFunctionCall;
|
|
30
|
+
}
|
|
31
|
+
const maybeAccess = (0, normalize_access_1.tryNormalizeAccess)(childData, others);
|
|
32
|
+
if (maybeAccess !== undefined) {
|
|
33
|
+
maybeAccess.info.additionalTokens = [...maybeAccess.info.additionalTokens ?? [], ...comments.map(x => (0, normalize_comment_1.normalizeComment)(data, x.content))];
|
|
34
|
+
return maybeAccess;
|
|
35
|
+
}
|
|
36
|
+
const maybeFunctionDefinition = (0, normalize_definition_1.tryNormalizeFunctionDefinition)(childData, others);
|
|
37
|
+
if (maybeFunctionDefinition !== undefined) {
|
|
38
|
+
maybeFunctionDefinition.info.additionalTokens = [...maybeFunctionDefinition.info.additionalTokens ?? [], ...comments.map(x => (0, normalize_comment_1.normalizeComment)(data, x.content))];
|
|
39
|
+
return maybeFunctionDefinition;
|
|
40
|
+
}
|
|
41
|
+
const children = (0, normalize_expressions_1.normalizeExpressions)(childData, childrenSource);
|
|
42
|
+
const [delimiters, nodes] = (0, arrays_1.partition)(children, x => x.type === "RDelimiter" /* RType.Delimiter */ || x.type === "RComment" /* RType.Comment */);
|
|
43
|
+
if (nodes.length === 1) {
|
|
44
|
+
const result = nodes[0];
|
|
45
|
+
result.info.additionalTokens = [...result.info.additionalTokens ?? [], ...delimiters];
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
return {
|
|
50
|
+
type: "RExpressionList" /* RType.ExpressionList */,
|
|
51
|
+
grouping: undefined,
|
|
52
|
+
location,
|
|
53
|
+
children: nodes,
|
|
54
|
+
lexeme: content,
|
|
55
|
+
info: {
|
|
56
|
+
fullRange: childData.currentRange,
|
|
57
|
+
additionalTokens: delimiters,
|
|
58
|
+
fullLexeme: childData.currentLexeme
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.normalizeExpression = normalizeExpression;
|
|
64
|
+
//# sourceMappingURL=normalize-expression.js.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
+
import type { NormalizerData } from '../../normalizer-data';
|
|
1
2
|
import type { NamedXmlBasedJson } from '../../input-format';
|
|
2
|
-
import type { RArgument } from '../../../../model';
|
|
3
|
-
import type { ParserData } from '../../data';
|
|
3
|
+
import type { RArgument } from '../../../../model/nodes/r-argument';
|
|
4
4
|
/**
|
|
5
5
|
* Either parses `[expr]` or `[SYMBOL_SUB, EQ_SUB, expr]` as an argument of a function call in R.
|
|
6
6
|
* Probably directly called by the function call parser as otherwise, we do not expect to find arguments.
|
|
7
7
|
*
|
|
8
|
-
* @param data - The data used by the parser (see {@link
|
|
8
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
9
9
|
* @param objs - Either `[expr]` or `[SYMBOL_FORMALS, EQ_FORMALS, expr]`
|
|
10
10
|
*
|
|
11
11
|
* @returns The parsed argument or `undefined` if the given object is not an argument.
|
|
12
12
|
*/
|
|
13
|
-
export declare function tryToNormalizeArgument(data:
|
|
13
|
+
export declare function tryToNormalizeArgument(data: NormalizerData, objs: readonly NamedXmlBasedJson[]): RArgument | undefined;
|