# Ada у Maguyva: специфікації, тіла та графи пакетів

Canonical source: https://maguyva.ai/uk/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 підтримує Ada з AST, символами та графом, щоб ШІ-агенти відстежували специфікації пакетів, тіла, задачі й тегові типи в довговічних системах на Ada.

## Знімок підтримки

- Рівень: Підтримка AST і символів
- Програмування
- Розширення: .ada, .adb, .ads
- Справжній розбір AST для пошуку з урахуванням синтаксису та структурного контексту.
- Іменовані символи забезпечують семантичний пошук і перехресні посилання. Навігація графом доступна, коли ввімкнено видобування зв’язків.
- Ця мова додає символи та зв’язки до пошуку з урахуванням графа; підтримувані типи ребер залежать від притаманних їй конструкцій.
- Доступні як розбір AST, так і видобування символів.

## Найкраще підходить

- Команди, що супроводжують давній код на Ada в авіакосмічній галузі, обороні, на залізниці та в інших сферах високої надійності, де кожна зміна проходить рев'ю.
- Кодові бази, поділені на специфікації `.ads` і тіла `.adb`, де інтерфейс і реалізація лежать у різних файлах.
- Інженери, які використовують ШІ-агентів для аналізу впливу й підготовки рев'ю, а не для генерування коду без перевірки.

## Робочі процеси агента

- Знайти всі модулі, що підключають пакет через `with`, перш ніж змінювати його специфікацію.
- Простежити крізь межі пакетів, які підпрограми викликають процедуру.
- Скласти карту типів задач, захищених типів та ієрархій тегових типів перед зміною паралелізму чи архітектури.

## Чому репозиторіям на Ada потрібна карта залежностей

Ada відокремлює те, що пакет обіцяє (`.ads`), від того, як він це виконує (`.adb`). Це добра інженерія, і водночас одна зміна зачіпає кілька файлів, які текстовий пошук за вас не пов'яже. Довговічні системи на Ada додають ще один шар: узагальнення, тегові типи, задачі й захищені об'єкти, зв'язки між якими важливіші за будь-який окремий файл.

Maguyva дає агентові цю карту залежностей до того, як він запропонує правку, — саме в тому порядку, якого очікує рев'ю високої надійності.

## Що Maguyva витягує з Ada

Maguyva охоплює `.ads`, `.adb` і `.ada`. Тіла підпрограм, а також специфікації процедур і функцій витягуються як символи, що викликаються, тож шукати можна і специфікацію процедури, і її тіло. Зіставлення символів не враховує регістр — як і сама Ada.

Імпорти будуються з речень `with` і `use`; ключове слово вилучається, і в графі зберігається назва пакета. Граф також фіксує виклики, успадкування й перевизначення для тегових типів, створення екземплярів, посилання на типи, читання й записи, а також ребра збудження та обробки винятків.

У структурному пошуку типи задач, захищені типи, типи записів та інтерфейсні типи можна вибрати як визначення типів, а тіла входів — як методи.

## Приклади промптів для агентів

- «Які модулі залежать від `Flight_Control.Sensors` і які його підпрограми викликають?» (`dependency_search` incoming)
- «Покажи специфікацію й тіло `Compute_Trajectory` та всіх, хто їх викликає.» (`find_symbol`)
- «Поясни, як задача телеметрії передає дані захищеному об'єкту журналювання.» (`get_task_context`)

## Відомі обмеження

- В Ada частина викликів, звернення до полів записів та індексація мають однаковий синтаксис. Щоб граф викликів лишався чистим, Maguyva фільтрує вбудовані типи, пакети стандартної бібліотеки, функції атрибутів і оператори (близько 113 шаблонів), тож виклики стандартної бібліотеки не стають ребрами графа. Звернення до полів записів та індексацію відрізняють від викликів за їхньою позицією в граматиці, а не за списком назв полів. Поширені виклики текстового введення-виведення, як-от `Put_Line`, `Put` і `Get`, зберігаються навмисно.
- Речення `use` змінюють видимість, але в структурному пошуку не вибираються як імпорти; речення `with` — вибираються.
- Вузли типів записів та інтерфейсів можуть бути анонімними фрагментами, тому структурні запити за назвою можуть їх пропустити. Для іменованих типів використовуйте `find_symbol`.

## Наступні кроки

Під'єднайте репозиторій за [швидким стартом](/uk/docs/quickstart), потім перегляньте матрицю підтримки на [сторінці сумісності](/uk/docs/compatibility). Якщо ваш код на Ada пов'язаний із C, прочитайте також [посібник із C](/uk/languages/c).

## Деталі рушія

- Підтримка Ada охоплює специфікації `.ads`, тіла `.adb` і `.ada`. І тіла, і специфікації підпрограм є символами, що викликаються.
- Зіставлення символів не враховує регістр, а речення `with` і `use` після вилучення ключового слова стають зв'язками імпорту.
- Близько 113 вбудованих типів, пакетів стандартної бібліотеки, функцій атрибутів і операторів відфільтровуються з викликів; звернення до полів записів та індексацію відрізняють від викликів за їхньою позицією в граматиці, а `Put_Line`, `Put` і `Get` зберігаються навмисно.

## Корисні точки входу MCP

- `find_symbol`: Використовуйте, щоб знайти специфікацію й тіло підпрограми разом із посиланнями.
- `dependency_search`: Використовуйте обхід incoming для пакета перед зміною його специфікації, щоб побачити всі залежні модулі.
- `get_task_context`: Використовуйте для промптів на кшталт «поясни, як задача телеметрії передає дані захищеному об'єкту журналювання».
