private static function strToTokens($str) { // Multi-pass segmentation $node = new Token(ExpType::$RAW, $str); $tokenStream = array($node); $tokenStream = ExpLexer::divideString($tokenStream); $tokenStream = ExpLexer::divideBlank($tokenStream); $tokenStream = ExpLexer::divideKey($tokenStream, ExpLexer::$FUNCTION_PATTERN, 'functionHandler'); $tokenStream = ExpLexer::divideKey($tokenStream, ExpLexer::$TERNARY_PATTERN, 'ternaryHandler'); $tokenStream = ExpLexer::divideKey($tokenStream, ExpLexer::$PAREN_PATTERN, 'parenHandler'); $tokenStream = ExpLexer::divideKey($tokenStream, ExpLexer::$COMMA_PATTERN, 'commaHandler'); $tokenStream = ExpLexer::divideKey($tokenStream, ExpLexer::$OPERATOR_PATTERN, 'operatorHandler'); $tokenStream = ExpLexer::divideFloating($tokenStream); $tokenStream = ExpLexer::divideKey($tokenStream, ExpLexer::$OPERATOR_PATTERN2, 'operatorHandler2'); $tokenStream = ExpLexer::divideDot($tokenStream); ExpLexer::distinguishOperator($tokenStream); return $tokenStream; }