Man Gumby, your are totally kicking ass with this parser stuff. 
I'm not going to give up until it's well understood by
everyone & documented...
If the apostrophe is simply ignored could a game distinguish "kill troll's dog" from "kill trolls dog". Would the game be able to assume possessive by the inclusion of "dog" or would it ignore the trailing dog? If the dog were of no consequence to the game, it probably would not be in the vocab, but if it is...? However, the "trollpossessive" trick might be enough for most situations, if needed.
Either input would result in the same action (killing the troll's dog). When you chain nouns together like that, the 'extra' nouns behave like adjectives (in this case 'troll'), and the dog would be the subject. Here is what the code would look like:
(if(Said('kill/dog<troll') // Will match 'kill trolls dog', 'kill troll's dog'
Print("The dog is dead")
)
// could also do this...
(if(Said('kill/dog[<troll]') // Will match same inputs as above & simply 'kill dog'
Print("The dog is dead")
)
EDIT: Oh, and the parser won't ignore an included word (except articles - they can affect the parse, but are not necessarily represented in the said string). Every word
must be represented in the said string or it will not match the user input - at least, as far as can tell.