CN107239314B - Asn.1编译过程中重复定义数据结构的去除方法 - Google Patents
Asn.1编译过程中重复定义数据结构的去除方法 Download PDFInfo
- Publication number
- CN107239314B CN107239314B CN201610179838.0A CN201610179838A CN107239314B CN 107239314 B CN107239314 B CN 107239314B CN 201610179838 A CN201610179838 A CN 201610179838A CN 107239314 B CN107239314 B CN 107239314B
- Authority
- CN
- China
- Prior art keywords
- same
- type
- definition
- data
- data type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 28
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
- G06F8/4435—Detection or removal of dead or redundant code
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及一种可以避免编译出错、降低数据冗余的ASN.1编译过程中重复定义数据结构的去除方法,包括步骤:S1、在进行ASN.1的语法分析时,假设所有合法的数据类型定义都会被当作一个符号表项,存放在一个符号数据表中;S2、在数据类型定义A被插入符号表之前,对所述符号数据表进行查找是否存在相同基本类型的表项B,如果存在,则将数据类型定义A抛弃,以B来替代。
Description
技术领域
本发明涉及一种ASN.1编译技术,尤其涉及一种ASN.1编译过程中重复定义数据结构的去除方法。
背景技术
目前,ASN.1文法在应用中,常常会出现数据结构的重复定义,例如在LTE RRC的PDU定义中,根据我们的统计,在LTE RRC C60版本协议中,定义了2273个数据类型,其中有518个数据类型重复定义,几乎占了1/4。如果编译器不对其进行优化处理,会带来以下问题:
1、出现重名情况,以ASN.1的C语言翻译器为例,一般会将ENUMERATED{true}翻译为枚举类型:typedef enum{true}EnumName,这样所有出现ENUMERATED{true}的地方都会产生一个上述声明,true就会被多次定义从而导致编译出错;
2、大量的数据冗余,ASN.1翻译器一般将其语法翻译成一种目标平台的数据类型描述,供编解码库调用,大量冗余的重复声明必然会导致大量冗余的描述数据。
有鉴于上述的缺陷,本设计人,积极加以研究创新,以期创设一种ASN.1编译过程中重复定义数据结构的去除方法,使其更具有产业上的利用价值。
发明内容
为解决上述技术问题,本发明的目的是提供一种可以避免编译出错、降低数据冗余的ASN.1编译过程中重复定义数据结构的去除方法。
本发明的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、数据类型定义为CHOICE,且成员定义顺序、名称、成员类型均相同;
S28、数据类型定义为SET,且成员名称、TAG和成员类型均相同;
S29、数据类型定义为SEQUENCE OF或SET OF,且数量约束和列表元素类型定义相同,
则将数据类型定义A抛弃,以B来替代。
进一步的,所述步骤S2中数值和数量约束定义是否相同的判断标准为:
1)、基本取值范围相同;
2)、可扩展性相同(均可扩展,或均不可扩展);
3)、如果任意一方有定义扩展取值范围,则双方都应定义,且扩展取值范围相同。
进一步的,所述取值范围是否相同的判断标准为:
1)、如果任意一方有定义lb,则双方均应定义,且lb值相同;
2)、如果任意一方有定义ub,则双方均应定义,且ub值相同。
进一步的,所述lb或ub值是否相同的判断标准为:
1)、lb或ub均被定义为一个显式数值,或者均被定义为一个ASN.1变量名;
2)、如果lb和ub被定义为一个ASN.1变量名,则该变量名必须完全一致;
3)、如果lb和ub被定义为一个显式数值,则其数值必须相等。
进一步的,所述步骤S2中SEQUENCE/CHOICE/SET的成员类型和SEQUENCE OF/SETOF的列表元素类型定义是否相同的判断标准为:
1)对比较双方来说,如果成员/元素是一个隐式定义的新类型,则先将该类型定义进行语法解析,并形成符号表项,按照上述方式进行符号去重,并得到一个符号表项引用,并视该符号表项引用所对应的数据类型名称为成员类型名称;
2)比较双方成员名称是否相同。
借由上述方案,本发明至少具有以下优点:
1、ASN.1编译器的目的之一是对ASN.1语法进行翻译,并生成目标平台的数据类型声明;有些平台的数据类型声明不允许重复,例如C语言的枚举名称;本发明通过去除重复定义的数据类型,则可以使得目标平台仅产生一份数据类型声明,从而避免了目标平台在使用这些数据类型声明时产生编译错误的可能。
2、ASN.1编译器最终需要对每一个数据类型进行数据化描述,对于定义完全相同的数据类型,其数据化描述也是完全相同的,在不去除重复定义的情况下,同样的描述就会出现多份;本发明通过去重操作,可以减少描述数据量,降低编译器输出的数据冗余。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例详细说明如后。
具体实施方式
下面结合实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
本发明一较佳实施例的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、数据类型定义为CHOICE,且成员定义顺序、名称、成员类型均相同;
S28、数据类型定义为SET,且成员名称、TAG和成员类型均相同;
S29、数据类型定义为SEQUENCE OF或SET OF,且数量约束和列表元素类型定义相同,
则将数据类型定义A抛弃,以B来替代。
为了便于判断步骤S2中数值和数量约束定义是否相同,本实施例设置了如下判断标准:
1)、基本取值范围相同;
2)、可扩展性相同(均可扩展,或均不可扩展);
3)、如果任意一方有定义扩展取值范围,则双方都应定义,且扩展取值范围相同;这样,当A和B同时满足以上三点时,即可判断A和B的数值和数量约束定义相同。
为了便于判断上述取值范围是否相同,又设置了如下判断标准为:
1)、如果任意一方有定义lb,则双方均应定义,且lb值相同;
2)、如果任意一方有定义ub,则双方均应定义,且ub值相同。这样,当A和B同时满足上述两点时,即可判断A和B的取值范围相同。
为了便于判断上述lb或ub值是否相同,本实施例设置了如下判断标准为:
1)、lb或ub均被定义为一个显式数值,或者均被定义为一个ASN.1变量名;
2)、如果lb和ub被定义为一个ASN.1变量名,则该变量名必须完全一致;
3)、如果lb和ub被定义为一个显式数值,则其数值必须相等。这样,当A和B满足上述3点时,即可判断A和B的lb或ub值相同。
为了便于判断步骤S2中SEQUENCE/CHOICE/SET的成员类型和SEQUENCE OF/SET OF的列表元素类型定义是否相同,本实施例设置了如下判断标准为:
1)对比较双方来说,如果成员/元素是一个隐式定义的新类型,则先将该类型定义进行语法解析,并形成符号表项,按照上述方式进行符号去重,并得到一个符号表项引用,并视该符号表项引用所对应的数据类型名称为成员类型名称;
2)比较双方成员名称是否相同。这样,当A和B满足名称相同时,即可判断步骤S2中SEQUENCE/CHOICE/SET的成员类型和SEQUENCE OF/SET OF的列表元素类型定义相同。
以上所述仅是本发明的优选实施方式,并不用于限制本发明,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变型,这些改进和变型也应视为本发明的保护范围。
Claims (5)
1.一种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、数据类型定义为CHOICE,且成员定义顺序、名称、成员类型均相同;
S28、数据类型定义为SET,且成员名称、TAG和成员类型均相同;
S29、数据类型定义为SEQUENCE OF或SET OF,且数量约束和列表元素类型定义相同,
则将数据类型定义A抛弃,以B来替代。
2.根据权利要求1所述的ASN.1编译过程中重复定义数据结构的去除方法,其特征在于:所述步骤S2中数值和数量约束定义是否相同的判断标准为:
1)、基本取值范围相同;
2)、可扩展性相同;
3)、如果任意一方有定义扩展取值范围,则双方都应定义,且扩展取值范围相同。
3.根据权利要求2所述的ASN.1编译过程中重复定义数据结构的去除方法,其特征在于:所述取值范围是否相同的判断标准为:
1)、如果任意一方有定义lb,则双方均应定义,且lb值相同;
2)、如果任意一方有定义ub,则双方均应定义,且ub值相同。
4.根据权利要求3所述的ASN.1编译过程中重复定义数据结构的去除方法,其特征在于:所述lb或ub值是否相同的判断标准为:
1)、lb或ub均被定义为一个显式数值,或者均被定义为一个ASN.1变量名;
2)、如果lb和ub被定义为一个ASN.1变量名,则该变量名必须完全一致;
3)、如果lb和ub被定义为一个显式数值,则其数值必须相等。
5.根据权利要求1所述的ASN.1编译过程中重复定义数据结构的去除方法,其特征在于:所述步骤S2中SEQUENCE/CHOICE/SET的成员类型和SEQUENCE OF/SET OF的列表元素类型定义是否相同的判断标准为:
1)对比较双方来说,如果成员/元素是一个隐式定义的新类型,则先将该类型定义进行语法解析,并形成符号表项,按照步骤S1至步骤S29的方式进行符号去重,并得到一个符号表项引用,并视该符号表项引用所对应的数据类型名称为成员类型名称;
2)比较双方成员名称是否相同。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610179838.0A CN107239314B (zh) | 2016-03-28 | 2016-03-28 | Asn.1编译过程中重复定义数据结构的去除方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610179838.0A CN107239314B (zh) | 2016-03-28 | 2016-03-28 | Asn.1编译过程中重复定义数据结构的去除方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107239314A CN107239314A (zh) | 2017-10-10 |
CN107239314B true CN107239314B (zh) | 2020-09-01 |
Family
ID=59982775
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610179838.0A Expired - Fee Related CN107239314B (zh) | 2016-03-28 | 2016-03-28 | Asn.1编译过程中重复定义数据结构的去除方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107239314B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7020641B2 (en) * | 2001-10-22 | 2006-03-28 | Sun Microsystems, Inc. | Method, system, and program for maintaining a database of data objects |
CN102915278A (zh) * | 2012-09-19 | 2013-02-06 | 浪潮(北京)电子信息产业有限公司 | 重复数据删除方法 |
CN103198119A (zh) * | 2013-04-02 | 2013-07-10 | 浪潮电子信息产业股份有限公司 | 一种快速查找具有相同重复数据删除标识的所有链接文件的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100451972C (zh) * | 2006-09-26 | 2009-01-14 | 杭州华三通信技术有限公司 | 提高多核系统访问临界资源速度的方法和装置 |
-
2016
- 2016-03-28 CN CN201610179838.0A patent/CN107239314B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7020641B2 (en) * | 2001-10-22 | 2006-03-28 | Sun Microsystems, Inc. | Method, system, and program for maintaining a database of data objects |
CN102915278A (zh) * | 2012-09-19 | 2013-02-06 | 浪潮(北京)电子信息产业有限公司 | 重复数据删除方法 |
CN103198119A (zh) * | 2013-04-02 | 2013-07-10 | 浪潮电子信息产业股份有限公司 | 一种快速查找具有相同重复数据删除标识的所有链接文件的方法 |
Non-Patent Citations (1)
Title |
---|
ASN.1翻译系统关键技术的研究与部分实现;高骏;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20021215(第02期);1-82 * |
Also Published As
Publication number | Publication date |
---|---|
CN107239314A (zh) | 2017-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10831826B2 (en) | Validation of schema and schema conformance verification | |
CN105260403B (zh) | 通用跨数据库访问方法 | |
CN101841515B (zh) | 可变目标的协议数据单元编解码代码自动生成的实现方法 | |
US20110219357A1 (en) | Compressing source code written in a scripting language | |
CN105183860B (zh) | 数据同步方法和系统 | |
CN103853650A (zh) | 一种模糊测试的测试用例生成方法及装置 | |
CN104320312A (zh) | 网络应用安全测试工具及模糊测试用例生成方法和系统 | |
CN102915344B (zh) | 一种sql语句处理方法及装置 | |
CN104731911A (zh) | 一种数据表与实体类的动态映射及转换方法 | |
CN102111160B (zh) | 用于反应式系统测试的编解码系统及其编解码器 | |
US20180260386A1 (en) | Method for integration of semantic data processing | |
CN105843663B (zh) | 适用于asn.1递归解析数据结构描述的编解码方法 | |
CN107239314B (zh) | Asn.1编译过程中重复定义数据结构的去除方法 | |
KR101985309B1 (ko) | 최적화된 높이를 가지는 밸런스드 파스 트리를 생성하는 방법 | |
US11201954B2 (en) | Systems and methods for binary message transformation using custom descriptors | |
CN103902651B (zh) | 一种基于MongoDB的云端代码查询方法与装置 | |
WO2006110987A1 (en) | System and method for efficient hosting of wireless applications by encoding application component definitions | |
CN110569487B (zh) | 一种基于高频率字符替代算法的Base64扩展编码方法及系统 | |
CN110058858B (zh) | 一种json数据处理方法及装置 | |
CN108183890B (zh) | 一种数据通信协议的解析方法及系统 | |
CN105224319A (zh) | 基于dom4j实现XBRL实例文档预览的方法 | |
CN106775935B (zh) | 解释型语言的解析方法及其装置和计算机系统 | |
Iatrou et al. | Efficient OPC UA binary encoding considerations for embedded devices | |
CN116089476B (zh) | 数据查询方法、装置及电子设备 | |
CN105867991B (zh) | 适用于asn.1编译器符号表的转换方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20200901 |
|
CF01 | Termination of patent right due to non-payment of annual fee |