# Pascal og Delphi i Maguyva: unit- og klassegrafer

Canonical source: https://maguyva.ai/da/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 understøtter Pascal- og Delphi-units med AST, symboler og graf, så AI-agenter kan kortlægge uses-klausuler, klasser og procedurer, før de ændres.

## Øjebliksbillede af understøttelse

- Niveau: AST- og symbolunderstøttelse
- Programmering
- Filendelser: .pas, .pp
- Rigtig AST-parsing til syntaksbevidst søgning og strukturel kontekst.
- Navngivne symboler understøtter semantisk opslag og krydsreferencer. Grafnavigation er tilgængelig, når relationsudtræk er aktiveret.
- Dette sprog bidrager med symboler og relationer til grafbaseret søgning; de understøttede kanttyper varierer med sprogets egne konstruktioner.
- Både AST-parsing og symboludtræk er tilgængelige.

## Bedst egnet til

- Teams, der vedligeholder Delphi- eller Lazarus/Free Pascal-applikationer, hvis oprindelige forfattere for længst er gået videre.
- Object Pascal-kodebaser med dybe klassehierarkier, interfaces og store delte units.
- Modernisering eller portering, hvor det første resultat er et kort over units og deres afhængigheder.

## Agent-arbejdsgange

- Liste alle units, der nævner en delt unit i deres `uses`-klausul, før den ændres.
- Finde klasserne, der arver fra en basisformular eller basiskomponent, og de metoder, de overskriver.
- Spore, hvilke procedurer der kalder en rutine, før dens parametre ændres.

## Hvorfor en Pascal-kodebase først har brug for et kort

Delphi- og Free Pascal-applikationer vokser ofte omkring nogle få store units, som alt andet bruger. Formularer arver fra basisformularer, komponenter fra basiskomponenter, og forretningsreglerne ligger i procedurer, som et dusin skærmbilleder kalder. Koden er let at læse fil for fil, men det er i afhængighederne, ændringer går galt.

Maguyva giver agenten unit- og klassestrukturen først, så den kan sige, hvad en ændring berører, før den skriver noget.

## Hvad Maguyva udtrækker i Pascal

Maguyva dækker kilde-units i `.pas` og `.pp`. Procedure- og funktionsdefinitioner udtrækkes som kaldbare symboler, og nøgleordene `procedure`, `function`, `var` og `const` fjernes fra definitionsnavnene. Klasser og interfaces kan vælges som typedefinitioner i strukturel søgning.

Importer kommer fra `uses`-klausuler; nøgleordet fjernes, så grafen gemmer unit-navne. Kald normaliseres ved at fjerne medlemspræfikser, argumenter og omsluttende parenteser, så et kald skrevet som `Self.Save(x)` gemmes som `Save`.

Grafen registrerer kald, nedarvning, interfaceimplementering, overskrivninger, instansiering, typereferencer, læsninger og skrivninger samt kanter for at kaste og håndtere undtagelser. Omkring 107 rutiner i runtime-biblioteket (`WriteLn`, `ReadLn`, `Inc`, `Dec`, `Ord` og lignende) filtreres fra relationerne.

## Eksempler på prompts til agenter

- "Hvilke units bruger `DataModuleMain`, og hvad kalder de i den?" (`dependency_search` incoming)
- "Hvilke formularer arver fra `TBaseEditForm`, og hvilke metoder overskriver de?" (`find_symbol`, derefter `dependency_search`)
- "Forklar, hvordan en faktura bogføres, fra knaphandleren til database-uniten." (`get_task_context`)

## Kendte begrænsninger

- Kun `.pas` og `.pp` er knyttet til Pascal. Delphis projekt- og formularfiler som `.dpr` og `.dfm` er ikke på listen over filendelser, så formularlayout og projektopsætning ligger uden for grafen.
- Metoder bruger samme syntaks som frie procedurer, så forudindstillingen `methods` i `structural_search` vælger intet. Brug forudindstillingen `functions`.
- Kald til filtrerede rutiner i runtime-biblioteket vises ikke som kanter i grafen. Brug `text_pattern_search` til dem.

## Næste skridt

Tilslut et repository med [hurtigstarten](/da/docs/quickstart), og se derefter understøttelsesmatricen på [kompatibilitetssiden](/da/docs/compatibility). Hvis applikationen linker C-biblioteker, så læs også [guiden til C](/da/languages/c).

## Motordetaljer

- Pascal-understøttelsen dækker units i `.pas` og `.pp`. Delphis projekt- og formularfiler som `.dpr` og `.dfm` er ikke på listen over filendelser.
- `uses`-klausuler bliver til importrelationer, og kald normaliseres ved at fjerne medlemspræfikser, argumenter og omsluttende parenteser.
- Omkring 107 rutiner i runtime-biblioteket som `WriteLn`, `Inc` og `Ord` filtreres fra relationerne, så applikationskoden træder frem.

## Nyttige MCP-indgange

- `find_symbol`: Brug det til et klasse-, formular- eller procedurenavn, når du har brug for definitionen og referencerne.
- `dependency_search`: Brug incoming-gennemløb på en delt unit eller basisklasse for at se, hvilke units og efterkommere der afhænger af den.
- `get_task_context`: Brug det til prompts som "forklar, hvordan en faktura bogføres, fra knaphandleren til database-uniten".
