@@ 3119-3124 (lines=6) @@ | ||
3116 | } elseif ((($opCharacter == '~') || ($opCharacter == '|')) && (!$isOperandOrFunction)) { // We have to explicitly deny a tilde or pipe, because they are legal |
|
3117 | return $this->raiseFormulaError("Formula Error: Illegal character '~'"); // on the stack but not in the input expression |
|
3118 | } elseif ((isset(self::$operators[$opCharacter]) or $isOperandOrFunction) && $expectingOperator) { // Are we putting an operator on the stack? |
|
3119 | while ($stack->count() > 0 && |
|
3120 | ($o2 = $stack->last()) && |
|
3121 | isset(self::$operators[$o2['value']]) && |
|
3122 | @(self::$operatorAssociativity[$opCharacter] ? self::$operatorPrecedence[$opCharacter] < self::$operatorPrecedence[$o2['value']] : self::$operatorPrecedence[$opCharacter] <= self::$operatorPrecedence[$o2['value']])) { |
|
3123 | $output[] = $stack->pop(); // Swap operands and higher precedence operators from the stack to the output |
|
3124 | } |
|
3125 | $stack->push('Binary Operator', $opCharacter); // Finally put our current operator onto the stack |
|
3126 | ++$index; |
|
3127 | $expectingOperator = false; |
|
@@ 3360-3365 (lines=6) @@ | ||
3357 | // Cell References) then we have an INTERSECTION operator |
|
3358 | if (($expectingOperator) && (preg_match('/^' . self::CALCULATION_REGEXP_CELLREF . '.*/Ui', substr($formula, $index), $match)) && |
|
3359 | ($output[count($output) - 1]['type'] == 'Cell Reference')) { |
|
3360 | while ($stack->count() > 0 && |
|
3361 | ($o2 = $stack->last()) && |
|
3362 | isset(self::$operators[$o2['value']]) && |
|
3363 | @(self::$operatorAssociativity[$opCharacter] ? self::$operatorPrecedence[$opCharacter] < self::$operatorPrecedence[$o2['value']] : self::$operatorPrecedence[$opCharacter] <= self::$operatorPrecedence[$o2['value']])) { |
|
3364 | $output[] = $stack->pop(); // Swap operands and higher precedence operators from the stack to the output |
|
3365 | } |
|
3366 | $stack->push('Binary Operator', '|'); // Put an Intersect Operator on the stack |
|
3367 | $expectingOperator = false; |
|
3368 | } |