Problemas de tipo de datos de plantilla compuesta
Cuando se crean tipos de datos compuestos a partir de otros tipos de datos y paréntesis se usan para incluir uno de los tipos de datos, todos los tipos de datos que incluyen un tipo de datos entre paréntesis también deben ir entre paréntesis.
Por ejemplo, supongamos que se define una lista de enteros GPD mediante las siguientes plantillas.
*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: *
}
A continuación, los valores siguientes son expresiones válidas y equivalentes del tipo de datos 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))
Sin embargo, el siguiente valor infringe el anidamiento de la regla de paréntesis.
*ListList: (1,2,3):(10,11,12):(20,21,22)
En el ejemplo anterior se generará un error de sintaxis porque el filtro del analizador supone cualquier paréntesis que encuentre pertenece al contexto más externo, el siguiente paréntesis pertenece al siguiente contexto, etc.