private static function getToken() { self::eatWhite(); self::$token = false; foreach (self::$tokens as $token => $regex) { if (preg_match("/^{$regex}/i", self::$filter, $matches)) { self::$filter = substr(self::$filter, strlen($matches[0])); self::$lookahead = $token; self::$token = $matches[0]; break; } } if (self::$token === false && strlen(self::$filter) > 0) { throw new Exception("Unexpected character [" . self::$filter[0] . "] begining " . self::$filter . "."); } }