@@ 3147-3152 (lines=6) @@ | ||
3144 | } elseif ((($opCharacter == '~') || ($opCharacter == '|')) && (!$isOperandOrFunction)) { // We have to explicitly deny a tilde or pipe, because they are legal |
|
3145 | return $this->raiseFormulaError("Formula Error: Illegal character '~'"); // on the stack but not in the input expression |
|
3146 | } elseif ((isset(self::$operators[$opCharacter]) or $isOperandOrFunction) && $expectingOperator) { // Are we putting an operator on the stack? |
|
3147 | while ($stack->count() > 0 && |
|
3148 | ($o2 = $stack->last()) && |
|
3149 | isset(self::$operators[$o2['value']]) && |
|
3150 | @(self::$operatorAssociativity[$opCharacter] ? self::$operatorPrecedence[$opCharacter] < self::$operatorPrecedence[$o2['value']] : self::$operatorPrecedence[$opCharacter] <= self::$operatorPrecedence[$o2['value']])) { |
|
3151 | $output[] = $stack->pop(); // Swap operands and higher precedence operators from the stack to the output |
|
3152 | } |
|
3153 | $stack->push('Binary Operator', $opCharacter); // Finally put our current operator onto the stack |
|
3154 | ++$index; |
|
3155 | $expectingOperator = false; |
|
@@ 3385-3390 (lines=6) @@ | ||
3382 | // Cell References) then we have an INTERSECTION operator |
|
3383 | if (($expectingOperator) && (preg_match('/^' . self::CALCULATION_REGEXP_CELLREF . '.*/Ui', substr($formula, $index), $match)) && |
|
3384 | ($output[count($output) - 1]['type'] == 'Cell Reference')) { |
|
3385 | while ($stack->count() > 0 && |
|
3386 | ($o2 = $stack->last()) && |
|
3387 | isset(self::$operators[$o2['value']]) && |
|
3388 | @(self::$operatorAssociativity[$opCharacter] ? self::$operatorPrecedence[$opCharacter] < self::$operatorPrecedence[$o2['value']] : self::$operatorPrecedence[$opCharacter] <= self::$operatorPrecedence[$o2['value']])) { |
|
3389 | $output[] = $stack->pop(); // Swap operands and higher precedence operators from the stack to the output |
|
3390 | } |
|
3391 | $stack->push('Binary Operator', '|'); // Put an Intersect Operator on the stack |
|
3392 | $expectingOperator = false; |
|
3393 | } |