
    d=9                         d Z ddlZ ej        d          j        Z ej        d          j        Z ej        d          Z ej        d          Z ej        d          Z[ G d d	          Z	dS )
zShared 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                   n    e Zd ZdZd Zd Zd Zd ZdZd Z	dd	Z
dd
Zd Zd Zd Zd Zd Zd Zd ZdS )
ParserBaseziParser base class which provides some common support methods used
    by the SGML/HTML and XHTML parsers.c                 @    | j         t          u rt          d          d S )Nz)_markupbase.ParserBase must be subclassed)	__class__r   RuntimeErrorselfs      /croot/python-split_1694437901252/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib/python3.11/_markupbase.py__init__zParserBase.__init__   s,    >Z'';= = = ('    c                 "    d| _         d| _        d S )N   r   linenooffsetr   s    r
   resetzParserBase.reset    s    r   c                     | j         | j        fS )z&Return current line number and offset.r   r   s    r
   getposzParserBase.getpos$   s    {DK''r   c                     ||k    r|S | j         }|                    d||          }|r4| j        |z   | _        |                    d||          }||dz   z
  | _        n| j        |z   |z
  | _        |S )N
r   )rawdatacountr   rindexr   )r	   ijr   nlinesposs         r
   	updateposzParserBase.updatepos,   s    66H,tQ** 	,+.DK..q!,,CSU)DKK+/!+DKr    c                    | j         }|dz   }|||         dk    s
J d            |||dz            dk    r|dz   S |||dz            dv rdS t          |          }|||dz            dk    r|                     |          S ||         d	k    r|                     |          S |                     ||          \  }}|d
k     r|S |dk    rd| _        ||k     r||         }|dk    rC||dz   |         }|dk    r|                     |           n|                     |           |dz   S |dv r)t          ||          }|sdS |	                                }n|dv r|                     ||          \  }	}nr|| j        v r|dz   }nc|d	k    rE|dk    r| 
                    |dz   |          }n=|dv rt          d|z            t          d          t          d||         z            |d
k     r|S ||k     dS )N   <!z$unexpected call to parse_declarationr   >)-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_declarationzParserBase.parse_declaration<   s    ,Eqs|t###%K###1QqS5>S  q5L1QqS5>Y&& 2LL1QqS5>T!!%%a(((QZ3
 ,,Q/////!Q//KHaq55Hy  $&D!!ee
ACxxqs1u~y(($$T**** %%d+++1uEzz(!44 2EEGGLLL//!Q//aad+++Ecy((221q5!<<AA!KKK
 ))QT\)\]]]()MNNN$%H7ST:%UVVV1uuM !eeN rr   r   c                    | j         }|||dz            dk    s
J d            |                     |dz   |          \  }}|dk     r|S |dv rt                              ||dz             }n@|dv rt                              ||dz             }nt          d||dz   |         z            |sdS |r5|                    d          }|                     ||dz   |                    |                    d          S )	N   z<![z)unexpected call to parse_marked_section()r   >   tempcdataignorercdatainclude>   ifelseendifz+unknown status keyword %r in marked sectionr%   )	r   r0   _markedsectionclosesearch_msmarkedsectioncloser7   startr3   r5   )r	   r   reportr   sectNamer   matchs          r
   r/   zParserBase.parse_marked_section   s"   q1u~&&&(S&&&ooqsA//!q55HGGG&--gqs;;EE000(//1==EE =!AN    	2 	/AAgac1fo...yy||r   c                 ,   | j         }|||dz            dk    rt          d          t                              ||dz             }|sdS |r5|                    d          }|                     ||dz   |                    |                    d          S )N   <!--z"unexpected call to parse_comment()r%   r   )r   r7   _commentcloserJ   rL   handle_commentr5   )r	   r   rM   r   rO   r   s         r
   r.   zParserBase.parse_comment   s    ,1QqS5>V## !EFFF$$Wac22 	2 	1AA!Q000yy||r   c                    | j         }t          |          }|}||k     r3||         }|dk    r	|||dz            }|dk    rdS |dk    r+|                     ||dz              t          d|z            |dz   |k    rdS |dz   |k    rdS |||dz            dk    r |                     |d	
          }|d	k     r|S |                     |dz   |          \  }}|dk    rdS |dvr+|                     ||dz              t          d|z            t          | d|z             }	 |	||          }|d	k     r|S n|dk    rA|dz   |k    rdS |                     |dz   |          \  }}|d	k     r|S ||         dk    r|dz   }n|dk    r|dz   }||k     r?||                                         r%|dz   }||k     r||                                         %||k     r3||         dk    r|S |                     ||           t          d          dS |                                r|dz   }n(|                     ||           t          d|z            ||k     3dS )N<r!   r%   r"   r   z*unexpected char in internal subset (in %r)rQ   rR   r   )rM   >   entityr*   r+   notationz)unknown declaration %r in internal subset_parse_doctype_%;]r#   z%unexpected char after internal subsetz%unexpected char %r in internal subset)r   r-   r   r7   r.   r0   getattrisspace)
