LanguageExtractor-Konfiguration pro Sprache in src/extraction/tree-sitter.ts.grammars.ts, types.ts, und tree-sitter.ts.tree-sitter-pascal (unterstützt Delphi, FreePascal und Standard-Pascal).npm-Paket: tree-sitter-pascal
Konkrete AST-Knoten (Auswahl):
| tree-sitter-pascal Typ | Beschreibung |
|---|---|
unit, program, library |
Top-Level-Module |
moduleName |
Name des Moduls (Kind-Knoten von unit/program/library) |
declClass |
Klassen, Records, Objects (enthält kClass/kRecord/kObject) |
declIntf |
Interfaces (kInterface/kDispInterface) |
declProc |
Procedures, Functions, Methods, Constructors, Destructors |
declProp |
Properties |
declField |
Felder in Klassen/Records |
declEnum |
Aufzählungstypen |
declEnumValue |
Einzelne Enum-Werte |
declType |
Type-Deklarationen (enthält declClass/declIntf/declEnum/etc.) |
declUses |
uses-Klauseln (imports) |
declConst |
Konstanten-Deklarationen |
declSection |
Sichtbarkeitsbereiche (kPrivate/kPublic/kProtected/kPublished) |
declHelper |
Class/Record Helpers |
declExports |
exports-Klauseln |
defProc |
Implementations-Body einer Prozedur/Funktion |
exprCall |
Funktionsaufrufe |
exprDot |
Qualifizierte Zugriffe (Obj.Method) |
declArgs |
Parameterliste |
declArg |
Einzelner Parameter |
Tasks:
tree-sitter-pascal als npm-Dependency hinzufügensrc/extraction/grammars.ts registrieren: pascal: () => require('tree-sitter-pascal')Extensions (MVP):
.pas (Units).dpr (Delphi Program).dpk (Delphi Package).lpr (Lazarus Program)Optional (Phase 2):
.inc (Include-Fragmente) – erst später, da Parser möglicherweise keinen vollständigen AST liefert.| Delphi-Konzept | tree-sitter Typ | → CodeGraph NodeKind |
|---|---|---|
| Unit / Program / Library | unit / program / library |
module |
| Klasse / Record / Object | declClass |
class |
| Interface | declIntf |
interface |
| Procedure / Function (top-level) | declProc (mit kProcedure/kFunction) |
function |
| Methode / Constructor / Destructor | declProc (mit kConstructor/kDestructor, oder innerhalb declClass) |
method |
| Property | declProp |
property |
| Feld | declField |
field |
| Enum | declEnum |
enum |
| Enum-Wert | declEnumValue |
enum_member |
| Type-Alias | declType (einfache Alias-Formen) |
type_alias |
| Konstante | declConst |
constant |
| Uses-Klausel | declUses |
import |
| Beziehung | Erkennung | → CodeGraph EdgeKind |
|---|---|---|
uses X, Y; |
declUses → Kind-Knoten identifier |
imports |
| Klassen-Vererbung | declClass → parent Feld → erster typeref |
extends |
| Interface-Implementierung | declClass → parent Feld → weitere typerefs |
implements |
| Funktionsaufruf | exprCall |
calls |
| Qualifizierter Aufruf | exprDot als Elternteil von exprCall |
calls |
| Enthaltensein | Parent-Child im AST (z.B. declClass → declProc) |
contains |
| Instanziierung | exprCall mit TClassName.Create |
instantiates |
uses)unitName → fileId (aus moduleName Knoten in unit/program/library)uses Foo, Bar; Edges auf Ziel-Units setzen.Foo in 'path\Foo.pas' (DPR/DPK), Namespaces (System.SysUtils).exprCall, Qualifier aus exprDotusesfixtures/ in die Test-Suite aufnehmenuses-Edges (imports)extends/implements-Edgescodegraph index indexiert Delphi/Pascal-Dateien ohne Crashcodegraph_search findet Klassen/Methoden/Propertiescodegraph_callers/callees liefert sinnvolle Ergebnisse für einfache Fälleuses-Graph stimmt (Unit-Abhängigkeiten)