The invention relates to a compiler error can be avoided and reduce data redundancy in the process of compiling ASN.1 repeat the definition of the data structure removal method comprises the steps of: S1, ASN.1 syntax analysis, assuming that all legitimate data type definition will be used as a table of symbols, symbols stored in a data table; S2, before the data type definition A is inserted into the symbol table of the symbol data table lookup table the same basic type of B, whether there exists if the data type definition, A abandoned and replaced it with B.
【技术实现步骤摘要】
ASN.1编译过程中重复定义数据结构的去除方法
本专利技术涉及一种ASN.1编译技术,尤其涉及一种ASN.1编译过程中重复定义数据结构的去除方法。
技术介绍
目前,ASN.1文法在应用中,常常会出现数据结构的重复定义,例如在LTERRC的PDU定义中,根据我们的统计,在LTERRCC60版本协议中,定义了2273个数据类型,其中有518个数据类型重复定义,几乎占了1/4。如果编译器不对其进行优化处理,会带来以下问题:1、出现重名情况,以ASN.1的C语言翻译器为例,一般会将ENUMERATED{true}翻译为枚举类型:typedefenum{true}EnumName,这样所有出现ENUMERATED{true}的地方都会产生一个上述声明,true就会被多次定义从而导致编译出错;2、大量的数据冗余,ASN.1翻译器一般将其语法翻译成一种目标平台的数据类型描述,供编解码库调用,大量冗余的重复声明必然会导致大量冗余的描述数据。有鉴于上述的缺陷,本设计人,积极加以研究创新,以期创设一种ASN.1编译过程中重复定义数据结构的去除方法,使其更具有产业上的利用价值。
技术实现思路
为解决上述技术问题,本专利技术的目的是提供一种可以避免编译出错、降低数据冗余的ASN.1编译过程中重复定义数据结构的去除方法。本专利技术的ASN.1编译过程中重复定义数据结构的去除方法,包括以下步骤:S1、在进行ASN.1的语法分析时,假设所有合法的数据类型定义都会被当作一个符号表项,存放在一个符号数据表中;S2、在数据类型定义A被插入符号数据表之前,对所述符号数据表进行查找是否存在相同基本类 ...
【技术保护点】
一种ASN.1编译过程中重复定义数据结构的去除方法,其特征在于:包括以下步骤:S1、在进行ASN.1的语法分析时,假设所有合法的数据类型定义都会被当作一个符号表项,存放在一个符号数据表中;S2、在数据类型定义A被插入符号表之前,对所述符号数据表进行查找是否存在相同基本类型的表项B,其中,所述相同基本类型的表项B必须与A具有相同的基本数据类型,且满足以下条件之一:S21、数据类型定义为NULL或BOOLEAN;S22、数据类型定义为INTEGER,且A和B均无数值约束定义,或数值约束定义相同;S23、数据类型定义为BIT STRING,且A和B均无数量约束定义,或数量约束定义相同;S24、数据类型定义为OCTET STRING,且a)、A和B均无约束定义,或;b)、A和B均定义为数量约束,且数量约束定义相同,或;c)、A和B均定义为CONTAINING约束,且约束目标类型相同;S25、数据类型定义为ENUMERATED,且枚举列表中枚举项名称、取值均相同;S26、数据类型定义为SEQUENCE,且成员定义顺序、名称、成员类型、成员的可选性质和默认值均相同;S27、数据类型定义为CHOIC ...
【技术特征摘要】
1.一种ASN.1编译过程中重复定义数据结构的去除方法,其特征在于:包括以下步骤:S1、在进行ASN.1的语法分析时,假设所有合法的数据类型定义都会被当作一个符号表项,存放在一个符号数据表中;S2、在数据类型定义A被插入符号表之前,对所述符号数据表进行查找是否存在相同基本类型的表项B,其中,所述相同基本类型的表项B必须与A具有相同的基本数据类型,且满足以下条件之一:S21、数据类型定义为NULL或BOOLEAN;S22、数据类型定义为INTEGER,且A和B均无数值约束定义,或数值约束定义相同;S23、数据类型定义为BITSTRING,且A和B均无数量约束定义,或数量约束定义相同;S24、数据类型定义为OCTETSTRING,且a)、A和B均无约束定义,或;b)、A和B均定义为数量约束,且数量约束定义相同,或;c)、A和B均定义为CONTAINING约束,且约束目标类型相同;S25、数据类型定义为ENUMERATED,且枚举列表中枚举项名称、取值均相同;S26、数据类型定义为SEQUENCE,且成员定义顺序、名称、成员类型、成员的可选性质和默认值均相同;S27、数据类型定义为CHOICE,且成员定义顺序、名称、成员类型均相同;S28、数据类型定义为SET,且成员名称、TAG和成员类型均相同;S29、数据类型定义为SEQUENCEOF或SETOF,且数量约束和列表元素类型定义相同,则将数据类型定义A抛弃,以B来替代。2.根据权利要求1所述的...
【专利技术属性】
技术研发人员:江国庆,陈林康,张建立,潘玉峰,杨鹏,
申请(专利权)人:苏州简约纳电子有限公司,
类型:发明
国别省市:江苏,32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。