Understanding natural language using a variable grammar