@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
|
@@ -1,42 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.tryNormalizeRepeat = void 0;
|
|
4
|
-
const meta_1 = require("../meta");
|
|
5
|
-
const structure_1 = require("../structure");
|
|
6
|
-
const assert_1 = require("../../../../../../../util/assert");
|
|
7
|
-
const hooks_1 = require("../../hooks");
|
|
8
4
|
const parser_1 = require("../../../json/parser");
|
|
5
|
+
const assert_1 = require("../../../../../../../util/assert");
|
|
6
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
7
|
+
const normalize_single_node_1 = require("../structure/normalize-single-node");
|
|
9
8
|
/**
|
|
10
9
|
* Try to parse the construct as a {@link RRepeatLoop}.
|
|
11
10
|
*
|
|
12
|
-
* @param data - The data used by the parser (see {@link
|
|
11
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
13
12
|
* @param repeatToken - Token which represents the `repeat` keyword
|
|
14
|
-
* @param
|
|
13
|
+
* @param bodyToken - The `body` of the repeat-loop
|
|
15
14
|
*
|
|
16
15
|
* @returns The parsed {@link RRepeatLoop} or `undefined` if the given construct is not a repeat-loop
|
|
17
16
|
*/
|
|
18
|
-
function tryNormalizeRepeat(data, repeatToken,
|
|
17
|
+
function tryNormalizeRepeat(data, [repeatToken, bodyToken]) {
|
|
19
18
|
if (repeatToken.name !== "REPEAT" /* RawRType.Repeat */) {
|
|
20
19
|
parser_1.parseLog.debug('encountered non-repeat token for supposed repeat-loop structure');
|
|
21
|
-
return
|
|
20
|
+
return undefined;
|
|
22
21
|
}
|
|
23
22
|
parser_1.parseLog.debug('trying to parse repeat-loop');
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const result = {
|
|
23
|
+
const parseBody = (0, normalize_single_node_1.normalizeSingleNode)(data, bodyToken);
|
|
24
|
+
(0, assert_1.guard)(parseBody.type !== "RDelimiter" /* RType.Delimiter */, () => `no body for repeat-loop ${JSON.stringify(repeatToken)} (${JSON.stringify(bodyToken)})`);
|
|
25
|
+
const { location, content } = (0, normalize_meta_1.retrieveMetaStructure)(repeatToken.content);
|
|
26
|
+
return {
|
|
29
27
|
type: "RRepeatLoop" /* RType.RepeatLoop */,
|
|
30
28
|
location,
|
|
31
29
|
lexeme: content,
|
|
32
|
-
body: (0,
|
|
30
|
+
body: (0, normalize_meta_1.ensureExpressionList)(parseBody),
|
|
33
31
|
info: {
|
|
34
32
|
fullRange: data.currentRange,
|
|
35
33
|
additionalTokens: [],
|
|
36
34
|
fullLexeme: data.currentLexeme
|
|
37
35
|
}
|
|
38
36
|
};
|
|
39
|
-
return (0, hooks_1.executeHook)(data.hooks.loops.onRepeatLoop.after, data, result);
|
|
40
37
|
}
|
|
41
38
|
exports.tryNormalizeRepeat = tryNormalizeRepeat;
|
|
42
|
-
//# sourceMappingURL=repeat.js.map
|
|
39
|
+
//# sourceMappingURL=normalize-repeat.js.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { NormalizerData } from '../../normalizer-data';
|
|
2
|
+
import type { NamedXmlBasedJson } from '../../input-format';
|
|
3
|
+
import type { RWhileLoop } from '../../../../model/nodes/r-while-loop';
|
|
4
|
+
export declare function tryNormalizeWhile(data: NormalizerData, [whileToken, leftParen, condition, rightParen, body]: [NamedXmlBasedJson, NamedXmlBasedJson, NamedXmlBasedJson, NamedXmlBasedJson, NamedXmlBasedJson]): RWhileLoop | undefined;
|
|
@@ -2,14 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.tryNormalizeWhile = void 0;
|
|
4
4
|
const input_format_1 = require("../../input-format");
|
|
5
|
-
const meta_1 = require("../meta");
|
|
6
|
-
const structure_1 = require("../structure");
|
|
7
|
-
const hooks_1 = require("../../hooks");
|
|
8
5
|
const parser_1 = require("../../../json/parser");
|
|
9
|
-
|
|
6
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
7
|
+
const normalize_single_node_1 = require("../structure/normalize-single-node");
|
|
8
|
+
function tryNormalizeWhile(data, [whileToken, leftParen, condition, rightParen, body]) {
|
|
10
9
|
if (whileToken.name !== "WHILE" /* RawRType.While */) {
|
|
11
10
|
parser_1.parseLog.debug('encountered non-while token for supposed while-loop structure');
|
|
12
|
-
return
|
|
11
|
+
return undefined;
|
|
13
12
|
}
|
|
14
13
|
else if (leftParen.name !== "(" /* RawRType.ParenLeft */) {
|
|
15
14
|
throw new input_format_1.XmlParseError(`expected left-parenthesis for while but found ${JSON.stringify(leftParen)}`);
|
|
@@ -18,19 +17,19 @@ function tryNormalizeWhile(data, whileToken, leftParen, condition, rightParen, b
|
|
|
18
17
|
throw new input_format_1.XmlParseError(`expected right-parenthesis for while but found ${JSON.stringify(rightParen)}`);
|
|
19
18
|
}
|
|
20
19
|
parser_1.parseLog.debug('trying to parse while-loop');
|
|
21
|
-
const parsedCondition = (0,
|
|
22
|
-
const parseBody = (0,
|
|
20
|
+
const parsedCondition = (0, normalize_single_node_1.normalizeSingleNode)(data, condition);
|
|
21
|
+
const parseBody = (0, normalize_single_node_1.normalizeSingleNode)(data, body);
|
|
23
22
|
if (parsedCondition.type === "RDelimiter" /* RType.Delimiter */ || parseBody.type === "RDelimiter" /* RType.Delimiter */) {
|
|
24
23
|
throw new input_format_1.XmlParseError(`unexpected under-sided while-loop, received ${JSON.stringify([
|
|
25
24
|
parsedCondition,
|
|
26
25
|
parseBody,
|
|
27
26
|
])} for ${JSON.stringify([whileToken, condition, body])}`);
|
|
28
27
|
}
|
|
29
|
-
const { location, content } = (0,
|
|
30
|
-
|
|
28
|
+
const { location, content } = (0, normalize_meta_1.retrieveMetaStructure)(whileToken.content);
|
|
29
|
+
return {
|
|
31
30
|
type: "RWhileLoop" /* RType.WhileLoop */,
|
|
32
31
|
condition: parsedCondition,
|
|
33
|
-
body: (0,
|
|
32
|
+
body: (0, normalize_meta_1.ensureExpressionList)(parseBody),
|
|
34
33
|
lexeme: content,
|
|
35
34
|
location,
|
|
36
35
|
info: {
|
|
@@ -39,7 +38,6 @@ function tryNormalizeWhile(data, whileToken, leftParen, condition, rightParen, b
|
|
|
39
38
|
fullLexeme: data.currentLexeme
|
|
40
39
|
}
|
|
41
40
|
};
|
|
42
|
-
return (0, hooks_1.executeHook)(data.hooks.loops.onWhileLoop.after, data, result);
|
|
43
41
|
}
|
|
44
42
|
exports.tryNormalizeWhile = tryNormalizeWhile;
|
|
45
|
-
//# sourceMappingURL=while.js.map
|
|
43
|
+
//# sourceMappingURL=normalize-while.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { NamedXmlBasedJson } from '../input-format';
|
|
2
|
-
import type {
|
|
3
|
-
import type { RAccess } from '../../../model';
|
|
2
|
+
import type { NormalizerData } from '../normalizer-data';
|
|
3
|
+
import type { RAccess } from '../../../model/nodes/r-access';
|
|
4
4
|
/**
|
|
5
5
|
* Tries to normalize the given data as access (e.g., indexing).
|
|
6
6
|
*
|
|
7
|
-
* @param data - The data used by the parser (see {@link
|
|
7
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
8
8
|
* @param mappedWithName - The json object to extract the meta-information from
|
|
9
9
|
*
|
|
10
10
|
* @returns The parsed {@link RAccess} or `undefined` if the given construct is not accessing a value
|
|
11
11
|
*/
|
|
12
|
-
export declare function tryNormalizeAccess(data:
|
|
12
|
+
export declare function tryNormalizeAccess(data: NormalizerData, mappedWithName: NamedXmlBasedJson[]): RAccess | undefined;
|
|
@@ -1,27 +1,53 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.tryNormalizeAccess = void 0;
|
|
4
|
-
const
|
|
5
|
-
const hooks_1 = require("../hooks");
|
|
6
|
-
const structure_1 = require("./structure");
|
|
7
|
-
const assert_1 = require("../../../../../../util/assert");
|
|
8
|
-
const arrays_1 = require("../../../../../../util/arrays");
|
|
9
|
-
const argument_1 = require("./functions/argument");
|
|
4
|
+
const normalize_argument_1 = require("./functions/normalize-argument");
|
|
10
5
|
const parser_1 = require("../../json/parser");
|
|
6
|
+
const arrays_1 = require("../../../../../../util/arrays");
|
|
7
|
+
const assert_1 = require("../../../../../../util/assert");
|
|
8
|
+
const normalize_meta_1 = require("../normalize-meta");
|
|
9
|
+
const normalize_single_node_1 = require("./structure/normalize-single-node");
|
|
10
|
+
const r_function_call_1 = require("../../../model/nodes/r-function-call");
|
|
11
|
+
const normalize_expressions_1 = require("./structure/normalize-expressions");
|
|
12
|
+
function normalizeAbstractArgument(x, data, operator) {
|
|
13
|
+
if (x.length === 0) {
|
|
14
|
+
return r_function_call_1.EmptyArgument;
|
|
15
|
+
}
|
|
16
|
+
else if (x.length !== 1 || x[0].name === "expr" /* RawRType.Expression */) {
|
|
17
|
+
const gotAccess = (0, normalize_argument_1.tryToNormalizeArgument)(data, x);
|
|
18
|
+
(0, assert_1.guard)(gotAccess !== undefined, () => `expected one access result in access as argument, yet received ${JSON.stringify(gotAccess)} for ${JSON.stringify([operator, x])}`);
|
|
19
|
+
return gotAccess;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
const node = (0, normalize_single_node_1.normalizeSingleNode)(data, x[0]);
|
|
23
|
+
(0, assert_1.guard)(node.type !== "RExpressionList" /* RType.ExpressionList */, () => `expected expression list to be parsed as argument, yet received ${JSON.stringify(node)} for ${JSON.stringify(x)}`);
|
|
24
|
+
return {
|
|
25
|
+
type: "RArgument" /* RType.Argument */,
|
|
26
|
+
location: node.location,
|
|
27
|
+
lexeme: node.lexeme,
|
|
28
|
+
name: undefined,
|
|
29
|
+
value: node,
|
|
30
|
+
info: {
|
|
31
|
+
fullRange: node.location,
|
|
32
|
+
fullLexeme: node.lexeme,
|
|
33
|
+
additionalTokens: []
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
11
38
|
/**
|
|
12
39
|
* Tries to normalize the given data as access (e.g., indexing).
|
|
13
40
|
*
|
|
14
|
-
* @param data - The data used by the parser (see {@link
|
|
41
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
15
42
|
* @param mappedWithName - The json object to extract the meta-information from
|
|
16
43
|
*
|
|
17
44
|
* @returns The parsed {@link RAccess} or `undefined` if the given construct is not accessing a value
|
|
18
45
|
*/
|
|
19
46
|
function tryNormalizeAccess(data, mappedWithName) {
|
|
20
47
|
parser_1.parseLog.trace('trying to parse access');
|
|
21
|
-
mappedWithName = (0, hooks_1.executeHook)(data.hooks.onAccess.before, data, mappedWithName);
|
|
22
48
|
if (mappedWithName.length < 3) {
|
|
23
49
|
parser_1.parseLog.trace('expected at least three elements are required to parse an access');
|
|
24
|
-
return
|
|
50
|
+
return undefined;
|
|
25
51
|
}
|
|
26
52
|
const accessOp = mappedWithName[1];
|
|
27
53
|
let operator;
|
|
@@ -43,65 +69,38 @@ function tryNormalizeAccess(data, mappedWithName) {
|
|
|
43
69
|
break;
|
|
44
70
|
default:
|
|
45
71
|
parser_1.parseLog.trace(`expected second element to be an access operator, yet received ${accessOp.name}`);
|
|
46
|
-
return
|
|
72
|
+
return undefined;
|
|
47
73
|
}
|
|
48
74
|
const accessed = mappedWithName[0];
|
|
49
75
|
if (accessed.name !== "expr" /* RawRType.Expression */ && accessed.name !== "expr_or_assign_or_help" /* RawRType.ExprOfAssignOrHelp */) {
|
|
50
76
|
parser_1.parseLog.trace(`expected accessed element to be wrapped an expression, yet received ${accessed.name}`);
|
|
51
|
-
return
|
|
77
|
+
return undefined;
|
|
52
78
|
}
|
|
53
|
-
const parsedAccessed = (0,
|
|
79
|
+
const parsedAccessed = (0, normalize_expressions_1.normalizeExpressions)(data, [accessed]);
|
|
54
80
|
if (parsedAccessed.length !== 1) {
|
|
55
81
|
parser_1.parseLog.trace(`expected accessed element to be wrapped an expression, yet received ${accessed.name}`);
|
|
56
|
-
return
|
|
82
|
+
return undefined;
|
|
57
83
|
}
|
|
58
84
|
const remaining = mappedWithName.slice(2, mappedWithName.length - closingLength);
|
|
59
85
|
parser_1.parseLog.trace(`${remaining.length} remaining arguments for access`);
|
|
60
86
|
const splitAccessOnComma = (0, arrays_1.splitArrayOn)(remaining, x => x.name === "," /* RawRType.Comma */);
|
|
61
87
|
const parsedAccess = splitAccessOnComma.map(x => {
|
|
62
|
-
|
|
63
|
-
parser_1.parseLog.trace('record empty access');
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
parser_1.parseLog.trace('trying to parse access');
|
|
67
|
-
const gotAccess = parseAccessArgument(operator, data, x);
|
|
68
|
-
(0, assert_1.guard)(gotAccess !== undefined, () => `expected one access result in access as argument, yet received ${JSON.stringify(gotAccess)} for ${JSON.stringify([operator, x])}`);
|
|
69
|
-
return gotAccess;
|
|
88
|
+
return normalizeAbstractArgument(x, data, operator);
|
|
70
89
|
});
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
(0, assert_1.guard)(parsedAccess.length === 1, () => `expected one access result in access with ${JSON.stringify(operator)}, yet received ${JSON.stringify(parsedAccess)}`);
|
|
74
|
-
const first = parsedAccess[0];
|
|
75
|
-
(0, assert_1.guard)(first !== null && (first.type === "RSymbol" /* RType.Symbol */ || first.type === "RString" /* RType.String */ || first.type === "RLogical" /* RType.Logical */), () => `${JSON.stringify(operator)} requires one symbol, yet received ${JSON.stringify(parsedAccess)}`);
|
|
76
|
-
resultingAccess = first.type === "RString" /* RType.String */ ? first.content.str : first.lexeme;
|
|
77
|
-
}
|
|
78
|
-
const { content, location } = (0, meta_1.retrieveMetaStructure)(accessOp.content);
|
|
79
|
-
const result = {
|
|
90
|
+
const { content, location } = (0, normalize_meta_1.retrieveMetaStructure)(accessOp.content);
|
|
91
|
+
return {
|
|
80
92
|
type: "RAccess" /* RType.Access */,
|
|
81
93
|
location,
|
|
82
94
|
lexeme: content,
|
|
83
95
|
accessed: parsedAccessed[0],
|
|
84
96
|
operator,
|
|
85
|
-
access:
|
|
97
|
+
access: parsedAccess,
|
|
86
98
|
info: {
|
|
87
99
|
fullRange: data.currentRange,
|
|
88
100
|
additionalTokens: [],
|
|
89
101
|
fullLexeme: data.currentLexeme
|
|
90
102
|
}
|
|
91
103
|
};
|
|
92
|
-
return (0, hooks_1.executeHook)(data.hooks.onAccess.after, data, result);
|
|
93
104
|
}
|
|
94
105
|
exports.tryNormalizeAccess = tryNormalizeAccess;
|
|
95
|
-
|
|
96
|
-
// within access the content is *not* wrapped within another expression, that means if we have a SYMBOL_SUB we can directly parse the argument,
|
|
97
|
-
// otherwise we have to add the expression layer
|
|
98
|
-
// console.log('parseAccessArgument', elements.map(x => x.name))
|
|
99
|
-
if (operator === '@' || operator === '$') {
|
|
100
|
-
const parse = (0, structure_1.normalizeBasedOnType)(data, elements);
|
|
101
|
-
return parse.length !== 1 ? undefined : parse[0];
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
return (0, argument_1.tryToNormalizeArgument)(data, elements);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=access.js.map
|
|
106
|
+
//# sourceMappingURL=normalize-access.js.map
|
package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/{binary.d.ts → normalize-binary.d.ts}
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import type { NormalizerData } from '../../normalizer-data';
|
|
1
2
|
import type { NamedXmlBasedJson } from '../../input-format';
|
|
2
|
-
import type {
|
|
3
|
-
import type { RNode } from '../../../../model';
|
|
3
|
+
import type { RNode } from '../../../../model/model';
|
|
4
4
|
/**
|
|
5
5
|
* Parsing binary operations includes the pipe, even though the produced PIPE construct is not a binary operation,
|
|
6
6
|
* to ensure it is handled separately from the others (especially in the combination of a pipe bind)
|
|
7
7
|
*/
|
|
8
|
-
export declare function tryNormalizeBinary(data:
|
|
8
|
+
export declare function tryNormalizeBinary(data: NormalizerData, [lhs, operator, rhs]: [NamedXmlBasedJson, NamedXmlBasedJson, NamedXmlBasedJson]): RNode | undefined;
|
package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/{binary.js → normalize-binary.js}
RENAMED
|
@@ -2,69 +2,40 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.tryNormalizeBinary = void 0;
|
|
4
4
|
const input_format_1 = require("../../input-format");
|
|
5
|
-
const meta_1 = require("../meta");
|
|
6
|
-
const special_1 = require("./special");
|
|
7
|
-
const structure_1 = require("../structure");
|
|
8
|
-
const model_1 = require("../../../../model");
|
|
9
|
-
const hooks_1 = require("../../hooks");
|
|
10
|
-
const assert_1 = require("../../../../../../../util/assert");
|
|
11
5
|
const parser_1 = require("../../../json/parser");
|
|
6
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
7
|
+
const assert_1 = require("../../../../../../../util/assert");
|
|
8
|
+
const log_1 = require("../../../../../../../util/log");
|
|
9
|
+
const strings_1 = require("../../../../../../../util/strings");
|
|
10
|
+
const operators_1 = require("../../../../model/operators");
|
|
11
|
+
const normalize_single_node_1 = require("../structure/normalize-single-node");
|
|
12
12
|
/**
|
|
13
13
|
* Parsing binary operations includes the pipe, even though the produced PIPE construct is not a binary operation,
|
|
14
14
|
* to ensure it is handled separately from the others (especially in the combination of a pipe bind)
|
|
15
15
|
*/
|
|
16
|
-
function tryNormalizeBinary(data, lhs, operator, rhs) {
|
|
17
|
-
parser_1.parseLog
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
flavor = 'special';
|
|
21
|
-
}
|
|
22
|
-
else if (model_1.ArithmeticOperatorsRAst.has(operator.name)) {
|
|
23
|
-
flavor = 'arithmetic';
|
|
24
|
-
}
|
|
25
|
-
else if (model_1.ComparisonOperatorsRAst.has(operator.name)) {
|
|
26
|
-
flavor = 'comparison';
|
|
27
|
-
}
|
|
28
|
-
else if (model_1.LogicalOperatorsRAst.has(operator.name)) {
|
|
29
|
-
flavor = 'logical';
|
|
30
|
-
}
|
|
31
|
-
else if (model_1.ModelFormulaOperatorsRAst.has(operator.name)) {
|
|
32
|
-
flavor = 'model formula';
|
|
33
|
-
}
|
|
34
|
-
else if (model_1.AssignmentsRAst.has(operator.name)) {
|
|
35
|
-
flavor = 'assignment';
|
|
36
|
-
}
|
|
37
|
-
else if (operator.name === "PIPE" /* RawRType.Pipe */) {
|
|
38
|
-
flavor = 'pipe';
|
|
16
|
+
function tryNormalizeBinary(data, [lhs, operator, rhs]) {
|
|
17
|
+
(0, log_1.expensiveTrace)(parser_1.parseLog, () => `binary op for ${lhs.name} [${operator.name}] ${rhs.name}`);
|
|
18
|
+
if (operator.name === "SPECIAL" /* RawRType.Special */ || operators_1.OperatorsInRAst.has(operator.name) || operator.name === "PIPE" /* RawRType.Pipe */) {
|
|
19
|
+
return parseBinaryOp(data, lhs, operator, rhs);
|
|
39
20
|
}
|
|
40
21
|
else {
|
|
41
|
-
return
|
|
22
|
+
return undefined;
|
|
42
23
|
}
|
|
43
|
-
return parseBinaryOp(data, flavor, lhs, operator, rhs);
|
|
44
24
|
}
|
|
45
25
|
exports.tryNormalizeBinary = tryNormalizeBinary;
|
|
46
|
-
function parseBinaryOp(data,
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
(0,
|
|
50
|
-
let parsedLhs = (0, structure_1.tryNormalizeSingleNode)(data, lhs);
|
|
51
|
-
let parsedRhs = (0, structure_1.tryNormalizeSingleNode)(data, rhs);
|
|
26
|
+
function parseBinaryOp(data, lhs, operator, rhs) {
|
|
27
|
+
(0, normalize_meta_1.ensureChildrenAreLhsAndRhsOrdered)(lhs.content, rhs.content);
|
|
28
|
+
const parsedLhs = (0, normalize_single_node_1.normalizeSingleNode)(data, lhs);
|
|
29
|
+
const parsedRhs = (0, normalize_single_node_1.normalizeSingleNode)(data, rhs);
|
|
52
30
|
if (parsedLhs.type === "RDelimiter" /* RType.Delimiter */ || parsedRhs.type === "RDelimiter" /* RType.Delimiter */) {
|
|
53
31
|
throw new input_format_1.XmlParseError(`unexpected under-sided binary op, received ${JSON.stringify([parsedLhs, parsedRhs])} for ${JSON.stringify([lhs, operator, rhs])}`);
|
|
54
32
|
}
|
|
55
|
-
const operationName = (0,
|
|
56
|
-
|
|
57
|
-
if (
|
|
58
|
-
[parsedLhs, parsedRhs] = processLhsAndRhsForAssignment(operationName, parsedLhs, parsedRhs);
|
|
59
|
-
}
|
|
60
|
-
const { location, content } = (0, meta_1.retrieveMetaStructure)(operator.content);
|
|
61
|
-
if (flavor === 'special') {
|
|
62
|
-
flavor = (0, special_1.identifySpecialOp)(content);
|
|
63
|
-
}
|
|
64
|
-
if (flavor === 'special') {
|
|
33
|
+
const operationName = (0, normalize_meta_1.retrieveOpName)(operator);
|
|
34
|
+
const { location, content } = (0, normalize_meta_1.retrieveMetaStructure)(operator.content);
|
|
35
|
+
if ((0, strings_1.startAndEndsWith)(operationName, '%')) {
|
|
65
36
|
(0, assert_1.guard)(parsedLhs.location !== undefined && parsedLhs.lexeme !== undefined && parsedRhs.location !== undefined && parsedRhs.lexeme !== undefined, () => `special op lhs and rhs must have a locations and lexemes, but ${JSON.stringify(parsedLhs)} and ${JSON.stringify(parsedRhs)})`);
|
|
66
37
|
// parse as infix function call!
|
|
67
|
-
|
|
38
|
+
return {
|
|
68
39
|
type: "RFunctionCall" /* RType.FunctionCall */,
|
|
69
40
|
flavor: 'named',
|
|
70
41
|
infixSpecial: true,
|
|
@@ -98,13 +69,11 @@ function parseBinaryOp(data, flavor, lhs, operator, rhs) {
|
|
|
98
69
|
],
|
|
99
70
|
info: {}
|
|
100
71
|
};
|
|
101
|
-
return (0, hooks_1.executeHook)(data.hooks.operators.onBinary.after, data, result);
|
|
102
72
|
}
|
|
103
|
-
|
|
104
|
-
if (flavor === 'pipe') {
|
|
73
|
+
else if (operator.name === "PIPE" /* RawRType.Pipe */) {
|
|
105
74
|
(0, assert_1.guard)(parsedLhs.location !== undefined, () => `pipe lhs must have a location, but ${JSON.stringify(parsedLhs)})`);
|
|
106
75
|
(0, assert_1.guard)(parsedLhs.lexeme !== undefined, () => `pipe lhs must have a full lexeme, but ${JSON.stringify(parsedLhs)})`);
|
|
107
|
-
|
|
76
|
+
return {
|
|
108
77
|
type: "RPipe" /* RType.Pipe */,
|
|
109
78
|
location,
|
|
110
79
|
lhs: {
|
|
@@ -125,9 +94,8 @@ function parseBinaryOp(data, flavor, lhs, operator, rhs) {
|
|
|
125
94
|
};
|
|
126
95
|
}
|
|
127
96
|
else {
|
|
128
|
-
|
|
97
|
+
return {
|
|
129
98
|
type: "RBinaryOp" /* RType.BinaryOp */,
|
|
130
|
-
flavor,
|
|
131
99
|
location,
|
|
132
100
|
lhs: parsedLhs,
|
|
133
101
|
rhs: parsedRhs,
|
|
@@ -140,23 +108,5 @@ function parseBinaryOp(data, flavor, lhs, operator, rhs) {
|
|
|
140
108
|
}
|
|
141
109
|
};
|
|
142
110
|
}
|
|
143
|
-
return (0, hooks_1.executeHook)(data.hooks.operators.onBinary.after, data, result);
|
|
144
|
-
}
|
|
145
|
-
function processLhsAndRhsForAssignment(opName, parsedLhs, parsedRhs) {
|
|
146
|
-
const isRhs = opName === '->' || opName === '->>';
|
|
147
|
-
const assigned = isRhs ? parsedRhs : parsedLhs;
|
|
148
|
-
if (assigned.type !== "RString" /* RType.String */) {
|
|
149
|
-
return [parsedLhs, parsedRhs];
|
|
150
|
-
}
|
|
151
|
-
// update the assigned value to be parsed as a symbol
|
|
152
|
-
const result = {
|
|
153
|
-
type: "RSymbol" /* RType.Symbol */,
|
|
154
|
-
lexeme: assigned.lexeme,
|
|
155
|
-
location: assigned.location,
|
|
156
|
-
content: assigned.content.str,
|
|
157
|
-
namespace: undefined,
|
|
158
|
-
info: assigned.info
|
|
159
|
-
};
|
|
160
|
-
return isRhs ? [parsedLhs, result] : [result, parsedRhs];
|
|
161
111
|
}
|
|
162
|
-
//# sourceMappingURL=binary.js.map
|
|
112
|
+
//# sourceMappingURL=normalize-binary.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
|
+
/**
|
|
5
|
+
* Parses the construct as a {@link RUnaryOp}.
|
|
6
|
+
*
|
|
7
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
8
|
+
* @param operator - The operator token
|
|
9
|
+
* @param operand - The operand of the unary operator
|
|
10
|
+
*
|
|
11
|
+
* @returns The parsed {@link RUnaryOp} or `undefined` if the given construct is not a unary operator
|
|
12
|
+
*/
|
|
13
|
+
export declare function tryNormalizeUnary(data: NormalizerData, [operator, operand]: [NamedXmlBasedJson, NamedXmlBasedJson]): RNode | undefined;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tryNormalizeUnary = void 0;
|
|
4
|
+
const parser_1 = require("../../../json/parser");
|
|
5
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
6
|
+
const assert_1 = require("../../../../../../../util/assert");
|
|
7
|
+
const log_1 = require("../../../../../../../util/log");
|
|
8
|
+
const operators_1 = require("../../../../model/operators");
|
|
9
|
+
const normalize_single_node_1 = require("../structure/normalize-single-node");
|
|
10
|
+
/**
|
|
11
|
+
* Parses the construct as a {@link RUnaryOp}.
|
|
12
|
+
*
|
|
13
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
14
|
+
* @param operator - The operator token
|
|
15
|
+
* @param operand - The operand of the unary operator
|
|
16
|
+
*
|
|
17
|
+
* @returns The parsed {@link RUnaryOp} or `undefined` if the given construct is not a unary operator
|
|
18
|
+
*/
|
|
19
|
+
function tryNormalizeUnary(data, [operator, operand]) {
|
|
20
|
+
(0, log_1.expensiveTrace)(parser_1.parseLog, () => `unary op for ${operator.name} ${operand.name}`);
|
|
21
|
+
if (operators_1.UnaryOperatorsInRAst.has(operator.name)) {
|
|
22
|
+
return parseUnaryOp(data, operator, operand);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.tryNormalizeUnary = tryNormalizeUnary;
|
|
29
|
+
function parseUnaryOp(data, operator, operand) {
|
|
30
|
+
const parsedOperand = (0, normalize_single_node_1.normalizeSingleNode)(data, operand);
|
|
31
|
+
(0, assert_1.guard)(parsedOperand.type !== "RDelimiter" /* RType.Delimiter */, 'unexpected under-sided unary op');
|
|
32
|
+
const operationName = (0, normalize_meta_1.retrieveOpName)(operator);
|
|
33
|
+
const { location, content } = (0, normalize_meta_1.retrieveMetaStructure)(operator.content);
|
|
34
|
+
return {
|
|
35
|
+
type: "RUnaryOp" /* RType.UnaryOp */,
|
|
36
|
+
location,
|
|
37
|
+
operator: operationName,
|
|
38
|
+
lexeme: content,
|
|
39
|
+
operand: parsedOperand,
|
|
40
|
+
info: {
|
|
41
|
+
fullRange: data.currentRange,
|
|
42
|
+
additionalTokens: [],
|
|
43
|
+
fullLexeme: data.currentLexeme
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=normalize-unary.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { NormalizerData } from '../../normalizer-data';
|
|
2
|
+
import type { XmlBasedJson } from '../../input-format';
|
|
3
|
+
import type { RComment } from '../../../../model/nodes/r-comment';
|
|
4
|
+
/**
|
|
5
|
+
* Normalize the given object as an R comment.
|
|
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 normalizeComment(data: NormalizerData, obj: XmlBasedJson): RComment;
|
|
@@ -1,23 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.normalizeComment = void 0;
|
|
4
|
-
const
|
|
4
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
5
5
|
const assert_1 = require("../../../../../../../util/assert");
|
|
6
|
-
const hooks_1 = require("../../hooks");
|
|
7
|
-
const parser_1 = require("../../../json/parser");
|
|
8
6
|
/**
|
|
9
7
|
* Normalize the given object as an R comment.
|
|
10
8
|
* This requires you to check the corresponding name beforehand.
|
|
11
9
|
*
|
|
12
|
-
* @param data - The data used by the parser (see {@link
|
|
10
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
13
11
|
* @param obj - The json object to extract the meta-information from
|
|
14
12
|
*/
|
|
15
13
|
function normalizeComment(data, obj) {
|
|
16
|
-
|
|
17
|
-
obj = (0, hooks_1.executeHook)(data.hooks.other.onComment.before, data, obj);
|
|
18
|
-
const { location, content } = (0, meta_1.retrieveMetaStructure)(obj);
|
|
14
|
+
const { location, content } = (0, normalize_meta_1.retrieveMetaStructure)(obj);
|
|
19
15
|
(0, assert_1.guard)(content.startsWith('#'), 'comment must start with #');
|
|
20
|
-
|
|
16
|
+
return {
|
|
21
17
|
type: "RComment" /* RType.Comment */,
|
|
22
18
|
location,
|
|
23
19
|
content: content.slice(1),
|
|
@@ -28,7 +24,6 @@ function normalizeComment(data, obj) {
|
|
|
28
24
|
fullLexeme: content
|
|
29
25
|
}
|
|
30
26
|
};
|
|
31
|
-
return (0, hooks_1.executeHook)(data.hooks.other.onComment.after, data, result);
|
|
32
27
|
}
|
|
33
28
|
exports.normalizeComment = normalizeComment;
|
|
34
|
-
//# sourceMappingURL=comment.js.map
|
|
29
|
+
//# sourceMappingURL=normalize-comment.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { NormalizerData } from '../../normalizer-data';
|
|
2
|
+
import type { XmlBasedJson } from '../../input-format';
|
|
3
|
+
import type { RLineDirective } from '../../../../model/nodes/r-line-directive';
|
|
4
|
+
import type { RComment } from '../../../../model/nodes/r-comment';
|
|
5
|
+
/**
|
|
6
|
+
* Normalize the given object as an R line directive (`#line <number> "<file>"`).
|
|
7
|
+
* This requires you to check the corresponding name beforehand.
|
|
8
|
+
* If the given object turns out to be no line directive, this returns a normal comment instead.
|
|
9
|
+
*
|
|
10
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
11
|
+
* @param obj - The json object to extract the meta-information from
|
|
12
|
+
*/
|
|
13
|
+
export declare function normalizeLineDirective(data: NormalizerData, obj: XmlBasedJson): RLineDirective | RComment;
|
|
@@ -1,29 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.normalizeLineDirective = void 0;
|
|
4
|
-
const meta_1 = require("../meta");
|
|
5
|
-
const assert_1 = require("../../../../../../../util/assert");
|
|
6
|
-
const hooks_1 = require("../../hooks");
|
|
7
4
|
const parser_1 = require("../../../json/parser");
|
|
5
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
6
|
+
const assert_1 = require("../../../../../../../util/assert");
|
|
8
7
|
const LineDirectiveRegex = /^#line\s+(\d+)\s+"([^"]+)"\s*$/;
|
|
9
8
|
/**
|
|
10
9
|
* Normalize the given object as an R line directive (`#line <number> "<file>"`).
|
|
11
10
|
* This requires you to check the corresponding name beforehand.
|
|
12
11
|
* If the given object turns out to be no line directive, this returns a normal comment instead.
|
|
13
12
|
*
|
|
14
|
-
* @param data - The data used by the parser (see {@link
|
|
13
|
+
* @param data - The data used by the parser (see {@link NormalizerData})
|
|
15
14
|
* @param obj - The json object to extract the meta-information from
|
|
16
15
|
*/
|
|
17
16
|
function normalizeLineDirective(data, obj) {
|
|
18
|
-
|
|
19
|
-
obj = (0, hooks_1.executeHook)(data.hooks.other.onLineDirective.before, data, obj);
|
|
20
|
-
const { location, content } = (0, meta_1.retrieveMetaStructure)(obj);
|
|
17
|
+
const { location, content } = (0, normalize_meta_1.retrieveMetaStructure)(obj);
|
|
21
18
|
(0, assert_1.guard)(content.startsWith('#line'), 'line directive must start with #line');
|
|
22
19
|
const match = LineDirectiveRegex.exec(content);
|
|
23
|
-
let result;
|
|
24
20
|
if (match === null) {
|
|
25
21
|
parser_1.parseLog.debug(`[line-directive] does not match the regex ${LineDirectiveRegex.source} given ${JSON.stringify(content)}`);
|
|
26
|
-
|
|
22
|
+
return {
|
|
27
23
|
type: "RComment" /* RType.Comment */,
|
|
28
24
|
location,
|
|
29
25
|
lexeme: content,
|
|
@@ -36,7 +32,7 @@ function normalizeLineDirective(data, obj) {
|
|
|
36
32
|
};
|
|
37
33
|
}
|
|
38
34
|
else {
|
|
39
|
-
|
|
35
|
+
return {
|
|
40
36
|
type: "RLineDirective" /* RType.LineDirective */,
|
|
41
37
|
location,
|
|
42
38
|
line: parseInt(match[1]),
|
|
@@ -49,7 +45,6 @@ function normalizeLineDirective(data, obj) {
|
|
|
49
45
|
}
|
|
50
46
|
};
|
|
51
47
|
}
|
|
52
|
-
return (0, hooks_1.executeHook)(data.hooks.other.onLineDirective.after, data, result);
|
|
53
48
|
}
|
|
54
49
|
exports.normalizeLineDirective = normalizeLineDirective;
|
|
55
|
-
//# sourceMappingURL=line-directive.js.map
|
|
50
|
+
//# sourceMappingURL=normalize-line-directive.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeDelimiter = void 0;
|
|
4
|
+
const normalize_meta_1 = require("../../normalize-meta");
|
|
5
|
+
function normalizeDelimiter(elem) {
|
|
6
|
+
const { location, content } = (0, normalize_meta_1.retrieveMetaStructure)(elem.content);
|
|
7
|
+
return {
|
|
8
|
+
type: "RDelimiter" /* RType.Delimiter */,
|
|
9
|
+
location,
|
|
10
|
+
lexeme: content,
|
|
11
|
+
subtype: elem.name
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
exports.normalizeDelimiter = normalizeDelimiter;
|
|
15
|
+
//# sourceMappingURL=normalize-delimiter.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { NamedXmlBasedJson, XmlBasedJson } from '../../input-format';
|
|
2
|
+
import type { NormalizerData } from '../../normalizer-data';
|
|
3
|
+
import type { RDelimiter } from '../../../../model/nodes/info/r-delimiter';
|
|
4
|
+
import type { RNode } from '../../../../model/model';
|
|
5
|
+
export declare function splitComments(tokens: readonly NamedXmlBasedJson[]): {
|
|
6
|
+
comments: NamedXmlBasedJson[];
|
|
7
|
+
others: NamedXmlBasedJson[];
|
|
8
|
+
};
|
|
9
|
+
export declare function normalizeExpressions(data: NormalizerData, tokens: readonly XmlBasedJson[] | readonly NamedXmlBasedJson[]): (RNode | RDelimiter)[];
|
|
10
|
+
export declare function parseNodesWithUnknownType(data: NormalizerData, mappedWithName: readonly NamedXmlBasedJson[]): (RNode | RDelimiter)[];
|