Best viewed in 24pt and full-screen
next up previous contents
Next: Fragments décidables Up: Prospective Previous: Implémentation

Transformations de grammaires et de programmes

Notre travail sur la transformation de grammaires à attributs a montré qu'on pouvait automatiser certaines tâches réputées difficiles comme l'élimination de la récursivité gauche dans ces grammaires. Nous avons étudié trois transformations de grammaires, mais beaucoup d'autres ont été définies pour les grammaires sans contexte pures. Il faudrait continuer l'exploration de ces transformations afin de les étendre aux grammaires à attributs.

La technique employée pour manipuler des règles de grammaire pourrait être transposée à la manipulation de clauses de programme. Elle ne peut pas être appliquée directement, car les programmes Prolog considérés comme des grammaires n'engendrent que le mot vide. Dans certains cas on peut rédiger le programme en distinguant des prédicats qui jouent le rôle de terminaux et ceux qui jouent le rôle de non-terminaux, de telle manière que le programme n'engendre pas le mot vide quand on le considère comme une grammaire.

Il reste que les structures de base des grammaires et des programmes logiques sont différentes. Dans le premier cas, la structure de base est le monoïde et n'inclut donc ni la commutativité, ni d'élément absorbant, ni d'opération idempotente. Au contraire, l'algèbre de Boole a des opérateurs commutatifs, des éléments absorbants et des opérations idempotentes (tex2html_wrap_inline51356). L'application directe de transformations correctes pour les grammaires ignorera donc des transformations rendues possibles par une structure plus riche.

Même avec toutes ces limitations, des expérimentations préliminaires ont montré que la technique peut s'appliquer. En fait, beaucoup de transformations n'exploitent pas toute la richesse de la structure sous-jacente (par exemple, pliage/dépliage), et pourraient utiliser notre technique avec bénéfice. Il faut principalement retenir la séparation que nous avons opéré entre le composant syntaxique pur et le composant sémantique. On pourrait transposer cette séparation aux programmes logiques en distinguant un composant propositionnel pur et la circulation des termes.


next up previous contents
Next: Fragments décidables Up: Prospective Previous: Implémentation

Olivier Ridoux
Mon Apr 27 11:10:23 MET DST 1998