???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................
Yf9                 @   s}   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 [ Gd 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               @   s   e  Z d  Z d Z d d   Z d d   Z d d   Z d d	   Z d
 d   Z d Z	 d d   Z
 d d d  Z d d d  Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d  d!   Z d" S)#
ParserBaseziParser base class which provides some common support methods used
    by the SGML/HTML and XHTML parsers.c             C   s   |  j  t k r t d   d  S)Nz)_markupbase.ParserBase must be subclassed)	__class__r   RuntimeError)self r   0/opt/alt/python35/lib64/python3.5/_markupbase.py__init__   s    zParserBase.__init__c             C   s   t  d   d  S)Nz.subclasses of ParserBase must override error())NotImplementedError)r   messager   r   r   error    s    zParserBase.errorc             C   s   d |  _  d |  _ d  S)N   r   )linenooffset)r   r   r   r   reset$   s    	zParserBase.resetc             C   s   |  j  |  j f S)z&Return current line number and offset.)r   r   )r   r   r   r   getpos(   s    zParserBase.getposc             C   s   | | k r | S|  j  } | j d | |  } | rm |  j | |  _ | j d | |  } | | d |  _ n |  j | | |  _ | S)N
r   )rawdatacountr   rindexr   )r   ijr   Znlinesposr   r   r   	updatepos0   s    	zParserBase.updatepos c       
      C   sq  |  j  } | d } | | |  d k s5 t d   | | | d  d k rW | d S| | | d  d k ru d St |  } | | | d  d k r |  j |  S| | d	 k r |  j |  S|  j | |  \ } } | d
 k  r | S| d k rd |  _ xh| | k  rl| | } | d k rl| | d |  } | d k rW|  j |  n |  j |  | d S| d k rt	 | |  } | sd S| j
   } n | d k r|  j | |  \ }	 } n | |  j k r| d } nv | d	 k rD| d k r|  j | d |  } qY| d k r4|  j d |  qY|  j d  n |  j d | |  | d
 k  r| SqWd S)N   z<!z$unexpected call to parse_declarationr   >-r   z--[r   Zdoctypez"'Z4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZattlistlinktypelinkelementz&unsupported '[' char in %s declarationz"unexpected '[' char in declarationz!unexpected %r char in declaration)r   r   r"   >   r   r!   r    r   r"   )r   AssertionErrorlenparse_commentparse_marked_section
_scan_name_decl_othercharsZhandle_declunknown_decl_declstringlit_matchend_parse_doctype_subsetr   )
r   r   r   r   nZdecltypecdatamnamer   r   r   parse_declaration@   sZ    	
"	
zParserBase.parse_declarationr   c             C   s  |  j  } | | | d  d k s/ t d   |  j | d |  \ } } | d k  r[ | S| d k r t j | | d  } nD | d k r t j | | d  } n |  j d | | d |   | s d S| r | j d  } |  j | | d |   | j	 d  S)N   z<![z)unexpected call to parse_marked_section()r   tempcdataignoreincludercdataifelseendifz+unknown status keyword %r in marked sectionr   >   r4   r5   r6   r8   r7   >   r9   r;   r:   r"   )
r   r#   r'   _markedsectionclosesearch_msmarkedsectioncloser   startr)   r+   )r   r   reportr   ZsectNamer   matchr   r   r   r&      s     	&zParserBase.parse_marked_sectionc             C   s   |  j  } | | | d  d k r0 |  j d  t j | | d  } | sP d S| r | j d  } |  j | | d |   | j d  S)N   z<!--z"unexpected call to parse_comment()r   r   r"   )r   r   _commentcloser=   r?   Zhandle_commentr+   )r   r   r@   r   rA   r   r   r   r   r%      s    	zParserBase.parse_commentc       
      C   s  |  j  } t |  } | } x| | k  r| | } | d k r| | | d  } | d k rd d S| d k r |  j | | d  |  j d |  | d | k r d S| d | k r d S| | | d  d k r |  j | d d	 } | d	 k  r | Sq |  j | d |  \ } } | d k r+d S| d k r\|  j | | d  |  j d |  t |  d |  }	 |	 | |  } | d	 k  r| Sq | d k r| d | k rd S|  j | d |  \ } } | d	 k  r| S| | d k r| d } q | d k r| d } x* | | k  r<| | j   r<| d } qW| | k  r}| | d k r]| S|  j | |  |  j d  qd Sq | j   r| d } q |  j | |  |  j d |  q Wd S)N<r   r   z<!z*unexpected char in internal subset (in %r)rB   z<!--r@   r   r   r!   entitynotationz)unknown declaration %r in internal subsetZ_parse_doctype_%;]r   z%unexpected char after internal subsetz%unexpected char %r in internal subsetr"   r"   r"   r"   r"   >   r   r!   rF   rE   r"   r"   r"   )r   r$   r   r   r%   r'   getattrisspace)
