# Pascal a Delphi v Maguyva: grafy jednotek a tříd

Canonical source: https://maguyva.ai/cs/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 podporuje jednotky Pascalu a Delphi s AST, symboly a grafem, takže AI agenti zmapují klauzule uses, třídy a procedury dřív, než je změní.

## Přehled podpory

- Úroveň: Podpora AST a symbolů
- Programování
- Přípony: .pas, .pp
- 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í aplikace v Delphi nebo Lazarus/Free Pascal, jejichž původní autoři už dávno odešli.
- Kódové základny v Object Pascalu s hlubokými hierarchiemi tříd, rozhraními a velkými sdílenými jednotkami.
- Modernizace nebo portace, jejichž prvním výstupem je mapa jednotek a jejich závislostí.

## Workflow agentů

- Vypsat všechny jednotky, které uvádějí sdílenou jednotku v klauzuli `uses`, než se změní.
- Najít třídy, které dědí ze základního formuláře nebo komponenty, a metody, které přepisují.
- Dohledat, které procedury volají rutinu, než se změní její parametry.

## Proč kódová základna v Pascalu potřebuje nejdřív mapu

Aplikace v Delphi a Free Pascal často rostou kolem několika velkých jednotek, které používá všechno ostatní. Formuláře dědí ze základních formulářů, komponenty ze základních komponent a obchodní pravidla žijí v procedurách, které volá tucet obrazovek. Kód se čte dobře soubor po souboru, ale změny se pokazí na závislostech.

Maguyva dá agentovi nejdřív strukturu jednotek a tříd, aby dokázal říct, čeho se změna dotkne, ještě než něco napíše.

## Co Maguyva v Pascalu extrahuje

Maguyva pokrývá zdrojové jednotky `.pas` a `.pp`. Definice procedur a funkcí se extrahují jako volatelné symboly a z názvů definic se odstraňují klíčová slova `procedure`, `function`, `var` a `const`. Třídy a rozhraní lze ve strukturním vyhledávání vybrat jako definice typů.

Importy vznikají z klauzulí `uses`; klíčové slovo se odstraní, takže graf uchovává názvy jednotek. Volání se normalizují odstraněním prefixů členů, argumentů a obalujících závorek, takže volání zapsané jako `Self.Save(x)` se uloží jako `Save`.

Graf zaznamenává volání, dědičnost, implementaci rozhraní, přepisy, vytváření instancí, odkazy na typy, čtení a zápisy a hrany vyvolání a ošetření výjimek. Přibližně 107 rutin běhové knihovny (`WriteLn`, `ReadLn`, `Inc`, `Dec`, `Ord` a podobné) je z vazeb vyřazeno.

## Ukázkové prompty pro agenty

- „Které jednotky používají `DataModuleMain` a co z ní volají?“ (`dependency_search` incoming)
- „Které formuláře dědí z `TBaseEditForm` a které metody přepisují?“ (`find_symbol`, pak `dependency_search`)
- „Vysvětli, jak se zaúčtuje faktura, od obsluhy tlačítka po databázovou jednotku.“ (`get_task_context`)

## Známá omezení

- K Pascalu jsou přiřazeny jen `.pas` a `.pp`. Soubory projektů a formulářů Delphi, jako `.dpr` a `.dfm`, nejsou v seznamu přípon, takže rozvržení formulářů a propojení projektu zůstávají mimo graf.
- Metody používají stejnou syntaxi jako volné procedury, takže preset `methods` v `structural_search` nic nevybere. Použijte preset `functions`.
- Volání odfiltrovaných rutin běhové knihovny se v grafu neobjeví jako hrany. K jejich vyhledání použijte `text_pattern_search`.

## 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 aplikace linkuje knihovny v C, přečtěte si i [průvodce jazykem C](/cs/languages/c).

## Podrobnosti enginu

- Podpora Pascalu pokrývá jednotky `.pas` a `.pp`. Soubory projektů a formulářů Delphi, jako `.dpr` a `.dfm`, nejsou v seznamu přípon.
- Klauzule `uses` se stávají vazbami importu a volání se normalizují odstraněním prefixů členů, argumentů a obalujících závorek.
- Přibližně 107 rutin běhové knihovny, jako `WriteLn`, `Inc` a `Ord`, se z vazeb odfiltruje, aby vynikl kód aplikace.

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

- `find_symbol`: Použijte s názvem třídy, formuláře nebo procedury, když potřebujete definici a odkazy.
- `dependency_search`: Použijte procházení incoming na sdílené jednotce nebo základní třídě a uvidíte, které jednotky a potomci na nich závisejí.
- `get_task_context`: Použijte pro prompty typu „vysvětli, jak se zaúčtuje faktura, od obsluhy tlačítka po databázovou jednotku“.
