# Pascal en Delphi in Maguyva: unit- en klassengrafen

Canonical source: https://maguyva.ai/nl/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 ondersteunt Pascal- en Delphi-units met AST, symbolen en graaf, zodat AI-agents uses-clausules, klassen en procedures in kaart brengen vóór een wijziging.

## Ondersteuningsoverzicht

- Tier: AST- en symboolondersteuning
- Programmeren
- Extensies: .pas, .pp
- Echte AST-parsing voor syntaxbewust zoeken en structurele context.
- Benoemde symbolen voeden semantische lookup en kruisverwijzingen. Graafnavigatie is beschikbaar wanneer relatie-extractie is ingeschakeld.
- Deze taal draagt symbolen en relaties bij aan graafbewust zoeken; ondersteunde kanttypen variëren met de eigen constructies van de taal.
- Zowel AST-parsing als symboolextractie zijn beschikbaar.

## Beste toepassing

- Teams die Delphi- of Lazarus/Free Pascal-applicaties onderhouden waarvan de oorspronkelijke auteurs allang zijn vertrokken.
- Object Pascal-codebases met diepe klassenhiërarchieën, interfaces en grote gedeelde units.
- Modernisering of porting waarbij het eerste resultaat een kaart van de units en hun afhankelijkheden is.

## Agentworkflows

- Elke unit opsommen die een gedeelde unit in haar `uses`-clausule noemt voordat die verandert.
- De klassen vinden die van een basisformulier of basiscomponent erven, en de methoden die ze overschrijven.
- Nagaan welke procedures een routine aanroepen voordat de parameters veranderen.

## Waarom een Pascal-codebase eerst een kaart nodig heeft

Delphi- en Free Pascal-applicaties groeien vaak rond een paar grote units die al het andere gebruikt. Formulieren erven van basisformulieren, componenten van basiscomponenten, en bedrijfsregels zitten in procedures die een dozijn schermen aanroepen. Bestand voor bestand leest de code prima, maar in de afhankelijkheden gaan wijzigingen mis.

Maguyva geeft een agent eerst de unit- en klassenstructuur, zodat hij kan zeggen wat een wijziging raakt voordat hij iets schrijft.

## Wat Maguyva in Pascal extraheert

Maguyva dekt de bron-units `.pas` en `.pp`. Procedure- en functiedefinities worden geëxtraheerd als aanroepbare symbolen, waarbij de sleutelwoorden `procedure`, `function`, `var` en `const` uit definitienamen worden verwijderd. Klassen en interfaces zijn in structureel zoeken te selecteren als typedefinities.

Imports komen uit `uses`-clausules; het sleutelwoord wordt verwijderd, zodat de graaf unitnamen opslaat. Aanroepen worden genormaliseerd door memberprefixen, argumenten en omsluitende haakjes te verwijderen, dus een aanroep geschreven als `Self.Save(x)` wordt opgeslagen als `Save`.

De graaf legt aanroepen vast, overerving, interface-implementatie, overrides, instantiëring, typeverwijzingen, lees- en schrijfacties, en randen voor het opwerpen en afhandelen van exceptions. Ongeveer 107 routines uit de runtimebibliotheek (`WriteLn`, `ReadLn`, `Inc`, `Dec`, `Ord` en vergelijkbare) worden uit de relaties gefilterd.

## Voorbeeldprompts voor agents

- "Welke units gebruiken `DataModuleMain`, en wat roepen ze daaruit aan?" (`dependency_search` incoming)
- "Welke formulieren erven van `TBaseEditForm`, en welke methoden overschrijven ze?" (`find_symbol`, daarna `dependency_search`)
- "Leg uit hoe een factuur wordt geboekt, van de knophandler tot de database-unit." (`get_task_context`)

## Bekende beperkingen

- Alleen `.pas` en `.pp` zijn aan Pascal gekoppeld. Delphi-project- en formulierbestanden zoals `.dpr` en `.dfm` staan niet in de extensielijst, dus formulierlay-outs en projectbedrading vallen buiten de graaf.
- Methoden gebruiken dezelfde syntaxis als losse procedures, dus de preset `methods` in `structural_search` selecteert niets. Gebruik de preset `functions`.
- Aanroepen van gefilterde runtimeroutines verschijnen niet als randen in de graaf. Gebruik daarvoor `text_pattern_search`.

## Volgende stappen

Koppel een repository via de [snelstart](/nl/docs/quickstart) en bekijk daarna de ondersteuningsmatrix op de [compatibiliteitspagina](/nl/docs/compatibility). Als de applicatie C-bibliotheken linkt, lees dan ook de [C-gids](/nl/languages/c).

## Enginedetails

- Pascal-ondersteuning dekt de units `.pas` en `.pp`. Delphi-project- en formulierbestanden zoals `.dpr` en `.dfm` staan niet in de extensielijst.
- `uses`-clausules worden importrelaties, en aanroepen worden genormaliseerd door memberprefixen, argumenten en omsluitende haakjes te verwijderen.
- Ongeveer 107 routines uit de runtimebibliotheek zoals `WriteLn`, `Inc` en `Ord` worden uit de relaties gefilterd, zodat de applicatiecode opvalt.

## Nuttige MCP-instappunten

- `find_symbol`: Gebruik het voor een klasse-, formulier- of procedurenaam wanneer je de definitie en verwijzingen nodig hebt.
- `dependency_search`: Gebruik incoming-traversal op een gedeelde unit of basisklasse om te zien welke units en afgeleide klassen ervan afhangen.
- `get_task_context`: Gebruik het voor prompts zoals "leg uit hoe een factuur wordt geboekt, van de knophandler tot de database-unit".
