If `parse_name' returns -1, the parser should set wn (the word number
variable) back to the start of the noun before trying the usual matching
algorithm. Unfortunately, it doesn't. This is a bug.
I guess that the right fix is to insert the line marked (*) in the
appropriate place in TryGivenObject (around line 2760):
if (k==0) jump NoWordsMatch;
wn = j; ! (*)
}
-- Gareth Rees