  A significant amount of information in today's world is stored in structured
and semi-structured knowledge bases. Efficient and simple methods to query them
are essential and must not be restricted to only those who have expertise in
formal query languages. The field of semantic parsing deals with converting
natural language utterances to logical forms that can be easily executed on a
knowledge base. In this survey, we examine the various components of a semantic
parsing system and discuss prominent work ranging from the initial rule based
methods to the current neural approaches to program synthesis. We also discuss
methods that operate using varying levels of supervision and highlight the key
challenges involved in the learning of such systems.
