def parse_token (operators={})
ref = Reference.from_buffer(@buffer) and return ref
token = @buffer.token
case token
when nil then return nil
when "/" then return @buffer.token.to_sym
when "<<" then return dictionary()
when "[" then return array()
when "(" then return string()
when "<" then return hex_string()
when "true" then return true
when "false" then return false
when "null" then return nil
when "obj", "endobj" then return Token.new(token)
when "stream", "endstream" then return Token.new(token)
when ">>", "]", ">" then return Token.new(token)
else
if operators.has_key?(token) then return Token.new(token)
elsif token =~ /\d*\.\d/ then return token.to_f
else return token.to_i
end
end
end