public Tree<String> buildAST( StringTokenizer st ) {
      
      // make our tree... the root is the string "root"
      //  if a node has children then it is an application
      //  if not then it is a value
      Tree<String> tree = new Tree<String>("root");
      Tree.Node<String> node = tree.getNode();
            
      
      String token = "";               // used for while loop below
      boolean advanceOnNext = true;    // used for the loop below
      
      // go through each token
      while( st.hasMoreTokens()) {
                  
         if ( advanceOnNext ) {
            token = st.nextToken().trim();
         }
         advanceOnNext = true;
         
         // if our token is a '('
         if ( token.compareTo("(") == 0 ) {
            
            // get our next token... to see if we have a lambda
            if ( st.hasMoreTokens() ) {
               token = st.nextToken().trim();
               advanceOnNext = false;
            }
            
            // it's either a lambda or an application...
            if ( token.compareTo("lambda") == 0 ) {
               node = node.addChild( new Tree<String>("lambda").getNode() );
               advanceOnNext = true;
            } else {
               node = node.addChild( new Tree<String>("@").getNode() );
            }
         }
         // end lists, apps, and lambdas
         else if ( token.compareTo(")") == 0 ) {
            node = node.getParent();
         }
         // lists
         else if ( token.compareTo("'") == 0 ) {
            
            //get our next token... to see if its '('
            if ( st.hasMoreTokens() ) {
               token = st.nextToken().trim();
               advanceOnNext = false;
               
               // if the next token is a '('
               if ( token.compareTo("(") == 0  ) {
                  node = node.addChild( new Tree<String>("'").getNode() );
                  advanceOnNext = true;
               }
            }                    
         }
         // otherwise... (ID's value's...)
         else {
            node.addChild( new Tree<String>( token ).getNode() );
         }
      }
      
      return tree;
   }