PhpCss\Parser\Sequence::parse PHP Method

parse() public method

Parse the token stream for a simple selector sequence, after the first element the typeselector is not allowed any more, but a combinator is possible.
public parse ( )
    public function parse()
    {
        $sequence = new Ast\Selector\Sequence();
        $token = $this->lookahead(array(Scanner\Token::IDENTIFIER, Scanner\Token::ID_SELECTOR, Scanner\Token::CLASS_SELECTOR, Scanner\Token::PSEUDO_CLASS, Scanner\Token::PSEUDO_ELEMENT, Scanner\Token::ATTRIBUTE_SELECTOR_START, Scanner\Token::COMBINATOR));
        while (isset($token)) {
            if ($selector = $this->createSelector($token)) {
                $this->read($token->type);
                $sequence->simples[] = $selector;
            }
            switch ($token->type) {
                case Scanner\Token::SEPARATOR:
                    $this->read(Scanner\Token::SEPARATOR);
                    return $sequence;
                case Scanner\Token::PSEUDO_CLASS:
                    $sequence->simples[] = $this->delegate(PseudoClass::CLASS);
                    break;
                case Scanner\Token::PSEUDO_ELEMENT:
                    $sequence->simples[] = $this->createPseudoElement($token);
                    $this->read($token->type);
                    break;
                case Scanner\Token::ATTRIBUTE_SELECTOR_START:
                    $this->read($token->type);
                    $sequence->simples[] = $this->delegate(Attribute::CLASS);
                    break;
                case Scanner\Token::COMBINATOR:
                case Scanner\Token::WHITESPACE:
                    $this->read($token->type);
                    $subSequence = $this->delegate(get_class($this));
                    /**
                     * @var Ast\Selector\Sequence $subSequence
                     */
                    $sequence->combinator = $this->createCombinator($token, $subSequence);
                    return $sequence;
            }
            if ($this->endOfTokens()) {
                $token = NULL;
                continue;
            }
            $token = $this->lookahead(array(Scanner\Token::ID_SELECTOR, Scanner\Token::CLASS_SELECTOR, Scanner\Token::PSEUDO_CLASS, Scanner\Token::PSEUDO_ELEMENT, Scanner\Token::ATTRIBUTE_SELECTOR_START, Scanner\Token::COMBINATOR, Scanner\Token::WHITESPACE, Scanner\Token::SEPARATOR));
        }
        return $sequence;
    }