public function convertToPostfix()
 {
     require_once "operator.php";
     require_once "operand.php";
     if (!$this->validateInfix()) {
         throw new Exception("Infix equation invalid.");
         return false;
     }
     if (isset($postfix)) {
         throw new Exception("Postfix already calculated");
         return false;
     }
     $postfix = array();
     $infixArray = explode(' ', $this->infix);
     $operatorStack = array();
     //Used as a LIFO stack for the operators
     for ($i = 0; $i < count($infixArray); $i++) {
         //Iterate through each element of the infix equation
         $value = $infixArray[$i];
         if (preg_match("/\\[[A-Za-z0-9]+\\]/", $value)) {
             $postfix[] = new Variable($value);
         } else {
             if (preg_match("/[0-9]+/", $value)) {
                 $postfix[] = new Number($value);
             } else {
                 $operator = Operator::getOperator($value);
                 if ($operator === false) {
                     throw new Exception("Operation is invalid.");
                     return false;
                 }
                 if (count($operatorStack) == 0 || !end($operatorStack) instanceof Operator && end($operatorStack) == LEFT_PARENTHESIS) {
                     $operatorStack[] = $operator;
                 } else {
                     if (!$operator instanceof Operator && $operator == LEFT_PARENTHESIS) {
                         $operatorStack[] = $operator;
                     } else {
                         if (!$operator instanceof Operator && $operator == RIGHT_PARENTHESIS) {
                             $currentOperator;
                             do {
                                 $currentOperator = array_pop($operatorStack);
                                 $postfix[] = $currentOperator;
                             } while (!$currentOperator instanceof Operator && $currentOperator != LEFT_PARENTHESIS);
                             array_pop($operatorStack);
                         } else {
                             if ($operator->getPrecedence() > end($operatorStack)->getPrecedence()) {
                                 $operatorStack[] = $operator;
                             } else {
                                 if ($operator->getPrecedence() == end($operatorStack)->getPrecedence()) {
                                     $postfix[] = array_pop($operatorStack);
                                     $operatorStack[] = $operator;
                                 } else {
                                     if ($operator->getPrecedence() < end($operatorStack)->getPrecedence()) {
                                         $postfix[] = array_pop($operatorStack);
                                     } else {
                                         throw new Exception("Invalid operation.");
                                         return false;
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     while (count($operatorStack) > 0) {
         $postfix[] = array_pop($operatorStack);
     }
     $this->postfix = $postfix;
 }
Esempio n. 2
0
 if ($uflag == false && $pflag == false) {
     // Mounting sql statement
     $sql = "SELECT * FROM User WHERE userId='{$name}' ";
     if (!$operatorLogged) {
         $sql .= " AND password = OLD_PASSWORD('{$pwd}')";
     }
     $dbusercat->query($sql);
     $count = $dbusercat->numRows();
     if ($count == 0) {
         $aflag = true;
         $_SESSION['userTry'] += 1;
         $mensagemErro = "<font color=red><b>Usuário e/ou senha incorretos.</b></font>";
     }
     if ($operatorLogged) {
         $objOp = new Operator($dbcat);
         if (!$objOp->getOperator($operator, $pwd)) {
             $aflag = true;
             $_SESSION['userTry'] += 1;
         }
     }
     if (!$aflag) {
         $oflag = true;
         $row_array = $dbusercat->fetchRow();
         $dbusercat->freeResult();
         if (isset($_SESSION['userLang'])) {
             $lang = $_SESSION['userLang'];
         }
         if ($userLogged) {
             $_SESSION = array();
             session_destroy();
             session_regenerate_id();