@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,10 @@
|
|
|
1
|
+
import { NamedXmlBasedJson, XmlBasedJson } from '../../input-format';
|
|
2
|
+
import { ParserData } from '../../data';
|
|
3
|
+
import { RNode } from '../../../../model';
|
|
4
|
+
import { RDelimiter } from '../../../../model/nodes/info';
|
|
5
|
+
export declare function splitComments(mappedWithName: NamedXmlBasedJson[]): {
|
|
6
|
+
comments: NamedXmlBasedJson[];
|
|
7
|
+
others: NamedXmlBasedJson[];
|
|
8
|
+
};
|
|
9
|
+
export declare function normalizeBasedOnType(data: ParserData, obj: XmlBasedJson[] | NamedXmlBasedJson[]): (RNode | RDelimiter)[];
|
|
10
|
+
export declare function parseNodesWithUnknownType(data: ParserData, mappedWithName: NamedXmlBasedJson[]): (RNode | RDelimiter)[];
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseNodesWithUnknownType = exports.normalizeBasedOnType = exports.splitComments = void 0;
|
|
4
|
+
const arrays_1 = require("../../../../../../../util/arrays");
|
|
5
|
+
const parser_1 = require("../../parser");
|
|
6
|
+
const meta_1 = require("../meta");
|
|
7
|
+
const single_element_1 = require("./single-element");
|
|
8
|
+
const values_1 = require("../values");
|
|
9
|
+
const operators_1 = require("../operators");
|
|
10
|
+
const loops_1 = require("../loops");
|
|
11
|
+
const control_1 = require("../control");
|
|
12
|
+
const log_1 = require("../../../../../../../util/log");
|
|
13
|
+
const other_1 = require("../other");
|
|
14
|
+
function normalizeMappedWithoutSemicolonBasedOnType(mappedWithName, data) {
|
|
15
|
+
if (mappedWithName.length === 1) {
|
|
16
|
+
return [(0, single_element_1.tryNormalizeSingleNode)(data, mappedWithName[0])];
|
|
17
|
+
}
|
|
18
|
+
else if (mappedWithName.length === 2) {
|
|
19
|
+
const unaryOp = (0, operators_1.tryNormalizeUnary)(data, mappedWithName[0], mappedWithName[1]);
|
|
20
|
+
if (unaryOp !== undefined) {
|
|
21
|
+
return [unaryOp];
|
|
22
|
+
}
|
|
23
|
+
const repeatLoop = (0, loops_1.tryNormalizeRepeat)(data, mappedWithName[0], mappedWithName[1]);
|
|
24
|
+
if (repeatLoop !== undefined) {
|
|
25
|
+
return [repeatLoop];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else if (mappedWithName.length === 3) {
|
|
29
|
+
const binary = (0, operators_1.tryNormalizeBinary)(data, mappedWithName[0], mappedWithName[1], mappedWithName[2]);
|
|
30
|
+
if (binary !== undefined) {
|
|
31
|
+
return [binary];
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
const forLoop = (0, loops_1.tryNormalizeFor)(data, mappedWithName[0], mappedWithName[1], mappedWithName[2]);
|
|
35
|
+
if (forLoop !== undefined) {
|
|
36
|
+
return [forLoop];
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
// could be a symbol with namespace information
|
|
40
|
+
const symbol = (0, values_1.tryNormalizeSymbol)(data, mappedWithName);
|
|
41
|
+
if (symbol !== undefined) {
|
|
42
|
+
return [symbol];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else if (mappedWithName.length === 5) {
|
|
48
|
+
const ifThen = (0, control_1.tryNormalizeIfThen)(data, [
|
|
49
|
+
mappedWithName[0],
|
|
50
|
+
mappedWithName[1],
|
|
51
|
+
mappedWithName[2],
|
|
52
|
+
mappedWithName[3],
|
|
53
|
+
mappedWithName[4]
|
|
54
|
+
]);
|
|
55
|
+
if (ifThen !== undefined) {
|
|
56
|
+
return [ifThen];
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
const whileLoop = (0, loops_1.tryNormalizeWhile)(data, mappedWithName[0], mappedWithName[1], mappedWithName[2], mappedWithName[3], mappedWithName[4]);
|
|
60
|
+
if (whileLoop !== undefined) {
|
|
61
|
+
return [whileLoop];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
else if (mappedWithName.length === 7) {
|
|
66
|
+
const ifThenElse = (0, control_1.tryNormalizeIfThenElse)(data, [
|
|
67
|
+
mappedWithName[0],
|
|
68
|
+
mappedWithName[1],
|
|
69
|
+
mappedWithName[2],
|
|
70
|
+
mappedWithName[3],
|
|
71
|
+
mappedWithName[4],
|
|
72
|
+
mappedWithName[5],
|
|
73
|
+
mappedWithName[6]
|
|
74
|
+
]);
|
|
75
|
+
if (ifThenElse !== undefined) {
|
|
76
|
+
return [ifThenElse];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// otherwise perform default parsing
|
|
80
|
+
return parseNodesWithUnknownType(data, mappedWithName);
|
|
81
|
+
}
|
|
82
|
+
function splitComments(mappedWithName) {
|
|
83
|
+
const comments = [];
|
|
84
|
+
const others = [];
|
|
85
|
+
for (const elem of mappedWithName) {
|
|
86
|
+
if (elem.name === "COMMENT" /* RawRType.Comment */) {
|
|
87
|
+
comments.push(elem);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
others.push(elem);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return { comments, others };
|
|
94
|
+
}
|
|
95
|
+
exports.splitComments = splitComments;
|
|
96
|
+
function normalizeBasedOnType(data, obj) {
|
|
97
|
+
if (obj.length === 0) {
|
|
98
|
+
parser_1.parseLog.warn('no children received, skipping');
|
|
99
|
+
return [];
|
|
100
|
+
}
|
|
101
|
+
let mappedWithName;
|
|
102
|
+
if (obj[0].name) {
|
|
103
|
+
mappedWithName = obj;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
mappedWithName = (0, meta_1.getWithTokenType)(data.config.tokenMap, obj);
|
|
107
|
+
}
|
|
108
|
+
log_1.log.trace(`[parseBasedOnType] names: [${mappedWithName.map(({ name }) => name).join(', ')}]`);
|
|
109
|
+
const semiColons = [];
|
|
110
|
+
const splitOnSemicolon = (0, arrays_1.splitArrayOn)(mappedWithName, node => {
|
|
111
|
+
const res = node.name === ";" /* RawRType.Semicolon */;
|
|
112
|
+
if (res) {
|
|
113
|
+
const { location, content } = (0, meta_1.retrieveMetaStructure)(data.config, node.content);
|
|
114
|
+
semiColons.push({
|
|
115
|
+
type: "RDelimiter" /* RType.Delimiter */,
|
|
116
|
+
subtype: ";" /* RawRType.Semicolon */,
|
|
117
|
+
location: location,
|
|
118
|
+
lexeme: content
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
return res;
|
|
122
|
+
});
|
|
123
|
+
if (splitOnSemicolon.length > 1) {
|
|
124
|
+
log_1.log.trace(`found ${splitOnSemicolon.length} expressions by semicolon-split, parsing them separately`);
|
|
125
|
+
const flattened = [];
|
|
126
|
+
for (const sub of splitOnSemicolon) {
|
|
127
|
+
const result = normalizeBasedOnType(data, sub);
|
|
128
|
+
if (result.length === 1 && result[0].type === "RExpressionList" /* RType.ExpressionList */) {
|
|
129
|
+
flattened.push(...result[0].children);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
flattened.push(...result);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return [...flattened, ...semiColons];
|
|
136
|
+
}
|
|
137
|
+
/*
|
|
138
|
+
* if splitOnSemicolon.length === 1, we can continue with the normal parsing, but we may have had a trailing semicolon, with this, it is removed as well.
|
|
139
|
+
* splitOnSemicolon.length === 0 is not possible, as we would have had an empty array before, split does not add elements.
|
|
140
|
+
*/
|
|
141
|
+
mappedWithName = splitOnSemicolon[0];
|
|
142
|
+
const { comments, others } = splitComments(mappedWithName);
|
|
143
|
+
const parsedComments = comments.map(c => (0, other_1.normalizeComment)(data, c.content));
|
|
144
|
+
const result = normalizeMappedWithoutSemicolonBasedOnType(others, data);
|
|
145
|
+
// we hoist comments
|
|
146
|
+
return [...parsedComments, ...result];
|
|
147
|
+
}
|
|
148
|
+
exports.normalizeBasedOnType = normalizeBasedOnType;
|
|
149
|
+
function parseNodesWithUnknownType(data, mappedWithName) {
|
|
150
|
+
const parsedNodes = [];
|
|
151
|
+
// used to indicate the new root node of this set of nodes
|
|
152
|
+
for (const elem of mappedWithName) {
|
|
153
|
+
const retrieved = (0, single_element_1.tryNormalizeSingleNode)(data, elem);
|
|
154
|
+
parsedNodes.push(retrieved);
|
|
155
|
+
}
|
|
156
|
+
return parsedNodes;
|
|
157
|
+
}
|
|
158
|
+
exports.parseNodesWithUnknownType = parseNodesWithUnknownType;
|
|
159
|
+
//# sourceMappingURL=elements.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("./root"), exports);
|
|
18
|
+
__exportStar(require("./elements"), exports);
|
|
19
|
+
__exportStar(require("./single-element"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseRootObjToAst = void 0;
|
|
4
|
+
const input_format_1 = require("../../input-format");
|
|
5
|
+
const meta_1 = require("../meta");
|
|
6
|
+
const elements_1 = require("./elements");
|
|
7
|
+
const log_1 = require("../../../../../../../util/log");
|
|
8
|
+
const arrays_1 = require("../../../../../../../util/arrays");
|
|
9
|
+
function parseRootObjToAst(data, obj) {
|
|
10
|
+
const config = data.config;
|
|
11
|
+
const exprContent = (0, input_format_1.getKeysGuarded)(obj, "exprlist" /* RawRType.ExpressionList */);
|
|
12
|
+
(0, meta_1.assureTokenType)(config.tokenMap, exprContent, "exprlist" /* RawRType.ExpressionList */);
|
|
13
|
+
let parsedChildren = [];
|
|
14
|
+
if (config.childrenName in exprContent) {
|
|
15
|
+
const children = (0, input_format_1.getKeysGuarded)(exprContent, config.childrenName);
|
|
16
|
+
parsedChildren = (0, elements_1.normalizeBasedOnType)(data, children);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
log_1.log.debug('no children found, assume empty input');
|
|
20
|
+
}
|
|
21
|
+
const [delimiters, nodes] = (0, arrays_1.partition)(parsedChildren, x => x.type === "RDelimiter" /* RType.Delimiter */);
|
|
22
|
+
return {
|
|
23
|
+
type: "RExpressionList" /* RType.ExpressionList */,
|
|
24
|
+
children: nodes,
|
|
25
|
+
lexeme: undefined,
|
|
26
|
+
info: {
|
|
27
|
+
fullRange: data.currentRange,
|
|
28
|
+
additionalTokens: delimiters,
|
|
29
|
+
fullLexeme: data.currentLexeme
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
exports.parseRootObjToAst = parseRootObjToAst;
|
|
34
|
+
//# sourceMappingURL=root.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { NamedXmlBasedJson } from '../../input-format';
|
|
2
|
+
import { ParserData } from '../../data';
|
|
3
|
+
import { RNode } from '../../../../model';
|
|
4
|
+
import { RDelimiter } from '../../../../model/nodes/info';
|
|
5
|
+
/**
|
|
6
|
+
* Parses a single structure in the ast based on its type (e.g., a string, a number, a symbol, ...)
|
|
7
|
+
*
|
|
8
|
+
* @param data - The data used by the parser (see {@link ParserData})
|
|
9
|
+
* @param elem - The element to parse
|
|
10
|
+
*
|
|
11
|
+
* @returns The parsed element as an `RNode` or an `RDelimiter` if it is such.
|
|
12
|
+
*/
|
|
13
|
+
export declare function tryNormalizeSingleNode(data: ParserData, elem: NamedXmlBasedJson): RNode | RDelimiter;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tryNormalizeSingleNode = void 0;
|
|
4
|
+
const input_format_1 = require("../../input-format");
|
|
5
|
+
const values_1 = require("../values");
|
|
6
|
+
const assert_1 = require("../../../../../../../util/assert");
|
|
7
|
+
const expression_1 = require("../expression");
|
|
8
|
+
const meta_1 = require("../meta");
|
|
9
|
+
const other_1 = require("../other");
|
|
10
|
+
const loops_1 = require("../loops");
|
|
11
|
+
const line_directive_1 = require("../other/line-directive");
|
|
12
|
+
function normalizeDelimiter(data, elem) {
|
|
13
|
+
const { location, content } = (0, meta_1.retrieveMetaStructure)(data.config, elem.content);
|
|
14
|
+
return {
|
|
15
|
+
type: "RDelimiter" /* RType.Delimiter */,
|
|
16
|
+
location,
|
|
17
|
+
lexeme: content,
|
|
18
|
+
subtype: elem.name
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Parses a single structure in the ast based on its type (e.g., a string, a number, a symbol, ...)
|
|
23
|
+
*
|
|
24
|
+
* @param data - The data used by the parser (see {@link ParserData})
|
|
25
|
+
* @param elem - The element to parse
|
|
26
|
+
*
|
|
27
|
+
* @returns The parsed element as an `RNode` or an `RDelimiter` if it is such.
|
|
28
|
+
*/
|
|
29
|
+
function tryNormalizeSingleNode(data, elem) {
|
|
30
|
+
switch (elem.name) {
|
|
31
|
+
case "(" /* RawRType.ParenLeft */:
|
|
32
|
+
case ")" /* RawRType.ParenRight */:
|
|
33
|
+
case "{" /* RawRType.BraceLeft */:
|
|
34
|
+
case "}" /* RawRType.BraceRight */:
|
|
35
|
+
return normalizeDelimiter(data, elem);
|
|
36
|
+
case "COMMENT" /* RawRType.Comment */:
|
|
37
|
+
return (0, other_1.normalizeComment)(data, elem.content);
|
|
38
|
+
case "LINE_DIRECTIVE" /* RawRType.LineDirective */:
|
|
39
|
+
return (0, line_directive_1.normalizeLineDirective)(data, elem.content);
|
|
40
|
+
case "exprlist" /* RawRType.ExpressionList */:
|
|
41
|
+
case "expr" /* RawRType.Expression */:
|
|
42
|
+
case "expr_or_assign_or_help" /* RawRType.ExprOfAssignOrHelp */:
|
|
43
|
+
return (0, expression_1.normalizeExpression)(data, elem.content);
|
|
44
|
+
case "NUM_CONST" /* RawRType.NumericConst */:
|
|
45
|
+
return (0, values_1.normalizeNumber)(data, elem.content);
|
|
46
|
+
case "STR_CONST" /* RawRType.StringConst */:
|
|
47
|
+
return (0, values_1.normalizeString)(data, elem.content);
|
|
48
|
+
case "BREAK" /* RawRType.Break */:
|
|
49
|
+
return (0, loops_1.normalizeBreak)(data, elem.content);
|
|
50
|
+
case "NEXT" /* RawRType.Next */:
|
|
51
|
+
return (0, loops_1.normalizeNext)(data, elem.content);
|
|
52
|
+
case "SYMBOL" /* RawRType.Symbol */:
|
|
53
|
+
case "SLOT" /* RawRType.Slot */:
|
|
54
|
+
case "NULL_CONST" /* RawRType.NullConst */: {
|
|
55
|
+
const symbol = (0, values_1.tryNormalizeSymbol)(data, (0, meta_1.getWithTokenType)(data.config.tokenMap, [elem.content]));
|
|
56
|
+
(0, assert_1.guard)(symbol !== undefined, () => `should have been parsed to a symbol but was ${JSON.stringify(symbol)}`);
|
|
57
|
+
return symbol;
|
|
58
|
+
}
|
|
59
|
+
default:
|
|
60
|
+
throw new input_format_1.XmlParseError(`unknown type ${elem.name} for ${JSON.stringify(elem)} in ${JSON.stringify(data)}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.tryNormalizeSingleNode = tryNormalizeSingleNode;
|
|
64
|
+
//# sourceMappingURL=single-element.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("./number"), exports);
|
|
18
|
+
__exportStar(require("./string"), exports);
|
|
19
|
+
__exportStar(require("./symbol"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { XmlBasedJson } from '../../input-format';
|
|
2
|
+
import { RNa } from '../../../../../values';
|
|
3
|
+
import { RLogical, RSymbol, NoInfo, RNumber } from '../../../../model';
|
|
4
|
+
import { ParserData } from '../../data';
|
|
5
|
+
/**
|
|
6
|
+
* Normalize the given object as a R number (see {@link number2ts}), supporting booleans (see {@link boolean2ts}),
|
|
7
|
+
* and special values.
|
|
8
|
+
* This requires you to check the corresponding name beforehand.
|
|
9
|
+
*
|
|
10
|
+
* @param data - The data used by the parser (see {@link ParserData})
|
|
11
|
+
* @param obj - The json object to extract the meta-information from
|
|
12
|
+
*/
|
|
13
|
+
export declare function normalizeNumber(data: ParserData, obj: XmlBasedJson): RNumber | RLogical | RSymbol<NoInfo, typeof RNa>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeNumber = void 0;
|
|
4
|
+
const values_1 = require("../../../../../values");
|
|
5
|
+
const parser_1 = require("../../parser");
|
|
6
|
+
const meta_1 = require("../meta");
|
|
7
|
+
const hooks_1 = require("../../hooks");
|
|
8
|
+
/**
|
|
9
|
+
* Normalize the given object as a R number (see {@link number2ts}), supporting booleans (see {@link boolean2ts}),
|
|
10
|
+
* and special values.
|
|
11
|
+
* This requires you to check the corresponding name beforehand.
|
|
12
|
+
*
|
|
13
|
+
* @param data - The data used by the parser (see {@link ParserData})
|
|
14
|
+
* @param obj - The json object to extract the meta-information from
|
|
15
|
+
*/
|
|
16
|
+
function normalizeNumber(data, obj) {
|
|
17
|
+
parser_1.parseLog.debug('[number]');
|
|
18
|
+
obj = (0, hooks_1.executeHook)(data.hooks.values.onNumber.before, data, obj);
|
|
19
|
+
const { location, content } = (0, meta_1.retrieveMetaStructure)(data.config, obj);
|
|
20
|
+
const common = {
|
|
21
|
+
location,
|
|
22
|
+
lexeme: content,
|
|
23
|
+
info: {
|
|
24
|
+
fullRange: data.currentRange,
|
|
25
|
+
additionalTokens: [],
|
|
26
|
+
fullLexeme: data.currentLexeme
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
let result;
|
|
30
|
+
/* the special symbol */
|
|
31
|
+
if ((0, values_1.isNA)(content)) {
|
|
32
|
+
result = {
|
|
33
|
+
...common,
|
|
34
|
+
namespace: undefined,
|
|
35
|
+
type: "RSymbol" /* RType.Symbol */,
|
|
36
|
+
content
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
else if ((0, values_1.isBoolean)(content)) {
|
|
40
|
+
result = {
|
|
41
|
+
...common,
|
|
42
|
+
type: "RLogical" /* RType.Logical */,
|
|
43
|
+
content: (0, values_1.boolean2ts)(content)
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
result = {
|
|
48
|
+
...common,
|
|
49
|
+
type: "RNumber" /* RType.Number */,
|
|
50
|
+
content: (0, values_1.number2ts)(content)
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
return (0, hooks_1.executeHook)(data.hooks.values.onNumber.after, data, result);
|
|
54
|
+
}
|
|
55
|
+
exports.normalizeNumber = normalizeNumber;
|
|
56
|
+
//# sourceMappingURL=number.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { XmlBasedJson } from '../../input-format';
|
|
2
|
+
import { RString } from '../../../../model';
|
|
3
|
+
import { ParserData } from '../../data';
|
|
4
|
+
/**
|
|
5
|
+
* Normalize the given object as a R string (see {@link string2ts}).
|
|
6
|
+
* This requires you to check the corresponding name beforehand.
|
|
7
|
+
*
|
|
8
|
+
* @param data - The data used by the parser (see {@link ParserData})
|
|
9
|
+
* @param obj - The json object to extract the meta-information from
|
|
10
|
+
*/
|
|
11
|
+
export declare function normalizeString(data: ParserData, obj: XmlBasedJson): RString;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeString = void 0;
|
|
4
|
+
const meta_1 = require("../meta");
|
|
5
|
+
const values_1 = require("../../../../../values");
|
|
6
|
+
const parser_1 = require("../../parser");
|
|
7
|
+
const hooks_1 = require("../../hooks");
|
|
8
|
+
const assert_1 = require("../../../../../../../util/assert");
|
|
9
|
+
/**
|
|
10
|
+
* Normalize the given object as a R string (see {@link string2ts}).
|
|
11
|
+
* This requires you to check the corresponding name beforehand.
|
|
12
|
+
*
|
|
13
|
+
* @param data - The data used by the parser (see {@link ParserData})
|
|
14
|
+
* @param obj - The json object to extract the meta-information from
|
|
15
|
+
*/
|
|
16
|
+
function normalizeString(data, obj) {
|
|
17
|
+
parser_1.parseLog.debug('[string]');
|
|
18
|
+
obj = (0, hooks_1.executeHook)(data.hooks.values.onString.before, data, obj);
|
|
19
|
+
const { location, content } = (0, meta_1.retrieveMetaStructure)(data.config, obj);
|
|
20
|
+
// based on https://www.rdocumentation.org/packages/utils/versions/3.6.2/topics/getParseData we do not get strings with 1000 characters or more within the text field.
|
|
21
|
+
// therefore, we recover the full string from the surrounding expr lexeme field
|
|
22
|
+
let stringContent = content;
|
|
23
|
+
if (stringContent.startsWith('[')) { // something like "[9999 chars quoted with '"']"
|
|
24
|
+
(0, assert_1.guard)(data.currentLexeme !== undefined, 'need current lexeme wrapper for too long strings as they are not stored by the R parser post-processor');
|
|
25
|
+
stringContent = data.currentLexeme;
|
|
26
|
+
}
|
|
27
|
+
const result = {
|
|
28
|
+
type: "RString" /* RType.String */,
|
|
29
|
+
location,
|
|
30
|
+
content: (0, values_1.string2ts)(stringContent),
|
|
31
|
+
lexeme: stringContent,
|
|
32
|
+
info: {
|
|
33
|
+
fullRange: data.currentRange,
|
|
34
|
+
additionalTokens: [],
|
|
35
|
+
fullLexeme: data.currentLexeme
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
return (0, hooks_1.executeHook)(data.hooks.values.onString.after, data, result);
|
|
39
|
+
}
|
|
40
|
+
exports.normalizeString = normalizeString;
|
|
41
|
+
//# sourceMappingURL=string.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { NamedXmlBasedJson } from '../../input-format';
|
|
2
|
+
import { RSymbol } from '../../../../model';
|
|
3
|
+
import { ParserData } from '../../data';
|
|
4
|
+
/**
|
|
5
|
+
* Normalize the given object as an R symbol (incorporating namespace information).
|
|
6
|
+
* <p>
|
|
7
|
+
* The special symbols `T` and `F` are parsed as logic values.
|
|
8
|
+
*
|
|
9
|
+
* @param data - The data used by the parser (see {@link ParserData})
|
|
10
|
+
* @param objs - The json object to extract the meta-information from
|
|
11
|
+
*
|
|
12
|
+
* @returns The parsed symbol (with populated namespace information) or `undefined` if the given object is not a symbol.
|
|
13
|
+
*/
|
|
14
|
+
export declare function tryNormalizeSymbol(data: ParserData, objs: NamedXmlBasedJson[]): RSymbol | undefined;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tryNormalizeSymbol = void 0;
|
|
4
|
+
const assert_1 = require("../../../../../../../util/assert");
|
|
5
|
+
const meta_1 = require("../meta");
|
|
6
|
+
const parser_1 = require("../../parser");
|
|
7
|
+
const model_1 = require("../../../../model");
|
|
8
|
+
const hooks_1 = require("../../hooks");
|
|
9
|
+
const strings_1 = require("../../../../../../../util/strings");
|
|
10
|
+
/**
|
|
11
|
+
* Normalize the given object as an R symbol (incorporating namespace information).
|
|
12
|
+
* <p>
|
|
13
|
+
* The special symbols `T` and `F` are parsed as logic values.
|
|
14
|
+
*
|
|
15
|
+
* @param data - The data used by the parser (see {@link ParserData})
|
|
16
|
+
* @param objs - The json object to extract the meta-information from
|
|
17
|
+
*
|
|
18
|
+
* @returns The parsed symbol (with populated namespace information) or `undefined` if the given object is not a symbol.
|
|
19
|
+
*/
|
|
20
|
+
function tryNormalizeSymbol(data, objs) {
|
|
21
|
+
(0, assert_1.guard)(objs.length > 0, 'to parse symbols we need at least one object to work on!');
|
|
22
|
+
parser_1.parseLog.debug('trying to parse symbol');
|
|
23
|
+
objs = (0, hooks_1.executeHook)(data.hooks.values.onSymbol.before, data, objs);
|
|
24
|
+
let location, content, namespace;
|
|
25
|
+
if (objs.length === 1 && (0, model_1.isSymbol)(objs[0].name)) {
|
|
26
|
+
const meta = (0, meta_1.retrieveMetaStructure)(data.config, objs[0].content);
|
|
27
|
+
location = meta.location;
|
|
28
|
+
content = meta.content;
|
|
29
|
+
namespace = undefined;
|
|
30
|
+
}
|
|
31
|
+
else if (objs.length === 3 && (0, model_1.isSymbol)(objs[2].name)) {
|
|
32
|
+
const meta = (0, meta_1.retrieveMetaStructure)(data.config, objs[2].content);
|
|
33
|
+
location = meta.location;
|
|
34
|
+
content = meta.content;
|
|
35
|
+
namespace = (0, meta_1.retrieveMetaStructure)(data.config, objs[0].content).content;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
return (0, hooks_1.executeUnknownHook)(data.hooks.values.onSymbol.unknown, data, objs);
|
|
39
|
+
}
|
|
40
|
+
const result = {
|
|
41
|
+
type: "RSymbol" /* RType.Symbol */,
|
|
42
|
+
namespace,
|
|
43
|
+
location,
|
|
44
|
+
// remove backticks from symbol
|
|
45
|
+
content: (0, strings_1.startAndEndsWith)(content, '`') ? content.substring(1, content.length - 1) : content,
|
|
46
|
+
lexeme: content,
|
|
47
|
+
info: {
|
|
48
|
+
fullRange: data.currentRange,
|
|
49
|
+
additionalTokens: [],
|
|
50
|
+
fullLexeme: data.currentLexeme
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
return (0, hooks_1.executeHook)(data.hooks.values.onSymbol.after, data, result);
|
|
54
|
+
}
|
|
55
|
+
exports.tryNormalizeSymbol = tryNormalizeSymbol;
|
|
56
|
+
//# sourceMappingURL=symbol.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { XmlParserConfig } from '../config';
|
|
2
|
+
import { XmlBasedJson } from '../input-format';
|
|
3
|
+
/**
|
|
4
|
+
* Parse the xml presented by R into a json object that will be used for conversion
|
|
5
|
+
*
|
|
6
|
+
* @param config - The configuration to use (i.e., what names should be used for the attributes, children, ...)
|
|
7
|
+
* @param xmlString - The xml input to parse
|
|
8
|
+
*/
|
|
9
|
+
export declare function xlm2jsonObject(config: XmlParserConfig, xmlString: string): Promise<XmlBasedJson>;
|
|
@@ -0,0 +1,51 @@
|
|
|
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 = void 0;
|
|
27
|
+
const xml2js = __importStar(require("xml2js"));
|
|
28
|
+
/**
|
|
29
|
+
* Parse the xml presented by R into a json object that will be used for conversion
|
|
30
|
+
*
|
|
31
|
+
* @param config - The configuration to use (i.e., what names should be used for the attributes, children, ...)
|
|
32
|
+
* @param xmlString - The xml input to parse
|
|
33
|
+
*/
|
|
34
|
+
function xlm2jsonObject(config, xmlString) {
|
|
35
|
+
return xml2js.parseStringPromise(xmlString, {
|
|
36
|
+
attrkey: config.attributeName,
|
|
37
|
+
charkey: config.contentName,
|
|
38
|
+
childkey: config.childrenName,
|
|
39
|
+
charsAsChildren: false,
|
|
40
|
+
explicitChildren: true,
|
|
41
|
+
mergeAttrs: false,
|
|
42
|
+
// we need this for semicolons etc., while we keep the old broken components we ignore them completely
|
|
43
|
+
preserveChildrenOrder: true,
|
|
44
|
+
trim: true,
|
|
45
|
+
includeWhiteChars: true,
|
|
46
|
+
normalize: false,
|
|
47
|
+
strict: true
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
exports.xlm2jsonObject = xlm2jsonObject;
|
|
51
|
+
//# sourceMappingURL=xml-to-json.js.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { NormalizedAst, IdGenerator, NoInfo } from '../../model';
|
|
2
|
+
import { XmlParserHooks } from './hooks';
|
|
3
|
+
import { DeepPartial } from 'ts-essentials';
|
|
4
|
+
import { TokenMap } from '../../../../retriever';
|
|
5
|
+
export declare const parseLog: import("tslog").Logger<import("tslog").ILogObj>;
|
|
6
|
+
/**
|
|
7
|
+
* The main entry point to normalize the given R ast.
|
|
8
|
+
* You probably want to use {@link retrieveNormalizedAstFromRCode} to directly normalize a piece of code.
|
|
9
|
+
*
|
|
10
|
+
* @param xmlString - The XML string obtained probably by {@link retrieveXmlFromRCode} for normalization.
|
|
11
|
+
* @param tokenMap - The token replacement map in effect by the XML parser
|
|
12
|
+
* @param hooks - Optional hooks to customize the normalization process (see {@link XmlParserHooks} for details)
|
|
13
|
+
* @param getId - The function to be used to generate unique ids for the nodes of the ast. It is up to you to ensure that the ids are unique!
|
|
14
|
+
*
|
|
15
|
+
* @returns The normalized and decorated AST (i.e., as a doubly linked tree)
|
|
16
|
+
*/
|
|
17
|
+
export declare function normalize(xmlString: string, tokenMap: TokenMap, hooks?: DeepPartial<XmlParserHooks>, getId?: IdGenerator<NoInfo>): Promise<NormalizedAst>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalize = exports.parseLog = void 0;
|
|
4
|
+
const objects_1 = require("../../../../../util/objects");
|
|
5
|
+
const log_1 = require("../../../../../util/log");
|
|
6
|
+
const config_1 = require("./config");
|
|
7
|
+
const internal_1 = require("./internal");
|
|
8
|
+
const model_1 = require("../../model");
|
|
9
|
+
const hooks_1 = require("./hooks");
|
|
10
|
+
exports.parseLog = log_1.log.getSubLogger({ name: 'ast-parser' });
|
|
11
|
+
/**
|
|
12
|
+
* The main entry point to normalize the given R ast.
|
|
13
|
+
* You probably want to use {@link retrieveNormalizedAstFromRCode} to directly normalize a piece of code.
|
|
14
|
+
*
|
|
15
|
+
* @param xmlString - The XML string obtained probably by {@link retrieveXmlFromRCode} for normalization.
|
|
16
|
+
* @param tokenMap - The token replacement map in effect by the XML parser
|
|
17
|
+
* @param hooks - Optional hooks to customize the normalization process (see {@link XmlParserHooks} for details)
|
|
18
|
+
* @param getId - The function to be used to generate unique ids for the nodes of the ast. It is up to you to ensure that the ids are unique!
|
|
19
|
+
*
|
|
20
|
+
* @returns The normalized and decorated AST (i.e., as a doubly linked tree)
|
|
21
|
+
*/
|
|
22
|
+
async function normalize(xmlString, tokenMap, hooks, getId = (0, model_1.deterministicCountingIdGenerator)(0)) {
|
|
23
|
+
const config = { ...config_1.DEFAULT_XML_PARSER_CONFIG, tokenMap };
|
|
24
|
+
const hooksWithDefaults = (0, objects_1.deepMergeObject)(hooks_1.DEFAULT_PARSER_HOOKS, hooks);
|
|
25
|
+
const data = { config, hooks: hooksWithDefaults, currentRange: undefined, currentLexeme: undefined };
|
|
26
|
+
const object = await (0, internal_1.xlm2jsonObject)(config, xmlString);
|
|
27
|
+
return (0, model_1.decorateAst)((0, internal_1.parseRootObjToAst)(data, object), getId);
|
|
28
|
+
}
|
|
29
|
+
exports.normalize = normalize;
|
|
30
|
+
//# sourceMappingURL=parser.js.map
|