Format des fichiers de description Grammaticaux
Les clauses précédées d'une astérique (*) sont optionelles, leurs sémantiques par défaut sont définies dans la section sémantique des clauses.
Des compléments d'informations concernant ces clauses sont en cliquant sur les points d'interrogations '?' à gauche des clauses.
? | TYPE = GRAMMAR | |
? | (*) | SYMBOLS = LETTERS ou WORDS |
? | (*) | START = SymIni |
? | RULES = Sym1 -> Sym2 Sym3 ... ; ... |
|
? | (*) | WEIGHTS = Sym1 = AliasSym1 ... |
? | (*) | ALIASES = Sym1 = AliasSymbol1 ... |
TYPE = GRAMMAR
Elle spécifie le type de géneration décrit dans le fichier. Ici, on souhaite une géneration basée sur des contraintes gramaticales, le mot clé est donc GRAMMAR.
SYMBOLS = LETTERS ou WORDS
Elle définit le type de symboles utilisés dans les séquences :
LETTERS : Chaque caractère utilisé est un symbole, il n'est pas besoin de les espacer pour écrire une séquence.
WORD : Les symboles sont des séquences de lettres et leur utilisation dans l'identification d'une séquence implique l'emploi de séparateurs (Espace, Tab ou Retour Chariot)
Par défaut, le type de symbole utilisé est WORD.
START = SeqIni
Permet de spécifier le non terminal initial de la grammaire. Par défaut (en l'absence de cette clause), le premier non terminal-rencontré est celui par lequel les mots du langage décrit par la grammaire vont être écrits.
RULES =
Sym1 -> Sym2 Sym3 ... ;
...
Cette clause permet la définition des règles de la grammaire. On peut aussi bien utiliser "->" que "::=" pour séparer les parties droite et gauche de production ...
WEIGHTS =
Sym1 = P1 ...
Cette clause permet l'affectation de poids aux symboles. Les poids des non-terminaux sont initialisés à 1.
On rappelle que le type de géneration choisi est une géneration en fréquence moyenne, ce qui implique que si l'on souhaite des fréquences d'apparitions F0, F1 ... pour les symboles S0, S1 ...il existe des poids P0, P1 ... tels que les fréquences souhaitées soient atteintes... Il sera sans doute difficile de déterminer ces poids dans le cas géneral.
ALIASES =
Symbol1 = AliasSymbol1 ...
Permet le renommage "a posteriori" des symboles utilisé lors de la géneration. Cela permet notemment la fusion de deux linguistiques travaillant sur les mêmes vocabulaires (En géneral, "acgt" ...) lors de la clause FREQUENCIES, les symboles seront par exemple appelés a1 et a2, c1 et c2 ... puis renommés après géneration en a (a1 et a2 deviennent a, etc ...)