
    F\h=9                        S r SSKr\R                  " S5      R                  r\R                  " S5      R                  r\R                  " S5      r\R                  " S5      r\R                  " S5      rC " S S	5      r	g)
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                   x    \ rS rSrSrS rS rS rS rSr	S r
SS	 jrSS
 jrS rS rS rS rS rS rS rSrg)
ParserBase   zeParser base class which provides some common support methods used
by the SGML/HTML and XHTML parsers.c                 @    U R                   [        L a  [        S5      eg )Nz)_markupbase.ParserBase must be subclassed)	__class__r   RuntimeErrorselfs    "/usr/lib/python3.13/_markupbase.py__init__ParserBase.__init__   s#    >>Z';= = (    c                      SU l         SU l        g )N   r   linenooffsetr	   s    r   resetParserBase.reset    s    r   c                 2    U R                   U R                  4$ )z&Return current line number and offset.r   r	   s    r   getposParserBase.getpos$   s    {{DKK''r   c                     X:  a  U$ U R                   nUR                  SX5      nU(       a4  U R                  U-   U l        UR                  SX5      nX%S-   -
  U l        U$ U R                  U-   U-
  U l        U$ )N
r   )rawdatacountr   rindexr   )r
   ijr   nlinesposs         r   	updateposParserBase.updatepos,   sw    6H,,tQ*++.DK..q,CU)DK  ++/!+DKr    c                 N   U R                   nUS-   nX!U S:X  d   S5       eX#US-    S:X  a  US-   $ X#US-    S;   a  g[        U5      nX#US-    S:X  a  U R                  U5      $ X#   S	:X  a  U R                  U5      $ U R	                  X15      u  pSUS
