??ANSWER TO EXERCISE 28

This is similar to the previous exercises. One creates an attribute called crewmember and gives it to the crew objects: the orders property is

       orders
       [;  Examine:
               if (parent(noun)==0)
                   "~", (name) noun,
                       " is no longer aboard this demonstration game.~";
               "~", (name) noun, " is in ", (name) parent(noun), ".~";
           default: "The computer's only really good for locating the crew.";
       ],
and the grammar simply returns 'stc,' which is defined as
[ Crew i;
  switch(scope_stage)
  {  1: rfalse;
     2: objectloop (i has crewmember) PlaceInScope(i); rtrue;
  }
];
Verb "stc,"   * "where" "is" scope=Crew -> Examine;
An interesting point is that the scope routine doesn't need to do anything at stage 3 (usually used for printing out errors) because the normal error-message printing system is never reached. Something like "computer, where is Comminder Doto'' causes a ##NotUnderstood order.

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.