public function CssScanner::nextToken in QueryPath 7.3
Same name and namespace in other branches
- 6 QueryPath/CssParser.php \CssScanner::nextToken()
- 7.2 QueryPath/CssParser.php \CssScanner::nextToken()
2 calls to CssScanner::nextToken()
- CssScanner::getNameString in QueryPath/
CssParser.php - CssScanner::getQuotedString in QueryPath/
CssParser.php
File
- QueryPath/
CssParser.php, line 551
Class
Code
public function nextToken() {
$tok = -1;
++$this->it;
if ($this->is
->isEmpty()) {
if ($this->recurse) {
throw new Exception("Recursion error detected at iteration " . $this->it . '.');
exit;
}
$this->recurse = TRUE;
$this->token = FALSE;
return FALSE;
}
$ch = $this->is
->consume();
if (ctype_space($ch)) {
$this->value = ' ';
$this->token = $tok = CssToken::white;
return $tok;
}
if (ctype_alnum($ch) || $ch == '-' || $ch == '_') {
$this->value = $ch;
$this->token = $tok = CssToken::char;
return $tok;
}
$this->value = $ch;
switch ($ch) {
case '*':
$tok = CssToken::star;
break;
case chr(ord('>')):
$tok = CssToken::rangle;
break;
case '.':
$tok = CssToken::dot;
break;
case '#':
$tok = CssToken::octo;
break;
case '[':
$tok = CssToken::lsquare;
break;
case ']':
$tok = CssToken::rsquare;
break;
case ':':
$tok = CssToken::colon;
break;
case '(':
$tok = CssToken::lparen;
break;
case ')':
$tok = CssToken::rparen;
break;
case '+':
$tok = CssToken::plus;
break;
case '~':
$tok = CssToken::tilde;
break;
case '=':
$tok = CssToken::eq;
break;
case '|':
$tok = CssToken::pipe;
break;
case ',':
$tok = CssToken::comma;
break;
case chr(34):
$tok = CssToken::quote;
break;
case "'":
$tok = CssToken::squote;
break;
case '\\':
$tok = CssToken::bslash;
break;
case '^':
$tok = CssToken::carat;
break;
case '$':
$tok = CssToken::dollar;
break;
case '@':
$tok = CssToken::at;
break;
}
if ($tok == -1) {
$ord = ord($ch);
if ($ord >= 32 && $ord <= 126 || $ord >= 128 && $ord <= 255) {
$tok = CssToken::stringLegal;
}
else {
throw new Exception('Illegal character found in stream: ' . $ord);
}
}
$this->token = $tok;
return $tok;
}