Every natural language interface eventually will be required to generate a new program. For example, if you say my parser supports query like "count number of words in file X", someone would want to issue a queries like "count number of words starting with character a and at most length 3 in file X" and so on.
Natural language interfaces eventually fall on its face not because parsing is really hard but rather because after you parse, how do you generate a program on the fly to solve the user's problem.