# Pascal und Delphi in Maguyva: Unit- und Klassengraphen

Canonical source: https://maguyva.ai/de/languages/pascal

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Maguyva unterstützt Pascal- und Delphi-Units mit AST, Symbolen und Graph, damit KI-Agenten uses-Klauseln, Klassen und Prozeduren vor einer Änderung erfassen können.

## Unterstützungsüberblick

- Stufe: AST- und Symbol-Support
- Programmierung
- Dateiendungen: .pas, .pp
- Echtes AST-Parsing für syntaxbewusste Suche und strukturellen Kontext.
- Benannte Symbole speisen semantisches Lookup und Cross-Referenzierung. Graph-Navigation ist verfügbar, wenn die Beziehungsextraktion aktiviert ist.
- Diese Sprache liefert Symbole und Beziehungen für die graphgestützte Suche; die unterstützten Kantentypen variieren je nach nativen Konstrukten der Sprache.
- AST-Parsing und Symbolextraktion sind beide verfügbar.

## Am besten geeignet

- Teams, die Delphi- oder Lazarus/Free Pascal-Anwendungen pflegen, deren ursprüngliche Autoren längst weitergezogen sind.
- Object-Pascal-Codebasen mit tiefen Klassenhierarchien, Interfaces und großen gemeinsam genutzten Units.
- Modernisierungs- oder Portierungsprojekte, deren erstes Ergebnis eine Karte der Units und ihrer Abhängigkeiten ist.

## Agentenabläufe

- Jede Unit auflisten, die eine gemeinsame Unit in ihrer `uses`-Klausel nennt, bevor sich diese ändert.
- Die Klassen finden, die von einem Basisformular oder einer Basiskomponente erben, und die Methoden, die sie überschreiben.
- Nachverfolgen, welche Prozeduren eine Routine aufrufen, bevor sich ihre Parameter ändern.

## Warum Pascal-Codebasen zuerst eine Karte brauchen

Delphi- und Free Pascal-Anwendungen wachsen oft um einige große Units herum, die alles andere nutzt. Formulare erben von Basisformularen, Komponenten von Basiskomponenten, und Geschäftsregeln stecken in Prozeduren, die ein Dutzend Masken aufrufen. Datei für Datei liest sich der Code gut, doch Änderungen scheitern an den Abhängigkeiten.

Maguyva gibt einem Agenten zuerst die Unit- und Klassenstruktur, damit er sagen kann, was eine Änderung berührt, bevor er etwas schreibt.

## Was Maguyva in Pascal extrahiert

Maguyva deckt die Quell-Units `.pas` und `.pp` ab. Prozedur- und Funktionsdefinitionen werden als aufrufbare Symbole extrahiert, wobei die Schlüsselwörter `procedure`, `function`, `var` und `const` aus den Definitionsnamen entfernt werden. Klassen und Interfaces lassen sich in der Struktursuche als Typdefinitionen auswählen.

Importe entstehen aus `uses`-Klauseln; das Schlüsselwort wird entfernt, sodass der Graph Unit-Namen speichert. Aufrufe werden normalisiert, indem Member-Präfixe, Argumente und umschließende Klammern entfernt werden; ein Aufruf in der Form `Self.Save(x)` wird daher als `Save` gespeichert.

Der Graph erfasst Aufrufe, Vererbung, Interface-Implementierung, Overrides, Instanziierung, Typreferenzen, Lese- und Schreibzugriffe sowie Kanten für das Auslösen und Behandeln von Ausnahmen. Rund 107 Routinen der Laufzeitbibliothek (`WriteLn`, `ReadLn`, `Inc`, `Dec`, `Ord` und ähnliche) werden aus den Beziehungen herausgefiltert.

## Beispiel-Prompts für Agenten

- „Welche Units nutzen `DataModuleMain`, und was rufen sie daraus auf?“ (`dependency_search` incoming)
- „Welche Formulare erben von `TBaseEditForm`, und welche Methoden überschreiben sie?“ (`find_symbol`, dann `dependency_search`)
- „Erkläre, wie eine Rechnung gebucht wird, vom Button-Handler bis zur Datenbank-Unit.“ (`get_task_context`)

## Bekannte Grenzen

- Nur `.pas` und `.pp` sind Pascal zugeordnet. Delphi-Projekt- und Formulardateien wie `.dpr` und `.dfm` stehen nicht in der Liste der Dateiendungen, daher liegen Formularlayouts und Projektverdrahtung außerhalb des Graphen.
- Methoden verwenden dieselbe Syntax wie freie Prozeduren, daher wählt das Preset `methods` in `structural_search` nichts aus. Nutze das Preset `functions`.
- Aufrufe gefilterter Routinen der Laufzeitbibliothek erscheinen nicht als Graphkanten. Verwende dafür `text_pattern_search`.

## Nächste Schritte

Verbinde ein Repository über den [Schnellstart](/de/docs/quickstart) und prüfe dann die Unterstützungsmatrix auf der [Kompatibilitätsseite](/de/docs/compatibility). Wenn die Anwendung C-Bibliotheken einbindet, lies auch den [C-Leitfaden](/de/languages/c).

## Engine-Einordnung

- Die Pascal-Unterstützung deckt die Units `.pas` und `.pp` ab. Delphi-Projekt- und Formulardateien wie `.dpr` und `.dfm` stehen nicht in der Liste der Dateiendungen.
- `uses`-Klauseln werden zu Importbeziehungen, und Aufrufe werden normalisiert, indem Member-Präfixe, Argumente und umschließende Klammern entfernt werden.
- Etwa 107 Routinen der Laufzeitbibliothek wie `WriteLn`, `Inc` und `Ord` werden aus den Beziehungen gefiltert, damit der Anwendungscode hervortritt.

## Nützliche MCP-Einstiegspunkte

- `find_symbol`: Nutz es für einen Klassen-, Formular- oder Prozedurnamen, wenn du Definition und Referenzen brauchst.
- `dependency_search`: Nutz die eingehende Traversierung auf einer gemeinsamen Unit oder Basisklasse, um zu sehen, welche Units und Nachfahren davon abhängen.
- `get_task_context`: Nutz es für Prompts wie „erkläre, wie eine Rechnung gebucht wird, vom Button-Handler bis zur Datenbank-Unit“.
