[发明专利]动态语言中的类型推断在审
申请号: | 202210858709.X | 申请日: | 2022-07-20 |
公开(公告)号: | CN115686467A | 公开(公告)日: | 2023-02-03 |
发明(设计)人: | I·阿卜杜勒阿齐兹;J·T·多尔比;K·斯里尼瓦斯 | 申请(专利权)人: | 国际商业机器公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/41 |
代理公司: | 北京市金杜律师事务所 11256 | 代理人: | 丁君军 |
地址: | 美国纽*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 动态 语言 中的 类型 推断 | ||
1.一种用于改进使用动态编程语言对计算机进行编程的技术过程的方法,包括:
通过对动态编程语言中的文档库执行信息检索,生成训练数据的第一部分,所述训练数据的第一部分将所述动态编程语言中的类型映射到所述动态编程语言中的对应的函数和方法;
在所述训练数据的第一部分上训练神经网络,以推断所述动态编程语言中的未知类型;
通过基于所述对应的函数和方法的存在来推断所述未知类型,用经训练的所述神经网络执行推断,以推断针对以所述动态编程语言编写的代码的样本中的程序变量的所述未知类型;以及
基于经推断的所述未知类型来促进所述动态编程语言中的编程。
2.根据权利要求1所述的方法,还包括:
通过对以所述动态编程语言编写的多个预先存在的程序执行数据流分析,生成训练数据的第二部分,所述训练数据的第二部分将所述动态编程语言中的所述程序变量映射到所述动态编程语言中的所述对应的函数和方法;以及
对所述训练数据的第一部分和所述训练数据的第二部分执行联合操作,以获得组合训练数据;
其中所述神经网络的所述训练包括在所述组合训练数据上进行训练以推断所述动态编程语言中的所述未知类型,还包括基于所述程序变量映射来减少在所述推断期间要搜索的所述类型的数目。
3.根据权利要求2所述的方法,还包括执行所述程序。
4.根据权利要求2所述的方法,其中执行所述信息检索包括:
对于所述文档库中的模块集合中的每个给定模块:
收集在所述给定模块中声明的那些所述功能和所述方法;
对于所收集的所述方法中的每个方法:
收集对应的类并且获取对应的文档字符串;
将所述对应的文档字符串中的每个文档字符串解析为包括类返回值的重组文本;
对于所收集所述的函数和所收集的所述方法中的每一个:
将所述对应的文档字符串中的每个文档字符串解析成还包括函数返回值的重组文本;
为所述函数和方法中的每一个创建文档;以及
在索引中对所述文档中的每个文档进行索引;
对于所述类中的所有给定类:
在所述索引中搜索对应于所述类中的给定类的所述文档中的所有文档;以及
将所述文档中的每个文档分配给对应的函数或方法和类型,以获得所述动态编程语言中的所述类型到所述对应的函数和方法的所述映射。
5.根据权利要求2所述的方法,其中:
对以所述动态编程语言编写的所述多个预先存在的程序执行所述数据流分析包括:
假定对导入库的任何调用返回未知类型的新对象,对所述程序中的每个程序应用静态分析;
标识对所述未知类型的新对象的后续方法调用;
确定对所述未知类型的新对象调用的所有方法的联合;
对于所述调用中的每个调用,标识对应的函数;
创建跨所述对应的函数上的所述程序中的所有程序的所有方法的联合;
标识包含针对所述对应的函数的所述所有方法的联合中的所有方法的那些所述类;以及
将所述对应的函数映射到所标识的所述类;以及
用经训练的所述神经网络执行所述推断,以推断所述未知类型包括应用所述映射。
6.根据权利要求2所述的方法,其中生成所述训练数据的第一部分和所述训练数据的所述第二部分是无监督的。
7.一种计算机程序产品,包括体现计算机可执行指令的一个或多个计算机可读存储介质,所述计算机可执行指令在由计算机执行时使所述计算机执行一种方法,所述方法改进使用动态编程语言对所述计算机进行编程的技术过程,所述方法包括权利要求1至6中的权利要求中的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210858709.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种物料的抓取方法
- 下一篇:半导体工艺用抛光组合物以及半导体器件的制备方法