Files
codegraph/Delphi/Docs/01-Implementation-Plan.md
T
2026-02-10 23:55:42 +01:00

73 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Implementation Plan: Pascal/Delphi in CodeGraph
## 0) Prämissen
- CodeGraph extrahiert **Nodes** und **Edges** über **tree-sitter** und language-spezifische **Queries (`.scm`)**.
- Danach folgt **Reference Resolution** (Calls → Definitionen, imports → Dateien, inheritance, framework patterns).
## 1) Parser / Grammar
Empfohlen: `tree-sitter-pascal` (unterstützt Delphi + FreePascal).
**Tasks:**
- Dependency hinzufügen (wie bei bestehenden Sprachen).
- Language-Loader/Registry erweitern: `languageId = "pascal"` (oder `"delphi"`, aber konsistent).
## 2) File-Erkennung
Extensions (MVP):
- `.pas` (Units)
- `.dpr` (Program)
- `.dpk` (Package)
- `.lpr` (Lazarus Program)
Optional:
- `.inc` (Include-Fragmente) erst später oder nur, wenn Parser tolerant genug ist.
## 3) Queries (MVP)
### 3.1 Nodes
Extrahiere mindestens:
- Unit/Program/Package Name
- Klassen / Interfaces / Records
- Procedures/Functions
- Methoden (class/instance)
### 3.2 Edges
Extrahiere mindestens:
- `uses` (import/dependency)
- `extends` (Basisklasse)
- `implements` (Interface-Implementierungen)
- `calls` (Identifier + optional Qualifier)
## 4) Reference Resolution (MVP)
### 4.1 Unit-Auflösung (`uses`)
- Index-Phase: Map `UnitName -> fileId` (aus Units/Programs/Packages)
- Resolution: Bei `uses Foo, Bar;` Edges auf Ziel-Units setzen.
- Spezialfälle (später): `Foo in 'path\Foo.pas'` (DPR/DPK), Namespaces (`System.SysUtils`).
### 4.2 Call-Auflösung (best effort)
- Extraktion: `callName`, optional `qualifier` (`Obj.DoIt`, `TMyClass.DoIt`)
- Heuristik-Reihenfolge:
1. lokale Procs/Funcs in der gleichen Unit
2. Methoden in der gleichen Klasse
3. Units aus `uses`
4. globaler Fallback nach Name
## 5) Tests
- Fixtures aus `fixtures/` in die Test-Suite aufnehmen
- Assertions:
- Node-Anzahl + zentrale Namen
- `uses`-Edges
- `extends`/`implements`-Edges
- einfache Call-Edges
## 6) Definition of Done
- `codegraph index` indexiert Delphi/ Pascal-Dateien ohne Crash
- `codegraph_search` findet Klassen/Methoden
- `codegraph_callers/callees` liefert sinnvolle Ergebnisse für einfache Fälle
- `uses`-Graph stimmt (Unit-Abhängigkeiten)