# Ada v Maguyva: specifikace, těla a grafy balíčků

Canonical source: https://maguyva.ai/cs/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 podporuje Adu s AST, symboly a grafem, takže AI agenti sledují specifikace balíčků, těla, úlohy a tagované typy v dlouhodobých systémech v Adě.

## Přehled podpory

- Úroveň: Podpora AST a symbolů
- Programování
- Přípony: .ada, .adb, .ads
- Skutečné parsování AST pro vyhledávání citlivé na syntaxi a strukturální kontext.
- Pojmenované symboly napájejí sémantické vyhledávání a křížové odkazy. Navigace v grafu je k dispozici, když je povolena extrakce vztahů.
- Tento jazyk přispívá symboly a vztahy do vyhledávání využívajícího graf; podporované typy hran se liší podle jeho nativních konstrukcí.
- K dispozici je parsování AST i extrakce symbolů.

## Nejlépe se hodí pro

- Týmy, které udržují dlouholetý kód v Adě v letectví, obraně, železniční dopravě a dalších oborech s vysokou integritou, kde prochází revizí každá změna.
- Kódové základny rozdělené na specifikace `.ads` a těla `.adb`, kde rozhraní a implementace leží v různých souborech.
- Inženýři, kteří AI agenty používají pro analýzu dopadu a přípravu revizí, ne pro generování kódu bez kontroly.

## Workflow agentů

- Najít všechny jednotky, které balíček načítají přes `with`, než se změní jeho specifikace.
- Přes hranice balíčků dohledat, které podprogramy volají danou rutinu.
- Zmapovat typy úloh, chráněné typy a hierarchie tagovaných typů před změnou souběžnosti nebo návrhu.

## Proč repozitáře v Adě potřebují mapu závislostí

Ada odděluje to, co balíček slibuje (`.ads`), od toho, jak to plní (`.adb`). Je to dobré inženýrství a zároveň to znamená, že jedna změna zasáhne několik souborů, které za vás textové vyhledávání nepropojí. Dlouhodobé systémy v Adě přidávají další vrstvu: generika, tagované typy, úlohy a chráněné objekty, jejichž vazby jsou důležitější než jakýkoli jednotlivý soubor.

Maguyva dá agentovi tuto mapu závislostí dřív, než navrhne úpravu, tedy přesně v pořadí, které revize s vysokou integritou očekává.

## Co Maguyva v Adě extrahuje

Maguyva pokrývá `.ads`, `.adb` a `.ada`. Těla podprogramů i specifikace procedur a funkcí se extrahují jako volatelné symboly, takže lze vyhledat specifikaci i tělo rutiny. Porovnávání symbolů nerozlišuje velikost písmen, stejně jako samotná Ada.

Importy vznikají z klauzulí `with` a `use`; klíčové slovo se odstraní, takže graf uchovává název balíčku. Graf zaznamenává také volání, dědičnost a přepisy u tagovaných typů, vytváření instancí, odkazy na typy, čtení a zápisy a hrany vyvolání a ošetření výjimek.

Ve strukturním vyhledávání lze typy úloh, chráněné typy, typy záznamů a typy rozhraní vybrat jako definice typů a těla vstupů jako metody.

## Ukázkové prompty pro agenty

- „Které jednotky závisejí na `Flight_Control.Sensors` a které jeho podprogramy volají?“ (`dependency_search` incoming)
- „Ukaž specifikaci a tělo `Compute_Trajectory` a všechny volající.“ (`find_symbol`)
- „Vysvětli, jak úloha telemetrie předává data chráněnému objektu pro logování.“ (`get_task_context`)

## Známá omezení

- Ada používá stejnou syntaxi pro některá volání, přístup k položkám záznamů a indexování. Maguyva filtruje vestavěné typy, balíčky standardní knihovny, atributové funkce a operátory (přibližně 113 vzorů), aby graf volání zůstal čistý, takže volání standardní knihovny nejsou hranami grafu. Přístup k položkám záznamů a indexování se od volání rozlišují podle své pozice v gramatice, nikoli podle seznamu názvů položek. Běžná volání textového vstupu a výstupu jako `Put_Line`, `Put` a `Get` se záměrně zachovávají.
- Klauzule `use` mění viditelnost, ale ve strukturním vyhledávání se jako importy nevybírají; klauzule `with` ano.
- Uzly typů záznamů a rozhraní mohou být anonymní fragmenty, takže je strukturní dotazy podle názvu mohou minout. Pro pojmenované typy použijte `find_symbol`.

## Další kroky

Připojte repozitář podle [rychlého startu](/cs/docs/quickstart) a pak si prohlédněte matici podpory na [stránce kompatibility](/cs/docs/compatibility). Pokud se váš kód v Adě propojuje s C, přečtěte si i [průvodce jazykem C](/cs/languages/c).

## Podrobnosti enginu

- Podpora Ady pokrývá specifikace `.ads`, těla `.adb` a `.ada`. Těla i specifikace podprogramů jsou volatelné symboly.
- Porovnávání symbolů nerozlišuje velikost písmen a klauzule `with` a `use` se po odstranění klíčového slova stávají vazbami importu.
- Přibližně 113 vestavěných typů, balíčků standardní knihovny, atributových funkcí a operátorů se z volání odfiltruje; přístup k položkám záznamů a indexování se od volání rozlišují podle své pozice v gramatice a `Put_Line`, `Put` a `Get` se záměrně zachovávají.

## Užitečné vstupní body MCP

- `find_symbol`: Použijte k nalezení specifikace a těla podprogramu najednou, včetně odkazů.
- `dependency_search`: Před změnou specifikace balíčku použijte procházení incoming a uvidíte všechny závislé jednotky.
- `get_task_context`: Použijte pro prompty typu „vysvětli, jak úloha telemetrie předává data chráněnému objektu pro logování“.
