public function parseSymbol()
    {
        $token = $this->str[$this->last];
        if (! ($flags = Context::isSymbol($token))) {
            return null;
        }

        if ($flags & Token::FLAG_SYMBOL_VARIABLE) {
            if ($this->last + 1 < $this->len && $this->str[++$this->last] === '@') {
                // This is a system variable (e.g. `@@hostname`).
                $token .= $this->str[$this->last++];
                $flags |= Token::FLAG_SYMBOL_SYSTEM;
            }
        } elseif ($flags & Token::FLAG_SYMBOL_PARAMETER) {
            if ($this->last + 1 < $this->len) {
                ++$this->last;
            }
        } else {
            $token = '';
        }

        $str = null;

        if ($this->last < $this->len) {
            if (($str = $this->parseString('`')) === null) {
                if (($str = $this->parseUnknown()) === null) {
                    $this->error(
                        'Variable name was expected.',
                        $this->str[$this->last],
                        $this->last
                    );
                }
            }
        }

        if ($str !== null) {
            $token .= $str->token;
        }

        return new Token($token, Token::TYPE_SYMBOL, $flags);
    }
public function parseSymbol()
    {
        $token = $this->str[$this->last];
        if (! ($flags = Context::isSymbol($token))) {
            return null;
        }

        if ($flags & Token::FLAG_SYMBOL_VARIABLE) {
            if ($this->last + 1 < $this->len && $this->str[++$this->last] === '@') {
                // This is a system variable (e.g. `@@hostname`).
                $token .= $this->str[$this->last++];
                $flags |= Token::FLAG_SYMBOL_SYSTEM;
            }
        } elseif ($flags & Token::FLAG_SYMBOL_PARAMETER) {
            if ($this->last + 1 < $this->len) {
                ++$this->last;
            }
        } else {
            $token = '';
        }

        $str = null;

        if ($this->last < $this->len) {
            if (($str = $this->parseString('`')) === null) {
                if (($str = $this->parseUnknown()) === null) {
                    $this->error(
                        'Variable name was expected.',
                        $this->str[$this->last],
                        $this->last
                    );
                }
            }
        }

        if ($str !== null) {
            $token .= $str->token;
        }

        return new Token($token, Token::TYPE_SYMBOL, $flags);
    }
public function parseSymbol ( ) { $ token = $ this -> str [ $ this -> last ] ; if ( ! ( $ flags = Context :: isSymbol ( $ token ) ) ) { return null ; } if ( $ flags & Token :: FLAG_SYMBOL_VARIABLE ) { if ( $ this -> last + 1 < $ this -> len && $ this -> str [ ++ $ this -> last ] === '@' ) { // This is a system variable (e.g. `@@hostname`). $ token .= $ this -> str [ $ this -> last ++ ] ; $ flags |= Token :: FLAG_SYMBOL_SYSTEM ; } } elseif ( $ flags & Token :: FLAG_SYMBOL_PARAMETER ) { if ( $ this -> last + 1 < $ this -> len ) { ++ $ this -> last ; } } else { $ token = '' ; } $ str = null ; if ( $ this -> last < $ this -> len ) { if ( ( $ str = $ this -> parseString ( '`' ) ) === null ) { if ( ( $ str = $ this -> parseUnknown ( ) ) === null ) { $ this -> error ( 'Variable name was expected.' , $ this -> str [ $ this -> last ] , $ this -> last ) ; } } } if ( $ str !== null ) { $ token .= $ str -> token ; } return new Token ( $ token , Token :: TYPE_SYMBOL , $ flags ) ; }
Parses a symbol.

@return null|Token
Parses a symbol .