1. A method of utilizing and modifying a grammar in a semantic parser, the method comprising: identifying a set of surface semantic non-terminals from user input from a first user using a context-free grammar; using a language-independent semantic description language grammar that is separate from the context-free grammar and that describes relationships between semantic non-terminals to identify a semantic parse based in part on the identified semantic non-terminals; and changing the semantic description language grammar based on a change in users from the first user to a second user.