# Pascal i Delphi w Maguyva: grafy modułów i klas

Canonical source: https://maguyva.ai/pl/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 obsługuje moduły Pascala i Delphi przez AST, symbole i graf, dzięki czemu agenci AI mapują klauzule uses, klasy i procedury przed zmianą.

## Migawka wsparcia

- Poziom: Obsługa AST i symboli
- Programowanie
- Rozszerzenia: .pas, .pp
- 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 aplikacje w Delphi lub Lazarus/Free Pascal, których pierwotni autorzy dawno odeszli.
- Bazy kodu w Object Pascal z głębokimi hierarchiami klas, interfejsami i dużymi współdzielonymi modułami.
- Prace modernizacyjne lub migracyjne, których pierwszym rezultatem jest mapa modułów i ich zależności.

## Workflow agentów

- Wypisać wszystkie moduły, które wymieniają współdzielony moduł w klauzuli `uses`, zanim zostanie zmieniony.
- Znaleźć klasy dziedziczące po bazowym formularzu lub komponencie oraz metody, które nadpisują.
- Prześledzić, które procedury wywołują daną procedurę, zanim zmienią się jej parametry.

## Dlaczego baza kodu w Pascalu najpierw potrzebuje mapy

Aplikacje w Delphi i Free Pascal często rosną wokół kilku dużych modułów, z których korzysta cała reszta. Formularze dziedziczą po formularzach bazowych, komponenty po komponentach bazowych, a reguły biznesowe żyją w procedurach wywoływanych przez kilkanaście ekranów. Plik po pliku kod czyta się dobrze, ale zmiany psują się na zależnościach.

Maguyva najpierw daje agentowi strukturę modułów i klas, aby mógł powiedzieć, czego dotyczy zmiana, zanim cokolwiek napisze.

## Co Maguyva wyodrębnia w Pascalu

Maguyva obejmuje moduły źródłowe `.pas` i `.pp`. Definicje procedur i funkcji są wyodrębniane jako symbole wywoływalne, a z nazw definicji usuwane są słowa kluczowe `procedure`, `function`, `var` i `const`. Klasy i interfejsy można wybrać jako definicje typów w wyszukiwaniu strukturalnym.

Importy pochodzą z klauzul `uses`; słowo kluczowe jest usuwane, więc graf przechowuje nazwy modułów. Wywołania są normalizowane przez usunięcie prefiksów składowych, argumentów i otaczających nawiasów, więc wywołanie zapisane jako `Self.Save(x)` jest przechowywane jako `Save`.

Graf zapisuje wywołania, dziedziczenie, implementację interfejsów, nadpisania, tworzenie instancji, odwołania do typów, odczyty i zapisy oraz krawędzie zgłaszania i obsługi wyjątków. Około 107 procedur biblioteki uruchomieniowej (`WriteLn`, `ReadLn`, `Inc`, `Dec`, `Ord` i podobne) jest pomijanych w relacjach.

## Przykładowe prompty dla agentów

- „Które moduły używają `DataModuleMain` i co z niego wywołują?” (`dependency_search` incoming)
- „Które formularze dziedziczą po `TBaseEditForm` i jakie metody nadpisują?” (`find_symbol`, potem `dependency_search`)
- „Wyjaśnij, jak faktura jest księgowana, od obsługi przycisku do modułu bazy danych.” (`get_task_context`)

## Znane ograniczenia

- Do Pascala przypisane są tylko `.pas` i `.pp`. Pliki projektów i formularzy Delphi, takie jak `.dpr` i `.dfm`, nie znajdują się na liście rozszerzeń, więc układ formularzy i konfiguracja projektu pozostają poza grafem.
- Metody używają tej samej składni co wolne procedury, więc preset `methods` w `structural_search` niczego nie wybiera. Użyj presetu `functions`.
- Wywołania odfiltrowanych procedur biblioteki uruchomieniowej nie pojawiają się jako krawędzie grafu. Do ich wyszukiwania użyj `text_pattern_search`.

## 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 aplikacja linkuje biblioteki C, przeczytaj też [przewodnik po C](/pl/languages/c).

## Szczegóły silnika

- Obsługa Pascala obejmuje moduły `.pas` i `.pp`. Pliki projektów i formularzy Delphi, takie jak `.dpr` i `.dfm`, nie znajdują się na liście rozszerzeń.
- Klauzule `uses` stają się relacjami importu, a wywołania są normalizowane przez usunięcie prefiksów składowych, argumentów i otaczających nawiasów.
- Około 107 procedur biblioteki uruchomieniowej, takich jak `WriteLn`, `Inc` i `Ord`, jest filtrowanych z relacji, aby wyróżnić kod aplikacji.

## Przydatne punkty wejścia MCP

- `find_symbol`: Używaj go z nazwą klasy, formularza lub procedury, gdy potrzebujesz definicji i odwołań.
- `dependency_search`: Użyj przejścia incoming na współdzielonym module lub klasie bazowej, aby zobaczyć, które moduły i klasy potomne od nich zależą.
- `get_task_context`: Używaj go do promptów typu „wyjaśnij, jak faktura jest księgowana, od obsługi przycisku do modułu bazy danych”.