:  a  U$ US:X  a  SU l        X4:  a  X#   nUS:X  a9  X!S-   U nUS:X  a  U R                  U5        US-   $ U R                  U5        US-   $ US;   a$  [        X#5      nU(       d  gUR                  5       nOUS;   a  U R	                  X15      u  pOfX`R
                  ;   a  US-   nOQUS	:X  a;  US:X  a  U R                  US-   U5      nO/US;   a  [        SU-  5      e[        S5      e[        SX#   -  5      eUS
:  a  U$ X4:  a  M  g)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_declarationParserBase.parse_declaration<   s    ,,E|t#K%KK#QqS>S q5LQqS>Y& LQqS>T!%%a((Z3
 ,,Q////!/KHq5Hy $&D!e
ACxs1~y($$T* 1u %%d+1uEz(4EEGLL//!/a+++Ecy(221q5!<A!KK
 ))QT\)\]]()MNN$%H7:%UVV1uM eN r   c                    U R                   nX1US-    S:X  d   S5       eU R                  US-   U5      u  pEUS:  a  U$ US;   a  [        R                  X1S-   5      nO2US;   a  [        R                  X1S-   5      nO[        SX1S-   U -  5      eU(       d  gU(       a'  UR                  S5      nU R                  X1S-   U 5        UR                  S5      $ )	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   r5   _markedsectionclosesearch_msmarkedsectioncloser<   startr8   r:   )r
   r   reportr   sectNamer   matchs          r   r4   ParserBase.parse_marked_section   s    1~&S(SS&ooqsA/q5HGG&--gs;E00(//1=E =!AN  AAgc1o.yy|r   c                    U R                   nX1US-    S:w  a  [        S5      e[        R                  X1S-   5      nU(       d  gU(       a'  UR	                  S5      nU R                  X1S-   U 5        UR                  S5      $ )N   <!--z"unexpected call to parse_comment()r*   r   )r   r<   _commentcloserP   rR   handle_commentr:   )r
   r   rS   r   rU   r   s         r   r3   ParserBase.parse_comment   su    ,,QqS>V# !EFF$$Wc2AA!Q0yy|r   c                    U R                   n[        U5      nUnXT:  Ga  X5   nUS:X  a  X5US-    nUS:X  a  gUS:w  a"  U R                  X%S-   5        [        SU-  5      eUS-   U:X  a  gUS-   U:  a  gX5US-    S:X  a  U R	                  US	S
9nUS	:  a  U$ M  U R                  US-   U5      u  pUS:X  a  gUS;  a"  U R                  X%S-   5        [        SU-  5      e[        U SU-   5      n	U	" XR5      nUS	:  a  U$ OUS:X  a7  US-   U:X  a  gU R                  US-   U5      u  puUS	:  a  U$ X5   S:X  a  US-   nOUS:X  ap  US-   nXT:  a:  X5   R                  5       (       a#  US-   nXT:  a  X5   R                  5       (       a  M#  XT:  a&  X5   S:X  a  U$ U R                  X%5        [        S5      egUR                  5       (       a  US-   nOU R                  X%5        [        SU-  5      eXT:  a  GM  g)N<r&   r*   r'   r   z*unexpected char in internal subset (in %r)rX   rY   r   )rS   >   entityr/   r0   notationz)unknown declaration %r in internal subset_parse_doctype_%;]r(   z%unexpected char after internal subsetz%unexpected char %r in internal subset)r   r2   r"   r<   r3   r5   getattrisspace)
r
   r   declstartposr   r=   r   r?   srB   meths
             r   r;    ParserBase._parse_doctype_subset   s<   ,,Le
ACxacN89NN<Q7(DqH  Ea<EQ;QqS>V+**1Q*7A1u //!a%>7KKNN<Q7(CdJ  t%6%=>)q5H cEa<q1ul;q5H:$AAcEe
 2 2 4 4AA e
 2 2 4 45zS( NN<3()PQQE|/$%Lq%PQQ{ e~ r   c                     U R                  X5      u  p4US:X  a  gU R                  nSXTS  ;   a  UR                  SU5      S-   $ g)Nr*   r(   r   )r5   r   find)r
   r   rg   rB   r   r   s         r   _parse_doctype_element!ParserBase._parse_doctype_element   sJ    //!27,,'"+<<Q'!++r   c                    U R                   nU R                  X5      u  pEX5US-    nUS:X  a  gUS:X  a  US-   $  U R                  XR5      u  pEUS:  a  U$ X5US-    nUS:X  a  gUS:X  ae  SX5S  ;   a  UR                  SU5      S-   nOgX5US-    R                  5       (       a!  US-   nX5US-    R                  5       (       a  M!  X5S  (       d  gOU R                  XR5      u  pEX5US-    nU(       d  gUS;   a3  [	        X55      nU(       a  UR                  5       nOgX5US-    nU(       d  gUS	:X  a7  X5S  S	:X  a  gU R                  US-   U5      u  pEUS:  a  U$ X5US-    nU(       d  gUS:X  a  US-   $ GM:  )
Nr   r$   r*   r(   r   ()'"#)r   r5   rl   rf   r9   r:   )r
   r   rg   r   rB   r   r?   rA   s           r   _parse_doctype_attlist!ParserBase._parse_doctype_attlist  s   ,,//!2acN78q5L ooa6GD1u!A#ABwCx'"+%S!,q0A!n,,..AA !n,,..r{ # //!:!A#AEz(4AacNCx2;#%//!a%>q5HacNCx1u] r   c                    U R                  X5      u  p4US:  a  U$ U R                  n XTUS-    nU(       d  gUS:X  a  US-   $ US;   a$  [        XT5      nU(       d  gUR                  5       nOU R                  XB5      u  p4US:  a  U$ Ma  )Nr   r   r*   r(   rr   )r5   r   r9   r:   )r
   r   rg   rB   r   r   r?   rA   s           r   _parse_doctype_notation"ParserBase._parse_doctype_notation=  s    //!2q5H,,!A#ACx1uEz(4EEG//!:q5H r   c                    U R                   nX1US-    S:X  a3  US-   n X4US-    nU(       d  gUR                  5       (       a  US-   nOOM-  UnU R                  XB5      u  pdUS:  a  U$  U R                   XDS-    nU(       d  gUS;   a$  [        X45      nU(       a  UR	                  5       nO'gUS:X  a  US-   $ U R                  XB5      u  pdUS:  a  U$ Mk  )Nr   rb   r*   r   rr   r(   )r   rf   r5   r9   r:   )r
   r   rg   r   r   r?   rB   rA   s           r   _parse_doctype_entity ParserBase._parse_doctype_entityT  s    ,,QqS>S AAacN99;;AA  A//!2q5HQs#AEz(4Ac1u//!:q5H r   c                 N   U R                   n[        U5      nX:X  a  g[        X15      nU(       aS  UR                  5       nUR	                  5       nU[        U5      -   U:X  a  gUR                  5       UR                  5       4$ U R                  X!5        [        SX2US-    -  5      e)N)Nr*   zexpected name token at %r   )	r   r2   _declname_matchgroupstriplowerr:   r"   r<   )r
   r   rg   r   r=   rA   rh   rB   s           r   r5   ParserBase._scan_namex  s    ,,L6G'	A779DCF
q ::<((NN<+ +g<PR?.SS r   c                     g )N )r
   r@   s     r   r8   ParserBase.unknown_decl  s    r   )r6   r   r   N)r   )__name__
__module____qualname____firstlineno____doc__r   r   r   r"   r6   rC   r4   r3   r;   rm   rt   rw   rz   r5   r8   __static_attributes__r   r   r   r   r      s[    +=
( Mb0
CL6r. H&r   r   )
r   recompilerU   r~   r9   rZ   rO   rQ   r   r   r   r   <module>r      sw    
**:;AAzz"<=CC 

9%jj. 
 

8, u ur   