Glass-Box Program Synthesis: A Machine Learning Approach