ó
è¾bc           @   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/lib/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/lib/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  } xK t
 | 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   sortedt   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/lib/python2.7/lib2to3/pgen2/pgen.pyt   make_grammar   s.    	
",	*c         C   sJ   |  j  | } i  } x0 t | ƒ D]" } |  j | | ƒ } d | | <q  W| S(   Ni   (   R   R   R#   (   R   R)   R+   t   rawfirstR   R/   t   ilabel(    (    s(   /usr/lib/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  ƒ } t	 | t
 t f ƒ 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 r]| j | S| j j t j | f ƒ | | j | <| SnN t j | } | | j k r±| j | S| j j | d  f ƒ | | j | <| Sd  S(   Ni    t   "t   '(   R4   R5   (   R   t   labelst   isalphaR   t   symbol2labelR"   R   t   getattrR   t
   isinstancet   intt   longt   AssertionErrort   tok_namet   tokenst   evalt   keywordst   NAMER    t   opmap(   R   R)   R/   R3   t   itokent   value(    (    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyR#   =   s<    !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/lib/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
   ValueErrorRF   t   update(   R   R+   R-   R.   t   totalsett   overlapcheckR/   R0   t   fsett   inverset   itsfirstt   symbol(    (    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyRF   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   expectRB   t   OPt	   parse_rhst   make_dfaR   t   simplify_dfa(	   R   R   R   R+   t   at   zR-   t   oldlent   newlen(    (    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyR   ‘   s"    
c            sD  t  | t ƒ s t ‚ t  | t ƒ s* t ‚ ‡  f d †  } ‡  f d †  ‰  t | | ƒ | ƒ g } xÝ | D]Õ } i  } xS | j D]H } x? | j D]4 \ } }	 | d  k	 r ˆ  |	 | j | i  ƒ ƒ q q Wq} Wxp t | j	 ƒ  ƒ D]\ \ } }
 x= | D] } | j |
 k rï Pqï qï Wt |
 | ƒ } | j
 | ƒ | j | | ƒ qÜ Wqg W| S(   Nc            s   i  } ˆ  |  | ƒ | S(   N(    (   R.   t   base(   t
   addclosure(    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyt   closure°   s    c            si   t  |  t ƒ s t ‚ |  | k r% d  Sd | |  <x3 |  j D]( \ } } | d  k r9 ˆ  | | ƒ q9 q9 Wd  S(   Ni   (   R:   t   NFAStateR=   R    R   (   R.   R\   R/   R0   (   R]   (    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyR]   ´   s    
(   R:   R_   R=   t   DFAStatet   nfasetR    R   t
   setdefaultR   R!   R"   t   addarc(   R   R(   t   finishR^   R&   R.   R    t   nfastateR/   R0   Ra   t   st(    (   R]   s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyRV   ©   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(   Rd   t   todoR,   R.   R/   R0   t   j(    (    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyt   dump_nfaÍ   s    		c         C   s„   d G| GHxt t  | ƒ D]f \ } } d G| G| j r9 d p< d GHx; t | j j ƒ  ƒ D]$ \ } } d | | j | ƒ f GHqT Wq Wd  S(   Ns   Dump of DFA fors     States   (final)Rg   s       %s -> %d(   Rh   R%   R   R    R!   R$   (   R   R+   R-   R,   R.   R/   R0   (    (    s(   /usr/lib/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   FalseRh   t   rangeR   t
   unifystate(   R   R-   t   changesR,   t   state_iRj   t   state_jR.   (    (    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyRW   ä   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_altRE   R_   Rc   R   (   R   RX   RY   t   aat   zz(    (    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyRU   ù   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   [(   Rx   Ry   (   t
   parse_itemRE   RP   R   RB   t   STRINGRc   (   R   RX   t   bR)   t   d(    (    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyRu   
  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(   NRy   t   ]t   +t   *(   R   R€   (   RE   R   RU   RS   R   RT   Rc   t
   parse_atom(   R   RX   RY   RE   (    (    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyRz     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(   NRx   t   )s+   expected (...) or NAME or STRING, got %s/%s(   RE   R   RU   RS   R   RT   RP   RB   R{   R_   Rc   t   raise_error(   R   RX   RY   (    (    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyR   (  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(   RP   R   RE   Rƒ   R   (   R   RP   RE   (    (    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyRS   9  s    *		
c         C   si   |  j  j ƒ  } x/ | d t j t j f k r@ |  j  j ƒ  } q W| \ |  _ |  _ |  _ |  _ |  _	 d  S(   Ni    (
   R   R0   R   t   COMMENTt   NLRP   RE   t   begint   endt   line(   R   t   tup(    (    s(   /usr/lib/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/lib/python2.7/lib2to3/pgen2/pgen.pyRƒ   H  s    &N(   R   R   R   R   R1   R'   R#   R   RF   R   RV   Rk   Rl   RW   RU   Ru   Rz   R   RS   R   Rƒ   (    (    (    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyR   
   s$   				.				$					
			R_   c           B   s   e  Z d  „  Z d d „ Z RS(   c         C   s   g  |  _  d  S(   N(   R    (   R   (    (    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyR   S  s    c         C   sP   | d  k s! t | t ƒ s! t ‚ t | t ƒ s6 t ‚ |  j j | | f ƒ d  S(   N(   R   R:   R   R=   R_   R    R"   (   R   R0   R/   (    (    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyRc   V  s    !N(   R   R   R   R   Rc   (    (    (    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyR_   Q  s   	R`   c           B   s2   e  Z d  „  Z d „  Z d „  Z d „  Z d Z RS(   c         C   sp   t  | t ƒ s t ‚ t  t | ƒ j ƒ  t ƒ s6 t ‚ t  | t ƒ sK t ‚ | |  _ | | k |  _ i  |  _ d  S(   N(	   R:   t   dictR=   t   iterR0   R_   Ra   R%   R    (   R   Ra   t   final(    (    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyR   ]  s    !	c         C   sP   t  | t ƒ s t ‚ | |  j k s* t ‚ t  | t ƒ s? t ‚ | |  j | <d  S(   N(   R:   R   R=   R    R`   (   R   R0   R/   (    (    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyRc   e  s    c         C   s@   x9 |  j  j ƒ  D]( \ } } | | k r | |  j  | <q q Wd  S(   N(   R    R!   (   R   t   oldt   newR/   R0   (    (    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyRp   k  s    c         C   s   t  | t ƒ s t ‚ |  j | j k r+ t St |  j ƒ t | j ƒ k rM t Sx9 |  j j ƒ  D]( \ } } | | j j | ƒ k	 r] t Sq] Wt	 S(   N(
   R:   R`   R=   R%   Rn   R   R    R!   t   getRm   (   R   t   otherR/   R0   (    (    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyt   __eq__p  s    N(   R   R   R   Rc   Rp   R˜   R   t   __hash__(    (    (    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyR`   [  s
   				s   Grammar.txtc         C   s   t  |  ƒ } | j ƒ  S(   N(   R   R1   (   R
   t   p(    (    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyt   generate_grammar€  s    N(   Rg   R    R   R   t   GrammarR   t   objectR   R_   R`   R›   (    (    (    s(   /usr/lib/python2.7/lib2to3/pgen2/pgen.pyt   <module>   s   ÿ H
%