@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,302 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Das TABELLENGETRIEBENE Sprachprofil: eine Sprache kostet eine Tabelle,
|
|
3
|
+
* keinen Motor.
|
|
4
|
+
*
|
|
5
|
+
* Wofuer es da ist (WP-220): fuer jede Sprache, fuer die wir KEINE eigene
|
|
6
|
+
* Grammatik und keine handgeschriebenen Detektoren pflegen wollen. Der
|
|
7
|
+
* vereinheitlichte Walk (`engine.ts`) bleibt derselbe; nur die Bedeutung der
|
|
8
|
+
* Knotenarten kommt aus {@link LanguageKindTable} statt aus Fallunterscheidungen
|
|
9
|
+
* im Motor.
|
|
10
|
+
*
|
|
11
|
+
* WAS DIESE FASSUNG LEISTET — und was nicht. Sie deckt Symbole, Kommentare,
|
|
12
|
+
* Entscheidungen, Nesting, Halstead-Token, Importe und Aufrufe ab. Sie ist
|
|
13
|
+
* damit ausdruecklich SCHWAECHER als die handgeschriebene JS/TS-Fassung
|
|
14
|
+
* (`js-family-profile.ts`), und das steht hier, damit es niemand aus der
|
|
15
|
+
* Ausgabe erraten muss:
|
|
16
|
+
*
|
|
17
|
+
* - Importbindungen (`RawImport.bindings`) liefert sie nur, wo die Tabelle
|
|
18
|
+
* ein Aliasfeld nennt. Sonst FEHLT das Feld, statt eine Zuordnung zu
|
|
19
|
+
* erfinden — der Vertrag in domain `analysis.ts` sagt ausdruecklich, dass
|
|
20
|
+
* ein fehlendes Feld "unbekannt" heisst und Namensgleichheit kein Beweis ist.
|
|
21
|
+
* - Der Aufrufqualifizierer kommt aus der Form des Aufrufziels, nicht aus
|
|
22
|
+
* einer Namensaufloesung. `a.b.c()` liefert Qualifizierer `a.b`.
|
|
23
|
+
* - `normalizedSignature` ist der Kopf bis zum Rumpf, mit den
|
|
24
|
+
* Leerraumregeln aus `signature.ts`. Vorgabewerte werden NICHT entfernt
|
|
25
|
+
* (das ist eine JS/TS-Regel und waere anderswo geraten).
|
|
26
|
+
*
|
|
27
|
+
* Wer eine dieser Grenzen fuer eine Sprache nicht hinnehmen will, schreibt fuer
|
|
28
|
+
* sie ein eigenes Profil — der Vertrag dafuer ist `profile.ts`, und der Motor
|
|
29
|
+
* merkt den Unterschied nicht.
|
|
30
|
+
*/
|
|
31
|
+
import type { SupportLevel } from "@untangle-code/domain";
|
|
32
|
+
import type { LanguageProfile } from "./profile.js";
|
|
33
|
+
import type { ScopeNode } from "./scope-model.js";
|
|
34
|
+
import type { SyntaxNode } from "./syntax.js";
|
|
35
|
+
/** Wie eine Knotenart zu einem Symbolscope wird. */
|
|
36
|
+
export interface ScopeRule {
|
|
37
|
+
/** Knotenarten, die diesen Scope oeffnen. */
|
|
38
|
+
kinds: readonly string[];
|
|
39
|
+
scopeKind: ScopeNode["kind"];
|
|
40
|
+
/**
|
|
41
|
+
* Feld, das den Namen traegt (Vorgabe: `name`). Ein PUNKT trennt einen
|
|
42
|
+
* Feldpfad: Javas `field_declaration` fuehrt seinen Namen unter
|
|
43
|
+
* `declarator.name`, nicht unter `name`.
|
|
44
|
+
*/
|
|
45
|
+
nameField?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Feld mit dem TRAEGER, wenn die Sprache ihn nicht als Elternknoten fuehrt
|
|
48
|
+
* (WP-237). Gos `method_declaration` traegt `(a *A)` unter `receiver`; ohne
|
|
49
|
+
* diesen Zusatz heissen `(*A).Run` und `(*B).Run` beide `Run`.
|
|
50
|
+
*/
|
|
51
|
+
qualifierField?: string;
|
|
52
|
+
/**
|
|
53
|
+
* Knotenarten, die im Traegerfeld den eigentlichen Namen tragen. Der erste
|
|
54
|
+
* Treffer in Quelltextreihenfolge gewinnt. Go nennt den Typ eines
|
|
55
|
+
* Empfaengers `type_identifier`; so bleibt auch `Pair[A, B]` strukturell
|
|
56
|
+
* `Pair`, ohne den Quelltext an Leerzeichen oder Klammern zu zerlegen.
|
|
57
|
+
*/
|
|
58
|
+
qualifierNameKinds?: readonly string[];
|
|
59
|
+
/**
|
|
60
|
+
* Dem Namensfeld so lange weiter folgen, wie es weiterfuehrt. C schreibt
|
|
61
|
+
* `ring_t *ring_new(size_t)` als
|
|
62
|
+
* `function_definition.declarator -> pointer_declarator.declarator ->
|
|
63
|
+
* function_declarator.declarator -> identifier`; ohne diesen Abstieg hiesse
|
|
64
|
+
* jede zeigerwertige Funktion `*ring_new(...)`.
|
|
65
|
+
*/
|
|
66
|
+
nameDescend?: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Kette von KINDKNOTENARTEN, die vor der Namenssuche abgestiegen wird.
|
|
69
|
+
* C# schreibt ein Feld als `field_declaration > variable_declaration >
|
|
70
|
+
* variable_declarator.name`, PHP als `property_declaration >
|
|
71
|
+
* property_element.name`. Ohne den Abstieg stuende der ganze Text im
|
|
72
|
+
* Namen (`"Dictionary<string, string> _items = new()"`).
|
|
73
|
+
*/
|
|
74
|
+
nameKindPath?: readonly string[];
|
|
75
|
+
/** Ersatzweise: Kindknotenarten, deren Text der Name ist (erste Fundstelle). */
|
|
76
|
+
nameKinds?: readonly string[];
|
|
77
|
+
/**
|
|
78
|
+
* Nur dann ein Scope, wenn der ELTERNKNOTEN von dieser Art ist.
|
|
79
|
+
*
|
|
80
|
+
* WOFUER: Kotlin und Swift benutzen `property_declaration` sowohl fuer ein
|
|
81
|
+
* Klassenfeld als auch fuer eine LOKALE Variable in einem Funktionsrumpf.
|
|
82
|
+
* Ohne diese Schranke wuerde `var i = 0` mitten in einer Methode als Symbol
|
|
83
|
+
* gemeldet — eine falsche Aussage ueber die Datei, die in Hotspots,
|
|
84
|
+
* Ratsche und Risikobewertung einflosse.
|
|
85
|
+
*/
|
|
86
|
+
parentKinds?: readonly string[];
|
|
87
|
+
/**
|
|
88
|
+
* Mindestens ein VORFAHRE muss von einer dieser Arten sein. Das grenzt
|
|
89
|
+
* syntaktisch identische Deklarationen nach ihrem Kontext ab: Rust verwendet
|
|
90
|
+
* `function_signature_item` sowohl in Traits als auch in `extern`-Bloecken,
|
|
91
|
+
* aber nur die Trait-Signatur ist eine Methode des analysierten Codes.
|
|
92
|
+
*/
|
|
93
|
+
ancestorKinds?: readonly string[];
|
|
94
|
+
/**
|
|
95
|
+
* Namen, die diesen Scope zu einem Konstruktor machen (Java `<init>`,
|
|
96
|
+
* Rust `new`, ...). Leer heisst: nie ein Konstruktor.
|
|
97
|
+
*/
|
|
98
|
+
constructorNames?: readonly string[];
|
|
99
|
+
/**
|
|
100
|
+
* Verfeinerung nach einem Kindknoten. Go kennt nur `type_spec`; ob daraus
|
|
101
|
+
* eine Klasse (`struct_type`), eine Schnittstelle (`interface_type`) oder ein
|
|
102
|
+
* Typalias wird, steht erst im Kind. Ohne diese Regel muesste die Tabelle
|
|
103
|
+
* luegen oder alles zu `type` einebnen.
|
|
104
|
+
*/
|
|
105
|
+
refine?: readonly {
|
|
106
|
+
childKinds: readonly string[];
|
|
107
|
+
scopeKind: ScopeNode["kind"];
|
|
108
|
+
}[];
|
|
109
|
+
}
|
|
110
|
+
/** Entscheidungs- und Nesting-Regeln (spec.md §16.2–§16.4). */
|
|
111
|
+
export interface DecisionRules {
|
|
112
|
+
ifKinds: readonly string[];
|
|
113
|
+
/**
|
|
114
|
+
* Elternknotenarten, die ein `if` zu einem `else if` machen (JS/Rust:
|
|
115
|
+
* `else_clause`, Go: `if_statement` selbst). Ohne Eintrag gibt es kein
|
|
116
|
+
* `else_if` — und die Zaehlung sagt das dann auch nicht.
|
|
117
|
+
*/
|
|
118
|
+
elseIfParentKinds?: readonly string[];
|
|
119
|
+
/**
|
|
120
|
+
* Huellen, unter denen ein `if` nur dann eine Fortsetzung ist, wenn die
|
|
121
|
+
* Huelle unmittelbar auf ein anonymes `else`-Geschwister folgt. Kotlin
|
|
122
|
+
* bildet `else if` als `else > control_structure_body > if_expression` ab;
|
|
123
|
+
* ein `if` im Dann-Rumpf hat dieselbe Huelle, aber kein `else` davor.
|
|
124
|
+
*/
|
|
125
|
+
elseIfWrapperKinds?: readonly string[];
|
|
126
|
+
/**
|
|
127
|
+
* Bereichssichere Korrektur fuer Grammatiken, die ein gueltiges
|
|
128
|
+
* `else /* Kommentar *\/ if` in Geschwister zerlegen und dabei das anonyme
|
|
129
|
+
* `else`-Token aus dem Baum verlieren. Aktiviert wird sie nur fuer die
|
|
130
|
+
* betroffene Sprache; erkannt wird ausschliesslich ein exaktes `else` im
|
|
131
|
+
* begrenzten Quelltextspalt zwischen zwei AST-Geschwistern.
|
|
132
|
+
*/
|
|
133
|
+
recoverDetachedElseIfAfterComments?: boolean;
|
|
134
|
+
/**
|
|
135
|
+
* Knotenarten, die SELBST ein `else if` sind (Ruby `elsif`, PHP
|
|
136
|
+
* `else_if_clause`, Bash `elif_clause`). Anders als
|
|
137
|
+
* {@link DecisionRules.elseIfParentKinds} braucht es dafuer keinen Blick auf
|
|
138
|
+
* den Elternknoten — die Grammatik sagt es schon.
|
|
139
|
+
*/
|
|
140
|
+
elseIfKinds?: readonly string[];
|
|
141
|
+
loopKinds: readonly string[];
|
|
142
|
+
catchKinds?: readonly string[];
|
|
143
|
+
/**
|
|
144
|
+
* Knotenarten, die eine vorzeitige Rueckkehr SIND (Swift `guard`). Die
|
|
145
|
+
* Guard-Erkennung ueber `consequenceField`/`jumpKinds` findet nur die
|
|
146
|
+
* `if`-Form; wo die Sprache ein eigenes Schluesselwort hat, steht es hier.
|
|
147
|
+
*/
|
|
148
|
+
guardKinds?: readonly string[];
|
|
149
|
+
/**
|
|
150
|
+
* Musteralternativen (`Some(1) | Some(2)` in Rust) — `DecisionKind`
|
|
151
|
+
* `pattern_alternative`.
|
|
152
|
+
*/
|
|
153
|
+
patternAlternativeKinds?: readonly string[];
|
|
154
|
+
/**
|
|
155
|
+
* Knotenarten, die einen KURZSCHLUSS darstellen, ohne ein Operatorfeld zu
|
|
156
|
+
* haben: Rusts `try_expression` (der `?`-Operator). Sie zaehlen wie ein
|
|
157
|
+
* logischer Operator NUR erweitert (spec.md §16.3), nie klassisch.
|
|
158
|
+
*/
|
|
159
|
+
shortCircuitKinds?: readonly string[];
|
|
160
|
+
ternaryKinds?: readonly string[];
|
|
161
|
+
switchKinds?: readonly string[];
|
|
162
|
+
caseKinds?: readonly string[];
|
|
163
|
+
/**
|
|
164
|
+
* Ein `case`-Knoten mit einem DIREKTEN Kind dieser Art ist der
|
|
165
|
+
* Auffangzweig (`default:`) und zaehlt NICHT. Java und C fuehren `case X:`
|
|
166
|
+
* und `default:` unter DERSELBEN Knotenart; ohne diese Ausnahme bekaeme
|
|
167
|
+
* jeder `switch` eine Entscheidung zu viel.
|
|
168
|
+
*/
|
|
169
|
+
caseExcludeChildKinds?: readonly string[];
|
|
170
|
+
/** Dasselbe ueber den Text des ersten Kindes (Bashs Auffangmuster `*)`). */
|
|
171
|
+
caseExcludeFirstChildText?: string;
|
|
172
|
+
/** Binaerausdruecke, deren Operator ueber `operatorField` erreichbar ist. */
|
|
173
|
+
binaryKinds?: readonly string[];
|
|
174
|
+
/**
|
|
175
|
+
* Knotenarten, deren Operator KEIN Feld ist, sondern das erste anonyme Kind.
|
|
176
|
+
* Kotlin (`conjunction_expression`), Swift (`disjunction_expression`) und
|
|
177
|
+
* Bash (`list` mit `&&`/`||`) vergeben dort keine Feldnamen.
|
|
178
|
+
*/
|
|
179
|
+
anonymousOperatorKinds?: readonly string[];
|
|
180
|
+
operatorField?: string;
|
|
181
|
+
logicalAndOperators?: readonly string[];
|
|
182
|
+
logicalOrOperators?: readonly string[];
|
|
183
|
+
shortCircuitOperators?: readonly string[];
|
|
184
|
+
/** Sprunganweisungen fuer die Guard-Clause-Erkennung. */
|
|
185
|
+
jumpKinds?: readonly string[];
|
|
186
|
+
/** Rumpfhuellen, die fuer die Guard-Erkennung durchsichtig sind (Go: `block`+`statement_list`). */
|
|
187
|
+
blockKinds?: readonly string[];
|
|
188
|
+
consequenceField?: string;
|
|
189
|
+
alternativeField?: string;
|
|
190
|
+
}
|
|
191
|
+
/** Importregeln. */
|
|
192
|
+
export interface ImportRules {
|
|
193
|
+
/** Anweisungsarten, die einen Import darstellen. */
|
|
194
|
+
kinds: readonly string[];
|
|
195
|
+
/** Untereintraege innerhalb der Anweisung (Go: `import_spec`). Leer: die Anweisung selbst. */
|
|
196
|
+
specKinds?: readonly string[];
|
|
197
|
+
/** Feld mit dem Pfad/Ziel (Go `path`, Rust `argument`). */
|
|
198
|
+
pathField?: string;
|
|
199
|
+
/** Ersatzweise: Knotenarten, deren Text der Pfad ist. */
|
|
200
|
+
pathKinds?: readonly string[];
|
|
201
|
+
/** Feld mit dem lokalen Namen (Alias), wenn die Sprache eines hat. */
|
|
202
|
+
aliasField?: string;
|
|
203
|
+
/**
|
|
204
|
+
* Auspacken zusammengesetzter Ziele. Rust schreibt
|
|
205
|
+
* `use a::b as c` (`use_as_clause`) und `use a::{b, c}` (`scoped_use_list`);
|
|
206
|
+
* ohne diese Regel stuende der ganze Ausdruck als "Pfad" im Ergebnis.
|
|
207
|
+
*/
|
|
208
|
+
unwrap?: readonly {
|
|
209
|
+
kinds: readonly string[];
|
|
210
|
+
pathField: string;
|
|
211
|
+
aliasField?: string;
|
|
212
|
+
/** Feld mit der Namensliste; ihre BENANNTEN Kinder werden zu `importedNames`. */
|
|
213
|
+
namesField?: string;
|
|
214
|
+
}[];
|
|
215
|
+
}
|
|
216
|
+
/** Aufrufregeln. */
|
|
217
|
+
export interface CallRules {
|
|
218
|
+
kinds: readonly string[];
|
|
219
|
+
/** Feld mit dem Aufrufziel (Vorgabe: `function`). */
|
|
220
|
+
functionField?: string;
|
|
221
|
+
/** Feld mit der Argumentliste (Vorgabe: `arguments`). */
|
|
222
|
+
argumentsField?: string;
|
|
223
|
+
/** Zugriffsformen `a.b` / `a::b`, aus denen Qualifizierer und Name entstehen. */
|
|
224
|
+
memberKinds?: readonly string[];
|
|
225
|
+
/**
|
|
226
|
+
* Feld mit dem EMPFAENGER, wenn die Sprache ihn getrennt fuehrt statt in
|
|
227
|
+
* einem Zugriffsknoten: Javas `method_invocation` hat `object` und `name`
|
|
228
|
+
* nebeneinander, Rubys `call` hat `receiver` und `method`. Ohne dieses Feld
|
|
229
|
+
* ginge der Qualifizierer dort verloren.
|
|
230
|
+
*/
|
|
231
|
+
receiverField?: string;
|
|
232
|
+
/** Konstruktoraufrufe (`new X()`), falls die Sprache eine eigene Knotenart hat. */
|
|
233
|
+
constructionKinds?: readonly string[];
|
|
234
|
+
/** Feld mit dem Typ eines Konstruktoraufrufs. */
|
|
235
|
+
constructedTypeField?: string;
|
|
236
|
+
/**
|
|
237
|
+
* Zusaetzliche Bedingung, die ein Kandidat erfuellen muss.
|
|
238
|
+
*
|
|
239
|
+
* WOFUER: Swift benutzt `call_expression` AUCH fuer Indexzugriffe
|
|
240
|
+
* (`items["a"]`). Ohne Filter meldete der Adapter `items` als Aufrufziel —
|
|
241
|
+
* ein Aufruf, den es nicht gibt.
|
|
242
|
+
*/
|
|
243
|
+
acceptCall?: (node: SyntaxNode) => boolean;
|
|
244
|
+
}
|
|
245
|
+
/** Die vollstaendige Tabelle einer Sprache. */
|
|
246
|
+
export interface LanguageKindTable {
|
|
247
|
+
languageId: string;
|
|
248
|
+
extensions: readonly string[];
|
|
249
|
+
supportLevel: SupportLevel;
|
|
250
|
+
commentKinds: readonly string[];
|
|
251
|
+
/** Knoten, deren Teilbaum EIN Operand ist (Zeichenkettenliterale). */
|
|
252
|
+
stringContainerKinds: readonly string[];
|
|
253
|
+
identifierLeafKinds: readonly string[];
|
|
254
|
+
numberLeafKinds?: readonly string[];
|
|
255
|
+
booleanLeafKinds?: readonly string[];
|
|
256
|
+
nullLeafKinds?: readonly string[];
|
|
257
|
+
/** Satzzeichen, die weder Operator noch Operand sind (Vorgabe: {@link DEFAULT_PUNCTUATION}). */
|
|
258
|
+
punctuationKinds?: readonly string[];
|
|
259
|
+
scopes: readonly ScopeRule[];
|
|
260
|
+
decisions: DecisionRules;
|
|
261
|
+
imports: ImportRules;
|
|
262
|
+
calls: CallRules;
|
|
263
|
+
/** Elternknotenarten, in denen ein Bezeichner im Namensfeld eine Deklaration ist. */
|
|
264
|
+
declarationParentKinds: readonly string[];
|
|
265
|
+
/** Knotenarten, deren Text die Sichtbarkeit angibt (Rust `visibility_modifier`). */
|
|
266
|
+
visibilityKinds?: readonly string[];
|
|
267
|
+
/**
|
|
268
|
+
* Wenn der Sichtbarkeitsknoten ein SACK von Modifikatoren ist (Javas
|
|
269
|
+
* `modifiers` traegt `private final static` in EINEM Knoten): das erste
|
|
270
|
+
* Wort daraus, das in dieser Liste steht, ist die Sichtbarkeit. Ohne die
|
|
271
|
+
* Liste stuende `"private final"` im Ergebnis — eine Angabe, die kein
|
|
272
|
+
* Verbraucher vergleichen kann.
|
|
273
|
+
*/
|
|
274
|
+
visibilityWords?: readonly string[];
|
|
275
|
+
/** Feld mit dem Rumpf — alles davor ist die Signatur (Vorgabe: `body`). */
|
|
276
|
+
bodyField?: string;
|
|
277
|
+
/**
|
|
278
|
+
* Ist dieser Name aus der Datei heraus sichtbar? Go entscheidet das am
|
|
279
|
+
* Grossbuchstaben, Rust am `pub`. Fehlt der Haken, meldet das Profil KEINE
|
|
280
|
+
* exportierten Namen — lieber nichts als eine erfundene Sichtbarkeit.
|
|
281
|
+
*/
|
|
282
|
+
isExported?: (name: string, node: SyntaxNode) => boolean;
|
|
283
|
+
/**
|
|
284
|
+
* Feldnamen, die der ast-grep-Cursor am Elternknoten abfragen darf, um
|
|
285
|
+
* `currentFieldName` zu bestimmen (ast-grep kennt keine Umkehrrichtung,
|
|
286
|
+
* siehe `languages/astgrep-backend/syntax.ts`). Vorgabe: `["name"]`.
|
|
287
|
+
*/
|
|
288
|
+
fieldNames?: readonly string[];
|
|
289
|
+
}
|
|
290
|
+
/** Satzzeichen, die in fast jeder Sprache reine Struktur sind. */
|
|
291
|
+
export declare const DEFAULT_PUNCTUATION: readonly string[];
|
|
292
|
+
/**
|
|
293
|
+
* Baut ein Profil aus vier kompilierten, unabhaengigen Verantwortungen.
|
|
294
|
+
*
|
|
295
|
+
* WP-239: Diese Funktion verdrahtet nur noch Tokens, Scopes, Entscheidungen
|
|
296
|
+
* und Modul-Fakten. Die jeweiligen Regeln leben in kleinen Resolvern mit
|
|
297
|
+
* eigener Zustandsmenge; der vorherige 500-Zeilen-Abschluss ist verschwunden.
|
|
298
|
+
*/
|
|
299
|
+
export declare function createTableProfile(table: LanguageKindTable): LanguageProfile;
|
|
300
|
+
/** Die Feldnamen, die ein Backend ohne Feldnamen-Rueckrichtung abfragen muss. */
|
|
301
|
+
export declare function fieldNamesOf(table: LanguageKindTable): readonly string[];
|
|
302
|
+
//# sourceMappingURL=table-profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-profile.d.ts","sourceRoot":"","sources":["../../../src/languages/shared/table-profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { TableDecisionDetector } from "./table-profile-decisions.js";
|
|
2
|
+
import { TableModuleFactCollector } from "./table-profile-module-facts.js";
|
|
3
|
+
import { setOf } from "./table-profile-queries.js";
|
|
4
|
+
import { TableScopeResolver } from "./table-profile-scopes.js";
|
|
5
|
+
/** Satzzeichen, die in fast jeder Sprache reine Struktur sind. */
|
|
6
|
+
export const DEFAULT_PUNCTUATION = [
|
|
7
|
+
"(",
|
|
8
|
+
")",
|
|
9
|
+
"{",
|
|
10
|
+
"}",
|
|
11
|
+
"[",
|
|
12
|
+
"]",
|
|
13
|
+
",",
|
|
14
|
+
";",
|
|
15
|
+
".",
|
|
16
|
+
":",
|
|
17
|
+
];
|
|
18
|
+
/**
|
|
19
|
+
* Die Blattklassifikation ist eine eigene Verantwortung: Sie kennt weder
|
|
20
|
+
* Scopes noch Kontrollfluss, Importe oder Aufrufe.
|
|
21
|
+
*/
|
|
22
|
+
class TableTokenClassifier {
|
|
23
|
+
commentKinds;
|
|
24
|
+
literalContainerKinds;
|
|
25
|
+
identifierLeafKinds;
|
|
26
|
+
simpleLiteralLeafKinds;
|
|
27
|
+
punctuationKinds;
|
|
28
|
+
numberKinds;
|
|
29
|
+
booleanKinds;
|
|
30
|
+
nullKinds;
|
|
31
|
+
declarationParentKinds;
|
|
32
|
+
constructor(table) {
|
|
33
|
+
this.commentKinds = setOf(table.commentKinds);
|
|
34
|
+
this.literalContainerKinds = setOf(table.stringContainerKinds);
|
|
35
|
+
this.identifierLeafKinds = setOf(table.identifierLeafKinds);
|
|
36
|
+
this.numberKinds = setOf(table.numberLeafKinds);
|
|
37
|
+
this.booleanKinds = setOf(table.booleanLeafKinds);
|
|
38
|
+
this.nullKinds = setOf(table.nullLeafKinds);
|
|
39
|
+
this.simpleLiteralLeafKinds = new Set([
|
|
40
|
+
...this.numberKinds,
|
|
41
|
+
...this.booleanKinds,
|
|
42
|
+
...this.nullKinds,
|
|
43
|
+
]);
|
|
44
|
+
this.punctuationKinds = setOf(table.punctuationKinds ?? DEFAULT_PUNCTUATION);
|
|
45
|
+
this.declarationParentKinds = setOf(table.declarationParentKinds);
|
|
46
|
+
}
|
|
47
|
+
literalKindOf(kind) {
|
|
48
|
+
if (this.numberKinds.has(kind))
|
|
49
|
+
return "number";
|
|
50
|
+
if (this.booleanKinds.has(kind))
|
|
51
|
+
return "boolean";
|
|
52
|
+
if (this.nullKinds.has(kind))
|
|
53
|
+
return "null";
|
|
54
|
+
return "other";
|
|
55
|
+
}
|
|
56
|
+
identifierRoleOf(fieldName, parentKind) {
|
|
57
|
+
return fieldName === "name" && this.declarationParentKinds.has(parentKind)
|
|
58
|
+
? "declaration"
|
|
59
|
+
: "reference";
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function stringLiteralKind() {
|
|
63
|
+
return "string";
|
|
64
|
+
}
|
|
65
|
+
function neverSuppressScope() {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
function noMemberRegions() {
|
|
69
|
+
return [];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Baut ein Profil aus vier kompilierten, unabhaengigen Verantwortungen.
|
|
73
|
+
*
|
|
74
|
+
* WP-239: Diese Funktion verdrahtet nur noch Tokens, Scopes, Entscheidungen
|
|
75
|
+
* und Modul-Fakten. Die jeweiligen Regeln leben in kleinen Resolvern mit
|
|
76
|
+
* eigener Zustandsmenge; der vorherige 500-Zeilen-Abschluss ist verschwunden.
|
|
77
|
+
*/
|
|
78
|
+
export function createTableProfile(table) {
|
|
79
|
+
const tokens = new TableTokenClassifier(table);
|
|
80
|
+
const scopes = new TableScopeResolver(table, tokens.commentKinds);
|
|
81
|
+
const decisions = new TableDecisionDetector(table.decisions, tokens.commentKinds);
|
|
82
|
+
const moduleFacts = new TableModuleFactCollector(table.imports, table.calls);
|
|
83
|
+
const needsNodeKinds = new Set([
|
|
84
|
+
...scopes.nodeKinds,
|
|
85
|
+
...decisions.nodeKinds,
|
|
86
|
+
...moduleFacts.nodeKinds,
|
|
87
|
+
]);
|
|
88
|
+
return {
|
|
89
|
+
languageId: table.languageId,
|
|
90
|
+
extensions: table.extensions,
|
|
91
|
+
supportLevel: table.supportLevel,
|
|
92
|
+
commentKinds: tokens.commentKinds,
|
|
93
|
+
literalContainerKinds: tokens.literalContainerKinds,
|
|
94
|
+
identifierLeafKinds: tokens.identifierLeafKinds,
|
|
95
|
+
simpleLiteralLeafKinds: tokens.simpleLiteralLeafKinds,
|
|
96
|
+
templateTextLeafKinds: new Set(),
|
|
97
|
+
ignoredPunctuationKinds: tokens.punctuationKinds,
|
|
98
|
+
typeKeywordParentKinds: new Set(),
|
|
99
|
+
functionLikeKinds: scopes.functionLikeKinds,
|
|
100
|
+
exportWrapperKinds: new Set(),
|
|
101
|
+
containerLiteralKind: stringLiteralKind,
|
|
102
|
+
simpleLiteralKind: tokens.literalKindOf.bind(tokens),
|
|
103
|
+
identifierRole: tokens.identifierRoleOf.bind(tokens),
|
|
104
|
+
needsNode: needsNodeKinds.has.bind(needsNodeKinds),
|
|
105
|
+
scopeKindOf: scopes.kindOf.bind(scopes),
|
|
106
|
+
suppressesScope: neverSuppressScope,
|
|
107
|
+
scopeName: scopes.nameOf.bind(scopes),
|
|
108
|
+
scopeQualifier: scopes.qualifierOf.bind(scopes),
|
|
109
|
+
scopeSignature: scopes.signatureOf.bind(scopes),
|
|
110
|
+
docRange: scopes.docRangeOf.bind(scopes),
|
|
111
|
+
visibility: scopes.visibilityOf.bind(scopes),
|
|
112
|
+
exportedNames: scopes.exportedNamesOf.bind(scopes),
|
|
113
|
+
detectDecisionAndNesting: decisions.detect.bind(decisions),
|
|
114
|
+
collectModuleFacts: moduleFacts.collect.bind(moduleFacts),
|
|
115
|
+
memberRegions: noMemberRegions,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/** Die Feldnamen, die ein Backend ohne Feldnamen-Rueckrichtung abfragen muss. */
|
|
119
|
+
export function fieldNamesOf(table) {
|
|
120
|
+
const names = new Set(table.fieldNames ?? ["name"]);
|
|
121
|
+
for (const rule of table.scopes)
|
|
122
|
+
names.add(rule.nameField ?? "name");
|
|
123
|
+
return [...names];
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=table-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-profile.js","sourceRoot":"","sources":["../../../src/languages/shared/table-profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thin type-only surface over the `tree-sitter` native binding.
|
|
3
|
+
*
|
|
4
|
+
* We import only types here (`import type`) — the actual native module is
|
|
5
|
+
* loaded lazily and dynamically at runtime via `grammar-loader.ts` using
|
|
6
|
+
* `createRequire`, never through a static `import` statement. That is what
|
|
7
|
+
* makes grammar loading lazy: requiring this file costs nothing at the
|
|
8
|
+
* native-addon level, only `loadGrammar()` does, and only for languages
|
|
9
|
+
* actually used.
|
|
10
|
+
*/
|
|
11
|
+
import type Parser from "tree-sitter";
|
|
12
|
+
import type { SyntaxCursor, SyntaxNode } from "./syntax.js";
|
|
13
|
+
export type TsSyntaxNode = Parser.SyntaxNode;
|
|
14
|
+
/** Eine Parserinstanz mit gesetzter Grammatik (siehe `parse-limits.ts#parseWithBuffer`). */
|
|
15
|
+
export type TsParser = Parser;
|
|
16
|
+
export type TsTree = Parser.Tree;
|
|
17
|
+
/**
|
|
18
|
+
* Der native Baumcursor (`tree.walk()` / `node.walk()`). Er haelt die
|
|
19
|
+
* Position IN der nativen Bibliothek; `gotoFirstChild`/`gotoNextSibling`/
|
|
20
|
+
* `gotoParent` verschieben sie, ohne je einen JS-Knotenwrapper zu bauen.
|
|
21
|
+
* Genau darum ist er der Traversierungsweg dieses Pakets (WP-95) — `.children`
|
|
22
|
+
* materialisiert je Knoten ein Array aus Wrappern.
|
|
23
|
+
*/
|
|
24
|
+
export type TsTreeCursor = Parser.TreeCursor;
|
|
25
|
+
export type TsPoint = Parser.Point;
|
|
26
|
+
export type TsParserCtor = typeof Parser;
|
|
27
|
+
/** Opaque tree-sitter `Language` handle, as accepted by `Parser#setLanguage`. */
|
|
28
|
+
export type TsLanguage = unknown;
|
|
29
|
+
/**
|
|
30
|
+
* Die Zusage aus `syntax.ts`, hier festgenagelt: die NATIVEN tree-sitter-Formen
|
|
31
|
+
* erfuellen den backend-neutralen Baumvertrag STRUKTURELL. Kein Wrapper, kein
|
|
32
|
+
* Adapterobjekt, keine zusaetzliche Grenzueberquerung je Knoten — der Weg, den
|
|
33
|
+
* WP-95 saniert hat, bleibt genau so teuer wie vorher.
|
|
34
|
+
*
|
|
35
|
+
* Diese beiden Zuweisungen sind reine Typaussagen (`never` zur Laufzeit
|
|
36
|
+
* unbenutzt). Bricht eine kuenftige Aenderung an `syntax.ts` die Vertraglichkeit,
|
|
37
|
+
* scheitert der Typcheck HIER — und nicht erst an der Aufrufstelle, an der
|
|
38
|
+
* jemand versucht waere, sie mit einer Umtypung zu erschlagen.
|
|
39
|
+
*/
|
|
40
|
+
type AssertAssignable<Target, Source extends Target> = [Target, Source];
|
|
41
|
+
export type TreeSitterSatisfiesSyntaxNode = AssertAssignable<SyntaxNode, TsSyntaxNode>;
|
|
42
|
+
export type TreeSitterSatisfiesSyntaxCursor = AssertAssignable<SyntaxCursor, TsTreeCursor>;
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=tree-sitter-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-sitter-types.d.ts","sourceRoot":"","sources":["../../../src/languages/shared/tree-sitter-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE5D,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC;AAC7C,4FAA4F;AAC5F,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAC9B,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;AACjC;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC;AAC7C,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACnC,MAAM,MAAM,YAAY,GAAG,OAAO,MAAM,CAAC;AAEzC,iFAAiF;AACjF,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC;AAEjC;;;;;;;;;;GAUG;AACH,KAAK,gBAAgB,CAAC,MAAM,EAAE,MAAM,SAAS,MAAM,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACxE,MAAM,MAAM,6BAA6B,GAAG,gBAAgB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AACvF,MAAM,MAAM,+BAA+B,GAAG,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-sitter-types.js","sourceRoot":"","sources":["../../../src/languages/shared/tree-sitter-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `LanguageAdapter` fuer strukturierte, verfasste Daten — JSON, YAML, TOML,
|
|
3
|
+
* XML (vision.md §1c, spec.md §7.1/§7.2, WP-217).
|
|
4
|
+
*
|
|
5
|
+
* DIE ENTSCHEIDUNG, DIE HIER GETROFFEN IST
|
|
6
|
+
*
|
|
7
|
+
* Bei der Selbstanalyse fielen 80 JSON-, 6 TOML-, 4 YAML- und 2 XML-Dateien
|
|
8
|
+
* unter `unsupported_language`. Dieser Grund war falsch: die Formate SIND
|
|
9
|
+
* unterstuetzt, sie haben nur keinen Graphen und keinen Kontrollfluss. Nach
|
|
10
|
+
* spec.md §7.2 gehoeren sie ausdruecklich in die Stufe `text`.
|
|
11
|
+
*
|
|
12
|
+
* Sie bekommen deshalb hier `text` — mit voller Suche und sicheren
|
|
13
|
+
* Textchunks. Eine `package.json`, eine `untangle.toml`, ein Manifest
|
|
14
|
+
* beantworten echte Fragen; sie aus dem Index zu halten waere ein Verlust.
|
|
15
|
+
*
|
|
16
|
+
* WAS SIE NICHT BEKOMMEN, UND WARUM DAS KEINE ABSTUFUNG IST
|
|
17
|
+
*
|
|
18
|
+
* - Keine Symbole und keine `symbolScopes`: ein Schluessel in einer
|
|
19
|
+
* `package.json` ist kein Symbol mit Signatur, Callern und Callees. Ein
|
|
20
|
+
* erfundenes Symbol waere schlimmer als keins.
|
|
21
|
+
* - Keine Komplexitaetszahlen: es gibt keine Entscheidungspunkte. Wer diese
|
|
22
|
+
* Dateien in einer Metrikauswertung uebergeht, benennt das mit dem Grund
|
|
23
|
+
* `no_metric_defined` (domain `skip-ledger.ts`) — nicht mit
|
|
24
|
+
* `unsupported_language`, denn verstanden sind sie.
|
|
25
|
+
* - Auch KEINE Prosa-Metriken: eine YAML-Datei hat keine Abschnittstiefe im
|
|
26
|
+
* Sinne von Ueberschriften und keine Verweisdichte im Sinne von
|
|
27
|
+
* Querverweisen. Die Prosa-Familie ist fuer Prosa.
|
|
28
|
+
*
|
|
29
|
+
* WIE GESCHNITTEN WIRD
|
|
30
|
+
*
|
|
31
|
+
* Nur an Grenzen, die im Format EXAKT und ohne Parser bestimmbar sind:
|
|
32
|
+
*
|
|
33
|
+
* - TOML: eine Zeile, die (nach Leerraum) mit `[` beginnt, eroeffnet eine
|
|
34
|
+
* neue Tabelle — das ist die Gliederung des Formats.
|
|
35
|
+
* - YAML: `---` trennt Dokumente in einem Strom.
|
|
36
|
+
*
|
|
37
|
+
* Fuer JSON und XML gibt es keine solche Grenze ohne echten Parser. Sie
|
|
38
|
+
* bekommen EINEN Bereich ueber die ganze Datei, den der Chunker bei Bedarf
|
|
39
|
+
* am Tokenbudget teilt. Das ist die ehrliche Antwort und ausdruecklich
|
|
40
|
+
* KEINE ueberschriftenbewusste Gliederung, wie Markdown sie bekommt — sie
|
|
41
|
+
* zu behaupten, wo das Format sie nicht hergibt, waere die Sorte
|
|
42
|
+
* Beschoenigung, die E4 verbietet.
|
|
43
|
+
*/
|
|
44
|
+
import type { LanguageAdapter } from "@untangle-code/domain";
|
|
45
|
+
/** Sprachkennung dieses Adapters. Bewusst formatuebergreifend: die Behandlung ist dieselbe. */
|
|
46
|
+
export declare const STRUCTURED_TEXT_LANGUAGE_ID = "structured-text";
|
|
47
|
+
export declare function createStructuredTextAdapter(): LanguageAdapter;
|
|
48
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/languages/structured-text/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,OAAO,KAAK,EAKV,eAAe,EAOhB,MAAM,uBAAuB,CAAC;AAK/B,+FAA+F;AAC/F,eAAO,MAAM,2BAA2B,oBAAoB,CAAC;AAyC7D,wBAAgB,2BAA2B,IAAI,eAAe,CAyF7D"}
|