sig
  type lexers =
      Document
    | Document_type
    | Content
    | Within_tag
    | Within_tag_entry
    | Declaration
    | Comment of Pxp_lexer_types.lexers
    | Ignored_section
    | Closed
    | Tag_eb
    | Tag_eb_att of bool
  type prolog_token =
      Pro_name of string
    | Pro_eq
    | Pro_string of string
    | Pro_eof
  type entity_id = <  >
  type token =
      Begin_entity
    | End_entity
    | Comment_begin of Pxp_lexer_types.entity_id
    | Comment_material of string
    | Comment_end of Pxp_lexer_types.entity_id
    | Ignore
    | IgnoreLineEnd
    | Eq
    | Rangle
    | Rangle_empty
    | Percent
    | Plus
    | Star
    | Bar
    | Comma
    | Qmark
    | Pcdata
    | Required
    | Implied
    | Fixed
    | Bof
    | Eof
    | Conditional_begin of Pxp_lexer_types.entity_id
    | Conditional_body of Pxp_lexer_types.entity_id
    | Conditional_end of Pxp_lexer_types.entity_id
    | Doctype of Pxp_lexer_types.entity_id
    | Doctype_rangle of Pxp_lexer_types.entity_id
    | Dtd_begin of Pxp_lexer_types.entity_id
    | Dtd_end of Pxp_lexer_types.entity_id
    | Decl_element of Pxp_lexer_types.entity_id
    | Decl_attlist of Pxp_lexer_types.entity_id
    | Decl_entity of Pxp_lexer_types.entity_id
    | Decl_notation of Pxp_lexer_types.entity_id
    | Decl_rangle of Pxp_lexer_types.entity_id
    | Lparen of Pxp_lexer_types.entity_id
    | Rparen of Pxp_lexer_types.entity_id
    | RparenPlus of Pxp_lexer_types.entity_id
    | RparenStar of Pxp_lexer_types.entity_id
    | RparenQmark of Pxp_lexer_types.entity_id
    | Tag_beg of (string * Pxp_lexer_types.entity_id)
    | Tag_end of (string * Pxp_lexer_types.entity_id)
    | PI of (string * string * Pxp_lexer_types.entity_id)
    | PI_xml of Pxp_lexer_types.prolog_token list
    | Cdata of string
    | CRef of int
    | ERef of string
    | PERef of string
    | CharData of string
    | Lcurly
    | LLcurly
    | Rcurly
    | RRcurly
    | LineEnd of string
    | LineEnd_att of string
    | Name of string
    | Nametoken of string
    | Attval of string
    | Attval_nl_normalized of string
    | Unparsed_string of string
    | SQuote
    | DQuote
    | ERef_att of string
  val string_of_lexers : Pxp_lexer_types.lexers -> string
  val string_of_tok : Pxp_lexer_types.token -> string
  class type lexer_factory =
    object
      method encoding : Pxp_core_types.rep_encoding
      method open_source :
        Pxp_reader.lexer_source -> Pxp_lexer_types.lexer_obj
      method open_string : string -> Pxp_lexer_types.lexer_obj
      method open_string_inplace : string -> Pxp_lexer_types.lexer_obj
    end
  and lexer_obj =
    object
      method detect_xml_pi : unit -> bool
      method encoding : Pxp_core_types.rep_encoding
      method factory : Pxp_lexer_types.lexer_factory
      method lexeme : string
      method lexeme_char : int -> int
      method lexeme_length : int
      method lexeme_strlen : int
      method open_source : Pxp_reader.lexer_source -> unit
      method open_string : string -> unit
      method open_string_inplace : string -> unit
      method scan_character : unit -> unit
      method scan_characters : unit -> unit
      method scan_comment :
        unit ->
        Pxp_lexer_types.lexers ->
        Pxp_lexer_types.token * Pxp_lexer_types.lexers
      method scan_content :
        unit -> Pxp_lexer_types.token * Pxp_lexer_types.lexers
      method scan_content_string : unit -> Pxp_lexer_types.token
      method scan_declaration :
        unit -> Pxp_lexer_types.token * Pxp_lexer_types.lexers
      method scan_document :
        unit -> Pxp_lexer_types.token * Pxp_lexer_types.lexers
      method scan_document_type :
        unit -> Pxp_lexer_types.token * Pxp_lexer_types.lexers
      method scan_dtd_string : unit -> Pxp_lexer_types.token
      method scan_for_crlf : unit -> Pxp_lexer_types.token
      method scan_ignored_section :
        unit -> Pxp_lexer_types.token * Pxp_lexer_types.lexers
      method scan_name_string : unit -> Pxp_lexer_types.token
      method scan_pi_string : unit -> string option
      method scan_tag_eb :
        unit -> Pxp_lexer_types.token * Pxp_lexer_types.lexers
      method scan_tag_eb_att :
        unit -> bool -> Pxp_lexer_types.token * Pxp_lexer_types.lexers
      method scan_within_tag :
        unit -> Pxp_lexer_types.token * Pxp_lexer_types.lexers
      method scan_xml_pi : unit -> Pxp_lexer_types.prolog_token
      method sub_lexeme : int -> int -> string
    end
  type lexer_set = {
    scan_name_string : Lexing.lexbuf -> Pxp_lexer_types.token;
  }
end