public function parse($source, &$offset = 0)
    {
        $tokens = $this->lexer->tokens($source, $offset);
        $type = $this->parseTokens($tokens, $index);
        $offset += self::offset($tokens, $index);

        return $type;
    }
public function parse($source, &$offset = 0)
    {
        $tokens = $this->lexer->tokens($source, $offset);
        $type = $this->parseTokens($tokens, $index);
        $offset += self::offset($tokens, $index);

        return $type;
    }
public function parse ( $ source , & $ offset = 0 ) { $ tokens = $ this -> lexer -> tokens ( $ source , $ offset ) ; $ type = $ this -> parseTokens ( $ tokens , $ index ) ; $ offset += self :: offset ( $ tokens , $ index ) ; return $ type ; }
Parse the supplied source into a type.

The `$offset` argument will be set to the final parsing offset upon
completion.

@api

@param string  $source  The source.
@param integer &$offset The offset to start parsing at.

@return Type           The parsed type.
@throws ParseException If the source cannot be parsed.
Parse the supplied source into a type .