[发明专利]词法分析方法、装置、计算机设备和存储介质有效
| 申请号: | 201910720528.9 | 申请日: | 2019-08-06 |
| 公开(公告)号: | CN110413284B | 公开(公告)日: | 2023-10-17 |
| 发明(设计)人: | 赵旸;刘思凡;邱旻峰 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
| 主分类号: | G06F8/41 | 分类号: | G06F8/41 |
| 代理公司: | 华进联合专利商标代理有限公司 44224 | 代理人: | 冯右明 |
| 地址: | 518000 广东省深圳*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 词法 分析 方法 装置 计算机 设备 存储 介质 | ||
1.一种词法分析方法,包括:
获取代码文件并确定所述代码文件的入口函数,读取所述入口函数的代码字符序列;
根据预先构建的反向变量哈希映射,将所述入口函数的代码字符序列中的自定义变量替换为原子级变量,得到变量归一化后的代码字符序列;
获取所述变量归一化后的代码字符序列中的函数调用代码,根据预先构建的函数体哈希映射将所述函数调用代码替换为被调用函数的函数体,得到过程式函数代码;
对所述过程式函数代码进行词法分析,得到所述代码文件对应的单词序列。
2.根据权利要求1所述的方法,其特征在于,所述根据预先构建的函数体哈希映射将所述函数调用代码替换为被调用函数的函数体的步骤,包括:
逐行扫描所述变量归一化后的代码字符序列;
当代码字符序列为函数调用代码时,从函数调用代码中获取被调用函数的函数名;
根据所述被调用函数的函数名,从所述函数体哈希映射中获取与所述被调用函数的函数体,将所述代码字符序列中的函数调用代码替换为所述被调用函数的函数体。
3.根据权利要求2所述的方法,其特征在于,所述将所述代码字符序列中的函数调用代码替换为所述被调用函数的函数体的步骤之后,还包括:
逐行扫描所述被调用函数的函数体中的代码字符序列;
当所述被调用函数的函数体中的代码字符序列为函数调用代码时,跳转至从函数调用代码中获取被调用函数的函数名的步骤。
4.根据权利要求1所述的方法,其特征在于,所述根据预先构建的反向变量哈希映射,将所述入口函数的代码字符序列中的自定义变量替换为原子级变量的步骤之前,还包括:
获取预设的第一正则表达式,根据所述第一正则表达式提取所述代码文件中的变量赋值表达式;
从所述变量赋值表达式中提取自定义变量以及所述自定义变量对应的原子级变量,根据所述自定义变量以及所述原子级变量构建反向变量哈希映射。
5.根据权利要求4所述的方法,其特征在于,所述根据所述自定义变量以及所述原子级变量构建反向变量哈希映射的步骤,包括:
获取变量赋值表达式所在的代码文件的类信息以及位置信息;
根据所述自定义变量、对应的原子级变量、类信息以及位置信息生成变量哈希映射;
根据类信息以及所述代码文件中的类继承关系,将所述变量哈希映射转换为反向变量哈希映射。
6.根据权利要求2所述的方法,其特征在于,所述根据预先构建的函数体哈希映射将所述函数调用代码替换为被调用函数的函数体的步骤之前,还包括:
获取预设的第二正则表达式,根据所述第二正则表达式提取所述代码文件中的函数定义式并获取所述函数定义式中的函数名;
从所述函数定义式所在代码行起,对所述代码文件的代码字符序列行进行扫描,获取所述函数定义式对应的函数体;
根据所述函数定义式的函数名以及函数体,构建函数体哈希映射。
7.根据权利要求1所述的方法,其特征在于,所述对所述过程式函数代码进行词法分析,得到所述代码文件对应的单词序列的步骤,包括:
根据预设构词规则,对所述过程式函数代码进行分词处理;
根据分词处理结果获取所述代码文件的单词序列。
8.一种词法分析装置,其特征在于,所述装置包括:
入口函数获取模块,用于获取代码文件并确定所述代码文件的入口函数,读取所述入口函数的代码字符序列;
变量归一模块,用于根据预先构建的反向变量哈希映射,将所述入口函数的代码字符序列中的自定义变量替换为原子级变量,得到变量归一化后的代码字符序列;
函数展开模块,用于获取所述变量归一化后的代码字符序列中的函数调用代码,根据预先构建的函数体哈希映射将所述函数调用代码替换为被调用函数的函数体,得到过程式函数代码;
词法分析模块,用于对所述过程式函数代码进行词法分析,得到所述代码文件对应的单词序列。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910720528.9/1.html,转载请声明来源钻瓜专利网。





