# Pascal at Delphi sa Maguyva: mga unit at class graph

Canonical source: https://maguyva.ai/fil/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).

Sinusuportahan ng Maguyva ang mga Pascal at Delphi unit gamit ang AST, mga symbol at graph, para ma-map ng mga AI agent ang mga uses clause, class at procedure bago baguhin ang mga ito.

## Snapshot ng support

- Antas: Support para sa AST at mga simbolo
- Programming
- Mga extension: .pas, .pp
- Tunay na AST parsing para sa syntax-aware search at structural context.
- Pinapagana ng mga named symbol ang semantic lookup at cross-reference. Available ang graph navigation kapag naka-enable ang pagkuha ng mga ugnayan.
- Nag-aambag ang wikang ito ng mga simbolo at ugnayan sa graph-aware search; nag-iiba ang mga sinusuportahang uri ng edge ayon sa mga native construct nito.
- Available ang AST parsing at symbol extraction.

## Pinakabagay

- Mga team na nagme-maintain ng Delphi o Lazarus/Free Pascal application na matagal nang wala ang mga orihinal na sumulat.
- Mga Object Pascal codebase na may malalim na class hierarchy, mga interface at malalaking shared unit.
- Mga modernization o porting project kung saan ang unang deliverable ay mapa ng mga unit at ng mga dependency nila.

## Mga workflow ng agent

- Ilista ang bawat unit na may shared unit sa `uses` clause nito bago baguhin ang unit na iyon.
- Hanapin ang mga class na nagmamana mula sa isang base form o component at ang mga method na ino-override nila.
- I-trace ang mga procedure na tumatawag sa isang routine bago magbago ang mga parameter nito.

## Bakit kailangan muna ng mapa ang isang Pascal codebase

Madalas lumalaki ang mga Delphi at Free Pascal application sa paligid ng ilang malalaking unit na ginagamit ng lahat. Nagmamana ang mga form mula sa base form, ang mga component mula sa base component, at nakatira ang mga business rule sa mga procedure na tinatawag ng dose-dosenang screen. Madaling basahin ang code file por file, pero sa mga dependency nagkakaproblema ang mga pagbabago.

Ibinibigay muna ng Maguyva sa agent ang structure ng mga unit at class, para masabi nito kung ano ang tatamaan ng isang pagbabago bago ito magsulat ng kahit ano.

## Ano ang kinukuha ng Maguyva mula sa Pascal

Sakop ng Maguyva ang mga `.pas` at `.pp` source unit. Kinukuha ang mga procedure at function definition bilang mga callable symbol, at tinatanggal ang mga keyword na `procedure`, `function`, `var` at `const` sa mga definition name. Puwedeng piliin ang mga class at interface bilang type definition sa structural search.

Galing ang mga import sa mga `uses` clause; tinatanggal ang keyword para mga pangalan ng unit ang naka-store sa graph. Nino-normalize ang mga call sa pagtanggal ng member prefix, argument at panlabas na parenthesis, kaya ang call na isinulat bilang `Self.Save(x)` ay naka-store bilang `Save`.

Itinatala ng graph ang mga call, inheritance, interface implementation, override, instantiation, type reference, read at write, at mga edge ng pag-raise at pag-handle ng exception. Mga 107 runtime-library routine (`WriteLn`, `ReadLn`, `Inc`, `Dec`, `Ord` at mga katulad nito) ang nifi-filter mula sa mga relationship.

## Mga halimbawang agent prompt

- "Aling mga unit ang gumagamit ng `DataModuleMain`, at ano ang tinatawag nila mula rito?" (`dependency_search` na incoming)
- "Aling mga form ang nagmamana mula sa `TBaseEditForm`, at aling mga method ang ino-override nila?" (`find_symbol`, tapos `dependency_search`)
- "Ipaliwanag kung paano napo-post ang isang invoice, mula sa button handler hanggang sa database unit." (`get_task_context`)

## Mga kilalang limitasyon

- `.pas` at `.pp` lang ang naka-map sa Pascal. Wala sa extension list ang mga Delphi project at form file tulad ng `.dpr` at `.dfm`, kaya nasa labas ng graph ang mga form layout at project wiring.
- Pareho ang syntax ng mga method at ng mga free procedure, kaya walang pinipili ang `methods` preset sa `structural_search`. Gamitin ang `functions` preset.
- Hindi lumalabas bilang graph edge ang mga call sa mga na-filter na runtime-library routine. Gamitin ang `text_pattern_search` para sa mga iyon.

## Mga susunod na hakbang

Mag-connect ng repository gamit ang [quickstart](/fil/docs/quickstart), tapos tingnan ang support matrix sa [compatibility page](/fil/docs/compatibility). Kung nagli-link ang application sa mga C library, basahin din ang [gabay sa C](/fil/languages/c).

## Mga detalye ng engine

- Sakop ng Pascal support ang mga `.pas` at `.pp` unit. Wala sa extension list ang mga Delphi project at form file tulad ng `.dpr` at `.dfm`.
- Nagiging import relationship ang mga `uses` clause, at nino-normalize ang mga call sa pagtanggal ng member prefix, argument at panlabas na parenthesis.
- Mga 107 runtime-library routine, tulad ng `WriteLn`, `Inc` at `Ord`, ang nifi-filter mula sa mga relationship para lumitaw ang application code.

## Mga kapaki-pakinabang na MCP entry point

- `find_symbol`: Gamitin kasama ang pangalan ng class, form o procedure kapag kailangan mo ang definition at mga reference.
- `dependency_search`: Gumamit ng incoming traversal sa isang shared unit o base class para makita kung aling mga unit at descendant ang umaasa rito.
- `get_task_context`: Gamitin para sa mga prompt tulad ng “ipaliwanag kung paano napo-post ang isang invoice, mula sa button handler hanggang sa database unit”.
