(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202210480638.4
(22)申请日 2022.05.05
(71)申请人 福建新大陆通信科技股份有限公司
地址 350000 福建省福州市马尾开发区儒
江东路70号 (飞毛腿工业园) 6#楼及5#
楼二至四层
(72)发明人 赵泽钧
(74)专利代理 机构 福州市鼓楼区京华专利事务
所(普通合伙) 35212
专利代理师 宋连梅
(51)Int.Cl.
G06F 40/253(2020.01)
G06F 40/30(2020.01)
(54)发明名称
一种通信P DU编解码器自动生成方法及系统
(57)摘要
本发明提供了通信技术领域的一种通信PDU
编解码器自动生成方法及系统, 方法包括如下步
骤: 步骤S10、 定义一包 括PDU名、 成员名以及成员
类型的PDU结构, 基于所述PUD结构创建PDU定义
文件; 步骤S20、 对所述PDU定义文件进行语法分
析, 得到抽象语法树; 步骤S30、 创建一全局符号
表, 基于所述抽象语法树更新全局符号表, 对所
述全局符号表进行语义分析, 得到语义分析结
果; 步骤S40、 基于 所述抽象语法树以及语义 分析
结果自动生成PDU编解码器的代码。 本发明的优
点在于: 极大的提升了PD U编解码器生成的质量、
效率以及泛化 性。
权利要求书2页 说明书6页 附图2页
CN 114925677 A
2022.08.19
CN 114925677 A
1.一种通信P DU编解码器自动生成方法, 其特 征在于: 包括如下步骤:
步骤S10、 定义一包括PDU名、 成员名以及成员类型的PDU结构, 基于所述PUD结构创建
PDU定义文件;
步骤S20、 对所述P DU定义文件进行语法分析, 得到抽象语法树;
步骤S30、 创建一全局符号表, 基于所述抽象语法树更新全局符号表, 对所述全局符号
表进行语义分析, 得到语义分析 结果;
步骤S40、 基于所述抽象语法树以及语义分析 结果自动生成P DU编解码器的代码。
2.如权利 要求1所述的一种通信PDU编解码器自动生成方法, 其特征在于: 所述步骤S10
中, 所述成员类型包括整数类型、 数组类型以及引用类型。
3.如权利 要求1所述的一种通信PDU编解码器自动生成方法, 其特征在于: 所述步骤S20
具体为:
基于所述PDU结构编写PDU定义文件对应LALR.g4格式的语法文件, 通过ANTLR4读取所
述语法文件生成P DU编解码器的前端代码;
通过所述前端代码将输入PDU定义文件的字节流, 基于词法分析转换为词元序列, 将各
所述词元序列组合 生成抽象语法树;
所述抽象语法树包括若干个常量节点以及PDU节点, 所述常量节点由常量构成, 所述
PDU节点由P DU定义文件构成。
4.如权利 要求1所述的一种通信PDU编解码器自动生成方法, 其特征在于: 所述步骤S30
具体包括:
步骤S31、 创建一全局符号表, 通过ANTLR4的visitor模式遍历所述抽象语法树, 遍历到
常量时直接存储至所述全局符号表, 遍历到所述PDU定义文件时, 创建所述PDU定义文件对
应的子符号表并存 储至全局符号表;
步骤S32、 遍历各 所述PDU定义文件的各成员并加入 对应的子符号表;
步骤S33、 对所述全局符号表进行静态语义分析, 得到语义分析 结果。
5.如权利 要求1所述的一种通信PDU编解码器自动生成方法, 其特征在于: 所述步骤S40
具体包括:
步骤S41、 创建一头文件, 遍历所述抽象语法树的常量节点得到对应的常量, 将所述常
量作为宏定义保存到 头文件, 基于所述头文件为每一个 类型的PDU定义文件分配一结构体;
步骤S42、 遍历所述抽象语法树的PDU节点, 得到各所述PDU定义文件的成员, 将各所述
成员的成员类型转换为目标程序语言后添加至结构体中;
步骤S43、 基于所述语义分析结果, 为每一个类型的PDU定义文件自动生成一用于将结
构体转换为二进制字符串的编码函数以及一用于将二进制字符串转换为结构体的解码函
数, 基于所述编码函数以及解码函数自动生成P DU编解码器的代码。
6.一种通信P DU编解码器自动生成系统, 其特 征在于: 包括如下模块:
PDU定义文件创建模块, 用于定义一包括PDU名、 成员名以及成员类型的PDU结构, 基于
所述PUD结构创建P DU定义文件;
语法分析模块, 用于对所述P DU定义文件进行语法分析, 得到抽象语法树;
语义分析模块, 用于创建一全局符号表, 基于所述抽象语法树更新全局符号表, 对所述
全局符号表进行语义分析, 得到语义分析 结果;权 利 要 求 书 1/2 页
2
CN 114925677 A
2PDU编解码器生成模块, 用于基于所述抽象语法树以及语义分析结果自动生成PDU编解
码器的代码。
7.如权利 要求6所述的一种通信PDU编解码器自动生成系统, 其特征在于: 所述PDU定义
文件创建模块中, 所述成员类型包括整数类型、 数组类型以及引用类型。
8.如权利要求6所述的一种通信PDU编解码器自动生成系统, 其特征在于: 所述语法分
析模块具体为:
基于所述PDU结构编写PDU定义文件对应LALR.g4格式的语法文件, 通过ANTLR4读取所
述语法文件生成P DU编解码器的前端代码;
通过所述前端代码将输入PDU定义文件的字节流, 基于词法分析转换为词元序列, 将各
所述词元序列组合 生成抽象语法树;
所述抽象语法树包括若干个常量节点以及PDU节点, 所述常量节点由常量构成, 所述
PDU节点由P DU定义文件构成。
9.如权利要求6所述的一种通信PDU编解码器自动生成系统, 其特征在于: 所述语义分
析模块具体包括:
全局符号表创建单元, 用于创建一全局符号表, 通过ANTLR4的visitor模式遍历所述抽
象语法树, 遍历到常量时直接存储至所述全局符号表, 遍历到所述PDU定义文件时, 创建所
述PDU定义文件 对应的子符号表并存 储至全局符号表;
子符号表更新单 元, 用于遍历各 所述PDU定义文件的各成员并加入 对应的子符号表;
语义分析结果生成单元, 用于对所述全局符号表进行静态语义分析, 得到语义分析结
果。
10.如权利要求6所述的一种通信PDU编解码器自动生成系 统, 其特征在于: 所述PDU编
解码器生成模块具体包括:
结构体生成单元, 用于创建一头文件, 遍历所述抽象语法树的常量节点得到对应的常
量, 将所述常量作为宏定义保存到头文件, 基于所述头文件为每一个类型的PDU定义文件分
配一结构体;
结构体填充单元, 用于遍历所述抽象语法树的PDU节点, 得到各所述PDU定义文件 的成
员, 将各所述成员的成员类型转换为目标程序语言后添加至结构体中;
代码生成单元, 用于基于所述语义分析结果, 为每一个类型的PDU定义文件自动生成一
用于将结构体转换为二进制字符串的编码函数以及一用于将二进制字符串转换为结构体
的解码函数, 基于所述编码函数以及解码函数自动生成P DU编解码器的代码。权 利 要 求 书 2/2 页
3
CN 114925677 A
3
专利 一种通信PDU编解码器自动生成方法及系统
文档预览
中文文档
11 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共11页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2024-03-18 17:47:38上传分享