private function symbol()
    {
        // If symbol requirement not set match colon if present
        if (null === $this->nextSymbol && $this->lexer->isNextToken(Lexer::T_COLON)) {
            $this->match(Lexer::T_COLON);

            // Set symbol requirement for any remaining value
            return $this->nextSymbol = Lexer::T_COLON;
        }

        // If symbol requirement not set match degree if present
        if (null === $this->nextSymbol && $this->lexer->isNextToken(Lexer::T_DEGREE)) {
            $this->match(Lexer::T_DEGREE);

            // Set requirement for any remaining value
            return $this->nextSymbol = Lexer::T_APOSTROPHE;
        }

        // Match symbol if requirement set and update requirement for next symbol
        switch ($this->nextSymbol) {
            case Lexer::T_COLON:
                $this->match(Lexer::T_COLON);

                return $this->nextSymbol;
            case Lexer::T_DEGREE:
                $this->match(Lexer::T_DEGREE);

                // Next symbol will be minutes
                return $this->nextSymbol = Lexer::T_APOSTROPHE;
            case Lexer::T_APOSTROPHE:
                $this->match(Lexer::T_APOSTROPHE);

                // Next symbol will be seconds
                return $this->nextSymbol = Lexer::T_QUOTE;
            case Lexer::T_QUOTE:
                $this->match(Lexer::T_QUOTE);

                return $this->nextSymbol;
        }

        // Set requirement for any remaining value
        return $this->nextSymbol = false;
    }
private function symbol()
    {
        // If symbol requirement not set match colon if present
        if (null === $this->nextSymbol && $this->lexer->isNextToken(Lexer::T_COLON)) {
            $this->match(Lexer::T_COLON);

            // Set symbol requirement for any remaining value
            return $this->nextSymbol = Lexer::T_COLON;
        }

        // If symbol requirement not set match degree if present
        if (null === $this->nextSymbol && $this->lexer->isNextToken(Lexer::T_DEGREE)) {
            $this->match(Lexer::T_DEGREE);

            // Set requirement for any remaining value
            return $this->nextSymbol = Lexer::T_APOSTROPHE;
        }

        // Match symbol if requirement set and update requirement for next symbol
        switch ($this->nextSymbol) {
            case Lexer::T_COLON:
                $this->match(Lexer::T_COLON);

                return $this->nextSymbol;
            case Lexer::T_DEGREE:
                $this->match(Lexer::T_DEGREE);

                // Next symbol will be minutes
                return $this->nextSymbol = Lexer::T_APOSTROPHE;
            case Lexer::T_APOSTROPHE:
                $this->match(Lexer::T_APOSTROPHE);

                // Next symbol will be seconds
                return $this->nextSymbol = Lexer::T_QUOTE;
            case Lexer::T_QUOTE:
                $this->match(Lexer::T_QUOTE);

                return $this->nextSymbol;
        }

        // Set requirement for any remaining value
        return $this->nextSymbol = false;
    }
private function symbol ( ) { // If symbol requirement not set match colon if present if ( null === $ this -> nextSymbol && $ this -> lexer -> isNextToken ( Lexer :: T_COLON ) ) { $ this -> match ( Lexer :: T_COLON ) ; // Set symbol requirement for any remaining value return $ this -> nextSymbol = Lexer :: T_COLON ; } // If symbol requirement not set match degree if present if ( null === $ this -> nextSymbol && $ this -> lexer -> isNextToken ( Lexer :: T_DEGREE ) ) { $ this -> match ( Lexer :: T_DEGREE ) ; // Set requirement for any remaining value return $ this -> nextSymbol = Lexer :: T_APOSTROPHE ; } // Match symbol if requirement set and update requirement for next symbol switch ( $ this -> nextSymbol ) { case Lexer :: T_COLON : $ this -> match ( Lexer :: T_COLON ) ; return $ this -> nextSymbol ; case Lexer :: T_DEGREE : $ this -> match ( Lexer :: T_DEGREE ) ; // Next symbol will be minutes return $ this -> nextSymbol = Lexer :: T_APOSTROPHE ; case Lexer :: T_APOSTROPHE : $ this -> match ( Lexer :: T_APOSTROPHE ) ; // Next symbol will be seconds return $ this -> nextSymbol = Lexer :: T_QUOTE ; case Lexer :: T_QUOTE : $ this -> match ( Lexer :: T_QUOTE ) ; return $ this -> nextSymbol ; } // Set requirement for any remaining value return $ this -> nextSymbol = false ; }
Match value component symbol if required or present

@return bool|int
Match value component symbol if required or present