05-NodeKind-Mapping.md 3.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

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
.dfm/.fmx Komponenten Kein Code im Pascal-Sinne; erfordert eigenen Parser
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)