(* HTML5 tokenizer states *) type t = | Data | Rcdata | Rawtext | Script_data | Plaintext | Tag_open | End_tag_open | Tag_name | Rcdata_less_than_sign | Rcdata_end_tag_open | Rcdata_end_tag_name | Rawtext_less_than_sign | Rawtext_end_tag_open | Rawtext_end_tag_name | Script_data_less_than_sign | Script_data_end_tag_open | Script_data_end_tag_name | Script_data_escape_start | Script_data_escape_start_dash | Script_data_escaped | Script_data_escaped_dash | Script_data_escaped_dash_dash | Script_data_escaped_less_than_sign | Script_data_escaped_end_tag_open | Script_data_escaped_end_tag_name | Script_data_double_escape_start | Script_data_double_escaped | Script_data_double_escaped_dash | Script_data_double_escaped_dash_dash | Script_data_double_escaped_less_than_sign | Script_data_double_escape_end | Before_attribute_name | Attribute_name | After_attribute_name | Before_attribute_value | Attribute_value_double_quoted | Attribute_value_single_quoted | Attribute_value_unquoted | After_attribute_value_quoted | Self_closing_start_tag | Bogus_comment | Markup_declaration_open | Comment_start | Comment_start_dash | Comment | Comment_less_than_sign | Comment_less_than_sign_bang | Comment_less_than_sign_bang_dash | Comment_less_than_sign_bang_dash_dash | Comment_end_dash | Comment_end | Comment_end_bang | Doctype | Before_doctype_name | Doctype_name | After_doctype_name | After_doctype_public_keyword | Before_doctype_public_identifier | Doctype_public_identifier_double_quoted | Doctype_public_identifier_single_quoted | After_doctype_public_identifier | Between_doctype_public_and_system_identifiers | After_doctype_system_keyword | Before_doctype_system_identifier | Doctype_system_identifier_double_quoted | Doctype_system_identifier_single_quoted | After_doctype_system_identifier | Bogus_doctype | Cdata_section | Cdata_section_bracket | Cdata_section_end | Character_reference | Named_character_reference | Ambiguous_ampersand | Numeric_character_reference | Hexadecimal_character_reference_start | Decimal_character_reference_start | Hexadecimal_character_reference | Decimal_character_reference | Numeric_character_reference_end let pp fmt t = let s = match t with | Data -> "Data" | Rcdata -> "Rcdata" | Rawtext -> "Rawtext" | Script_data -> "Script_data" | Plaintext -> "Plaintext" | Tag_open -> "Tag_open" | End_tag_open -> "End_tag_open" | Tag_name -> "Tag_name" | Rcdata_less_than_sign -> "Rcdata_less_than_sign" | Rcdata_end_tag_open -> "Rcdata_end_tag_open" | Rcdata_end_tag_name -> "Rcdata_end_tag_name" | Rawtext_less_than_sign -> "Rawtext_less_than_sign" | Rawtext_end_tag_open -> "Rawtext_end_tag_open" | Rawtext_end_tag_name -> "Rawtext_end_tag_name" | Script_data_less_than_sign -> "Script_data_less_than_sign" | Script_data_end_tag_open -> "Script_data_end_tag_open" | Script_data_end_tag_name -> "Script_data_end_tag_name" | Script_data_escape_start -> "Script_data_escape_start" | Script_data_escape_start_dash -> "Script_data_escape_start_dash" | Script_data_escaped -> "Script_data_escaped" | Script_data_escaped_dash -> "Script_data_escaped_dash" | Script_data_escaped_dash_dash -> "Script_data_escaped_dash_dash" | Script_data_escaped_less_than_sign -> "Script_data_escaped_less_than_sign" | Script_data_escaped_end_tag_open -> "Script_data_escaped_end_tag_open" | Script_data_escaped_end_tag_name -> "Script_data_escaped_end_tag_name" | Script_data_double_escape_start -> "Script_data_double_escape_start" | Script_data_double_escaped -> "Script_data_double_escaped" | Script_data_double_escaped_dash -> "Script_data_double_escaped_dash" | Script_data_double_escaped_dash_dash -> "Script_data_double_escaped_dash_dash" | Script_data_double_escaped_less_than_sign -> "Script_data_double_escaped_less_than_sign" | Script_data_double_escape_end -> "Script_data_double_escape_end" | Before_attribute_name -> "Before_attribute_name" | Attribute_name -> "Attribute_name" | After_attribute_name -> "After_attribute_name" | Before_attribute_value -> "Before_attribute_value" | Attribute_value_double_quoted -> "Attribute_value_double_quoted" | Attribute_value_single_quoted -> "Attribute_value_single_quoted" | Attribute_value_unquoted -> "Attribute_value_unquoted" | After_attribute_value_quoted -> "After_attribute_value_quoted" | Self_closing_start_tag -> "Self_closing_start_tag" | Bogus_comment -> "Bogus_comment" | Markup_declaration_open -> "Markup_declaration_open" | Comment_start -> "Comment_start" | Comment_start_dash -> "Comment_start_dash" | Comment -> "Comment" | Comment_less_than_sign -> "Comment_less_than_sign" | Comment_less_than_sign_bang -> "Comment_less_than_sign_bang" | Comment_less_than_sign_bang_dash -> "Comment_less_than_sign_bang_dash" | Comment_less_than_sign_bang_dash_dash -> "Comment_less_than_sign_bang_dash_dash" | Comment_end_dash -> "Comment_end_dash" | Comment_end -> "Comment_end" | Comment_end_bang -> "Comment_end_bang" | Doctype -> "Doctype" | Before_doctype_name -> "Before_doctype_name" | Doctype_name -> "Doctype_name" | After_doctype_name -> "After_doctype_name" | After_doctype_public_keyword -> "After_doctype_public_keyword" | Before_doctype_public_identifier -> "Before_doctype_public_identifier" | Doctype_public_identifier_double_quoted -> "Doctype_public_identifier_double_quoted" | Doctype_public_identifier_single_quoted -> "Doctype_public_identifier_single_quoted" | After_doctype_public_identifier -> "After_doctype_public_identifier" | Between_doctype_public_and_system_identifiers -> "Between_doctype_public_and_system_identifiers" | After_doctype_system_keyword -> "After_doctype_system_keyword" | Before_doctype_system_identifier -> "Before_doctype_system_identifier" | Doctype_system_identifier_double_quoted -> "Doctype_system_identifier_double_quoted" | Doctype_system_identifier_single_quoted -> "Doctype_system_identifier_single_quoted" | After_doctype_system_identifier -> "After_doctype_system_identifier" | Bogus_doctype -> "Bogus_doctype" | Cdata_section -> "Cdata_section" | Cdata_section_bracket -> "Cdata_section_bracket" | Cdata_section_end -> "Cdata_section_end" | Character_reference -> "Character_reference" | Named_character_reference -> "Named_character_reference" | Ambiguous_ampersand -> "Ambiguous_ampersand" | Numeric_character_reference -> "Numeric_character_reference" | Hexadecimal_character_reference_start -> "Hexadecimal_character_reference_start" | Decimal_character_reference_start -> "Decimal_character_reference_start" | Hexadecimal_character_reference -> "Hexadecimal_character_reference" | Decimal_character_reference -> "Decimal_character_reference" | Numeric_character_reference_end -> "Numeric_character_reference_end" in Format.pp_print_string fmt s