Olaf Monien 8dfc99572f Delphi-Konzept: DFM/FMX Support hinzugefügt il y a 4 mois
..
Docs 8dfc99572f Delphi-Konzept: DFM/FMX Support hinzugefügt il y a 4 mois
fixtures 8dfc99572f Delphi-Konzept: DFM/FMX Support hinzugefügt il y a 4 mois
resolution dcca22c78f Delphi-Konzept: Reale tree-sitter-pascal AST-Typen, Integration Guide, erweiterte Fixtures il y a 4 mois
README.md 8dfc99572f Delphi-Konzept: DFM/FMX Support hinzugefügt il y a 4 mois

README.md

CodeGraph Pascal/Delphi Support — Konzept & Bauplan

Dieses Verzeichnis enthält einen umsetzbaren Bauplan für Pascal/Delphi-Support in CodeGraph. Es basiert auf der tatsächlichen CodeGraph-Architektur und den verifizierten AST-Knotentypen von tree-sitter-pascal.

Ziel: CodeGraph soll Pascal/Delphi-Dateien indexieren und daraus Nodes (Units, Klassen, Methoden, Properties, Enums, …) sowie Edges (uses/imports, calls, extends, implements, …) extrahieren. Zusätzlich werden DFM/FMX-Formulardateien unterstützt, um UI-Komponenten und Event-Handler-Verknüpfungen zu erfassen.

Inhalt

Verzeichnis / Datei Beschreibung
Docs/01-Implementation-Plan.md Implementierungs-Roadmap mit konkreten AST-Typen
Docs/02-Capture-Convention.md Wie Pascal an CodeGraphs LanguageExtractor-Interface andockt
Docs/03-AST-Referenz.md Verifizierte AST-Knotentypen aus tree-sitter-pascal
Docs/04-Checklist.md Umsetzungs-Checkliste mit bekannten Einschränkungen
Docs/05-NodeKind-Mapping.md Explizite Zuordnung Delphi → CodeGraph NodeKind/EdgeKind
Docs/06-Integration-Guide.md Konkrete Code-Diffs für grammars.ts, types.ts, tree-sitter.ts + DfmExtractor
Docs/07-DFM-FMX-Support.md DFM/FMX Form-Dateien: Format-Referenz & Extraktions-Konzept
fixtures/ Delphi-Beispieldateien zum Testen (.pas, .dpr, .dfm)
resolution/ Resolver-Heuristiken (Unit-Mapping, Call-Resolution)

Architektur-Übersicht

CodeGraph verwendet keine per-Sprache Plugin-Verzeichnisse. Die Integration erfolgt zentral in drei Dateien:

  1. src/types.tsLanguage Union-Type und DEFAULT_CONFIG.include Patterns
  2. src/extraction/grammars.ts — Grammar-Loader, Extension-Mapping, Display-Name
  3. src/extraction/tree-sitter.tsLanguageExtractor-Konfiguration in der EXTRACTORS Map

Wie du damit arbeitest

  1. Integration Guide lesen (Docs/06-Integration-Guide.md) — enthält die exakten Code-Änderungen
  2. npm install tree-sitter-pascal als Dependency hinzufügen
  3. Änderungen in den drei Dateien vornehmen (types.ts, grammars.ts, tree-sitter.ts)
  4. Resolver erweitern (mindestens uses → Unit-File, einfache Call-Auflösung)
  5. Fixtures in die Tests aufnehmen und Assertions hinzufügen

Grammar & Parsing

Pascal-Dateien (.pas, .dpr, .dpk, .lpr) werden mit tree-sitter-pascal geparst (AST-basierte Extraktion via LanguageExtractor).

DFM/FMX-Dateien (.dfm, .fmx) werden mit einem Custom Extractor (DfmExtractor) verarbeitet — analog zu LiquidExtractor und SvelteExtractor. Das DFM-Textformat ist zeilenbasiert und wird per Regex geparst. Besonders wertvoll: Event-Handler wie OnClick = Button1Click erzeugen references-Edges zu den zugehörigen Methoden in der .pas-Datei.