复合模板数据类型问题

如果复合数据类型是从其他数据类型创建的,并且使用括号括住其中一种数据类型,则括在括号内数据类型的所有数据类型也必须用括号括起来。

例如,假设使用以下模板定义 GPD 整数的列表。

*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: *
}

然后,以下值是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))

但是,以下值违反了圆括号规则的嵌套。

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

前面的示例将生成语法错误,因为分析程序筛选器假定它遇到的任何括号属于最外层上下文,下一个括号属于下一个上下文,依此而论。