ó
éŸ?`c           @   s‡   d  d l  m Z m Z m Z d e j f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d	 „  ƒ  YZ	 d
 d „ Z
 d S(   i   (   t   grammart   tokent   tokenizet   PgenGrammarc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyR      s   t   ParserGeneratorc           B   s°   e  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 d „ Z d „  Z d „  Z RS(   c         C   s    d  } | d  k r* t | ƒ } | j } n  | |  _ | |  _ t j | j ƒ |  _ |  j	 ƒ  |  j
 ƒ  \ |  _ |  _ | d  k	 r‰ | ƒ  n  i  |  _ |  j ƒ  d  S(   N(   t   Nonet   opent   closet   filenamet   streamR   t   generate_tokenst   readlinet	   generatort   gettokent   parset   dfast   startsymbolt   firstt   addfirstsets(   t   selfR
   R   t   close_stream(    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyt   __init__   s    		

	c         C   sˆ  t  ƒ  } |  j j ƒ  } | j ƒ  | j |  j ƒ | j d |  j ƒ x; | D]3 } d t | j ƒ } | | j | <| | j	 | <qL 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(   Ni    i   (   R   R   t   keyst   sortt   removeR   t   insertt   lent   symbol2numbert   number2symbolt   arcst	   iteritemst   appendt
   make_labelt   indext   isfinalt   statest
   make_firstt   start(   R   t   ct   namest   namet   it   dfaR%   t   stateR   t   labelt   next(    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyt   make_grammar   s.    	
,	*c         C   sD   |  j  | } i  } x* | D]" } |  j | | ƒ } d | | <q W| S(   Ni   (   R   R"   (   R   R(   R*   t   rawfirstR   R.   t   ilabel(    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyR&   4   s    c         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  ƒ } | | j	 k r¥ | j	 | S| j j | d  f ƒ | | j	 | <| Sn± t
 | ƒ } | d j ƒ  r2| | j k r| j | S| j j t j | f ƒ | | j | <| SnN t j | } | | j	 k rY| j	 | S| j j | d  f ƒ | | j	 | <| Sd  S(   Ni    (   R   t   labelst   isalphaR   t   symbol2labelR!   R   t   getattrR   t   tokenst   evalt   keywordst   NAMER    t   opmap(   R   R(   R.   R2   t   itokent   value(    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyR"   =   s6    c         C   sM   |  j  j ƒ  } | j ƒ  x- | D]% } | |  j k r  |  j | ƒ q  q  Wd  S(   N(   R   R   R   R   t	   calcfirst(   R   R)   R*   (    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyR   k   s
    
c      	   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(   Ni    s   recursion for rule %ri   sA   rule %s is ambiguous; %s is in the first sets of %s as well as %s(   R   R   R   R   R    t
   ValueErrorR>   t   update(   R   R*   R,   R-   t   totalsett   overlapcheckR.   R/   t   fsett   inverset   itsfirstt   symbol(    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyR>   s   s2    

c   	      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(   Nt   :(   R   t   typeR   t	   ENDMARKERt   NEWLINER   t   expectR:   t   OPt	   parse_rhst   make_dfaR   t   simplify_dfa(	   R   R   R   R*   t   at   zR,   t   oldlent   newlen(    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyR   ‘   s"    
c            s  ‡  f d †  } ‡  f d †  ‰  t  | | ƒ | ƒ g } x× | D]Ï } i  } xS | j D]H } x? | j D]4 \ } }	 | d  k	 rc ˆ  |	 | j | i  ƒ ƒ qc qc WqS Wxj | j ƒ  D]\ \ } }
 x= | D] } | j |
 k r¿ Pq¿ q¿ Wt  |
 | ƒ } | j | ƒ | j | | ƒ q¬ Wq= W| S(   Nc            s   i  } ˆ  |  | ƒ | S(   N(    (   R-   t   base(   t
   addclosure(    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyt   closure°   s    c            sT   |  | k r d  Sd | |  <x3 |  j  D]( \ } } | d  k r$ ˆ  | | ƒ q$ q$ Wd  S(   Ni   (   R   R   (   R-   RT   R.   R/   (   RU   (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyRU   ´   s    
(   t   DFAStatet   nfasetR   R   t
   setdefaultR    R!   t   addarc(   R   R'   t   finishRV   R%   R-   R   t   nfastateR.   R/   RX   t   st(    (   RU   s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyRN   ©   s"    $c   
      C   sÊ   d G| GH| g } x± t  | ƒ D]£ \ } } d G| G| | k rE d pH d GHxu | j D]j \ } } | | k r~ | j | ƒ }	 n t | ƒ }	 | j | ƒ | d  k r¯ d |	 GHqT d | |	 f GHqT Wq Wd  S(   Ns   Dump of NFA fors     States   (final)t    s	       -> %ds       %s -> %d(   t	   enumerateR   R#   R   R!   R   (
   R   R*   R'   R[   t   todoR+   R-   R.   R/   t   j(    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyt   dump_nfaÍ   s    		c         C   s~   d G| GHxn t  | ƒ D]` \ } } d G| G| j r9 d p< d GHx5 | j j ƒ  D]$ \ } } d | | j | ƒ f GHqN Wq Wd  S(   Ns   Dump of DFA fors     States   (final)R^   s       %s -> %d(   R_   R$   R   R    R#   (   R   R*   R,   R+   R-   R.   R/   (    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyt   dump_dfaÝ   s
    	c         C   s¦   t  } x™ | r¡ t } x† t | ƒ D]x \ } } xi t | d t | ƒ ƒ D]N } | | } | | k rH | | =x | D] } | j | | ƒ qr Wt  } PqH qH Wq" Wq	 Wd  S(   Ni   (   t   Truet   FalseR_   t   rangeR   t
   unifystate(   R   R,   t   changesR+   t   state_iRa   t   state_jR-   (    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyRO   ä   s    	 
c         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(   Nt   |(   t	   parse_altR=   t   NFAStateRZ   R   (   R   RP   RQ   t   aat   zz(    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyRM   ù   s    
		
c         C   sr   |  j  ƒ  \ } } xS |  j d k s? |  j t j t j f k rg |  j  ƒ  \ } } | j | ƒ | } q W| | f S(   Nt   (t   [(   Rp   Rq   (   t
   parse_itemR=   RH   R   R:   t   STRINGRZ   (   R   RP   t   bR(   t   d(    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyRl   
  s    
c         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(   NRq   t   ]t   +t   *(   Rw   Rx   (   R=   R   RM   RK   R   RL   RZ   t
   parse_atom(   R   RP   RQ   R=   (    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyRr     s    

	


c         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(   NRp   t   )s+   expected (...) or NAME or STRING, got %s/%s(   R=   R   RM   RK   R   RL   RH   R:   Rs   Rm   RZ   t   raise_error(   R   RP   RQ   (    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyRy   (  s    

		

	c         C   sc   |  j  | k s* | d  k	 rL |  j | k rL |  j d | | |  j  |  j ƒ n  |  j } |  j ƒ  | S(   Ns   expected %s/%s, got %s/%s(   RH   R   R=   R{   R   (   R   RH   R=   (    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyRK   9  s    *		
c         C   si   |  j  j ƒ  } x/ | d t j t j f k r@ |  j  j ƒ  } q W| \ |  _ |  _ |  _ |  _ |  _	 d  S(   Ni    (
   R   R/   R   t   COMMENTt   NLRH   R=   t   begint   endt   line(   R   t   tup(    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyR   A  s    c         G   ss   | r@ y | | } Wq@ d j  | g t t | ƒ ƒ } q@ Xn  t | |  j |  j d |  j d |  j f ƒ ‚ d  S(   Nt    i    i   (   t   joint   mapt   strt   SyntaxErrorR
   R   R€   (   R   t   msgt   args(    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyR{   H  s    &N(   R   R   R   R   R0   R&   R"   R   R>   R   RN   Rb   Rc   RO   RM   Rl   Rr   Ry   RK   R   R{   (    (    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyR   
   s$   				.				$					
			Rm   c           B   s   e  Z d  „  Z d d „ Z RS(   c         C   s   g  |  _  d  S(   N(   R   (   R   (    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyR   S  s    c         C   s   |  j  j | | f ƒ d  S(   N(   R   R!   (   R   R/   R.   (    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyRZ   V  s    N(   R   R   R   R   RZ   (    (    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyRm   Q  s   	RW   c           B   s2   e  Z d  „  Z d „  Z d „  Z d „  Z d Z RS(   c         C   s%   | |  _  | | k |  _ i  |  _ d  S(   N(   RX   R$   R   (   R   RX   t   final(    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyR   ]  s    	c         C   s   | |  j  | <d  S(   N(   R   (   R   R/   R.   (    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyRZ   e  s    c         C   s@   x9 |  j  j ƒ  D]( \ } } | | k r | |  j  | <q q Wd  S(   N(   R   R    (   R   t   oldt   newR.   R/   (    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyRg   k  s    c         C   sx   |  j  | j  k r t St |  j ƒ t | j ƒ k r8 t Sx9 |  j j ƒ  D]( \ } } | | j j | ƒ k	 rH t SqH Wt S(   N(   R$   Re   R   R   R    t   getRd   (   R   t   otherR.   R/   (    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyt   __eq__p  s    N(   R   R   R   RZ   Rg   RŽ   R   t   __hash__(    (    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyRW   [  s
   				s   Grammar.txtc         C   s   t  |  ƒ } | j ƒ  S(   N(   R   R0   (   R
   t   p(    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyt   generate_grammar€  s    N(   R^   R    R   R   t   GrammarR   t   objectR   Rm   RW   R‘   (    (    (    s*   /usr/lib64/python2.7/lib2to3/pgen2/pgen.pyt   <module>   s   ÿ H
%