# Ada i Maguyva: specifikationer, kroppe og pakkegrafer

Canonical source: https://maguyva.ai/da/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 understøtter Ada med AST, symboler og graf, så AI-agenter kan følge pakkespecifikationer, kroppe, tasks og taggede typer i langlivede Ada-systemer.

## Øjebliksbillede af understøttelse

- Niveau: AST- og symbolunderstøttelse
- Programmering
- Filendelser: .ada, .adb, .ads
- Rigtig AST-parsing til syntaksbevidst søgning og strukturel kontekst.
- Navngivne symboler understøtter semantisk opslag og krydsreferencer. Grafnavigation er tilgængelig, når relationsudtræk er aktiveret.
- Dette sprog bidrager med symboler og relationer til grafbaseret søgning; de understøttede kanttyper varierer med sprogets egne konstruktioner.
- Både AST-parsing og symboludtræk er tilgængelige.

## Bedst egnet til

- Teams, der vedligeholder langlivet Ada inden for luft- og rumfart, forsvar, jernbane eller andre områder med høj integritet, hvor hver ændring gennemgås.
- Kodebaser, der er delt op i `.ads`-specifikationer og `.adb`-kroppe, hvor interface og implementering ligger i forskellige filer.
- Ingeniører, der bruger AI-agenter til konsekvensanalyse og forberedelse af reviews, ikke til ugennemset kodegenerering.

## Agent-arbejdsgange

- Finde alle enheder, der laver `with` på en pakke, før dens specifikation ændres.
- Spore på tværs af pakkegrænser, hvilke underprogrammer der kalder en rutine.
- Kortlægge task-typer, beskyttede typer og hierarkier af taggede typer før en ændring af samtidighed eller design.

## Hvorfor Ada-repositories har brug for et afhængighedskort

Ada adskiller det, en pakke lover (`.ads`), fra hvordan den gør det (`.adb`). Det er god ingeniørkunst, og det betyder også, at én ændring berører flere filer, som en tekstsøgning ikke forbinder for dig. Langlivede Ada-systemer tilføjer endnu et lag: generics, taggede typer, tasks og beskyttede objekter, hvis relationer betyder mere end nogen enkelt fil.

Maguyva giver agenten det afhængighedskort, før den foreslår en ændring, hvilket er præcis den rækkefølge, et review med høj integritet forventer.

## Hvad Maguyva udtrækker i Ada

Maguyva dækker `.ads`, `.adb` og `.ada`. Underprogramkroppe samt procedure- og funktionsspecifikationer udtrækkes som kaldbare symboler, så både specifikationen og kroppen for en rutine er søgbare. Symbolmatchningen skelner ikke mellem store og små bogstaver, ligesom Ada selv.

Importer kommer fra `with`- og `use`-klausuler; nøgleordet fjernes, så grafen gemmer pakkenavnet. Grafen registrerer også kald, nedarvning og overskrivninger på taggede typer, instansiering, typereferencer, læsninger og skrivninger samt kanter for at kaste og håndtere undtagelser.

I strukturel søgning kan task-typer, beskyttede typer, posttyper og interfacetyper vælges som typedefinitioner og entry-kroppe som metoder.

## Eksempler på prompts til agenter

- "Hvilke enheder afhænger af `Flight_Control.Sensors`, og hvilke af dens underprogrammer kalder de?" (`dependency_search` incoming)
- "Vis specifikationen og kroppen for `Compute_Trajectory` og alle, der kalder den." (`find_symbol`)
- "Forklar, hvordan telemetri-tasken afleverer data til det beskyttede logningsobjekt." (`get_task_context`)

## Kendte begrænsninger

- Ada bruger samme syntaks til visse kald, adgang til postfelter og indeksering. Maguyva filtrerer indbyggede typer, pakker i standardbiblioteket, attributfunktioner og operatorer (omkring 113 mønstre) for at holde kaldgrafen ren, så kald til standardbiblioteket bliver ikke kanter i grafen. Adgang til postfelter og indeksering skelnes fra kald ud fra deres placering i grammatikken, ikke ud fra en liste over feltnavne. Almindelige tekst-I/O-kald som `Put_Line`, `Put` og `Get` bevares med vilje.
- `use`-klausuler ændrer synligheden, men vælges ikke som importer i strukturel søgning; det gør `with`-klausuler.
- Noder for post- og interfacetyper kan være anonyme fragmenter, så navnebaserede strukturelle forespørgsler kan overse dem. Brug `find_symbol` til navngivne typer.

## Næste skridt

Tilslut et repository med [hurtigstarten](/da/docs/quickstart), og se derefter understøttelsesmatricen på [kompatibilitetssiden](/da/docs/compatibility). Hvis din Ada-kode binder til C, så læs også [guiden til C](/da/languages/c).

## Motordetaljer

- Ada-understøttelsen dækker `.ads`-specifikationer, `.adb`-kroppe og `.ada`. Underprogramkroppe og -specifikationer er begge kaldbare symboler.
- Symbolmatchningen skelner ikke mellem store og små bogstaver, og `with`- og `use`-klausuler bliver til importrelationer, når nøgleordet er fjernet.
- Omkring 113 indbyggede typer, pakker i standardbiblioteket, attributfunktioner og operatorer filtreres fra kaldene; adgang til postfelter og indeksering skelnes fra kald ud fra deres placering i grammatikken, og `Put_Line`, `Put` og `Get` bevares med vilje.

## Nyttige MCP-indgange

- `find_symbol`: Brug det til at finde specifikationen og kroppen for et underprogram samlet, med referencer.
- `dependency_search`: Brug incoming-gennemløb på en pakke, før dens specifikation ændres, for at se alle afhængige enheder.
- `get_task_context`: Brug det til prompts som "forklar, hvordan telemetri-tasken afleverer data til det beskyttede logningsobjekt".
