[发明专利]一种基于语法分析树的程序代码平行语料挖掘方法及系统在审
申请号: | 202110162209.8 | 申请日: | 2021-02-05 |
公开(公告)号: | CN112905232A | 公开(公告)日: | 2021-06-04 |
发明(设计)人: | 杨永全;孙铭;魏志强 | 申请(专利权)人: | 中国海洋大学;青岛海洋科学与技术国家实验室发展中心 |
主分类号: | G06F8/75 | 分类号: | G06F8/75 |
代理公司: | 北京工信联合知识产权代理有限公司 11266 | 代理人: | 姜丽楼 |
地址: | 266100 山*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 语法分析 程序代码 平行 语料 挖掘 方法 系统 | ||
1.一种基于语法分析树的程序代码平行语料挖掘方法,其特征在于,所述方法包括:
获取同一项目对应的基于两种不同类型的编程语言编写的第一源码文件和第二源码文件,并分别对所述第一源码文件和第二源码文件进行语法分析,以获取第一语法分析树和第二语法分析树;其中,所述语法分析树,包括:至少两个节点和每个节点的节点信息;
根据节点信息从所述第一语法分析树和第二语法分析树的根节点开始依次向下进行节点匹配,以确定至少一组匹配成功的属于第一语法分析树的第一语法分析子树和属于第二语法分析树的第二语法分析子树;
确定每组匹配成功的第一语法分析子树在所述第一源码文件的字符流中的第一首尾位置和第二语法分析子树在所述第二源码文件的字符流中的第二首尾位置,并根据每组的第一首尾位置和第二首尾位置进行代码提取,以获取多组平行语料。
2.根据权利要求1所述的方法,其特征在于,所述方法基于不同类型的编程语言的语法和ANTLR生成与不同类型的编程语言对应的语法分析器,并利用生成的语法分析器读入相同类型的编程语言对应的源码文件的输入流并进行分词处理,以获取词法符号流,并对所述词法符号流进行递归下降的语法分析,以获取语法分析树。
3.根据权利要求1所述的方法,其特征在于,所述根据节点信息从所述第一语法分析树和第二语法分析树的根节点开始依次向下进行节点匹配,以确定至少一组匹配成功的属于第一语法分析树的第一语法分析子树和属于第二语法分析树的第二语法分析子树,包括:
同时对所述第一语法分析树和第二语法分析树进行分析,从根节点开始,若根节点匹配,则遍历根节点下包含的能够继续匹配的子规则节点,若当前的根节点下的子规则节点的节点信息一致,则进入子规则节点向下继续分析以子规则节点为根节点的子语法树,直至节点信息不一致时停止;若根节点不匹配,则对根节点下的所有子节点进行匹配分析,并重复上述匹配过程,同时在一个节点分析完成后将结果回溯至对应的父节点,最终确定匹配成功的属于第一语法分析树的第一语法分析子树和属于第二语法分析树的第二语法分析子树。
4.根据权利要求1所述的方法,其特征在于,所述方法在进行节点匹配时,对于类节点,判断匹配的条件为节点的基本信息和包含的子规则节点信息一致,类节点的基本信息包括:类名、修饰符和继承信息,包含的子规则节点包括:类方法和声明;对于方法节点,判断匹配的条件为基本信息和包含的子规则节点一致,方法节点的基本信息包括:方法名、修饰符、参数列表和返回值类型,包含的子规则节点为声明、循环体和判断分支;其中,对于任一个节点,该节点的节点信息包括:该节点的基本信息和该节点包含的子规则节点信息。
5.根据权利要求4所述的方法,其特征在于,所述基本信息的比对规则为:对于文本类信息,忽略大小写进行相似匹配;对于方法的参数列表,根据参数的个数和参数类型进行匹配;对于循环体结构,根据循环条件进行匹配;对于判断分支结构,根据每个分支的判断条件进行匹配;对于方法返回值和声明部分,根据类型信息进行匹配。
6.一种基于语法分析树的程序代码平行语料挖掘系统,其特征在于,所述系统包括:
语法分析单元,用于获取同一项目对应的基于两种不同类型的编程语言编写的第一源码文件和第二源码文件,并分别对所述第一源码文件和第二源码文件进行语法分析,以获取第一语法分析树和第二语法分析树;其中,所述语法分析树,包括:至少两个节点和每个节点的节点信息;
节点匹配单元,根据节点信息从所述第一语法分析树和第二语法分析树的根节点开始依次向下进行节点匹配,以确定至少一组匹配成功的属于第一语法分析树的第一语法分析子树和属于第二语法分析树的第二语法分析子树;
代码提取单元,用于确定每组匹配成功的第一语法分析子树在所述第一源码文件的字符流中的第一首尾位置和第二语法分析子树在所述第二源码文件的字符流中的第二首尾位置,并根据每组的第一首尾位置和第二首尾位置进行代码提取,以获取多组平行语料。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国海洋大学;青岛海洋科学与技术国家实验室发展中心,未经中国海洋大学;青岛海洋科学与技术国家实验室发展中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110162209.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种柔性电池及其制备方法
- 下一篇:一种台扇前后网罩安装辅助对位压紧装置