Project

General

Profile

Maintenance formatage » History » Version 6

Mathieu MONTIN, 03/13/2013 02:17 PM

1 1 Mathieu MONTIN
h1. Maintenance du formatage lors de la sérialisation
2 2 Mathieu MONTIN
3 2 Mathieu MONTIN
h2. De quoi s'agit-il ?
4 2 Mathieu MONTIN
5 2 Mathieu MONTIN
Xtext est capable de générer du code. C'est ce qui est utilisé pour rafraîchir les fichiers lustre lorsque l'éditeur graphique y apporte des modifications. Par défaut, xtext génère tous les tokens grammaticaux à la suite et coupe à 80 caractères, ce qui donne un code totalement incompréhensible. Pour cette raison, il est possible de définir un formateur qui va venir ajouter par exemple des sauts de ligne ou des tabulations dans le code. 
6 2 Mathieu MONTIN
7 2 Mathieu MONTIN
h2. Où est-ce implanté ?
8 3 Mathieu MONTIN
9 4 Mathieu MONTIN
La fonction de formatage est la fonction *configureFormatting* du fichier _*LustreFormatter.java*_ du package *org.obeonetwork.dsl.lustre.formatting*. Dans cette fonction sont regroupées les instructions qui vont permettre de mettre en forme le code générer. 
10 5 Mathieu MONTIN
11 5 Mathieu MONTIN
h2. Détail des différentes instructions.
12 5 Mathieu MONTIN
13 6 Mathieu MONTIN
L'instruction standard pour ajouter un saut de ligne, une indentation, etc est de la forme suivante :
14 6 Mathieu MONTIN
c . setAdd() . before(token) / after(token) 
15 6 Mathieu MONTIN
* c is the formatting config, input of the function to modify
16 6 Mathieu MONTIN
* setAdd()) is NOT an acceptable method, it's just our generic name for any existing function that will add something (for instance a tabulation)
17 6 Mathieu MONTIN
* before() or after() is self-explaining and are the real methods.
18 6 Mathieu MONTIN
* Token is the grammatical token where we want to make our change.
19 6 Mathieu MONTIN
20 6 Mathieu MONTIN
Here is an example to understand better what we just explained :
21 6 Mathieu MONTIN
*c.setSpace("\n").before(f.getLocalsAccess().getLocalsAssignment_1_1());*
22 6 Mathieu MONTIN
This action put a carriage return before the first token after the first parenthesis of the grammatical token "Locals".
23 6 Mathieu MONTIN
The names might me pretty hard to find, but eclipse find it for us.
24 6 Mathieu MONTIN
25 6 Mathieu MONTIN
When the grammar is modified, you may have to modify the call to those functions, since the position of the different token may change. This is one of the changes that has to be made in order to maintain the grammar and the formating.