£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>

j f5                 @   s   d  d l  m Z m Z m Z Gd d   d e j  Z Gd d   d e  Z Gd d   d e  Z Gd d	   d	 e  Z	 d
 d d  Z
 d S)   )grammartokentokenizec               @   s   e  Z d  Z d S)PgenGrammarN)__name__
__module____qualname__ r	   r	   7/opt/alt/python34/lib64/python3.4/lib2to3/pgen2/pgen.pyr      s   r   c               @   s   e  Z 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 d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d  d!  Z d" d#   Z d$ d%   Z d S)&ParserGeneratorNc             C   s   d  } | d  k r* t  |  } | j } n  | |  _ | |  _ t j | j  |  _ |  j   |  j	   \ |  _
 |  _ | d  k	 r |   n  i  |  _ |  j   d  S)N)openclosefilenamestreamr   generate_tokensreadline	generatorgettokenparsedfasstartsymbolfirstaddfirstsets)selfr   r   Zclose_streamr	   r	   r
   __init__   s    		

	zParserGenerator.__init__c             C   s  t    } t |  j j    } | j   | j |  j  | j d |  j  x; | D]3 } d t | j	  } | | j	 | <| | j
 | <qR Wx | D] } |  j | } g  } x | D] } g  } xE | j j   D]4 \ }	 }
 | j |  j | |	  | j |
  f  q W| j r,| j d | j |  f  n  | j |  q W| j j |  | |  j | |  f | j | j	 | <q W| j	 |  j | _ | S)N       )r   listr   keyssortremover   insertlensymbol2numberZnumber2symbolarcsitemsappend
make_labelindexisfinalstates
make_firststart)r   cnamesnameidfar*   stater$   labelnextr	   r	   r
   make_grammar   s.    	
,	*zParserGenerator.make_grammarc             C   sD   |  j  | } i  } x* | D]" } |  j | |  } d | | <q W| S)Nr   )r   r'   )r   r-   r/   Zrawfirstr   r3   ilabelr	   r	   r
   r+   4   s    zParserGenerator.make_firstc             C   s  t  | j  } | d j   r| | j k ry | | j k rH | j | S| j j | j | d  f  | | j | <| Sqt t | d   } t | t	  s t
 |   | t j k s t
 |   | | j k r | j | S| j j | d  f  | | j | <| Sn | d d k s!t
 |   t |  } | d j   r| | j k rW| j | S| j j t j | f  | | j | <| SnN t j | } | | j k r| j | S| j j | d  f  | | j | <| Sd  S)Nr   "')r7   r8   )r"   Zlabelsisalphar#   Zsymbol2labelr&   getattrr   
isinstanceintAssertionErrortok_nametokensevalkeywordsNAMEr   Zopmap)r   r-   r3   r6   Zitokenvaluer	   r	   r
   r'   =   s<    zParserGenerator.make_labelc             C   sS   t  |  j j    } | j   x- | D]% } | |  j k r& |  j |  q& q& Wd  S)N)r   r   r   r   r   	calcfirst)r   r.   r/   r	   r	   r
   r   k   s
    
zParserGenerator.addfirstsetsc          	   C   sj  |  j  | } d  |  j | <| d } i  } i  } x | j j   D] \ } } | |  j  k r | |  j k r |  j | } | d  k r t d |   q n |  j |  |  j | } | j |  | | | <q@ d | | <i d | 6| | <q@ Wi  }	 xd | j   D]V \ } }
 xG |
 D]? } | |	 k rGt d | | | |	 | f   n  | |	 | <qWq W| |  j | <d  S)Nr   zrecursion for rule %rr   zArule %s is ambiguous; %s is in the first sets of %s as well as %s)r   r   r$   r%   
ValueErrorrD   update)r   r/   r1   r2   ZtotalsetZoverlapcheckr3   r4   fsetZinverseZitsfirstZsymbolr	   r	   r
   rD   s   s2    

