Project

General

Profile

Maintenance grammaire

Modification à proprement parler

La grammaire est écrite selon la syntaxe proposée par xtext. Sa modification doit être effectuée avec attention et si possible parcimonie puisqu'elle influe sur la totalité du projet, à savoir :
  • le méta-modèle
  • l'éditeur textuel
  • l'éditeur graphique
  • certaines fonctions annexes

Dans le cas où la grammaire venait à être modifiée, nous conseillons grandement que ces changements correspondent à des ajouts et non à de réelles modifications sur l'existant, même si cela reste possible. En effet, une modification sur l'existant pourrait entraîner une restructuration du méta-modèle, ce qui conduirait à des changements drastiques à faire sur les éléments cités ci-dessus.

Ceci ayant été dit, la grammaire est entièrement éditable et se trouve dans le fichier Lustre.xtext.

Répercussions

Le chapitre précédent mentionne des répercussions. Nous ne pouvons pas les lister toutes ici puisque la grammaire conditionne la totalité du projet et que ses modifications ont donc une influence globale. Ceci ayant été dit, nous pouvons donner des pistes d'adaptation :
  • Il faut re-générer l'ensemble du projet en passant par le fichier GenerateLustre.mwe2. Faire un clic droit dessus puis "run as" puis "mwe2 workflow". A la suite de cette opération, une erreur sous eclipse doit apparaître, voire deux, et ce dans le même fichier. Pour la (les) résoudre, se référer au commentaire de la méthode posant problème.
  • Il faut adapter les noms de fonction faisant référence aux tokens grammaticaux. En effet, les tokens ont des numéros qui changent lorsque la grammaire est modifiée. Leur numéro correspond à leur position dans la règle avec des '_' pour chaque partie parenthésée. Or dans les fonctions de formatage du code, ces numéros ne changent pas automatiquement, il faut donc le faire manuellement dans le fichier LustreFormatter.java.
  • Nous conseillons ensuite de modifier la disposition des éléments du méta-modèle générer, si celui-ci a été modifié. Celui-ci est stocké dans le fichier Lustre.ecore. Pour l'ouvrir en vue graphique faire clic droit puis "open with" puis "ViewPoint ecore editor". Une vue s'ouvre avec le méta-modèle qui va servir de base au travail sur l'éditeur graphique.
  • Enfin, il faudra adapter toute la partie éditeur graphique. Si un nom d'attribut, de classe a changé, il faut répercuter ces changement dans la partie obeo designer. De manière plus générale, toute modification qui modifie la structure de la grammaire où ses identifiants devra être répercutée dans le odesign. Ces modifications s'effectuent dans les fichiers suivants : Lustre.odesign et LustreQueries.mtl. Nous reviendrons plus tard sur ces fichiers.

Quoi modifier ?

Nous avons parlé jusque la de la manière dont il faudrait modifier la grammaire. Voici quelques points qui n'y sont pas présents et qui pourraient justifier une telle modification :
  • Les tableaux
  • Les définitions de types
  • Les fonctions (dernière version de lustre)
  • Les constantes en paramètres des fonctions avec le mot clef const
  • Les multiples définitions de constantes, ex : const a = 3 : int, b = 4. : double

Piste pour la gestion des commentaires

S'inspirer de la règle suivante :

terminal Documentation:
    '(*' -> '*)'
;