Problemi relativi al tipo di dati del modello composto
Quando vengono creati tipi di dati composti da altri tipi di dati e parentesi, per racchiudere uno dei tipi di dati, tutti i tipi di dati che racchiudono un tipo di dati tra parentesi devono essere racchiusi tra parentesi.
Si supponga, ad esempio, di definire un elenco di interi GPD usando i modelli seguenti.
*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: *
}
I valori seguenti sono quindi espressioni valide ed equivalenti del tipo di dati 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))
Tuttavia, il valore seguente viola l'annidamento della regola di parentesi.
*ListList: (1,2,3):(10,11,12):(20,21,22)
L'esempio precedente genererà un errore di sintassi perché il filtro del parser presuppone qualsiasi parentesi che incontra appartenga al contesto più esterno, la parentesi successiva appartiene al contesto successivo e così via.