# Pascal- ja Delphi-tuki Maguyva-palvelussa: yksikkö- ja luokkagraafit

Canonical source: https://maguyva.ai/fi/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 tukee Pascal- ja Delphi-yksiköitä AST-jäsennyksellä, symboleilla ja graafilla, jotta tekoälyagentit voivat kartoittaa uses-lausekkeet, luokat ja proseduurit ennen muutoksia.

## Tukikatsaus

- Taso: AST- ja symbolituki
- Ohjelmointi
- Päätteet: .pas, .pp
- Oikea AST-jäsennys syntaksitietoiseen hakuun ja rakenteelliseen kontekstiin.
- Nimetyt symbolit syöttävät semanttista hakua ja ristiviittauksia. Graafinavigointi on käytettävissä, kun suhteiden poiminta on käytössä.
- Tämä kieli tuo symboleja ja suhteita graafia hyödyntävään hakuun; tuetut reunatyypit vaihtelevat kielen omien rakenteiden mukaan.
- Sekä AST-jäsennys että symbolien poiminta ovat käytettävissä.

## Parhaiten sopii

- Tiimit, jotka ylläpitävät Delphi- tai Lazarus/Free Pascal -sovelluksia, joiden alkuperäiset tekijät ovat jo kauan sitten siirtyneet muualle.
- Object Pascal -koodikannat, joissa on syviä luokkahierarkioita, rajapintoja ja suuria jaettuja yksiköitä.
- Modernisointi- tai siirtotyö, jonka ensimmäinen tuotos on kartta yksiköistä ja niiden riippuvuuksista.

## Agenttien työnkulut

- Listata kaikki yksiköt, jotka mainitsevat jaetun yksikön `uses`-lausekkeessaan, ennen kuin sitä muutetaan.
- Löytää luokat, jotka perivät kantalomakkeen tai kantakomponentin, ja metodit, jotka ne ylikirjoittavat.
- Jäljittää, mitkä proseduurit kutsuvat rutiinia, ennen kuin sen parametreja muutetaan.

## Miksi Pascal-koodikanta tarvitsee ensin kartan

Delphi- ja Free Pascal -sovellukset kasvavat usein muutaman suuren yksikön ympärille, joita kaikki muu käyttää. Lomakkeet perivät kantalomakkeita, komponentit kantakomponentteja, ja liiketoimintasäännöt ovat proseduureissa, joita tusina näkymää kutsuu. Koodi on helppolukuista tiedosto kerrallaan, mutta muutokset menevät pieleen juuri riippuvuuksissa.

Maguyva antaa agentille ensin yksikkö- ja luokkarakenteen, jotta se voi kertoa, mihin muutos vaikuttaa, ennen kuin se kirjoittaa mitään.

## Mitä Maguyva poimii Pascalista

Maguyva kattaa lähdeyksiköt `.pas` ja `.pp`. Proseduurien ja funktioiden määrittelyt poimitaan kutsuttavina symboleina, ja määrittelyjen nimistä poistetaan avainsanat `procedure`, `function`, `var` ja `const`. Luokat ja rajapinnat voi valita tyyppimäärittelyinä rakenteellisessa haussa.

Tuonnit muodostetaan `uses`-lausekkeista; avainsana poistetaan, jolloin graafiin tallentuvat yksiköiden nimet. Kutsut normalisoidaan poistamalla jäsenetuliitteet, argumentit ja ympäröivät sulkeet, joten kutsu `Self.Save(x)` tallentuu muotoon `Save`.

Graafi tallentaa kutsut, periytymisen, rajapintojen toteutukset, ylikirjoitukset, ilmentymien luonnin, tyyppiviittaukset, luvut ja kirjoitukset sekä poikkeusten nostamisen ja käsittelyn kaaret. Noin 107 ajonaikaisen kirjaston rutiinia (`WriteLn`, `ReadLn`, `Inc`, `Dec`, `Ord` ja vastaavat) suodatetaan pois suhteista.

## Esimerkkikehotteita agenteille

- "Mitkä yksiköt käyttävät yksikköä `DataModuleMain`, ja mitä ne kutsuvat siitä?" (`dependency_search` incoming)
- "Mitkä lomakkeet perivät lomakkeen `TBaseEditForm`, ja mitä metodeja ne ylikirjoittavat?" (`find_symbol`, sitten `dependency_search`)
- "Selitä, miten lasku kirjataan painikkeen käsittelijästä tietokantayksikköön asti." (`get_task_context`)

## Tunnetut rajoitukset

- Pascaliin on liitetty vain `.pas` ja `.pp`. Delphin projekti- ja lomaketiedostot, kuten `.dpr` ja `.dfm`, eivät ole tiedostopäätteiden luettelossa, joten lomakkeiden asettelut ja projektin kytkennät jäävät graafin ulkopuolelle.
- Metodit käyttävät samaa syntaksia kuin vapaat proseduurit, joten työkalun `structural_search` esiasetus `methods` ei valitse mitään. Käytä esiasetusta `functions`.
- Suodatettujen ajonaikaisen kirjaston rutiinien kutsut eivät näy graafin kaarina. Käytä niihin työkalua `text_pattern_search`.

## Seuraavat vaiheet

Yhdistä repositorio [pikaoppaan](/fi/docs/quickstart) avulla ja tarkista sitten tukimatriisi [yhteensopivuussivulta](/fi/docs/compatibility). Jos sovellus linkittää C-kirjastoja, lue myös [C-opas](/fi/languages/c).

## Moottorin yksityiskohdat

- Pascal-tuki kattaa yksiköt `.pas` ja `.pp`. Delphin projekti- ja lomaketiedostot, kuten `.dpr` ja `.dfm`, eivät ole tiedostopäätteiden luettelossa.
- `uses`-lausekkeista tulee tuontisuhteita, ja kutsut normalisoidaan poistamalla jäsenetuliitteet, argumentit ja ympäröivät sulkeet.
- Noin 107 ajonaikaisen kirjaston rutiinia, kuten `WriteLn`, `Inc` ja `Ord`, suodatetaan pois suhteista, jotta sovelluskoodi erottuu.

## Hyödylliset MCP-liittymäkohdat

- `find_symbol`: Käytä sitä luokan, lomakkeen tai proseduurin nimellä, kun tarvitset määrittelyn ja viittaukset.
- `dependency_search`: Käytä incoming-läpikäyntiä jaettuun yksikköön tai kantaluokkaan nähdäksesi, mitkä yksiköt ja jälkeläiset riippuvat siitä.
- `get_task_context`: Käytä sitä kehotteisiin kuten "selitä, miten lasku kirjataan painikkeen käsittelijästä tietokantayksikköön asti".
