Přeskočit na obsah
cd /languages
  • Dlouhověký desktop
  • Programování
  • Podpora AST a symbolů

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

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í.

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 a pak si prohlédněte matici podpory na stránce kompatibility. Pokud aplikace linkuje knihovny v C, přečtěte si i průvodce jazykem C.

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.

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“.