In this paper, we leverage low-level compiler intermediate representations (IR) to improve code translation. Traditional transpilers rely on syntactic information and handcrafted rules, which limits their applicability and produces unnatural-looking code. Applying neural machine translation (NMT) approaches to code has successfully broadened the set of programs on which one can get a natural-looking translation. However, they treat the code as sequences of text tokens, and still do not differentiate well enough between similar pieces of code which have different semantics in different languages. The consequence is low quality translation, reducing the practicality of NMT, and stressing the need for an approach significantly increasing its accuracy. Here we propose to augment code translation with IRs, specifically LLVM IR, with results on the C++, Java, Rust, and Go languages. Our method improves upon the state of the art for unsupervised code translation, increasing the number of correct translations by 11% on average, and up to 79% for the Java -> Rust pair with greedy decoding. With beam search, it increases the number of correct translations by 5.5% in average. We extend previous test sets for code translation, by adding hundreds of Go and Rust functions. Additionally, we train models with high performance on the problem of IR decompilation, generating programming source code from IR, and study using IRs as intermediary pivot for translation.


翻译:在本文中,我们利用底层编译器中间表示(IR)来改善代码翻译。传统的翻译器依赖于语法信息和手工制定的规则,这限制了它们的适用性并产生了不自然的代码。将神经机器翻译(NMT)方法应用于代码已成功地扩展了可以得到自然翻译的程序集。然而,它们将代码视为文本标记的序列,仍不能很好地区分在不同语言中具有不同语义的类似代码的差异。其结果是翻译的质量较低,降低了NMT的实用性,并强调了需要显着提高其准确性的方法。在这里,我们建议利用IR(特别是LLVM IR)增强代码翻译,针对C ++,Java,Rust和Go语言的结果。我们的方法改进了无监督代码翻译的现状,平均提高了11%的正确翻译数量,并在Java-> Rust对中提高了最多79%的贪婪解码。使用波束搜索,平均提高了5.5%的正确翻译率。我们通过添加数百个Go和Rust函数,扩展了先前的代码翻译测试集。此外,我们还训练了具有高性能的模型来解决IR反汇编的问题,从IR生成编程源代码,并研究使用IR作为翻译中间枢纽。

0
下载
关闭预览

相关内容

信息检索杂志(IR)为信息检索的广泛领域中的理论、算法分析和实验的发布提供了一个国际论坛。感兴趣的主题包括对应用程序(例如Web,社交和流媒体,推荐系统和文本档案)的搜索、索引、分析和评估。这包括对搜索中人为因素的研究、桥接人工智能和信息检索以及特定领域的搜索应用程序。 官网地址:https://dblp.uni-trier.de/db/journals/ir/
专知会员服务
60+阅读 · 2020年3月19日
【哈佛大学商学院课程Fall 2019】机器学习可解释性
专知会员服务
103+阅读 · 2019年10月9日
RoBERTa中文预训练模型:RoBERTa for Chinese
PaperWeekly
57+阅读 · 2019年9月16日
Hierarchically Structured Meta-learning
CreateAMind
26+阅读 · 2019年5月22日
disentangled-representation-papers
CreateAMind
26+阅读 · 2018年9月12日
Capsule Networks解析
机器学习研究会
11+阅读 · 2017年11月12日
【论文】图上的表示学习综述
机器学习研究会
14+阅读 · 2017年9月24日
国家自然科学基金
1+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
5+阅读 · 2011年12月31日
国家自然科学基金
2+阅读 · 2010年12月31日
Arxiv
19+阅读 · 2020年7月21日
Arxiv
19+阅读 · 2019年4月5日
Arxiv
27+阅读 · 2018年4月12日
VIP会员
相关基金
国家自然科学基金
1+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
5+阅读 · 2011年12月31日
国家自然科学基金
2+阅读 · 2010年12月31日
Top
微信扫码咨询专知VIP会员