From db0ea28cd75a6e0dadbfc57bf7b1549fbcdf9d11 Mon Sep 17 00:00:00 2001 From: Yudhajit Nag Date: Sun, 2 Aug 2026 17:09:30 +0530 Subject: [PATCH] feat: add GDScript language support - Add tree-sitter-gdscript WASM grammar (PrestonKnopp/tree-sitter-gdscript) - Wire gdscript into grammars.ts (WASM map, EXTENSION_MAP, VENDORED_WASM_LANGS) - Implement gdscript extractor: class_name_statement, function_definition, enum_definition - Handle preload/load as import edges, extends as extends edges - Register extractor in languages/index.ts - Add GDScript display name Tested on Timechain: 228 GDScript files indexed, 2749 nodes, 4404 edges. --- src/extraction/grammars.ts | 4 + src/extraction/languages/gdscript.ts | 140 ++++++++++++++++++ src/extraction/languages/index.ts | 2 + src/extraction/wasm/tree-sitter-gdscript.wasm | Bin 0 -> 347381 bytes src/types.ts | 1 + 5 files changed, 147 insertions(+) create mode 100644 src/extraction/languages/gdscript.ts create mode 100755 src/extraction/wasm/tree-sitter-gdscript.wasm diff --git a/src/extraction/grammars.ts b/src/extraction/grammars.ts index d4127631d..c026c5d45 100644 --- a/src/extraction/grammars.ts +++ b/src/extraction/grammars.ts @@ -50,6 +50,7 @@ const WASM_GRAMMAR_FILES: Record = { terraform: 'tree-sitter-terraform.wasm', arkts: 'tree-sitter-arkts.wasm', nix: 'tree-sitter-nix.wasm', + gdscript: 'tree-sitter-gdscript.wasm', }; /** @@ -75,6 +76,7 @@ export const EXTENSION_MAP: Record = { '.py': 'python', '.pyw': 'python', '.go': 'go', + '.gd': 'gdscript', '.rs': 'rust', '.java': 'java', '.c': 'c', @@ -289,6 +291,7 @@ export async function initGrammars(): Promise { * the vendored wasm together. */ const VENDORED_WASM_LANGS: ReadonlySet = new Set([ + 'gdscript', 'pascal', 'scala', 'lua', 'luau', 'csharp', 'r', 'cfml', 'cfscript', 'cfquery', 'cobol', 'vbnet', 'erlang', 'terraform', 'arkts', 'nix', 'typescript', 'tsx', 'javascript', 'jsx', 'java', 'python', 'go', @@ -652,6 +655,7 @@ export function getLanguageDisplayName(language: Language): string { cfquery: 'CFQuery (SQL)', cobol: 'COBOL', vbnet: 'Visual Basic .NET', + gdscript: 'GDScript', erlang: 'Erlang', terraform: 'Terraform', arkts: 'ArkTS', diff --git a/src/extraction/languages/gdscript.ts b/src/extraction/languages/gdscript.ts new file mode 100644 index 000000000..026ed95f4 --- /dev/null +++ b/src/extraction/languages/gdscript.ts @@ -0,0 +1,140 @@ +import type { Node as SyntaxNode } from 'web-tree-sitter'; +import { getNodeText, getChildByField } from '../tree-sitter-helpers'; +import type { LanguageExtractor } from '../tree-sitter-types'; + +// Node names follow PrestonKnopp/tree-sitter-gdscript (ABI-15). +// GDScript is Python-like: indentation-based, dynamically typed, with +// Godot-specific constructs (class_name, extends, preload, signals, @export). + +/** First descendant of a given type (breadth-first), or null. */ +function findDescendant(node: SyntaxNode, type: string): SyntaxNode | null { + const queue: SyntaxNode[] = [...node.namedChildren]; + while (queue.length) { + const n = queue.shift()!; + if (n.type === type) return n; + queue.push(...n.namedChildren); + } + return null; +} + +/** Extract string content from a string literal node, stripping quotes. */ +function extractString(node: SyntaxNode, source: string): string | null { + const content = findDescendant(node, 'string_content'); + if (content) return getNodeText(content, source).trim() || null; + const text = getNodeText(node, source).trim(); + return text.replace(/^["']|["']$/g, '') || null; +} + +/** + * If `callNode` is `preload("res://...")` or `load("res://...")`, + * return the path string; otherwise null. + */ +function preloadOrLoad(callNode: SyntaxNode, source: string): string | null { + const name = getChildByField(callNode, 'name'); + if (!name || name.type !== 'identifier') return null; + const callee = getNodeText(name, source); + if (callee !== 'preload' && callee !== 'load') return null; + + const args = getChildByField(callNode, 'arguments'); + if (!args) return null; + const str = findDescendant(args, 'string'); + return str ? extractString(str, source) : null; +} + +/** + * Extract the base name from an extends_statement. + * Returns null if no extends clause found. + */ +function extractExtends(node: SyntaxNode, source: string): string | null { + // Look for extends_statement child (used by class_name_statement) + const extendsStmt = node.namedChildren.find((c) => c.type === 'extends_statement'); + if (!extendsStmt) return null; + + // extends_statement > type > identifier or string + const typeNode = getChildByField(extendsStmt, 'type'); + if (!typeNode) return null; + + const ident = typeNode.namedChildren.find((c) => c.type === 'identifier'); + if (ident) return getNodeText(ident, source); + + const str = typeNode.namedChildren.find((c) => c.type === 'string'); + if (str) return extractString(str, source); + return null; +} + +export const gdscriptExtractor: LanguageExtractor = { + // GDScript functions: `func name(...)` — top-level or inside class. + // class_name_statement creates global classes (no class keyword needed). + functionTypes: ['function_definition'], + classTypes: ['class_name_statement'], + methodTypes: [], // methods are function_definition inside class context + interfaceTypes: [], + structTypes: [], + // enum blocks: `enum { A, B }` or `enum Name { A, B }` + enumTypes: ['enum_definition'], + typeAliasTypes: [], + importTypes: [], // preload/load are function calls — handled in visitNode + callTypes: ['call'], + variableTypes: [], // GDScript vars are not first-class symbols in most cases + nameField: 'name', + bodyField: 'body', + paramsField: 'parameters', + + getSignature: (node: SyntaxNode, source: string) => { + const params = getChildByField(node, 'parameters'); + return params ? getNodeText(params, source) : undefined; + }, + + // For function_definition inside a class, the class name is the receiver. + // This is handled by the extraction framework via nodeStack context. + getReceiverType: () => undefined, + + // Handle preload/load calls and extends clauses. + visitNode: (node: SyntaxNode, ctx) => { + const source = ctx.source; + + // Handle preload/load as import edges. + if (node.type === 'call') { + const path = preloadOrLoad(node, source); + if (path) { + const imp = ctx.createNode('import', path, node, { + signature: getNodeText(node, source).trim().slice(0, 100), + }); + if (imp && ctx.nodeStack.length > 0) { + const parentId = ctx.nodeStack[ctx.nodeStack.length - 1]; + if (parentId) { + ctx.addUnresolvedReference({ + fromNodeId: parentId, + referenceName: path, + referenceKind: 'imports', + line: node.startPosition.row + 1, + column: node.startPosition.column, + }); + } + } + return true; // claimed as import, not a generic call + } + return false; + } + + // Handle extends clauses on class_name_statement. + if (node.type === 'class_name_statement') { + const base = extractExtends(node, source); + if (base && ctx.nodeStack.length > 0) { + const classId = ctx.nodeStack[ctx.nodeStack.length - 1]; + if (classId) { + ctx.addUnresolvedReference({ + fromNodeId: classId, + referenceName: base, + referenceKind: 'extends', + line: node.startPosition.row + 1, + column: node.startPosition.column, + }); + } + } + return false; + } + + return false; + }, +}; \ No newline at end of file diff --git a/src/extraction/languages/index.ts b/src/extraction/languages/index.ts index 6b760b01d..4e32f489b 100644 --- a/src/extraction/languages/index.ts +++ b/src/extraction/languages/index.ts @@ -24,6 +24,7 @@ import { dartExtractor } from './dart'; import { pascalExtractor } from './pascal'; import { scalaExtractor } from './scala'; import { luaExtractor } from './lua'; +import { gdscriptExtractor } from './gdscript'; import { rExtractor } from './r'; import { luauExtractor } from './luau'; import { objcExtractor } from './objc'; @@ -59,6 +60,7 @@ export const EXTRACTORS: Partial> = { lua: luaExtractor, r: rExtractor, luau: luauExtractor, + gdscript: gdscriptExtractor, objc: objcExtractor, cfscript: cfscriptExtractor, cfquery: cfqueryExtractor, diff --git a/src/extraction/wasm/tree-sitter-gdscript.wasm b/src/extraction/wasm/tree-sitter-gdscript.wasm new file mode 100755 index 0000000000000000000000000000000000000000..7159ed3f104a52a2bc356c0569c6f712f95d7ef2 GIT binary patch literal 347381 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 literal 0 HcmV?d00001 diff --git a/src/types.ts b/src/types.ts index 8cc600b1c..a150671f4 100644 --- a/src/types.ts +++ b/src/types.ts @@ -114,6 +114,7 @@ export const LANGUAGES = [ 'cfquery', 'cobol', 'vbnet', + 'gdscript', 'erlang', 'terraform', 'unknown',