Partager via


Problèmes de type de données de modèle composé

Lorsque des types de données composés sont créés à partir d’autres types de données et que des parenthèses sont utilisées pour entourer l’un des types de données, tous les types de données qui entourent un type de données entre parenthèses doivent également être placés entre parenthèses.

Par exemple, supposons que vous définissez une liste d’entiers GPD à l’aide des modèles suivants.

*Template:  LIST_OF_INTS
{
    *Type:  DATATYPE
    *DataType:   ARRAY
    *ElementType:  INTEGER
    *RequiredDelimiter: ","
    *OptionalDelimiter: "<20 09>"
    *ElementTags: (int)
    *ArraySize: *
}
*Template:  LIST_OF_LIST_OF_INTS
{
    *Type:  DATATYPE
    *DataType:   ARRAY
    *ElementType:  LIST_OF_INTS
    *RequiredDelimiter: ":"
    *OptionalDelimiter: "<20 09>"
    *ElementTags: (IntList)
    *ArraySize: *
}

Ensuite, les valeurs suivantes sont des expressions valides et équivalentes du type de données LIST_OF_LIST_OF_INTS.

*ListList: 1,2,3:10,11,12:20,21,22 
*ListList: (1,2,3:10,11,12:20,21,22)
*ListList: ((1,2,3):(10,11,12):(20,21,22))

Toutefois, la valeur suivante viole la règle d’imbrication de parenthèses.

*ListList: (1,2,3):(10,11,12):(20,21,22)

L’exemple précédent génère une erreur de syntaxe, car le filtre de l’analyseur suppose que toute parenthèse qu’il rencontre appartient au contexte le plus externe, que la parenthèse suivante appartient au contexte suivant, et ainsi de suite.