CN101201750B - 利用语法词法分析工具为编解码提供数据的方法 - Google Patents

利用语法词法分析工具为编解码提供数据的方法 Download PDF

Info

Publication number
CN101201750B
CN101201750B CN2006101051542A CN200610105154A CN101201750B CN 101201750 B CN101201750 B CN 101201750B CN 2006101051542 A CN2006101051542 A CN 2006101051542A CN 200610105154 A CN200610105154 A CN 200610105154A CN 101201750 B CN101201750 B CN 101201750B
Authority
CN
China
Prior art keywords
message
parameter
data
encoding
analysis tool
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
Application number
CN2006101051542A
Other languages
English (en)
Other versions
CN101201750A (zh
Inventor
赖龙
段保平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian Datang Telecom Co Ltd
Original Assignee
Xian Datang Telecom Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xian Datang Telecom Co Ltd filed Critical Xian Datang Telecom Co Ltd
Priority to CN2006101051542A priority Critical patent/CN101201750B/zh
Publication of CN101201750A publication Critical patent/CN101201750A/zh
Application granted granted Critical
Publication of CN101201750B publication Critical patent/CN101201750B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

本发明涉及利用语法词法分析工具为编解码提供数据的方法,包括:(A)编写分析工具:使用词法规则、语法规则编写能够识别高级语言规范以及根据自定义规则记录的参数属性的分析工具;(B)数据结构的定义:根据协议中消息的语法描述、高级语言规范和分析工具自定义规则定义协议中消息的数据结构;(C)分析数据结构:使用分析工具分析定义的消息的数据结构文件,获取消息的结构及参数信息;(D)存储相关信息:分析工具将上述信息按照一定的格式存储到文件中,以供编解码过程调用。本发明简化了程序开发的难度,提高了程序的可读性,具有简单,灵活,快捷,易读,扩展性好的特点。

Description

利用语法词法分析工具为编解码提供数据的方法
技术领域:
本发明涉及数据通信技术领域,特别是涉及一种在通讯网络的编解码过程中使用语法词法分析工具为通用编解码提供数据的方法。
背景技术:
ASN.1(Abstract Syntax Notation One抽象语法标记)是一种独立于机器的描述语言,用于描述在网络上传递的消息,广泛应用于移动网络通讯系统中的各种协议的传输,例如RANAP(Radio Access Network Application Part无线接入网络应用部分)协议、MAP(Mobile Application Part移动应用部分)协议、H.248协议等。
编译器是将一种语言翻译为另一种语言的计算机程序。编译器将源程序编写的程序作为输入,而产生用目标语言编写的等价程序。通常地,源程序为高级语言,如C或C++,而目标语言则是目标机器的目标代码,也就是写在计算机机器指令中的用于运行的代码。Lex(Lexical Analyzer)是一种生成扫描器的工具,扫描器是一种识别文本中的词汇模式的程序,Lex工具的语法是一种词法规则。Yacc(Yet Another Compiler Compiler)是一种可以将任何一种编程语言的所有语法翻译成针对此种语言的语法解析器,Yacc工具的语法是一种语法规则。Lex&Yacc被广泛的应用在程序语言的编译器中,检测程序语言的合法性及将语言编译成机器能够执行的机器码。
通用编解码程序在进行编解码时,编码可以根据参数的大小,起始地址,获取结构内存中的数值,再根据参数的数据类型进行编码。解码则根据参数的数据类型进行解码,并根据参数的大小,起始地址向结构中填写解码的值。还应当根据参数的赋值范围进行合法性判断等操作。这些信息,可以通过两种方式获得。一种是使用针对协议语法的分析工具分析协议的语法并按一定的格式输出,协议语法拥有自己的语法规范,对于语法的识别只能通过编写完整的语法分析工具来识别,然而协议的语法是十分复杂的,因此编写针对协议语法的分析工具也是一个复杂的系统工程。另一种通过人工读取协议语法规则,提取相应的数据,按照一定的格式填写,这样不仅工作效率低下,而且出错几率大幅提高。
发明内容:
本发明的目的就是使用词法语法分析工具的词法规则和语法规则,开发出能够分析高级语言结构以及用自定义规则(一种简化的协议语法与编程语言语法相结合的方法)记录参数属性信息并输出的分析工具,输出的数据可以为编解码提供所需的信息。该方法大大提高手工填写数据信息的效率和质量。为统一的编解码提供所需的详细准确的信息。具有简单,灵活,快捷,易读,扩展性好等特点。
为了达到上述目的,本发明提供以下技术方案:
利用语法词法分析工具为编解码提供数据的方法,包括以下步骤:
A.编写分析工具:使用词法规则、语法规则编写能够识别高级语言规范以及根据自定义规则记录的参数属性的分析工具;
B.数据结构的定义:根据协议中消息的语法描述、高级语言规范和分析工具自定义规则定义协议中消息的数据结构;
C.分析数据结构:使用分析工具分析定义的消息的数据结构文件,获取消息的结构及参数信息;
D.存储相关信息:分析工具将上述信息按照一定的格式存储到文件中,以供编解码过程调用。
所述的参数信息存储于数据表中。
所述数据表包括:消息表,结构表,参数表。
所述消息表至少包括:操作码、消息名称、消息长度和消息类型,用于记录消息的开始结构和属性。
所述结构表至少包括:结构名称、标签、类型、显示、原类型标签和结构长度。
所述参数表至少包括:参数名,结构名,类型名,变量大小和起始位置,用于记录参数的信息。
所述分析数据结构的分析流程包括:分析工具从定义的消息结构文件中匹配到一段文法;判断该文法中是否为消息,即是否包含消息的关键字;如果是消息则将消息的信息记录到消息表中;将分析出的消息自身的结构属性加入结构表中;分析工具分析出结构中的一个参数;获取参数的类型,参数名称,参数地址,参数大小等结构自身的信息;将上述信息记录到参数表中;分析工具匹配到参数的注释,在注释中分析出参数的ASN.1属性;将ASN.1属性记录到参数表中;文法分析完成后,遍历消息表、结构表和参数表,将信息写入文件中。
本发明相对于现有技术具有以下技术效果:通过使用注释的方式,按照分析工具自定义规则,把协议语法规定的参数属性注释到结构中,使得这些结构的定义即符合高级语言规范,又记录了协议语法,因此无需开发针对协议语法的语法分析器,简化了程序开发的难度,提高了程序的可读性,在不影响程序编译运行的前提下,为应用层使用数据结构提供了方便。
协议发生改变或协议版本升级时,只需修改根据协议定义消息的数据结构文件,用分析工具重新分析,即可获得新协议的结构信息。本发明与人工修改信息相比具有安全,快捷和简单的特点。
本方法还提供了一种简化分析工具程序逻辑的方式。使得分析工具能够以简单的方法实现复杂逻辑,使得分析工具能够快速开发。
附图说明:
图1为词法语法分析工具的原理图;
图2为分析工具向编解码过程提供数据的流程图;
图3为分析工具的Lex&Yacc的词法规则和语法规则;
图4为C语言编译器转换ASN.1字符串类型宏的原理图;
图5为几种典型的ASN.1数据类型同C语言数据类型的对应关系;
图6为分析工具分析过程中用于临时保存结构信息的表结构和相互关系;
图7为分析工具的分析流程;
图8为消息结构参数信息的存储方式。
具体实施方式:
以下结合附图详细说明本发明的具体实施方式。本实施例中使用的高级语言为C语言,协议语法为ASN.1,词法语法分析工具为Lex&Yacc。
图1为词法语法分析工具的原理图;将包含了正则表达式的词法语法规则作为分析工具的输入规则,为每一个词法表达式被匹配时定义一种动作。用于通知语法规则,为每一个语法规则被匹配时也定义一种动作,根据定义的动作保存所需的数据。编译器根据词法语法规则生成分析工具。分析工具指定根据协议定义的消息的数据结构文件作为它的输入,并根据词法语法规则的分析过程,记录结构属性和ASN.1属性,并产生特定格式的输出文件,即图8格式的结构信息数据。
图2为分析工具向编解码过程提供数据的流程图,其包括:
步骤201:使用词法规则、语法规则编写能够识别高级语言规范以及根据自定义规则记录的协议属性的分析工具;
步骤202:根据协议中消息的协议的语法描述、高级语言规范和分析工具自定义规则定义协议中消息的数据结构;
步骤203:使用分析工具分析定义的数据结构文件,获取结构中的参数信息;
步骤204:分析工具将获取的结构信息,按照一定的格式存储到文件中,用于为编解码过程提供信息。
图3展示了Lex&Yacc的词法规则和语法规则,结构包括:结构定义,结构名和注释。结构定义包括:结构参数列表。结构参数列表包括:参数选用标志,结构参数,注释。结构参数定义包括:类型定义和宏定义,类型定义包含所有ASN.1的非字符串类型。宏定义包含ASN.1的所有字符串类型。注释中包含了用自定义规则定义的ASN.1属性和关键字。
图4为C语言编译器转换ASN.1字符串类型宏的原理图,将ASN.1的字符串类型定义成C语言的带参数宏,可以一种简化分析工具的分析逻辑。使得定义结构时,ASN.1的字符串类型只占一行,C编译器编译时会替换的结构中的宏,形成结构嵌套结构的参数定义方式,而分析工具无需分析其中的嵌套结构,使得工具分析数据时只需要将每一行都作为一个整体参数来个分析,从而简化了编写分析工具的难度。
图5为几种典型的ASN.1数据类型同C语言数据类型的对应关系;定义结构时按照对应关系将ASN.1描述的数据转换成C数据类型。分析工具通过对C数据类型的分析获取ASN.1数据类型并记录数据信息。
图6展示了用于存储中间分析结果的数据表以及表之间的父子关系。数据表包括:消息表,结构表,参数表。
1.消息表:由操作码,消息名称,消息长度,消息类型等参数构成。用于记录协议消息的开始结构和属性。
2.结构表:由结构名称,标签,类型,协议中的数据类型,显示或隐示,结构长度等信息构成,用于记录结构拥有的参数和作为的参数时具有的属性。
3.参数表:由参数名,结构名,类型名,变量大小,起始位置等属性字段构成,用于记录参数的信息和参数的协议属性等详细信息。
图7为分析工具的分析流程;包括以下步骤:
步骤701:分析工具从定义的协议中消息的数据结构文件中匹配到一段文法;
步骤702:判断该文法中是否为消息,即是否包含消息的关键字;
步骤703:如果是消息则将消息的信息记录到图6所示的消息表中;
步骤704:将分析出的消息自身的结构属性加入到图6所示的结构表中;
步骤705:分析工具分析出结构中的一个参数;
步骤706:获取参数的类型,参数名称,参数地址,参数大小等结构自身的信息;
步骤707:将参数信息记录到图6所示的参数表中;
步骤708:分析工具匹配到参数的注释,在注释中分析出标签、可选/必选、赋值范围等参数拥有的ASN.1属性;
步骤709:将分析出的ASN.1属性记录到参数图6所示的参数表中该参数的相应字段中;
步骤710:判断结构文件是否结束,未结束转入步骤701继续进行文法分析;
步骤711:分析完成时,图6所示的三张表(消息表,结构表和参数表)中记录了所有消息的结构,子结构,参数,参数的ASN.1属性等信息,从消息表开始,遍历所有消息的结构,结构中的子结构和参数,将这些信息写入文件中(如图8),将这个文件加入到编解码过程中,就能够为编解码过程提供消息,消息的结构,结构的参数等的编解码过程中需要的详细信息。
图8展示了根据MAP(移动应用部分)协议中的插入用户数据响应消息(即图8中的InsertSubscriberDataRes)结构生成的结构及其参数的详细信息。消息由六行元素组成,每一行元素代表结构的一个参数,每一行中的一项代表参数的一个信息、ASN.1属性或参数包含的子参数指针。其中telServLst,bearServeLst,ss_List为结构参数,包含了指向子结构的指针,这些值都被编解码程序加载用于编解码。
以上公开的仅为本发明的一个具体实施例,但是本发明并非局限于此,任何本领域的技术人员能思之的变化,都应落在本发明的保护范围内。

Claims (7)

1.利用语法词法分析工具为编解码提供数据的方法,其特征在于包括以下步骤:
(A)编写分析工具:使用词法规则、语法规则编写能够识别高级语言规范以及根据自定义规则记录的参数属性的分析工具;
(B)数据结构的定义:根据协议中消息的语法描述、高级语言规范和分析工具自定义规则定义协议中消息的数据结构;
(C)分析数据结构:使用分析工具分析定义的消息的数据结构文件,获取消息的结构及参数信息;
(D)存储相关信息:分析工具将上述信息按照一定的格式存储到文件中,以供编解码过程调用。
2.根据权利要求1所述的为编解码提供数据的方法,其特征在于将步骤(C)所述的参数信息存储于数据表中。
3.根据权利要求2所述的为编解码提供数据的方法,其特征在于所述数据表包括:消息表,结构表,参数表。
4.根据权利要求3所述的为编解码提供数据的方法,其特征在于所述消息表至少包括:操作码、消息名称、消息长度和消息类型,用于记录消息的开始结构和属性。
5.根据权利要求3所述的为编解码提供数据的方法,其特征在于所述结构表至少包括:结构名称、标签、类型、显示、原类型标签和结构长度。
6.根据权利要求3所述的为编解码提供数据的方法,其特征在于所述参数表至少包括:参数名,结构名,类型名,变量大小和起始位置,用于记录参数的信息。
7.根据权利要求1所述的为编解码提供数据的方法,其特征在于所述分析数据结构的分析流程包括:
分析工具从定义的消息结构文件中匹配到一段文法;判断该文法中是否为消息,即是否包含消息的关键字;如果是消息则将消息的信息记录到消息表中;将分析出的消息自身的结构属性加入结构表中;分析工具分析出结构中的一个参数;获取参数的类型,参数名称,参数地址,参数大小等结构自身的信息;将上述信息记录到参数表中;分析工具匹配到参数的注释,在注释中分析出参数的ASN.1属性;将ASN.1属性记录到参数表中;文法分析完成后,遍历消息表、结构表和参数表,将信息写入文件中。
CN2006101051542A 2006-12-13 2006-12-13 利用语法词法分析工具为编解码提供数据的方法 Expired - Fee Related CN101201750B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2006101051542A CN101201750B (zh) 2006-12-13 2006-12-13 利用语法词法分析工具为编解码提供数据的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2006101051542A CN101201750B (zh) 2006-12-13 2006-12-13 利用语法词法分析工具为编解码提供数据的方法

Publications (2)

Publication Number Publication Date
CN101201750A CN101201750A (zh) 2008-06-18
CN101201750B true CN101201750B (zh) 2010-09-08

Family

ID=39516924

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006101051542A Expired - Fee Related CN101201750B (zh) 2006-12-13 2006-12-13 利用语法词法分析工具为编解码提供数据的方法

Country Status (1)

Country Link
CN (1) CN101201750B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105159680B (zh) * 2015-09-16 2018-12-28 北京航空航天大学 Java对象信息分析程序的自动生成方法
CN107229616B (zh) * 2016-03-25 2020-10-16 阿里巴巴集团控股有限公司 语言识别方法、装置及系统
CN106126504A (zh) * 2016-08-26 2016-11-16 重庆红江机械有限责任公司 A2l语法解析器及方法
CN109299032B (zh) * 2018-10-25 2019-10-01 掌阅科技股份有限公司 数据分析方法、电子设备及计算机存储介质
CN110377289A (zh) * 2019-07-01 2019-10-25 北京字节跳动网络技术有限公司 一种数据解析方法、装置、介质和电子设备
CN113438211A (zh) * 2021-06-07 2021-09-24 杭州鸿泉物联网技术股份有限公司 Dbc格式解析和报文解析方法、装置、电子设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5745897A (en) * 1994-11-21 1998-04-28 Bay Networks Group, Inc. Method and system for compiling management information base specifications
CN1560818A (zh) * 2004-02-28 2005-01-05 张忠斌 汉语(英语)词汇系统区分方法
CN1853164A (zh) * 2003-09-30 2006-10-25 英特尔公司 用于开发dsp编译器构件块的组合方法
CN1859359A (zh) * 2005-07-12 2006-11-08 上海华为技术有限公司 用抽象语法规则描述的通信协议的实现方法及其装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5745897A (en) * 1994-11-21 1998-04-28 Bay Networks Group, Inc. Method and system for compiling management information base specifications
CN1853164A (zh) * 2003-09-30 2006-10-25 英特尔公司 用于开发dsp编译器构件块的组合方法
CN1560818A (zh) * 2004-02-28 2005-01-05 张忠斌 汉语(英语)词汇系统区分方法
CN1859359A (zh) * 2005-07-12 2006-11-08 上海华为技术有限公司 用抽象语法规则描述的通信协议的实现方法及其装置

Also Published As

Publication number Publication date
CN101201750A (zh) 2008-06-18

Similar Documents

Publication Publication Date Title
US7610545B2 (en) Annotations for tracking provenance
CN107273117B (zh) 一种编程友好型的敏捷代码自动生成系统
CN102096588B (zh) 一种包含控件的页面的建立方法
CN104317589B (zh) 一种用于加载动态链接库的代码自动生成方法及装置
CN101201750B (zh) 利用语法词法分析工具为编解码提供数据的方法
US20060069545A1 (en) Method and apparatus for transducer-based text normalization and inverse text normalization
US20020007483A1 (en) Interactive flow visualization, graphical editing and analysis of textual languages
CN109491658A (zh) 计算机可执行代码数据的生成方法及装置
CN101253478A (zh) 类型推理和类型导向的后期绑定
CN108694214A (zh) 数据报表的生成方法、生成装置、可读介质及电子设备
CN101071378A (zh) 源代码生成方法、设备和程序
CN111309313A (zh) 一种快速生成html以及存储表单数据的方法
CN103049251A (zh) 一种数据库持久层装置及数据库操作方法
CN111666072A (zh) 一种软件代码及文档机器人方法
CN101202736B (zh) 一种基于抽象语法标记实现编解码的方法
WO2021253641A1 (zh) 着色语言翻译方法
Strüber et al. Scalability of Model Transformations: Position Paper and Benchmark Set.
CN103235757B (zh) 基于自动化造数对输入域测试对象进行测试的装置和方法
CN103049504A (zh) 基于源代码查询的半自动插桩方法
CN108459846A (zh) 软件云定制方法及平台
CN110502735B (zh) 一种电子设备通用工艺文件快速制作方法及系统
WO2023007791A1 (ja) プログラムコード自動生成システム
CN105843661B (zh) 一种面向主机系统的代码重定位方法及其系统
KR100846203B1 (ko) 모바일 어플리케이션의 생성 방법 및 이를 구현하기 위한프로그램을 기록한 기록매체
CN109597624A (zh) 一种sql格式化的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Assignee: Fourth Research Institute of Telecommunications Technology

Assignor: Xi'an Datang Telecom Co.,Ltd.|Xi'an Datang Telecom Co.,Ltd.|Xi'an Datang Telecom Co.,Ltd.

Contract record no.: 2011610000034

Denomination of invention: Method of providing data for encoding/decoding using syntax lexical analysis tool

Granted publication date: 20100908

License type: Exclusive License

Open date: 20080618

Record date: 20110607

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100908