05-NodeKind-Mapping.md 4.3 KB

NodeKind Mapping: Delphi → CodeGraph

Dieses Dokument zeigt die explizite Zuordnung von Delphi/Pascal-Konzepten zu den bestehenden CodeGraph NodeKind- und EdgeKind-Werten.

Ergebnis: Alle Delphi-Konzepte lassen sich auf existierende NodeKind-Werte abbilden. Es werden keine neuen Kinds benötigt.

Node-Mapping

Delphi-Konzept tree-sitter Typ CodeGraph NodeKind Anmerkungen
Unit unit + moduleName module Kompilierungseinheit, vergleichbar mit Modulen
Program program + moduleName module Ausführbarer Einstiegspunkt
Library library + moduleName module DLL/shared library
Klasse declClass (mit kClass) class Standard-Klasse
Record declClass (mit kRecord) class Value-Type, aber strukturell wie Klasse
Object declClass (mit kObject) class Legacy, wie Klasse behandeln
Interface declIntf (mit kInterface) interface
DispInterface declIntf (mit kDispInterface) interface COM-spezifisch
Procedure (top-level) declProc (mit kProcedure) function Ohne Rückgabetyp
Function (top-level) declProc (mit kFunction) function Mit Rückgabetyp
Methode declProc in declClass method Instance-Methode
Constructor declProc (mit kConstructor) method Spezielle Methode
Destructor declProc (mit kDestructor) method Spezielle Methode
Class Method declProc (mit kClass) method Statisch, isStatic = true
Property declProp property Mit Getter/Setter
Feld declField field
Enum declEnum enum
Enum-Wert declEnumValue enum_member
Type-Alias declType (einfach) type_alias type TMyInt = Integer;
Konstante declConst constant
Uses-Eintrag declUsesidentifier import Pro Unit-Name ein Import-Node

Edge-Mapping

Delphi-Beziehung Erkennung CodeGraph EdgeKind
uses X; declUses → Kind identifier imports
Basisklasse declClass.parent[0] (erster typeref) extends
Interface-Impl. declClass.parent[1..] (weitere typerefs) implements
Funktionsaufruf exprCall calls
Qualifizierter Aufruf exprDotexprCall calls
TClass.Create exprDot mit .Create Suffix instantiates
Unit enthält Klasse AST Parent-Child contains
Klasse enthält Methode AST Parent-Child contains

DFM/FMX Node-Mapping

DFM/FMX-Dateien werden durch einen eigenen DfmExtractor (Regex-basiert, analog LiquidExtractor) verarbeitet.

DFM-Konzept Erkennung CodeGraph NodeKind Anmerkungen
Formular object Form1: TForm1 (Top-Level) component Root-Komponente der DFM-Datei
UI-Komponente object Button1: TButton (verschachtelt) component Jede Komponente wird ein Node
Geerbte Komponente inherited Form1: TForm1 component Formular-Vererbung

DFM/FMX Edge-Mapping

DFM-Beziehung Erkennung CodeGraph EdgeKind Beschreibung
Verschachtelung object innerhalb object contains Panel1 enthält Button1
Event-Handler OnClick = Button1Click references Komponente → Methode in .pas
Datei enthält Formular Top-Level object contains DFM-Datei → Root-Komponente

Hinweis: Event-Handler-Verknüpfungen werden als UnresolvedReference gespeichert und in der Resolution-Phase zur entsprechenden Methode in der zugehörigen .pas-Datei aufgelöst.

Nicht abgebildete Konzepte (Phase 2+)

Konzept Grund
with-Statement Kein eigener EdgeKind nötig; erschwert nur die Call-Qualifizierung
Class Helper Kein eigener NodeKind; als class mit speziellem Bezug zum erweiterten Typ
exports-Klauseln declExports → könnte als export NodeKind abgebildet werden
Generics typerefTpl → beeinflusst Typ-Referenzen, nicht den NodeKind

Sichtbarkeit

Delphi-Keyword CodeGraph Visibility
published public (CodeGraph kennt kein published)
public public
protected protected
private private
strict private private
strict protected protected
(keine Angabe) public (Default in Delphi-Klassen)