zParserGenerator.calcfirstc       	      C   s   i  } d  } x |  j  t j k r x  |  j  t j k rC |  j   q$ W|  j t j  } |  j t j d  |  j   \ } } |  j t j  |  j	 | |  } t
 |  } |  j |  t
 |  } | | | <| d  k r | } q q W| | f S)N:)typer   	ENDMARKERNEWLINEr   expectrB   OP	parse_rhsmake_dfar"   simplify_dfa)	r   r   r   r/   azr1   ZoldlenZnewlenr	   r	   r
   r      s"    
zParserGenerator.parsec                sD  t  | t  s t  t  | t  s* t    f d d   }   f d d     t | |  |  g } x | D] } i  } xS | j D]H } x? | j D]4 \ } }	 | d  k	 r   |	 | j | i    q q Wq Wxj | j   D]\ \ } }
 x= | D] } | j |
 k r Pq q Wt |
 |  } | j |  | j	 | |  q Wqm W| S)Nc                s   i  }   |  |  | S)Nr	   )r2   base)
addclosurer	   r
   closure   s    z)ParserGenerator.make_dfa.<locals>.closurec                si   t  |  t  s t  |  | k r% d  Sd | |  <x3 |  j D]( \ } } | d  k r9   | |  q9 q9 Wd  S)Nr   )r;   NFAStater=   r$   )r2   rS   r3   r4   )rT   r	   r
   rT      s    
z,ParserGenerator.make_dfa.<locals>.addclosure)
r;   rV   r=   DFAStatenfasetr$   
setdefaultr%   r&   addarc)r   r,   finishrU   r*   r2   r$   Znfastater3   r4   rX   str	   )rT   r
   rO      s&    $zParserGenerator.make_dfac       
      C   s   t  d |  | g } x t |  D] \ } } t  d | | | k rJ d pM d  x | j D]t \ } } | | k r | j |  }	 n t |  }	 | j |  | d  k r t  d |	  q[ t  d | |	 f  q[ Wq# Wd  S)NzDump of NFA forz  Statez(final) z	    -> %dz    %s -> %d)print	enumerater$   r(   r"   r&   )
r   r/   r,   r[   Ztodor0   r2   r3   r4   jr	   r	   r
   dump_nfa   s    	"zParserGenerator.dump_nfac             C   s   t  d |  xv t |  D]h \ } } t  d | | j r> d pA d  x: | j j   D]) \ } } t  d | | j |  f  qU Wq Wd  S)NzDump of DFA forz  Statez(final)r]   z    %s -> %d)r^   r_   r)   r$   r%   r(   )r   r/   r1   r0   r2   r3   r4   r	   r	   r
   dump_dfa   s
    zParserGenerator.dump_dfac             C   s   d } x | r d } x t  |  D]x \ } } xi t | d t |   D]N } | | } | | k rH | | =x | D] } | j | |  qr Wd } PqH qH Wq" Wq	 Wd  S)NTFr   )r_   ranger"   
