# Ada in Maguyva: specificaties, bodies en pakketgrafen

Canonical source: https://maguyva.ai/nl/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 ondersteunt Ada met AST, symbolen en graaf, zodat AI-agents pakketspecificaties, bodies, tasks en tagged types in langlevende Ada-systemen volgen.

## Ondersteuningsoverzicht

- Tier: AST- en symboolondersteuning
- Programmeren
- Extensies: .ada, .adb, .ads
- Echte AST-parsing voor syntaxbewust zoeken en structurele context.
- Benoemde symbolen voeden semantische lookup en kruisverwijzingen. Graafnavigatie is beschikbaar wanneer relatie-extractie is ingeschakeld.
- Deze taal draagt symbolen en relaties bij aan graafbewust zoeken; ondersteunde kanttypen variëren met de eigen constructies van de taal.
- Zowel AST-parsing als symboolextractie zijn beschikbaar.

## Beste toepassing

- Teams die langlevende Ada onderhouden in lucht- en ruimtevaart, defensie, spoor of andere domeinen met hoge integriteit, waar elke wijziging wordt gereviewd.
- Codebases die zijn opgesplitst in `.ads`-specificaties en `.adb`-bodies, waarbij interface en implementatie in verschillende bestanden staan.
- Engineers die AI-agents inzetten voor impactanalyse en reviewvoorbereiding, niet voor ongereviewde codegeneratie.

## Agentworkflows

- Elke eenheid vinden die een pakket met `with` binnenhaalt voordat de specificatie verandert.
- Over pakketgrenzen heen nagaan welke subprogramma's een routine aanroepen.
- Tasktypes, protected types en hiërarchieën van tagged types in kaart brengen vóór een wijziging in concurrency of ontwerp.

## Waarom Ada-repositories een afhankelijkheidskaart nodig hebben

Ada scheidt wat een pakket belooft (`.ads`) van hoe het dat doet (`.adb`). Dat is goed engineeringwerk en betekent ook dat één wijziging meerdere bestanden raakt die tekstzoeken niet voor je verbindt. Langlevende Ada-systemen voegen nog een laag toe: generics, tagged types, tasks en protected objects, waarvan de relaties belangrijker zijn dan welk afzonderlijk bestand ook.

Maguyva geeft een agent die afhankelijkheidskaart voordat hij een wijziging voorstelt, precies de volgorde die een review met hoge integriteit verwacht.

## Wat Maguyva in Ada extraheert

Maguyva dekt `.ads`, `.adb` en `.ada`. Subprogrammabodies en procedure- en functiespecificaties worden geëxtraheerd als aanroepbare symbolen, zodat zowel de specificatie als de body van een routine doorzoekbaar is. Het matchen van symbolen is hoofdletterongevoelig, net als Ada zelf.

Imports komen uit `with`- en `use`-clausules; het sleutelwoord wordt verwijderd, zodat de graaf de pakketnaam opslaat. De graaf legt ook aanroepen vast, overerving en overrides bij tagged types, instantiëring, typeverwijzingen, lees- en schrijfacties, en randen voor het opwerpen en afhandelen van exceptions.

In structureel zoeken zijn tasktypes, protected types, recordtypes en interfacetypes te selecteren als typedefinities, en entry-bodies als methoden.

## Voorbeeldprompts voor agents

- "Welke eenheden hangen af van `Flight_Control.Sensors`, en welke van zijn subprogramma's roepen ze aan?" (`dependency_search` incoming)
- "Toon de specificatie en body van `Compute_Trajectory` en elke aanroeper." (`find_symbol`)
- "Leg uit hoe de telemetrietask gegevens doorgeeft aan het protected logging-object." (`get_task_context`)

## Bekende beperkingen

- Ada gebruikt dezelfde syntaxis voor sommige aanroepen, toegang tot recordvelden en indexering. Maguyva filtert ingebouwde types, pakketten uit de standaardbibliotheek, attribuutfuncties en operatoren (ongeveer 113 patronen) om de aanroepgraaf schoon te houden, dus aanroepen naar de standaardbibliotheek zijn geen randen in de graaf. Toegang tot recordvelden en indexering worden van aanroepen onderscheiden op basis van hun positie in de grammatica, niet op basis van een lijst met veldnamen. Gangbare tekst-I/O-aanroepen zoals `Put_Line`, `Put` en `Get` blijven bewust behouden.
- `use`-clausules veranderen de zichtbaarheid, maar worden in structureel zoeken niet als imports geselecteerd; `with`-clausules wel.
- Nodes voor record- en interfacetypes kunnen anonieme fragmenten zijn, waardoor structurele zoekopdrachten op naam ze kunnen missen. Gebruik `find_symbol` voor benoemde types.

## Volgende stappen

Koppel een repository via de [snelstart](/nl/docs/quickstart) en bekijk daarna de ondersteuningsmatrix op de [compatibiliteitspagina](/nl/docs/compatibility). Als je Ada-code aan C koppelt, lees dan ook de [C-gids](/nl/languages/c).

## Enginedetails

- Ada-ondersteuning dekt `.ads`-specificaties, `.adb`-bodies en `.ada`. Subprogrammabodies en -specificaties zijn allebei aanroepbare symbolen.
- Het matchen van symbolen is hoofdletterongevoelig, en `with`- en `use`-clausules worden importrelaties nadat het sleutelwoord is verwijderd.
- Ongeveer 113 ingebouwde types, pakketten uit de standaardbibliotheek, attribuutfuncties en operatoren worden uit aanroepen gefilterd; toegang tot recordvelden en indexering worden van aanroepen onderscheiden op basis van hun positie in de grammatica, en `Put_Line`, `Put` en `Get` blijven bewust behouden.

## Nuttige MCP-instappunten

- `find_symbol`: Gebruik het om de specificatie en body van een subprogramma samen met de verwijzingen te vinden.
- `dependency_search`: Gebruik incoming-traversal op een pakket voordat de specificatie verandert, om elke afhankelijke eenheid te zien.
- `get_task_context`: Gebruik het voor prompts zoals "leg uit hoe de telemetrietask gegevens doorgeeft aan het protected logging-object".
