# Ada in Maguyva: Spezifikationen, Rümpfe und Paketgraphen

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

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 Ada mit AST, Symbolen und Graph, damit KI-Agenten Paketspezifikationen, Rümpfe, Tasks und Tagged Types in langlebigen Ada-Systemen verfolgen können.

## Unterstützungsüberblick

- Stufe: AST- und Symbol-Support
- Programmierung
- Dateiendungen: .ada, .adb, .ads
- 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 langlebiges Ada in Luft- und Raumfahrt, Verteidigung, Bahn oder anderen hochzuverlässigen Bereichen pflegen, in denen jede Änderung geprüft wird.
- Codebasen, die in `.ads`-Spezifikationen und `.adb`-Rümpfe aufgeteilt sind, sodass Schnittstelle und Implementierung in verschiedenen Dateien liegen.
- Ingenieure, die KI-Agenten für Auswirkungsanalyse und Review-Vorbereitung einsetzen, nicht für ungeprüfte Codegenerierung.

## Agentenabläufe

- Jede Einheit finden, die ein Paket per `with` einbindet, bevor sich dessen Spezifikation ändert.
- Über Paketgrenzen hinweg nachverfolgen, welche Unterprogramme eine Routine aufrufen.
- Task-Typen, geschützte Typen und Tagged-Type-Hierarchien vor einer Nebenläufigkeits- oder Designänderung erfassen.

## Warum Ada-Repositories eine Abhängigkeitskarte brauchen

Ada trennt, was ein Paket verspricht (`.ads`), davon, wie es das umsetzt (`.adb`). Das ist gutes Engineering und bedeutet zugleich, dass eine einzelne Änderung mehrere Dateien berührt, die eine Textsuche nicht für dich verbindet. Langlebige Ada-Systeme fügen eine weitere Ebene hinzu: Generics, Tagged Types, Tasks und geschützte Objekte, deren Beziehungen wichtiger sind als jede einzelne Datei.

Maguyva gibt einem Agenten diese Abhängigkeitskarte, bevor er eine Änderung vorschlägt. Genau diese Reihenfolge erwartet ein Review in hochzuverlässigen Umgebungen.

## Was Maguyva in Ada extrahiert

Maguyva deckt `.ads`, `.adb` und `.ada` ab. Unterprogrammrümpfe sowie Prozedur- und Funktionsspezifikationen werden als aufrufbare Symbole extrahiert, sodass Spezifikation und Rumpf einer Routine beide durchsuchbar sind. Der Symbolabgleich ignoriert Groß- und Kleinschreibung, wie Ada selbst.

Importe entstehen aus `with`- und `use`-Klauseln; das Schlüsselwort wird entfernt, sodass der Graph den Paketnamen speichert. Der Graph erfasst außerdem Aufrufe, Vererbung und Overrides bei Tagged Types, Instanziierung, Typreferenzen, Lese- und Schreibzugriffe sowie Kanten für das Auslösen und Behandeln von Ausnahmen.

In der Struktursuche lassen sich Task-Typen, geschützte Typen, Record-Typen und Interface-Typen als Typdefinitionen und Entry-Rümpfe als Methoden auswählen.

## Beispiel-Prompts für Agenten

- „Welche Einheiten hängen von `Flight_Control.Sensors` ab, und welche seiner Unterprogramme rufen sie auf?“ (`dependency_search` incoming)
- „Zeige Spezifikation und Rumpf von `Compute_Trajectory` sowie jeden Aufrufer.“ (`find_symbol`)
- „Erkläre, wie der Telemetrie-Task Daten an das geschützte Logging-Objekt übergibt.“ (`get_task_context`)

## Bekannte Grenzen

- Ada verwendet für manche Aufrufe, Record-Feldzugriffe und Indizierung dieselbe Syntax. Maguyva filtert eingebaute Typen, Pakete der Standardbibliothek, Attributfunktionen und Operatoren (etwa 113 Muster), um den Aufrufgraphen sauber zu halten; Aufrufe in die Standardbibliothek sind daher keine Graphkanten. Record-Feldzugriffe und Indizierung werden anhand ihrer Position in der Grammatik von Aufrufen unterschieden, nicht anhand einer Liste von Feldnamen. Gängige Text-I/O-Aufrufe wie `Put_Line`, `Put` und `Get` bleiben bewusst erhalten.
- `use`-Klauseln ändern die Sichtbarkeit, werden in der Struktursuche aber nicht als Importe ausgewählt; `with`-Klauseln schon.
- Knoten für Record- und Interface-Typen können anonyme Fragmente sein, daher können namensbasierte Strukturabfragen sie übersehen. Verwende `find_symbol` für benannte Typen.

## 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 dein Ada-Code an C gebunden ist, lies auch den [C-Leitfaden](/de/languages/c).

## Engine-Einordnung

- Die Ada-Unterstützung deckt `.ads`-Spezifikationen, `.adb`-Rümpfe und `.ada` ab. Rümpfe und Spezifikationen von Unterprogrammen sind beide aufrufbare Symbole.
- Der Symbolabgleich ignoriert Groß- und Kleinschreibung, und `with`- sowie `use`-Klauseln werden ohne Schlüsselwort zu Importbeziehungen.
- Etwa 113 eingebaute Typen, Pakete der Standardbibliothek, Attributfunktionen und Operatoren werden aus Aufrufen gefiltert; Record-Feldzugriffe und Indizierung werden anhand ihrer Position in der Grammatik von Aufrufen unterschieden, und `Put_Line`, `Put` und `Get` bleiben bewusst erhalten.

## Nützliche MCP-Einstiegspunkte

- `find_symbol`: Nutz es, um Spezifikation und Rumpf eines Unterprogramms zusammen mit den Referenzen zu finden.
- `dependency_search`: Nutz die eingehende Traversierung auf einem Paket, bevor du seine Spezifikation änderst, um jede abhängige Einheit zu sehen.
- `get_task_context`: Nutz es für Prompts wie „erkläre, wie der Telemetrie-Task Daten an das geschützte Logging-Objekt übergibt“.