unifystate)r   r1   Zchangesr0   Zstate_ir`   Zstate_jr2   r	   r	   r
   rP      s    	 
zParserGenerator.simplify_dfac             C   s   |  j    \ } } |  j d k r+ | | f St   } t   } | j |  | j |  xI |  j d k r |  j   |  j    \ } } | j |  | j |  qZ W| | f Sd  S)N|)	parse_altrC   rV   rZ   r   )r   rQ   rR   ZaaZzzr	   r	   r
   rN      s    
		
zParserGenerator.parse_rhsc             C   sr   |  j    \ } } xS |  j d k s? |  j t j t j f k rg |  j    \ } } | j |  | } q W| | f S)N([)rg   rh   )
parse_itemrC   rI   r   rB   STRINGrZ   )r   rQ   br-   dr	   r	   r
   rf   
  s    
zParserGenerator.parse_altc             C   s   |  j  d k rU |  j   |  j   \ } } |  j t j d  | j |  | | f S|  j   \ } } |  j  } | d k r | | f S|  j   | j |  | d k r | | f S| | f Sd  S)Nrh   ]+*)rn   ro   )rC   r   rN   rL   r   rM   rZ   
parse_atom)r   rQ   rR   rC   r	   r	   r
   ri     s    

	


zParserGenerator.parse_itemc             C   s   |  j  d k rH |  j   |  j   \ } } |  j t j d  | | f S|  j t j t j f k r t	   } t	   } | j
 | |  j   |  j   | | f S|  j d |  j |  j   d  S)Nrg   )z+expected (...) or NAME or STRING, got %s/%s)rC   r   rN   rL   r   rM   rI   rB   rj   rV   rZ   raise_error)r   rQ   rR   r	   r	   r
   rp   (  s    

		

	zParserGenerator.parse_atomc             C   sc   |  j  | k s* | d  k	 rL |  j | k rL |  j d | | |  j  |  j  n  |  j } |  j   | S)Nzexpected %s/%s, got %s/%s)rI   rC   rr   r   )r   rI   rC   r	   r	   r
   rL   9  s    *		
zParserGenerator.expectc             C   si   t  |  j  } x/ | d t j t j f k r@ t  |  j  } q W| \ |  _ |  _ |  _ |  _ |  _	 d  S)Nr   )
r4   r   r   COMMENTNLrI   rC   Zbeginendline)r   tupr	   r	   r
   r   A  s    zParserGenerator.gettokenc             G   sz   | rG y | | } WqG d j  | g t t t |    } YqG Xn  t | |  j |  j d |  j d |  j f   d  S)N r   r   )joinr   mapstrSyntaxErrorr   ru   rv   )r   msgargsr	   r	   r
   rr   H  s    -zParserGenerator.raise_error)r   r   r   r   r5   r+   r'   r   rD   r   rO   ra   rb   rP   rN   rf   ri   rp   rL   r   rr   r	   r	   r	   r
   r   
   s$   	.$
r   c               @   s+   e  Z d  Z d d   Z d d d  Z d S)rV   c             C   s   g  |  _  d  S)N)r$   )r   r	   r	   r
   r   S  s    zNFAState.__init__Nc             C   sP   | d  k s! t  | t  s! t  t  | t  s6 t  |  j j | | f  d  S)N)r;   r{   r=   rV   r$   r&   )r   r4   r3   r	   r	   r
   rZ   V  s    !zNFAState.addarc)r   r   r   r   rZ   r	   r	   r	   r
   rV   Q  s   rV   c               @   sF   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 Z d	 S)
rW   c             C   sp   t  | t  s t  t  t t |   t  s6 t  t  | t  sK t  | |  _ | | k |  _ i  |  _ d  S)N)	r;   dictr=   r4   iterrV   rX   r)   r$   )r   rX   finalr	   r	   r
   r   ]  s    !	zDFAState.__init__c             C   sP   t  | t  s t  | |  j k s* t  t  | t  s? t  | |  j | <d  S)N)r;   r{   r=   r$   rW   )r   r4   r3   r	   r	   r
   rZ   e  s    zDFAState.addarcc             C   s@   x9 |  j  j   D]( \ } } | | k r | |  j  | <q q Wd  S)N)r$   r%   )r   oldnewr3   r4   r	   r	   r
   rd   k  s    zDFAState.unifystatec             C   s   t  | t  s t  |  j | j k r+ d St |  j  t | j  k rM d Sx9 |  j j   D]( \ } } | | j j |  k	 r] d Sq] Wd S)NFT)r;   rW   r=   r)   r"   r$   r%   get)r   otherr3   r4   r	   r	   r
   __eq__p  s    zDFAState.__eq__N)r   r   r   r   rZ   rd   r   __hash__r	   r	   r	   r
   rW   [  s
   rW   zGrammar.txtc             C   s   t  |   } | j   S)N)r   r5   )r   pr	   r	   r
   generate_grammar  s    r   N)r]   r   r   r   ZGrammarr   objectr   rV   rW   r   r	   r	   r	   r
   <module>   s    H
%