private function parseOperatorToken($firstChar) { $offset = $this->pos; $len = 1; $symbol = ""; $lastValid = null; $symbol .= $firstChar; while (!$this->isEndOfExpression($offset + $len) && Operator::isAllowedOperatorChar($this->expression[$offset + $len])) { $symbol .= $this->expression[$offset + $len++]; } while (strlen($symbol) > 0) { $op = $this->getOperator($symbol); if ($op == null) { $symbol = substr($symbol, 0, strlen($symbol) - 1); } else { $lastValid = $op; break; } } $this->pos += strlen($symbol); $this->lastToken = new OperatorToken($lastValid); return $this->lastToken; }
private function checkOperatorSymbol($op) { $name = $op->getSymbol(); foreach (str_split($name) as $ch) { if (!Operator::isAllowedOperatorChar($ch)) { throw new ExpressionException("The operator symbol '" . $name . "' is invalid"); } } }