- Alle Docs auf verifizierte AST-Knotentypen aktualisiert (declClass, declIntf, declProc, etc.) - Scaffold/ entfernt und durch konkreten Integration Guide ersetzt (06-Integration-Guide.md) - Neue Docs: AST-Referenz (03), NodeKind-Mapping (05), Integration Guide (06) - Checklist um bekannte Einschränkungen erweitert (with-Statements, .dfm/.fmx, Generics) - UAuth.pas erweitert: Sichtbarkeitsbereiche, Felder, Properties, Constructor/Destructor - UTypes.pas neu: Enums, Records, Type-Aliase, Konstanten, Class Methods, verschachtelte Typen - UnitResolution.md mit konkreten AST-Strukturen aktualisiert - README.md an neue Architektur-Beschreibung angepasst
1.3 KiB
1.3 KiB
Unit Resolution Heuristics (uses → File)
Input
- Extrahierte Edges vom Typ
importsausdeclUses-Knoten. - Extrahierte Nodes vom Typ
moduleausunit/program/library(Name ausmoduleName-Kind-Knoten).
AST-Struktur
(declUses
(kUses)
(identifier "System.SysUtils") ← Unit-Name
(identifier "UAuth") ← Unit-Name
(kIn) (literalString "'UAuth.pas'") ← optionaler Pfad
)
MVP Algorithm
- Build
unitName → nodeIdMap für alle indexierten Dateien (ausmoduleName-Knoten). - Für jeden
imports-Edge mit ZielnameX:- Exakter Match auf
X - Case-insensitiver Match (Delphi ist case-insensitive)
- Namespace-Normalisierung:
System.SysUtils→ versuche auchSysUtils(letzter Segment)
- Dateiname-basierter Fallback:
X→X.pasin den indexierten Dateien suchen
- Exakter Match auf
- Falls aufgelöst:
edge.to_node_id = targetNodeId - Falls nicht aufgelöst:
edge.to_symbol = Xbeibehalten (Suche funktioniert trotzdem)
DPR/DPK in 'path' (Phase 2)
In Delphi-Projektdateien kann ein expliziter Pfad angegeben werden:
uses
Foo in 'src/Foo.pas',
Bar in 'Bar.pas';
Im AST erkennbar durch (kIn) (literalString) nach dem (identifier).
Enhancement:
literalStringextrahieren und direkt zur Datei auflösen- Pfad relativ zur DPR/DPK-Datei interpretieren