@eagleoutice/flowr 1.5.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +52 -47
- 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
package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{argument.js → normalize-argument.js}
RENAMED
|
@@ -1,35 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.tryToNormalizeArgument = void 0;
|
|
4
|
-
const meta_1 = require("../meta");
|
|
5
|
-
const hooks_1 = require("../../hooks");
|
|
6
|
-
const log_1 = require("../../../../../../../util/log");
|
|
7
|
-
const assert_1 = require("../../../../../../../util/assert");
|
|
8
|
-
const structure_1 = require("../structure");
|
|
9
4
|
const parser_1 = require("../../../json/parser");
|
|
5
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
6
|
+
const assert_1 = require("../../../../../../../util/assert");
|
|
7
|
+
const normalize_single_node_1 = require("../structure/normalize-single-node");
|
|
10
8
|
/**
|
|
11
9
|
* Either parses `[expr]` or `[SYMBOL_SUB, EQ_SUB, expr]` as an argument of a function call in R.
|
|
12
10
|
* Probably directly called by the function call parser as otherwise, we do not expect to find arguments.
|
|
13
11
|
*
|
|
14
|
-
* @param data - The data used by the parser (see {@link
|
|
12
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
15
13
|
* @param objs - Either `[expr]` or `[SYMBOL_FORMALS, EQ_FORMALS, expr]`
|
|
16
14
|
*
|
|
17
15
|
* @returns The parsed argument or `undefined` if the given object is not an argument.
|
|
18
16
|
*/
|
|
19
17
|
function tryToNormalizeArgument(data, objs) {
|
|
20
18
|
parser_1.parseLog.debug('[argument]');
|
|
21
|
-
objs = (0, hooks_1.executeHook)(data.hooks.functions.onArgument.before, data, objs);
|
|
22
19
|
if (objs.length < 1 || objs.length > 3) {
|
|
23
|
-
|
|
24
|
-
return
|
|
20
|
+
parser_1.parseLog.warn(`Either [expr|value], [SYMBOL_SUB, EQ_SUB], or [SYMBOL_SUB, EQ_SUB, expr], but got: ${objs.map(o => o.name).join(', ')}`);
|
|
21
|
+
return undefined;
|
|
25
22
|
}
|
|
26
23
|
const symbolOrExpr = objs[0];
|
|
27
|
-
const { location, content } = (0,
|
|
24
|
+
const { location, content } = (0, normalize_meta_1.retrieveMetaStructure)(symbolOrExpr.content);
|
|
28
25
|
let parsedValue;
|
|
29
26
|
let name;
|
|
30
27
|
if (symbolOrExpr.name === "expr" /* RawRType.Expression */) {
|
|
31
28
|
name = undefined;
|
|
32
|
-
parsedValue = (0,
|
|
29
|
+
parsedValue = (0, normalize_single_node_1.normalizeSingleNode)(data, symbolOrExpr);
|
|
33
30
|
}
|
|
34
31
|
else if (symbolOrExpr.name === "SYMBOL_SUB" /* RawRType.SymbolSub */ || symbolOrExpr.name === "STR_CONST" /* RawRType.StringConst */) {
|
|
35
32
|
name = {
|
|
@@ -47,11 +44,11 @@ function tryToNormalizeArgument(data, objs) {
|
|
|
47
44
|
parsedValue = parseWithValue(data, objs);
|
|
48
45
|
}
|
|
49
46
|
else {
|
|
50
|
-
|
|
51
|
-
return
|
|
47
|
+
parser_1.parseLog.warn(`expected symbol or expr for argument, yet received ${objs.map(o => o.name).join(',')}`);
|
|
48
|
+
return undefined;
|
|
52
49
|
}
|
|
53
50
|
(0, assert_1.guard)(parsedValue !== undefined && parsedValue?.type !== "RDelimiter" /* RType.Delimiter */, () => `[argument] parsed value must not be undefined, yet: ${JSON.stringify(objs)}`);
|
|
54
|
-
|
|
51
|
+
return {
|
|
55
52
|
type: "RArgument" /* RType.Argument */,
|
|
56
53
|
location,
|
|
57
54
|
lexeme: content,
|
|
@@ -63,12 +60,11 @@ function tryToNormalizeArgument(data, objs) {
|
|
|
63
60
|
additionalTokens: []
|
|
64
61
|
}
|
|
65
62
|
};
|
|
66
|
-
return (0, hooks_1.executeHook)(data.hooks.functions.onArgument.after, data, result);
|
|
67
63
|
}
|
|
68
64
|
exports.tryToNormalizeArgument = tryToNormalizeArgument;
|
|
69
65
|
function parseWithValue(data, objs) {
|
|
70
66
|
(0, assert_1.guard)(objs[1].name === "EQ_SUB" /* RawRType.EqualSub */, () => `[arg-default] second element of parameter must be ${"EQ_FORMALS" /* RawRType.EqualFormals */}, but: ${JSON.stringify(objs)}`);
|
|
71
67
|
(0, assert_1.guard)(objs.length === 2 || objs[2].name === "expr" /* RawRType.Expression */, () => `[arg-default] third element of parameter must be an Expression or undefined (for 'x=') but: ${JSON.stringify(objs)}`);
|
|
72
|
-
return objs[2] ? (0,
|
|
68
|
+
return objs[2] ? (0, normalize_single_node_1.normalizeSingleNode)(data, objs[2]) : null;
|
|
73
69
|
}
|
|
74
|
-
//# sourceMappingURL=argument.js.map
|
|
70
|
+
//# sourceMappingURL=normalize-argument.js.map
|
package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{call.d.ts → normalize-call.d.ts}
RENAMED
|
@@ -1,13 +1,15 @@
|
|
|
1
|
+
import type { NormalizerData } from '../../normalizer-data';
|
|
1
2
|
import type { NamedXmlBasedJson } from '../../input-format';
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
3
|
+
import type { RFunctionCall } from '../../../../model/nodes/r-function-call';
|
|
4
|
+
import type { RNext } from '../../../../model/nodes/r-next';
|
|
5
|
+
import type { RBreak } from '../../../../model/nodes/r-break';
|
|
4
6
|
/**
|
|
5
7
|
* Tries to parse the given data as a function call.
|
|
6
8
|
*
|
|
7
|
-
* @param data - The data used by the parser (see {@link
|
|
9
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
8
10
|
* @param mappedWithName - The json object to extract the meta-information from
|
|
9
11
|
*
|
|
10
12
|
* @returns The parsed {@link RFunctionCall} (either named or unnamed) or `undefined` if the given construct is not a function call
|
|
11
13
|
* May return a {@link RNext} or {@link RBreak} as `next()` and `break()` work as such.
|
|
12
14
|
*/
|
|
13
|
-
export declare function tryNormalizeFunctionCall(data:
|
|
15
|
+
export declare function tryNormalizeFunctionCall(data: NormalizerData, mappedWithName: NamedXmlBasedJson[]): RFunctionCall | RNext | RBreak | undefined;
|
|
@@ -2,18 +2,19 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.tryNormalizeFunctionCall = void 0;
|
|
4
4
|
const input_format_1 = require("../../input-format");
|
|
5
|
-
const assert_1 = require("../../../../../../../util/assert");
|
|
6
|
-
const meta_1 = require("../meta");
|
|
7
|
-
const arrays_1 = require("../../../../../../../util/arrays");
|
|
8
|
-
const values_1 = require("../values");
|
|
9
|
-
const hooks_1 = require("../../hooks");
|
|
10
|
-
const argument_1 = require("./argument");
|
|
11
|
-
const expression_1 = require("../expression");
|
|
12
5
|
const parser_1 = require("../../../json/parser");
|
|
6
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
7
|
+
const arrays_1 = require("../../../../../../../util/arrays");
|
|
8
|
+
const assert_1 = require("../../../../../../../util/assert");
|
|
9
|
+
const normalize_argument_1 = require("./normalize-argument");
|
|
10
|
+
const r_function_call_1 = require("../../../../model/nodes/r-function-call");
|
|
11
|
+
const normalize_expression_1 = require("../expression/normalize-expression");
|
|
12
|
+
const normalize_string_1 = require("../values/normalize-string");
|
|
13
|
+
const normalize_symbol_1 = require("../values/normalize-symbol");
|
|
13
14
|
/**
|
|
14
15
|
* Tries to parse the given data as a function call.
|
|
15
16
|
*
|
|
16
|
-
* @param data - The data used by the parser (see {@link
|
|
17
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
17
18
|
* @param mappedWithName - The json object to extract the meta-information from
|
|
18
19
|
*
|
|
19
20
|
* @returns The parsed {@link RFunctionCall} (either named or unnamed) or `undefined` if the given construct is not a function call
|
|
@@ -23,34 +24,28 @@ function tryNormalizeFunctionCall(data, mappedWithName) {
|
|
|
23
24
|
const fnBase = mappedWithName[0];
|
|
24
25
|
if (fnBase.name !== "expr" /* RawRType.Expression */ && fnBase.name !== "expr_or_assign_or_help" /* RawRType.ExprOfAssignOrHelp */) {
|
|
25
26
|
parser_1.parseLog.trace(`expected function call name to be wrapped an expression, yet received ${fnBase.name}`);
|
|
26
|
-
return
|
|
27
|
+
return undefined;
|
|
27
28
|
}
|
|
28
29
|
if (mappedWithName.length < 3 || mappedWithName[1].name !== "(" /* RawRType.ParenLeft */ || mappedWithName[mappedWithName.length - 1].name !== ")" /* RawRType.ParenRight */) {
|
|
29
30
|
parser_1.parseLog.trace('expected function call to have parenthesis for a call, but was not');
|
|
30
31
|
return undefined;
|
|
31
32
|
}
|
|
32
33
|
parser_1.parseLog.trace('trying to parse function call');
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
const
|
|
36
|
-
let result;
|
|
37
|
-
const namedSymbolContent = (0, meta_1.getWithTokenType)(symbolContent);
|
|
34
|
+
const { unwrappedObj, content, location } = (0, normalize_meta_1.retrieveMetaStructure)(fnBase.content);
|
|
35
|
+
const symbolContent = (0, input_format_1.getKeyGuarded)(unwrappedObj, input_format_1.childrenKey);
|
|
36
|
+
const namedSymbolContent = (0, normalize_meta_1.getWithTokenType)(symbolContent);
|
|
38
37
|
if (namedSymbolContent.length === 1 && namedSymbolContent[0].name === "STR_CONST" /* RawRType.StringConst */) {
|
|
39
38
|
// special handling when someone calls a function by string
|
|
40
|
-
|
|
39
|
+
return parseNamedFunctionCall(data, namedSymbolContent, mappedWithName, location, content);
|
|
41
40
|
}
|
|
42
41
|
else if (namedSymbolContent.findIndex(x => x.name === "SYMBOL_FUNCTION_CALL" /* RawRType.SymbolFunctionCall */) < 0) {
|
|
43
42
|
parser_1.parseLog.trace(`is not named function call, as the name is not of type ${"RFunctionCall" /* RType.FunctionCall */}, but: ${namedSymbolContent.map(n => n.name).join(',')}`);
|
|
44
43
|
const mayResult = tryParseUnnamedFunctionCall(data, mappedWithName, location, content);
|
|
45
|
-
|
|
46
|
-
return (0, hooks_1.executeUnknownHook)(data.hooks.functions.onFunctionCall.unknown, data, mappedWithName);
|
|
47
|
-
}
|
|
48
|
-
result = mayResult;
|
|
44
|
+
return mayResult;
|
|
49
45
|
}
|
|
50
46
|
else {
|
|
51
|
-
|
|
47
|
+
return parseNamedFunctionCall(data, namedSymbolContent, mappedWithName, location, content);
|
|
52
48
|
}
|
|
53
|
-
return (0, hooks_1.executeHook)(data.hooks.functions.onFunctionCall.after, data, result);
|
|
54
49
|
}
|
|
55
50
|
exports.tryNormalizeFunctionCall = tryNormalizeFunctionCall;
|
|
56
51
|
function parseArguments(mappedWithName, data) {
|
|
@@ -59,7 +54,7 @@ function parseArguments(mappedWithName, data) {
|
|
|
59
54
|
const splitArgumentsOnComma = (0, arrays_1.splitArrayOn)(argContainer.slice(1, argContainer.length - 1), x => x.name === "," /* RawRType.Comma */);
|
|
60
55
|
return splitArgumentsOnComma.map(x => {
|
|
61
56
|
parser_1.parseLog.trace('trying to parse argument');
|
|
62
|
-
return (0,
|
|
57
|
+
return (0, normalize_argument_1.tryToNormalizeArgument)(data, x);
|
|
63
58
|
});
|
|
64
59
|
}
|
|
65
60
|
function tryParseUnnamedFunctionCall(data, mappedWithName, location, content) {
|
|
@@ -70,7 +65,7 @@ function tryParseUnnamedFunctionCall(data, mappedWithName, location, content) {
|
|
|
70
65
|
}
|
|
71
66
|
parser_1.parseLog.trace('Assuming structure to be a function call');
|
|
72
67
|
// we parse an expression to allow function calls
|
|
73
|
-
const calledFunction = (0,
|
|
68
|
+
const calledFunction = (0, normalize_expression_1.normalizeExpression)(data, mappedWithName[0].content);
|
|
74
69
|
const parsedArguments = parseArguments(mappedWithName, data);
|
|
75
70
|
if (parsedArguments.length === 0) {
|
|
76
71
|
// sadly, next() and break() work
|
|
@@ -105,7 +100,7 @@ function tryParseUnnamedFunctionCall(data, mappedWithName, location, content) {
|
|
|
105
100
|
location,
|
|
106
101
|
lexeme: content,
|
|
107
102
|
calledFunction: calledFunction,
|
|
108
|
-
arguments: parsedArguments,
|
|
103
|
+
arguments: parsedArguments.map(x => x ?? r_function_call_1.EmptyArgument),
|
|
109
104
|
info: {
|
|
110
105
|
fullRange: data.currentRange,
|
|
111
106
|
additionalTokens: [],
|
|
@@ -116,7 +111,7 @@ function tryParseUnnamedFunctionCall(data, mappedWithName, location, content) {
|
|
|
116
111
|
function parseNamedFunctionCall(data, symbolContent, mappedWithName, location, content) {
|
|
117
112
|
let functionName;
|
|
118
113
|
if (symbolContent.length === 1 && symbolContent[0].name === "STR_CONST" /* RawRType.StringConst */) {
|
|
119
|
-
const stringBase = (0,
|
|
114
|
+
const stringBase = (0, normalize_string_1.normalizeString)(data, symbolContent[0].content);
|
|
120
115
|
functionName = {
|
|
121
116
|
type: "RSymbol" /* RType.Symbol */,
|
|
122
117
|
namespace: undefined,
|
|
@@ -127,10 +122,10 @@ function parseNamedFunctionCall(data, symbolContent, mappedWithName, location, c
|
|
|
127
122
|
};
|
|
128
123
|
}
|
|
129
124
|
else {
|
|
130
|
-
functionName = (0,
|
|
125
|
+
functionName = (0, normalize_symbol_1.tryNormalizeSymbol)(data, symbolContent);
|
|
131
126
|
}
|
|
132
127
|
(0, assert_1.guard)(functionName !== undefined, 'expected function name to be a symbol, yet received none');
|
|
133
|
-
(0, assert_1.guard)(functionName.type === "RSymbol" /* RType.Symbol */, () => `expected function name to be a symbol, yet received ${JSON.stringify(functionName)}`);
|
|
128
|
+
(0, assert_1.guard)((functionName).type === "RSymbol" /* RType.Symbol */, () => `expected function name to be a symbol, yet received ${JSON.stringify(functionName)}`);
|
|
134
129
|
const parsedArguments = parseArguments(mappedWithName, data);
|
|
135
130
|
return {
|
|
136
131
|
type: "RFunctionCall" /* RType.FunctionCall */,
|
|
@@ -138,7 +133,7 @@ function parseNamedFunctionCall(data, symbolContent, mappedWithName, location, c
|
|
|
138
133
|
location,
|
|
139
134
|
lexeme: content,
|
|
140
135
|
functionName,
|
|
141
|
-
arguments: parsedArguments,
|
|
136
|
+
arguments: parsedArguments.map(x => x ?? r_function_call_1.EmptyArgument),
|
|
142
137
|
info: {
|
|
143
138
|
fullRange: data.currentRange,
|
|
144
139
|
additionalTokens: [],
|
|
@@ -146,4 +141,4 @@ function parseNamedFunctionCall(data, symbolContent, mappedWithName, location, c
|
|
|
146
141
|
}
|
|
147
142
|
};
|
|
148
143
|
}
|
|
149
|
-
//# sourceMappingURL=call.js.map
|
|
144
|
+
//# sourceMappingURL=normalize-call.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { NormalizerData } from '../../normalizer-data';
|
|
2
|
+
import type { NamedXmlBasedJson } from '../../input-format';
|
|
3
|
+
import type { RFunctionDefinition } from '../../../../model/nodes/r-function-definition';
|
|
4
|
+
/**
|
|
5
|
+
* Tries to parse the given data as a function definition.
|
|
6
|
+
*
|
|
7
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
8
|
+
* @param mappedWithName - The json object to extract the meta-information from
|
|
9
|
+
*
|
|
10
|
+
* @returns The parsed {@link RFunctionDefinition} or `undefined` if the given construct is not a function definition
|
|
11
|
+
*/
|
|
12
|
+
export declare function tryNormalizeFunctionDefinition(data: NormalizerData, mappedWithName: readonly NamedXmlBasedJson[]): RFunctionDefinition | undefined;
|
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.tryNormalizeFunctionDefinition = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
4
|
+
const parser_1 = require("../../../json/parser");
|
|
5
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
6
6
|
const assert_1 = require("../../../../../../../util/assert");
|
|
7
7
|
const arrays_1 = require("../../../../../../../util/arrays");
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const log_1 = require("../../../../../../../util/log");
|
|
11
|
-
const parser_1 = require("../../../json/parser");
|
|
8
|
+
const normalize_parameter_1 = require("./normalize-parameter");
|
|
9
|
+
const normalize_expressions_1 = require("../structure/normalize-expressions");
|
|
12
10
|
/**
|
|
13
11
|
* Tries to parse the given data as a function definition.
|
|
14
12
|
*
|
|
15
|
-
* @param data - The data used by the parser (see {@link
|
|
13
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
16
14
|
* @param mappedWithName - The json object to extract the meta-information from
|
|
17
15
|
*
|
|
18
16
|
* @returns The parsed {@link RFunctionDefinition} or `undefined` if the given construct is not a function definition
|
|
@@ -21,40 +19,37 @@ function tryNormalizeFunctionDefinition(data, mappedWithName) {
|
|
|
21
19
|
const fnBase = mappedWithName[0];
|
|
22
20
|
if (fnBase.name !== "FUNCTION" /* RawRType.Function */ && fnBase.name !== "\\\\" /* RawRType.Lambda */) {
|
|
23
21
|
parser_1.parseLog.trace(`expected function definition to be identified by keyword, yet received ${fnBase.name}`);
|
|
24
|
-
return
|
|
22
|
+
return undefined;
|
|
25
23
|
}
|
|
26
|
-
|
|
27
|
-
mappedWithName = (0, hooks_1.executeHook)(data.hooks.functions.onFunctionDefinition.before, data, mappedWithName);
|
|
28
|
-
const { content, location } = (0, meta_1.retrieveMetaStructure)(fnBase.content);
|
|
24
|
+
const { content, location } = (0, normalize_meta_1.retrieveMetaStructure)(fnBase.content);
|
|
29
25
|
const openParen = mappedWithName[1];
|
|
30
26
|
(0, assert_1.guard)(openParen.name === "(" /* RawRType.ParenLeft */, () => `expected opening parenthesis, yet received ${openParen.name}`);
|
|
31
27
|
const closingParenIndex = mappedWithName.findIndex(x => x.name === ")" /* RawRType.ParenRight */);
|
|
32
28
|
(0, assert_1.guard)(closingParenIndex !== -1, () => `expected closing parenthesis, yet received ${JSON.stringify(mappedWithName)}`);
|
|
33
29
|
const splitParameters = (0, arrays_1.splitArrayOn)(mappedWithName.slice(2, closingParenIndex), x => x.name === "," /* RawRType.Comma */);
|
|
34
30
|
parser_1.parseLog.trace(`function definition has ${splitParameters.length} parameters (by comma split)`);
|
|
35
|
-
const parameters = splitParameters.map(x => (0,
|
|
31
|
+
const parameters = splitParameters.map(x => (0, normalize_parameter_1.tryNormalizeParameter)(data, x));
|
|
36
32
|
if (parameters.some(p => p === undefined)) {
|
|
37
|
-
|
|
38
|
-
return
|
|
33
|
+
parser_1.parseLog.error(`function had unexpected unknown parameters: ${JSON.stringify(parameters.filter(assert_1.isNotUndefined))}, aborting.`);
|
|
34
|
+
return undefined;
|
|
39
35
|
}
|
|
40
36
|
parser_1.parseLog.trace(`function definition retained ${parameters.length} parameters after parsing, moving to body.`);
|
|
41
37
|
const bodyStructure = mappedWithName.slice(closingParenIndex + 1);
|
|
42
38
|
(0, assert_1.guard)(bodyStructure.length === 1, () => `expected function body to be unique, yet received ${bodyStructure.length}`);
|
|
43
|
-
const body = (0,
|
|
39
|
+
const body = (0, normalize_expressions_1.normalizeExpressions)(data, bodyStructure);
|
|
44
40
|
(0, assert_1.guard)(body.length === 1 && body[0].type !== "RDelimiter" /* RType.Delimiter */, () => `expected function body to yield one normalized expression, but ${body.length}`);
|
|
45
|
-
|
|
41
|
+
return {
|
|
46
42
|
type: "RFunctionDefinition" /* RType.FunctionDefinition */,
|
|
47
43
|
location,
|
|
48
44
|
lexeme: content,
|
|
49
45
|
parameters: parameters,
|
|
50
|
-
body: (0,
|
|
46
|
+
body: (0, normalize_meta_1.ensureExpressionList)(body[0]),
|
|
51
47
|
info: {
|
|
52
48
|
fullRange: data.currentRange,
|
|
53
49
|
additionalTokens: [],
|
|
54
50
|
fullLexeme: data.currentLexeme
|
|
55
51
|
}
|
|
56
52
|
};
|
|
57
|
-
return (0, hooks_1.executeHook)(data.hooks.functions.onFunctionDefinition.after, data, result);
|
|
58
53
|
}
|
|
59
54
|
exports.tryNormalizeFunctionDefinition = tryNormalizeFunctionDefinition;
|
|
60
|
-
//# sourceMappingURL=definition.js.map
|
|
55
|
+
//# sourceMappingURL=normalize-definition.js.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
+
import type { NormalizerData } from '../../normalizer-data';
|
|
1
2
|
import type { NamedXmlBasedJson } from '../../input-format';
|
|
2
|
-
import type { RParameter } from '../../../../model';
|
|
3
|
-
import type { ParserData } from '../../data';
|
|
3
|
+
import type { RParameter } from '../../../../model/nodes/r-parameter';
|
|
4
4
|
/**
|
|
5
5
|
* Either parses `[SYMBOL_FORMALS]` or `[SYMBOL_FORMALS, EQ_FORMALS, expr]` as a parameter of a function definition in R.
|
|
6
6
|
* Probably directly called by the function definition parser as otherwise, we do not expect to find parameters.
|
|
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 `[SYMBOL_FORMALS]` or `[SYMBOL_FORMALS, EQ_FORMALS, expr]`
|
|
10
10
|
*
|
|
11
11
|
* @returns The parsed parameter or `undefined` if the given object is not a parameter.
|
|
12
12
|
*/
|
|
13
|
-
export declare function tryNormalizeParameter(data:
|
|
13
|
+
export declare function tryNormalizeParameter(data: NormalizerData, objs: readonly NamedXmlBasedJson[]): RParameter | undefined;
|
package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{parameter.js → normalize-parameter.js}
RENAMED
|
@@ -1,36 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.tryNormalizeParameter = void 0;
|
|
4
|
-
const meta_1 = require("../meta");
|
|
5
|
-
const hooks_1 = require("../../hooks");
|
|
6
|
-
const log_1 = require("../../../../../../../util/log");
|
|
7
|
-
const assert_1 = require("../../../../../../../util/assert");
|
|
8
|
-
const structure_1 = require("../structure");
|
|
9
4
|
const parser_1 = require("../../../json/parser");
|
|
5
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
6
|
+
const assert_1 = require("../../../../../../../util/assert");
|
|
7
|
+
const normalize_single_node_1 = require("../structure/normalize-single-node");
|
|
10
8
|
/**
|
|
11
9
|
* Either parses `[SYMBOL_FORMALS]` or `[SYMBOL_FORMALS, EQ_FORMALS, expr]` as a parameter of a function definition in R.
|
|
12
10
|
* Probably directly called by the function definition parser as otherwise, we do not expect to find parameters.
|
|
13
11
|
*
|
|
14
|
-
* @param data - The data used by the parser (see {@link
|
|
12
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
15
13
|
* @param objs - Either `[SYMBOL_FORMALS]` or `[SYMBOL_FORMALS, EQ_FORMALS, expr]`
|
|
16
14
|
*
|
|
17
15
|
* @returns The parsed parameter or `undefined` if the given object is not a parameter.
|
|
18
16
|
*/
|
|
19
17
|
function tryNormalizeParameter(data, objs) {
|
|
20
18
|
parser_1.parseLog.debug('[parameter]');
|
|
21
|
-
objs = (0, hooks_1.executeHook)(data.hooks.functions.onParameter.before, data, objs);
|
|
22
19
|
if (objs.length !== 1 && objs.length !== 3) {
|
|
23
|
-
|
|
24
|
-
return
|
|
20
|
+
parser_1.parseLog.warn(`Either [SYMBOL_FORMALS] or [SYMBOL_FORMALS, EQ_FORMALS, expr], but got: ${JSON.stringify(objs)}`);
|
|
21
|
+
return undefined;
|
|
25
22
|
}
|
|
26
23
|
const symbol = objs[0];
|
|
27
24
|
if (symbol.name !== "SYMBOL_FORMALS" /* RawRType.SymbolFormals */) {
|
|
28
|
-
|
|
29
|
-
return
|
|
25
|
+
parser_1.parseLog.warn(`expected symbol for parameter, yet received ${JSON.stringify(objs)}`);
|
|
26
|
+
return undefined;
|
|
30
27
|
}
|
|
31
28
|
const defaultValue = objs.length === 3 ? parseWithDefaultValue(data, objs) : undefined;
|
|
32
|
-
const { location, content } = (0,
|
|
33
|
-
|
|
29
|
+
const { location, content } = (0, normalize_meta_1.retrieveMetaStructure)(symbol.content);
|
|
30
|
+
return {
|
|
34
31
|
type: "RParameter" /* RType.Parameter */,
|
|
35
32
|
location,
|
|
36
33
|
special: content === '...',
|
|
@@ -53,12 +50,11 @@ function tryNormalizeParameter(data, objs) {
|
|
|
53
50
|
additionalTokens: defaultValue?.type === "RDelimiter" /* RType.Delimiter */ ? [defaultValue] : []
|
|
54
51
|
}
|
|
55
52
|
};
|
|
56
|
-
return (0, hooks_1.executeHook)(data.hooks.functions.onParameter.after, data, result);
|
|
57
53
|
}
|
|
58
54
|
exports.tryNormalizeParameter = tryNormalizeParameter;
|
|
59
55
|
function parseWithDefaultValue(data, objs) {
|
|
60
56
|
(0, assert_1.guard)(objs[1].name === "EQ_FORMALS" /* RawRType.EqualFormals */, () => `[arg-default] second element of parameter must be ${"EQ_FORMALS" /* RawRType.EqualFormals */}, but: ${JSON.stringify(objs)}`);
|
|
61
57
|
(0, assert_1.guard)(objs[2].name === "expr" /* RawRType.Expression */, () => `[arg-default] third element of parameter must be an Expression but: ${JSON.stringify(objs)}`);
|
|
62
|
-
return (0,
|
|
58
|
+
return (0, normalize_single_node_1.normalizeSingleNode)(data, objs[2]);
|
|
63
59
|
}
|
|
64
|
-
//# sourceMappingURL=parameter.js.map
|
|
60
|
+
//# sourceMappingURL=normalize-parameter.js.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { NormalizerData } from '../../normalizer-data';
|
|
2
|
+
import type { XmlBasedJson } from '../../input-format';
|
|
3
|
+
import type { RBreak } from '../../../../model/nodes/r-break';
|
|
4
|
+
export declare function normalizeBreak(data: NormalizerData, obj: XmlBasedJson): RBreak;
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.normalizeBreak = void 0;
|
|
4
|
-
const hooks_1 = require("../../hooks");
|
|
5
|
-
const meta_1 = require("../meta");
|
|
6
4
|
const parser_1 = require("../../../json/parser");
|
|
5
|
+
const log_1 = require("../../../../../../../util/log");
|
|
6
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
7
7
|
function normalizeBreak(data, obj) {
|
|
8
|
-
parser_1.parseLog
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const result = {
|
|
8
|
+
(0, log_1.expensiveTrace)(parser_1.parseLog, () => `[break] ${JSON.stringify(obj)}`);
|
|
9
|
+
const { location, content } = (0, normalize_meta_1.retrieveMetaStructure)(obj);
|
|
10
|
+
return {
|
|
12
11
|
type: "RBreak" /* RType.Break */,
|
|
13
12
|
location,
|
|
14
13
|
lexeme: content,
|
|
@@ -18,7 +17,6 @@ function normalizeBreak(data, obj) {
|
|
|
18
17
|
fullLexeme: content
|
|
19
18
|
}
|
|
20
19
|
};
|
|
21
|
-
return (0, hooks_1.executeHook)(data.hooks.loops.onBreak.after, data, result);
|
|
22
20
|
}
|
|
23
21
|
exports.normalizeBreak = normalizeBreak;
|
|
24
|
-
//# sourceMappingURL=break.js.map
|
|
22
|
+
//# sourceMappingURL=normalize-break.js.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { NormalizerData } from '../../normalizer-data';
|
|
2
|
+
import type { NamedXmlBasedJson } from '../../input-format';
|
|
3
|
+
import type { RForLoop } from '../../../../model/nodes/r-for-loop';
|
|
4
|
+
export declare function tryNormalizeFor(data: NormalizerData, [forToken, head, body]: [NamedXmlBasedJson, NamedXmlBasedJson, NamedXmlBasedJson]): RForLoop | undefined;
|
|
@@ -2,18 +2,18 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.tryNormalizeFor = void 0;
|
|
4
4
|
const input_format_1 = require("../../input-format");
|
|
5
|
-
const meta_1 = require("../meta");
|
|
6
|
-
const assert_1 = require("../../../../../../../util/assert");
|
|
7
|
-
const values_1 = require("../values");
|
|
8
|
-
const structure_1 = require("../structure");
|
|
9
|
-
const hooks_1 = require("../../hooks");
|
|
10
|
-
const other_1 = require("../other");
|
|
11
5
|
const parser_1 = require("../../../json/parser");
|
|
12
|
-
|
|
6
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
7
|
+
const assert_1 = require("../../../../../../../util/assert");
|
|
8
|
+
const normalize_single_node_1 = require("../structure/normalize-single-node");
|
|
9
|
+
const normalize_expressions_1 = require("../structure/normalize-expressions");
|
|
10
|
+
const normalize_symbol_1 = require("../values/normalize-symbol");
|
|
11
|
+
const normalize_comment_1 = require("../other/normalize-comment");
|
|
12
|
+
function tryNormalizeFor(data, [forToken, head, body]) {
|
|
13
13
|
// funny, for does not use top-level parenthesis
|
|
14
14
|
if (forToken.name !== "FOR" /* RawRType.For */) {
|
|
15
15
|
parser_1.parseLog.debug('encountered non-for token for supposed for-loop structure');
|
|
16
|
-
return
|
|
16
|
+
return undefined;
|
|
17
17
|
}
|
|
18
18
|
else if (head.name !== "forcond" /* RawRType.ForCondition */) {
|
|
19
19
|
throw new input_format_1.XmlParseError(`expected condition for for-loop but found ${JSON.stringify(head)}`);
|
|
@@ -23,9 +23,8 @@ function tryNormalizeFor(data, forToken, head, body) {
|
|
|
23
23
|
}
|
|
24
24
|
parser_1.parseLog.debug('trying to parse for-loop');
|
|
25
25
|
const newParseData = { ...data, data, currentRange: undefined, currentLexeme: undefined };
|
|
26
|
-
({ forToken, condition: head, body } = (0, hooks_1.executeHook)(data.hooks.loops.onForLoop.before, data, { forToken, condition: head, body }));
|
|
27
26
|
const { variable: parsedVariable, vector: parsedVector, comments } = normalizeForHead(newParseData, head.content);
|
|
28
|
-
const parseBody = (0,
|
|
27
|
+
const parseBody = (0, normalize_single_node_1.normalizeSingleNode)(newParseData, body);
|
|
29
28
|
if (parsedVariable === undefined ||
|
|
30
29
|
parsedVector === undefined ||
|
|
31
30
|
parseBody.type === "RDelimiter" /* RType.Delimiter */) {
|
|
@@ -35,12 +34,12 @@ function tryNormalizeFor(data, forToken, head, body) {
|
|
|
35
34
|
parseBody,
|
|
36
35
|
])}`);
|
|
37
36
|
}
|
|
38
|
-
const { location, content } = (0,
|
|
39
|
-
|
|
37
|
+
const { location, content } = (0, normalize_meta_1.retrieveMetaStructure)(forToken.content);
|
|
38
|
+
return {
|
|
40
39
|
type: "RForLoop" /* RType.ForLoop */,
|
|
41
40
|
variable: parsedVariable,
|
|
42
41
|
vector: parsedVector,
|
|
43
|
-
body: (0,
|
|
42
|
+
body: (0, normalize_meta_1.ensureExpressionList)(parseBody),
|
|
44
43
|
lexeme: content,
|
|
45
44
|
info: {
|
|
46
45
|
fullRange: data.currentRange,
|
|
@@ -49,21 +48,20 @@ function tryNormalizeFor(data, forToken, head, body) {
|
|
|
49
48
|
},
|
|
50
49
|
location
|
|
51
50
|
};
|
|
52
|
-
return (0, hooks_1.executeHook)(data.hooks.loops.onForLoop.after, data, result);
|
|
53
51
|
}
|
|
54
52
|
exports.tryNormalizeFor = tryNormalizeFor;
|
|
55
53
|
function normalizeForHead(data, forCondition) {
|
|
56
54
|
// must have a child which is `in`, a variable on the left, and a vector on the right
|
|
57
|
-
const children = (0, input_format_1.
|
|
58
|
-
const { comments, others } = (0,
|
|
55
|
+
const children = (0, input_format_1.getKeyGuarded)(forCondition, input_format_1.childrenKey).map(content => ({ name: (0, normalize_meta_1.getTokenType)(content), content }));
|
|
56
|
+
const { comments, others } = (0, normalize_expressions_1.splitComments)(children);
|
|
59
57
|
const inPosition = others.findIndex(elem => elem.name === "IN" /* RawRType.ForIn */);
|
|
60
58
|
(0, assert_1.guard)(inPosition > 0 && inPosition < others.length - 1, () => `for loop searched in and found at ${inPosition}, but this is not in legal bounds for ${JSON.stringify(children)}`);
|
|
61
|
-
const variable = (0,
|
|
59
|
+
const variable = (0, normalize_symbol_1.tryNormalizeSymbol)(data, [others[inPosition - 1]]);
|
|
62
60
|
(0, assert_1.guard)(variable !== undefined, () => `for loop variable should have been parsed to a symbol but was ${JSON.stringify(variable)}`);
|
|
63
61
|
(0, assert_1.guard)(variable.type === "RSymbol" /* RType.Symbol */, () => `for loop variable should have been parsed to a symbol but was ${JSON.stringify(variable)}`);
|
|
64
|
-
const vector = (0,
|
|
62
|
+
const vector = (0, normalize_expressions_1.normalizeExpressions)(data, [others[inPosition + 1]]);
|
|
65
63
|
(0, assert_1.guard)(vector.length === 1 && vector[0].type !== "RDelimiter" /* RType.Delimiter */, () => `for loop vector should have been parsed to a single element but was ${JSON.stringify(vector)}`);
|
|
66
|
-
const parsedComments = comments.map(c => (0,
|
|
64
|
+
const parsedComments = comments.map(c => (0, normalize_comment_1.normalizeComment)(data, c.content));
|
|
67
65
|
return { variable, vector: vector[0], comments: parsedComments };
|
|
68
66
|
}
|
|
69
|
-
//# sourceMappingURL=for.js.map
|
|
67
|
+
//# sourceMappingURL=normalize-for.js.map
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.normalizeNext = void 0;
|
|
4
|
-
const
|
|
5
|
-
const meta_1 = require("../meta");
|
|
4
|
+
const log_1 = require("../../../../../../../util/log");
|
|
6
5
|
const parser_1 = require("../../../json/parser");
|
|
6
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
7
7
|
function normalizeNext(data, obj) {
|
|
8
|
-
parser_1.parseLog
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const result = {
|
|
8
|
+
(0, log_1.expensiveTrace)(parser_1.parseLog, () => `[next] ${JSON.stringify(obj)}`);
|
|
9
|
+
const { location, content } = (0, normalize_meta_1.retrieveMetaStructure)(obj);
|
|
10
|
+
return {
|
|
12
11
|
type: "RNext" /* RType.Next */,
|
|
13
12
|
location,
|
|
14
13
|
lexeme: content,
|
|
@@ -18,7 +17,6 @@ function normalizeNext(data, obj) {
|
|
|
18
17
|
fullLexeme: data.currentLexeme
|
|
19
18
|
}
|
|
20
19
|
};
|
|
21
|
-
return (0, hooks_1.executeHook)(data.hooks.loops.onNext.after, data, result);
|
|
22
20
|
}
|
|
23
21
|
exports.normalizeNext = normalizeNext;
|
|
24
|
-
//# sourceMappingURL=next.js.map
|
|
22
|
+
//# sourceMappingURL=normalize-next.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { NormalizerData } from '../../normalizer-data';
|
|
2
|
+
import type { NamedXmlBasedJson } from '../../input-format';
|
|
3
|
+
import type { RRepeatLoop } from '../../../../model/nodes/r-repeat-loop';
|
|
4
|
+
/**
|
|
5
|
+
* Try to parse the construct as a {@link RRepeatLoop}.
|
|
6
|
+
*
|
|
7
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
8
|
+
* @param repeatToken - Token which represents the `repeat` keyword
|
|
9
|
+
* @param bodyToken - The `body` of the repeat-loop
|
|
10
|
+
*
|
|
11
|
+
* @returns The parsed {@link RRepeatLoop} or `undefined` if the given construct is not a repeat-loop
|
|
12
|
+
*/
|
|
13
|
+
export declare function tryNormalizeRepeat(data: NormalizerData, [repeatToken, bodyToken]: [NamedXmlBasedJson, NamedXmlBasedJson]): RRepeatLoop | undefined;
|