[发明专利]词法分析方法、装置、计算机设备和存储介质有效
| 申请号: | 201910720528.9 | 申请日: | 2019-08-06 |
| 公开(公告)号: | CN110413284B | 公开(公告)日: | 2023-10-17 |
| 发明(设计)人: | 赵旸;刘思凡;邱旻峰 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
| 主分类号: | G06F8/41 | 分类号: | G06F8/41 |
| 代理公司: | 华进联合专利商标代理有限公司 44224 | 代理人: | 冯右明 |
| 地址: | 518000 广东省深圳*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 词法 分析 方法 装置 计算机 设备 存储 介质 | ||
本申请涉及一种词法分析方法、装置、计算机设备和存储介质。所述方法包括:获取代码文件并确定代码文件的入口函数,读取入口函数的代码字符序列;根据预先构建的反向变量哈希映射,将入口函数的代码字符序列中的自定义变量替换为原子级变量,得到变量归一化后的代码字符序列;获取变量归一化后的代码字符序列中的函数调用代码,根据预先构建的函数体哈希映射将函数调用代码替换为被调用函数的函数体,得到过程式函数代码;对过程式函数代码进行词法分析,得到代码文件对应的单词序列。采用本方法能够实现将具有复杂层级结构的代码文件进行函数递归展开为过程式函数代码,有效解决具有复杂层级结构代码的词法分析问题。
技术领域
本申请涉及数据处理技术领域,特别是涉及一种词法分析方法、装置、计算机设备和存储介质。
背景技术
词法分析(lexical analysis)是计算机科学中将字符序列转换为单词(Token)序列的过程。通过词法分析将代码转为单词序列,再通过word embedding转换成数字向量,是进行代码检查、代码深度学习等技术的重要基础。
但是,随着软件工程项目的代码文件日趋复杂,越来越多的代码文件采用面向对象设计的复杂层级结构来组织代码逻辑,以提高代码的可扩展性,而传统的词法分析技术只能转换简单的单行或多行代码文本,难以对复杂层级结构的代码文件进行词法分析。
发明内容
基于此,有必要针对传统的词法分析技术难以对复杂层级结构的代码文件进行词法分析的技术问题,提供一种词法分析方法、装置、计算机设备和存储介质。
一种词法分析方法,所述方法包括:
获取代码文件并确定所述代码文件的入口函数,读取所述入口函数的代码字符序列;
根据预先构建的反向变量哈希映射,将所述入口函数的代码字符序列中的自定义变量替换为原子级变量,得到变量归一化后的代码字符序列;
获取所述变量归一化后的代码字符序列中的函数调用代码,根据预先构建的函数体哈希映射将所述函数调用代码替换为被调用函数的函数体,得到过程式函数代码;
对所述过程式函数代码进行词法分析,得到所述代码文件对应的单词序列。
一种词法分析装置,所述装置包括:
入口函数获取模块,用于获取代码文件并确定所述代码文件的入口函数,读取所述入口函数的代码字符序列;
变量归一模块,用于根据预先构建的反向变量哈希映射,将所述入口函数的代码字符序列中的自定义变量替换为原子级变量,得到变量归一化后的代码字符序列;
函数展开模块,用于获取所述变量归一化后的代码字符序列中的函数调用代码,根据预先构建的函数体哈希映射将所述函数调用代码替换为被调用函数的函数体,得到过程式函数代码;
词法分析模块,用于对所述过程式函数代码进行词法分析,得到所述代码文件对应的单词序列。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取代码文件并确定所述代码文件的入口函数,读取所述入口函数的代码字符序列;
根据预先构建的反向变量哈希映射,将所述入口函数的代码字符序列中的自定义变量替换为原子级变量,得到变量归一化后的代码字符序列;
获取所述变量归一化后的代码字符序列中的函数调用代码,根据预先构建的函数体哈希映射将所述函数调用代码替换为被调用函数的函数体,得到过程式函数代码;
对所述过程式函数代码进行词法分析,得到所述代码文件对应的单词序列。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910720528.9/2.html,转载请声明来源钻瓜专利网。





