# Ada i Maguyva: specifikationer, kroppar och paketgrafer

Canonical source: https://maguyva.ai/sv/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 stöder Ada med AST, symboler och graf, så att AI-agenter kan följa paketspecifikationer, kroppar, tasks och taggade typer i långlivade Ada-system.

## Stödöversikt

- Nivå: Stöd för AST och symboler
- Programmering
- Filändelser: .ada, .adb, .ads
- Riktig AST-parsning för syntaxmedveten sökning och strukturell kontext.
- Namngivna symboler driver semantisk uppslagning och korsreferenser. Grafnavigering är tillgänglig när relationsextraktion är aktiverad.
- Det här språket bidrar med symboler och relationer till grafmedveten sökning; vilka kanttyper som stöds varierar med språkets inbyggda konstruktioner.
- Både AST-parsning och symbolextraktion är tillgängliga.

## Bäst lämpad för

- Team som underhåller långlivad Ada inom flyg och rymd, försvar, järnväg eller andra områden med hög integritet där varje ändring granskas.
- Kodbaser som är uppdelade i `.ads`-specifikationer och `.adb`-kroppar, där gränssnitt och implementation ligger i olika filer.
- Ingenjörer som använder AI-agenter för konsekvensanalys och granskningsförberedelse, inte för ogranskad kodgenerering.

## Agentarbetsflöden

- Hitta alla enheter som gör `with` på ett paket innan dess specifikation ändras.
- Spåra över paketgränser vilka underprogram som anropar en rutin.
- Kartlägga task-typer, skyddade typer och hierarkier av taggade typer före en ändring av samtidighet eller design.

## Varför Ada-repon behöver en beroendekarta

Ada skiljer det ett paket lovar (`.ads`) från hur det gör det (`.adb`). Det är god ingenjörskonst, och det betyder också att en enda ändring berör flera filer som en textsökning inte kopplar ihop åt dig. Långlivade Ada-system lägger till ytterligare ett lager: generics, taggade typer, tasks och skyddade objekt, vars relationer betyder mer än någon enskild fil.

Maguyva ger agenten den beroendekartan innan den föreslår en ändring, vilket är exakt den ordning som en granskning med hög integritet förväntar sig.

## Vad Maguyva extraherar i Ada

Maguyva täcker `.ads`, `.adb` och `.ada`. Underprogramkroppar samt procedur- och funktionsspecifikationer extraheras som anropbara symboler, så både specifikationen och kroppen för en rutin är sökbara. Symbolmatchningen är skiftlägesokänslig, precis som Ada självt.

Importer kommer från `with`- och `use`-satser; nyckelordet tas bort så att grafen lagrar paketnamnet. Grafen registrerar också anrop, arv och överskrivningar för taggade typer, instansiering, typreferenser, läsningar och skrivningar samt kanter för att kasta och hantera undantag.

I strukturell sökning kan task-typer, skyddade typer, posttyper och gränssnittstyper väljas som typdefinitioner, och entry-kroppar som metoder.

## Exempel på prompter för agenter

- "Vilka enheter beror på `Flight_Control.Sensors`, och vilka av dess underprogram anropar de?" (`dependency_search` incoming)
- "Visa specifikationen och kroppen för `Compute_Trajectory` och alla som anropar den." (`find_symbol`)
- "Förklara hur telemetritasken lämnar data till det skyddade loggningsobjektet." (`get_task_context`)

## Kända begränsningar

- Ada använder samma syntax för vissa anrop, åtkomst till postfält och indexering. Maguyva filtrerar inbyggda typer, paket i standardbiblioteket, attributfunktioner och operatorer (omkring 113 mönster) för att hålla anropsgrafen ren, så anrop till standardbiblioteket blir inte kanter i grafen. Åtkomst till postfält och indexering skiljs från anrop utifrån deras position i grammatiken, inte utifrån en lista med fältnamn. Vanliga text-I/O-anrop som `Put_Line`, `Put` och `Get` behålls avsiktligt.
- `use`-satser ändrar synligheten men väljs inte som importer i strukturell sökning; `with`-satser gör det.
- Noder för post- och gränssnittstyper kan vara anonyma fragment, så namnbaserade strukturella frågor kan missa dem. Använd `find_symbol` för namngivna typer.

## Nästa steg

Anslut ett repo med [snabbstarten](/sv/docs/quickstart) och kontrollera sedan stödmatrisen på [kompatibilitetssidan](/sv/docs/compatibility). Om din Ada-kod binder till C, läs även [guiden för C](/sv/languages/c).

## Motordetaljer

- Ada-stödet täcker `.ads`-specifikationer, `.adb`-kroppar och `.ada`. Underprogramkroppar och -specifikationer är båda anropbara symboler.
- Symbolmatchningen är skiftlägesokänslig, och `with`- och `use`-satser blir importrelationer när nyckelordet tagits bort.
- Omkring 113 inbyggda typer, paket i standardbiblioteket, attributfunktioner och operatorer filtreras bort ur anropen; åtkomst till postfält och indexering skiljs från anrop utifrån deras position i grammatiken, och `Put_Line`, `Put` och `Get` behålls avsiktligt.

## Användbara MCP-ingångar

- `find_symbol`: Använd det för att hitta specifikationen och kroppen för ett underprogram tillsammans med referenserna.
- `dependency_search`: Använd incoming-traversering på ett paket innan dess specifikation ändras för att se alla beroende enheter.
- `get_task_context`: Använd det för prompter som "förklara hur telemetritasken lämnar data till det skyddade loggningsobjektet".
