parsing the entire expression works in general case