GramTrans:代码生成中更优代码表示方法
软件工程
2025-10-06 v1
摘要
代码生成在辅助软件开发方面取得了显著进展。然而,如何选择代码表示方式以影响模型性能,仍是一个未被充分探索的根本问题。现有研究采用多种表示方式,如将代码视为纯文本、语法规则序列或语法树序列,但缺乏对解析难度与模型效果之间关系的原则性理解。本文提出一种猜想:代码表示越易解析,模型性能越好。我们利用语法类别对此思想进行形式化,其中更简单类别(如 LL(1))中的表示更易解析。通过在基于 Python 的领域特定语言(DSL)上进行控制实验,证明解析难度与模型性能强相关。基于此发现,本文提出 GramTrans,一种通用的将上下文无关语言自动转换为 LL(1) 类表示的方法。GramTrans 引入一种新颖的层次化冲突消除算法,实现了语法简单性与标记效率之间的灵活权衡。在 Python 和 Java 上使用三个代码生成模型(StarCoder 1B、DeepSeek-Coder 1.3B 和 Qwen2.5 1.5B)进行评估。实验表明,GramTrans 在多个基准测试中 consistently 优于基线表示。此外,我们对现有表示方法的分析再次确认了解析难度与模型性能之间的强烈一致性,为该猜想提供了额外支持。
引用
@article{arxiv.2510.02887,
title = {GramTrans: A Better Code Representation Approach in Code Generation},
author = {Zhao Zhang and Qingyuan Liang and Zeyu Sun and Yizhou Chen and Guoqing Wang and Yican Sun and Lu Zhang and Ge Li and Yingfei Xiong},
journal= {arXiv preprint arXiv:2510.02887},
year = {2025}
}