protected function selector(&$out)
    {
        $selector = [];

        for (;;) {
            if ($this->match('[>+~]+', $m)) {
                $selector[] = [$m[0]];
                continue;
            }

            if ($this->selectorSingle($part)) {
                $selector[] = $part;
                $this->match('\s+', $m);
                continue;
            }

            if ($this->match('\/[^\/]+\/', $m)) {
                $selector[] = [$m[0]];
                continue;
            }

            break;
        }

        if (count($selector) === 0) {
            return false;
        }

        $out = $selector;
        return true;
    }
protected function selector(&$out)
    {
        $selector = [];

        for (;;) {
            if ($this->match('[>+~]+', $m)) {
                $selector[] = [$m[0]];
                continue;
            }

            if ($this->selectorSingle($part)) {
                $selector[] = $part;
                $this->match('\s+', $m);
                continue;
            }

            if ($this->match('\/[^\/]+\/', $m)) {
                $selector[] = [$m[0]];
                continue;
            }

            break;
        }

        if (count($selector) === 0) {
            return false;
        }

        $out = $selector;
        return true;
    }
protected function selector ( & $ out ) { $ selector = [ ] ; for ( ; ; ) { if ( $ this -> match ( '[>+~]+' , $ m ) ) { $ selector [ ] = [ $ m [ 0 ] ] ; continue ; } if ( $ this -> selectorSingle ( $ part ) ) { $ selector [ ] = $ part ; $ this -> match ( '\s+' , $ m ) ; continue ; } if ( $ this -> match ( '\/[^\/]+\/' , $ m ) ) { $ selector [ ] = [ $ m [ 0 ] ] ; continue ; } break ; } if ( count ( $ selector ) === 0 ) { return false ; } $ out = $ selector ; return true ; }
Parse whitespace separated selector list

@param array $out

@return boolean
Parse whitespace separated selector list