mò
gÐ;c           @   s–  d  Z  d k Z d k Z d g Z e i d ƒ Z e i d ƒ Z e i d ƒ Z e i d ƒ Z e i d ƒ Z	 e i d ƒ Z
 e i d	 ƒ Z e i d
 ƒ Z e i d ƒ Z e i d ƒ Z e i d ƒ Z e i d ƒ Z e i d ƒ Z e i d ƒ Z e i d ƒ Z e i d ƒ Z e i d ƒ Z e i d ƒ Z d e f d „  ƒ  YZ d f  d „  ƒ  YZ d e f d „  ƒ  YZ e d „ Z e d j o e ƒ  n d S(   s;   A parser for SGML, using the derived class as a static DTD.Nt
   SGMLParsers   [&<]sN   &([a-zA-Z][a-zA-Z0-9]*|#[0-9]*)?|<([a-zA-Z][^<>]*|/([a-zA-Z][^<>]*)?|![^<>]*)?s%   &([a-zA-Z][-.a-zA-Z0-9]*)[^a-zA-Z0-9]s   &#([0-9]+)[^0-9]s
   <[>a-zA-Z]s   <[a-zA-Z][-.a-zA-Z0-9]*/s"   <([a-zA-Z][-.a-zA-Z0-9]*)/([^/]*)/s   <\?t   >s   </[<>a-zA-Z]s   [<>]s	   <![^<>]*>s   <!--s   --\s*>s   [a-zA-Z][-.a-zA-Z0-9]*sG   \s*([a-zA-Z_][-.a-zA-Z_0-9]*)(\s*=\s*(\'[^\']*\'|"[^"]*"|[^ \t\n<>]*))?s   [a-zA-Z][-_.a-zA-Z0-9]*\s*s   (\'[^\']*\'|"[^"]*")\s*t   SGMLParseErrorc           B   s   t  Z d  Z RS(   s&   Exception raised for all parse errors.(   t   __name__t
   __module__t   __doc__(    (    (    t*   /home/www/blong/programs/python/sgmllib.pyR   1   s   c           B   sI  t  Z d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z	 d
 „  Z
 d „  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z h  d d <d d <d d <d d <d d <Z d  „  Z d! „  Z d" „  Z d# „  Z d$ „  Z d% „  Z d& „  Z d' „  Z  d( „  Z! RS()   Ni    c         C   s   | |  _  |  i ƒ  d  S(   N(   t   verboset   selft   reset(   R   R   (    (    R   t   __init__D   s    	c         C   s1   d |  _ g  |  _ d |  _ d |  _ d |  _ d  S(   Nt    s   ???i    (   R   t   rawdatat   stackt   lasttagt
   nomoretagst   literal(   R   (    (    R   R	   I   s
    				c         C   s   d |  _ |  _ d  S(   Ni   (   R   R   R   (   R   (    (    R   t   setnomoretagsQ   s    c         G   s   d |  _ d  S(   Ni   (   R   R   (   R   t   args(    (    R   t
   setliteralU   s    c         C   s!   |  i | |  _ |  i d ƒ d  S(   Ni    (   R   R   t   datat   goahead(   R   R   (    (    R   t   feed\   s    c         C   s   |  i d ƒ d  S(   Ni   (   R   R   (   R   (    (    R   t   closea   s    c   	      C   sŸ  |  i } d } t | ƒ } x>| | j  o0|  i o |  i | | | !ƒ | } Pn t i | | ƒ } | o | i
 d ƒ } n | } | | j  o |  i | | | !ƒ n | } | | j o Pn | | d j ot i	 | | ƒ oZ |  i o" |  i | | ƒ | d } q n |  i | ƒ } | d j  o Pn | } q n t i	 | | ƒ o7 |  i | ƒ } | d j  o Pn | } d |  _ q n t i	 | | ƒ o^ |  i o" |  i | | ƒ | d } q n |  i | ƒ } | d j  o Pn | | } q n t i	 | | ƒ o^ |  i o" |  i | | ƒ | d } q n |  i | ƒ } | d j  o Pn | | } q n t i	 | | ƒ } | oZ |  i o" |  i | | ƒ | d } q n |  i | ƒ } | d j  o Pn | } q qánþ | | d j oà t i	 | | ƒ } | oU | i d ƒ } |  i | ƒ | i d ƒ } | | d d j o | d } q q n t i	 | | ƒ } | oU | i d ƒ } |  i | ƒ | i d ƒ } | | d d j o | d } q q qán t d ƒ ‚ t  i	 | | ƒ } | p" |  i | | ƒ | d } q n | i d ƒ } | | j o Pn |  i | | | !ƒ | } q W| o+ | | j  o |  i | | | !ƒ | } n | | |  _ d  S(   Ni    t   <i   t   &t   ;s   neither < nor & ??(!   R   R   t   it   lent   nR   t   handle_datat   interestingt   searcht   matcht   startt   jt   starttagopenR   t   parse_starttagt   kt
   endtagopent   parse_endtagt   commentopent   parse_commentt   piopent   parse_pit   specialt   parse_declarationt   charreft   groupt   namet   handle_charreft   endt	   entityreft   handle_entityrefR   t
   incomplete(	   R   R3   R   R#   R   R   R&   R!   R1   (    (    R   R   g   sÆ    	 
   

  	

 


 


   

c         C   s”   |  i } | | | d !d j o t d ƒ ‚ n t i | | d ƒ } | p d Sn | i d ƒ } |  i	 | | d | !ƒ | i
 d ƒ } | | S(   Ni   s   <!--s"   unexpected call to parse_comment()iÿÿÿÿi    (   R   R   R   R   t   commentcloseR    R!   R"   R#   t   handle_commentR3   (   R   R   R#   R   R!   (    (    R   R*   Ê   s    	c         C   s  |  i } | d } xè | | | d !} | d j o$ |  i | | d | !ƒ | d Sn | d j o1 t i | | ƒ } | p d Sn | i	 ƒ  } q | d j o1 t
 i | | ƒ } | p d Sn | i	 ƒ  } q | t | ƒ j o d Sq | d } q Wd p
 t d ‚ d  S(	   Ni   i   R   s   "'iÿÿÿÿt4   abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZi    s   can't get here!(   R   R   R   R#   t   ct   handle_declt   declstringlitR!   t   mR3   t   declnameR   t   AssertionError(   R   R   R:   R#   R=   R   (    (    R   R.   ×   s,    	
  c         C   s”   |  i } | | | d !d j o t d ƒ ‚ n t i | | d ƒ } | p d Sn | i d ƒ } |  i	 | | d | !ƒ | i
 d ƒ } | | S(   Ni   s   <?s   unexpected call to parse_pi()iÿÿÿÿi    (   R   R   R   R   t   picloseR    R!   R"   R#   t	   handle_piR3   (   R   R   R#   R   R!   (    (    R   R,   ÷   s    	c         C   s   |  i S(   N(   R   t   _SGMLParser__starttag_text(   R   (    (    R   t   get_starttag_text  s    c         C   s¬  d  |  _ | } |  i } t i | | ƒ o– t i | | ƒ } | p d Sn | i	 d d ƒ \ } }	 d | |  _ | i ƒ  } | i d ƒ }
 |  i | |	 ƒ | | | i d ƒ d !|  _ |
 Sn t i | | d ƒ } | p d Sn | i d ƒ } g  } | | | d !d j o | }
 |  i } n] t i | | d ƒ } | p t d ƒ ‚ n | i d ƒ }
 | | d |
 !i ƒ  } | |  _ xä |
 | j  oÖ t i | |
 ƒ } | p Pn | i	 d d d ƒ \ } } } | p
 | } n^ | d  d	 j o | d j n p& | d  d
 j o | d j n o | d d !} n | i | i ƒ  | f ƒ | i d ƒ }
 q…W| | d j o | d } n | | | !|  _ |  i | | ƒ | S(   Niÿÿÿÿi   i   s   <%s/i    s   <>s!   unexpected call to parse_starttagi   s   't   "R   (   t   NoneR   RB   R   t	   start_posR   t   shorttagopenR!   t   shorttagR0   t   tagR   t   lowerR3   R&   t   finish_shorttagt
   endbracketR    R"   R#   t   attrsR   t   tagfindR   t   attrfindt   attrnamet   restt	   attrvaluet   appendt   finish_starttag(   R   R   RR   R#   RQ   RP   RI   R   RF   R   R&   R!   RM   (    (    R   R%     sZ    			  
Lc         C   sŠ   |  i } t i | | d ƒ } | p d Sn | i d ƒ } | | d | !i ƒ  i	 ƒ  } | | d j o | d } n |  i | ƒ | S(   Ni   iÿÿÿÿi    i   R   (   R   R   RL   R    R   R!   R"   R#   t   stripRJ   RI   t   finish_endtag(   R   R   R#   RI   R   R!   (    (    R   R(   ?  s    	c         C   s.   |  i | g  ƒ |  i | ƒ |  i | ƒ d  S(   N(   R   RT   RI   R   R   RV   (   R   RI   R   (    (    R   RK   L  s    c         C   s°   y t  |  d | ƒ } Wnk t j
 o_ y t  |  d | ƒ } Wn' t j
 o |  i | | ƒ d Sq¬ X|  i | | | ƒ d Sn) X|  i i	 | ƒ |  i | | | ƒ d Sd  S(   Nt   start_t   do_iÿÿÿÿi    i   (
   t   getattrR   RI   t   methodt   AttributeErrort   unknown_starttagRM   t   handle_starttagR   RS   (   R   RI   RM   RZ   (    (    R   RT   S  s    		c         C   sw  | p9 t |  i ƒ d } | d j  o |  i | ƒ d  Sqã n¤ | |  i j oO y t |  d | ƒ } Wn  t j
 o |  i | ƒ n X|  i	 | ƒ d  Sn t |  i ƒ } x2 t
 | ƒ D]$ } |  i | | j o
 | } q» q» Wx t |  i ƒ | j ov |  i d } y t |  d | ƒ } Wn t j
 o d  } n X| o |  i | | ƒ n |  i | ƒ |  i d =qæ Wd  S(   Ni   i    t   end_iÿÿÿÿ(   RI   R   R   R   t   foundt   unknown_endtagRY   RZ   R[   t   report_unbalancedt   rangeR   RE   t   handle_endtag(   R   RI   R   R_   RZ   (    (    R   RV   e  s8       c         C   s   | | ƒ d  S(   N(   RZ   RM   (   R   RI   RZ   RM   (    (    R   R]   „  s    c         C   s   | ƒ  d  S(   N(   RZ   (   R   RI   RZ   (    (    R   Rc   ˆ  s    c         C   s+   |  i o d | d GHd G|  i GHn d  S(   Ns   *** Unbalanced </R   s
   *** Stack:(   R   R   RI   R   (   R   RI   (    (    R   Ra   Œ  s    
c         C   s   y t  | ƒ } Wn$ t j
 o |  i | ƒ d  Sn Xd | j o
 d j n p |  i | ƒ d  Sn |  i t | ƒ ƒ d  S(   Ni    iÿ   (   t   intR1   R   t
   ValueErrorR   t   unknown_charrefR   t   chr(   R   R1   R   (    (    R   R2   ’  s    	t   ltR   t   gtR   t   ampR   t   quotRD   t   aposs   'c         C   sC   |  i } | i | ƒ o |  i | | ƒ n |  i | ƒ d  Sd  S(   N(   R   t
   entitydefst   tablet   has_keyR1   R   t   unknown_entityref(   R   R1   Rn   (    (    R   R5   ¢  s
    	c         C   s   d  S(   N(    (   R   R   (    (    R   R   «  s    c         C   s   d  S(   N(    (   R   R   (    (    R   R8   ¯  s    c         C   s   d  S(   N(    (   R   t   decl(    (    R   R;   ³  s    c         C   s   d  S(   N(    (   R   R   (    (    R   RA   ·  s    c         C   s   d  S(   N(    (   R   RI   RM   (    (    R   R\   »  s    c         C   s   d  S(   N(    (   R   RI   (    (    R   R`   ¼  s    c         C   s   d  S(   N(    (   R   t   ref(    (    R   Rf   ½  s    c         C   s   d  S(   N(    (   R   Rr   (    (    R   Rp   ¾  s    ("   R   R   R
   R	   R   R   R   R   R   R*   R.   R,   RE   RB   RC   R%   R(   RK   RT   RV   R]   Rc   Ra   R2   Rm   R5   R   R8   R;   RA   R\   R`   Rf   Rp   (    (    (    R   R    A   s>   						c		 			7								3									t   TestSGMLParserc           B   s\   t  Z d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z	 d
 „  Z
 RS(   Ni    c         C   s   d |  _ t i |  | ƒ d  S(   NR   (   R   t   testdataR    R
   R   (   R   R   (    (    R   R
   Ã  s    	c         C   s9   |  i | |  _ t |  i ƒ d j o |  i ƒ  n d  S(   NiF   (   R   Rt   R   R   t   flush(   R   R   (    (    R   R   Ç  s    c         C   s+   |  i } | o d |  _ d G| GHn d  S(   NR   s   data:(   R   Rt   R   (   R   R   (    (    R   Ru   Ì  s    		c         C   sK   |  i ƒ  | } t | ƒ d j o | d  d | d } n d G| GHd  S(   NiD   i    s   ...iàÿÿÿs   comment:(   R   Ru   R   t   rR   (   R   R   Rv   (    (    R   R8   Ò  s
    
c         C   s^   |  i ƒ  | p d | d GHn9 d | Gx( | D]  \ } } | d d | d Gq1 Wd GHd  S(   Ns   start tag: <R   t   =RD   (   R   Ru   RM   RI   R1   t   value(   R   RI   RM   Rx   R1   (    (    R   R\   Ù  s    
 c         C   s   |  i ƒ  d | d GHd  S(   Ns   end tag: </R   (   R   Ru   RI   (   R   RI   (    (    R   R`   ã  s    
c         C   s   |  i ƒ  d | d GHd  S(   Ns   *** unknown entity ref: &R   (   R   Ru   Rr   (   R   Rr   (    (    R   Rp   ç  s    
c         C   s   |  i ƒ  d | d GHd  S(   Ns   *** unknown char ref: &#R   (   R   Ru   Rr   (   R   Rr   (    (    R   Rf   ë  s    
c         C   s   t  i |  ƒ |  i ƒ  d  S(   N(   R    R   R   Ru   (   R   (    (    R   R   ï  s    (   R   R   R
   R   Ru   R8   R\   R`   Rp   Rf   R   (    (    (    R   Rs   Á  s   				
			c   	      C   s,  d  k  } |  p | i d }  n |  o% |  d d j o |  d }  t } n t } |  o |  d } n d } | d j o | i } nF y t	 | d ƒ } Wn/ t
 j
 o# } | Gd G| GH| i d ƒ n X| i ƒ  } | | i j	 o | i ƒ  n | ƒ  } x | D] } | i | ƒ qW| i ƒ  d  S(   Ni   i    s   -ss	   test.htmlt   -Rv   t   :(   t   sysR   t   argvR    t   klassRs   t   filet   stdint   ft   opent   IOErrort   msgt   exitt   readR   R   t   xR:   R   (	   R   R:   R€   R   R{   R}   R~   R†   Rƒ   (    (    R   t   testô  s2    	

	 t   __main__(   R   t   ret   stringt   __all__t   compileR   R6   R4   R/   R$   RG   RH   R+   R@   R'   RL   R-   R)   R7   RN   RO   R>   R<   t   RuntimeErrorR   R    Rs   RE   R‡   R   (   R$   Rs   R>   R    R/   R+   R@   R-   R‹   R   R‰   RH   RO   RG   RL   RŠ   R'   R‡   R)   R7   R   R<   RN   R4   R6   (    (    R   t   ?   s8   
			ÿ 3$