Answer to Exercise 23

| ANSWER TO EXERCISE 23
| The interesting point here is that when the `grammar` property finds the word "take'', it accepts it and has to move `verb_wordnum` on by one to signal that a word has been parsed succesfully.
    Object -> Dan "Dyslexic Dan"
      with name "dan" "dyslexic",
           grammar
           [;  if (verb_word == 'take') { verb_wordnum++; return 'drop'; }
               if (verb_word == 'drop') { verb_wordnum++; return 'take'; }
           ],
           orders
           [ i;
               Take: "~What,~ says Dan, ~ you want me to take ",
                         (the) noun, "?~";
               Drop: "~What,~ says Dan, ~ you want me to drop ",
                         (the) noun, "?~";
               Inv: "~That I can do,~ says Dan. ~I'm empty-handed.~";
               No: "~Right you be then.~";
               Yes: "~I'll be having to think about that.~";
               default: "~Don't know how,~ says Dan.";
           ],
           initial "Dyslexic Dan is here.",
      has  animate proper;

Back to the exercise in section 16

Mechanically translated to HTML from third edition as revised 16 May 1997. Copyright © Graham Nelson 1993, 1994, 1995, 1996, 1997: all rights reserved.