::= CLASS {
ListeDeParametresClasse }
SyntaxeOptionCLASS
permet de définir une classe s'apparentant à une macro ad-hoc pour définir une séquence avec éventuellement une syntaxe plus parlante.
Une classe comporte des paramètres nommés. Chaque nom de paramètre est préfixé par le caractère ampersand &, tant pour la déclaration que pour l'usage.
Quand un paramètre n'a pas de type, il est alors de type type.
Pour effectuer un typage dynamique, il ne faut plus utiliser l'instruction ANY
mais l'opérateur @ qui référencie une propriété d'une séquence. Le nombre de marques . indique la profondeur d'imbrication des séquences. Par défaut, le premier niveau d'imbrication i.e. le corps de la classe est exploré.
Selon une convention ad-hoc du protocole que le module modélise, la propriété référencée contient alors une valeur définissant le type de la valeur typée dynamiquement.
-- Definition d'une classe avec quatre parametres.
MaClasse ::= CLASS
{
&MonParametreA,
-- Le parametre MonParametreA n'est pas type aussi il doit etre un type.
&MonParametreB INTEGER,
-- Le parametre MonParametreB est obligatoire.
&MonParametreC INTEGER DEFAULT 1,
-- Le parametre MonParametreC est facultatif. En ce cas, sa valeur par défaut est 1
&MonParametreD INTEGER OPTIONAL
-- Le parametre MonParametreD est falcultatif.
}
MaValeur MaClasse ::=
{
&MonParametreA INTEGER,
&MonParametreB 1
}