A Grammar-Based Structural CNN Decoder for Code Generation

Abstract

Code generation maps a program description to executable source code in a programming language. Existing approaches mainly rely on a recurrent neural network (RNN) as the decoder. However, we find that a program contains significantly more tokens than a natural language sentence, and thus it may be inappropriate for RNN to capture such a long sequence. In this paper, we propose a grammar-based structural convolutional neural network (CNN) for code generation. Our model generates a program by predicting the grammar rules of the programming language; we design several CNN modules, including the tree-based convolution and pre-order convolution, whose information is further aggregated by dedicated attentive pooling layers. Experimental results on the HearthStone benchmark dataset show that our CNN code generator significantly outperforms the previous state-of-the-art method by 5 percentage points; additional experiments on several semantic parsing tasks demonstrate the robustness of our model. We also conduct in-depth ablation test to better understand each component of our model.

Cite

Text

Sun et al. "A Grammar-Based Structural CNN Decoder for Code Generation." AAAI Conference on Artificial Intelligence, 2019. doi:10.1609/AAAI.V33I01.33017055

Markdown

[Sun et al. "A Grammar-Based Structural CNN Decoder for Code Generation." AAAI Conference on Artificial Intelligence, 2019.](https://mlanthology.org/aaai/2019/sun2019aaai-grammar/) doi:10.1609/AAAI.V33I01.33017055

BibTeX

@inproceedings{sun2019aaai-grammar,
  title     = {{A Grammar-Based Structural CNN Decoder for Code Generation}},
  author    = {Sun, Zeyu and Zhu, Qihao and Mou, Lili and Xiong, Yingfei and Li, Ge and Zhang, Lu},
  booktitle = {AAAI Conference on Artificial Intelligence},
  year      = {2019},
  pages     = {7055-7062},
  doi       = {10.1609/AAAI.V33I01.33017055},
  url       = {https://mlanthology.org/aaai/2019/sun2019aaai-grammar/}
}