Problemas de tipo de dados de modelo composto
Quando tipos de dados compostos são criados de outros tipos de dados e parênteses são usados para incluir um dos tipos de dados, todos os tipos de dados que incluem um tipo de dados entre parênteses também devem ser colocados entre parênteses.
Por exemplo, suponha que você defina uma lista de inteiros de GPD usando os modelos a seguir.
*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: *
}
Em seguida, os valores a seguir são expressões válidas e equivalentes do tipo de dados 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))
No entanto, o valor a seguir viola o aninhamento da regra de parênteses.
*ListList: (1,2,3):(10,11,12):(20,21,22)
O exemplo anterior gerará um erro de sintaxe porque o filtro do analisador pressupõe que qualquer parêntese encontrado pertença ao contexto mais externo, o próximo parêntese pertence ao próximo contexto e assim por diante.