r	   r   declstartposr   r8   r   r:   sr=   meths
             r
   r6   z ParserBase._parse_doctype_subset   s   ,LL!ee
ACxxAacEN88299NN<Q777(DqH   Ea<<2EQ;;21QqS5>V++**1Q*77A1uu //!a%>>a772KKKNN<Q777(CdJ   t%6%=>>DL))q55H cEa<<2q1ul;;1q55H1:$$AAcE!ee
 2 2 4 4eAA !ee
 2 2 4 4eq55qzS(( NN<333()PQQQ2 RE|Q///$%Lq%PQQQ{ !ee~ rr   c                     |                      ||          \  }}|dk    rdS | j        }d||d          v r|                    d|          dz   S dS )Nr%   r#   r   )r0   r   find)r	   r   r_   r=   r   r   s         r
   _parse_doctype_elementz!ParserBase._parse_doctype_element   s_    //!\22a772,'!""+<<Q''!++rr   c                 l   | j         }|                     ||          \  }}|||dz            }|dk    rdS |dk    r|dz   S 	 |                     ||          \  }}|dk     r|S |||dz            }|dk    rdS |dk    rxd||d          v r|                    d|          dz   }ndS |||dz                                            r$|dz   }|||dz                                            $||d          sdS n|                     ||          \  }}|||dz            }|sdS |dv r:t	          ||          }|r|                                }ndS |||dz            }|sdS |d	k    rE||d          d	k    rdS |                     |dz   |          \  }}|dk     r|S |||dz            }|sdS |dk    r|dz   S t)
Nr   r   r%   r#   r   ()'"#)r   r0   rc   r^   r4   r5   )r	   r   r_   r   r=   r   r:   r<   s           r
   _parse_doctype_attlistz!ParserBase._parse_doctype_attlist  sE   ,//!\22aAacEN77288q5L.	 ooa66GD!1uu!A#ABwwrCxx'!""+%%S!,,q0AA2a!en,,.. AA a!en,,.. qrr{ 2 //!\::a!A#A rEzz(!44 AA2AacEN 2Cxx122;#%%2//!a%>>aq55HAacEN 2Cxx1u].	r   c                 *   |                      ||          \  }}|dk     r|S | j        }	 |||dz            }|sdS |dk    r|dz   S |dv r)t          ||          }|sdS |                                }n!|                      ||          \  }}|dk     r|S k)Nr   r   r%   r#   rh   )r0   r   r4   r5   )r	   r   r_   r=   r   r   r:   r<   s           r
   _parse_doctype_notationz"ParserBase._parse_doctype_notation=  s    //!\22aq55H,	!A#A rCxx1uEzz(!44 2EEGG//!\::aq55H	r   c                    | j         }|||dz            dk    r4|dz   }	 |||dz            }|sdS |                                r|dz   }nn-n|}|                     ||          \  }}|dk     r|S 	 | j         ||dz            }|sdS |dv r)t          ||          }|r|                                }n.dS |dk    r|dz   S |                     ||          \  }}|dk     r|S p)Nr   rZ   r%   r   rh   r#   )r   r^   r0   r4   r5   )r	   r   r_   r   r   r:   r=   r<   s           r
   _parse_doctype_entityz ParserBase._parse_doctype_entityT  s4   ,1QqS5>S  AAAacEN 299;; AAA A//!\22aq55H	QqsU#A rEzz(!44 AA2c1u//!\::aq55H	r   c                    | j         }t          |          }||k    rdS t          ||          }|rh|                                }|                                }|t          |          z   |k    rdS |                                |                                fS |                     ||           t          d|||dz            z            )N)Nr%   zexpected name token at %r   )	r   r-   _declname_matchgroupstriplowerr5   r   r7   )r	   r   r_   r   r8   r<   r`   r=   s           r
   r0   zParserBase._scan_namex  s    ,LL668GQ'' 
			A7799DCFF
q  x::<<((NN<+++ +gl<PR?6R.SS  r   c                     d S )N )r	   r;   s     r
   r3   zParserBase.unknown_decl  s    r   N)r   )__name__
__module____qualname____doc__r   r   r   r   r1   r>   r/   r.   r6   rd   rj   rl   rn   r0   r3   rv   r   r
   r   r      s       + += = =
  ( ( (   M M Mb   0
 
 
 
C C CL  6 6 6r  .     H  &    r   r   )
rz   recompilerO   rq   r4   rS   rI   rK   r   rv   r   r
   <module>r}      s     
			"*:;;A!rz"<==C 
9%% bj.. 
 #
8,, u u u u u u u u u ur   