Lumaktaw papunta sa content
cd /languages
  • Pangmatagalang desktop
  • Programming
  • Support para sa AST at mga simbolo

Pascal at Delphi sa Maguyva: mga unit at class graph

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.

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, tapos tingnan ang support matrix sa compatibility page. Kung nagli-link ang application sa mga C library, basahin din ang gabay sa C.

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.

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