大型语言模型(Large Language Models, LLMs)已深刻改变了代码相关任务的实现方式。然而,大多数代码 LLM 忽视了编程语言中的结构性模式。本文围绕具备代码结构感知能力的 LLM展开研究,提出了多种新颖的方法、基准测试和预训练策略,表明显式的结构建模能显著提升 LLM 的编程能力。 首先,我们提出 ADELT,一种可将代码结构转换与 API 关键字翻译解耦的转译器(transpiler)。ADELT 在无需平行语料的条件下实现了最先进的跨语言代码转译效果,展示了结构感知的重要性。 为了严格评估模型的结构理解能力,我们构建了 SAFIM,一个面向语法感知填充(Syntax-Aware Fill-in-the-Middle, FIM)任务的基准数据集。我们对15个主流 LLM 进行了评测,挑战了“大模型 = 高性能”的观点,强调预训练策略与数据质量的重要性。SAFIM 有望成为该领域未来研究的基础工具。 随后,我们提出了两种结构感知的预训练范式。AST-T5 将抽象语法树(AST)集成进 T5 风格的编码器-解码器模型,在代码修复和转译任务中表现优于现有基线方法。而针对仅解码架构,我们提出 AST-FIM,通过 AST 引导的掩码机制更好地平衡了填充任务(FIM)与从左至右(Left-to-Right, L2R)生成之间的权衡,在保持 L2R 能力的同时,在代码补全任务上显著优于传统方法。 综上所述,我们证明了代码结构感知能够增强 LLM 在代码生成、理解与转换方面的能力。本文的贡献涵盖转译框架、评测基准与预训练技术,构建了一条将代码结构整合进 LLM 的研究路径图。