@eagleoutice/flowr 1.5.2 → 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
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseNodesWithUnknownType = exports.normalizeExpressions = exports.splitComments = void 0;
|
|
4
|
+
const normalize_single_node_1 = require("./normalize-single-node");
|
|
5
|
+
const parser_1 = require("../../../json/parser");
|
|
6
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
7
|
+
const log_1 = require("../../../../../../../util/log");
|
|
8
|
+
const assert_1 = require("../../../../../../../util/assert");
|
|
9
|
+
const json_1 = require("../../../../../../../util/json");
|
|
10
|
+
const normalize_unary_1 = require("../operators/normalize-unary");
|
|
11
|
+
const normalize_repeat_1 = require("../loops/normalize-repeat");
|
|
12
|
+
const normalize_binary_1 = require("../operators/normalize-binary");
|
|
13
|
+
const normalize_for_1 = require("../loops/normalize-for");
|
|
14
|
+
const normalize_symbol_1 = require("../values/normalize-symbol");
|
|
15
|
+
const normalize_if_then_1 = require("../control/normalize-if-then");
|
|
16
|
+
const normalize_while_1 = require("../loops/normalize-while");
|
|
17
|
+
const normalize_if_then_else_1 = require("../control/normalize-if-then-else");
|
|
18
|
+
const normalize_comment_1 = require("../other/normalize-comment");
|
|
19
|
+
function normalizeMappedWithoutSemicolonBasedOnType(mappedWithName, data) {
|
|
20
|
+
let result = undefined;
|
|
21
|
+
switch (mappedWithName.length) {
|
|
22
|
+
case 1:
|
|
23
|
+
result = (0, normalize_single_node_1.normalizeSingleNode)(data, mappedWithName[0]);
|
|
24
|
+
break;
|
|
25
|
+
case 2:
|
|
26
|
+
result = (0, normalize_unary_1.tryNormalizeUnary)(data, mappedWithName)
|
|
27
|
+
?? (0, normalize_repeat_1.tryNormalizeRepeat)(data, mappedWithName);
|
|
28
|
+
break;
|
|
29
|
+
case 3:
|
|
30
|
+
result = (0, normalize_binary_1.tryNormalizeBinary)(data, mappedWithName)
|
|
31
|
+
?? (0, normalize_for_1.tryNormalizeFor)(data, mappedWithName)
|
|
32
|
+
?? (0, normalize_symbol_1.tryNormalizeSymbol)(data, mappedWithName);
|
|
33
|
+
break;
|
|
34
|
+
case 5:
|
|
35
|
+
result = (0, normalize_if_then_1.tryNormalizeIfThen)(data, mappedWithName)
|
|
36
|
+
?? (0, normalize_while_1.tryNormalizeWhile)(data, mappedWithName);
|
|
37
|
+
break;
|
|
38
|
+
case 7:
|
|
39
|
+
result = (0, normalize_if_then_else_1.tryNormalizeIfThenElse)(data, mappedWithName);
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
// otherwise perform default parsing
|
|
43
|
+
return result !== undefined ? [result] : parseNodesWithUnknownType(data, mappedWithName);
|
|
44
|
+
}
|
|
45
|
+
function splitComments(tokens) {
|
|
46
|
+
const comments = [];
|
|
47
|
+
const others = [];
|
|
48
|
+
for (const elem of tokens) {
|
|
49
|
+
if (elem.name === "COMMENT" /* RawRType.Comment */) {
|
|
50
|
+
comments.push(elem);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
others.push(elem);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return { comments, others };
|
|
57
|
+
}
|
|
58
|
+
exports.splitComments = splitComments;
|
|
59
|
+
function splitExprs(tokens) {
|
|
60
|
+
let last = 0, i = 0;
|
|
61
|
+
let lastExpr = false;
|
|
62
|
+
const segments = [];
|
|
63
|
+
for (const token of tokens) {
|
|
64
|
+
if (token.name === ";" /* RawRType.Semicolon */) {
|
|
65
|
+
segments.push(tokens.slice(last, i));
|
|
66
|
+
lastExpr = false;
|
|
67
|
+
last = i + 1;
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
const thisExpr = token.name === "expr" /* RawRType.Expression */ || token.name === "expr_or_assign_or_help" /* RawRType.ExprOfAssignOrHelp */;
|
|
71
|
+
if (thisExpr && lastExpr) {
|
|
72
|
+
if (i > last) {
|
|
73
|
+
segments.push(tokens.slice(last, i));
|
|
74
|
+
}
|
|
75
|
+
segments.push([tokens[i]]);
|
|
76
|
+
last = i + 1;
|
|
77
|
+
}
|
|
78
|
+
lastExpr = thisExpr;
|
|
79
|
+
}
|
|
80
|
+
i++;
|
|
81
|
+
}
|
|
82
|
+
if (last < tokens.length) {
|
|
83
|
+
segments.push(tokens.slice(last, tokens.length));
|
|
84
|
+
}
|
|
85
|
+
return segments;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Handles semicolons within _and_ braces at the start and end of the expression
|
|
89
|
+
* @param raw - The tokens to split
|
|
90
|
+
*/
|
|
91
|
+
function handleExpressionList(raw) {
|
|
92
|
+
if (raw.length === 0) {
|
|
93
|
+
return { segments: [], comments: [], braces: undefined };
|
|
94
|
+
}
|
|
95
|
+
const { comments, others: tokens } = splitComments(raw);
|
|
96
|
+
const first = tokens[0].name;
|
|
97
|
+
if (first === "{" /* RawRType.BraceLeft */) {
|
|
98
|
+
const endType = tokens[tokens.length - 1].name;
|
|
99
|
+
(0, assert_1.guard)(endType === "}" /* RawRType.BraceRight */, () => `expected a brace at the end of the expression list as well, but ${endType} :: ${JSON.stringify(tokens[tokens.length - 1], json_1.jsonReplacer)}`);
|
|
100
|
+
return {
|
|
101
|
+
segments: [tokens.slice(1, tokens.length - 1)],
|
|
102
|
+
comments,
|
|
103
|
+
braces: [tokens[0], tokens[tokens.length - 1]]
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
else if (first === "(" /* RawRType.ParenLeft */) {
|
|
107
|
+
const endType = tokens[tokens.length - 1].name;
|
|
108
|
+
(0, assert_1.guard)(endType === ")" /* RawRType.ParenRight */, () => `expected a parenthesis at the end of the expression list as well, but ${endType} :: ${JSON.stringify(tokens[tokens.length - 1], json_1.jsonReplacer)}`);
|
|
109
|
+
return {
|
|
110
|
+
segments: [tokens.slice(1, tokens.length - 1)],
|
|
111
|
+
comments,
|
|
112
|
+
braces: [tokens[0], tokens[tokens.length - 1]]
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
return { segments: splitExprs(tokens), comments, braces: undefined };
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function processBraces([start, end], processed, comments, data) {
|
|
120
|
+
const [newStart, newEnd] = [(0, normalize_symbol_1.tryNormalizeSymbol)(data, [start]), (0, normalize_symbol_1.tryNormalizeSymbol)(data, [end])];
|
|
121
|
+
(0, assert_1.guard)(newStart !== undefined && newEnd !== undefined, () => `expected both start and end to be symbols, but ${JSON.stringify(start, json_1.jsonReplacer)} :: ${JSON.stringify(end, json_1.jsonReplacer)}`);
|
|
122
|
+
return {
|
|
123
|
+
type: "RExpressionList" /* RType.ExpressionList */,
|
|
124
|
+
children: processed,
|
|
125
|
+
grouping: [newStart, newEnd],
|
|
126
|
+
lexeme: undefined,
|
|
127
|
+
location: undefined,
|
|
128
|
+
info: {
|
|
129
|
+
additionalTokens: comments,
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
function normalizeExpressions(data, tokens) {
|
|
134
|
+
if (tokens.length === 0) {
|
|
135
|
+
parser_1.parseLog.warn('no children received, skipping');
|
|
136
|
+
return [];
|
|
137
|
+
}
|
|
138
|
+
let mappedWithName = tokens[0].name ? tokens : (0, normalize_meta_1.getWithTokenType)(tokens);
|
|
139
|
+
(0, log_1.expensiveTrace)(log_1.log, () => `[parseBasedOnType] names: [${mappedWithName.map(({ name }) => name).join(', ')}]`);
|
|
140
|
+
let parsedComments = [];
|
|
141
|
+
if (mappedWithName.length > 1) {
|
|
142
|
+
// iterate over types, find all semicolons, and segment the tokens based on them.
|
|
143
|
+
// we could potentially optimize as not all expr may have semicolons but not for now
|
|
144
|
+
const { segments, braces, comments } = handleExpressionList(mappedWithName);
|
|
145
|
+
parsedComments = comments.map(c => (0, normalize_comment_1.normalizeComment)(data, c.content));
|
|
146
|
+
if (segments.length > 1 || braces) {
|
|
147
|
+
const processed = segments.flatMap(s => normalizeExpressions(data, s));
|
|
148
|
+
(0, assert_1.guard)(!processed.some(x => x.type === "RDelimiter" /* RType.Delimiter */), () => `expected no delimiter tokens in ${JSON.stringify(processed)}`);
|
|
149
|
+
if (braces) {
|
|
150
|
+
return [processBraces(braces, processed, parsedComments, data)];
|
|
151
|
+
}
|
|
152
|
+
else if (processed.length > 0) {
|
|
153
|
+
if (parsedComments) {
|
|
154
|
+
processed[0].info.additionalTokens ??= [];
|
|
155
|
+
processed[0].info.additionalTokens.push(...parsedComments);
|
|
156
|
+
}
|
|
157
|
+
return processed;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
return parsedComments;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/*
|
|
164
|
+
* if splitOnSemicolon.length === 1, we can continue with the normal parsing, but we may have had a trailing semicolon, with this, it is removed as well.
|
|
165
|
+
* splitOnSemicolon.length === 0 is not possible, as we would have had an empty array before, split does not add elements.
|
|
166
|
+
*/
|
|
167
|
+
mappedWithName = segments[0];
|
|
168
|
+
}
|
|
169
|
+
return [...parsedComments, ...normalizeMappedWithoutSemicolonBasedOnType(mappedWithName, data)];
|
|
170
|
+
}
|
|
171
|
+
exports.normalizeExpressions = normalizeExpressions;
|
|
172
|
+
function parseNodesWithUnknownType(data, mappedWithName) {
|
|
173
|
+
const parsedNodes = [];
|
|
174
|
+
// used to indicate the new root node of this set of nodes
|
|
175
|
+
for (const elem of mappedWithName) {
|
|
176
|
+
const retrieved = (0, normalize_single_node_1.normalizeSingleNode)(data, elem);
|
|
177
|
+
parsedNodes.push(retrieved);
|
|
178
|
+
}
|
|
179
|
+
return parsedNodes;
|
|
180
|
+
}
|
|
181
|
+
exports.parseNodesWithUnknownType = parseNodesWithUnknownType;
|
|
182
|
+
//# sourceMappingURL=normalize-expressions.js.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { NormalizerData } from '../../normalizer-data';
|
|
2
|
+
import type { XmlBasedJson } from '../../input-format';
|
|
3
|
+
import type { RExpressionList } from '../../../../model/nodes/r-expression-list';
|
|
4
|
+
export declare function normalizeRootObjToAst(data: NormalizerData, obj: XmlBasedJson): RExpressionList;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeRootObjToAst = void 0;
|
|
4
|
+
const input_format_1 = require("../../input-format");
|
|
5
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
6
|
+
const normalize_expressions_1 = require("./normalize-expressions");
|
|
7
|
+
const log_1 = require("../../../../../../../util/log");
|
|
8
|
+
const arrays_1 = require("../../../../../../../util/arrays");
|
|
9
|
+
function normalizeRootObjToAst(data, obj) {
|
|
10
|
+
const exprContent = (0, input_format_1.getKeyGuarded)(obj, "exprlist" /* RawRType.ExpressionList */);
|
|
11
|
+
(0, normalize_meta_1.assureTokenType)(exprContent, "exprlist" /* RawRType.ExpressionList */);
|
|
12
|
+
let parsedChildren = [];
|
|
13
|
+
if (input_format_1.childrenKey in exprContent) {
|
|
14
|
+
const children = (0, input_format_1.getKeyGuarded)(exprContent, input_format_1.childrenKey);
|
|
15
|
+
parsedChildren = (0, normalize_expressions_1.normalizeExpressions)(data, children);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
log_1.log.debug('no children found, assume empty input');
|
|
19
|
+
}
|
|
20
|
+
const [delimiters, nodes] = (0, arrays_1.partition)(parsedChildren, x => x.type === "RDelimiter" /* RType.Delimiter */ || x.type === "RComment" /* RType.Comment */);
|
|
21
|
+
return {
|
|
22
|
+
type: "RExpressionList" /* RType.ExpressionList */,
|
|
23
|
+
children: nodes,
|
|
24
|
+
grouping: undefined,
|
|
25
|
+
lexeme: undefined,
|
|
26
|
+
info: {
|
|
27
|
+
fullRange: data.currentRange,
|
|
28
|
+
additionalTokens: delimiters,
|
|
29
|
+
fullLexeme: data.currentLexeme
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
exports.normalizeRootObjToAst = normalizeRootObjToAst;
|
|
34
|
+
//# sourceMappingURL=normalize-root.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { NormalizerData } from '../../normalizer-data';
|
|
2
|
+
import type { NamedXmlBasedJson } from '../../input-format';
|
|
3
|
+
import type { RNode } from '../../../../model/model';
|
|
4
|
+
import type { RDelimiter } from '../../../../model/nodes/info/r-delimiter';
|
|
5
|
+
/**
|
|
6
|
+
* Parses a single structure in the ast based on its type (e.g., a string, a number, a symbol, ...)
|
|
7
|
+
*
|
|
8
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
9
|
+
* @param elem - The element to parse
|
|
10
|
+
*
|
|
11
|
+
* @returns The parsed element as an `RNode` or an `RDelimiter` if it is such.
|
|
12
|
+
*/
|
|
13
|
+
export declare function normalizeSingleNode(data: NormalizerData, elem: NamedXmlBasedJson): RNode | RDelimiter;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeSingleNode = void 0;
|
|
4
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
5
|
+
const input_format_1 = require("../../input-format");
|
|
6
|
+
const normalize_line_directive_1 = require("../other/normalize-line-directive");
|
|
7
|
+
const assert_1 = require("../../../../../../../util/assert");
|
|
8
|
+
const normalize_delimiter_1 = require("./normalize-delimiter");
|
|
9
|
+
const normalize_comment_1 = require("../other/normalize-comment");
|
|
10
|
+
const normalize_expression_1 = require("../expression/normalize-expression");
|
|
11
|
+
const normalize_number_1 = require("../values/normalize-number");
|
|
12
|
+
const normalize_string_1 = require("../values/normalize-string");
|
|
13
|
+
const normalize_break_1 = require("../loops/normalize-break");
|
|
14
|
+
const normalize_next_1 = require("../loops/normalize-next");
|
|
15
|
+
const normalize_symbol_1 = require("../values/normalize-symbol");
|
|
16
|
+
/**
|
|
17
|
+
* Parses a single structure in the ast based on its type (e.g., a string, a number, a symbol, ...)
|
|
18
|
+
*
|
|
19
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
20
|
+
* @param elem - The element to parse
|
|
21
|
+
*
|
|
22
|
+
* @returns The parsed element as an `RNode` or an `RDelimiter` if it is such.
|
|
23
|
+
*/
|
|
24
|
+
function normalizeSingleNode(data, elem) {
|
|
25
|
+
switch (elem.name) {
|
|
26
|
+
case "(" /* RawRType.ParenLeft */:
|
|
27
|
+
case ")" /* RawRType.ParenRight */:
|
|
28
|
+
case "{" /* RawRType.BraceLeft */:
|
|
29
|
+
case "}" /* RawRType.BraceRight */:
|
|
30
|
+
return (0, normalize_delimiter_1.normalizeDelimiter)(elem);
|
|
31
|
+
case "COMMENT" /* RawRType.Comment */:
|
|
32
|
+
return (0, normalize_comment_1.normalizeComment)(data, elem.content);
|
|
33
|
+
case "LINE_DIRECTIVE" /* RawRType.LineDirective */:
|
|
34
|
+
return (0, normalize_line_directive_1.normalizeLineDirective)(data, elem.content);
|
|
35
|
+
case "exprlist" /* RawRType.ExpressionList */:
|
|
36
|
+
case "expr" /* RawRType.Expression */:
|
|
37
|
+
case "expr_or_assign_or_help" /* RawRType.ExprOfAssignOrHelp */:
|
|
38
|
+
return (0, normalize_expression_1.normalizeExpression)(data, elem.content);
|
|
39
|
+
case "NUM_CONST" /* RawRType.NumericConst */:
|
|
40
|
+
return (0, normalize_number_1.normalizeNumber)(data, elem.content);
|
|
41
|
+
case "STR_CONST" /* RawRType.StringConst */:
|
|
42
|
+
return (0, normalize_string_1.normalizeString)(data, elem.content);
|
|
43
|
+
case "BREAK" /* RawRType.Break */:
|
|
44
|
+
return (0, normalize_break_1.normalizeBreak)(data, elem.content);
|
|
45
|
+
case "NEXT" /* RawRType.Next */:
|
|
46
|
+
return (0, normalize_next_1.normalizeNext)(data, elem.content);
|
|
47
|
+
case "SYMBOL" /* RawRType.Symbol */:
|
|
48
|
+
case "SLOT" /* RawRType.Slot */:
|
|
49
|
+
case "NULL_CONST" /* RawRType.NullConst */: {
|
|
50
|
+
const symbol = (0, normalize_symbol_1.tryNormalizeSymbol)(data, (0, normalize_meta_1.getWithTokenType)([elem.content]));
|
|
51
|
+
(0, assert_1.guard)(symbol !== undefined, () => `should have been parsed to a symbol but was ${JSON.stringify(symbol)}`);
|
|
52
|
+
return symbol;
|
|
53
|
+
}
|
|
54
|
+
default:
|
|
55
|
+
throw new input_format_1.XmlParseError(`unknown type ${elem.name} for ${JSON.stringify(elem)} in ${JSON.stringify(data)}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.normalizeSingleNode = normalizeSingleNode;
|
|
59
|
+
//# sourceMappingURL=normalize-single-node.js.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { NormalizerData } from '../../normalizer-data';
|
|
2
|
+
import type { XmlBasedJson } from '../../input-format';
|
|
3
|
+
import type { RNa } from '../../../../../convert-values';
|
|
4
|
+
import type { RNumber } from '../../../../model/nodes/r-number';
|
|
5
|
+
import type { RLogical } from '../../../../model/nodes/r-logical';
|
|
6
|
+
import type { RSymbol } from '../../../../model/nodes/r-symbol';
|
|
7
|
+
import type { NoInfo } from '../../../../model/model';
|
|
8
|
+
/**
|
|
9
|
+
* Normalize the given object as a R number (see {@link number2ts}), supporting booleans (see {@link boolean2ts}),
|
|
10
|
+
* and special values.
|
|
11
|
+
* This requires you to check the corresponding name beforehand.
|
|
12
|
+
*
|
|
13
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
14
|
+
* @param obj - The json object to extract the meta-information from
|
|
15
|
+
*/
|
|
16
|
+
export declare function normalizeNumber(data: NormalizerData, obj: XmlBasedJson): RNumber | RLogical | RSymbol<NoInfo, typeof RNa>;
|
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.normalizeNumber = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const hooks_1 = require("../../hooks");
|
|
7
|
-
const parser_1 = require("../../../json/parser");
|
|
4
|
+
const convert_values_1 = require("../../../../../convert-values");
|
|
5
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
8
6
|
/**
|
|
9
7
|
* Normalize the given object as a R number (see {@link number2ts}), supporting booleans (see {@link boolean2ts}),
|
|
10
8
|
* and special values.
|
|
11
9
|
* This requires you to check the corresponding name beforehand.
|
|
12
10
|
*
|
|
13
|
-
* @param data - The data used by the parser (see {@link
|
|
11
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
14
12
|
* @param obj - The json object to extract the meta-information from
|
|
15
13
|
*/
|
|
16
14
|
function normalizeNumber(data, obj) {
|
|
17
|
-
|
|
18
|
-
obj = (0, hooks_1.executeHook)(data.hooks.values.onNumber.before, data, obj);
|
|
19
|
-
const { location, content } = (0, meta_1.retrieveMetaStructure)(obj);
|
|
15
|
+
const { location, content } = (0, normalize_meta_1.retrieveMetaStructure)(obj);
|
|
20
16
|
const common = {
|
|
21
17
|
location,
|
|
22
18
|
lexeme: content,
|
|
@@ -26,31 +22,29 @@ function normalizeNumber(data, obj) {
|
|
|
26
22
|
fullLexeme: data.currentLexeme
|
|
27
23
|
}
|
|
28
24
|
};
|
|
29
|
-
let result;
|
|
30
25
|
/* the special symbol */
|
|
31
|
-
if ((0,
|
|
32
|
-
|
|
26
|
+
if ((0, convert_values_1.isNA)(content)) {
|
|
27
|
+
return {
|
|
33
28
|
...common,
|
|
34
29
|
namespace: undefined,
|
|
35
30
|
type: "RSymbol" /* RType.Symbol */,
|
|
36
31
|
content
|
|
37
32
|
};
|
|
38
33
|
}
|
|
39
|
-
else if ((0,
|
|
40
|
-
|
|
34
|
+
else if ((0, convert_values_1.isBoolean)(content)) {
|
|
35
|
+
return {
|
|
41
36
|
...common,
|
|
42
37
|
type: "RLogical" /* RType.Logical */,
|
|
43
|
-
content: (0,
|
|
38
|
+
content: (0, convert_values_1.boolean2ts)(content)
|
|
44
39
|
};
|
|
45
40
|
}
|
|
46
41
|
else {
|
|
47
|
-
|
|
42
|
+
return {
|
|
48
43
|
...common,
|
|
49
44
|
type: "RNumber" /* RType.Number */,
|
|
50
|
-
content: (0,
|
|
45
|
+
content: (0, convert_values_1.number2ts)(content)
|
|
51
46
|
};
|
|
52
47
|
}
|
|
53
|
-
return (0, hooks_1.executeHook)(data.hooks.values.onNumber.after, data, result);
|
|
54
48
|
}
|
|
55
49
|
exports.normalizeNumber = normalizeNumber;
|
|
56
|
-
//# sourceMappingURL=number.js.map
|
|
50
|
+
//# sourceMappingURL=normalize-number.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { NormalizerData } from '../../normalizer-data';
|
|
2
|
+
import type { XmlBasedJson } from '../../input-format';
|
|
3
|
+
import type { RString } from '../../../../model/nodes/r-string';
|
|
4
|
+
/**
|
|
5
|
+
* Normalize the given object as a R string (see {@link string2ts}).
|
|
6
|
+
* This requires you to check the corresponding name beforehand.
|
|
7
|
+
*
|
|
8
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
9
|
+
* @param obj - The json object to extract the meta-information from
|
|
10
|
+
*/
|
|
11
|
+
export declare function normalizeString(data: NormalizerData, obj: XmlBasedJson): RString;
|
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.normalizeString = void 0;
|
|
4
|
-
const
|
|
5
|
-
const values_1 = require("../../../../../values");
|
|
6
|
-
const hooks_1 = require("../../hooks");
|
|
4
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
7
5
|
const assert_1 = require("../../../../../../../util/assert");
|
|
8
|
-
const
|
|
6
|
+
const convert_values_1 = require("../../../../../convert-values");
|
|
9
7
|
/**
|
|
10
8
|
* Normalize the given object as a R string (see {@link string2ts}).
|
|
11
9
|
* This requires you to check the corresponding name beforehand.
|
|
12
10
|
*
|
|
13
|
-
* @param data - The data used by the parser (see {@link
|
|
11
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
14
12
|
* @param obj - The json object to extract the meta-information from
|
|
15
13
|
*/
|
|
16
14
|
function normalizeString(data, obj) {
|
|
17
|
-
|
|
18
|
-
obj = (0, hooks_1.executeHook)(data.hooks.values.onString.before, data, obj);
|
|
19
|
-
const { location, content } = (0, meta_1.retrieveMetaStructure)(obj);
|
|
15
|
+
const { location, content } = (0, normalize_meta_1.retrieveMetaStructure)(obj);
|
|
20
16
|
// based on https://www.rdocumentation.org/packages/utils/versions/3.6.2/topics/getParseData we do not get strings with 1000 characters or more within the text field.
|
|
21
17
|
// therefore, we recover the full string from the surrounding expr lexeme field
|
|
22
18
|
let stringContent = content;
|
|
@@ -24,10 +20,10 @@ function normalizeString(data, obj) {
|
|
|
24
20
|
(0, assert_1.guard)(data.currentLexeme !== undefined, 'need current lexeme wrapper for too long strings as they are not stored by the R parser post-processor');
|
|
25
21
|
stringContent = data.currentLexeme;
|
|
26
22
|
}
|
|
27
|
-
|
|
23
|
+
return {
|
|
28
24
|
type: "RString" /* RType.String */,
|
|
29
25
|
location,
|
|
30
|
-
content: (0,
|
|
26
|
+
content: (0, convert_values_1.string2ts)(stringContent),
|
|
31
27
|
lexeme: stringContent,
|
|
32
28
|
info: {
|
|
33
29
|
fullRange: data.currentRange,
|
|
@@ -35,7 +31,6 @@ function normalizeString(data, obj) {
|
|
|
35
31
|
fullLexeme: data.currentLexeme
|
|
36
32
|
}
|
|
37
33
|
};
|
|
38
|
-
return (0, hooks_1.executeHook)(data.hooks.values.onString.after, data, result);
|
|
39
34
|
}
|
|
40
35
|
exports.normalizeString = normalizeString;
|
|
41
|
-
//# sourceMappingURL=string.js.map
|
|
36
|
+
//# sourceMappingURL=normalize-string.js.map
|
package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{symbol.d.ts → normalize-symbol.d.ts}
RENAMED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
+
import type { NormalizerData } from '../../normalizer-data';
|
|
1
2
|
import type { NamedXmlBasedJson } from '../../input-format';
|
|
2
|
-
import type { RSymbol } from '../../../../model';
|
|
3
|
-
import type { ParserData } from '../../data';
|
|
3
|
+
import type { RSymbol } from '../../../../model/nodes/r-symbol';
|
|
4
4
|
/**
|
|
5
5
|
* Normalize the given object as an R symbol (incorporating namespace information).
|
|
6
6
|
* <p>
|
|
7
7
|
* The special symbols `T` and `F` are parsed as logic values.
|
|
8
8
|
*
|
|
9
|
-
* @param data - The data used by the parser (see {@link
|
|
9
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
10
10
|
* @param objs - The json object to extract the meta-information from
|
|
11
11
|
*
|
|
12
12
|
* @returns The parsed symbol (with populated namespace information) or `undefined` if the given object is not a symbol.
|
|
13
13
|
*/
|
|
14
|
-
export declare function tryNormalizeSymbol(data:
|
|
14
|
+
export declare function tryNormalizeSymbol(data: NormalizerData, objs: readonly NamedXmlBasedJson[]): RSymbol | undefined;
|
|
@@ -2,17 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.tryNormalizeSymbol = void 0;
|
|
4
4
|
const assert_1 = require("../../../../../../../util/assert");
|
|
5
|
-
const meta_1 = require("../meta");
|
|
6
|
-
const model_1 = require("../../../../model");
|
|
7
|
-
const hooks_1 = require("../../hooks");
|
|
8
|
-
const strings_1 = require("../../../../../../../util/strings");
|
|
9
5
|
const parser_1 = require("../../../json/parser");
|
|
6
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
7
|
+
const strings_1 = require("../../../../../../../util/strings");
|
|
8
|
+
const type_1 = require("../../../../model/type");
|
|
10
9
|
/**
|
|
11
10
|
* Normalize the given object as an R symbol (incorporating namespace information).
|
|
12
11
|
* <p>
|
|
13
12
|
* The special symbols `T` and `F` are parsed as logic values.
|
|
14
13
|
*
|
|
15
|
-
* @param data - The data used by the parser (see {@link
|
|
14
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
16
15
|
* @param objs - The json object to extract the meta-information from
|
|
17
16
|
*
|
|
18
17
|
* @returns The parsed symbol (with populated namespace information) or `undefined` if the given object is not a symbol.
|
|
@@ -20,24 +19,23 @@ const parser_1 = require("../../../json/parser");
|
|
|
20
19
|
function tryNormalizeSymbol(data, objs) {
|
|
21
20
|
(0, assert_1.guard)(objs.length > 0, 'to parse symbols we need at least one object to work on!');
|
|
22
21
|
parser_1.parseLog.debug('trying to parse symbol');
|
|
23
|
-
objs = (0, hooks_1.executeHook)(data.hooks.values.onSymbol.before, data, objs);
|
|
24
22
|
let location, content, namespace;
|
|
25
|
-
if (objs.length === 1 && (0,
|
|
26
|
-
const meta = (0,
|
|
23
|
+
if (objs.length === 1 && (0, type_1.isSymbol)(objs[0].name)) {
|
|
24
|
+
const meta = (0, normalize_meta_1.retrieveMetaStructure)(objs[0].content);
|
|
27
25
|
location = meta.location;
|
|
28
26
|
content = meta.content;
|
|
29
27
|
namespace = undefined;
|
|
30
28
|
}
|
|
31
|
-
else if (objs.length === 3 && (0,
|
|
32
|
-
const meta = (0,
|
|
29
|
+
else if (objs.length === 3 && (0, type_1.isSymbol)(objs[2].name)) {
|
|
30
|
+
const meta = (0, normalize_meta_1.retrieveMetaStructure)(objs[2].content);
|
|
33
31
|
location = meta.location;
|
|
34
32
|
content = meta.content;
|
|
35
|
-
namespace = (0,
|
|
33
|
+
namespace = (0, normalize_meta_1.retrieveMetaStructure)(objs[0].content).content;
|
|
36
34
|
}
|
|
37
35
|
else {
|
|
38
|
-
return
|
|
36
|
+
return undefined;
|
|
39
37
|
}
|
|
40
|
-
|
|
38
|
+
return {
|
|
41
39
|
type: "RSymbol" /* RType.Symbol */,
|
|
42
40
|
namespace,
|
|
43
41
|
location,
|
|
@@ -50,7 +48,6 @@ function tryNormalizeSymbol(data, objs) {
|
|
|
50
48
|
fullLexeme: data.currentLexeme
|
|
51
49
|
}
|
|
52
50
|
};
|
|
53
|
-
return (0, hooks_1.executeHook)(data.hooks.values.onSymbol.after, data, result);
|
|
54
51
|
}
|
|
55
52
|
exports.tryNormalizeSymbol = tryNormalizeSymbol;
|
|
56
|
-
//# sourceMappingURL=symbol.js.map
|
|
53
|
+
//# sourceMappingURL=normalize-symbol.js.map
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
import type { RawRType
|
|
1
|
+
import type { SourceRange } from '../../../../../util/range';
|
|
2
|
+
import type { NamedXmlBasedJson, XmlBasedJson } from './input-format';
|
|
3
|
+
import type { RawRType } from '../../model/type';
|
|
4
|
+
import type { RExpressionList } from '../../model/nodes/r-expression-list';
|
|
5
|
+
import type { RNode } from '../../model/model';
|
|
4
6
|
/**
|
|
5
7
|
* if the passed object is an array with only one element, remove the array wrapper
|
|
6
8
|
*/
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ensureExpressionList = exports.ensureChildrenAreLhsAndRhsOrdered = exports.retrieveOpName = exports.getWithTokenType = exports.getTokenType = exports.assureTokenType = exports.retrieveMetaStructure = exports.extractLocation = exports.objectWithArrUnwrap = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
4
|
+
const range_1 = require("../../../../../util/range");
|
|
5
|
+
const assert_1 = require("../../../../../util/assert");
|
|
6
|
+
const input_format_1 = require("./input-format");
|
|
7
7
|
/**
|
|
8
8
|
* if the passed object is an array with only one element, remove the array wrapper
|
|
9
9
|
*/
|
|
@@ -26,8 +26,7 @@ exports.objectWithArrUnwrap = objectWithArrUnwrap;
|
|
|
26
26
|
* given a xml element, extract the source location of the corresponding element in the R-ast
|
|
27
27
|
*/
|
|
28
28
|
function extractLocation(ast) {
|
|
29
|
-
|
|
30
|
-
return (0, range_1.rangeFrom)(line1, col1, line2, col2);
|
|
29
|
+
return (0, range_1.rangeFrom)(ast['line1'], ast['col1'], ast['line2'], ast['col2']);
|
|
31
30
|
}
|
|
32
31
|
exports.extractLocation = extractLocation;
|
|
33
32
|
/**
|
|
@@ -39,8 +38,8 @@ exports.extractLocation = extractLocation;
|
|
|
39
38
|
function retrieveMetaStructure(obj) {
|
|
40
39
|
const unwrappedObj = objectWithArrUnwrap(obj);
|
|
41
40
|
const attributes = obj[input_format_1.attributesKey];
|
|
42
|
-
const content = obj[input_format_1.contentKey] ?? '';
|
|
43
41
|
(0, assert_1.guard)(attributes !== undefined, () => `expected attributes to be defined for ${JSON.stringify(obj)}`);
|
|
42
|
+
const content = obj[input_format_1.contentKey] ?? '';
|
|
44
43
|
const location = extractLocation(attributes);
|
|
45
44
|
return {
|
|
46
45
|
unwrappedObj,
|
|
@@ -63,7 +62,7 @@ exports.assureTokenType = assureTokenType;
|
|
|
63
62
|
* @param content - the json object to extract the token-type from
|
|
64
63
|
*/
|
|
65
64
|
function getTokenType(content) {
|
|
66
|
-
return
|
|
65
|
+
return content[input_format_1.nameKey];
|
|
67
66
|
}
|
|
68
67
|
exports.getTokenType = getTokenType;
|
|
69
68
|
function getWithTokenType(obj) {
|
|
@@ -98,6 +97,7 @@ function ensureExpressionList(node) {
|
|
|
98
97
|
if (node.type !== "RExpressionList" /* RType.ExpressionList */) {
|
|
99
98
|
return {
|
|
100
99
|
type: "RExpressionList" /* RType.ExpressionList */,
|
|
100
|
+
grouping: undefined,
|
|
101
101
|
location: node.location,
|
|
102
102
|
info: node.info,
|
|
103
103
|
lexeme: undefined,
|
|
@@ -107,4 +107,4 @@ function ensureExpressionList(node) {
|
|
|
107
107
|
return node;
|
|
108
108
|
}
|
|
109
109
|
exports.ensureExpressionList = ensureExpressionList;
|
|
110
|
-
//# sourceMappingURL=meta.js.map
|
|
110
|
+
//# sourceMappingURL=normalize-meta.js.map
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import type { MergeableRecord } from '../../../../../util/objects';
|
|
2
|
-
import type { DeepReadonly } from 'ts-essentials';
|
|
3
|
-
import type { XmlParserHooks } from './hooks';
|
|
4
2
|
import type { SourceRange } from '../../../../../util/range';
|
|
5
3
|
/**
|
|
6
4
|
* Contains all information populated and present during parsing and normalization of the R AST.
|
|
7
5
|
*/
|
|
8
|
-
export interface
|
|
9
|
-
/** @see XmlParserHooks */
|
|
10
|
-
readonly hooks: DeepReadonly<XmlParserHooks>;
|
|
6
|
+
export interface NormalizerData extends MergeableRecord {
|
|
11
7
|
/**
|
|
12
8
|
* The currently active source range during parsing, i.e. the full range of the current element.
|
|
13
9
|
*/
|
|
@@ -22,8 +22,8 @@ export interface RNumberValue {
|
|
|
22
22
|
export declare function number2ts(value: string): RNumberValue;
|
|
23
23
|
export interface RStringValue {
|
|
24
24
|
str: string;
|
|
25
|
-
/** from the R-language definition a string is either delimited by a pair of single or double quotes */
|
|
26
|
-
quotes: '"' | '\'';
|
|
25
|
+
/** from the R-language definition a string is either delimited by a pair of single or double quotes, 'none' strings are syntactically unquoted but treated as strings */
|
|
26
|
+
quotes: '"' | '\'' | 'none';
|
|
27
27
|
/** a string is raw if prefixed with r */
|
|
28
28
|
flag?: 'raw';
|
|
29
29
|
}
|