2 个月前

SPoC:基于搜索的伪代码到代码转换

Sumith Kulal; Panupong Pasupat; Kartik Chandra; Mina Lee; Oded Padon; Alex Aiken; Percy Liang
SPoC:基于搜索的伪代码到代码转换
摘要

我们研究了将伪代码映射到功能正确的长程序的任务。给定测试用例作为验证程序的机制,我们在伪代码可能的翻译空间中进行搜索,以找到能够通过验证的程序。然而,如果没有适当的归因方法来定位程序失败的原因,很难引导搜索方向朝向更有希望的程序。为此,我们提出基于编译错误信号进行归因的方法,因为编译错误占所有程序失败的88.7%。具体而言,我们将每行伪代码的翻译视为程序的一个离散部分,每当合成的程序无法编译时,一种错误定位方法会尝试识别导致失败的程序部分。随后,我们集中对这些部分的伪代码进行替代翻译的搜索。为了评估该方法,我们收集了SPoC数据集(基于搜索的伪代码到代码转换),其中包含18,356个带有由人类编写伪代码和测试用例的程序。在100次程序编译预算下,执行搜索将合成成功率从仅使用伪代码的最佳单一翻译时的25.6%提高到了44.7%。