Condividi tramite


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.