@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,102 @@
|
|
|
1
|
+
export const CSHARP_SOURCE = {
|
|
2
|
+
languageName: "csharp",
|
|
3
|
+
moduleName: "@ast-grep/lang-csharp",
|
|
4
|
+
};
|
|
5
|
+
export const CSHARP_TABLE = {
|
|
6
|
+
languageId: "csharp",
|
|
7
|
+
extensions: [".cs"],
|
|
8
|
+
supportLevel: "deep",
|
|
9
|
+
commentKinds: ["comment"],
|
|
10
|
+
stringContainerKinds: [
|
|
11
|
+
"string_literal",
|
|
12
|
+
"verbatim_string_literal",
|
|
13
|
+
"raw_string_literal",
|
|
14
|
+
"character_literal",
|
|
15
|
+
"interpolated_string_expression",
|
|
16
|
+
],
|
|
17
|
+
identifierLeafKinds: ["identifier", "predefined_type", "this", "base"],
|
|
18
|
+
numberLeafKinds: ["integer_literal", "real_literal"],
|
|
19
|
+
booleanLeafKinds: ["boolean_literal"],
|
|
20
|
+
nullLeafKinds: ["null_literal"],
|
|
21
|
+
scopes: [
|
|
22
|
+
{
|
|
23
|
+
kinds: ["namespace_declaration", "file_scoped_namespace_declaration"],
|
|
24
|
+
scopeKind: "namespace",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
kinds: ["class_declaration", "struct_declaration", "record_declaration"],
|
|
28
|
+
scopeKind: "class",
|
|
29
|
+
},
|
|
30
|
+
{ kinds: ["interface_declaration"], scopeKind: "interface" },
|
|
31
|
+
{ kinds: ["enum_declaration"], scopeKind: "enum" },
|
|
32
|
+
{ kinds: ["method_declaration"], scopeKind: "method" },
|
|
33
|
+
{ kinds: ["constructor_declaration"], scopeKind: "constructor" },
|
|
34
|
+
{ kinds: ["property_declaration"], scopeKind: "property" },
|
|
35
|
+
// `field_declaration` hat kein Namensfeld: der Name steht unter
|
|
36
|
+
// `variable_declaration` -> `variable_declarator`.
|
|
37
|
+
{
|
|
38
|
+
kinds: ["field_declaration"],
|
|
39
|
+
scopeKind: "property",
|
|
40
|
+
// `field_declaration > variable_declaration > variable_declarator.name`
|
|
41
|
+
nameKindPath: ["variable_declaration", "variable_declarator"],
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
decisions: {
|
|
45
|
+
ifKinds: ["if_statement"],
|
|
46
|
+
elseIfParentKinds: ["if_statement"],
|
|
47
|
+
loopKinds: ["for_statement", "foreach_statement", "while_statement", "do_statement"],
|
|
48
|
+
catchKinds: ["catch_clause"],
|
|
49
|
+
ternaryKinds: ["conditional_expression"],
|
|
50
|
+
switchKinds: ["switch_statement", "switch_expression"],
|
|
51
|
+
// Die C#-Grammatik gibt der Marke KEINE eigene Knotenart: `case "a":` und
|
|
52
|
+
// `default:` sind beide ein `switch_section`, unterschieden nur durch das
|
|
53
|
+
// Schluesselwortkind. Nachgesehen am Baum von `__golden__/csharp-basic.cs`.
|
|
54
|
+
caseKinds: ["switch_section", "switch_expression_arm"],
|
|
55
|
+
caseExcludeChildKinds: ["default"],
|
|
56
|
+
binaryKinds: ["binary_expression"],
|
|
57
|
+
operatorField: "operator",
|
|
58
|
+
logicalAndOperators: ["&&"],
|
|
59
|
+
logicalOrOperators: ["||"],
|
|
60
|
+
shortCircuitOperators: ["??"],
|
|
61
|
+
jumpKinds: ["return_statement", "throw_statement", "break_statement", "continue_statement"],
|
|
62
|
+
blockKinds: ["block"],
|
|
63
|
+
consequenceField: "consequence",
|
|
64
|
+
alternativeField: "alternative",
|
|
65
|
+
},
|
|
66
|
+
imports: {
|
|
67
|
+
kinds: ["using_directive"],
|
|
68
|
+
// NICHT `name_equals`: bei `using Sys = System.Text;` steht dort der
|
|
69
|
+
// ALIAS, nicht der Pfad — der Pfad ist der `qualified_name` daneben.
|
|
70
|
+
pathKinds: ["qualified_name", "identifier"],
|
|
71
|
+
aliasField: "name",
|
|
72
|
+
},
|
|
73
|
+
calls: {
|
|
74
|
+
kinds: ["invocation_expression"],
|
|
75
|
+
functionField: "function",
|
|
76
|
+
argumentsField: "arguments",
|
|
77
|
+
memberKinds: ["member_access_expression", "qualified_name"],
|
|
78
|
+
constructionKinds: ["object_creation_expression"],
|
|
79
|
+
constructedTypeField: "type",
|
|
80
|
+
},
|
|
81
|
+
declarationParentKinds: [
|
|
82
|
+
"class_declaration",
|
|
83
|
+
"struct_declaration",
|
|
84
|
+
"record_declaration",
|
|
85
|
+
"interface_declaration",
|
|
86
|
+
"enum_declaration",
|
|
87
|
+
"method_declaration",
|
|
88
|
+
"constructor_declaration",
|
|
89
|
+
"property_declaration",
|
|
90
|
+
"variable_declarator",
|
|
91
|
+
"parameter",
|
|
92
|
+
"type_parameter",
|
|
93
|
+
"catch_declaration",
|
|
94
|
+
"enum_member_declaration",
|
|
95
|
+
],
|
|
96
|
+
visibilityKinds: ["modifier"],
|
|
97
|
+
visibilityWords: ["public", "protected", "private", "internal"],
|
|
98
|
+
bodyField: "body",
|
|
99
|
+
isExported: (_name, node) => node.children.some((child) => child.type === "modifier" && child.text === "public"),
|
|
100
|
+
fieldNames: ["name"],
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=csharp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csharp.js","sourceRoot":"","sources":["../../../../src/languages/astgrep-backend/lang/csharp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Die Sprachen aus WP-86: je EINE Tabelle, kein Motor (vision.md §1b).
|
|
3
|
+
*
|
|
4
|
+
* WIE VIEL EINE SPRACHE GEKOSTET HAT, steht in `README.md` neben diesem
|
|
5
|
+
* Verzeichnis — Zeile fuer Zeile nachgezaehlt. Das ist die Gegenprobe zur
|
|
6
|
+
* Ratsche: eine Sprache, die 800 Zeilen kostet, waere kein Gewinn gewesen.
|
|
7
|
+
*
|
|
8
|
+
* REIHENFOLGE = VERBREITUNG. Sie ist zugleich die Reihenfolge, in der die
|
|
9
|
+
* Grammatiken registriert werden (`napi.ts`: EIN Aufruf fuer alle).
|
|
10
|
+
*/
|
|
11
|
+
import type { LanguageKindTable } from "../../shared/table-profile.js";
|
|
12
|
+
import type { AstGrepLanguageSource } from "../adapter.js";
|
|
13
|
+
import { BASH_SOURCE, BASH_TABLE } from "./bash.js";
|
|
14
|
+
import { C_SOURCE, C_TABLE } from "./c.js";
|
|
15
|
+
import { CPP_SOURCE, CPP_TABLE } from "./cpp.js";
|
|
16
|
+
import { CSHARP_SOURCE, CSHARP_TABLE } from "./csharp.js";
|
|
17
|
+
import { JAVA_SOURCE, JAVA_TABLE } from "./java.js";
|
|
18
|
+
import { KOTLIN_SOURCE, KOTLIN_TABLE } from "./kotlin.js";
|
|
19
|
+
import { PHP_SOURCE, PHP_TABLE } from "./php.js";
|
|
20
|
+
import { RUBY_SOURCE, RUBY_TABLE } from "./ruby.js";
|
|
21
|
+
import { SWIFT_SOURCE, SWIFT_TABLE } from "./swift.js";
|
|
22
|
+
/** Eine Sprache: ihre Tabelle und das Paket, aus dem ihre Grammatik kommt. */
|
|
23
|
+
export interface AstGrepLanguage {
|
|
24
|
+
table: LanguageKindTable;
|
|
25
|
+
source: AstGrepLanguageSource;
|
|
26
|
+
}
|
|
27
|
+
export declare const AST_GREP_LANGUAGES: readonly AstGrepLanguage[];
|
|
28
|
+
export { BASH_SOURCE, BASH_TABLE, CPP_SOURCE, CPP_TABLE, CSHARP_SOURCE, CSHARP_TABLE, C_SOURCE, C_TABLE, JAVA_SOURCE, JAVA_TABLE, KOTLIN_SOURCE, KOTLIN_TABLE, PHP_SOURCE, PHP_TABLE, RUBY_SOURCE, RUBY_TABLE, SWIFT_SOURCE, SWIFT_TABLE, };
|
|
29
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/languages/astgrep-backend/lang/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEvD,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,qBAAqB,CAAC;CAC/B;AAED,eAAO,MAAM,kBAAkB,EAAE,SAAS,eAAe,EAUxD,CAAC;AAEF,OAAO,EACL,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,EACZ,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,YAAY,EACZ,WAAW,GACZ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { BASH_SOURCE, BASH_TABLE } from "./bash.js";
|
|
2
|
+
import { C_SOURCE, C_TABLE } from "./c.js";
|
|
3
|
+
import { CPP_SOURCE, CPP_TABLE } from "./cpp.js";
|
|
4
|
+
import { CSHARP_SOURCE, CSHARP_TABLE } from "./csharp.js";
|
|
5
|
+
import { JAVA_SOURCE, JAVA_TABLE } from "./java.js";
|
|
6
|
+
import { KOTLIN_SOURCE, KOTLIN_TABLE } from "./kotlin.js";
|
|
7
|
+
import { PHP_SOURCE, PHP_TABLE } from "./php.js";
|
|
8
|
+
import { RUBY_SOURCE, RUBY_TABLE } from "./ruby.js";
|
|
9
|
+
import { SWIFT_SOURCE, SWIFT_TABLE } from "./swift.js";
|
|
10
|
+
export const AST_GREP_LANGUAGES = [
|
|
11
|
+
{ table: JAVA_TABLE, source: JAVA_SOURCE },
|
|
12
|
+
{ table: CSHARP_TABLE, source: CSHARP_SOURCE },
|
|
13
|
+
{ table: RUBY_TABLE, source: RUBY_SOURCE },
|
|
14
|
+
{ table: PHP_TABLE, source: PHP_SOURCE },
|
|
15
|
+
{ table: KOTLIN_TABLE, source: KOTLIN_SOURCE },
|
|
16
|
+
{ table: C_TABLE, source: C_SOURCE },
|
|
17
|
+
{ table: CPP_TABLE, source: CPP_SOURCE },
|
|
18
|
+
{ table: SWIFT_TABLE, source: SWIFT_SOURCE },
|
|
19
|
+
{ table: BASH_TABLE, source: BASH_SOURCE },
|
|
20
|
+
];
|
|
21
|
+
export { BASH_SOURCE, BASH_TABLE, CPP_SOURCE, CPP_TABLE, CSHARP_SOURCE, CSHARP_TABLE, C_SOURCE, C_TABLE, JAVA_SOURCE, JAVA_TABLE, KOTLIN_SOURCE, KOTLIN_TABLE, PHP_SOURCE, PHP_TABLE, RUBY_SOURCE, RUBY_TABLE, SWIFT_SOURCE, SWIFT_TABLE, };
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/languages/astgrep-backend/lang/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAQvD,MAAM,CAAC,MAAM,kBAAkB,GAA+B;IAC5D,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE;IAC1C,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE;IAC9C,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE;IAC1C,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE;IACxC,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE;IAC9C,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;IACpC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE;IACxC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE;IAC5C,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE;CAC3C,CAAC;AAEF,OAAO,EACL,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,EACZ,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,YAAY,EACZ,WAAW,GACZ,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Java (WP-86).
|
|
3
|
+
*
|
|
4
|
+
* ABBILDUNGEN auf die Symbolarten aus `shared/scope-model.ts`:
|
|
5
|
+
* `record` -> `class` (ein benannter Verbund mit Feldern; `ChunkKind` kennt
|
|
6
|
+
* kein "record"), `@interface` -> `interface`.
|
|
7
|
+
*
|
|
8
|
+
* ENTSCHEIDUNGSPUNKTE — die Auslegung, ausdruecklich (spec.md §16.2/§16.3):
|
|
9
|
+
* - `switch_label` traegt in DERSELBEN Knotenart sowohl `case X:` als auch
|
|
10
|
+
* `default:`. Nur die `case`-Form zaehlt (`caseExcludeChildKinds`). Ein
|
|
11
|
+
* `switch` mit drei `case` und einem `default` hat DREI Entscheidungen —
|
|
12
|
+
* der Auffangzweig eroeffnet keinen zusaetzlichen unabhaengigen Pfad.
|
|
13
|
+
* - `catch_clause` zaehlt als `catch`. `finally_clause` NICHT: es laeuft
|
|
14
|
+
* immer und verzweigt nichts.
|
|
15
|
+
* - `&&`/`||` zaehlen nur ERWEITERT (§16.3), nie klassisch.
|
|
16
|
+
* - `else if` ist in Java ein `if_statement` DIREKT unter einem
|
|
17
|
+
* `if_statement` (kein `else_clause`) — `elseIfParentKinds` sagt das.
|
|
18
|
+
*
|
|
19
|
+
* NACHGESEHEN, NICHT GERATEN: jede Knotenart hier stammt aus dem Baum von
|
|
20
|
+
* `__golden__/java-basic.java`, und `golden.test.ts` erzeugt ihn wieder.
|
|
21
|
+
*/
|
|
22
|
+
import type { LanguageKindTable } from "../../shared/table-profile.js";
|
|
23
|
+
import type { AstGrepLanguageSource } from "../adapter.js";
|
|
24
|
+
export declare const JAVA_SOURCE: AstGrepLanguageSource;
|
|
25
|
+
export declare const JAVA_TABLE: LanguageKindTable;
|
|
26
|
+
//# sourceMappingURL=java.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"java.d.ts","sourceRoot":"","sources":["../../../../src/languages/astgrep-backend/lang/java.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D,eAAO,MAAM,WAAW,EAAE,qBAGzB,CAAC;AAIF,eAAO,MAAM,UAAU,EAAE,iBAmFxB,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
export const JAVA_SOURCE = {
|
|
2
|
+
languageName: "java",
|
|
3
|
+
moduleName: "@ast-grep/lang-java",
|
|
4
|
+
};
|
|
5
|
+
const VISIBILITY_WORDS = ["public", "protected", "private"];
|
|
6
|
+
export const JAVA_TABLE = {
|
|
7
|
+
languageId: "java",
|
|
8
|
+
extensions: [".java"],
|
|
9
|
+
supportLevel: "deep",
|
|
10
|
+
commentKinds: ["line_comment", "block_comment"],
|
|
11
|
+
stringContainerKinds: ["string_literal", "character_literal", "text_block"],
|
|
12
|
+
identifierLeafKinds: ["identifier", "type_identifier", "this", "super"],
|
|
13
|
+
numberLeafKinds: [
|
|
14
|
+
"decimal_integer_literal",
|
|
15
|
+
"hex_integer_literal",
|
|
16
|
+
"octal_integer_literal",
|
|
17
|
+
"binary_integer_literal",
|
|
18
|
+
"decimal_floating_point_literal",
|
|
19
|
+
"hex_floating_point_literal",
|
|
20
|
+
],
|
|
21
|
+
booleanLeafKinds: ["true", "false"],
|
|
22
|
+
nullLeafKinds: ["null_literal"],
|
|
23
|
+
scopes: [
|
|
24
|
+
{ kinds: ["class_declaration", "record_declaration"], scopeKind: "class" },
|
|
25
|
+
{
|
|
26
|
+
kinds: ["interface_declaration", "annotation_type_declaration"],
|
|
27
|
+
scopeKind: "interface",
|
|
28
|
+
},
|
|
29
|
+
{ kinds: ["enum_declaration"], scopeKind: "enum" },
|
|
30
|
+
{ kinds: ["method_declaration"], scopeKind: "method" },
|
|
31
|
+
{ kinds: ["constructor_declaration"], scopeKind: "constructor" },
|
|
32
|
+
// Der Name eines Feldes steht zwei Ebenen tief:
|
|
33
|
+
// `field_declaration.declarator` -> `variable_declarator.name`.
|
|
34
|
+
{ kinds: ["field_declaration"], scopeKind: "property", nameField: "declarator.name" },
|
|
35
|
+
],
|
|
36
|
+
decisions: {
|
|
37
|
+
ifKinds: ["if_statement"],
|
|
38
|
+
elseIfParentKinds: ["if_statement"],
|
|
39
|
+
loopKinds: ["for_statement", "enhanced_for_statement", "while_statement", "do_statement"],
|
|
40
|
+
catchKinds: ["catch_clause"],
|
|
41
|
+
ternaryKinds: ["ternary_expression"],
|
|
42
|
+
switchKinds: ["switch_statement", "switch_expression"],
|
|
43
|
+
caseKinds: ["switch_label"],
|
|
44
|
+
caseExcludeChildKinds: ["default"],
|
|
45
|
+
binaryKinds: ["binary_expression"],
|
|
46
|
+
operatorField: "operator",
|
|
47
|
+
logicalAndOperators: ["&&"],
|
|
48
|
+
logicalOrOperators: ["||"],
|
|
49
|
+
jumpKinds: ["return_statement", "throw_statement", "break_statement", "continue_statement"],
|
|
50
|
+
blockKinds: ["block"],
|
|
51
|
+
consequenceField: "consequence",
|
|
52
|
+
alternativeField: "alternative",
|
|
53
|
+
},
|
|
54
|
+
imports: {
|
|
55
|
+
kinds: ["import_declaration"],
|
|
56
|
+
// `import_declaration` vergibt keine Feldnamen; der Pfad ist der
|
|
57
|
+
// `scoped_identifier` darin (bei `import a.*` ein `asterisk` daneben).
|
|
58
|
+
pathKinds: ["scoped_identifier", "identifier"],
|
|
59
|
+
},
|
|
60
|
+
calls: {
|
|
61
|
+
kinds: ["method_invocation"],
|
|
62
|
+
functionField: "name",
|
|
63
|
+
receiverField: "object",
|
|
64
|
+
argumentsField: "arguments",
|
|
65
|
+
constructionKinds: ["object_creation_expression"],
|
|
66
|
+
constructedTypeField: "type",
|
|
67
|
+
},
|
|
68
|
+
declarationParentKinds: [
|
|
69
|
+
"class_declaration",
|
|
70
|
+
"record_declaration",
|
|
71
|
+
"interface_declaration",
|
|
72
|
+
"annotation_type_declaration",
|
|
73
|
+
"enum_declaration",
|
|
74
|
+
"method_declaration",
|
|
75
|
+
"constructor_declaration",
|
|
76
|
+
"variable_declarator",
|
|
77
|
+
"formal_parameter",
|
|
78
|
+
"catch_formal_parameter",
|
|
79
|
+
"type_parameter",
|
|
80
|
+
"enum_constant",
|
|
81
|
+
],
|
|
82
|
+
visibilityKinds: ["modifiers"],
|
|
83
|
+
visibilityWords: [...VISIBILITY_WORDS],
|
|
84
|
+
bodyField: "body",
|
|
85
|
+
// Java sagt es mit einem Schluesselwort: `public` in den Modifikatoren.
|
|
86
|
+
isExported: (_name, node) => node.children.some((child) => child.type === "modifiers" && /\bpublic\b/.test(child.text)),
|
|
87
|
+
fieldNames: ["name", "declarator"],
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=java.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"java.js","sourceRoot":"","sources":["../../../../src/languages/astgrep-backend/lang/java.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kotlin (WP-86).
|
|
3
|
+
*
|
|
4
|
+
* DIE BESONDERHEIT, und der Grund fuer jede Eigenart dieser Tabelle: die
|
|
5
|
+
* Kotlin-Grammatik VERGIBT KEINE FELDNAMEN. Kein `name`, kein `body`, kein
|
|
6
|
+
* `condition` — nachgesehen an einer echten Datei mit Klasse, Objekt,
|
|
7
|
+
* Companion, `when`, `try` und Lambda: `node.field(...)` liefert durchweg
|
|
8
|
+
* `null`. Alles laeuft deshalb ueber `nameKinds`, also ueber die ART des
|
|
9
|
+
* ersten passenden Kindes.
|
|
10
|
+
*
|
|
11
|
+
* ZWEI FOLGEN, die in der Ausgabe sichtbar sind und deshalb hier stehen:
|
|
12
|
+
*
|
|
13
|
+
* 1. `normalizedSignature` ist die ERSTE ZEILE des Knotens, nicht der Kopf
|
|
14
|
+
* bis zum Rumpf: ohne `body`-Feld gibt es keinen Punkt, an dem der Rumpf
|
|
15
|
+
* beginnt (`table-profile.ts#scopeSignature` faellt genau darauf zurueck).
|
|
16
|
+
* 2. `IdentifierFact.role` ist IMMER `reference`. Die Rolle haengt am
|
|
17
|
+
* Feldnamen `name` (`identifierRole`), und den gibt es hier nicht. Eine
|
|
18
|
+
* Deklaration von einem Verweis zu unterscheiden waere also geraten —
|
|
19
|
+
* lieber eine ehrlich schwaechere Angabe als eine erfundene.
|
|
20
|
+
*
|
|
21
|
+
* ABBILDUNGEN: `class_declaration` traegt in Kotlin AUCH `interface`,
|
|
22
|
+
* `enum class` und `data class`; unterschieden wird ueber das
|
|
23
|
+
* Schluesselwortkind (`refine`). `object` und `companion object` ->
|
|
24
|
+
* `namespace` (benannte Singletons, keine Typen).
|
|
25
|
+
*
|
|
26
|
+
* ENTSCHEIDUNGSPUNKTE (spec.md §16.2/§16.3):
|
|
27
|
+
* - `if_expression` ist Verzweigung UND Ausdruck (Kotlin hat keinen
|
|
28
|
+
* Ternaeroperator). Gezaehlt als `if` — dieselbe Zahl unabhaengiger Pfade.
|
|
29
|
+
* - `when_entry` ist ein `case`; der `else`-Arm zaehlt nicht
|
|
30
|
+
* (`caseExcludeChildKinds: ["else"]`).
|
|
31
|
+
* - `catch_block` zaehlt, `finally_block` nicht.
|
|
32
|
+
* - `conjunction_expression`/`disjunction_expression` tragen den Operator
|
|
33
|
+
* als anonymes Kind statt in einem Feld — `anonymousOperatorKinds`.
|
|
34
|
+
* - `elvis_expression` (`a ?: b`) zaehlt als `short_circuit`, nur erweitert.
|
|
35
|
+
* - `else if` liegt unter einem `control_structure_body`. Dessen unmittelbar
|
|
36
|
+
* vorangehendes anonymes `else`-Geschwister unterscheidet die Fortsetzung
|
|
37
|
+
* von einem ungekammerten `if` im Dann-Rumpf (WP-243). Damit bekommt eine
|
|
38
|
+
* Kotlin-Kette dieselbe kognitive Verschachtelung wie Java.
|
|
39
|
+
*/
|
|
40
|
+
import type { LanguageKindTable } from "../../shared/table-profile.js";
|
|
41
|
+
import type { AstGrepLanguageSource } from "../adapter.js";
|
|
42
|
+
export declare const KOTLIN_SOURCE: AstGrepLanguageSource;
|
|
43
|
+
export declare const KOTLIN_TABLE: LanguageKindTable;
|
|
44
|
+
//# sourceMappingURL=kotlin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kotlin.d.ts","sourceRoot":"","sources":["../../../../src/languages/astgrep-backend/lang/kotlin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D,eAAO,MAAM,aAAa,EAAE,qBAG3B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,iBAwF1B,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
export const KOTLIN_SOURCE = {
|
|
2
|
+
languageName: "kotlin",
|
|
3
|
+
moduleName: "@ast-grep/lang-kotlin",
|
|
4
|
+
};
|
|
5
|
+
export const KOTLIN_TABLE = {
|
|
6
|
+
languageId: "kotlin",
|
|
7
|
+
extensions: [".kt", ".kts"],
|
|
8
|
+
supportLevel: "deep",
|
|
9
|
+
commentKinds: ["line_comment", "multiline_comment"],
|
|
10
|
+
stringContainerKinds: ["string_literal", "character_literal"],
|
|
11
|
+
identifierLeafKinds: ["simple_identifier", "type_identifier", "this", "super"],
|
|
12
|
+
numberLeafKinds: [
|
|
13
|
+
"integer_literal",
|
|
14
|
+
"real_literal",
|
|
15
|
+
"hex_literal",
|
|
16
|
+
"bin_literal",
|
|
17
|
+
"long_literal",
|
|
18
|
+
],
|
|
19
|
+
booleanLeafKinds: ["boolean_literal"],
|
|
20
|
+
nullLeafKinds: ["null"],
|
|
21
|
+
scopes: [
|
|
22
|
+
{
|
|
23
|
+
kinds: ["class_declaration"],
|
|
24
|
+
scopeKind: "class",
|
|
25
|
+
nameKinds: ["type_identifier", "simple_identifier"],
|
|
26
|
+
refine: [
|
|
27
|
+
// Reihenfolge zaehlt: `enum class` traegt BEIDE Schluesselwoerter.
|
|
28
|
+
{ childKinds: ["enum"], scopeKind: "enum" },
|
|
29
|
+
{ childKinds: ["interface"], scopeKind: "interface" },
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
kinds: ["object_declaration"],
|
|
34
|
+
scopeKind: "namespace",
|
|
35
|
+
nameKinds: ["type_identifier", "simple_identifier"],
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
kinds: ["function_declaration"],
|
|
39
|
+
scopeKind: "function",
|
|
40
|
+
nameKinds: ["simple_identifier"],
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
kinds: ["property_declaration"],
|
|
44
|
+
scopeKind: "property",
|
|
45
|
+
// `property_declaration > variable_declaration > simple_identifier`;
|
|
46
|
+
// ohne den letzten Schritt stuende `name: String` (mit Typangabe) im
|
|
47
|
+
// Namen.
|
|
48
|
+
nameKindPath: ["variable_declaration"],
|
|
49
|
+
nameKinds: ["simple_identifier"],
|
|
50
|
+
// NUR auf Klassen-/Dateiebene: `var i = 0` in einem Funktionsrumpf ist
|
|
51
|
+
// eine lokale Variable und kein Symbol.
|
|
52
|
+
parentKinds: ["class_body", "enum_class_body", "source_file"],
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
decisions: {
|
|
56
|
+
ifKinds: ["if_expression"],
|
|
57
|
+
elseIfWrapperKinds: ["control_structure_body"],
|
|
58
|
+
// kotlin-tree-sitter 0.0.7 zerlegt ausgerechnet
|
|
59
|
+
// `else /* Blockkommentar */ if` in Geschwister und verliert das anonyme
|
|
60
|
+
// `else` aus dem Baum. Der Detektor prueft dafuer den exakt begrenzten
|
|
61
|
+
// Token-Spalt zwischen diesen Geschwistern; andere Sprachen bleiben aus.
|
|
62
|
+
recoverDetachedElseIfAfterComments: true,
|
|
63
|
+
loopKinds: ["for_statement", "while_statement", "do_while_statement"],
|
|
64
|
+
catchKinds: ["catch_block"],
|
|
65
|
+
switchKinds: ["when_expression"],
|
|
66
|
+
caseKinds: ["when_entry"],
|
|
67
|
+
caseExcludeChildKinds: ["else"],
|
|
68
|
+
anonymousOperatorKinds: [
|
|
69
|
+
"conjunction_expression",
|
|
70
|
+
"disjunction_expression",
|
|
71
|
+
"elvis_expression",
|
|
72
|
+
],
|
|
73
|
+
logicalAndOperators: ["&&"],
|
|
74
|
+
logicalOrOperators: ["||"],
|
|
75
|
+
shortCircuitOperators: ["?:"],
|
|
76
|
+
jumpKinds: ["jump_expression"],
|
|
77
|
+
blockKinds: ["control_structure_body", "statements"],
|
|
78
|
+
},
|
|
79
|
+
// Kotlin: `import kotlin.math.max` / `import a.b.C as D`. Der Pfad ist das
|
|
80
|
+
// `identifier`-Kind; der Alias steht in einem `import_alias` daneben.
|
|
81
|
+
imports: {
|
|
82
|
+
kinds: ["import_header"],
|
|
83
|
+
pathKinds: ["identifier"],
|
|
84
|
+
},
|
|
85
|
+
calls: {
|
|
86
|
+
kinds: ["call_expression"],
|
|
87
|
+
memberKinds: ["navigation_expression"],
|
|
88
|
+
},
|
|
89
|
+
declarationParentKinds: [],
|
|
90
|
+
visibilityKinds: ["modifiers"],
|
|
91
|
+
visibilityWords: ["public", "internal", "protected", "private"],
|
|
92
|
+
fieldNames: ["name"],
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=kotlin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kotlin.js","sourceRoot":"","sources":["../../../../src/languages/astgrep-backend/lang/kotlin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PHP (WP-86).
|
|
3
|
+
*
|
|
4
|
+
* ABBILDUNGEN: `trait` -> `interface` (ein benannter, wiederverwendbarer Satz
|
|
5
|
+
* von Methoden ohne eigene Instanz — naeher an einer Schnittstelle als an
|
|
6
|
+
* einer Klasse), `namespace` -> `namespace`.
|
|
7
|
+
*
|
|
8
|
+
* ENTSCHEIDUNGSPUNKTE (spec.md §16.2/§16.3):
|
|
9
|
+
* - `else_if_clause` (`elseif`) ist eine EIGENE Knotenart und damit direkt
|
|
10
|
+
* ein `else_if`.
|
|
11
|
+
* - `case_statement` zaehlt; `default_statement` ist eine eigene Knotenart
|
|
12
|
+
* und steht nicht in `caseKinds`.
|
|
13
|
+
* - `match_conditional_expression` (PHP 8 `match`) zaehlt als `case`;
|
|
14
|
+
* `match_default_expression` nicht.
|
|
15
|
+
* - `catch_clause` zaehlt, `finally_clause` nicht.
|
|
16
|
+
* - `??` zaehlt als `short_circuit`, nur erweitert. `and`/`or` (die
|
|
17
|
+
* niedrigpriorisierten Wortformen) zaehlen wie `&&`/`||`.
|
|
18
|
+
*/
|
|
19
|
+
import type { LanguageKindTable } from "../../shared/table-profile.js";
|
|
20
|
+
import type { AstGrepLanguageSource } from "../adapter.js";
|
|
21
|
+
export declare const PHP_SOURCE: AstGrepLanguageSource;
|
|
22
|
+
export declare const PHP_TABLE: LanguageKindTable;
|
|
23
|
+
//# sourceMappingURL=php.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"php.d.ts","sourceRoot":"","sources":["../../../../src/languages/astgrep-backend/lang/php.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D,eAAO,MAAM,UAAU,EAAE,qBAGxB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,iBA8EvB,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export const PHP_SOURCE = {
|
|
2
|
+
languageName: "php",
|
|
3
|
+
moduleName: "@ast-grep/lang-php",
|
|
4
|
+
};
|
|
5
|
+
export const PHP_TABLE = {
|
|
6
|
+
languageId: "php",
|
|
7
|
+
extensions: [".php", ".phtml"],
|
|
8
|
+
supportLevel: "deep",
|
|
9
|
+
commentKinds: ["comment"],
|
|
10
|
+
stringContainerKinds: ["string", "encapsed_string", "heredoc", "nowdoc"],
|
|
11
|
+
identifierLeafKinds: ["name", "variable_name", "qualified_name", "self", "parent"],
|
|
12
|
+
numberLeafKinds: ["integer", "float"],
|
|
13
|
+
booleanLeafKinds: ["boolean"],
|
|
14
|
+
nullLeafKinds: ["null"],
|
|
15
|
+
scopes: [
|
|
16
|
+
{ kinds: ["namespace_definition"], scopeKind: "namespace" },
|
|
17
|
+
{ kinds: ["class_declaration"], scopeKind: "class" },
|
|
18
|
+
{ kinds: ["interface_declaration", "trait_declaration"], scopeKind: "interface" },
|
|
19
|
+
{ kinds: ["enum_declaration"], scopeKind: "enum" },
|
|
20
|
+
{
|
|
21
|
+
kinds: ["method_declaration"],
|
|
22
|
+
scopeKind: "method",
|
|
23
|
+
constructorNames: ["__construct"],
|
|
24
|
+
},
|
|
25
|
+
{ kinds: ["function_definition"], scopeKind: "function" },
|
|
26
|
+
{
|
|
27
|
+
kinds: ["property_declaration"],
|
|
28
|
+
scopeKind: "property",
|
|
29
|
+
// `property_declaration > property_element.name`
|
|
30
|
+
nameKindPath: ["property_element"],
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
decisions: {
|
|
34
|
+
ifKinds: ["if_statement"],
|
|
35
|
+
elseIfKinds: ["else_if_clause"],
|
|
36
|
+
loopKinds: ["for_statement", "foreach_statement", "while_statement", "do_statement"],
|
|
37
|
+
catchKinds: ["catch_clause"],
|
|
38
|
+
ternaryKinds: ["conditional_expression"],
|
|
39
|
+
switchKinds: ["switch_statement", "match_expression"],
|
|
40
|
+
caseKinds: ["case_statement", "match_conditional_expression"],
|
|
41
|
+
binaryKinds: ["binary_expression"],
|
|
42
|
+
operatorField: "operator",
|
|
43
|
+
logicalAndOperators: ["&&", "and"],
|
|
44
|
+
logicalOrOperators: ["||", "or"],
|
|
45
|
+
shortCircuitOperators: ["??"],
|
|
46
|
+
jumpKinds: ["return_statement", "break_statement", "continue_statement", "throw_expression"],
|
|
47
|
+
blockKinds: ["compound_statement"],
|
|
48
|
+
consequenceField: "body",
|
|
49
|
+
alternativeField: "alternative",
|
|
50
|
+
},
|
|
51
|
+
imports: {
|
|
52
|
+
kinds: ["namespace_use_declaration"],
|
|
53
|
+
specKinds: ["namespace_use_clause"],
|
|
54
|
+
pathKinds: ["qualified_name", "name"],
|
|
55
|
+
},
|
|
56
|
+
calls: {
|
|
57
|
+
kinds: ["function_call_expression", "member_call_expression", "scoped_call_expression"],
|
|
58
|
+
functionField: "name",
|
|
59
|
+
receiverField: "object",
|
|
60
|
+
argumentsField: "arguments",
|
|
61
|
+
constructionKinds: ["object_creation_expression"],
|
|
62
|
+
},
|
|
63
|
+
declarationParentKinds: [
|
|
64
|
+
"class_declaration",
|
|
65
|
+
"interface_declaration",
|
|
66
|
+
"trait_declaration",
|
|
67
|
+
"enum_declaration",
|
|
68
|
+
"method_declaration",
|
|
69
|
+
"function_definition",
|
|
70
|
+
"simple_parameter",
|
|
71
|
+
"property_element",
|
|
72
|
+
"const_element",
|
|
73
|
+
],
|
|
74
|
+
visibilityKinds: ["visibility_modifier"],
|
|
75
|
+
bodyField: "body",
|
|
76
|
+
isExported: (_name, node) => !node.children.some((child) => child.type === "visibility_modifier" &&
|
|
77
|
+
(child.text === "private" || child.text === "protected")),
|
|
78
|
+
fieldNames: ["name"],
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=php.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"php.js","sourceRoot":"","sources":["../../../../src/languages/astgrep-backend/lang/php.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ruby (WP-86).
|
|
3
|
+
*
|
|
4
|
+
* ABBILDUNGEN: `module` -> `namespace`, `class` -> `class`, `def` und
|
|
5
|
+
* `def self.x` -> `method`.
|
|
6
|
+
*
|
|
7
|
+
* KEINE SICHTBARKEIT. Rubys `private`/`public` sind AUFRUFE, die den Rest des
|
|
8
|
+
* Klassenrumpfes umschalten — sie stehen nicht am Symbol. Ohne Datenflussblick
|
|
9
|
+
* ist die Sichtbarkeit eines `def` aus dem Syntaxbaum nicht ablesbar, also
|
|
10
|
+
* meldet dieser Adapter KEINE statt einer geratenen. Dasselbe gilt fuer
|
|
11
|
+
* `exportedNames`.
|
|
12
|
+
*
|
|
13
|
+
* ENTSCHEIDUNGSPUNKTE (spec.md §16.2/§16.3):
|
|
14
|
+
* - Die NACHSTELLFORMEN zaehlen mit: `return x if y` (`if_modifier`) hat
|
|
15
|
+
* genau die zwei Pfade, die `if y then return x end` auch haette. Ebenso
|
|
16
|
+
* `unless_modifier`, `while_modifier`, `until_modifier`.
|
|
17
|
+
* - `elsif` ist eine EIGENE Knotenart und damit direkt ein `else_if`
|
|
18
|
+
* (Fortsetzung, kein voller Nesting-Zuwachs).
|
|
19
|
+
* - `when` und `in_clause` (Ruby 3 `case/in`) sind `case`-Zweige. Der
|
|
20
|
+
* `else`-Zweig eines `case` ist die Knotenart `else` und steht nicht in
|
|
21
|
+
* `caseKinds` — er zaehlt also nicht.
|
|
22
|
+
* - `rescue` zaehlt als `catch`; `ensure` nicht (laeuft immer).
|
|
23
|
+
* - `and`/`or` sind Rubys Wortformen und zaehlen wie `&&`/`||`.
|
|
24
|
+
* - `&.` zaehlt NICHT: es ist das `operator`-Feld eines gewoehnlichen
|
|
25
|
+
* `call`, und jede Kette wuerde sonst zur Verzweigung.
|
|
26
|
+
*
|
|
27
|
+
* IMPORTE: Ruby hat keine. `require`/`require_relative` sind gewoehnliche
|
|
28
|
+
* Methodenaufrufe — hier NICHT als Import gemeldet, weil die Tabelle sie nicht
|
|
29
|
+
* vom gleichnamigen Aufruf einer eigenen Methode unterscheiden koennte. Die
|
|
30
|
+
* Datei meldet also KEINE Importe statt moeglicherweise falscher. Wer sie
|
|
31
|
+
* braucht, sieht sie in `extractCalls` als Aufrufe von `require`.
|
|
32
|
+
*/
|
|
33
|
+
import type { LanguageKindTable } from "../../shared/table-profile.js";
|
|
34
|
+
import type { AstGrepLanguageSource } from "../adapter.js";
|
|
35
|
+
export declare const RUBY_SOURCE: AstGrepLanguageSource;
|
|
36
|
+
export declare const RUBY_TABLE: LanguageKindTable;
|
|
37
|
+
//# sourceMappingURL=ruby.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruby.d.ts","sourceRoot":"","sources":["../../../../src/languages/astgrep-backend/lang/ruby.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D,eAAO,MAAM,WAAW,EAAE,qBAGzB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,iBAgExB,CAAC"}
|