1 Introduction
  
  A text adventure is a kind of computer game that relies entirely on text. The computer describes 
  an imaginary location and situation, the player types English-like commands saying what he or she 
  wants to do, and the computer describes the results. Think of those pen-and-paper role playing games 
  with the twenty-sided dice: text adventures are sort of like those, with the computer taking the 
  part of the Game Master. Most computer adventure games dispense with the elaborate dice-rolling 
  combat systems of the paper games, though; the emphasis is usually on puzzles, story, and 
  characters, instead of on combat and magic. 
  
  For example :

    Lumber Yard
    This is a huge room lined with metal shelves. There are exits to the east, northeast, and west.
    There is a small cardboard box here. Piled on one of the shelves is a supply of lumber.

    >TAKE BOX AND LUMBER
    small cardboard box: Taken.
    supply of lumber: Taken.

    >INVENTORY
    You are carrying:
     a lamp (providing light)
     a glass jar
     The glass jar contains:
       a quantity of pomegranate juice
     a jeweled monkey wrench
     a dart gun
     a small cardboard box
     a supply of lumber

    >DROP GUN
    Dropped.

    >TAKE BANANA
    There is no such thing here.

2 Assignment

  The purpose of this assignment is to write a command parser this is able to process
  commands associated with taking and dropping objects. All other commands (like moving or
  looking at things) are out of scope for this assignment and should return a 'do not
  understand' response.
  
  Taking an object means moving an object from the 'room' to the inventory (or sack) of 
  the player (the adventurer). Droping an object means moving an object from the inventory 
  of the player to the room. 
  
  A simple example of a command for taking an object is : 
  > TAKE BANANA

  The player however expects to be able to enter more sophisticated commands like :
  > TAKE ALL
  > TAKE ALL BUT BANANA
  > TAKE BOTH BANANA AND WARHEAD
  
  For your convinience, all the possible responses and the special words for this
  assignment have been specified in the Adventurer interface. 
  
  Your parser should take the following special word groups into account :
  TAKEWORDS : Words indicating the user wants to take at least one object.
  DROPWORDS : Words indicating the user wants to drop at least one object.
  ALLWORDS  : Words indicating the user wants to take or drop everything.
  BUTWORDS  : Words indicating the user wants exclude something (for use with ALL only)
  ANDWORDS  : Words indicating the user wants to take or drop at least 2 objects.
  
  Possible responses are :
  RESPONSE_OK : Everything went ok.
  RESPONSE_NOTHERE : An object specified was not available.
  RESPONSE_NOTUNDERSTAND : The command is not a TAKE or DROP command.
  
  Of course the command should also actually move the objects from the room to the players 
  sack (take) and vice versa (drop).
  
3 Example 

  See the example transcript above. 
  
4 Tips

  - Taking and Dropping is the same operation, only the source and target are different.
  - Make use of the convinience methods already implemented for you.
  - The goal of this case is to provide a satisfactory user experience, not to
    write a full blown standards compliant parser (in that case we would use lexx/bison :-)
  
