买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:南京邮电大学
摘要:本发明公开了一种基于高阶函数的程序间依赖关系抽取方法,首先对程序进行预处理,构建程序的过程调用图,对过程调用图中的节点进行遍历,确定子过程的分析顺序;获取各个被调用子过程内的语句和变量间的依赖关系,用高阶函数的形式保存摘要信息;根据生成的高阶函数式函数摘要,在过程调用点处对函数摘要的函数参数进行相应值或者函数代入,获取过程间由于过程调用和参数传递产生的依赖关系。本发明通过高阶函数特性获取过程内的依赖关系,生成高阶函数形式表示的函数摘要,可方便过程间调用时在调用点处按需完成函数摘要中高阶函数参数的代入,快速获取形参与实参之间的依赖关系,有效提升了程序间依赖关系的抽取效率。
主权项:1.一种基于高阶函数的程序间依赖关系抽取方法,其特征在于,所述抽取方法包括以下步骤:S1,对程序进行预处理,构建程序的过程调用图,对过程调用图中的节点进行遍历,确定子过程的分析顺序;S2,获取各个被调用子过程内的语句和变量间的依赖关系,用高阶函数的形式保存各个被调用子过程的高阶函数摘要信息;S3,根据步骤S2生成的各个被调用子过程的高阶函数形式的函数摘要,在过程调用点处对函数摘要的函数参数进行相应值或者函数代入,获取过程间由于过程调用和参数传递产生的依赖关系;步骤S2中,获取各个被调用子过程内的语句和变量间的依赖关系的过程包括以下子步骤:S21,按序选取其中一个待分析过程,记为P,初始化待分析过程P的依赖关系,将语句依赖集初始化为空,根据变量的类型对变量依赖集进行初始化处理;S22,根据CFG图获取过程P中其中一条语句i的控制依赖关系CDi,语句i的控制依赖关系包括CFG图上与节点i有边直接或间接连接的节点j的控制依赖与数据依赖的并集;CDi=Si,Si表示与语句i有控制依赖关系的语句集合;S23,针对步骤S22中语句i中的某个变量a,获取其数据依赖关系DDi,a;S24,重复步骤S22和S23,迭代更新过程P中每个语句和变量的依赖关系,使之达到定值,并将完整的过程内语句间和变量间依赖关系以高阶函数的形式存储,生成过程P的高阶函数形式的函数摘要;S25,重复步骤S21至S24,直至生成所有待分析过程的高阶函数形式的函数摘要;步骤S23中,针对步骤S22中语句i中的某个变量a,获取其数据依赖关系DDi,a的过程包括以下步骤:S231,判断语句i是否为赋值或内存修改语句,如果是,更新该语句i中所定义变量a的变量依赖集为该语句i的语句依赖集,获取语句i的数据依赖关系DDi,a,转入步骤S232;否则,直接进入步骤S232;S232,判断语句i是否为过程调用语句,如果是,将DDi,a以高阶函数形式表示为λx.Rx,x为形参或全局变量对应的初始化函数参数,在过程调用点处对函数参数进行相应值或者函数代入,结束当前流程;否则,直接结束当前流程;步骤S3中,获取过程间由于过程调用和参数传递产生的依赖关系的过程包括以下步骤:S31,获取被调用过程的控制依赖关系,生成过程间控制依赖关系的集合;S32,将形参按照调用类型分类,分别按照各自的类型获取参数传递和全局变量引起的数据依赖关系,在调用点处根据形参和实参的对应关系,将生成的高阶函数式函数摘要中的函数参数进行相应代入;S33,利用步骤S31和步骤S32,迭代地更新程序中每个语句和变量的依赖关系集,使之达到定值,生成完整的过程间语句和变量的依赖关系。
全文数据:
权利要求:
百度查询: 南京邮电大学 一种基于高阶函数的程序间依赖关系抽取方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。