1. A method for translating natural language descriptions to programs in a domain-specific language for spreadsheet documents, the method comprising: generating a model of a spreadsheet document generated by a spreadsheet program, comprising a column description for each column, and one or more types associated with each column; identifying phrases in the natural language description that match with a column name or a data value in a column based on the model; generating a normalized description for the original description based on the identified phrases; generating a plurality of programs in an underlying domain-specific language from the normalized description by applying a combination of rule-driven translation and type-based program synthesis; and ranking the generated programs in an order that reflects their likelihood.