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

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

## Aperçu du support

- Palier: Prise en charge de l’AST et des symboles
- Programmation
- Extensions: .pas, .pp
- Analyse AST réelle pour une recherche consciente de la syntaxe et un contexte structurel.
- Les symboles nommés alimentent la recherche sémantique et le référencement croisé. La navigation par graphe est disponible lorsque l’extraction de relations est activée.
- Ce langage fournit des symboles et des relations à la recherche tenant compte du graphe ; les types d’arêtes pris en charge varient selon ses constructions natives.
- L’analyse AST et l’extraction de symboles sont toutes deux disponibles.

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

## 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](/fr/docs/quickstart), puis consultez la matrice de prise en charge sur la [page de compatibilité](/fr/docs/compatibility). Si l'application lie des bibliothèques C, lisez aussi le [guide C](/fr/languages/c).

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