# Pascal og Delphi i Maguyva: unit- og klassegrafer

Canonical source: https://maguyva.ai/nb/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øtter Pascal- og Delphi-units med AST, symboler og graf, slik at AI-agenter kan kartlegge uses-klausuler, klasser og prosedyrer før de endres.

## Støtteoversikt

- Nivå: AST- og symbolstøtte
- Programmering
- Filendelser: .pas, .pp
- Ekte AST-analyse for syntaksbevisst søk og strukturell kontekst.
- Navngitte symboler mater semantisk oppslag og kryssreferanser. Grafnavigasjon er tilgjengelig når relasjonsuttrekk er aktivert.
- Dette språket bidrar med symboler og relasjoner til grafbasert søk; støttede kanttyper varierer med språkets egne konstruksjoner.
- Både AST-analyse og symboluttrekk er tilgjengelige.

## Best egnet

- Team som vedlikeholder Delphi- eller Lazarus/Free Pascal-applikasjoner der de opprinnelige forfatterne for lengst har gått videre.
- Object Pascal-kodebaser med dype klassehierarkier, grensesnitt og store delte units.
- Modernisering eller portering der det første resultatet er et kart over units og avhengighetene deres.

## Agent-arbeidsflyter

- Liste alle units som nevner en delt unit i `uses`-klausulen sin før den endres.
- Finne klassene som arver fra et basisskjema eller en basiskomponent, og metodene de overstyrer.
- Spore hvilke prosedyrer som kaller en rutine før parameterne endres.

## Hvorfor en Pascal-kodebase først trenger et kart

Delphi- og Free Pascal-applikasjoner vokser ofte rundt noen få store units som alt annet bruker. Skjemaer arver fra basisskjemaer, komponenter fra basiskomponenter, og forretningsreglene ligger i prosedyrer som et dusin skjermbilder kaller. Koden er lett å lese fil for fil, men det er i avhengighetene at endringer går galt.

Maguyva gir agenten unit- og klassestrukturen først, slik at den kan si hva en endring berører før den skriver noe.

## Hva Maguyva henter ut i Pascal

Maguyva dekker kilde-units i `.pas` og `.pp`. Prosedyre- og funksjonsdefinisjoner hentes ut som kallbare symboler, og nøkkelordene `procedure`, `function`, `var` og `const` fjernes fra definisjonsnavnene. Klasser og grensesnitt kan velges som typedefinisjoner i strukturelt søk.

Importer kommer fra `uses`-klausuler; nøkkelordet fjernes slik at grafen lagrer unit-navn. Kall normaliseres ved at medlemsprefikser, argumenter og omsluttende parenteser fjernes, så et kall skrevet som `Self.Save(x)` lagres som `Save`.

Grafen registrerer kall, arv, grensesnittimplementasjon, overstyringer, instansiering, typereferanser, lesinger og skrivinger samt kanter for å kaste og håndtere unntak. Rundt 107 rutiner i kjøretidsbiblioteket (`WriteLn`, `ReadLn`, `Inc`, `Dec`, `Ord` og lignende) filtreres ut av relasjonene.

## Eksempler på prompter for agenter

- «Hvilke units bruker `DataModuleMain`, og hva kaller de fra den?» (`dependency_search` incoming)
- «Hvilke skjemaer arver fra `TBaseEditForm`, og hvilke metoder overstyrer de?» (`find_symbol`, deretter `dependency_search`)
- «Forklar hvordan en faktura bokføres, fra knappebehandleren til database-uniten.» (`get_task_context`)

## Kjente begrensninger

- Bare `.pas` og `.pp` er knyttet til Pascal. Delphis prosjekt- og skjemafiler som `.dpr` og `.dfm` står ikke på listen over filendelser, så skjemaoppsett og prosjektoppsett ligger utenfor grafen.
- Metoder bruker samme syntaks som frittstående prosedyrer, så forhåndsinnstillingen `methods` i `structural_search` velger ingenting. Bruk forhåndsinnstillingen `functions`.
- Kall til filtrerte rutiner i kjøretidsbiblioteket vises ikke som kanter i grafen. Bruk `text_pattern_search` for dem.

## Neste steg

Koble til et repositorium med [hurtigstarten](/nb/docs/quickstart), og se deretter støttematrisen på [kompatibilitetssiden](/nb/docs/compatibility). Hvis applikasjonen lenker C-biblioteker, bør du også lese [veiledningen for C](/nb/languages/c).

## Motordetaljer

- Pascal-støtten dekker units i `.pas` og `.pp`. Delphis prosjekt- og skjemafiler som `.dpr` og `.dfm` står ikke på listen over filendelser.
- `uses`-klausuler blir importrelasjoner, og kall normaliseres ved at medlemsprefikser, argumenter og omsluttende parenteser fjernes.
- Rundt 107 rutiner i kjøretidsbiblioteket som `WriteLn`, `Inc` og `Ord` filtreres ut av relasjonene, slik at applikasjonskoden kommer tydelig frem.

## Nyttige MCP-inngangspunkter

- `find_symbol`: Bruk det for et klasse-, skjema- eller prosedyrenavn når du trenger definisjonen og referansene.
- `dependency_search`: Bruk incoming-traversering på en delt unit eller basisklasse for å se hvilke units og etterkommere som er avhengige av den.
- `get_task_context`: Bruk det til prompter som «forklar hvordan en faktura bokføres, fra knappebehandleren til database-uniten».
