复合模板数据类型问题
如果复合数据类型是从其他数据类型创建的,并且使用括号括住其中一种数据类型,则括在括号内数据类型的所有数据类型也必须用括号括起来。
例如,假设使用以下模板定义 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)
前面的示例将生成语法错误,因为分析程序筛选器假定它遇到的任何括号属于最外层上下文,下一个括号属于下一个上下文,依此而论。