private function E() { $this->P(); while (($node = $this->next()) && $node instanceof Operator) { // Special case: post T_INC and T_DEC if ($node->type == T_INC || $node->type == T_DEC) { $this->consume(); $operand = array_pop($this->operands); $this->operands[] = OperatorFactory::createPostfixOperatorNode($operand, $node, $this->filename); } elseif ($node->type === '?' || $node->hasBinaryMode) { $this->pushOperator($node, Operator::MODE_BINARY); $this->consume(); $this->P(); } else { throw new ParserException($this->filename, $node->getLineNumber(), $node->getColumnNumber(), "invalid expression"); } } while (self::arrayLast($this->operators) !== $this->sentinel) { $this->popOperator(); } }