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; }