@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,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tryNormalizeWhile = void 0;
|
|
4
|
+
const input_format_1 = require("../../input-format");
|
|
5
|
+
const meta_1 = require("../meta");
|
|
6
|
+
const parser_1 = require("../../parser");
|
|
7
|
+
const structure_1 = require("../structure");
|
|
8
|
+
const hooks_1 = require("../../hooks");
|
|
9
|
+
function tryNormalizeWhile(data, whileToken, leftParen, condition, rightParen, body) {
|
|
10
|
+
if (whileToken.name !== "WHILE" /* RawRType.While */) {
|
|
11
|
+
parser_1.parseLog.debug('encountered non-while token for supposed while-loop structure');
|
|
12
|
+
return (0, hooks_1.executeUnknownHook)(data.hooks.loops.onWhileLoop.unknown, data, { whileToken, leftParen, condition, rightParen, body });
|
|
13
|
+
}
|
|
14
|
+
else if (leftParen.name !== "(" /* RawRType.ParenLeft */) {
|
|
15
|
+
throw new input_format_1.XmlParseError(`expected left-parenthesis for while but found ${JSON.stringify(leftParen)}`);
|
|
16
|
+
}
|
|
17
|
+
else if (rightParen.name !== ")" /* RawRType.ParenRight */) {
|
|
18
|
+
throw new input_format_1.XmlParseError(`expected right-parenthesis for while but found ${JSON.stringify(rightParen)}`);
|
|
19
|
+
}
|
|
20
|
+
parser_1.parseLog.debug('trying to parse while-loop');
|
|
21
|
+
const parsedCondition = (0, structure_1.tryNormalizeSingleNode)(data, condition);
|
|
22
|
+
const parseBody = (0, structure_1.tryNormalizeSingleNode)(data, body);
|
|
23
|
+
if (parsedCondition.type === "RDelimiter" /* RType.Delimiter */ || parseBody.type === "RDelimiter" /* RType.Delimiter */) {
|
|
24
|
+
throw new input_format_1.XmlParseError(`unexpected under-sided while-loop, received ${JSON.stringify([
|
|
25
|
+
parsedCondition,
|
|
26
|
+
parseBody,
|
|
27
|
+
])} for ${JSON.stringify([whileToken, condition, body])}`);
|
|
28
|
+
}
|
|
29
|
+
const { location, content } = (0, meta_1.retrieveMetaStructure)(data.config, whileToken.content);
|
|
30
|
+
const result = {
|
|
31
|
+
type: "RWhileLoop" /* RType.WhileLoop */,
|
|
32
|
+
condition: parsedCondition,
|
|
33
|
+
body: (0, meta_1.ensureExpressionList)(parseBody),
|
|
34
|
+
lexeme: content,
|
|
35
|
+
location,
|
|
36
|
+
info: {
|
|
37
|
+
fullRange: data.currentRange,
|
|
38
|
+
additionalTokens: [],
|
|
39
|
+
fullLexeme: data.currentLexeme
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
return (0, hooks_1.executeHook)(data.hooks.loops.onWhileLoop.after, data, result);
|
|
43
|
+
}
|
|
44
|
+
exports.tryNormalizeWhile = tryNormalizeWhile;
|
|
45
|
+
//# sourceMappingURL=while.js.map
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { NamedXmlBasedJson, XmlBasedJson } from '../input-format';
|
|
2
|
+
import { SourceRange } from '../../../../../../util/range';
|
|
3
|
+
import { XmlParserConfig } from '../config';
|
|
4
|
+
import { RawRType, RExpressionList, RNode } from '../../../model';
|
|
5
|
+
/**
|
|
6
|
+
* if the passed object is an array with only one element, remove the array wrapper
|
|
7
|
+
*/
|
|
8
|
+
export declare function objectWithArrUnwrap(obj: XmlBasedJson[] | XmlBasedJson): XmlBasedJson;
|
|
9
|
+
/**
|
|
10
|
+
* given a xml element, extract the source location of the corresponding element in the R-ast
|
|
11
|
+
*/
|
|
12
|
+
export declare function extractLocation(ast: XmlBasedJson): SourceRange;
|
|
13
|
+
/**
|
|
14
|
+
* The json object that represents the input xml contains various meta-information.
|
|
15
|
+
* This function extracts the meta-information and returns it.
|
|
16
|
+
*
|
|
17
|
+
* @param config - The configuration of the parser to use to retrieve the corresponding name fields
|
|
18
|
+
* @param obj - The json object to extract the meta-information from
|
|
19
|
+
*/
|
|
20
|
+
export declare function retrieveMetaStructure(config: XmlParserConfig, obj: XmlBasedJson): {
|
|
21
|
+
/** the obj passed in, but potentially without surrounding array wrappers (see {@link objectWithArrUnwrap}) */
|
|
22
|
+
unwrappedObj: XmlBasedJson;
|
|
23
|
+
/** location information of the corresponding R-ast element */
|
|
24
|
+
location: SourceRange;
|
|
25
|
+
content: string;
|
|
26
|
+
};
|
|
27
|
+
export declare function revertTokenReplacement(tokenMap: XmlParserConfig['tokenMap'], token: string): string;
|
|
28
|
+
export declare function assureTokenType(tokenMap: XmlParserConfig['tokenMap'], obj: XmlBasedJson, expectedName: RawRType): void;
|
|
29
|
+
/**
|
|
30
|
+
* Extract the token-type of the given object. This is based on the knowledge, that all json objects created
|
|
31
|
+
* from the R xml have a name attached.
|
|
32
|
+
*
|
|
33
|
+
* @param tokenMap - used to revert token types (i.e., revert `xmlparsedata`)
|
|
34
|
+
* @param content - the json object to extract the token-type from
|
|
35
|
+
*/
|
|
36
|
+
export declare function getTokenType(tokenMap: XmlParserConfig['tokenMap'], content: XmlBasedJson): RawRType;
|
|
37
|
+
export declare function getWithTokenType(tokenMap: XmlParserConfig['tokenMap'], obj: XmlBasedJson[]): {
|
|
38
|
+
name: RawRType;
|
|
39
|
+
content: XmlBasedJson;
|
|
40
|
+
}[];
|
|
41
|
+
export declare function retrieveOpName(config: XmlParserConfig, operator: NamedXmlBasedJson): string;
|
|
42
|
+
/**
|
|
43
|
+
* Ensure that the first child is completely before the second child.
|
|
44
|
+
*
|
|
45
|
+
* @param config - the configuration of the parser to use to retrieve the corresponding name fields
|
|
46
|
+
* @param first - the first child which should be the lhs
|
|
47
|
+
* @param second - the second child which should be the rhs
|
|
48
|
+
*/
|
|
49
|
+
export declare function ensureChildrenAreLhsAndRhsOrdered(config: XmlParserConfig, first: XmlBasedJson, second: XmlBasedJson): void;
|
|
50
|
+
export declare function ensureExpressionList<Info>(node: RNode<Info>): RExpressionList<Info>;
|
|
@@ -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
|
+
/**
|
|
8
|
+
* if the passed object is an array with only one element, remove the array wrapper
|
|
9
|
+
*/
|
|
10
|
+
function objectWithArrUnwrap(obj) {
|
|
11
|
+
if (Array.isArray(obj)) {
|
|
12
|
+
if (obj.length !== 1) {
|
|
13
|
+
throw new input_format_1.XmlParseError(`expected only one element in the wrapped array, yet received ${JSON.stringify(obj)}`);
|
|
14
|
+
}
|
|
15
|
+
return obj[0];
|
|
16
|
+
}
|
|
17
|
+
else if (typeof obj === 'object') {
|
|
18
|
+
return obj;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
throw new input_format_1.XmlParseError(`expected array or object, yet received ${JSON.stringify(obj)}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.objectWithArrUnwrap = objectWithArrUnwrap;
|
|
25
|
+
/**
|
|
26
|
+
* given a xml element, extract the source location of the corresponding element in the R-ast
|
|
27
|
+
*/
|
|
28
|
+
function extractLocation(ast) {
|
|
29
|
+
const { line1, col1, line2, col2 } = (0, input_format_1.getKeysGuarded)(ast, 'line1', 'col1', 'line2', 'col2');
|
|
30
|
+
return (0, range_1.rangeFrom)(line1, col1, line2, 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.attributeName];
|
|
43
|
+
const content = obj[config.contentName] ?? '';
|
|
44
|
+
(0, assert_1.guard)(attributes !== undefined, () => `expected attributes to be defined for ${JSON.stringify(obj)}`);
|
|
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.getKeysGuarded)(content, '#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.contentName];
|
|
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.attributeName]);
|
|
99
|
+
const secondOtherLoc = extractLocation(second[config.attributeName]);
|
|
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,8 @@
|
|
|
1
|
+
import { NamedXmlBasedJson } from '../../input-format';
|
|
2
|
+
import { ParserData } from '../../data';
|
|
3
|
+
import { RNode } from '../../../../model';
|
|
4
|
+
/**
|
|
5
|
+
* Parsing binary operations includes the pipe, even though the produced PIPE construct is not a binary operation,
|
|
6
|
+
* to ensure it is handled separately from the others (especially in the combination of a pipe bind)
|
|
7
|
+
*/
|
|
8
|
+
export declare function tryNormalizeBinary(data: ParserData, lhs: NamedXmlBasedJson, operator: NamedXmlBasedJson, rhs: NamedXmlBasedJson): RNode | undefined;
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tryNormalizeBinary = void 0;
|
|
4
|
+
const input_format_1 = require("../../input-format");
|
|
5
|
+
const parser_1 = require("../../parser");
|
|
6
|
+
const meta_1 = require("../meta");
|
|
7
|
+
const special_1 = require("./special");
|
|
8
|
+
const structure_1 = require("../structure");
|
|
9
|
+
const model_1 = require("../../../../model");
|
|
10
|
+
const hooks_1 = require("../../hooks");
|
|
11
|
+
const assert_1 = require("../../../../../../../util/assert");
|
|
12
|
+
/**
|
|
13
|
+
* Parsing binary operations includes the pipe, even though the produced PIPE construct is not a binary operation,
|
|
14
|
+
* to ensure it is handled separately from the others (especially in the combination of a pipe bind)
|
|
15
|
+
*/
|
|
16
|
+
function tryNormalizeBinary(data, lhs, operator, rhs) {
|
|
17
|
+
parser_1.parseLog.trace(`binary op for ${lhs.name} [${operator.name}] ${rhs.name}`);
|
|
18
|
+
let flavor;
|
|
19
|
+
if ("SPECIAL" /* RawRType.Special */ === operator.name) {
|
|
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';
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
return (0, hooks_1.executeUnknownHook)(data.hooks.operators.onBinary.unknown, data, { lhs, operator, rhs });
|
|
42
|
+
}
|
|
43
|
+
return parseBinaryOp(data, flavor, lhs, operator, rhs);
|
|
44
|
+
}
|
|
45
|
+
exports.tryNormalizeBinary = tryNormalizeBinary;
|
|
46
|
+
function parseBinaryOp(data, flavor, lhs, operator, rhs) {
|
|
47
|
+
parser_1.parseLog.debug(`[binary op] trying to parse ${flavor}`);
|
|
48
|
+
({ flavor, lhs, rhs, operator } = (0, hooks_1.executeHook)(data.hooks.operators.onBinary.before, data, { flavor, lhs, operator, rhs }));
|
|
49
|
+
(0, meta_1.ensureChildrenAreLhsAndRhsOrdered)(data.config, lhs.content, rhs.content);
|
|
50
|
+
let parsedLhs = (0, structure_1.tryNormalizeSingleNode)(data, lhs);
|
|
51
|
+
let parsedRhs = (0, structure_1.tryNormalizeSingleNode)(data, rhs);
|
|
52
|
+
if (parsedLhs.type === "RDelimiter" /* RType.Delimiter */ || parsedRhs.type === "RDelimiter" /* RType.Delimiter */) {
|
|
53
|
+
throw new input_format_1.XmlParseError(`unexpected under-sided binary op, received ${JSON.stringify([parsedLhs, parsedRhs])} for ${JSON.stringify([lhs, operator, rhs])}`);
|
|
54
|
+
}
|
|
55
|
+
const operationName = (0, meta_1.retrieveOpName)(data.config, operator);
|
|
56
|
+
// special support for strings in assignments
|
|
57
|
+
if (flavor === 'assignment') {
|
|
58
|
+
[parsedLhs, parsedRhs] = processLhsAndRhsForAssignment(data, operationName, parsedLhs, parsedRhs);
|
|
59
|
+
}
|
|
60
|
+
const { location, content } = (0, meta_1.retrieveMetaStructure)(data.config, operator.content);
|
|
61
|
+
if (flavor === 'special') {
|
|
62
|
+
flavor = (0, special_1.identifySpecialOp)(content);
|
|
63
|
+
}
|
|
64
|
+
if (flavor === 'special') {
|
|
65
|
+
(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
|
+
// parse as infix function call!
|
|
67
|
+
const result = {
|
|
68
|
+
type: "RFunctionCall" /* RType.FunctionCall */,
|
|
69
|
+
flavor: 'named',
|
|
70
|
+
infixSpecial: true,
|
|
71
|
+
lexeme: data.currentLexeme ?? content,
|
|
72
|
+
location,
|
|
73
|
+
functionName: {
|
|
74
|
+
type: "RSymbol" /* RType.Symbol */,
|
|
75
|
+
location,
|
|
76
|
+
lexeme: content,
|
|
77
|
+
content,
|
|
78
|
+
namespace: undefined,
|
|
79
|
+
info: {}
|
|
80
|
+
},
|
|
81
|
+
arguments: [
|
|
82
|
+
{
|
|
83
|
+
type: "RArgument" /* RType.Argument */,
|
|
84
|
+
location: parsedLhs.location,
|
|
85
|
+
value: parsedLhs,
|
|
86
|
+
name: undefined,
|
|
87
|
+
lexeme: parsedLhs.lexeme,
|
|
88
|
+
info: {}
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
type: "RArgument" /* RType.Argument */,
|
|
92
|
+
location: parsedRhs.location,
|
|
93
|
+
value: parsedRhs,
|
|
94
|
+
name: undefined,
|
|
95
|
+
lexeme: parsedRhs.lexeme,
|
|
96
|
+
info: {}
|
|
97
|
+
}
|
|
98
|
+
],
|
|
99
|
+
info: {}
|
|
100
|
+
};
|
|
101
|
+
return (0, hooks_1.executeHook)(data.hooks.operators.onBinary.after, data, result);
|
|
102
|
+
}
|
|
103
|
+
let result;
|
|
104
|
+
if (flavor === 'pipe') {
|
|
105
|
+
(0, assert_1.guard)(parsedLhs.location !== undefined, () => `pipe lhs must have a location, but ${JSON.stringify(parsedLhs)})`);
|
|
106
|
+
(0, assert_1.guard)(parsedLhs.lexeme !== undefined, () => `pipe lhs must have a full lexeme, but ${JSON.stringify(parsedLhs)})`);
|
|
107
|
+
result = {
|
|
108
|
+
type: "RPipe" /* RType.Pipe */,
|
|
109
|
+
location,
|
|
110
|
+
lhs: {
|
|
111
|
+
type: "RArgument" /* RType.Argument */,
|
|
112
|
+
location: parsedLhs.location,
|
|
113
|
+
value: parsedLhs,
|
|
114
|
+
name: undefined,
|
|
115
|
+
lexeme: parsedLhs.lexeme,
|
|
116
|
+
info: {}
|
|
117
|
+
},
|
|
118
|
+
rhs: parsedRhs,
|
|
119
|
+
lexeme: content,
|
|
120
|
+
info: {
|
|
121
|
+
fullRange: data.currentRange,
|
|
122
|
+
additionalTokens: [],
|
|
123
|
+
fullLexeme: data.currentLexeme
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
result = {
|
|
129
|
+
type: "RBinaryOp" /* RType.BinaryOp */,
|
|
130
|
+
flavor,
|
|
131
|
+
location,
|
|
132
|
+
lhs: parsedLhs,
|
|
133
|
+
rhs: parsedRhs,
|
|
134
|
+
operator: operationName,
|
|
135
|
+
lexeme: content,
|
|
136
|
+
info: {
|
|
137
|
+
fullRange: data.currentRange,
|
|
138
|
+
additionalTokens: [],
|
|
139
|
+
fullLexeme: data.currentLexeme
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
return (0, hooks_1.executeHook)(data.hooks.operators.onBinary.after, data, result);
|
|
144
|
+
}
|
|
145
|
+
function processLhsAndRhsForAssignment(data, 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
|
+
}
|
|
162
|
+
//# sourceMappingURL=binary.js.map
|
|
@@ -0,0 +1,20 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./unary"), exports);
|
|
18
|
+
__exportStar(require("./binary"), exports);
|
|
19
|
+
__exportStar(require("./special"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { BinaryOperatorFlavor } from '../../../../model';
|
|
2
|
+
/**
|
|
3
|
+
* Identify the flavor of a given operator, as we do not really have a use for "special"
|
|
4
|
+
* operators within our internal AST.
|
|
5
|
+
*/
|
|
6
|
+
export declare function identifySpecialOp(content: string): BinaryOperatorFlavor | 'special';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.identifySpecialOp = void 0;
|
|
4
|
+
const model_1 = require("../../../../model");
|
|
5
|
+
/**
|
|
6
|
+
* Identify the flavor of a given operator, as we do not really have a use for "special"
|
|
7
|
+
* operators within our internal AST.
|
|
8
|
+
*/
|
|
9
|
+
function identifySpecialOp(content) {
|
|
10
|
+
if (model_1.ComparisonOperatorsRAst.has(content)) {
|
|
11
|
+
return 'comparison';
|
|
12
|
+
}
|
|
13
|
+
else if (model_1.LogicalOperatorsRAst.has(content)) {
|
|
14
|
+
return 'logical';
|
|
15
|
+
}
|
|
16
|
+
else if (model_1.ArithmeticOperatorsRAst.has(content)) {
|
|
17
|
+
return 'arithmetic';
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
return 'special';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.identifySpecialOp = identifySpecialOp;
|
|
24
|
+
//# sourceMappingURL=special.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { NamedXmlBasedJson } from '../../input-format';
|
|
2
|
+
import { ParserData } from '../../data';
|
|
3
|
+
import { RNode } from '../../../../model';
|
|
4
|
+
/**
|
|
5
|
+
* Parses the construct as a {@link RUnaryOp} (automatically identifies the flavor).
|
|
6
|
+
*
|
|
7
|
+
* @param data - The data used by the parser (see {@link ParserData})
|
|
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: ParserData, operator: NamedXmlBasedJson, operand: NamedXmlBasedJson): RNode | undefined;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tryNormalizeUnary = void 0;
|
|
4
|
+
const meta_1 = require("../meta");
|
|
5
|
+
const parser_1 = require("../../parser");
|
|
6
|
+
const structure_1 = require("../structure");
|
|
7
|
+
const assert_1 = require("../../../../../../../util/assert");
|
|
8
|
+
const model_1 = require("../../../../model");
|
|
9
|
+
const hooks_1 = require("../../hooks");
|
|
10
|
+
/**
|
|
11
|
+
* Parses the construct as a {@link RUnaryOp} (automatically identifies the flavor).
|
|
12
|
+
*
|
|
13
|
+
* @param data - The data used by the parser (see {@link ParserData})
|
|
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
|
+
parser_1.parseLog.trace(`unary op for ${operator.name} ${operand.name}`);
|
|
21
|
+
let flavor;
|
|
22
|
+
if (model_1.ArithmeticOperatorsRAst.has(operator.name)) {
|
|
23
|
+
flavor = 'arithmetic';
|
|
24
|
+
}
|
|
25
|
+
else if (model_1.LogicalOperatorsRAst.has(operator.name)) {
|
|
26
|
+
flavor = 'logical';
|
|
27
|
+
}
|
|
28
|
+
else if (model_1.ModelFormulaOperatorsRAst.has(operator.name)) {
|
|
29
|
+
flavor = 'model formula';
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
return (0, hooks_1.executeUnknownHook)(data.hooks.operators.onUnary.unknown, data, { operator, operand });
|
|
33
|
+
}
|
|
34
|
+
return parseUnaryOp(data, flavor, operator, operand);
|
|
35
|
+
}
|
|
36
|
+
exports.tryNormalizeUnary = tryNormalizeUnary;
|
|
37
|
+
function parseUnaryOp(data, flavor, operator, operand) {
|
|
38
|
+
parser_1.parseLog.debug(`[unary op] parse ${flavor}`); // <- semicolon sadly required for not miss-interpreting the destructuring match as call
|
|
39
|
+
({ flavor, operator, operand } = (0, hooks_1.executeHook)(data.hooks.operators.onUnary.before, data, { flavor, operator, operand }));
|
|
40
|
+
const parsedOperand = (0, structure_1.tryNormalizeSingleNode)(data, operand);
|
|
41
|
+
(0, assert_1.guard)(parsedOperand.type !== "RDelimiter" /* RType.Delimiter */, () => 'unexpected under-sided unary op');
|
|
42
|
+
const operationName = (0, meta_1.retrieveOpName)(data.config, operator);
|
|
43
|
+
const { location, content } = (0, meta_1.retrieveMetaStructure)(data.config, operator.content);
|
|
44
|
+
const result = {
|
|
45
|
+
type: "RUnaryOp" /* RType.UnaryOp */,
|
|
46
|
+
flavor,
|
|
47
|
+
location,
|
|
48
|
+
operator: operationName,
|
|
49
|
+
lexeme: content,
|
|
50
|
+
operand: parsedOperand,
|
|
51
|
+
info: {
|
|
52
|
+
fullRange: data.currentRange,
|
|
53
|
+
additionalTokens: [],
|
|
54
|
+
fullLexeme: data.currentLexeme
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
return (0, hooks_1.executeHook)(data.hooks.operators.onUnary.after, data, result);
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=unary.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { XmlBasedJson } from '../../input-format';
|
|
2
|
+
import { RComment } from '../../../../model';
|
|
3
|
+
import { ParserData } from '../../data';
|
|
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 ParserData})
|
|
9
|
+
* @param obj - The json object to extract the meta-information from
|
|
10
|
+
*/
|
|
11
|
+
export declare function normalizeComment(data: ParserData, obj: XmlBasedJson): RComment;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeComment = void 0;
|
|
4
|
+
const parser_1 = require("../../parser");
|
|
5
|
+
const meta_1 = require("../meta");
|
|
6
|
+
const assert_1 = require("../../../../../../../util/assert");
|
|
7
|
+
const hooks_1 = require("../../hooks");
|
|
8
|
+
/**
|
|
9
|
+
* Normalize the given object as an R comment.
|
|
10
|
+
* This requires you to check the corresponding name beforehand.
|
|
11
|
+
*
|
|
12
|
+
* @param data - The data used by the parser (see {@link ParserData})
|
|
13
|
+
* @param obj - The json object to extract the meta-information from
|
|
14
|
+
*/
|
|
15
|
+
function normalizeComment(data, obj) {
|
|
16
|
+
parser_1.parseLog.debug('[comment]');
|
|
17
|
+
obj = (0, hooks_1.executeHook)(data.hooks.other.onComment.before, data, obj);
|
|
18
|
+
const { location, content } = (0, meta_1.retrieveMetaStructure)(data.config, obj);
|
|
19
|
+
(0, assert_1.guard)(content.startsWith('#'), 'comment must start with #');
|
|
20
|
+
const result = {
|
|
21
|
+
type: "RComment" /* RType.Comment */,
|
|
22
|
+
location,
|
|
23
|
+
content: content.slice(1),
|
|
24
|
+
lexeme: content,
|
|
25
|
+
info: {
|
|
26
|
+
fullRange: data.currentRange,
|
|
27
|
+
additionalTokens: [],
|
|
28
|
+
fullLexeme: content
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
return (0, hooks_1.executeHook)(data.hooks.other.onComment.after, data, result);
|
|
32
|
+
}
|
|
33
|
+
exports.normalizeComment = normalizeComment;
|
|
34
|
+
//# sourceMappingURL=comment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './comment';
|
|
@@ -0,0 +1,18 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./comment"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { XmlBasedJson } from '../../input-format';
|
|
2
|
+
import { RComment, RLineDirective } from '../../../../model';
|
|
3
|
+
import { ParserData } from '../../data';
|
|
4
|
+
/**
|
|
5
|
+
* Normalize the given object as an R line directive (`#line <number> "<file>"`).
|
|
6
|
+
* This requires you to check the corresponding name beforehand.
|
|
7
|
+
* If the given object turns out to be no line directive, this returns a normal comment instead.
|
|
8
|
+
*
|
|
9
|
+
* @param data - The data used by the parser (see {@link ParserData})
|
|
10
|
+
* @param obj - The json object to extract the meta-information from
|
|
11
|
+
*/
|
|
12
|
+
export declare function normalizeLineDirective(data: ParserData, obj: XmlBasedJson): RLineDirective | RComment;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeLineDirective = void 0;
|
|
4
|
+
const parser_1 = require("../../parser");
|
|
5
|
+
const meta_1 = require("../meta");
|
|
6
|
+
const assert_1 = require("../../../../../../../util/assert");
|
|
7
|
+
const hooks_1 = require("../../hooks");
|
|
8
|
+
const LineDirectiveRegex = /^#line\s+(\d+)\s+"([^"]+)"\s*$/;
|
|
9
|
+
/**
|
|
10
|
+
* Normalize the given object as an R line directive (`#line <number> "<file>"`).
|
|
11
|
+
* This requires you to check the corresponding name beforehand.
|
|
12
|
+
* If the given object turns out to be no line directive, this returns a normal comment instead.
|
|
13
|
+
*
|
|
14
|
+
* @param data - The data used by the parser (see {@link ParserData})
|
|
15
|
+
* @param obj - The json object to extract the meta-information from
|
|
16
|
+
*/
|
|
17
|
+
function normalizeLineDirective(data, obj) {
|
|
18
|
+
parser_1.parseLog.debug('[line-directive]');
|
|
19
|
+
obj = (0, hooks_1.executeHook)(data.hooks.other.onLineDirective.before, data, obj);
|
|
20
|
+
const { location, content } = (0, meta_1.retrieveMetaStructure)(data.config, obj);
|
|
21
|
+
(0, assert_1.guard)(content.startsWith('#line'), 'line directive must start with #line');
|
|
22
|
+
const match = LineDirectiveRegex.exec(content);
|
|
23
|
+
let result;
|
|
24
|
+
if (match === null) {
|
|
25
|
+
parser_1.parseLog.debug(`[line-directive] does not match the regex ${LineDirectiveRegex.source} given ${JSON.stringify(content)}`);
|
|
26
|
+
result = {
|
|
27
|
+
type: "RComment" /* RType.Comment */,
|
|
28
|
+
location,
|
|
29
|
+
lexeme: content,
|
|
30
|
+
info: {
|
|
31
|
+
fullRange: data.currentRange,
|
|
32
|
+
additionalTokens: [],
|
|
33
|
+
fullLexeme: content
|
|
34
|
+
},
|
|
35
|
+
content: content.slice(1)
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
result = {
|
|
40
|
+
type: "RLineDirective" /* RType.LineDirective */,
|
|
41
|
+
location,
|
|
42
|
+
line: parseInt(match[1]),
|
|
43
|
+
file: match[2],
|
|
44
|
+
lexeme: content,
|
|
45
|
+
info: {
|
|
46
|
+
fullRange: data.currentRange,
|
|
47
|
+
additionalTokens: [],
|
|
48
|
+
fullLexeme: content
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
return (0, hooks_1.executeHook)(data.hooks.other.onLineDirective.after, data, result);
|
|
53
|
+
}
|
|
54
|
+
exports.normalizeLineDirective = normalizeLineDirective;
|
|
55
|
+
//# sourceMappingURL=line-directive.js.map
|