/** * Returns the next token in the stack without shifting it off the list * * @return \vc\Tokens\Token|NULL Returns NULL if no tokens are left */ public function peekAtToken() { while ($this->inner->hasToken()) { $peek = $this->inner->peekAtToken(); if (!$peek->is($this->mask)) { return $peek; } $this->inner->popToken(); } return NULL; }
/** * Returns the next token in the stack without shifting it off the list * * @return \vc\Tokens\Token|NULL Returns NULL if no tokens are left */ public function peekAtToken() { if (!$this->active) { return NULL; } return $this->inner->peekAtToken(); }
/** * @see \vc\iface\Tokens\Search::findSkipping */ public function peekToSkipping(array $types) { while ($this->reader->hasToken()) { $token = $this->reader->peekAtToken(); $type = $token->getType(); if (in_array($type, $types)) { return $token; } $this->reader->popToken(); } }
/** * Reads the path of a namespace * * @param \vc\iface\Tokens\Reader $reader The token source to pull from * @return NULL */ public function parsePath(\vc\iface\Tokens\Reader $reader) { // Skip past any white space while ($reader->hasToken() && $reader->peekAtToken()->is(Token::T_WHITESPACE)) { $reader->popToken(); } if (!$reader->hasToken()) { throw new \vc\Tokens\Exception\UnexpectedEnd(array(Token::T_STRING, Token::T_NS_SEPARATOR)); } $reader->peekAtToken()->expect(array(Token::T_STRING, Token::T_NS_SEPARATOR)); $path = array(); while ($reader->hasToken()) { $token = $reader->peekAtToken(); if ($token->is(array(Token::T_STRING, Token::T_NS_SEPARATOR))) { $path[] = $token->getContent(); } else { break; } $reader->popToken(); } return implode('', $path); }
/** * Returns the next token in the stack without shifting it off the list * * @return \vc\Tokens\Token|NULL Returns NULL if no tokens are left */ public function peekAtToken() { return $this->inner->peekAtToken(); }