예제 #1
0
 /**
  * @param Operator $oCurrentOperator
  */
 protected function _processOperatorToken(Operator $oCurrentOperator)
 {
     for ($i = 0; $i < $this->_operator_stack->getOperatorCount(); $i++) {
         $iTopPrecedence = $this->_operator_stack->getTopOperatorPrecedence();
         if ($oCurrentOperator->isLeftAssociative() && $oCurrentOperator->getPrecendence() <= $iTopPrecedence) {
             $this->_moveTopOperatorToOutput();
         } elseif ($oCurrentOperator->isRightAssociative() && $oCurrentOperator->getPrecendence() < $iTopPrecedence) {
             $this->_moveTopOperatorToOutput();
         }
     }
     $this->_operator_stack->enqueue($oCurrentOperator);
 }