# Pascal och Delphi i Maguyva: unit- och klassgrafer

Canonical source: https://maguyva.ai/sv/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 stöder Pascal- och Delphi-units med AST, symboler och graf, så att AI-agenter kan kartlägga uses-satser, klasser och procedurer innan de ändras.

## Stödöversikt

- Nivå: Stöd för AST och symboler
- Programmering
- Filändelser: .pas, .pp
- Riktig AST-parsning för syntaxmedveten sökning och strukturell kontext.
- Namngivna symboler driver semantisk uppslagning och korsreferenser. Grafnavigering är tillgänglig när relationsextraktion är aktiverad.
- Det här språket bidrar med symboler och relationer till grafmedveten sökning; vilka kanttyper som stöds varierar med språkets inbyggda konstruktioner.
- Både AST-parsning och symbolextraktion är tillgängliga.

## Bäst lämpad för

- Team som underhåller Delphi- eller Lazarus/Free Pascal-applikationer vars ursprungliga författare för länge sedan gått vidare.
- Object Pascal-kodbaser med djupa klasshierarkier, gränssnitt och stora delade units.
- Modernisering eller portering där det första resultatet är en karta över units och deras beroenden.

## Agentarbetsflöden

- Lista alla units som nämner en delad unit i sin `uses`-sats innan den ändras.
- Hitta klasserna som ärver från ett basformulär eller en baskomponent och metoderna de skriver över.
- Spåra vilka procedurer som anropar en rutin innan dess parametrar ändras.

## Varför en Pascal-kodbas först behöver en karta

Delphi- och Free Pascal-applikationer växer ofta kring några stora units som allt annat använder. Formulär ärver från basformulär, komponenter från baskomponenter, och affärsreglerna finns i procedurer som ett dussin skärmar anropar. Koden läses bra fil för fil, men det är i beroendena som ändringar går fel.

Maguyva ger agenten unit- och klasstrukturen först, så att den kan säga vad en ändring berör innan den skriver något.

## Vad Maguyva extraherar i Pascal

Maguyva täcker käll-units i `.pas` och `.pp`. Procedur- och funktionsdefinitioner extraheras som anropbara symboler, och nyckelorden `procedure`, `function`, `var` och `const` tas bort ur definitionsnamnen. Klasser och gränssnitt kan väljas som typdefinitioner i strukturell sökning.

Importer kommer från `uses`-satser; nyckelordet tas bort så att grafen lagrar unit-namn. Anrop normaliseras genom att medlemsprefix, argument och omslutande parenteser tas bort, så ett anrop skrivet som `Self.Save(x)` lagras som `Save`.

Grafen registrerar anrop, arv, gränssnittsimplementation, överskrivningar, instansiering, typreferenser, läsningar och skrivningar samt kanter för att kasta och hantera undantag. Omkring 107 rutiner i körtidsbiblioteket (`WriteLn`, `ReadLn`, `Inc`, `Dec`, `Ord` och liknande) filtreras bort ur relationerna.

## Exempel på prompter för agenter

- "Vilka units använder `DataModuleMain`, och vad anropar de från den?" (`dependency_search` incoming)
- "Vilka formulär ärver från `TBaseEditForm`, och vilka metoder skriver de över?" (`find_symbol`, sedan `dependency_search`)
- "Förklara hur en faktura bokförs, från knapphanteraren till databas-uniten." (`get_task_context`)

## Kända begränsningar

- Endast `.pas` och `.pp` är kopplade till Pascal. Delphis projekt- och formulärfiler som `.dpr` och `.dfm` finns inte i listan över filändelser, så formulärlayouter och projektkoppling ligger utanför grafen.
- Metoder använder samma syntax som fristående procedurer, så förinställningen `methods` i `structural_search` väljer ingenting. Använd förinställningen `functions`.
- Anrop till filtrerade rutiner i körtidsbiblioteket visas inte som kanter i grafen. Använd `text_pattern_search` för dem.

## Nästa steg

Anslut ett repo med [snabbstarten](/sv/docs/quickstart) och kontrollera sedan stödmatrisen på [kompatibilitetssidan](/sv/docs/compatibility). Om applikationen länkar C-bibliotek, läs även [guiden för C](/sv/languages/c).

## Motordetaljer

- Pascal-stödet täcker units i `.pas` och `.pp`. Delphis projekt- och formulärfiler som `.dpr` och `.dfm` finns inte i listan över filändelser.
- `uses`-satser blir importrelationer, och anrop normaliseras genom att medlemsprefix, argument och omslutande parenteser tas bort.
- Omkring 107 rutiner i körtidsbiblioteket som `WriteLn`, `Inc` och `Ord` filtreras bort ur relationerna så att applikationskoden syns.

## Användbara MCP-ingångar

- `find_symbol`: Använd det för ett klass-, formulär- eller procedurnamn när du behöver definitionen och referenserna.
- `dependency_search`: Använd incoming-traversering på en delad unit eller basklass för att se vilka units och ättlingar som beror på den.
- `get_task_context`: Använd det för prompter som "förklara hur en faktura bokförs, från knapphanteraren till databas-uniten".
