@eagleoutice/flowr 1.3.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +674 -0
- package/README.md +27 -0
- package/benchmark/benchmark-slicer.js +223 -0
- package/benchmark/index.d.ts +3 -0
- package/benchmark/index.js +20 -0
- package/benchmark/slicer.d.ts +100 -0
- package/benchmark/slicer.js +223 -0
- package/benchmark/stats/index.d.ts +10 -0
- package/benchmark/stats/index.js +27 -0
- package/benchmark/stats/print.d.ts +7 -0
- package/benchmark/stats/print.js +157 -0
- package/benchmark/stats/stats.d.ts +41 -0
- package/benchmark/stats/stats.js +6 -0
- package/benchmark/stopwatch.d.ts +35 -0
- package/benchmark/stopwatch.js +79 -0
- package/cli/benchmark-app.d.ts +9 -0
- package/cli/benchmark-app.js +52 -0
- package/cli/benchmark-helper-app.d.ts +7 -0
- package/cli/benchmark-helper-app.js +60 -0
- package/cli/common/features.d.ts +3 -0
- package/cli/common/features.js +30 -0
- package/cli/common/index.d.ts +2 -0
- package/cli/common/index.js +19 -0
- package/cli/common/options.d.ts +20 -0
- package/cli/common/options.js +82 -0
- package/cli/common/script.d.ts +21 -0
- package/cli/common/script.js +61 -0
- package/cli/common/scripts-info.d.ts +24 -0
- package/cli/common/scripts-info.js +69 -0
- package/cli/export-quads-app.d.ts +7 -0
- package/cli/export-quads-app.js +46 -0
- package/cli/repl/commands/cfg.d.ts +3 -0
- package/cli/repl/commands/cfg.js +37 -0
- package/cli/repl/commands/commands.d.ts +11 -0
- package/cli/repl/commands/commands.js +103 -0
- package/cli/repl/commands/dataflow.d.ts +3 -0
- package/cli/repl/commands/dataflow.js +34 -0
- package/cli/repl/commands/execute.d.ts +4 -0
- package/cli/repl/commands/execute.js +27 -0
- package/cli/repl/commands/index.d.ts +2 -0
- package/cli/repl/commands/index.js +19 -0
- package/cli/repl/commands/main.d.ts +39 -0
- package/cli/repl/commands/main.js +14 -0
- package/cli/repl/commands/normalize.d.ts +3 -0
- package/cli/repl/commands/normalize.js +34 -0
- package/cli/repl/commands/parse.d.ts +2 -0
- package/cli/repl/commands/parse.js +109 -0
- package/cli/repl/commands/quit.d.ts +2 -0
- package/cli/repl/commands/quit.js +12 -0
- package/cli/repl/commands/version.d.ts +16 -0
- package/cli/repl/commands/version.js +33 -0
- package/cli/repl/core.d.ts +41 -0
- package/cli/repl/core.js +89 -0
- package/cli/repl/execute.d.ts +28 -0
- package/cli/repl/execute.js +79 -0
- package/cli/repl/index.d.ts +5 -0
- package/cli/repl/index.js +22 -0
- package/cli/repl/prompt.d.ts +2 -0
- package/cli/repl/prompt.js +9 -0
- package/cli/repl/server/connection.d.ts +21 -0
- package/cli/repl/server/connection.js +217 -0
- package/cli/repl/server/messages/analysis.d.ts +71 -0
- package/cli/repl/server/messages/analysis.js +21 -0
- package/cli/repl/server/messages/error.d.ts +11 -0
- package/cli/repl/server/messages/error.js +3 -0
- package/cli/repl/server/messages/hello.d.ts +20 -0
- package/cli/repl/server/messages/hello.js +3 -0
- package/cli/repl/server/messages/index.d.ts +1 -0
- package/cli/repl/server/messages/index.js +3 -0
- package/cli/repl/server/messages/messages.d.ts +35 -0
- package/cli/repl/server/messages/messages.js +20 -0
- package/cli/repl/server/messages/repl.d.ts +33 -0
- package/cli/repl/server/messages/repl.js +17 -0
- package/cli/repl/server/messages/slice.d.ts +25 -0
- package/cli/repl/server/messages/slice.js +17 -0
- package/cli/repl/server/net.d.ts +33 -0
- package/cli/repl/server/net.js +24 -0
- package/cli/repl/server/send.d.ts +4 -0
- package/cli/repl/server/send.js +18 -0
- package/cli/repl/server/server.d.ts +20 -0
- package/cli/repl/server/server.js +66 -0
- package/cli/repl/server/validate.d.ts +15 -0
- package/cli/repl/server/validate.js +34 -0
- package/cli/slicer-app.d.ts +11 -0
- package/cli/slicer-app.js +81 -0
- package/cli/statistics-app.d.ts +11 -0
- package/cli/statistics-app.js +98 -0
- package/cli/statistics-helper-app.d.ts +11 -0
- package/cli/statistics-helper-app.js +83 -0
- package/cli/summarizer-app.d.ts +18 -0
- package/cli/summarizer-app.js +67 -0
- package/core/index.d.ts +4 -0
- package/core/index.js +23 -0
- package/core/input.d.ts +42 -0
- package/core/input.js +3 -0
- package/core/output.d.ts +15 -0
- package/core/output.js +3 -0
- package/core/pipeline-executor.js +221 -0
- package/core/print/dataflow-printer.d.ts +8 -0
- package/core/print/dataflow-printer.js +62 -0
- package/core/print/normalize-printer.d.ts +7 -0
- package/core/print/normalize-printer.js +31 -0
- package/core/print/parse-printer.d.ts +3 -0
- package/core/print/parse-printer.js +29 -0
- package/core/print/print.d.ts +47 -0
- package/core/print/print.js +13 -0
- package/core/print/slice-diff-ansi.d.ts +2 -0
- package/core/print/slice-diff-ansi.js +49 -0
- package/core/slicer.d.ts +123 -0
- package/core/slicer.js +227 -0
- package/core/stepping-slicer.js +160 -0
- package/core/steps/all/00-parse.js +19 -0
- package/core/steps/all/10-normalize.js +21 -0
- package/core/steps/all/20-dataflow.js +21 -0
- package/core/steps/all/30-slice.js +16 -0
- package/core/steps/all/40-reconstruct.js +16 -0
- package/core/steps/all/core/00-parse.js +24 -0
- package/core/steps/all/core/10-normalize.js +46 -0
- package/core/steps/all/core/20-dataflow.js +39 -0
- package/core/steps/all/static-slicing/00-slice.js +21 -0
- package/core/steps/all/static-slicing/10-reconstruct.js +21 -0
- package/core/steps/index.js +21 -0
- package/core/steps/input.js +3 -0
- package/core/steps/output.js +3 -0
- package/core/steps/pipeline/create.js +130 -0
- package/core/steps/pipeline/default.js +15 -0
- package/core/steps/pipeline/dependency-checker.js +76 -0
- package/core/steps/pipeline/index.js +20 -0
- package/core/steps/pipeline/invalid-pipeline-error.js +14 -0
- package/core/steps/pipeline/pipeline.js +28 -0
- package/core/steps/step.js +8 -0
- package/core/steps/steps-provider.js +3 -0
- package/core/steps/steps.js +35 -0
- package/core/steps.d.ts +166 -0
- package/core/steps.js +99 -0
- package/dataflow/common/environments/append.js +48 -0
- package/dataflow/common/environments/environment.js +165 -0
- package/dataflow/common/environments/index.js +23 -0
- package/dataflow/common/environments/overwrite.js +82 -0
- package/dataflow/common/environments/register.js +49 -0
- package/dataflow/common/environments/resolve-by-name.js +35 -0
- package/dataflow/common/environments/scopes.js +6 -0
- package/dataflow/common/environments/scoping.js +27 -0
- package/dataflow/environments/append.d.ts +8 -0
- package/dataflow/environments/append.js +48 -0
- package/dataflow/environments/environment.d.ts +78 -0
- package/dataflow/environments/environment.js +161 -0
- package/dataflow/environments/index.d.ts +7 -0
- package/dataflow/environments/index.js +23 -0
- package/dataflow/environments/overwrite.d.ts +6 -0
- package/dataflow/environments/overwrite.js +82 -0
- package/dataflow/environments/register.d.ts +7 -0
- package/dataflow/environments/register.js +39 -0
- package/dataflow/environments/resolve-by-name.d.ts +12 -0
- package/dataflow/environments/resolve-by-name.js +35 -0
- package/dataflow/environments/scopes.d.ts +6 -0
- package/dataflow/environments/scopes.js +6 -0
- package/dataflow/environments/scoping.d.ts +4 -0
- package/dataflow/environments/scoping.js +27 -0
- package/dataflow/extractor.d.ts +6 -0
- package/dataflow/extractor.js +60 -0
- package/dataflow/graph/diff.d.ts +18 -0
- package/dataflow/graph/diff.js +206 -0
- package/dataflow/graph/edge.d.ts +37 -0
- package/dataflow/graph/edge.js +32 -0
- package/dataflow/graph/equal.js +127 -0
- package/dataflow/graph/graph.d.ts +120 -0
- package/dataflow/graph/graph.js +298 -0
- package/dataflow/graph/index.d.ts +4 -0
- package/dataflow/graph/index.js +21 -0
- package/dataflow/graph/quads.d.ts +8 -0
- package/dataflow/graph/quads.js +27 -0
- package/dataflow/graph/vertex.d.ts +86 -0
- package/dataflow/graph/vertex.js +3 -0
- package/dataflow/index.d.ts +5 -0
- package/dataflow/index.js +24 -0
- package/dataflow/internal/info.d.ts +21 -0
- package/dataflow/internal/info.js +16 -0
- package/dataflow/internal/linker.d.ts +41 -0
- package/dataflow/internal/linker.js +255 -0
- package/dataflow/internal/process/access.d.ts +4 -0
- package/dataflow/internal/process/access.js +53 -0
- package/dataflow/internal/process/expression-list.d.ts +8 -0
- package/dataflow/internal/process/expression-list.js +148 -0
- package/dataflow/internal/process/functions/argument.d.ts +8 -0
- package/dataflow/internal/process/functions/argument.js +46 -0
- package/dataflow/internal/process/functions/exit-points.d.ts +2 -0
- package/dataflow/internal/process/functions/exit-points.js +121 -0
- package/dataflow/internal/process/functions/function-call.d.ts +5 -0
- package/dataflow/internal/process/functions/function-call.js +99 -0
- package/dataflow/internal/process/functions/function-definition.d.ts +4 -0
- package/dataflow/internal/process/functions/function-definition.js +176 -0
- package/dataflow/internal/process/functions/parameter.d.ts +4 -0
- package/dataflow/internal/process/functions/parameter.js +47 -0
- package/dataflow/internal/process/if-then-else.d.ts +4 -0
- package/dataflow/internal/process/if-then-else.js +56 -0
- package/dataflow/internal/process/loops/for-loop.d.ts +4 -0
- package/dataflow/internal/process/loops/for-loop.js +54 -0
- package/dataflow/internal/process/loops/repeat-loop.d.ts +4 -0
- package/dataflow/internal/process/loops/repeat-loop.js +21 -0
- package/dataflow/internal/process/loops/while-loop.d.ts +4 -0
- package/dataflow/internal/process/loops/while-loop.js +31 -0
- package/dataflow/internal/process/operators/assignment.d.ts +4 -0
- package/dataflow/internal/process/operators/assignment.js +129 -0
- package/dataflow/internal/process/operators/non-assignment-binary-op.d.ts +4 -0
- package/dataflow/internal/process/operators/non-assignment-binary-op.js +25 -0
- package/dataflow/internal/process/operators/pipe.d.ts +4 -0
- package/dataflow/internal/process/operators/pipe.js +46 -0
- package/dataflow/internal/process/operators/unary-op.d.ts +4 -0
- package/dataflow/internal/process/operators/unary-op.js +10 -0
- package/dataflow/internal/process/symbol.d.ts +4 -0
- package/dataflow/internal/process/symbol.js +21 -0
- package/dataflow/internal/process/uninteresting-leaf.d.ts +3 -0
- package/dataflow/internal/process/uninteresting-leaf.js +9 -0
- package/dataflow/processor.d.ts +47 -0
- package/dataflow/processor.js +20 -0
- package/dataflow/v1/extractor.js +60 -0
- package/dataflow/v1/graph/diff.js +206 -0
- package/dataflow/v1/graph/edge.js +32 -0
- package/dataflow/v1/graph/graph.js +298 -0
- package/dataflow/v1/graph/index.js +21 -0
- package/dataflow/v1/graph/quads.js +27 -0
- package/dataflow/v1/graph/vertex.js +3 -0
- package/dataflow/v1/index.js +24 -0
- package/dataflow/v1/internal/info.js +16 -0
- package/dataflow/v1/internal/linker.js +255 -0
- package/dataflow/v1/internal/process/access.js +54 -0
- package/dataflow/v1/internal/process/expression-list.js +154 -0
- package/dataflow/v1/internal/process/functions/argument.js +46 -0
- package/dataflow/v1/internal/process/functions/exit-points.js +125 -0
- package/dataflow/v1/internal/process/functions/function-call.js +99 -0
- package/dataflow/v1/internal/process/functions/function-definition.js +176 -0
- package/dataflow/v1/internal/process/functions/parameter.js +47 -0
- package/dataflow/v1/internal/process/if-then-else.js +57 -0
- package/dataflow/v1/internal/process/loops/for-loop.js +54 -0
- package/dataflow/v1/internal/process/loops/repeat-loop.js +21 -0
- package/dataflow/v1/internal/process/loops/while-loop.js +31 -0
- package/dataflow/v1/internal/process/operators/assignment.js +129 -0
- package/dataflow/v1/internal/process/operators/non-assignment-binary-op.js +25 -0
- package/dataflow/v1/internal/process/operators/pipe.js +46 -0
- package/dataflow/v1/internal/process/operators/unary-op.js +10 -0
- package/dataflow/v1/internal/process/symbol.js +21 -0
- package/dataflow/v1/internal/process/uninteresting-leaf.js +9 -0
- package/dataflow/v1/processor.js +20 -0
- package/dataflow/v2/entry.js +11 -0
- package/flowr-1.3.7.tgz +0 -0
- package/flowr.d.ts +26 -0
- package/flowr.js +135 -0
- package/index.d.ts +6 -0
- package/index.js +23 -0
- package/package.json +384 -0
- package/r-bridge/index.d.ts +11 -0
- package/r-bridge/index.js +28 -0
- package/r-bridge/lang-4.x/ast/index.d.ts +2 -0
- package/r-bridge/lang-4.x/ast/index.js +19 -0
- package/r-bridge/lang-4.x/ast/model/collect.d.ts +9 -0
- package/r-bridge/lang-4.x/ast/model/collect.js +23 -0
- package/r-bridge/lang-4.x/ast/model/index.d.ts +6 -0
- package/r-bridge/lang-4.x/ast/model/index.js +23 -0
- package/r-bridge/lang-4.x/ast/model/model.d.ts +127 -0
- package/r-bridge/lang-4.x/ast/model/model.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/index.d.ts +21 -0
- package/r-bridge/lang-4.x/ast/model/nodes/index.js +38 -0
- package/r-bridge/lang-4.x/ast/model/nodes/info/index.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/model/nodes/info/index.js +27 -0
- package/r-bridge/lang-4.x/ast/model/nodes/info/r-delimiter.d.ts +12 -0
- package/r-bridge/lang-4.x/ast/model/nodes/info/r-delimiter.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-access.d.ts +24 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-access.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-argument.d.ts +11 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-argument.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-binary-op.d.ts +25 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-binary-op.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-break.d.ts +5 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-break.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-comment.d.ts +6 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-comment.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-expression-list.d.ts +6 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-expression-list.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-for-loop.d.ts +18 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-for-loop.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +31 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-definition.d.ts +10 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-definition.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-if-then-else.d.ts +9 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-if-then-else.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-line-directive.d.ts +7 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-line-directive.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-logical.d.ts +7 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-logical.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-next.d.ts +5 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-next.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +8 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-number.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-parameter.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-parameter.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-pipe.d.ts +7 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-pipe.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-repeat-loop.d.ts +12 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-repeat-loop.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +7 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-string.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.d.ts +7 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +9 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-unary-op.d.ts +18 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-unary-op.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-while-loop.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-while-loop.js +3 -0
- package/r-bridge/lang-4.x/ast/model/operators.d.ts +46 -0
- package/r-bridge/lang-4.x/ast/model/operators.js +67 -0
- package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +81 -0
- package/r-bridge/lang-4.x/ast/model/processing/decorate.js +342 -0
- package/r-bridge/lang-4.x/ast/model/processing/fold.d.ts +10 -0
- package/r-bridge/lang-4.x/ast/model/processing/fold.js +20 -0
- package/r-bridge/lang-4.x/ast/model/processing/index.d.ts +5 -0
- package/r-bridge/lang-4.x/ast/model/processing/index.js +22 -0
- package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +41 -0
- package/r-bridge/lang-4.x/ast/model/processing/role.js +17 -0
- package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +61 -0
- package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.js +87 -0
- package/r-bridge/lang-4.x/ast/model/processing/visitor.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/model/processing/visitor.js +109 -0
- package/r-bridge/lang-4.x/ast/model/type.d.ts +206 -0
- package/r-bridge/lang-4.x/ast/model/type.js +18 -0
- package/r-bridge/lang-4.x/ast/model/versions.d.ts +9 -0
- package/r-bridge/lang-4.x/ast/model/versions.js +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/common/config.js +16 -0
- package/r-bridge/lang-4.x/ast/parser/xml/common/input-format.js +42 -0
- package/r-bridge/lang-4.x/ast/parser/xml/common/meta.js +118 -0
- package/r-bridge/lang-4.x/ast/parser/xml/common/xml-to-json.js +58 -0
- package/r-bridge/lang-4.x/ast/parser/xml/config.d.ts +25 -0
- package/r-bridge/lang-4.x/ast/parser/xml/config.js +16 -0
- package/r-bridge/lang-4.x/ast/parser/xml/data.d.ts +22 -0
- package/r-bridge/lang-4.x/ast/parser/xml/data.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/xml/hooks.d.ts +292 -0
- package/r-bridge/lang-4.x/ast/parser/xml/hooks.js +136 -0
- package/r-bridge/lang-4.x/ast/parser/xml/index.d.ts +5 -0
- package/r-bridge/lang-4.x/ast/parser/xml/index.js +22 -0
- package/r-bridge/lang-4.x/ast/parser/xml/input-format.d.ts +32 -0
- package/r-bridge/lang-4.x/ast/parser/xml/input-format.js +33 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/access.d.ts +12 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/access.js +107 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then-else.d.ts +15 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then-else.js +32 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then.js +46 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.d.ts +2 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.js +19 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.d.ts +10 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.js +65 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.d.ts +1 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.js +18 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/argument.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/argument.js +74 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/call.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/call.js +149 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/definition.d.ts +12 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/definition.js +60 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.d.ts +2 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/parameter.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/parameter.js +64 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/index.d.ts +10 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/index.js +27 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/break.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/break.js +24 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/for.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/for.js +72 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.d.ts +5 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.js +22 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/next.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/next.js +24 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/repeat.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/repeat.js +42 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/while.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/while.js +45 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/meta.d.ts +50 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/meta.js +118 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/binary.d.ts +8 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/binary.js +162 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.d.ts +6 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.js +24 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.js +59 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/comment.d.ts +11 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/comment.js +34 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.d.ts +1 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.js +18 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/line-directive.d.ts +12 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/line-directive.js +55 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.d.ts +10 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.js +159 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.js +34 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.js +64 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/number.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/number.js +56 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/string.d.ts +11 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/string.js +41 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/symbol.d.ts +14 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/symbol.js +56 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/xml-to-json.d.ts +9 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/xml-to-json.js +51 -0
- package/r-bridge/lang-4.x/ast/parser/xml/parser.d.ts +17 -0
- package/r-bridge/lang-4.x/ast/parser/xml/parser.js +30 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/data.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/hooks.js +136 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/index.js +22 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/access.js +107 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/control/if-then-else.js +32 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/control/if-then.js +46 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/control/index.js +19 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/expression/expression.js +65 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/expression/index.js +18 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/argument.js +74 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/call.js +149 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/definition.js +60 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/parameter.js +64 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/index.js +27 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/break.js +24 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/for.js +72 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/index.js +22 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/next.js +24 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/repeat.js +42 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/while.js +45 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/binary.js +162 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/special.js +24 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/unary.js +59 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/other/comment.js +34 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/other/index.js +18 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/other/line-directive.js +55 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/elements.js +159 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/root.js +34 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/single-element.js +64 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/number.js +56 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/string.js +41 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/symbol.js +56 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/normalize.js +30 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/data.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/access.js +95 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/expression.js +99 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/functions/argument.js +71 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/operators/binary.js +30 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/operators/index.js +19 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/operators/unary.js +35 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/other/comment.js +25 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/other/index.js +18 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/other/line-directive.js +38 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/root.js +26 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/single-element.js +63 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/index.js +18 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/number.js +46 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/string.js +33 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/symbol.js +63 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/normalize.js +25 -0
- package/r-bridge/lang-4.x/index.d.ts +2 -0
- package/r-bridge/lang-4.x/index.js +19 -0
- package/r-bridge/lang-4.x/values.d.ts +39 -0
- package/r-bridge/lang-4.x/values.js +149 -0
- package/r-bridge/retriever.d.ts +48 -0
- package/r-bridge/retriever.js +71 -0
- package/r-bridge/shell.d.ts +147 -0
- package/r-bridge/shell.js +423 -0
- package/reconstruct/reconstruct.d.ts +28 -0
- package/reconstruct/reconstruct.js +448 -0
- package/slicing/criterion/collect-all.d.ts +36 -0
- package/slicing/criterion/collect-all.js +23 -0
- package/slicing/criterion/filters/all-variables.d.ts +2 -0
- package/slicing/criterion/filters/all-variables.js +63 -0
- package/slicing/criterion/filters/index.d.ts +1 -0
- package/slicing/criterion/filters/index.js +18 -0
- package/slicing/criterion/index.d.ts +3 -0
- package/slicing/criterion/index.js +20 -0
- package/slicing/criterion/parse.d.ts +20 -0
- package/slicing/criterion/parse.js +79 -0
- package/slicing/index.d.ts +3 -0
- package/slicing/index.js +20 -0
- package/slicing/static/index.d.ts +1 -0
- package/slicing/static/index.js +18 -0
- package/slicing/static/static-slicer.d.ts +29 -0
- package/slicing/static/static-slicer.js +186 -0
- package/statistics/features/common-syntax-probability.d.ts +30 -0
- package/statistics/features/common-syntax-probability.js +159 -0
- package/statistics/features/feature.d.ts +175 -0
- package/statistics/features/feature.js +30 -0
- package/statistics/features/index.d.ts +1 -0
- package/statistics/features/index.js +18 -0
- package/statistics/features/post-processing.d.ts +12 -0
- package/statistics/features/post-processing.js +21 -0
- package/statistics/features/supported/assignments/assignments.d.ts +11 -0
- package/statistics/features/supported/assignments/assignments.js +53 -0
- package/statistics/features/supported/assignments/index.d.ts +1 -0
- package/statistics/features/supported/assignments/index.js +6 -0
- package/statistics/features/supported/assignments/post-process.d.ts +3 -0
- package/statistics/features/supported/assignments/post-process.js +125 -0
- package/statistics/features/supported/comments/comments.d.ts +18 -0
- package/statistics/features/supported/comments/comments.js +133 -0
- package/statistics/features/supported/comments/index.d.ts +1 -0
- package/statistics/features/supported/comments/index.js +6 -0
- package/statistics/features/supported/comments/post-process.d.ts +3 -0
- package/statistics/features/supported/comments/post-process.js +50 -0
- package/statistics/features/supported/control-flow/control-flow.d.ts +17 -0
- package/statistics/features/supported/control-flow/control-flow.js +67 -0
- package/statistics/features/supported/control-flow/index.d.ts +1 -0
- package/statistics/features/supported/control-flow/index.js +6 -0
- package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
- package/statistics/features/supported/control-flow/post-process.js +65 -0
- package/statistics/features/supported/data-access/data-access.d.ts +15 -0
- package/statistics/features/supported/data-access/data-access.js +118 -0
- package/statistics/features/supported/data-access/index.d.ts +1 -0
- package/statistics/features/supported/data-access/index.js +6 -0
- package/statistics/features/supported/data-access/post-process.d.ts +3 -0
- package/statistics/features/supported/data-access/post-process.js +107 -0
- package/statistics/features/supported/defined-functions/defined-functions.d.ts +35 -0
- package/statistics/features/supported/defined-functions/defined-functions.js +139 -0
- package/statistics/features/supported/defined-functions/index.d.ts +1 -0
- package/statistics/features/supported/defined-functions/index.js +6 -0
- package/statistics/features/supported/defined-functions/post-process.d.ts +6 -0
- package/statistics/features/supported/defined-functions/post-process.js +177 -0
- package/statistics/features/supported/expression-list/expression-list.d.ts +9 -0
- package/statistics/features/supported/expression-list/expression-list.js +36 -0
- package/statistics/features/supported/expression-list/index.d.ts +1 -0
- package/statistics/features/supported/expression-list/index.js +6 -0
- package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
- package/statistics/features/supported/expression-list/post-process.js +44 -0
- package/statistics/features/supported/index.d.ts +10 -0
- package/statistics/features/supported/index.js +27 -0
- package/statistics/features/supported/loops/index.d.ts +1 -0
- package/statistics/features/supported/loops/index.js +6 -0
- package/statistics/features/supported/loops/loops.d.ts +20 -0
- package/statistics/features/supported/loops/loops.js +79 -0
- package/statistics/features/supported/loops/post-process.d.ts +3 -0
- package/statistics/features/supported/loops/post-process.js +72 -0
- package/statistics/features/supported/used-functions/index.d.ts +1 -0
- package/statistics/features/supported/used-functions/index.js +6 -0
- package/statistics/features/supported/used-functions/post-process.d.ts +6 -0
- package/statistics/features/supported/used-functions/post-process.js +179 -0
- package/statistics/features/supported/used-functions/used-functions.d.ts +24 -0
- package/statistics/features/supported/used-functions/used-functions.js +95 -0
- package/statistics/features/supported/used-packages/index.d.ts +1 -0
- package/statistics/features/supported/used-packages/index.js +6 -0
- package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
- package/statistics/features/supported/used-packages/post-process.js +121 -0
- package/statistics/features/supported/used-packages/used-packages.d.ts +16 -0
- package/statistics/features/supported/used-packages/used-packages.js +130 -0
- package/statistics/features/supported/values/index.d.ts +1 -0
- package/statistics/features/supported/values/index.js +6 -0
- package/statistics/features/supported/values/post-process.d.ts +3 -0
- package/statistics/features/supported/values/post-process.js +72 -0
- package/statistics/features/supported/values/values.d.ts +14 -0
- package/statistics/features/supported/values/values.js +101 -0
- package/statistics/features/supported/variables/index.d.ts +1 -0
- package/statistics/features/supported/variables/index.js +6 -0
- package/statistics/features/supported/variables/post-process.d.ts +9 -0
- package/statistics/features/supported/variables/post-process.js +122 -0
- package/statistics/features/supported/variables/variables.d.ts +15 -0
- package/statistics/features/supported/variables/variables.js +70 -0
- package/statistics/index.d.ts +6 -0
- package/statistics/index.js +24 -0
- package/statistics/meta-statistics.d.ts +33 -0
- package/statistics/meta-statistics.js +17 -0
- package/statistics/output/ansi.d.ts +50 -0
- package/statistics/output/ansi.js +58 -0
- package/statistics/output/file-provider.d.ts +37 -0
- package/statistics/output/file-provider.js +97 -0
- package/statistics/output/index.d.ts +4 -0
- package/statistics/output/index.js +21 -0
- package/statistics/output/print-stats.d.ts +17 -0
- package/statistics/output/print-stats.js +69 -0
- package/statistics/output/statistics-file.d.ts +37 -0
- package/statistics/output/statistics-file.js +69 -0
- package/statistics/statistics.d.ts +24 -0
- package/statistics/statistics.js +109 -0
- package/util/args.d.ts +14 -0
- package/util/args.js +67 -0
- package/util/arrays.d.ts +44 -0
- package/util/arrays.js +145 -0
- package/util/assert.d.ts +11 -0
- package/util/assert.js +35 -0
- package/util/bimap.d.ts +24 -0
- package/util/bimap.js +71 -0
- package/util/cfg.d.ts +55 -0
- package/util/cfg.js +498 -0
- package/util/defaultmap.d.ts +34 -0
- package/util/defaultmap.js +65 -0
- package/util/diff.d.ts +43 -0
- package/util/diff.js +28 -0
- package/util/files.d.ts +54 -0
- package/util/files.js +144 -0
- package/util/json.d.ts +2 -0
- package/util/json.js +28 -0
- package/util/log.d.ts +22 -0
- package/util/log.js +48 -0
- package/util/mermaid/ast.d.ts +6 -0
- package/util/mermaid/ast.js +28 -0
- package/util/mermaid/cfg.d.ts +7 -0
- package/util/mermaid/cfg.js +44 -0
- package/util/mermaid/dfg.d.ts +21 -0
- package/util/mermaid/dfg.js +165 -0
- package/util/mermaid/index.d.ts +3 -0
- package/util/mermaid/index.js +20 -0
- package/util/mermaid/mermaid.d.ts +7 -0
- package/util/mermaid/mermaid.js +24 -0
- package/util/numbers.d.ts +1 -0
- package/util/numbers.js +9 -0
- package/util/objects.d.ts +17 -0
- package/util/objects.js +60 -0
- package/util/os.d.ts +2 -0
- package/util/os.js +25 -0
- package/util/parallel.d.ts +30 -0
- package/util/parallel.js +103 -0
- package/util/quads.d.ts +92 -0
- package/util/quads.js +189 -0
- package/util/random.d.ts +4 -0
- package/util/random.js +22 -0
- package/util/range.d.ts +32 -0
- package/util/range.js +61 -0
- package/util/set.d.ts +8 -0
- package/util/set.js +32 -0
- package/util/strings.d.ts +12 -0
- package/util/strings.js +41 -0
- package/util/summarizer/auto-detect.d.ts +2 -0
- package/util/summarizer/auto-detect.js +32 -0
- package/util/summarizer/benchmark/benchmark-summarizer.js +208 -0
- package/util/summarizer/benchmark/data.d.ts +66 -0
- package/util/summarizer/benchmark/data.js +13 -0
- package/util/summarizer/benchmark/first-phase/input.d.ts +2 -0
- package/util/summarizer/benchmark/first-phase/input.js +59 -0
- package/util/summarizer/benchmark/first-phase/process.d.ts +10 -0
- package/util/summarizer/benchmark/first-phase/process.js +208 -0
- package/util/summarizer/benchmark/second-phase/graph.d.ts +2 -0
- package/util/summarizer/benchmark/second-phase/graph.js +54 -0
- package/util/summarizer/benchmark/second-phase/process.d.ts +4 -0
- package/util/summarizer/benchmark/second-phase/process.js +89 -0
- package/util/summarizer/benchmark/summarizer.d.ts +34 -0
- package/util/summarizer/benchmark/summarizer.js +53 -0
- package/util/summarizer/statistics/first-phase/process.d.ts +6 -0
- package/util/summarizer/statistics/first-phase/process.js +81 -0
- package/util/summarizer/statistics/post-process/clusterer.d.ts +26 -0
- package/util/summarizer/statistics/post-process/clusterer.js +43 -0
- package/util/summarizer/statistics/post-process/file-based-count.d.ts +17 -0
- package/util/summarizer/statistics/post-process/file-based-count.js +49 -0
- package/util/summarizer/statistics/post-process/histogram.d.ts +59 -0
- package/util/summarizer/statistics/post-process/histogram.js +128 -0
- package/util/summarizer/statistics/post-process/index.d.ts +4 -0
- package/util/summarizer/statistics/post-process/index.js +21 -0
- package/util/summarizer/statistics/post-process/post-process-output.d.ts +16 -0
- package/util/summarizer/statistics/post-process/post-process-output.js +104 -0
- package/util/summarizer/statistics/second-phase/process.d.ts +11 -0
- package/util/summarizer/statistics/second-phase/process.js +117 -0
- package/util/summarizer/statistics/summarizer.d.ts +34 -0
- package/util/summarizer/statistics/summarizer.js +135 -0
- package/util/summarizer/summarizer.d.ts +25 -0
- package/util/summarizer/summarizer.js +13 -0
- package/util/time.d.ts +6 -0
- package/util/time.js +13 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ensureExpressionList = exports.ensureChildrenAreLhsAndRhsOrdered = exports.retrieveOpName = exports.getWithTokenType = exports.getTokenType = exports.assureTokenType = exports.revertTokenReplacement = exports.retrieveMetaStructure = exports.extractLocation = exports.objectWithArrUnwrap = void 0;
|
|
4
|
+
const input_format_1 = require("./input-format");
|
|
5
|
+
const range_1 = require("../../../../../../util/range");
|
|
6
|
+
const assert_1 = require("../../../../../../util/assert");
|
|
7
|
+
const xml_to_json_1 = require("./xml-to-json");
|
|
8
|
+
/**
|
|
9
|
+
* if the passed object is an array with only one element, remove the array wrapper
|
|
10
|
+
*/
|
|
11
|
+
function objectWithArrUnwrap(obj) {
|
|
12
|
+
if (Array.isArray(obj)) {
|
|
13
|
+
if (obj.length !== 1) {
|
|
14
|
+
throw new input_format_1.XmlParseError(`expected only one element in the wrapped array, yet received ${JSON.stringify(obj)}`);
|
|
15
|
+
}
|
|
16
|
+
return obj[0];
|
|
17
|
+
}
|
|
18
|
+
else if (typeof obj === 'object') {
|
|
19
|
+
return obj;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
throw new input_format_1.XmlParseError(`expected array or object, yet received ${JSON.stringify(obj)}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.objectWithArrUnwrap = objectWithArrUnwrap;
|
|
26
|
+
/**
|
|
27
|
+
* given a xml element, extract the source location of the corresponding element in the R-ast
|
|
28
|
+
*/
|
|
29
|
+
function extractLocation(ast) {
|
|
30
|
+
return (0, range_1.rangeFrom)(ast['line1'], ast['col1'], ast['line2'], ast['col2']);
|
|
31
|
+
}
|
|
32
|
+
exports.extractLocation = extractLocation;
|
|
33
|
+
/**
|
|
34
|
+
* The json object that represents the input xml contains various meta-information.
|
|
35
|
+
* This function extracts the meta-information and returns it.
|
|
36
|
+
*
|
|
37
|
+
* @param config - The configuration of the parser to use to retrieve the corresponding name fields
|
|
38
|
+
* @param obj - The json object to extract the meta-information from
|
|
39
|
+
*/
|
|
40
|
+
function retrieveMetaStructure(config, obj) {
|
|
41
|
+
const unwrappedObj = objectWithArrUnwrap(obj);
|
|
42
|
+
const attributes = obj[config.attr];
|
|
43
|
+
(0, assert_1.guard)(attributes !== undefined, () => `expected attributes to be defined for ${JSON.stringify(obj)}`);
|
|
44
|
+
const content = obj[config.content] ?? '';
|
|
45
|
+
const location = extractLocation(attributes);
|
|
46
|
+
return {
|
|
47
|
+
unwrappedObj,
|
|
48
|
+
location,
|
|
49
|
+
content
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
exports.retrieveMetaStructure = retrieveMetaStructure;
|
|
53
|
+
function revertTokenReplacement(tokenMap, token) {
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- it is still necessary as we do not know if we have a replacement for the given token
|
|
55
|
+
return tokenMap[token] ?? token;
|
|
56
|
+
}
|
|
57
|
+
exports.revertTokenReplacement = revertTokenReplacement;
|
|
58
|
+
function assureTokenType(tokenMap, obj, expectedName) {
|
|
59
|
+
const name = getTokenType(tokenMap, obj);
|
|
60
|
+
if (name !== expectedName) {
|
|
61
|
+
throw new input_format_1.XmlParseError(`expected name to be ${expectedName}, yet received ${name} for ${JSON.stringify(obj)}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.assureTokenType = assureTokenType;
|
|
65
|
+
/**
|
|
66
|
+
* Extract the token-type of the given object. This is based on the knowledge, that all json objects created
|
|
67
|
+
* from the R xml have a name attached.
|
|
68
|
+
*
|
|
69
|
+
* @param tokenMap - used to revert token types (i.e., revert `xmlparsedata`)
|
|
70
|
+
* @param content - the json object to extract the token-type from
|
|
71
|
+
*/
|
|
72
|
+
function getTokenType(tokenMap, content) {
|
|
73
|
+
return revertTokenReplacement(tokenMap, (0, input_format_1.getKeyGuarded)(content, xml_to_json_1.XML_NAME));
|
|
74
|
+
}
|
|
75
|
+
exports.getTokenType = getTokenType;
|
|
76
|
+
function getWithTokenType(tokenMap, obj) {
|
|
77
|
+
return obj.map(content => ({
|
|
78
|
+
name: getTokenType(tokenMap, content),
|
|
79
|
+
content
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
exports.getWithTokenType = getWithTokenType;
|
|
83
|
+
function retrieveOpName(config, operator) {
|
|
84
|
+
/*
|
|
85
|
+
* only real arithmetic ops have their operation as their own name, the others identify via content
|
|
86
|
+
*/
|
|
87
|
+
return operator.content[config.content];
|
|
88
|
+
}
|
|
89
|
+
exports.retrieveOpName = retrieveOpName;
|
|
90
|
+
/**
|
|
91
|
+
* Ensure that the first child is completely before the second child.
|
|
92
|
+
*
|
|
93
|
+
* @param config - the configuration of the parser to use to retrieve the corresponding name fields
|
|
94
|
+
* @param first - the first child which should be the lhs
|
|
95
|
+
* @param second - the second child which should be the rhs
|
|
96
|
+
*/
|
|
97
|
+
function ensureChildrenAreLhsAndRhsOrdered(config, first, second) {
|
|
98
|
+
const firstOtherLoc = extractLocation(first[config.attr]);
|
|
99
|
+
const secondOtherLoc = extractLocation(second[config.attr]);
|
|
100
|
+
if (!(0, range_1.rangeStartsCompletelyBefore)(firstOtherLoc, secondOtherLoc)) {
|
|
101
|
+
throw new input_format_1.XmlParseError(`expected the first child to be the lhs, yet received ${JSON.stringify(first)} & ${JSON.stringify(second)}`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
exports.ensureChildrenAreLhsAndRhsOrdered = ensureChildrenAreLhsAndRhsOrdered;
|
|
105
|
+
function ensureExpressionList(node) {
|
|
106
|
+
if (node.type !== "RExpressionList" /* RType.ExpressionList */) {
|
|
107
|
+
return {
|
|
108
|
+
type: "RExpressionList" /* RType.ExpressionList */,
|
|
109
|
+
location: node.location,
|
|
110
|
+
info: node.info,
|
|
111
|
+
lexeme: undefined,
|
|
112
|
+
children: [node]
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
return node;
|
|
116
|
+
}
|
|
117
|
+
exports.ensureExpressionList = ensureExpressionList;
|
|
118
|
+
//# sourceMappingURL=meta.js.map
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.xlm2jsonObject = exports.XML_NAME = void 0;
|
|
27
|
+
const xml2js = __importStar(require("xml2js"));
|
|
28
|
+
exports.XML_NAME = '#name';
|
|
29
|
+
const xml2jsOptions = {
|
|
30
|
+
charsAsChildren: false,
|
|
31
|
+
explicitChildren: true,
|
|
32
|
+
mergeAttrs: false,
|
|
33
|
+
// we need this for semicolons etc., while we keep the old broken components we ignore them completely
|
|
34
|
+
preserveChildrenOrder: true,
|
|
35
|
+
trim: true,
|
|
36
|
+
includeWhiteChars: true,
|
|
37
|
+
normalize: false,
|
|
38
|
+
normalizeTags: false,
|
|
39
|
+
validator: undefined,
|
|
40
|
+
xmlns: false,
|
|
41
|
+
strict: true
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Parse the xml presented by R into a json object that will be used for conversion
|
|
45
|
+
*
|
|
46
|
+
* @param config - The configuration to use (i.e., what names should be used for the attributes, children, ...)
|
|
47
|
+
* @param xmlString - The xml input to parse
|
|
48
|
+
*/
|
|
49
|
+
function xlm2jsonObject(config, xmlString) {
|
|
50
|
+
return xml2js.parseStringPromise(xmlString, {
|
|
51
|
+
...xml2jsOptions,
|
|
52
|
+
attrkey: config.attr,
|
|
53
|
+
charkey: config.content,
|
|
54
|
+
childkey: config.children
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
exports.xlm2jsonObject = xlm2jsonObject;
|
|
58
|
+
//# sourceMappingURL=xml-to-json.js.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { MergeableRecord } from '../../../../../util/objects';
|
|
2
|
+
import { TokenMap } from '../../../../retriever';
|
|
3
|
+
/**
|
|
4
|
+
* Configures the settings for the xml parser (like what names should be used to represent the given objects,
|
|
5
|
+
* and what replacements are active with `xmlparsedata` on the R-side of things).
|
|
6
|
+
*
|
|
7
|
+
* @see DEFAULT_XML_PARSER_CONFIG
|
|
8
|
+
*/
|
|
9
|
+
export interface XmlParserConfig extends MergeableRecord {
|
|
10
|
+
/** attributes (line, col, ...) are referenced by the given name */
|
|
11
|
+
attributeName: string;
|
|
12
|
+
/** the content (lexeme) is referenced by the given name */
|
|
13
|
+
contentName: string;
|
|
14
|
+
/** the children are referenced by the given name */
|
|
15
|
+
childrenName: string;
|
|
16
|
+
/** Mapping from xml tag name to the real operation of the node */
|
|
17
|
+
tokenMap: TokenMap;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Default configuration to be used for the {@link XmlParserConfig}.
|
|
21
|
+
* <p>
|
|
22
|
+
* Note, that this does not include a sensible {@link XmlParserConfig#tokenMap}, as this must be provided by the corresponding
|
|
23
|
+
* shell environment.
|
|
24
|
+
*/
|
|
25
|
+
export declare const DEFAULT_XML_PARSER_CONFIG: XmlParserConfig;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_XML_PARSER_CONFIG = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Default configuration to be used for the {@link XmlParserConfig}.
|
|
6
|
+
* <p>
|
|
7
|
+
* Note, that this does not include a sensible {@link XmlParserConfig#tokenMap}, as this must be provided by the corresponding
|
|
8
|
+
* shell environment.
|
|
9
|
+
*/
|
|
10
|
+
exports.DEFAULT_XML_PARSER_CONFIG = {
|
|
11
|
+
attributeName: '@a',
|
|
12
|
+
contentName: '@v',
|
|
13
|
+
childrenName: '@c',
|
|
14
|
+
tokenMap: { /* this should not be used, but just so that we can omit null-checks */}
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { MergeableRecord } from '../../../../../util/objects';
|
|
2
|
+
import { DeepReadonly } from 'ts-essentials';
|
|
3
|
+
import { XmlParserConfig } from './config';
|
|
4
|
+
import { XmlParserHooks } from './hooks';
|
|
5
|
+
import { SourceRange } from '../../../../../util/range';
|
|
6
|
+
/**
|
|
7
|
+
* Contains all information populated and present during parsing and normalization of the R AST.
|
|
8
|
+
*/
|
|
9
|
+
export interface ParserData extends MergeableRecord {
|
|
10
|
+
/** @see XmlParserConfig */
|
|
11
|
+
readonly config: DeepReadonly<XmlParserConfig>;
|
|
12
|
+
/** @see XmlParserHooks */
|
|
13
|
+
readonly hooks: DeepReadonly<XmlParserHooks>;
|
|
14
|
+
/**
|
|
15
|
+
* The currently active source range during parsing, i.e. the full range of the current element.
|
|
16
|
+
*/
|
|
17
|
+
currentRange: SourceRange | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* The currently active lexeme during parsing, i.e. the full lexeme of the current element.
|
|
20
|
+
*/
|
|
21
|
+
currentLexeme: string | undefined;
|
|
22
|
+
}
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
import { NamedXmlBasedJson, XmlBasedJson } from './input-format';
|
|
2
|
+
import { RNumber, NoInfo, RBinaryOp, RComment, RForLoop, RFunctionCall, RIfThenElse, RNode, RRepeatLoop, RString, RUnaryOp, RWhileLoop, RSymbol, RLogical, BinaryOperatorFlavor, RParameter, RFunctionDefinition, RArgument, UnaryOperatorFlavor, RBreak, RNext, RAccess, RLineDirective, RPipe } from '../../model';
|
|
3
|
+
import { RNa } from '../../../values';
|
|
4
|
+
import { ParserData } from './data';
|
|
5
|
+
import { DeepReadonly, DeepRequired } from 'ts-essentials';
|
|
6
|
+
/** Denotes that if you return `undefined`, the parser will automatically take the original arguments (unchanged) */
|
|
7
|
+
type AutoIfOmit<T> = T | undefined | void;
|
|
8
|
+
/**
|
|
9
|
+
* Hooks for every action the parser does. They can process the object before and after the actual parsing.
|
|
10
|
+
*
|
|
11
|
+
* There are two main hooks:
|
|
12
|
+
* <ul>
|
|
13
|
+
* <li><strong>before:</strong> can transform the inputs to the function and is called before construction of the normalized ast. However, it can be called after initial checks are performed. </li>
|
|
14
|
+
* <li><strong>after:</strong> can transform the result of the function and is called after construction of the normalized ast. </li>
|
|
15
|
+
* </ul>
|
|
16
|
+
* Furthermore, for events that "try" to identify a structure, there is a third hook:
|
|
17
|
+
* <ul>
|
|
18
|
+
* <li><strong>unknown:</strong> is called if the structure could not be identified. </li>
|
|
19
|
+
* </ul>
|
|
20
|
+
*
|
|
21
|
+
* For those marked with {@link AutoIfOmit} you can return `undefined` to automatically take the original arguments (unchanged).
|
|
22
|
+
* <p>
|
|
23
|
+
* Use {@link executeHook} and {@link executeUnknownHook} to execute the hooks.
|
|
24
|
+
* <p>
|
|
25
|
+
* Please note, that there is no guarantee, that a hook is not using any other. For example, {@link tryNormalizeIfThen} is used by {@link tryNormalizeIfThenElse}.
|
|
26
|
+
*/
|
|
27
|
+
export interface XmlParserHooks {
|
|
28
|
+
values: {
|
|
29
|
+
/** {@link normalizeNumber} */
|
|
30
|
+
onNumber: {
|
|
31
|
+
before(data: ParserData, inputObj: XmlBasedJson): AutoIfOmit<XmlBasedJson>;
|
|
32
|
+
after(data: ParserData, result: RNumber | RLogical | RSymbol<NoInfo, typeof RNa>): AutoIfOmit<RNumber | RLogical | RSymbol<NoInfo, typeof RNa>>;
|
|
33
|
+
};
|
|
34
|
+
/** {@link parseString} */
|
|
35
|
+
onString: {
|
|
36
|
+
before(data: ParserData, inputObj: XmlBasedJson): AutoIfOmit<XmlBasedJson>;
|
|
37
|
+
after(data: ParserData, result: RString): AutoIfOmit<RString>;
|
|
38
|
+
};
|
|
39
|
+
/** {@link tryNormalizeSymbol} */
|
|
40
|
+
onSymbol: {
|
|
41
|
+
/**
|
|
42
|
+
* triggered if {@link tryNormalizeSymbol} could not determine the namespace and or symbol.
|
|
43
|
+
* Can emit non-symbol values easily due to special symbols like `T`.
|
|
44
|
+
*/
|
|
45
|
+
unknown(data: ParserData, inputObjs: NamedXmlBasedJson[]): AutoIfOmit<RSymbol | undefined>;
|
|
46
|
+
before(data: ParserData, inputObjs: NamedXmlBasedJson[]): AutoIfOmit<NamedXmlBasedJson[]>;
|
|
47
|
+
after(data: ParserData, result: RSymbol | undefined): AutoIfOmit<RSymbol | undefined>;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
/** {@link tryNormalizeAccess} */
|
|
51
|
+
onAccess: {
|
|
52
|
+
/**
|
|
53
|
+
* triggered if {@link tryNormalizeAccess} could not determine the access
|
|
54
|
+
*/
|
|
55
|
+
unknown(data: ParserData, inputObjs: NamedXmlBasedJson[]): AutoIfOmit<RAccess | undefined>;
|
|
56
|
+
before(data: ParserData, inputObjs: NamedXmlBasedJson[]): AutoIfOmit<NamedXmlBasedJson[]>;
|
|
57
|
+
after(data: ParserData, result: RAccess): AutoIfOmit<RAccess>;
|
|
58
|
+
};
|
|
59
|
+
other: {
|
|
60
|
+
/** {@link normalizeComment} */
|
|
61
|
+
onComment: {
|
|
62
|
+
before(data: ParserData, inputObj: XmlBasedJson): AutoIfOmit<XmlBasedJson>;
|
|
63
|
+
after(data: ParserData, result: RComment): AutoIfOmit<RComment>;
|
|
64
|
+
};
|
|
65
|
+
/** {@link normalizeLineDirective} */
|
|
66
|
+
onLineDirective: {
|
|
67
|
+
before(data: ParserData, inputObj: XmlBasedJson): AutoIfOmit<XmlBasedJson>;
|
|
68
|
+
after(data: ParserData, result: RLineDirective | RComment): AutoIfOmit<RLineDirective | RComment>;
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
operators: {
|
|
72
|
+
/** {@link tryNormalizeBinary}, includes {@link RPipe} and {@link RFunctionCall} in case of special infix binary operations */
|
|
73
|
+
onBinary: {
|
|
74
|
+
/** triggered if {@link tryNormalizeBinary} could not find a matching operator, you probably still want to return `undefined` */
|
|
75
|
+
unknown(data: ParserData, input: {
|
|
76
|
+
lhs: NamedXmlBasedJson;
|
|
77
|
+
operator: NamedXmlBasedJson;
|
|
78
|
+
rhs: NamedXmlBasedJson;
|
|
79
|
+
}): AutoIfOmit<RNode | undefined>;
|
|
80
|
+
before(data: ParserData, input: {
|
|
81
|
+
flavor: BinaryOperatorFlavor | 'special' | 'pipe';
|
|
82
|
+
lhs: NamedXmlBasedJson;
|
|
83
|
+
operator: NamedXmlBasedJson;
|
|
84
|
+
rhs: NamedXmlBasedJson;
|
|
85
|
+
}): AutoIfOmit<{
|
|
86
|
+
flavor: BinaryOperatorFlavor | 'special' | 'pipe';
|
|
87
|
+
lhs: NamedXmlBasedJson;
|
|
88
|
+
operator: NamedXmlBasedJson;
|
|
89
|
+
rhs: NamedXmlBasedJson;
|
|
90
|
+
}>;
|
|
91
|
+
after(data: ParserData, result: RFunctionCall | RBinaryOp | RPipe): AutoIfOmit<RFunctionCall | RBinaryOp | RPipe>;
|
|
92
|
+
};
|
|
93
|
+
/** {@link tryNormalizeUnary} */
|
|
94
|
+
onUnary: {
|
|
95
|
+
/** triggered if {@link tryNormalizeUnary} could not find a matching operator, you probably still want to return `undefined` */
|
|
96
|
+
unknown(data: ParserData, input: {
|
|
97
|
+
operator: NamedXmlBasedJson;
|
|
98
|
+
operand: NamedXmlBasedJson;
|
|
99
|
+
}): AutoIfOmit<RNode | undefined>;
|
|
100
|
+
before(data: ParserData, input: {
|
|
101
|
+
flavor: UnaryOperatorFlavor;
|
|
102
|
+
operator: NamedXmlBasedJson;
|
|
103
|
+
operand: NamedXmlBasedJson;
|
|
104
|
+
}): AutoIfOmit<{
|
|
105
|
+
flavor: UnaryOperatorFlavor;
|
|
106
|
+
operator: NamedXmlBasedJson;
|
|
107
|
+
operand: NamedXmlBasedJson;
|
|
108
|
+
}>;
|
|
109
|
+
after(data: ParserData, result: RUnaryOp): AutoIfOmit<RUnaryOp>;
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
loops: {
|
|
113
|
+
/** {@link tryNormalizeFor} */
|
|
114
|
+
onForLoop: {
|
|
115
|
+
/** triggered if {@link tryNormalizeFor} could not detect a for-loop, you probably still want to return `undefined` */
|
|
116
|
+
unknown(data: ParserData, input: {
|
|
117
|
+
forToken: NamedXmlBasedJson;
|
|
118
|
+
condition: NamedXmlBasedJson;
|
|
119
|
+
body: NamedXmlBasedJson;
|
|
120
|
+
}): AutoIfOmit<RForLoop | undefined>;
|
|
121
|
+
before(data: ParserData, input: {
|
|
122
|
+
forToken: NamedXmlBasedJson;
|
|
123
|
+
condition: NamedXmlBasedJson;
|
|
124
|
+
body: NamedXmlBasedJson;
|
|
125
|
+
}): AutoIfOmit<{
|
|
126
|
+
forToken: NamedXmlBasedJson;
|
|
127
|
+
condition: NamedXmlBasedJson;
|
|
128
|
+
body: NamedXmlBasedJson;
|
|
129
|
+
}>;
|
|
130
|
+
after(data: ParserData, result: RForLoop): AutoIfOmit<RForLoop>;
|
|
131
|
+
};
|
|
132
|
+
/** {@link tryNormalizeRepeat} */
|
|
133
|
+
onRepeatLoop: {
|
|
134
|
+
/** triggered if {@link tryNormalizeRepeat} could not detect a repeat-loop, you probably still want to return `undefined` */
|
|
135
|
+
unknown(data: ParserData, input: {
|
|
136
|
+
repeatToken: NamedXmlBasedJson;
|
|
137
|
+
body: NamedXmlBasedJson;
|
|
138
|
+
}): AutoIfOmit<RRepeatLoop | undefined>;
|
|
139
|
+
before(data: ParserData, input: {
|
|
140
|
+
repeatToken: NamedXmlBasedJson;
|
|
141
|
+
body: NamedXmlBasedJson;
|
|
142
|
+
}): AutoIfOmit<{
|
|
143
|
+
repeatToken: NamedXmlBasedJson;
|
|
144
|
+
body: NamedXmlBasedJson;
|
|
145
|
+
}>;
|
|
146
|
+
after(data: ParserData, result: RRepeatLoop): AutoIfOmit<RRepeatLoop>;
|
|
147
|
+
};
|
|
148
|
+
/** {@link tryNormalizeWhile} */
|
|
149
|
+
onWhileLoop: {
|
|
150
|
+
/** triggered if {@link tryNormalizeWhile} could not detect a while-loop, you probably still want to return `undefined` */
|
|
151
|
+
unknown(data: ParserData, input: {
|
|
152
|
+
whileToken: NamedXmlBasedJson;
|
|
153
|
+
leftParen: NamedXmlBasedJson;
|
|
154
|
+
condition: NamedXmlBasedJson;
|
|
155
|
+
rightParen: NamedXmlBasedJson;
|
|
156
|
+
body: NamedXmlBasedJson;
|
|
157
|
+
}): AutoIfOmit<RWhileLoop | undefined>;
|
|
158
|
+
before(data: ParserData, input: {
|
|
159
|
+
whileToken: NamedXmlBasedJson;
|
|
160
|
+
leftParen: NamedXmlBasedJson;
|
|
161
|
+
condition: NamedXmlBasedJson;
|
|
162
|
+
rightParen: NamedXmlBasedJson;
|
|
163
|
+
body: NamedXmlBasedJson;
|
|
164
|
+
}): AutoIfOmit<{
|
|
165
|
+
whileToken: NamedXmlBasedJson;
|
|
166
|
+
leftParen: NamedXmlBasedJson;
|
|
167
|
+
condition: NamedXmlBasedJson;
|
|
168
|
+
rightParen: NamedXmlBasedJson;
|
|
169
|
+
body: NamedXmlBasedJson;
|
|
170
|
+
}>;
|
|
171
|
+
after(data: ParserData, result: RWhileLoop): AutoIfOmit<RWhileLoop>;
|
|
172
|
+
};
|
|
173
|
+
/** {@link normalizeBreak} */
|
|
174
|
+
onBreak: {
|
|
175
|
+
before(data: ParserData, input: XmlBasedJson): AutoIfOmit<XmlBasedJson>;
|
|
176
|
+
after(data: ParserData, result: RBreak): AutoIfOmit<RBreak>;
|
|
177
|
+
};
|
|
178
|
+
onNext: {
|
|
179
|
+
before(data: ParserData, input: XmlBasedJson): AutoIfOmit<XmlBasedJson>;
|
|
180
|
+
after(data: ParserData, result: RNext): AutoIfOmit<RNext>;
|
|
181
|
+
};
|
|
182
|
+
};
|
|
183
|
+
functions: {
|
|
184
|
+
/** {@link tryNormalizeFunctionDefinition} */
|
|
185
|
+
onFunctionDefinition: {
|
|
186
|
+
/** triggered if {@link tryNormalizeFunctionDefinition} could not detect a function definition, you probably still want to return `undefined` */
|
|
187
|
+
unknown(data: ParserData, mappedWithName: NamedXmlBasedJson[]): AutoIfOmit<RFunctionDefinition | undefined>;
|
|
188
|
+
before(data: ParserData, mappedWithName: NamedXmlBasedJson[]): AutoIfOmit<NamedXmlBasedJson[]>;
|
|
189
|
+
after(data: ParserData, result: RFunctionDefinition): AutoIfOmit<RFunctionDefinition>;
|
|
190
|
+
};
|
|
191
|
+
/** {@link tryNormalizeParameter} */
|
|
192
|
+
onParameter: {
|
|
193
|
+
/** triggered if {@link tryNormalizeParameter} could not detect a parameter, you probably still want to return `undefined` */
|
|
194
|
+
unknown(data: ParserData, mappedWithName: NamedXmlBasedJson[]): AutoIfOmit<RParameter | undefined>;
|
|
195
|
+
before(data: ParserData, mappedWithName: NamedXmlBasedJson[]): AutoIfOmit<NamedXmlBasedJson[]>;
|
|
196
|
+
after(data: ParserData, result: RParameter): AutoIfOmit<RParameter>;
|
|
197
|
+
};
|
|
198
|
+
/** {@link tryNormalizeFunctionCall} */
|
|
199
|
+
onFunctionCall: {
|
|
200
|
+
/** triggered if {@link tryNormalizeFunctionCall} could not detect a function call, you probably still want to return `undefined` */
|
|
201
|
+
unknown(data: ParserData, mappedWithName: NamedXmlBasedJson[]): AutoIfOmit<RFunctionCall | RNext | RBreak | undefined>;
|
|
202
|
+
before(data: ParserData, mappedWithName: NamedXmlBasedJson[]): AutoIfOmit<NamedXmlBasedJson[]>;
|
|
203
|
+
after(data: ParserData, result: RFunctionCall | RNext | RBreak): AutoIfOmit<RFunctionCall | RNext | RBreak>;
|
|
204
|
+
};
|
|
205
|
+
/** {@link tryToNormalizeArgument} */
|
|
206
|
+
onArgument: {
|
|
207
|
+
/** triggered if {@link tryToNormalizeArgument} could not detect an argument, you probably still want to return `undefined` */
|
|
208
|
+
unknown(data: ParserData, mappedWithName: NamedXmlBasedJson[]): AutoIfOmit<RArgument | undefined>;
|
|
209
|
+
before(data: ParserData, mappedWithName: NamedXmlBasedJson[]): AutoIfOmit<NamedXmlBasedJson[]>;
|
|
210
|
+
after(data: ParserData, result: RArgument): AutoIfOmit<RArgument>;
|
|
211
|
+
};
|
|
212
|
+
};
|
|
213
|
+
expression: {
|
|
214
|
+
/** {@link normalizeExpression} */
|
|
215
|
+
onExpression: {
|
|
216
|
+
/** *Warning:* can be a function call/definition as well, is not known when issuing before! */
|
|
217
|
+
before(data: ParserData, inputObj: XmlBasedJson): AutoIfOmit<XmlBasedJson>;
|
|
218
|
+
after(data: ParserData, result: RNode): AutoIfOmit<RNode>;
|
|
219
|
+
};
|
|
220
|
+
};
|
|
221
|
+
control: {
|
|
222
|
+
/** {@link tryNormalizeIfThen}, triggered by {@link onIfThenElse} as well */
|
|
223
|
+
onIfThen: {
|
|
224
|
+
/** triggered if {@link tryNormalizeIfThen} could not detect an if-then, you probably still want to return `undefined` */
|
|
225
|
+
unknown(data: ParserData, tokens: [
|
|
226
|
+
ifToken: NamedXmlBasedJson,
|
|
227
|
+
leftParen: NamedXmlBasedJson,
|
|
228
|
+
condition: NamedXmlBasedJson,
|
|
229
|
+
rightParen: NamedXmlBasedJson,
|
|
230
|
+
then: NamedXmlBasedJson
|
|
231
|
+
]): AutoIfOmit<RIfThenElse | undefined>;
|
|
232
|
+
before(data: ParserData, tokens: [
|
|
233
|
+
ifToken: NamedXmlBasedJson,
|
|
234
|
+
leftParen: NamedXmlBasedJson,
|
|
235
|
+
condition: NamedXmlBasedJson,
|
|
236
|
+
rightParen: NamedXmlBasedJson,
|
|
237
|
+
then: NamedXmlBasedJson
|
|
238
|
+
]): AutoIfOmit<[
|
|
239
|
+
ifToken: NamedXmlBasedJson,
|
|
240
|
+
leftParen: NamedXmlBasedJson,
|
|
241
|
+
condition: NamedXmlBasedJson,
|
|
242
|
+
rightParen: NamedXmlBasedJson,
|
|
243
|
+
then: NamedXmlBasedJson
|
|
244
|
+
]>;
|
|
245
|
+
after(data: ParserData, result: RIfThenElse): AutoIfOmit<RIfThenElse>;
|
|
246
|
+
};
|
|
247
|
+
/** {@link tryNormalizeIfThenElse}, triggers {@link onIfThen} */
|
|
248
|
+
onIfThenElse: {
|
|
249
|
+
/** triggered if {@link tryNormalizeIfThenElse} could not detect an if-then-else, you probably still want to return `undefined`, this is probably called as a consequence of the unknown hook of if-then */
|
|
250
|
+
unknown(data: ParserData, tokens: [
|
|
251
|
+
ifToken: NamedXmlBasedJson,
|
|
252
|
+
leftParen: NamedXmlBasedJson,
|
|
253
|
+
condition: NamedXmlBasedJson,
|
|
254
|
+
rightParen: NamedXmlBasedJson,
|
|
255
|
+
then: NamedXmlBasedJson,
|
|
256
|
+
elseToken: NamedXmlBasedJson,
|
|
257
|
+
elseBlock: NamedXmlBasedJson
|
|
258
|
+
]): AutoIfOmit<RIfThenElse | undefined>;
|
|
259
|
+
/** be aware, that the if-then part triggers another hook! */
|
|
260
|
+
before(data: ParserData, tokens: [
|
|
261
|
+
ifToken: NamedXmlBasedJson,
|
|
262
|
+
leftParen: NamedXmlBasedJson,
|
|
263
|
+
condition: NamedXmlBasedJson,
|
|
264
|
+
rightParen: NamedXmlBasedJson,
|
|
265
|
+
then: NamedXmlBasedJson,
|
|
266
|
+
elseToken: NamedXmlBasedJson,
|
|
267
|
+
elseBlock: NamedXmlBasedJson
|
|
268
|
+
]): AutoIfOmit<[
|
|
269
|
+
ifToken: NamedXmlBasedJson,
|
|
270
|
+
leftParen: NamedXmlBasedJson,
|
|
271
|
+
condition: NamedXmlBasedJson,
|
|
272
|
+
rightParen: NamedXmlBasedJson,
|
|
273
|
+
then: NamedXmlBasedJson,
|
|
274
|
+
elseToken: NamedXmlBasedJson,
|
|
275
|
+
elseBlock: NamedXmlBasedJson
|
|
276
|
+
]>;
|
|
277
|
+
after(data: ParserData, result: RIfThenElse): AutoIfOmit<RIfThenElse>;
|
|
278
|
+
};
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* simple (rather type-wise unsafe ^^) function you can use to execute hooks and deal with {@link AutoIfOmit}
|
|
283
|
+
*
|
|
284
|
+
* @see executeUnknownHook
|
|
285
|
+
*/
|
|
286
|
+
export declare function executeHook<T, R>(hook: (data: ParserData, input: T) => AutoIfOmit<R>, data: ParserData, input: T): R;
|
|
287
|
+
/**
|
|
288
|
+
* @see executeHook
|
|
289
|
+
*/
|
|
290
|
+
export declare function executeUnknownHook<T, R>(hook: (data: ParserData, input: T) => AutoIfOmit<R>, data: ParserData, input: T): Exclude<AutoIfOmit<R>, void>;
|
|
291
|
+
export declare const DEFAULT_PARSER_HOOKS: DeepReadonly<DeepRequired<XmlParserHooks>>;
|
|
292
|
+
export {};
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_PARSER_HOOKS = exports.executeUnknownHook = exports.executeHook = void 0;
|
|
4
|
+
/* eslint-disable -- hooks are unsafe */
|
|
5
|
+
/**
|
|
6
|
+
* simple (rather type-wise unsafe ^^) function you can use to execute hooks and deal with {@link AutoIfOmit}
|
|
7
|
+
*
|
|
8
|
+
* @see executeUnknownHook
|
|
9
|
+
*/
|
|
10
|
+
function executeHook(hook, data, input) {
|
|
11
|
+
const result = hook(data, input);
|
|
12
|
+
if (result === undefined) {
|
|
13
|
+
return input;
|
|
14
|
+
}
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
exports.executeHook = executeHook;
|
|
18
|
+
/**
|
|
19
|
+
* @see executeHook
|
|
20
|
+
*/
|
|
21
|
+
function executeUnknownHook(hook, data, input) {
|
|
22
|
+
return hook(data, input);
|
|
23
|
+
}
|
|
24
|
+
exports.executeUnknownHook = executeUnknownHook;
|
|
25
|
+
/* eslint-enable */
|
|
26
|
+
const doNothing = () => undefined;
|
|
27
|
+
exports.DEFAULT_PARSER_HOOKS = {
|
|
28
|
+
values: {
|
|
29
|
+
onNumber: {
|
|
30
|
+
before: doNothing,
|
|
31
|
+
after: doNothing
|
|
32
|
+
},
|
|
33
|
+
onString: {
|
|
34
|
+
before: doNothing,
|
|
35
|
+
after: doNothing
|
|
36
|
+
},
|
|
37
|
+
onSymbol: {
|
|
38
|
+
unknown: doNothing,
|
|
39
|
+
before: doNothing,
|
|
40
|
+
after: doNothing
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
onAccess: {
|
|
44
|
+
unknown: doNothing,
|
|
45
|
+
before: doNothing,
|
|
46
|
+
after: doNothing
|
|
47
|
+
},
|
|
48
|
+
other: {
|
|
49
|
+
onComment: {
|
|
50
|
+
before: doNothing,
|
|
51
|
+
after: doNothing
|
|
52
|
+
},
|
|
53
|
+
onLineDirective: {
|
|
54
|
+
before: doNothing,
|
|
55
|
+
after: doNothing
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
control: {
|
|
59
|
+
onIfThen: {
|
|
60
|
+
unknown: doNothing,
|
|
61
|
+
before: doNothing,
|
|
62
|
+
after: doNothing
|
|
63
|
+
},
|
|
64
|
+
onIfThenElse: {
|
|
65
|
+
unknown: doNothing,
|
|
66
|
+
before: doNothing,
|
|
67
|
+
after: doNothing
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
loops: {
|
|
71
|
+
onForLoop: {
|
|
72
|
+
unknown: doNothing,
|
|
73
|
+
before: doNothing,
|
|
74
|
+
after: doNothing
|
|
75
|
+
},
|
|
76
|
+
onRepeatLoop: {
|
|
77
|
+
unknown: doNothing,
|
|
78
|
+
before: doNothing,
|
|
79
|
+
after: doNothing
|
|
80
|
+
},
|
|
81
|
+
onWhileLoop: {
|
|
82
|
+
unknown: doNothing,
|
|
83
|
+
before: doNothing,
|
|
84
|
+
after: doNothing
|
|
85
|
+
},
|
|
86
|
+
onBreak: {
|
|
87
|
+
before: doNothing,
|
|
88
|
+
after: doNothing
|
|
89
|
+
},
|
|
90
|
+
onNext: {
|
|
91
|
+
before: doNothing,
|
|
92
|
+
after: doNothing
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
operators: {
|
|
96
|
+
onBinary: {
|
|
97
|
+
unknown: doNothing,
|
|
98
|
+
before: doNothing,
|
|
99
|
+
after: doNothing
|
|
100
|
+
},
|
|
101
|
+
onUnary: {
|
|
102
|
+
unknown: doNothing,
|
|
103
|
+
before: doNothing,
|
|
104
|
+
after: doNothing
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
functions: {
|
|
108
|
+
onFunctionDefinition: {
|
|
109
|
+
unknown: doNothing,
|
|
110
|
+
before: doNothing,
|
|
111
|
+
after: doNothing
|
|
112
|
+
},
|
|
113
|
+
onParameter: {
|
|
114
|
+
unknown: doNothing,
|
|
115
|
+
before: doNothing,
|
|
116
|
+
after: doNothing
|
|
117
|
+
},
|
|
118
|
+
onFunctionCall: {
|
|
119
|
+
unknown: doNothing,
|
|
120
|
+
before: doNothing,
|
|
121
|
+
after: doNothing
|
|
122
|
+
},
|
|
123
|
+
onArgument: {
|
|
124
|
+
unknown: doNothing,
|
|
125
|
+
before: doNothing,
|
|
126
|
+
after: doNothing
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
expression: {
|
|
130
|
+
onExpression: {
|
|
131
|
+
before: doNothing,
|
|
132
|
+
after: doNothing
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
//# sourceMappingURL=hooks.js.map
|