# Pascal і Delphi у Maguyva: графи модулів і класів

Canonical source: https://maguyva.ai/uk/languages/pascal

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 підтримує модулі Pascal і Delphi з AST, символами та графом, щоб ШІ-агенти картографували речення uses, класи й процедури до змін.

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

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

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

- Команди, що супроводжують застосунки на Delphi або Lazarus/Free Pascal, чиї первинні автори давно пішли.
- Кодові бази на Object Pascal із глибокими ієрархіями класів, інтерфейсами та великими спільними модулями.
- Модернізація чи портування, де першим результатом стає карта модулів та їхніх залежностей.

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

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

## Чому кодовій базі на Pascal спершу потрібна карта

Застосунки на Delphi та Free Pascal часто ростуть довкола кількох великих модулів, якими користується все інше. Форми успадковують базові форми, компоненти — базові компоненти, а бізнес-правила живуть у процедурах, які викликає десяток екранів. Пофайлово код читається добре, але зміни ламаються саме на залежностях.

Maguyva спершу дає агентові структуру модулів і класів, щоб він міг сказати, що зачепить зміна, перш ніж щось писати.

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

Maguyva охоплює вихідні модулі `.pas` і `.pp`. Визначення процедур і функцій витягуються як символи, що викликаються, а з назв визначень вилучаються ключові слова `procedure`, `function`, `var` і `const`. Класи та інтерфейси можна вибрати як визначення типів у структурному пошуку.

Імпорти будуються з речень `uses`; ключове слово вилучається, і в графі зберігаються назви модулів. Виклики нормалізуються: прибираються префікси членів, аргументи та зовнішні дужки, тож виклик `Self.Save(x)` зберігається як `Save`.

Граф фіксує виклики, успадкування, реалізацію інтерфейсів, перевизначення, створення екземплярів, посилання на типи, читання й записи, а також ребра збудження та обробки винятків. Близько 107 процедур бібліотеки часу виконання (`WriteLn`, `ReadLn`, `Inc`, `Dec`, `Ord` тощо) виключаються зі зв'язків.

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

- «Які модулі використовують `DataModuleMain` і що з нього викликають?» (`dependency_search` incoming)
- «Які форми успадковують `TBaseEditForm` і які методи перевизначають?» (`find_symbol`, потім `dependency_search`)
- «Поясни, як проводиться рахунок — від обробника кнопки до модуля бази даних.» (`get_task_context`)

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

- До Pascal віднесено лише `.pas` і `.pp`. Файли проєктів і форм Delphi, як-от `.dpr` і `.dfm`, не входять до списку розширень, тому розмітка форм і налаштування проєкту лишаються поза графом.
- Методи мають той самий синтаксис, що й вільні процедури, тому пресет `methods` у `structural_search` нічого не вибирає. Використовуйте пресет `functions`.
- Виклики відфільтрованих процедур бібліотеки часу виконання не з'являються як ребра графа. Для них використовуйте `text_pattern_search`.

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

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

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

- Підтримка Pascal охоплює модулі `.pas` і `.pp`. Файли проєктів і форм Delphi, як-от `.dpr` і `.dfm`, не входять до списку розширень.
- Речення `uses` стають зв'язками імпорту, а виклики нормалізуються вилученням префіксів членів, аргументів і зовнішніх дужок.
- Близько 107 процедур бібліотеки часу виконання, як-от `WriteLn`, `Inc` і `Ord`, відфільтровуються зі зв'язків, щоб код застосунку було видно.

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

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