  Program synthesis of general-purpose source code from natural language
specifications is challenging due to the need to reason about high-level
patterns in the target program and low-level implementation details at the same
time. In this work, we present PATOIS, a system that allows a neural program
synthesizer to explicitly interleave high-level and low-level reasoning at
every generation step. It accomplishes this by automatically mining common code
idioms from a given corpus, incorporating them into the underlying language for
neural synthesis, and training a tree-based neural synthesizer to use these
idioms during code generation. We evaluate PATOIS on two complex semantic
parsing datasets and show that using learned code idioms improves the
synthesizer's accuracy.
