private String searchExpression() {
   FuncSymbol func;
   boolean flag = true;
   String expString = tokens[tIndex];
   String tempStr = "";
   tIndex++;
   if (tokens[tIndex].equalsIgnoreCase("from")) tokens[tIndex] = "equal to";
   flag = false;
   while (true) {
     if ((tempStr = searchOperator(tIndex)) != null) {
       if (!tempStr.equalsIgnoreCase("plus plus") && !tempStr.equalsIgnoreCase("minus minus"))
         flag = true;
       expString =
           " " + tempStr; // Note: tIndex automatically incremented by searchOperator() method
     } else if (Controller.varSym.searchSymbol(tokens[tIndex])
         != null /*|| TODO Check whether next token is number */) {
       if (flag == true) {
         flag = false;
         expString += " " + tokens[tIndex];
         tIndex++;
       } else break;
     } else if ((func = Controller.funSym.searchSymbol(tokens[tIndex])) != null) {
       if (func.getParam().length == 0) {
         expString += (" " + tokens[tIndex]);
         flag = false;
         tIndex++;
       } else {
         int counter = 0;
         int index = tIndex + 1;
         VarSymbol var = null;
         expString += (" " + tokens[index] + " of");
         while (counter < func.getParam().length && index < tokens.length) {
           if ((var = Controller.varSym.searchSymbol(tokens[index])) != null) {
             if (func.getParam()[counter].equals(var.getDataType())) {
               counter++;
               expString += (" " + tokens[index]);
             }
           }
           index++;
         }
         if (index == tokens.length) {
           // Error
         } else tIndex = index;
       }
     }
     // else
     // break;
   }
   return expString;
 }