Passer au contenu
cd /languages
  • Desktop au long cours
  • Programmation
  • Prise en charge de l’AST et des symboles

Pascal et Delphi dans Maguyva : graphes d'unités et de classes

Maguyva prend en charge les unités Pascal et Delphi avec AST, symboles et graphe, pour que les agents IA cartographient clauses uses, classes et procédures avant de modifier.

Pourquoi une base de code Pascal a d’abord besoin d’une carte

Les applications Delphi et Free Pascal grandissent souvent autour de quelques grandes unités que tout le reste utilise. Les fiches héritent de fiches de base, les composants de composants de base, et les règles métier vivent dans des procédures appelées par une douzaine d’écrans. Le code se lit bien fichier par fichier, mais c’est dans les dépendances que les changements dérapent.

Maguyva donne d’abord à l’agent la structure des unités et des classes, pour qu’il puisse dire ce qu’un changement touche avant d’écrire quoi que ce soit.

Ce que Maguyva extrait en Pascal

Maguyva couvre les unités source .pas et .pp. Les définitions de procédures et de fonctions sont extraites comme symboles appelables, en retirant des noms de définition les mots-clés procedure, function, var et const. Les classes et interfaces peuvent être sélectionnées comme définitions de type dans la recherche structurelle.

Les imports proviennent des clauses uses, le mot-clé étant retiré pour que le graphe stocke les noms d’unités. Les appels sont normalisés en retirant préfixes de membre, arguments et parenthèses englobantes : un appel écrit Self.Save(x) est donc stocké sous la forme Save.

Le graphe enregistre les appels, l’héritage, l’implémentation d’interfaces, les surcharges, l’instanciation, les références de type, les lectures et écritures, ainsi que les arêtes de levée et de traitement d’exceptions. Environ 107 routines de la bibliothèque d’exécution (WriteLn, ReadLn, Inc, Dec, Ord et similaires) sont écartées des relations.

Exemples de prompts pour agents

  • « Quelles unités utilisent DataModuleMain, et qu’y appellent-elles ? » (dependency_search en incoming)
  • « Quelles fiches héritent de TBaseEditForm, et quelles méthodes surchargent-elles ? » (find_symbol, puis dependency_search)
  • « Explique comment une facture est comptabilisée, du gestionnaire du bouton jusqu’à l’unité de base de données. » (get_task_context)

Limites connues

  • Seuls .pas et .pp sont associés à Pascal. Les fichiers de projet et de fiche Delphi comme .dpr et .dfm ne figurent pas dans la liste des extensions ; la mise en page des fiches et le câblage du projet restent hors du graphe.
  • Les méthodes utilisent la même syntaxe que les procédures libres, si bien que le préréglage methods de structural_search ne sélectionne rien. Utilisez le préréglage functions.
  • Les appels aux routines filtrées de la bibliothèque d’exécution n’apparaissent pas comme arêtes du graphe. Utilisez text_pattern_search pour les retrouver.

Étapes suivantes

Connectez un dépôt avec le démarrage rapide, puis consultez la matrice de prise en charge sur la page de compatibilité. Si l’application lie des bibliothèques C, lisez aussi le guide C.

Idéal pour

  • > Les équipes qui maintiennent des applications Delphi ou Lazarus/Free Pascal dont les auteurs d'origine sont partis.
  • > Les bases de code Object Pascal aux hiérarchies de classes profondes, avec interfaces et grandes unités partagées.
  • > Les travaux de modernisation ou de portage dont le premier livrable est une carte des unités et de leurs dépendances.

Workflows d'agent

  • > Lister toutes les unités qui citent une unité partagée dans leur clause `uses` avant de la modifier.
  • > Trouver les classes qui héritent d'une fiche ou d'un composant de base et les méthodes qu'elles surchargent.
  • > Retracer quelles procédures appellent une routine avant d'en changer les paramètres.

Détails du moteur

  • > La prise en charge de Pascal couvre les unités `.pas` et `.pp`. Les fichiers de projet et de fiche Delphi comme `.dpr` et `.dfm` ne figurent pas dans la liste des extensions.
  • > Les clauses `uses` deviennent des relations d'import, et les appels sont normalisés en retirant préfixes de membre, arguments et parenthèses englobantes.
  • > Environ 107 routines de la bibliothèque d'exécution comme `WriteLn`, `Inc` et `Ord` sont filtrées des relations pour faire ressortir le code applicatif.

Points d'entrée MCP utiles

  • find_symbol

    Utilisez-le pour un nom de classe, de fiche ou de procédure quand vous avez besoin de sa définition et de ses références.

  • dependency_search

    Utilisez la traversée incoming sur une unité partagée ou une classe de base pour voir quelles unités et descendants en dépendent.

  • get_task_context

    Utilisez-le pour des prompts comme « explique comment une facture est comptabilisée, du gestionnaire du bouton jusqu'à l'unité de base de données ».