Contenu du fichier des paramètres

Le fichier de paramètres est une suite de lignes, dont la syntaxe est la suivante :

<fichier>               ::= <ligne>*
<ligne>                 ::= <ligne_trace> | <ligne_commentaire> | <ligne_donnees>
<ligne_trace>           ::= TRACE <mode_trace> <fin>
<mode_trace>            ::= PARSING | NO_PARSING
<ligne_commentaire>     ::= <symbole_commentaire> <any>
<any>                   ::= .*

<ligne_donnees>         ::= <mot_clé>? <identifiant_1> <identifiant_2> 
                            <symbole_affectation> <valeur> <fin>
<fin>                   ::= ; 

<mot_clé>               ::= <chaine_maj> 
<identifiant_1>         ::= <chaine_id> 
<identifiant_2>         ::= <chaine_id> 
<symbole_affectation>   ::= <- | <= 
<symbole_commentaire>   ::= // | # 
<valeur>                ::= <entier> | <reel> | <chaine | <path>

<chaine>                ::= [a-zA-Z%] [a-zA-Z0-9'_/%.*:]* |
                            "[a-zA-Z%/.~][a-zA-Z0-9'_/%.*: ]*"
<chaine_id>             ::= [a-zA-Z][a-zA-Z0-9] | "[a-zA-Z][a-zA-Z0-9]"
<chaine_maj>            ::= [A-Z][A-Z0-9\_]*
<path>                  ::= <path_linux> | <path_windows>
<item_path_l>           ::= [a-zA-Z0-9][a-zA-Z0-9\_\.]*
<item_path_w>           ::= [a-zA-Z0-9][a-zA-Z0-9\_\.\ ]*
<path_linux>            ::= (~ | .. | .)?/(<item_path_l>/)*
<path_windows>          ::= (~ | .. | . | [a-zA-Z]:)?(/ | \)(<item_path_w>(/ | \))*

<entier>                ::= -?[0-9]+ | MIN | MAX
<reel>                  ::= -?[0-9]*[.,][0-9]+ | EPS | DOUBLE_EPS

C'est le développeur qui choisit les mots_clés et les chaînes <identifiant_1> et <identifiant_2> (30 caractères au plus). Il est bon qu'ils et elles soient "parlantes" à l'utilisateur. Par exemple, la ligne :

voiture positionInitiale   <-  0.5;
exploitée par un appel GetRealParameterValue("voiture","positionInitiale"), est plus parlante que la ligne suivante, qui renverra la même valeur avec un appel GetRealParameterValue("a","b") :
a b   <-  0.5;
Noter que les chaînes contenant des caractères accentués sont interdites dans les identifiants, ainsi que la présence d'espaces, de '_' et de '-'. Les chaîne peuvent être entourées de guillemets. Pour les répertoires (valeurs de paramètres de type chaîne de caractères), y compris les chemins Windows contenant des espaces, ne jamais les entourer de guillements.

Le fichier peut donc contenir des lignes telles que :

// Paramètres des processus continus

voiture positionInitiale   <-  0.5;
pour affecter la valeur flottante 0,5 au paramètre identifié par les deux chaînes "voiture" et "positionInitiale" (noter la présence obligatoire du point pour un paramètre à valeur flottante),

ENTITE voiture nbPassagers   <-  4;
pour affecter la valeur entière 4 au paramètre identifié par les deux chaînes "voiture" et "nbPassagers" (noter l'absence obligatoire du point pour un paramètre à valeur entière), et :

FICHIER "FichierToboggan" NAME      <- fdonnees.txt;
FICHIER "FichierToboggan" FORMAT    <- "%d %*s %lf";
pour affecter la chaîne de caractères "fdonnees.txt" comme valeur du paramètre identifié par les deux chaînes "FichierToboggan" et "NAME", puis la chaîne de caractères "%d %*s %lf" comme valeur du paramètre identifié par les deux chaînes "FichierToboggan" et "FORMAT". Noter qu'on peut ou non entourer les chaînes de guillemets. L'exploitation du premier paramètre pourra être réalisée par une séquence telle que :
  SequentialDataFile* p = new SequentialDataFile();
  p->AssignFullName(GetStringParameterValue("FichierToboggan", "NAME");

Un exemple de fichier de paramètres est le suivant :

TRACE NO_PARSING;
# début paramètres entiers
ENTITE voiture nbPassagers <- 4;
voiture cv <= 7;
voiture quotaKm <= MAX;
TRACE PARSING;
// début paramètres réels
voiture "positionInitiale"   <-  0.5;
voiture "vitesse maxi"   <-  80.;
voiture "conso"   <-  EPS;   // la plus petite valeur en simple précision
"LOG" "DIR" <- c:\docsNsets\durand\KBS\Ma base\exec\Mon log\ "";
//"LOG" "DIR" <- /cygdrive/c/docsNsets/durand/KBS/MaBase/exec/Mon log/;

L'inclusion d'un fichier à l'intérieur d'un autre est commandée par :

INCLUDE <chemin>; 
où <chemin>} est le nom complet (absolu ou relatif) du fichier inclus.
La dernière ligne du fichier inclus doit être :
 
END INCLUDE; 

Ce système d'inclusion est, en complément de la notion de groupe de paramètres, une autre voie de structuration et de clarification d'un grand ensemble de paramètres.


This page was generated with the help of DOC++.