� c��j=9 � � � d Z ddlZ ej d� j Z ej d� j Z ej d� Z ej d� Z ej d� Z[ G d� d � Z y) z�Shared support for scanning document type declarations in HTML and XHTML. This module is used as a foundation for the html.parser module. It has no documented public API and should not be used directly. � Nz[a-zA-Z][-_.a-zA-Z0-9]*\s*z(\'[^\']*\'|"[^"]*")\s*z--\s*>z ]\s*]\s*>z]\s*>c �l � e Zd ZdZd� Zd� Zd� Zd� ZdZd� Z dd�Z dd �Zd � Zd� Z d� Zd � Zd� Zd� Zd� Zy)� ParserBaseziParser base class which provides some common support methods used by the SGML/HTML and XHTML parsers.c �> � | j t u rt d� �y )Nz)_markupbase.ParserBase must be subclassed)� __class__r �RuntimeError��selfs �$/usr/lib64/python3.12/_markupbase.py�__init__zParserBase.__init__ s# � ��>�>�Z�'��;�=� =� (� c � � d| _ d| _ y )N� r ��lineno�offsetr s r �resetzParserBase.reset s � ������r c �2 � | j | j fS )z&Return current line number and offset.r r s r �getposzParserBase.getpos$ s � ��{�{�D�K�K�'�'r c �� � ||k\ r|S | j }|j d||� }|r6| j |z | _ |j d||� }||dz z | _ |S | j |z |z | _ |S )N� r )�rawdata�countr �rindexr )r �i�jr �nlines�poss r � updateposzParserBase.updatepos, s � ���6��H��,�,�����t�Q��*����+�+��.�D�K��.�.��q�!�,�C��S��U�)�D�K� �� �+�+��/�!�+�D�K��r � c � � | j }|dz }|||dz dk( r|dz S |||dz dv ryt |� }|||dz dk( r| j |� S || dk( r| j |� S | j ||� \ }}|dk r|S |d k( rd | _ ||k r�|| }|dk( r9||dz | }|d k( r| j |� |dz S | j |� |dz S |dv r t ||� }|sy|j � }n||dv r| j ||� \ } }nb|| j v r|dz }nN|dk( r8|d k( r| j |dz |� }n.|d v rt d|z � �t d� �t d|| z � �|dk r|S ||k r��y)N� r �>)�-r �����z--�[r �doctyper z"'�4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ> �link�attlist�element�linktypez&unsupported '[' char in %s declarationz"unexpected '[' char in declarationz!unexpected %r char in declaration)r �len� parse_comment�parse_marked_section� _scan_name�_decl_otherchars�handle_decl�unknown_decl�_declstringlit_match�end�_parse_doctype_subset�AssertionError) r r r r �n�decltype�c�data�m�names r �parse_declarationzParserBase.parse_declaration<