# Ada w Maguyva: specyfikacje, treści i grafy pakietów

Canonical source: https://maguyva.ai/pl/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 obsługuje Adę przez AST, symbole i graf, dzięki czemu agenci AI śledzą specyfikacje pakietów, treści, zadania i typy znakowane w długowiecznych systemach Ady.

## Migawka wsparcia

- Poziom: Obsługa AST i symboli
- Programowanie
- Rozszerzenia: .ada, .adb, .ads
- Prawdziwe parsowanie AST dla wyszukiwania świadomego składni i kontekstu strukturalnego.
- Nazwane symbole zasilają wyszukiwanie semantyczne i wzajemne odwołania. Nawigacja po grafie jest dostępna po włączeniu ekstrakcji relacji.
- Ten język dostarcza symbole i relacje do wyszukiwania uwzględniającego graf; obsługiwane typy krawędzi zależą od jego rodzimych konstrukcji.
- Dostępne są zarówno parsowanie AST, jak i ekstrakcja symboli.

## Najlepsze dopasowanie

- Zespoły utrzymujące długowieczną Adę w lotnictwie, obronności, kolejnictwie lub innych dziedzinach wysokiej niezawodności, gdzie każda zmiana przechodzi przegląd.
- Bazy kodu podzielone na specyfikacje `.ads` i treści `.adb`, w których interfejs i implementacja leżą w różnych plikach.
- Inżynierowie, którzy używają agentów AI do analizy wpływu i przygotowania przeglądów, a nie do generowania kodu bez weryfikacji.

## Workflow agentów

- Znaleźć wszystkie jednostki, które wykonują `with` pakietu, zanim zmieni się jego specyfikacja.
- Prześledzić ponad granicami pakietów, które podprogramy wywołują daną procedurę.
- Zmapować typy zadań, typy chronione i hierarchie typów znakowanych przed zmianą współbieżności lub projektu.

## Dlaczego repozytoria Ady potrzebują mapy zależności

Ada oddziela to, co pakiet obiecuje (`.ads`), od tego, jak to realizuje (`.adb`). To dobra inżynieria, ale oznacza też, że jedna zmiana dotyka kilku plików, których wyszukiwanie tekstowe za Ciebie nie połączy. Długowieczne systemy w Adzie dodają kolejną warstwę: generyki, typy znakowane, zadania i obiekty chronione, których relacje są ważniejsze niż którykolwiek pojedynczy plik.

Maguyva daje agentowi tę mapę zależności, zanim zaproponuje on zmianę, czyli w kolejności, jakiej oczekuje przegląd w systemach wysokiej niezawodności.

## Co Maguyva wyodrębnia w Adzie

Maguyva obejmuje `.ads`, `.adb` i `.ada`. Treści podprogramów oraz specyfikacje procedur i funkcji są wyodrębniane jako symbole wywoływalne, więc można wyszukać zarówno specyfikację, jak i treść procedury. Dopasowywanie symboli nie rozróżnia wielkości liter, tak jak sama Ada.

Importy pochodzą z klauzul `with` i `use`; słowo kluczowe jest usuwane, więc graf przechowuje nazwę pakietu. Graf zapisuje też wywołania, dziedziczenie i nadpisania w typach znakowanych, tworzenie instancji, odwołania do typów, odczyty i zapisy oraz krawędzie zgłaszania i obsługi wyjątków.

W wyszukiwaniu strukturalnym typy zadań, typy chronione, typy rekordowe i typy interfejsów można wybrać jako definicje typów, a treści wejść jako metody.

## Przykładowe prompty dla agentów

- „Które jednostki zależą od `Flight_Control.Sensors` i które z jego podprogramów wywołują?” (`dependency_search` incoming)
- „Pokaż specyfikację i treść `Compute_Trajectory` oraz wszystkich wywołujących.” (`find_symbol`)
- „Wyjaśnij, jak zadanie telemetrii przekazuje dane do chronionego obiektu logowania.” (`get_task_context`)

## Znane ograniczenia

- Ada używa tej samej składni dla niektórych wywołań, dostępu do pól rekordów i indeksowania. Maguyva filtruje typy wbudowane, pakiety biblioteki standardowej, funkcje atrybutów i operatory (około 113 wzorców), aby graf wywołań pozostał czysty, więc wywołania biblioteki standardowej nie są krawędziami grafu. Dostęp do pól rekordów i indeksowanie są odróżniane od wywołań na podstawie ich pozycji w gramatyce, a nie listy nazw pól. Typowe wywołania tekstowego wejścia/wyjścia, takie jak `Put_Line`, `Put` i `Get`, są celowo zachowywane.
- Klauzule `use` zmieniają widoczność, ale w wyszukiwaniu strukturalnym nie są wybierane jako importy; klauzule `with` tak.
- Węzły typów rekordowych i interfejsów mogą być anonimowymi fragmentami, więc zapytania strukturalne po nazwie mogą je pominąć. Dla typów nazwanych używaj `find_symbol`.

## Kolejne kroki

Podłącz repozytorium za pomocą [szybkiego startu](/pl/docs/quickstart), a potem sprawdź macierz obsługi na [stronie zgodności](/pl/docs/compatibility). Jeśli Twój kod w Adzie łączy się z C, przeczytaj też [przewodnik po C](/pl/languages/c).

## Szczegóły silnika

- Obsługa Ady obejmuje specyfikacje `.ads`, treści `.adb` i `.ada`. Treści i specyfikacje podprogramów są symbolami wywoływalnymi.
- Dopasowywanie symboli nie rozróżnia wielkości liter, a klauzule `with` i `use` stają się relacjami importu po usunięciu słowa kluczowego.
- Około 113 typów wbudowanych, pakietów biblioteki standardowej, funkcji atrybutów i operatorów jest filtrowanych z wywołań; dostęp do pól rekordów i indeksowanie są odróżniane od wywołań na podstawie ich pozycji w gramatyce, a `Put_Line`, `Put` i `Get` są celowo zachowywane.

## Przydatne punkty wejścia MCP

- `find_symbol`: Używaj go, aby znaleźć razem specyfikację i treść podprogramu wraz z odwołaniami.
- `dependency_search`: Użyj przejścia incoming na pakiecie przed zmianą jego specyfikacji, aby zobaczyć wszystkie zależne jednostki.
- `get_task_context`: Używaj go do promptów typu „wyjaśnij, jak zadanie telemetrii przekazuje dane do chronionego obiektu logowania”.