r   r   declstartposr   r-   r   r.   sr1   methr   r   r   r,      sn    	

z ParserBase._parse_doctype_subsetc             C   s_   |  j  | |  \ } } | d k r( d S|  j } d | | d   k r[ | j d |  d Sd S)Nr   r   r"   r"   r"   )r'   r   find)r   r   rL   r1   r   r   r   r   r   _parse_doctype_element   s    	z!ParserBase._parse_doctype_elementc             C   s=  |  j  } |  j | |  \ } } | | | d  } | d k rE d	 S| d k rY | d Sx|  j | |  \ } } | d k  r | S| | | d  } | d k r d
 S| d k r)d | | d   k r | j d |  d } n d Sx( | | | d  j   r| d } q W| | d   sAd Sn |  j | |  \ } } | | | d  } | s_d S| d k rt | |  } | r| j   } n d S| | | d  } | sd S| d k r!| | d   d k rd S|  j | d |  \ } } | d k  r| S| | | d  } | s!d S| d k r\ | d Sq\ Wd  S)Nr   r   r   r   ()z'"#r"   r"   r"   r"   r"   r"   r"   r"   r"   )r   r'   rO   rK   r*   r+   )r   r   rL   r   r1   r   r.   r0   r   r   r   _parse_doctype_attlist  sZ    	z!ParserBase._parse_doctype_attlistc             C   s   |  j  | |  \ } } | d k  r( | S|  j } x | | | d  } | sR d S| d k rf | d S| d k r t | |  } | s d S| j   } q4 |  j  | |  \ } } | d k  r4 | Sq4 Wd  S)Nr   r   r   z'"r"   r"   )r'   r   r*   r+   )r   r   rL   r1   r   r   r.   r0   r   r   r   _parse_doctype_notation=  s$    	z"ParserBase._parse_doctype_notationc             C   s<  |  j  } | | | d  d k ro | d } xE | | | d  } | sN d S| j   rg | d } q0 Pq0 Wn | } |  j | |  \ } } | d k  r | Sx |  j  | | d  } | s d S| d k r t | |  } | r | j   } q4d Sq | d k r| d S|  j | |  \ } } | d k  r | Sq Wd  S)	Nr   rG   r   z'"r   r"   r"   r"   )r   rK   r'   r*   r+   )r   r   rL   r   r   r.   r1   r0   r   r   r   _parse_doctype_entityT  s8    	
z ParserBase._parse_doctype_entityc             C   s   |  j  } t |  } | | k r% d St | |  } | r | j   } | j   } | t |  | k rl d S| j   | j   f S|  j | |  |  j d | | | d   d  S)Nr   zexpected name token at %r   r"   )Nr"   r"   )Nr"   )	r   r$   _declname_matchgroupstriplowerr+   r   r   )r   r   rL   r   r-   r0   rM   r1   r   r   r   r'   x  s    		zParserBase._scan_namec             C   s   d  S)Nr   )r   r/   r   r   r   r)     s    zParserBase.unknown_declN)__name__
__module____qualname____doc__r   r   r   r   r   r(   r2   r&   r%   r,   rP   rT   rU   rV   r'   r)   r   r   r   r   r      s"   RC9$r   )
r_   recompilerA   rX   r*   rC   r<   r>   r   r   r   r   r   <module>   s   