@untangle-code/parser-registry 0.0.0-stage → 0.1.1
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 +661 -0
- package/NOTICE +90 -0
- package/README.md +352 -2
- package/THIRD_PARTY_LICENSES.md +91 -0
- package/dist/boundaries/expression.d.ts +10 -0
- package/dist/boundaries/expression.d.ts.map +1 -0
- package/dist/boundaries/expression.js +95 -0
- package/dist/boundaries/expression.js.map +1 -0
- package/dist/boundaries/extract.d.ts +12 -0
- package/dist/boundaries/extract.d.ts.map +1 -0
- package/dist/boundaries/extract.js +259 -0
- package/dist/boundaries/extract.js.map +1 -0
- package/dist/boundaries/python.d.ts +6 -0
- package/dist/boundaries/python.d.ts.map +1 -0
- package/dist/boundaries/python.js +154 -0
- package/dist/boundaries/python.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/languages/astgrep-backend/adapter.d.ts +101 -0
- package/dist/languages/astgrep-backend/adapter.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/adapter.js +130 -0
- package/dist/languages/astgrep-backend/adapter.js.map +1 -0
- package/dist/languages/astgrep-backend/index.d.ts +29 -0
- package/dist/languages/astgrep-backend/index.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/index.js +28 -0
- package/dist/languages/astgrep-backend/index.js.map +1 -0
- package/dist/languages/astgrep-backend/lang/bash.d.ts +38 -0
- package/dist/languages/astgrep-backend/lang/bash.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/lang/bash.js +42 -0
- package/dist/languages/astgrep-backend/lang/bash.js.map +1 -0
- package/dist/languages/astgrep-backend/lang/c.d.ts +33 -0
- package/dist/languages/astgrep-backend/lang/c.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/lang/c.js +85 -0
- package/dist/languages/astgrep-backend/lang/c.js.map +1 -0
- package/dist/languages/astgrep-backend/lang/cpp.d.ts +27 -0
- package/dist/languages/astgrep-backend/lang/cpp.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/lang/cpp.js +38 -0
- package/dist/languages/astgrep-backend/lang/cpp.js.map +1 -0
- package/dist/languages/astgrep-backend/lang/csharp.d.ts +24 -0
- package/dist/languages/astgrep-backend/lang/csharp.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/lang/csharp.js +102 -0
- package/dist/languages/astgrep-backend/lang/csharp.js.map +1 -0
- package/dist/languages/astgrep-backend/lang/index.d.ts +29 -0
- package/dist/languages/astgrep-backend/lang/index.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/lang/index.js +22 -0
- package/dist/languages/astgrep-backend/lang/index.js.map +1 -0
- package/dist/languages/astgrep-backend/lang/java.d.ts +26 -0
- package/dist/languages/astgrep-backend/lang/java.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/lang/java.js +89 -0
- package/dist/languages/astgrep-backend/lang/java.js.map +1 -0
- package/dist/languages/astgrep-backend/lang/kotlin.d.ts +44 -0
- package/dist/languages/astgrep-backend/lang/kotlin.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/lang/kotlin.js +94 -0
- package/dist/languages/astgrep-backend/lang/kotlin.js.map +1 -0
- package/dist/languages/astgrep-backend/lang/php.d.ts +23 -0
- package/dist/languages/astgrep-backend/lang/php.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/lang/php.js +80 -0
- package/dist/languages/astgrep-backend/lang/php.js.map +1 -0
- package/dist/languages/astgrep-backend/lang/ruby.d.ts +37 -0
- package/dist/languages/astgrep-backend/lang/ruby.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/lang/ruby.js +70 -0
- package/dist/languages/astgrep-backend/lang/ruby.js.map +1 -0
- package/dist/languages/astgrep-backend/lang/swift.d.ts +34 -0
- package/dist/languages/astgrep-backend/lang/swift.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/lang/swift.js +86 -0
- package/dist/languages/astgrep-backend/lang/swift.js.map +1 -0
- package/dist/languages/astgrep-backend/languages.d.ts +55 -0
- package/dist/languages/astgrep-backend/languages.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/languages.js +214 -0
- package/dist/languages/astgrep-backend/languages.js.map +1 -0
- package/dist/languages/astgrep-backend/napi.d.ts +71 -0
- package/dist/languages/astgrep-backend/napi.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/napi.js +176 -0
- package/dist/languages/astgrep-backend/napi.js.map +1 -0
- package/dist/languages/astgrep-backend/syntax.d.ts +88 -0
- package/dist/languages/astgrep-backend/syntax.d.ts.map +1 -0
- package/dist/languages/astgrep-backend/syntax.js +180 -0
- package/dist/languages/astgrep-backend/syntax.js.map +1 -0
- package/dist/languages/index.d.ts +14 -0
- package/dist/languages/index.d.ts.map +1 -0
- package/dist/languages/index.js +37 -0
- package/dist/languages/index.js.map +1 -0
- package/dist/languages/javascript/index.d.ts +4 -0
- package/dist/languages/javascript/index.d.ts.map +1 -0
- package/dist/languages/javascript/index.js +7 -0
- package/dist/languages/javascript/index.js.map +1 -0
- package/dist/languages/jsx/index.d.ts +4 -0
- package/dist/languages/jsx/index.d.ts.map +1 -0
- package/dist/languages/jsx/index.js +7 -0
- package/dist/languages/jsx/index.js.map +1 -0
- package/dist/languages/prose/index.d.ts +53 -0
- package/dist/languages/prose/index.d.ts.map +1 -0
- package/dist/languages/prose/index.js +172 -0
- package/dist/languages/prose/index.js.map +1 -0
- package/dist/languages/prose/line-bytes.d.ts +31 -0
- package/dist/languages/prose/line-bytes.d.ts.map +1 -0
- package/dist/languages/prose/line-bytes.js +39 -0
- package/dist/languages/prose/line-bytes.js.map +1 -0
- package/dist/languages/python/create-adapter.d.ts +20 -0
- package/dist/languages/python/create-adapter.d.ts.map +1 -0
- package/dist/languages/python/create-adapter.js +9 -0
- package/dist/languages/python/create-adapter.js.map +1 -0
- package/dist/languages/python/index.d.ts +4 -0
- package/dist/languages/python/index.d.ts.map +1 -0
- package/dist/languages/python/index.js +6 -0
- package/dist/languages/python/index.js.map +1 -0
- package/dist/languages/python/profile.d.ts +36 -0
- package/dist/languages/python/profile.d.ts.map +1 -0
- package/dist/languages/python/profile.js +282 -0
- package/dist/languages/python/profile.js.map +1 -0
- package/dist/languages/python/signature.d.ts +53 -0
- package/dist/languages/python/signature.d.ts.map +1 -0
- package/dist/languages/python/signature.js +188 -0
- package/dist/languages/python/signature.js.map +1 -0
- package/dist/languages/python/table.d.ts +46 -0
- package/dist/languages/python/table.d.ts.map +1 -0
- package/dist/languages/python/table.js +88 -0
- package/dist/languages/python/table.js.map +1 -0
- package/dist/languages/shared/call-detection.d.ts +17 -0
- package/dist/languages/shared/call-detection.d.ts.map +1 -0
- package/dist/languages/shared/call-detection.js +86 -0
- package/dist/languages/shared/call-detection.js.map +1 -0
- package/dist/languages/shared/chunks.d.ts +28 -0
- package/dist/languages/shared/chunks.d.ts.map +1 -0
- package/dist/languages/shared/chunks.js +181 -0
- package/dist/languages/shared/chunks.js.map +1 -0
- package/dist/languages/shared/create-adapter.d.ts +11 -0
- package/dist/languages/shared/create-adapter.d.ts.map +1 -0
- package/dist/languages/shared/create-adapter.js +90 -0
- package/dist/languages/shared/create-adapter.js.map +1 -0
- package/dist/languages/shared/decisions.d.ts +45 -0
- package/dist/languages/shared/decisions.d.ts.map +1 -0
- package/dist/languages/shared/decisions.js +141 -0
- package/dist/languages/shared/decisions.js.map +1 -0
- package/dist/languages/shared/dialect.d.ts +18 -0
- package/dist/languages/shared/dialect.d.ts.map +1 -0
- package/dist/languages/shared/dialect.js +37 -0
- package/dist/languages/shared/dialect.js.map +1 -0
- package/dist/languages/shared/doc-binding.d.ts +26 -0
- package/dist/languages/shared/doc-binding.d.ts.map +1 -0
- package/dist/languages/shared/doc-binding.js +50 -0
- package/dist/languages/shared/doc-binding.js.map +1 -0
- package/dist/languages/shared/engine.d.ts +49 -0
- package/dist/languages/shared/engine.d.ts.map +1 -0
- package/dist/languages/shared/engine.js +317 -0
- package/dist/languages/shared/engine.js.map +1 -0
- package/dist/languages/shared/extract-symbols.d.ts +5 -0
- package/dist/languages/shared/extract-symbols.d.ts.map +1 -0
- package/dist/languages/shared/extract-symbols.js +31 -0
- package/dist/languages/shared/extract-symbols.js.map +1 -0
- package/dist/languages/shared/fingerprint.d.ts +7 -0
- package/dist/languages/shared/fingerprint.d.ts.map +1 -0
- package/dist/languages/shared/fingerprint.js +95 -0
- package/dist/languages/shared/fingerprint.js.map +1 -0
- package/dist/languages/shared/grammar-loader.d.ts +15 -0
- package/dist/languages/shared/grammar-loader.d.ts.map +1 -0
- package/dist/languages/shared/grammar-loader.js +48 -0
- package/dist/languages/shared/grammar-loader.js.map +1 -0
- package/dist/languages/shared/import-detection.d.ts +24 -0
- package/dist/languages/shared/import-detection.d.ts.map +1 -0
- package/dist/languages/shared/import-detection.js +138 -0
- package/dist/languages/shared/import-detection.js.map +1 -0
- package/dist/languages/shared/js-family-profile.d.ts +5 -0
- package/dist/languages/shared/js-family-profile.d.ts.map +1 -0
- package/dist/languages/shared/js-family-profile.js +179 -0
- package/dist/languages/shared/js-family-profile.js.map +1 -0
- package/dist/languages/shared/node-kinds.d.ts +78 -0
- package/dist/languages/shared/node-kinds.d.ts.map +1 -0
- package/dist/languages/shared/node-kinds.js +141 -0
- package/dist/languages/shared/node-kinds.js.map +1 -0
- package/dist/languages/shared/node-utils.d.ts +31 -0
- package/dist/languages/shared/node-utils.d.ts.map +1 -0
- package/dist/languages/shared/node-utils.js +89 -0
- package/dist/languages/shared/node-utils.js.map +1 -0
- package/dist/languages/shared/parse-diagnostics.d.ts +44 -0
- package/dist/languages/shared/parse-diagnostics.d.ts.map +1 -0
- package/dist/languages/shared/parse-diagnostics.js +64 -0
- package/dist/languages/shared/parse-diagnostics.js.map +1 -0
- package/dist/languages/shared/parse-limits.d.ts +24 -0
- package/dist/languages/shared/parse-limits.d.ts.map +1 -0
- package/dist/languages/shared/parse-limits.js +134 -0
- package/dist/languages/shared/parse-limits.js.map +1 -0
- package/dist/languages/shared/profile.d.ts +149 -0
- package/dist/languages/shared/profile.d.ts.map +1 -0
- package/dist/languages/shared/profile.js +9 -0
- package/dist/languages/shared/profile.js.map +1 -0
- package/dist/languages/shared/scope-model.d.ts +32 -0
- package/dist/languages/shared/scope-model.d.ts.map +1 -0
- package/dist/languages/shared/scope-model.js +2 -0
- package/dist/languages/shared/scope-model.js.map +1 -0
- package/dist/languages/shared/scope-naming.d.ts +20 -0
- package/dist/languages/shared/scope-naming.d.ts.map +1 -0
- package/dist/languages/shared/scope-naming.js +118 -0
- package/dist/languages/shared/scope-naming.js.map +1 -0
- package/dist/languages/shared/scope-signature.d.ts +14 -0
- package/dist/languages/shared/scope-signature.d.ts.map +1 -0
- package/dist/languages/shared/scope-signature.js +82 -0
- package/dist/languages/shared/scope-signature.js.map +1 -0
- package/dist/languages/shared/signature.d.ts +55 -0
- package/dist/languages/shared/signature.d.ts.map +1 -0
- package/dist/languages/shared/signature.js +147 -0
- package/dist/languages/shared/signature.js.map +1 -0
- package/dist/languages/shared/syntax.d.ts +115 -0
- package/dist/languages/shared/syntax.d.ts.map +1 -0
- package/dist/languages/shared/syntax.js +2 -0
- package/dist/languages/shared/syntax.js.map +1 -0
- package/dist/languages/shared/table-profile-decisions.d.ts +54 -0
- package/dist/languages/shared/table-profile-decisions.d.ts.map +1 -0
- package/dist/languages/shared/table-profile-decisions.js +245 -0
- package/dist/languages/shared/table-profile-decisions.js.map +1 -0
- package/dist/languages/shared/table-profile-module-facts.d.ts +29 -0
- package/dist/languages/shared/table-profile-module-facts.d.ts.map +1 -0
- package/dist/languages/shared/table-profile-module-facts.js +139 -0
- package/dist/languages/shared/table-profile-module-facts.js.map +1 -0
- package/dist/languages/shared/table-profile-queries.d.ts +27 -0
- package/dist/languages/shared/table-profile-queries.d.ts.map +1 -0
- package/dist/languages/shared/table-profile-queries.js +70 -0
- package/dist/languages/shared/table-profile-queries.js.map +1 -0
- package/dist/languages/shared/table-profile-scopes.d.ts +46 -0
- package/dist/languages/shared/table-profile-scopes.d.ts.map +1 -0
- package/dist/languages/shared/table-profile-scopes.js +180 -0
- package/dist/languages/shared/table-profile-scopes.js.map +1 -0
- package/dist/languages/shared/table-profile.d.ts +302 -0
- package/dist/languages/shared/table-profile.d.ts.map +1 -0
- package/dist/languages/shared/table-profile.js +125 -0
- package/dist/languages/shared/table-profile.js.map +1 -0
- package/dist/languages/shared/tree-sitter-types.d.ts +44 -0
- package/dist/languages/shared/tree-sitter-types.d.ts.map +1 -0
- package/dist/languages/shared/tree-sitter-types.js +2 -0
- package/dist/languages/shared/tree-sitter-types.js.map +1 -0
- package/dist/languages/structured-text/index.d.ts +48 -0
- package/dist/languages/structured-text/index.d.ts.map +1 -0
- package/dist/languages/structured-text/index.js +120 -0
- package/dist/languages/structured-text/index.js.map +1 -0
- package/dist/languages/tsx/index.d.ts +4 -0
- package/dist/languages/tsx/index.d.ts.map +1 -0
- package/dist/languages/tsx/index.js +7 -0
- package/dist/languages/tsx/index.js.map +1 -0
- package/dist/languages/typescript/index.d.ts +4 -0
- package/dist/languages/typescript/index.d.ts.map +1 -0
- package/dist/languages/typescript/index.js +7 -0
- package/dist/languages/typescript/index.js.map +1 -0
- package/dist/languages/vue/index.d.ts +21 -0
- package/dist/languages/vue/index.d.ts.map +1 -0
- package/dist/languages/vue/index.js +234 -0
- package/dist/languages/vue/index.js.map +1 -0
- package/dist/languages/vue/mapping.d.ts +11 -0
- package/dist/languages/vue/mapping.d.ts.map +1 -0
- package/dist/languages/vue/mapping.js +77 -0
- package/dist/languages/vue/mapping.js.map +1 -0
- package/dist/registry.d.ts +24 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +42 -0
- package/dist/registry.js.map +1 -0
- package/dist/text/byte-offset-table.d.ts +27 -0
- package/dist/text/byte-offset-table.d.ts.map +1 -0
- package/dist/text/byte-offset-table.js +39 -0
- package/dist/text/byte-offset-table.js.map +1 -0
- package/package.json +125 -3
- package/src/boundaries/expression.ts +95 -0
- package/src/boundaries/extract.ts +307 -0
- package/src/boundaries/python.ts +181 -0
- package/src/index.ts +51 -0
- package/src/languages/__golden__/javascript-basic.json +32 -0
- package/src/languages/__golden__/tsx-basic.json +19 -0
- package/src/languages/__golden__/typescript-basic.json +37 -0
- package/src/languages/astgrep-backend/GRAMMARS.md +86 -0
- package/src/languages/astgrep-backend/README.md +112 -0
- package/src/languages/astgrep-backend/__golden__/bash-basic.sh +53 -0
- package/src/languages/astgrep-backend/__golden__/c-basic.c +64 -0
- package/src/languages/astgrep-backend/__golden__/cpp-basic.cpp +65 -0
- package/src/languages/astgrep-backend/__golden__/csharp-basic.cs +73 -0
- package/src/languages/astgrep-backend/__golden__/go-basic.go +93 -0
- package/src/languages/astgrep-backend/__golden__/java-basic.java +62 -0
- package/src/languages/astgrep-backend/__golden__/kotlin-basic.kt +58 -0
- package/src/languages/astgrep-backend/__golden__/php-basic.php +72 -0
- package/src/languages/astgrep-backend/__golden__/ruby-basic.rb +62 -0
- package/src/languages/astgrep-backend/__golden__/rust-basic.rs +82 -0
- package/src/languages/astgrep-backend/__golden__/swift-basic.swift +73 -0
- package/src/languages/astgrep-backend/adapter.ts +240 -0
- package/src/languages/astgrep-backend/index.ts +44 -0
- package/src/languages/astgrep-backend/lang/README.md +115 -0
- package/src/languages/astgrep-backend/lang/bash.ts +78 -0
- package/src/languages/astgrep-backend/lang/c.ts +119 -0
- package/src/languages/astgrep-backend/lang/cpp.ts +65 -0
- package/src/languages/astgrep-backend/lang/csharp.ts +125 -0
- package/src/languages/astgrep-backend/lang/index.ts +61 -0
- package/src/languages/astgrep-backend/lang/java.ts +115 -0
- package/src/languages/astgrep-backend/lang/kotlin.ts +136 -0
- package/src/languages/astgrep-backend/lang/php.ts +105 -0
- package/src/languages/astgrep-backend/lang/ruby.ts +105 -0
- package/src/languages/astgrep-backend/lang/swift.ts +118 -0
- package/src/languages/astgrep-backend/languages.ts +238 -0
- package/src/languages/astgrep-backend/napi.ts +261 -0
- package/src/languages/astgrep-backend/syntax.ts +242 -0
- package/src/languages/index.ts +53 -0
- package/src/languages/javascript/index.ts +9 -0
- package/src/languages/jsx/index.ts +9 -0
- package/src/languages/prose/index.ts +270 -0
- package/src/languages/prose/line-bytes.ts +52 -0
- package/src/languages/python/README.md +246 -0
- package/src/languages/python/__golden__/python-basic.json +44 -0
- package/src/languages/python/create-adapter.ts +29 -0
- package/src/languages/python/index.ts +8 -0
- package/src/languages/python/profile.ts +341 -0
- package/src/languages/python/signature.ts +183 -0
- package/src/languages/python/table.ts +135 -0
- package/src/languages/shared/__fixtures__/large-over-32kib.ts.txt +1207 -0
- package/src/languages/shared/call-detection.ts +112 -0
- package/src/languages/shared/chunks.ts +255 -0
- package/src/languages/shared/create-adapter.ts +136 -0
- package/src/languages/shared/decisions.ts +204 -0
- package/src/languages/shared/dialect.ts +55 -0
- package/src/languages/shared/doc-binding.ts +78 -0
- package/src/languages/shared/engine.ts +461 -0
- package/src/languages/shared/extract-symbols.ts +35 -0
- package/src/languages/shared/fingerprint.ts +99 -0
- package/src/languages/shared/grammar-loader.ts +67 -0
- package/src/languages/shared/import-detection.ts +154 -0
- package/src/languages/shared/js-family-profile.ts +246 -0
- package/src/languages/shared/node-kinds.ts +153 -0
- package/src/languages/shared/node-utils.ts +120 -0
- package/src/languages/shared/parse-diagnostics.ts +125 -0
- package/src/languages/shared/parse-limits.ts +147 -0
- package/src/languages/shared/profile.ts +184 -0
- package/src/languages/shared/scope-model.ts +43 -0
- package/src/languages/shared/scope-naming.ts +124 -0
- package/src/languages/shared/scope-signature.ts +108 -0
- package/src/languages/shared/signature.ts +149 -0
- package/src/languages/shared/syntax.ts +116 -0
- package/src/languages/shared/table-profile-decisions.ts +251 -0
- package/src/languages/shared/table-profile-module-facts.ts +177 -0
- package/src/languages/shared/table-profile-queries.ts +85 -0
- package/src/languages/shared/table-profile-scopes.ts +198 -0
- package/src/languages/shared/table-profile.ts +427 -0
- package/src/languages/shared/tree-sitter-types.ts +46 -0
- package/src/languages/structured-text/index.ts +192 -0
- package/src/languages/tsx/index.ts +9 -0
- package/src/languages/typescript/index.ts +9 -0
- package/src/languages/vue/index.ts +312 -0
- package/src/languages/vue/mapping.ts +93 -0
- package/src/registry.ts +61 -0
- package/src/text/byte-offset-table.ts +63 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../src/languages/python/profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signature text normalization for Python (spec.md §5.5).
|
|
3
|
+
*
|
|
4
|
+
* `normalizedSignature` feeds `buildSymbolId` and MUST be stable across
|
|
5
|
+
* formatting-only edits. Rules (documented WP-09 decision — Python has no
|
|
6
|
+
* `tree-sitter-python` grammar to reuse `languages/shared/signature.ts`'s
|
|
7
|
+
* `<`/`>`-as-bracket assumption from, which is wrong for Python anyway:
|
|
8
|
+
* `<`/`>` are ONLY comparison operators here, never generic brackets):
|
|
9
|
+
*
|
|
10
|
+
* 1. **Whitespace**: any run of spaces/tabs/newlines collapses to a single
|
|
11
|
+
* space; spacing around `,`, `:` (annotation colon) and `=` (only for
|
|
12
|
+
* an ANNOTATED parameter's default, per PEP 8 — `x: int = 1`, not
|
|
13
|
+
* `x=1`) is canonicalized.
|
|
14
|
+
* 2. **Default values** (`= <expr>`) are STRIPPED from the identity
|
|
15
|
+
* signature, exactly like the TS/JS adapters: a default value is a
|
|
16
|
+
* call-site convenience, not a change to the parameter's name,
|
|
17
|
+
* position, or `*`/`**` role — keeping it would change a symbol's id on
|
|
18
|
+
* a body-only-feeling edit (`def f(a=1)` -> `def f(a=2)` should not look
|
|
19
|
+
* like a new symbol). Unlike TypeScript, Python has no separate
|
|
20
|
+
* "optional marker" syntax (`?`) that would otherwise carry the
|
|
21
|
+
* "caller may omit this" information forward — that information is
|
|
22
|
+
* simply not part of the normalized identity for Python, a documented
|
|
23
|
+
* (not accidental) asymmetry with the TS/JS adapters.
|
|
24
|
+
* 3. **Type annotations** (`: <type>`) are kept verbatim (modulo whitespace
|
|
25
|
+
* rules) — they are part of the observable call contract.
|
|
26
|
+
* 4. **`*args` / `**kwargs` / bare `*` (keyword-only marker) / `/`
|
|
27
|
+
* (positional-only marker, PEP 570)**: their `*`/`**`/`/` marker is kept
|
|
28
|
+
* exactly as written (it changes the call contract), only a following
|
|
29
|
+
* default (impossible for `*args`/`**kwargs`/markers, but harmless to
|
|
30
|
+
* guard) or its annotation spacing is normalized.
|
|
31
|
+
* 5. **Return type** (`-> <type>`) is kept verbatim (modulo whitespace),
|
|
32
|
+
* canonicalized to always have exactly one space on each side of `->`.
|
|
33
|
+
*
|
|
34
|
+
* Known limitation (documented, not a defect, mirroring the TS/JS
|
|
35
|
+
* adapters' own documented limitation): default-value stripping uses a
|
|
36
|
+
* bracket-DEPTH scanner over `( [ {` (never `<`/`>` — see above), not a
|
|
37
|
+
* full expression parser. A default expression containing an unbalanced
|
|
38
|
+
* string literal with a comma/`=` inside is not specially protected either
|
|
39
|
+
* (rare enough in default-value position to accept as a scoping decision).
|
|
40
|
+
*/
|
|
41
|
+
/** Collapses whitespace runs to single spaces and trims. */
|
|
42
|
+
export declare function normalizeSpacing(text: string): string;
|
|
43
|
+
/** Splits `content` on top-level `,` (depth 0 w.r.t. `( [ {`). */
|
|
44
|
+
export declare function splitTopLevelComma(content: string): string[];
|
|
45
|
+
/** Strips one parameter entry's default value (`= <expr>`), keeping any annotation before it. */
|
|
46
|
+
export declare function stripDefaultValue(entry: string): string;
|
|
47
|
+
/** Normalizes a parameter-list text INCLUDING its outer parens, e.g. `( a:int=1, *, b = 2 )` -> `(a: int, *, b)`. */
|
|
48
|
+
export declare function normalizeParameterList(paramsText: string): string;
|
|
49
|
+
/** Normalizes a `-> ReturnType` suffix (or `""` when absent). */
|
|
50
|
+
export declare function normalizeReturnType(returnTypeRaw: string | undefined): string;
|
|
51
|
+
/** Normalizes a class/def header text with no parameter list (e.g. a bare `class Foo:`). */
|
|
52
|
+
export declare function normalizeHeaderText(headerText: string): string;
|
|
53
|
+
//# sourceMappingURL=signature.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../../src/languages/python/signature.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAKH,4DAA4D;AAC5D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,kEAAkE;AAClE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAiC5D;AAyCD,iGAAiG;AACjG,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGvD;AAiCD,qHAAqH;AACrH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CASjE;AAED,iEAAiE;AACjE,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAG7E;AAED,4FAA4F;AAC5F,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9D"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signature text normalization for Python (spec.md §5.5).
|
|
3
|
+
*
|
|
4
|
+
* `normalizedSignature` feeds `buildSymbolId` and MUST be stable across
|
|
5
|
+
* formatting-only edits. Rules (documented WP-09 decision — Python has no
|
|
6
|
+
* `tree-sitter-python` grammar to reuse `languages/shared/signature.ts`'s
|
|
7
|
+
* `<`/`>`-as-bracket assumption from, which is wrong for Python anyway:
|
|
8
|
+
* `<`/`>` are ONLY comparison operators here, never generic brackets):
|
|
9
|
+
*
|
|
10
|
+
* 1. **Whitespace**: any run of spaces/tabs/newlines collapses to a single
|
|
11
|
+
* space; spacing around `,`, `:` (annotation colon) and `=` (only for
|
|
12
|
+
* an ANNOTATED parameter's default, per PEP 8 — `x: int = 1`, not
|
|
13
|
+
* `x=1`) is canonicalized.
|
|
14
|
+
* 2. **Default values** (`= <expr>`) are STRIPPED from the identity
|
|
15
|
+
* signature, exactly like the TS/JS adapters: a default value is a
|
|
16
|
+
* call-site convenience, not a change to the parameter's name,
|
|
17
|
+
* position, or `*`/`**` role — keeping it would change a symbol's id on
|
|
18
|
+
* a body-only-feeling edit (`def f(a=1)` -> `def f(a=2)` should not look
|
|
19
|
+
* like a new symbol). Unlike TypeScript, Python has no separate
|
|
20
|
+
* "optional marker" syntax (`?`) that would otherwise carry the
|
|
21
|
+
* "caller may omit this" information forward — that information is
|
|
22
|
+
* simply not part of the normalized identity for Python, a documented
|
|
23
|
+
* (not accidental) asymmetry with the TS/JS adapters.
|
|
24
|
+
* 3. **Type annotations** (`: <type>`) are kept verbatim (modulo whitespace
|
|
25
|
+
* rules) — they are part of the observable call contract.
|
|
26
|
+
* 4. **`*args` / `**kwargs` / bare `*` (keyword-only marker) / `/`
|
|
27
|
+
* (positional-only marker, PEP 570)**: their `*`/`**`/`/` marker is kept
|
|
28
|
+
* exactly as written (it changes the call contract), only a following
|
|
29
|
+
* default (impossible for `*args`/`**kwargs`/markers, but harmless to
|
|
30
|
+
* guard) or its annotation spacing is normalized.
|
|
31
|
+
* 5. **Return type** (`-> <type>`) is kept verbatim (modulo whitespace),
|
|
32
|
+
* canonicalized to always have exactly one space on each side of `->`.
|
|
33
|
+
*
|
|
34
|
+
* Known limitation (documented, not a defect, mirroring the TS/JS
|
|
35
|
+
* adapters' own documented limitation): default-value stripping uses a
|
|
36
|
+
* bracket-DEPTH scanner over `( [ {` (never `<`/`>` — see above), not a
|
|
37
|
+
* full expression parser. A default expression containing an unbalanced
|
|
38
|
+
* string literal with a comma/`=` inside is not specially protected either
|
|
39
|
+
* (rare enough in default-value position to accept as a scoping decision).
|
|
40
|
+
*/
|
|
41
|
+
const OPEN_BRACKETS = new Set(["(", "[", "{"]);
|
|
42
|
+
const CLOSE_BRACKETS = new Set([")", "]", "}"]);
|
|
43
|
+
/** Collapses whitespace runs to single spaces and trims. */
|
|
44
|
+
export function normalizeSpacing(text) {
|
|
45
|
+
return text.replace(/\s+/g, " ").trim();
|
|
46
|
+
}
|
|
47
|
+
/** Splits `content` on top-level `,` (depth 0 w.r.t. `( [ {`). */
|
|
48
|
+
export function splitTopLevelComma(content) {
|
|
49
|
+
const parts = [];
|
|
50
|
+
let depth = 0;
|
|
51
|
+
let current = "";
|
|
52
|
+
let inString = null;
|
|
53
|
+
for (let i = 0; i < content.length; i += 1) {
|
|
54
|
+
const ch = content[i];
|
|
55
|
+
if (inString !== null) {
|
|
56
|
+
current += ch;
|
|
57
|
+
if (ch === "\\") {
|
|
58
|
+
i += 1;
|
|
59
|
+
if (i < content.length)
|
|
60
|
+
current += content[i];
|
|
61
|
+
}
|
|
62
|
+
else if (ch === inString) {
|
|
63
|
+
inString = null;
|
|
64
|
+
}
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
if (ch === '"' || ch === "'") {
|
|
68
|
+
inString = ch;
|
|
69
|
+
current += ch;
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (OPEN_BRACKETS.has(ch))
|
|
73
|
+
depth += 1;
|
|
74
|
+
else if (CLOSE_BRACKETS.has(ch))
|
|
75
|
+
depth = Math.max(0, depth - 1);
|
|
76
|
+
if (ch === "," && depth === 0) {
|
|
77
|
+
parts.push(current);
|
|
78
|
+
current = "";
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
current += ch;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
parts.push(current);
|
|
85
|
+
return parts;
|
|
86
|
+
}
|
|
87
|
+
/** Index of the top-level `=` introducing a default value, or -1. Excludes `==`, `!=`, `<=`, `>=`, `:=`. */
|
|
88
|
+
function findTopLevelDefaultEquals(text) {
|
|
89
|
+
let depth = 0;
|
|
90
|
+
let inString = null;
|
|
91
|
+
for (let i = 0; i < text.length; i += 1) {
|
|
92
|
+
const ch = text[i];
|
|
93
|
+
if (inString !== null) {
|
|
94
|
+
if (ch === "\\")
|
|
95
|
+
i += 1;
|
|
96
|
+
else if (ch === inString)
|
|
97
|
+
inString = null;
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
if (ch === '"' || ch === "'") {
|
|
101
|
+
inString = ch;
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (OPEN_BRACKETS.has(ch)) {
|
|
105
|
+
depth += 1;
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
if (CLOSE_BRACKETS.has(ch)) {
|
|
109
|
+
depth = Math.max(0, depth - 1);
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
if (ch === "=" && depth === 0) {
|
|
113
|
+
const prev = i > 0 ? text[i - 1] : "";
|
|
114
|
+
const next = i + 1 < text.length ? text[i + 1] : "";
|
|
115
|
+
const isCompoundOperator = next === "=" ||
|
|
116
|
+
prev === "=" ||
|
|
117
|
+
prev === "!" ||
|
|
118
|
+
prev === "<" ||
|
|
119
|
+
prev === ">" ||
|
|
120
|
+
prev === ":";
|
|
121
|
+
if (!isCompoundOperator)
|
|
122
|
+
return i;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return -1;
|
|
126
|
+
}
|
|
127
|
+
/** Strips one parameter entry's default value (`= <expr>`), keeping any annotation before it. */
|
|
128
|
+
export function stripDefaultValue(entry) {
|
|
129
|
+
const eqIndex = findTopLevelDefaultEquals(entry);
|
|
130
|
+
return eqIndex === -1 ? entry : entry.slice(0, eqIndex).trimEnd();
|
|
131
|
+
}
|
|
132
|
+
/** Canonicalizes one parameter entry's internal spacing: `a :int=1` -> `a: int`. */
|
|
133
|
+
function normalizeParamEntry(entry) {
|
|
134
|
+
const stripped = stripDefaultValue(entry);
|
|
135
|
+
const colonIndex = topLevelColonIndex(stripped);
|
|
136
|
+
if (colonIndex === -1)
|
|
137
|
+
return normalizeSpacing(stripped);
|
|
138
|
+
const name = normalizeSpacing(stripped.slice(0, colonIndex));
|
|
139
|
+
const annotation = normalizeSpacing(stripped.slice(colonIndex + 1));
|
|
140
|
+
return `${name}: ${annotation}`;
|
|
141
|
+
}
|
|
142
|
+
function topLevelColonIndex(text) {
|
|
143
|
+
let depth = 0;
|
|
144
|
+
let inString = null;
|
|
145
|
+
for (let i = 0; i < text.length; i += 1) {
|
|
146
|
+
const ch = text[i];
|
|
147
|
+
if (inString !== null) {
|
|
148
|
+
if (ch === "\\")
|
|
149
|
+
i += 1;
|
|
150
|
+
else if (ch === inString)
|
|
151
|
+
inString = null;
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
if (ch === '"' || ch === "'") {
|
|
155
|
+
inString = ch;
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
if (OPEN_BRACKETS.has(ch))
|
|
159
|
+
depth += 1;
|
|
160
|
+
else if (CLOSE_BRACKETS.has(ch))
|
|
161
|
+
depth = Math.max(0, depth - 1);
|
|
162
|
+
else if (ch === ":" && depth === 0)
|
|
163
|
+
return i;
|
|
164
|
+
}
|
|
165
|
+
return -1;
|
|
166
|
+
}
|
|
167
|
+
/** Normalizes a parameter-list text INCLUDING its outer parens, e.g. `( a:int=1, *, b = 2 )` -> `(a: int, *, b)`. */
|
|
168
|
+
export function normalizeParameterList(paramsText) {
|
|
169
|
+
const trimmed = paramsText.trim();
|
|
170
|
+
const hasParens = trimmed.startsWith("(") && trimmed.endsWith(")");
|
|
171
|
+
const inner = hasParens ? trimmed.slice(1, -1) : trimmed;
|
|
172
|
+
const entries = splitTopLevelComma(inner)
|
|
173
|
+
.map((entry) => entry.trim())
|
|
174
|
+
.filter((entry) => entry.length > 0);
|
|
175
|
+
const normalizedEntries = entries.map(normalizeParamEntry);
|
|
176
|
+
return `(${normalizedEntries.join(", ")})`;
|
|
177
|
+
}
|
|
178
|
+
/** Normalizes a `-> ReturnType` suffix (or `""` when absent). */
|
|
179
|
+
export function normalizeReturnType(returnTypeRaw) {
|
|
180
|
+
if (returnTypeRaw === undefined || returnTypeRaw.trim().length === 0)
|
|
181
|
+
return "";
|
|
182
|
+
return ` -> ${normalizeSpacing(returnTypeRaw)}`;
|
|
183
|
+
}
|
|
184
|
+
/** Normalizes a class/def header text with no parameter list (e.g. a bare `class Foo:`). */
|
|
185
|
+
export function normalizeHeaderText(headerText) {
|
|
186
|
+
return normalizeSpacing(headerText.replace(/:\s*$/, ""));
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=signature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../../../src/languages/python/signature.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Die Sprachtabelle fuer Python — die zwoelfte Sprache des ast-grep-Backends.
|
|
3
|
+
*
|
|
4
|
+
* WAS HIER GESCHAH (WP-239): bis Welle 7 stand an dieser Stelle ein
|
|
5
|
+
* HANDGESCHRIEBENER Tokenizer, Parser und AST-Motor ueber 5.604 Zeilen. Sie
|
|
6
|
+
* entstanden nicht aus einer fachlichen Notwendigkeit, sondern weil eine zu
|
|
7
|
+
* enge Auftragsgrenze einem Agenten verbot, `package.json` anzufassen
|
|
8
|
+
* (dokumentiert in `docs/PARITY.md`). Die Grammatik, die es dafuer braucht,
|
|
9
|
+
* gibt es fertig und MIT-lizenziert: `@ast-grep/lang-python`.
|
|
10
|
+
*
|
|
11
|
+
* WAS DIE ABLOESUNG NEBENBEI BEHOBEN HAT — nicht durch eine Korrektur,
|
|
12
|
+
* sondern weil die Klasse von Fehlern verschwindet:
|
|
13
|
+
*
|
|
14
|
+
* - WP-238: `with a() as x, b() as y:` liess im handgeschriebenen Parser die
|
|
15
|
+
* GANZE Datei mit `parseQuality: "failed"` durchfallen. Die Grammatik legt
|
|
16
|
+
* dafuer `with_clause > with_item*` an; es gibt nichts zu erkennen.
|
|
17
|
+
* - WP-115: verschachtelte Ausdruecke in f-String-Formatangaben
|
|
18
|
+
* (`f"{x:{w}.{p}}"`) gingen im Teil-Parse verloren. Hier sind sie
|
|
19
|
+
* gewoehnliche `interpolation`/`format_expression`-Knoten im Baum —
|
|
20
|
+
* deshalb steht `string` NICHT unter `stringContainerKinds` (siehe dort).
|
|
21
|
+
* - WP-226: ein nachgestellter Kommentar vor dem Zeilenende verschluckte im
|
|
22
|
+
* Tokenizer das NEWLINE. Ein `comment` ist hier ein Geschwister wie jedes
|
|
23
|
+
* andere.
|
|
24
|
+
*
|
|
25
|
+
* WAS DIE TABELLE NICHT LEISTET, steht in `profile.ts` daneben: Docstrings,
|
|
26
|
+
* Sichtbarkeit aus der Namenskonvention, `__all__`, die Unterscheidung
|
|
27
|
+
* Funktion/Methode/Konstruktor und die Importformen sind Python-Regeln, die
|
|
28
|
+
* KEINE Tabelle ausdrueckt. Sie stehen als Verfeinerung ueber diesem Profil,
|
|
29
|
+
* nicht als Sonderfaelle im gemeinsamen Motor.
|
|
30
|
+
*
|
|
31
|
+
* DIE KNOTENARTEN SIND NACHGESEHEN, NICHT GERATEN: jede Zeichenkette hier
|
|
32
|
+
* stammt aus einem echten Baum, den `adapters.test.ts` mit demselben
|
|
33
|
+
* Quelltext wieder erzeugt.
|
|
34
|
+
*/
|
|
35
|
+
import type { AstGrepLanguageSource } from "../astgrep-backend/index.js";
|
|
36
|
+
import type { LanguageKindTable } from "../shared/table-profile.js";
|
|
37
|
+
/** Woher die Grammatik kommt. MIT-lizenziert, siehe `THIRD_PARTY_LICENSES.md`. */
|
|
38
|
+
export declare const PYTHON_SOURCE: AstGrepLanguageSource;
|
|
39
|
+
/**
|
|
40
|
+
* Zeichenkettenblaetter. Sie stehen NICHT unter `numberLeafKinds` und
|
|
41
|
+
* Verwandten, weil `simpleLiteralKind` daraus "number"/"boolean"/"null"
|
|
42
|
+
* ableitet; `profile.ts` haengt sie an und beantwortet sie mit "string".
|
|
43
|
+
*/
|
|
44
|
+
export declare const PYTHON_STRING_LEAF_KINDS: readonly string[];
|
|
45
|
+
export declare const PYTHON_TABLE: LanguageKindTable;
|
|
46
|
+
//# sourceMappingURL=table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/languages/python/table.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,kFAAkF;AAClF,eAAO,MAAM,aAAa,EAAE,qBAG3B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAA0C,CAAC;AAEjG,eAAO,MAAM,YAAY,EAAE,iBAmF1B,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { DEFAULT_PUNCTUATION } from "../shared/table-profile.js";
|
|
2
|
+
/** Woher die Grammatik kommt. MIT-lizenziert, siehe `THIRD_PARTY_LICENSES.md`. */
|
|
3
|
+
export const PYTHON_SOURCE = {
|
|
4
|
+
languageName: "python",
|
|
5
|
+
moduleName: "@ast-grep/lang-python",
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Zeichenkettenblaetter. Sie stehen NICHT unter `numberLeafKinds` und
|
|
9
|
+
* Verwandten, weil `simpleLiteralKind` daraus "number"/"boolean"/"null"
|
|
10
|
+
* ableitet; `profile.ts` haengt sie an und beantwortet sie mit "string".
|
|
11
|
+
*/
|
|
12
|
+
export const PYTHON_STRING_LEAF_KINDS = ["string_content", "escape_sequence"];
|
|
13
|
+
export const PYTHON_TABLE = {
|
|
14
|
+
languageId: "python",
|
|
15
|
+
extensions: [".py", ".pyi"],
|
|
16
|
+
supportLevel: "deep",
|
|
17
|
+
commentKinds: ["comment"],
|
|
18
|
+
/**
|
|
19
|
+
* ABSICHTLICH LEER. Ein `string` waere in jeder anderen Sprache ein
|
|
20
|
+
* Container, dessen Teilbaum EIN Operand ist. In Python ist er das nicht:
|
|
21
|
+
* ein f-String traegt `interpolation`-Knoten mit vollwertigen Ausdruecken,
|
|
22
|
+
* und ein Aufruf darin ist ein Aufruf. Wer `string` hier eintraegt, macht
|
|
23
|
+
* WP-115 zum zweiten Mal — nur diesmal ohne Diagnose, weil der Walk gar
|
|
24
|
+
* nicht erst hineinsieht.
|
|
25
|
+
*/
|
|
26
|
+
stringContainerKinds: [],
|
|
27
|
+
identifierLeafKinds: ["identifier"],
|
|
28
|
+
numberLeafKinds: ["integer", "float"],
|
|
29
|
+
booleanLeafKinds: ["true", "false"],
|
|
30
|
+
nullLeafKinds: ["none"],
|
|
31
|
+
// `string_start`/`string_end` tragen das Praefix und die Anfuehrungszeichen;
|
|
32
|
+
// sie sind Struktur, kein Operator. Ohne sie stuende `f"` als "Operator" in
|
|
33
|
+
// jeder Halstead-Rechnung.
|
|
34
|
+
punctuationKinds: [...DEFAULT_PUNCTUATION, "string_start", "string_end"],
|
|
35
|
+
scopes: [
|
|
36
|
+
{ kinds: ["function_definition"], scopeKind: "function" },
|
|
37
|
+
{ kinds: ["class_definition"], scopeKind: "class" },
|
|
38
|
+
// Ein `lambda` ist eine Ausfuehrungseinheit wie eine `def`: spec.md §16.1
|
|
39
|
+
// zaehlt Lambdas mit, und §16.4 verlangt fuer sie ein eigenes
|
|
40
|
+
// Nesting-Ereignis im umgebenden Scope. Beides haengt daran, dass es hier
|
|
41
|
+
// steht.
|
|
42
|
+
{ kinds: ["lambda"], scopeKind: "function" },
|
|
43
|
+
],
|
|
44
|
+
decisions: {
|
|
45
|
+
// `if_clause` ist BEIDES: der Filter einer Komprehension
|
|
46
|
+
// (`[x for x in a if p(x)]`) und der Waechter eines `case`. Beide sind
|
|
47
|
+
// eine echte Verzweigung, beide zaehlen — und beide heissen so.
|
|
48
|
+
ifKinds: ["if_statement", "if_clause"],
|
|
49
|
+
elseIfKinds: ["elif_clause"],
|
|
50
|
+
// `for_in_clause` ist die `for`-Klausel einer Komprehension. Sie ist eine
|
|
51
|
+
// Schleife, auch wenn sie keine Anweisung ist.
|
|
52
|
+
loopKinds: ["for_statement", "while_statement", "for_in_clause"],
|
|
53
|
+
catchKinds: ["except_clause", "except_group_clause"],
|
|
54
|
+
ternaryKinds: ["conditional_expression"],
|
|
55
|
+
switchKinds: ["match_statement"],
|
|
56
|
+
caseKinds: ["case_clause"],
|
|
57
|
+
// `case _:` zaehlt in Python MIT: anders als ein C-`default` ist `_` ein
|
|
58
|
+
// gewoehnliches Muster in der Reihenfolge, und ein `match` bricht ohne
|
|
59
|
+
// Treffer einfach ab. Deshalb steht hier KEIN `caseExcludeChildKinds`.
|
|
60
|
+
patternAlternativeKinds: ["union_pattern"],
|
|
61
|
+
binaryKinds: ["boolean_operator"],
|
|
62
|
+
operatorField: "operator",
|
|
63
|
+
logicalAndOperators: ["and"],
|
|
64
|
+
logicalOrOperators: ["or"],
|
|
65
|
+
jumpKinds: ["return_statement", "raise_statement", "break_statement", "continue_statement"],
|
|
66
|
+
blockKinds: ["block"],
|
|
67
|
+
consequenceField: "consequence",
|
|
68
|
+
// `elif_clause` UND `else_clause` stehen beide im Feld `alternative`.
|
|
69
|
+
// Genau deshalb ist ein `if` mit `elif` kein Waechter (`guard`), sondern
|
|
70
|
+
// ein `if` — was `adapters.test.ts` festhaelt.
|
|
71
|
+
alternativeField: "alternative",
|
|
72
|
+
},
|
|
73
|
+
// Die Importe wertet `profile.ts` aus: Python fuehrt in EINER Anweisung
|
|
74
|
+
// mehrere Ziele mit je eigenem Alias, und das druecken `ImportRules` nicht
|
|
75
|
+
// aus. Die Arten stehen hier, damit das Vorsieb (`needsNode`) sie kennt.
|
|
76
|
+
imports: {
|
|
77
|
+
kinds: ["import_statement", "import_from_statement", "future_import_statement"],
|
|
78
|
+
},
|
|
79
|
+
calls: {
|
|
80
|
+
kinds: ["call"],
|
|
81
|
+
functionField: "function",
|
|
82
|
+
argumentsField: "arguments",
|
|
83
|
+
memberKinds: ["attribute"],
|
|
84
|
+
},
|
|
85
|
+
declarationParentKinds: ["function_definition", "class_definition"],
|
|
86
|
+
bodyField: "body",
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../../src/languages/python/table.ts"],"names":[],"mappings":"AAoCA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,kFAAkF;AAClF,MAAM,CAAC,MAAM,aAAa,GAA0B;IAClD,YAAY,EAAE,QAAQ;IACtB,UAAU,EAAE,uBAAuB;CACpC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAsB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;AAEjG,MAAM,CAAC,MAAM,YAAY,GAAsB;IAC7C,UAAU,EAAE,QAAQ;IACpB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM;IACpB,YAAY,EAAE,CAAC,SAAS,CAAC;IAEzB;;;;;;;OAOG;IACH,oBAAoB,EAAE,EAAE;IAExB,mBAAmB,EAAE,CAAC,YAAY,CAAC;IACnC,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;IACrC,gBAAgB,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;IACnC,aAAa,EAAE,CAAC,MAAM,CAAC;IAEvB,6EAA6E;IAC7E,4EAA4E;IAC5E,2BAA2B;IAC3B,gBAAgB,EAAE,CAAC,GAAG,mBAAmB,EAAE,cAAc,EAAE,YAAY,CAAC;IAExE,MAAM,EAAE;QACN,EAAE,KAAK,EAAE,CAAC,qBAAqB,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE;QACzD,EAAE,KAAK,EAAE,CAAC,kBAAkB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE;QACnD,0EAA0E;QAC1E,8DAA8D;QAC9D,0EAA0E;QAC1E,SAAS;QACT,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE;KAC7C;IAED,SAAS,EAAE;QACT,yDAAyD;QACzD,uEAAuE;QACvE,gEAAgE;QAChE,OAAO,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;QACtC,WAAW,EAAE,CAAC,aAAa,CAAC;QAC5B,0EAA0E;QAC1E,+CAA+C;QAC/C,SAAS,EAAE,CAAC,eAAe,EAAE,iBAAiB,EAAE,eAAe,CAAC;QAChE,UAAU,EAAE,CAAC,eAAe,EAAE,qBAAqB,CAAC;QACpD,YAAY,EAAE,CAAC,wBAAwB,CAAC;QACxC,WAAW,EAAE,CAAC,iBAAiB,CAAC;QAChC,SAAS,EAAE,CAAC,aAAa,CAAC;QAC1B,yEAAyE;QACzE,uEAAuE;QACvE,uEAAuE;QACvE,uBAAuB,EAAE,CAAC,eAAe,CAAC;QAC1C,WAAW,EAAE,CAAC,kBAAkB,CAAC;QACjC,aAAa,EAAE,UAAU;QACzB,mBAAmB,EAAE,CAAC,KAAK,CAAC;QAC5B,kBAAkB,EAAE,CAAC,IAAI,CAAC;QAC1B,SAAS,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,CAAC;QAC3F,UAAU,EAAE,CAAC,OAAO,CAAC;QACrB,gBAAgB,EAAE,aAAa;QAC/B,sEAAsE;QACtE,yEAAyE;QACzE,+CAA+C;QAC/C,gBAAgB,EAAE,aAAa;KAChC;IAED,wEAAwE;IACxE,2EAA2E;IAC3E,yEAAyE;IACzE,OAAO,EAAE;QACP,KAAK,EAAE,CAAC,kBAAkB,EAAE,uBAAuB,EAAE,yBAAyB,CAAC;KAChF;IAED,KAAK,EAAE;QACL,KAAK,EAAE,CAAC,MAAM,CAAC;QACf,aAAa,EAAE,UAAU;QACzB,cAAc,EAAE,WAAW;QAC3B,WAAW,EAAE,CAAC,WAAW,CAAC;KAC3B;IAED,sBAAsB,EAAE,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;IAEnE,SAAS,EAAE,MAAM;CAClB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Call-site detection (architecture.md §6.5, spec.md §15.2). No resolution
|
|
3
|
+
* happens here — that is symbol-graph's job (task instructions, explicit).
|
|
4
|
+
*
|
|
5
|
+
* `require(...)` and dynamic `import(...)` are deliberately EXCLUDED here:
|
|
6
|
+
* they are modeled purely as `RawImport` entries (`import-detection.ts`) so
|
|
7
|
+
* the symbol-graph does not see the same source construct as both an import
|
|
8
|
+
* edge and a call edge.
|
|
9
|
+
*/
|
|
10
|
+
import type { RawCall } from "@untangle-code/domain";
|
|
11
|
+
import type { FileTextContext } from "./node-utils.js";
|
|
12
|
+
import type { SyntaxNode } from "./syntax.js";
|
|
13
|
+
/** Detects a `call_expression` as a `RawCall`, or `null` for require/dynamic-import (see file doc). */
|
|
14
|
+
export declare function detectCallExpression(node: SyntaxNode, callerScopeId: string, ctx: FileTextContext): RawCall | null;
|
|
15
|
+
/** Detects a `new_expression` as a `RawCall` (constructor invocation). */
|
|
16
|
+
export declare function detectNewExpression(node: SyntaxNode, callerScopeId: string, ctx: FileTextContext): RawCall | null;
|
|
17
|
+
//# sourceMappingURL=call-detection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call-detection.d.ts","sourceRoot":"","sources":["../../../src/languages/shared/call-detection.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAc9C,uGAAuG;AACvG,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,EAChB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,eAAe,GACnB,OAAO,GAAG,IAAI,CAuChB;AAED,0EAA0E;AAC1E,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,UAAU,EAChB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,eAAe,GACnB,OAAO,GAAG,IAAI,CAiChB"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { rangeOf } from "./node-utils.js";
|
|
2
|
+
function argumentCountOf(node) {
|
|
3
|
+
const args = node.childForFieldName("arguments");
|
|
4
|
+
return args !== null ? args.namedChildCount : undefined;
|
|
5
|
+
}
|
|
6
|
+
function isRequireOrDynamicImportCallee(functionNode) {
|
|
7
|
+
return (functionNode.type === "import" ||
|
|
8
|
+
(functionNode.type === "identifier" && functionNode.text === "require"));
|
|
9
|
+
}
|
|
10
|
+
/** Detects a `call_expression` as a `RawCall`, or `null` for require/dynamic-import (see file doc). */
|
|
11
|
+
export function detectCallExpression(node, callerScopeId, ctx) {
|
|
12
|
+
const functionNode = node.childForFieldName("function");
|
|
13
|
+
if (functionNode === null)
|
|
14
|
+
return null;
|
|
15
|
+
if (isRequireOrDynamicImportCallee(functionNode))
|
|
16
|
+
return null;
|
|
17
|
+
const range = rangeOf(node, ctx);
|
|
18
|
+
const argumentCount = argumentCountOf(node);
|
|
19
|
+
if (functionNode.type === "identifier") {
|
|
20
|
+
return {
|
|
21
|
+
calleeName: functionNode.text,
|
|
22
|
+
callerScopeId,
|
|
23
|
+
range,
|
|
24
|
+
...(argumentCount !== undefined ? { argumentCount } : {}),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
if (functionNode.type === "member_expression") {
|
|
28
|
+
const property = functionNode.childForFieldName("property");
|
|
29
|
+
const object = functionNode.childForFieldName("object");
|
|
30
|
+
if (property === null)
|
|
31
|
+
return null;
|
|
32
|
+
return {
|
|
33
|
+
calleeName: property.text,
|
|
34
|
+
...(object !== null ? { qualifier: object.text } : {}),
|
|
35
|
+
callerScopeId,
|
|
36
|
+
range,
|
|
37
|
+
...(argumentCount !== undefined ? { argumentCount } : {}),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
// Any other callee shape (IIFE, call result invoked again, computed
|
|
41
|
+
// member, etc.): fall back to the raw written expression text as the
|
|
42
|
+
// callee name so the call site is not silently dropped.
|
|
43
|
+
return {
|
|
44
|
+
calleeName: functionNode.text,
|
|
45
|
+
callerScopeId,
|
|
46
|
+
range,
|
|
47
|
+
...(argumentCount !== undefined ? { argumentCount } : {}),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/** Detects a `new_expression` as a `RawCall` (constructor invocation). */
|
|
51
|
+
export function detectNewExpression(node, callerScopeId, ctx) {
|
|
52
|
+
const constructorNode = node.childForFieldName("constructor");
|
|
53
|
+
if (constructorNode === null)
|
|
54
|
+
return null;
|
|
55
|
+
const range = rangeOf(node, ctx);
|
|
56
|
+
const args = node.childForFieldName("arguments");
|
|
57
|
+
const argumentCount = args !== null ? args.namedChildCount : undefined;
|
|
58
|
+
if (constructorNode.type === "identifier") {
|
|
59
|
+
return {
|
|
60
|
+
calleeName: constructorNode.text,
|
|
61
|
+
callerScopeId,
|
|
62
|
+
range,
|
|
63
|
+
...(argumentCount !== undefined ? { argumentCount } : {}),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
if (constructorNode.type === "member_expression") {
|
|
67
|
+
const property = constructorNode.childForFieldName("property");
|
|
68
|
+
const object = constructorNode.childForFieldName("object");
|
|
69
|
+
if (property === null)
|
|
70
|
+
return null;
|
|
71
|
+
return {
|
|
72
|
+
calleeName: property.text,
|
|
73
|
+
...(object !== null ? { qualifier: object.text } : {}),
|
|
74
|
+
callerScopeId,
|
|
75
|
+
range,
|
|
76
|
+
...(argumentCount !== undefined ? { argumentCount } : {}),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
calleeName: constructorNode.text,
|
|
81
|
+
callerScopeId,
|
|
82
|
+
range,
|
|
83
|
+
...(argumentCount !== undefined ? { argumentCount } : {}),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=call-detection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call-detection.js","sourceRoot":"","sources":["../../../src/languages/shared/call-detection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AstRegion tree construction from the `ScopeNode` tree (spec.md §8.2-§8.3).
|
|
3
|
+
*
|
|
4
|
+
* One `AstRegion` of kind `"module"` is returned, spanning the whole file,
|
|
5
|
+
* with a nested `children` tree the chunker descends into for large symbols
|
|
6
|
+
* (spec.md §8.3 step 6) — see domain `analysis.ts` `AstRegion.children` doc.
|
|
7
|
+
*
|
|
8
|
+
* `ChunkKind` (domain `types/common.ts`, spec.md §8.2) has no `"namespace"`
|
|
9
|
+
* member; a TS `namespace`/`module` scope maps to `"module"` (documented
|
|
10
|
+
* WP-06 decision, README "Entscheidungen") since it is itself a nested
|
|
11
|
+
* module-like grouping of symbols.
|
|
12
|
+
*/
|
|
13
|
+
import type { AstRegion } from "@untangle-code/domain";
|
|
14
|
+
import type { FileTextContext } from "./node-utils.js";
|
|
15
|
+
import type { LanguageProfile } from "./profile.js";
|
|
16
|
+
import type { ScopeNode } from "./scope-model.js";
|
|
17
|
+
/**
|
|
18
|
+
* Exported (in addition to being called from {@link buildChildRegions})
|
|
19
|
+
* so `chunks.test.ts` can exercise the WP-73 empty-list guard directly:
|
|
20
|
+
* `buildChildRegions`'s own `flushProperties` never calls this with an
|
|
21
|
+
* empty `properties` array, so that path cannot be reached end-to-end
|
|
22
|
+
* through `buildFileRegion` alone.
|
|
23
|
+
*/
|
|
24
|
+
export declare function propertyGroupRegion(properties: ScopeNode[], parentScopeId: string, ordinal: number, ctx: FileTextContext, profile: LanguageProfile): AstRegion;
|
|
25
|
+
/** Leading file content (shebang/header comments/imports) before the first top-level region, if non-trivial. */
|
|
26
|
+
/** Builds the single root ("module") `AstRegion` for a whole file. */
|
|
27
|
+
export declare function buildFileRegion(fileScope: ScopeNode, ctx: FileTextContext, profile: LanguageProfile): AstRegion;
|
|
28
|
+
//# sourceMappingURL=chunks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunks.d.ts","sourceRoot":"","sources":["../../../src/languages/shared/chunks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,SAAS,EAA0B,MAAM,uBAAuB,CAAC;AAG/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AA2FlD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,SAAS,EAAE,EACvB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,eAAe,GACvB,SAAS,CAgCX;AAkCD,gHAAgH;AAChH,sEAAsE;AACtE,wBAAgB,eAAe,CAC7B,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,eAAe,GACvB,SAAS,CAsBX"}
|