Hopp til innhold
cd /languages
  • Langlivet skrivebord
  • Programmering
  • AST- og symbolstøtte

Pascal og Delphi i Maguyva: unit- og klassegrafer

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.

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, og se deretter støttematrisen på kompatibilitetssiden. Hvis applikasjonen lenker C-biblioteker, bør du også lese veiledningen for C.

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.

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