
tFSc           @   s  d  Z  d Z d Z d Z d Z d Z d Z d Z d Z d Z	 d	 d
 l
 Z
 d	 d
 l Z d	 d
 l Z d	 d
 l Z e j d d k  r d   Z n	 d   Z y e j Z Wn e k
 r e j Z n Xd   Z d e f d     YZ d e f d     YZ d e f d     YZ d   Z d   Z d f  d     YZ d f  d     YZ d f  d     YZ d	 d
 l
 Z
 e
 j  d  Z! d e f d     YZ" d e f d      YZ# d! e f d"     YZ$ d#   Z% d$ e f d%     YZ& d& e f d'     YZ' d( e f d)     YZ( d* e f d+     YZ) d,   Z* d-   Z+ d. e f d/     YZ, d0 e) f d1     YZ- d2   Z. d3   Z/ d4 e f d5     YZ0 d e e1 e e1 d d d e d6 e1 e1 e1 d7  Z2 d
 S(8   s   3.4s   3.2i   s
   parser.outt   parsetabt   LALRi   i    i(   iNc         C   s   |  j  S(   N(   t	   func_code(   t   f(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR   [   s    c         C   s   |  j  S(   N(   t   __code__(   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR   ^   s    c          C   s5   t  j d d k  r" d d  l }  n d d  l j }  |  S(   Ni    i   i(   t   syst   version_infot   lext   ply.lex(   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   load_ply_lexh   s    t	   PlyLoggerc           B   s8   e  Z d    Z d   Z e Z d   Z d   Z e Z RS(   c         C   s   | |  _  d  S(   N(   R   (   t   selfR   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   __init__v   s    c         O   s   |  j  j | | d  d  S(   Ns   
(   R   t   write(   R   t   msgt   argst   kwargs(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   debugx   s    c         O   s    |  j  j d | | d  d  S(   Ns	   WARNING: s   
(   R   R   (   R   R   R   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   warning|   s    c         O   s    |  j  j d | | d  d  S(   Ns   ERROR: s   
(   R   R   (   R   R   R   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   error   s    (   t   __name__t
   __module__R   R   t   infoR   R   t   critical(    (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR
   u   s   				t
   NullLoggerc           B   s   e  Z d    Z d   Z RS(   c         C   s   |  S(   N(    (   R   t   name(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   __getattribute__   s    c         O   s   |  S(   N(    (   R   R   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   __call__   s    (   R   R   R   R   (    (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR      s   	t	   YaccErrorc           B   s   e  Z RS(    (   R   R   (    (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR      s    c         C   sp   t  |   } d | k r' t  |  } n  t |  t k rJ | t  d } n  d t |   j t |   | f } | S(   Ns   
s    ...s   <%s @ 0x%x> (%s)(   t   reprt   lent   resultlimitt   typeR   t   id(   t   rt   repr_strt   result(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   format_result   s     "c         C   s^   t  |   } d | k r' t  |  } n  t |  d k  r= | Sd t |   j t |   f Sd  S(   Ns   
i   s   <%s @ 0x%x>(   R   R   R    R   R!   (   R"   R#   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   format_stack_entry   s     t
   YaccSymbolc           B   s   e  Z d    Z d   Z RS(   c         C   s   |  j  S(   N(   R    (   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   __str__   s    c         C   s
   t  |   S(   N(   t   str(   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   __repr__   s    (   R   R   R(   R*   (    (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR'      s   	t   YaccProductionc           B   sn   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 RS(   c         C   s(   | |  _  | |  _ d  |  _ d  |  _ d  S(   N(   t   slicet   stackt   Nonet   lexert   parser(   R   t   sR-   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR      s    			c         C   s,   | d k r |  j  | j S|  j | j Sd  S(   Ni    (   R,   t   valueR-   (   R   t   n(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   __getitem__   s     c         C   s   | |  j  | _ d  S(   N(   R,   R2   (   R   R3   t   v(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   __setitem__   s    c         C   s$   g  |  j  | | !D] } | j ^ q S(   N(   R,   R2   (   R   t   it   jR1   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   __getslice__   s    c         C   s   t  |  j  S(   N(   R   R,   (   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   __len__   s    c         C   s   t  |  j | d d  S(   Nt   linenoi    (   t   getattrR,   (   R   R3   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR;      s    c         C   s   | |  j  | _ d  S(   N(   R,   R;   (   R   R3   R;   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt
   set_lineno   s    c         C   s<   t  |  j | d d  } t  |  j | d |  } | | f S(   NR;   i    t	   endlineno(   R<   R,   (   R   R3   t	   startlinet   endline(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   linespan   s    c         C   s   t  |  j | d d  S(   Nt   lexposi    (   R<   R,   (   R   R3   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyRB      s    c         C   s<   t  |  j | d d  } t  |  j | d |  } | | f S(   NRB   i    t	   endlexpos(   R<   R,   (   R   R3   t   startpost   endpos(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   lexspan   s    c         C   s
   t   d  S(   N(   t   SyntaxError(   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR      s    N(   R   R   R.   R   R4   R6   R9   R:   R;   R=   RA   RB   RF   R   (    (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR+      s   									t   LRParserc           B   s   e  Z d    Z d   Z d   Z e e d d e d  Z e e e d e d  Z e e d d e d  Z e e d d e d  Z	 RS(   c         C   s1   | j  |  _ | j |  _ | j |  _ | |  _ d  S(   N(   t   lr_productionst   productionst	   lr_actiont   actiont   lr_gotot   gotot	   errorfunc(   R   t   lrtabt   errorf(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR      s    c         C   s   d |  _  d  S(   Ni   (   t   errorok(   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   errok   s    c         C   sD   |  j  2|  j 2t   } d | _ |  j j |  |  j  j d  d  S(   Ns   $endi    (   t
   statestackt   symstackR'   R    t   append(   R   t   sym(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   restart   s    		i    c         C   s   | s t  rF t | t  r- t t j  } n  |  j | | | | |  S| re |  j | | | | |  S|  j | | | | |  Sd  S(   N(	   t	   yaccdevelt
   isinstancet   intR
   R   t   stderrt
   parsedebugt   parseoptt   parseopt_notrack(   R   t   inputR/   R   t   trackingt	   tokenfunc(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   parse  s    c   !   	   C   s!  d  } g  } |  j } |  j }	 |  j }
 t d   } d } | j d  | sa t   } | j } n  | | _ |  | _ | d  k	 r | j	 |  n  | d  k r | j
 } n | } g  } | |  _ g  } | |  _ | | _ d  } | j d  t   } d | _ | j |  d } x| j d  | j d |  | sn| sD|   } n | j   } | snt   } d | _ qnn  | j d d d j g  | D] } | j ^ qd	  t |  f j    | j } | | j |  } | d  k	 r| d k r:| j |  | } | j d
 |  | j |  d  } | r| d	 8} qqn  | d k  r1|
 | } | j } | j } t   } | | _ d  | _ | r| j d | j d d j g  | | D] } t | j  ^ q d |  n | j d | j g  |  | rD| | d	 } | | d <| rq| d	 } | j | _ | j | _ | d } t | d | j  | _ t | d | j  | _ n  | | _  yg | | 3| | 3| j! |  | j d t" | d   | j |  |	 | d | } | j |  Wqt# k
 r=| j |  | j   | j   | d } d | _ | } t$ } d |  _% qXqq1| re| j | _ | j | _ n  | g } | | _  yW | j! |  | j d t" | d   | j |  |	 | d | } | j |  Wqt# k
 r*| j |  | j   | j   | d } d | _ | } t$ } d |  _% qXqn  | d k r| d } t | d d   } | j d t" |   | j d  | Sn  | d  k r| j& d d d j g  | D] } | j ^ qd	  t |  f j    | d k s|  j% rt$ } d |  _% | } | j d k rd  } n  |  j' r|  j( a( | a
 |  j) a) | r]t* | d  r]| | _ n  |  j' |  } b( b
 b) |  j% r| } d  } qqq| rt* | d  r| j }  n d }  |  rt+ j, j- d |  | j f  qt+ j, j- d | j  qt+ j, j- d  d  Sn t$ } t |  d	 k rT| j d k rTd  } d  } d } | 2qn  | j d k rgd  S| j d k r| d } | j d k rd  } qn  t   } d | _ t* | d  r| j | _ n  | | _ | j |  | } q| j   | j   | d } qn  t. d   qd  S(   Ni    s   PLY: PARSE DEBUG STARTs   $endt    s   State  : %ss   Stack  : %ss   %s . %st    i   s    Action : Shift and goto state %ss3   Action : Reduce rule [%s] with %s and goto state %dt   [t   ,t   ]iR>   RC   s   Result : %sR   R2   s   Done   : Returning %ss   PLY: PARSE DEBUG ENDs   Error  : %sR/   R;   s(   yacc: Syntax error at line %d, token=%s
s   yacc: Syntax error, token=%ss    yacc: Parse error in input. EOF
s   yacc: internal parser error!!!
(/   R.   RL   RN   RJ   R+   R   R	   R/   R0   R`   t   tokenRT   RU   R-   RV   R'   R    R   t   popt   joinR)   t   lstript   getR   R   R2   R&   R;   RB   R<   R>   RC   R,   t   callableR%   RG   t   error_countRR   R   RO   RS   RX   t   hasattrR   R\   R   t   RuntimeError(!   R   R`   R/   R   Ra   Rb   t	   lookaheadt   lookaheadstackt   actionsRN   t   prodt   pslicet
   errorcountR   t	   get_tokenRT   RU   t   errtokenRW   t   statet   xxt   ltypet   tt   pt   pnamet   plent   _vt   targt   t1R3   R$   t   tokR;   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR]     s^   													@	 					O


		


			


	
	@								  !
				


c         C   s  d  } g  } |  j } |  j }	 |  j }
 t d   } d } | sT t   } | j } n  | | _ |  | _ | d  k	 r | j |  n  | d  k r | j	 } n | } g  } | |  _
 g  } | |  _ | | _ d  } | j d  t   } d | _ | j |  d } x| sD| s|   } n | j   } | sDt   } d | _ qDn  | j } | | j |  } | d  k	 r4| d k r| j |  | } | j |  d  } | r| d 8} qqn  | d k  r|
 | } | j } | j } t   } | | _ d  | _ | r8| | d } | | d <| r| d } | j | _ | j | _ | d } t | d | j  | _ t | d | j  | _ n  | | _ yM | | 3| | 3| j |  | j |  |	 | d | } | j |  Wqt k
 r1| j |  | j   | j   | d } d | _ | } t } d |  _ qXqq| rY| j | _ | j | _ n  | g } | | _ y= | j |  | j |  |	 | d | } | j |  Wqt k
 r| j |  | j   | j   | d } d | _ | } t } d |  _ qXqn  | d k r4| d } t | d d   Sn  | d  k rv| d k sU|  j ryt } d |  _ | } | j d k rd  } n  |  j r|  j  a  | a	 |  j! a! | rt" | d	  r| | _ n  |  j |  } b  b	 b! |  j rv| } d  } qqvq| rbt" | d
  r| j } n d } | rHt# j$ j% d | | j f  qvt# j$ j% d | j  qt# j$ j% d  d  Sn t } t |  d k r| j d k rd  } d  } d } | 2qn  | j d k rd  S| j d k rR| d } | j d k rd  } qn  t   } d | _ t" | d
  r3| j | _ n  | | _ | j |  | } q| j   | j   | d } qn  t& d   qd  S(   Ni    s   $endi   iR>   RC   R   R2   R/   R;   s(   yacc: Syntax error at line %d, token=%s
s   yacc: Syntax error, token=%ss    yacc: Parse error in input. EOF
s   yacc: internal parser error!!!
('   R.   RL   RN   RJ   R+   R	   R/   R0   R`   Ri   RT   RU   R-   RV   R'   R    Rj   Rm   R   R   R2   R;   RB   R<   R>   RC   R,   Rn   RG   Ro   RR   RO   RS   RX   Rp   R   R\   R   Rq   (   R   R`   R/   R   Ra   Rb   Rr   Rs   Rt   RN   Ru   Rv   Rw   R   Rx   RT   RU   Ry   RW   Rz   R|   R}   R~   R   R   R   R   R3   R   R;   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR^   U  s>   													 					


		


			


	
								  !
				


c         C   s  d  } g  } |  j } |  j }	 |  j }
 t d   } d } | sT t   } | j } n  | | _ |  | _ | d  k	 r | j |  n  | d  k r | j	 } n | } g  } | |  _
 g  } | |  _ | | _ d  } | j d  t   } d | _ | j |  d } x| sD| s|   } n | j   } | sDt   } d | _ qDn  | j } | | j |  } | d  k	 r| d k r| j |  | } | j |  d  } | r| d 8} qqn  | d k  r|
 | } | j } | j } t   } | | _ d  | _ | r| | d } | | d <| | _ yM | | 3| | 3| j |  | j |  |	 | d | } | j |  Wqt k
 r| j |  | j   | j   | d } d | _ | } t } d |  _ qXqq| g } | | _ y= | j |  | j |  |	 | d | } | j |  Wqt k
 r~| j |  | j   | j   | d } d | _ | } t } d |  _ qXqn  | d k r| d } t | d d   Sn  | d  k r| d k s|  j rt } d |  _ | } | j d k rd  } n  |  j ru|  j a | a	 |  j a | r?t | d  r?| | _ n  |  j |  } b b	 b |  j r| } d  } qqq| rt | d  r| j } n d } | rt  j! j" d	 | | j f  qt  j! j" d
 | j  qt  j! j" d  d  Sn t } t |  d k r6| j d k r6d  } d  } d } | 2qn  | j d k rId  S| j d k r| d } | j d k r}d  } qn  t   } d | _ t | d  r| j | _ n  | | _ | j |  | } q| j   | j   | d } qn  t# d   qd  S(   Ni    s   $endi   iR   R2   R/   R;   s(   yacc: Syntax error at line %d, token=%s
s   yacc: Syntax error, token=%ss    yacc: Parse error in input. EOF
s   yacc: internal parser error!!!
($   R.   RL   RN   RJ   R+   R	   R/   R0   R`   Ri   RT   RU   R-   RV   R'   R    Rj   Rm   R   R   R2   R,   Rn   RG   Ro   RR   R<   RO   RS   RX   Rp   R;   R   R\   R   Rq   (   R   R`   R/   R   Ra   Rb   Rr   Rs   Rt   RN   Ru   Rv   Rw   R   Rx   RT   RU   Ry   RW   Rz   R|   R}   R~   R   R   R   R3   R   R;   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR_   e  s*   													 					
	


			


	
								  !
				


(
   R   R   R   RS   RX   R.   Rc   R]   R^   R_   (    (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyRH      s   			 < s   ^[a-zA-Z0-9_-]+$t
   Productionc           B   sb   e  Z d  Z d d d d  d  Z d   Z d   Z d   Z d   Z d   Z	 d	   Z
 d
   Z RS(   i    t   rightRd   c   	      C   s   | |  _  t |  |  _ | |  _ | |  _ d  |  _ | |  _ | |  _ | |  _	 t
 |  j  |  _
 g  |  _ x3 |  j D]( } | |  j k rs |  j j |  qs qs Wg  |  _ d  |  _ |  j r d |  j  d j |  j  f |  _ n d |  j  |  _ d  S(   Ns   %s -> %sRe   s   %s -> <empty>(   R   t   tupleRu   t   numbert   funcR.   Rn   t   filet   linet   precR   t   usymsRV   t   lr_itemst   lr_nextRk   R)   (	   R   R   R   Ru   t
   precedenceR   R   R   R1   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR     s$    											%c         C   s   |  j  S(   N(   R)   (   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR(     s    c         C   s   d t  |   d S(   Ns   Production(t   )(   R)   (   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR*     s    c         C   s   t  |  j  S(   N(   R   Ru   (   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR:     s    c         C   s   d S(   Ni   (    (   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   __nonzero__  s    c         C   s   |  j  | S(   N(   Ru   (   R   t   index(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR4     s    c         C   s   | t  |  j  k r d  St |  |  } y t | j | d | _ Wn  t t f k
 rf g  | _ n Xy | j | d | _ Wn t k
 r d  | _ n X| S(   Ni   (	   R   Ru   R.   t   LRItemt	   Prodnamest   lr_aftert
   IndexErrort   KeyErrort	   lr_before(   R   R3   R~   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   lr_item  s     c         C   s    |  j  r | |  j  |  _ n  d  S(   N(   R   Rn   (   R   t   pdict(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   bind  s    	(   s   righti    N(   R   R   t   reducedR.   R   R(   R*   R:   R   R4   R   R   (    (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR     s   						t   MiniProductionc           B   s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C   sC   | |  _  | |  _ | |  _ d  |  _ | |  _ | |  _ | |  _ d  S(   N(   R   R   R   R.   Rn   R   R   R)   (   R   R)   R   R   R   R   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR     s    						c         C   s   |  j  S(   N(   R)   (   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR(     s    c         C   s   d |  j  S(   Ns   MiniProduction(%s)(   R)   (   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR*     s    c         C   s    |  j  r | |  j  |  _ n  d  S(   N(   R   Rn   (   R   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR     s    	(   R   R   R   R(   R*   R   (    (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR     s   			R   c           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   s   | j  |  _  t | j  |  _ | j |  _ | |  _ i  |  _ |  j j | d  t |  j  |  _ t |  j  |  _ | j	 |  _	 d  S(   Nt   .(
   R   t   listRu   R   t   lr_indext
   lookaheadst   insertR   R   R   (   R   R~   R3   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR     s    		c         C   s<   |  j  r+ d |  j d j |  j   f } n d |  j } | S(   Ns   %s -> %sRe   s   %s -> <empty>(   Ru   R   Rk   (   R   R1   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR(     s    	"c         C   s   d t  |   d S(   Ns   LRItem(R   (   R)   (   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR*     s    (   R   R   R   R(   R*   (    (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR     s   		c         C   sI   t  |   d } x2 | d k rD |  | | k r7 |  | S| d 8} q Wd  S(   Ni   i    (   R   R.   (   t   symbolst	   terminalsR7   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   rightmost_terminal  s    t   GrammarErrorc           B   s   e  Z RS(    (   R   R   (    (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR      s    t   Grammarc           B   s   e  Z d    Z d   Z d   Z d   Z d d d d  Z d d  Z d   Z	 d	   Z
 d
   Z d   Z d   Z d   Z d   Z d   Z d d  Z d   Z RS(   c         C   s   d  g |  _ i  |  _ i  |  _ i  |  _ x | D] } g  |  j | <q. Wg  |  j d <i  |  _ i  |  _ i  |  _ i  |  _ i  |  _	 d  |  _
 d  S(   NR   (   R.   t   ProductionsR   t   Prodmapt	   Terminalst   Nonterminalst   Firstt   Followt
   Precedencet   UsedPrecedencet   Start(   R   R   t   term(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR   #  s    								c         C   s   t  |  j  S(   N(   R   R   (   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR:   G  s    c         C   s   |  j  | S(   N(   R   (   R   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR4   J  s    c         C   sr   |  j  d  g k s t d   | |  j k r@ t d |   n  | d k r[ t d   n  | | f |  j | <d  S(   Ns2   Must call set_precedence() before add_production()s.   Precedence already specified for terminal '%s't   leftR   t   nonassocs:   Associativity must be one of 'left','right', or 'nonassoc'(   s   lefts   rightR   (   R   R.   t   AssertionErrorR   R   (   R   R   t   assoct   level(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   set_precedenceU  s    Rd   i    c         C   s  | |  j  k r+ t d | | | f   n  | d k rS t d | | | f   n  t j |  s~ t d | | | f   n  x t |  D] \ } } | d d k r+ym t |  } t |  d k r t d | | | | f   n  | |  j  k rg  |  j  | <n  | | | <w Wq+t k
 r'q+Xn  t j |  r | d	 k r t d
 | | | | f   q q Wd	 | k r | d d	 k rt d | | f   n  | d d	 k rt d | | f   n  | d }	 |  j j	 |	 d   }
 |
 s	t d | | |	 f   n d |  j |	 <| d 3n' t | |  j   }	 |  j j	 |	 d  }
 d | | f } | |  j k r|  j | } t d | | | f d | j | j f   n  t |  j  } | |  j k rg  |  j | <n  xg | D]_ } | |  j  k r|  j  | j |  q| |  j k r#g  |  j | <n  |  j | j |  qWt | | | |
 | | |  } |  j j |  | |  j | <y |  j | j |  Wn! t k
 r| g |  j | <n Xd S(   Ns9   %s:%d: Illegal rule name '%s'. Already defined as a tokenR   s7   %s:%d: Illegal rule name '%s'. error is a reserved words   %s:%d: Illegal rule name '%s'i    s   '"i   sC   %s:%d: Literal token %s in rule '%s' may only be a single characters   %precs%   %s:%d: Illegal name '%s' in rule '%s'is+   %s:%d: Syntax error. Nothing follows %%precisH   %s:%d: Syntax error. %%prec can only appear at the end of a grammar rules1   %s:%d: Nothing known about the precedence of '%s'R   s   %s -> %ss   %s:%d: Duplicate rule %s. s   Previous definition at %s:%d(   s   righti    (   R   R   t   _is_identifiert   matcht	   enumeratet   evalR   RG   R   Rm   R.   R   R   R   R   R   R   R   RV   R   R   R   (   R   t   prodnamet   symsR   R   R   R3   R1   t   ct   precnamet   prodprect   mapt   mt   pnumberR}   R~   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   add_productionn  sn    
#

c         C   sx   | s |  j  d j } n  | |  j k r; t d |   n  t d d | g  |  j  d <|  j | j d  | |  _ d  S(   Ni   s   start symbol %s undefinedi    s   S'(   R   R   R   R   R   RV   R   (   R   t   start(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt	   set_start  s    c            s       f d     i   x. t   j  t   j  D] } d  | <q8 W   j d j d  g  t   j  D] }  | st | ^ qt S(   Nc            sZ    |  r d  Sd  |  <x;  j  j |  g   D]$ } x | j D] }   |  q> Wq. Wd  S(   Ni   (   R   Rm   Ru   (   R1   R~   R"   (   t   mark_reachable_fromt	   reachableR   (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR     s    

i    (   R   R   R   R   Ru   (   R   R1   (    (   R   R   R   sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   find_unreachable  s    	#c         C   sR  i  } x |  j  D] } d | | <q Wd | d <x |  j D] } d | | <q8 Wx d } x |  j j   D]r \ } } xc | D][ } x+ | j D] } | | s d } Pq q Wd } | rx | | s d | | <d } n  Pqx qx Wqe W| sO PqO qO g  }	 x] | j   D]O \ } }
 |
 s | |  j k r:| |  j  k r:| d k r:qJ|	 j |  q q W|	 S(   Ni   s   $endi    R   (   R   R   R   t   itemsRu   RV   (   R   t
   terminatesR}   R3   t   some_changet   plR~   R1   t   p_terminatest   infiniteR   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   infinite_cycles  s:    



	*c         C   s~   g  } xq |  j  D]f } | s" q n  xQ | j D]F } | |  j k r, | |  j k r, | d k r, | j | | f  q, q, Wq W| S(   NR   (   R   Ru   R   R   RV   (   R   R$   R~   R1   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   undefined_symbols/  s     *c         C   sM   g  } x@ |  j  j   D]/ \ } } | d k r | r | j |  q q W| S(   NR   (   R   R   RV   (   R   t
   unused_tokR1   R5   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   unused_terminals?  s
    c         C   sQ   g  } xD |  j  j   D]3 \ } } | s |  j | d } | j |  q q W| S(   Ni    (   R   R   R   RV   (   R   t   unused_prodR1   R5   R~   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   unused_rulesN  s    c         C   s]   g  } xP |  j  D]E } | |  j k p1 | |  j k s | j | |  j  | d f  q q W| S(   Ni    (   R   R   R   RV   (   R   t   unusedt   termname(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   unused_precedence_  s
    %c         C   s   g  } xt | D]_ } d } xF |  j  | D]7 } | d k rB d } q' | | k r' | j |  q' q' W| rk q Pq W| j d  | S(   Ni    s   <empty>i   (   R   RV   (   R   t   betaR$   t   xt   x_produces_emptyR   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   _firsto  s    	 c         C   s   |  j  r |  j  Sx! |  j D] } | g |  j  | <q Wd g |  j  d <x |  j D] } g  |  j  | <qN Wx d } xv |  j D]k } xb |  j | D]S } xJ |  j | j  D]6 } | |  j  | k r |  j  | j |  d } q q Wq Wqx W| sh Pqh qh |  j  S(   Ns   $endi    i   (   R   R   R   R   R   Ru   RV   (   R   R}   R3   R   R~   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   compute_first  s$    	c   
      C   s  |  j  r |  j  S|  j s& |  j   n  x |  j D] } g  |  j  | <q0 W| s` |  j d j } n  d g |  j  | <xYd } xC|  j d D]4} x+t t | j   D]} | j | } | |  j k r |  j	 | j | d  } d } x_ | D]W }	 |	 d k r.|	 |  j  | k r.|  j  | j
 |	  d } n  |	 d k r d } q q W| sf| t | j  d k rxK |  j  | j D]6 }	 |	 |  j  | k rw|  j  | j
 |	  d } qwqwWqq q Wq W| ss Pqs qs |  j  S(   Ni   s   $endi    s   <empty>(   R   R   R   R   R   R   t   rangeR   Ru   R   RV   (
   R   R   t   kt   didaddR~   R7   t   Bt   fstt   hasemptyR   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   compute_follow  s>    			 c         C   s
  x|  j  D] } | } d } g  } x | t |  k r@ d  } n t | |  } y |  j | j | d | _ Wn  t t f k
 r g  | _ n Xy | j | d | _	 Wn t k
 r d  | _	 n X| | _
 | s Pn  | j |  | } | d 7} q% | | _ q
 Wd  S(   Ni    i   (   R   R   R.   R   R   Ru   R   R   R   R   R   RV   R   (   R   R~   t   lastlriR7   R   t   lri(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   build_lritems  s.    		 N(   R   R   R   R:   R4   R   R.   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR   "  s    	$			S		A					"	%;t   VersionErrorc           B   s   e  Z RS(    (   R   R   (    (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR     s    t   LRTablec           B   s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C   s(   d  |  _ d  |  _ d  |  _ d  |  _ d  S(   N(   R.   RK   RM   RI   t	   lr_method(   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR     s    			c         B   s   e  | e j  r | } nG e j d d k  r= d | d  Un% i  } d | | | f d  U| d } | j e k r e d   n  | j |  _	 | j
 |  _ g  |  _ x' | j D] } |  j j e |    q W| j |  _ | j S(   Ni    i   s   import %s as parsetabR    s&   yacc table file version is out of date(   RZ   t   typest
   ModuleTypeR   R   t   _tabversiont   __tabversion__R   t
   _lr_actionRK   t   _lr_gotoRM   RI   t   _lr_productionsRV   R   t
   _lr_methodR   t   _lr_signature(   R   t   moduleR    t   envR~   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt
   read_table  s     	
	c         C   s   y d d  l  } Wn t k
 r/ d d  l } n Xt | d  } | j |  } | t k ri t d   n  | j |  |  _ | j |  } | j |  |  _ | j |  |  _	 | j |  } g  |  _
 x$ | D] } |  j
 j t |    q W| j   | S(   Nit   rbs&   yacc table file version is out of date(   t   cPicklet   ImportErrort   picklet   opent   loadR   R   R   RK   RM   RI   RV   R   t   close(   R   t   filenameR   t   in_ft
   tabversiont	   signatureRJ   R~   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   read_pickle5  s$    	
c         C   s%   x |  j  D] } | j |  q
 Wd  S(   N(   RI   R   (   R   R   R~   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   bind_callablesN  s    (   R   R   R   R   R  R  (    (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR     s   			c      	   C   sq   i  } x |  D] } d | | <q Wg  } i  } x= |  D]5 } | | d k r4 t  | | | | |  | |  q4 q4 W| S(   Ni    (   t   traverse(   t   Xt   Rt   FPt   NR   R-   t   F(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   digraphj  s     #c      	   C   s]  | j  |   t |  } | | |  <| |   | |  <| |   } x | D] }	 | |	 d k r{ t |	 | | | | | |  n  t | |  | |	  | |  <x> | j |	 g   D]* }
 |
 | |  k r | |  j  |
  q q WqF W| |  | k rYt | | d <| |  | | d <| j   } x? | |  k rUt | | d <| |  | | d <| j   } qWn  d  S(   Ni    i(   RV   R   R  t   minRm   t   MAXINTRj   (   R   R	  R-   R
  R  R  R  t   dt   relt   yt   at   element(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR  t  s(    
 t	   LALRErrorc           B   s   e  Z RS(    (   R   R   (    (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR    s    t   LRGeneratedTablec           B   s   e  Z d  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 d d  Z d d  Z RS(   R   c         C   s   | d k r t  d |   n  | |  _ | |  _ | sC t   } n  | |  _ i  |  _ i  |  _ | j |  _ i  |  _	 i  |  _
 d |  _ d |  _ d |  _ g  |  _ g  |  _ g  |  _ |  j j   |  j j   |  j j   |  j   d  S(   Nt   SLRR   s   Unsupported method %si    (   R  R   (   R  t   grammarR   R   t   logRK   RM   R   RI   t   lr_goto_cachet   lr0_cidhasht
   _add_countt   sr_conflictt   rr_conflictt	   conflictst   sr_conflictst   rr_conflictsR   R   R   t   lr_parse_table(   R   R  t   methodR  (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR     s,    													c         C   s   |  j  d 7_  | } d } xx | r d } xe | D]] } xT | j D]I } t | d d  |  j  k ri qB n  | j | j  |  j  | _ d } qB Wq2 Wq W| S(   Ni   i    t	   lr0_added(   R  R   R<   RV   R   R"  (   R   t   It   JR   R8   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   lr0_closure  s    	 c   	      C   sB  |  j  j t |  | f d   } | r+ | S|  j  j | d   } | s\ i  } | |  j  | <n  g  } xy | D]q } | j } | ri | j | k ri | j t |  d   } | s i  } | | t |  <n  | j |  | } qi qi W| j d d   } | s%| r|  j |  } | | d <q%| | d <n  | |  j  t |  | f <| S(   Ns   $end(   R  Rm   R!   R.   R   R   RV   R%  (	   R   R#  R   t   gR1   t   gsR~   R3   t   s1(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   lr0_goto  s2    ! 	c   	      C   s2  |  j  |  j j d j g  g } d } x+ | D]# } | |  j t |  <| d 7} q/ Wd } x | t |  k  r-| | } | d 7} i  } x, | D]$ } x | j D] } d  | | <q Wq Wxm | D]e } |  j	 | |  } | s q n  t |  |  j k r q n  t |  |  j t |  <| j
 |  q Wq_ W| S(   Ni    i   (   R%  R  R   R   R  R!   R   R   R.   R)  RV   (	   R   t   CR7   R#  t   asymst   iiR1   R   R&  (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt	   lr0_items  s,    "

  c         C   s   i  } d } x xk |  j  j d D]Y } | j d k rH d | | j <q  n  x. | j D] } | | k rR PqR qR Wd | | j <q  Wt |  | k r Pn  t |  } q | S(   Ni    i   (   R  R   R   R   Ru   (   R   t   nullablet   num_nullableR~   R}   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   compute_nullable_nonterminals-  s      c         C   s   g  } x t  t |   D] } xz | | D]n } | j | j d k  r* | | j | j d f } | d |  j j k r | | k r | j |  q q q* q* W| d } q W| S(   Ni   (   R   R   R   Ru   R  R   RV   (   R   R*  t   transRz   R~   R}   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   find_nonterminal_transitionsH  s     c         C   s   i  } | \ } } g  } |  j  | | |  } xl | D]d }	 |	 j |	 j d k  r5 |	 j |	 j d }
 |
 |  j j k r |
 | k r | j |
  q q q5 q5 W| d k r | |  j j d j d k r | j d  n  | S(   Ni   i    s   $end(   R)  R   R   Ru   R  R   RV   R   (   R   R*  R1  R.  t   dr_setRz   R	  t   termsR&  R~   R  (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   dr_relation\  s     )c         C   s   g  } | \ } } |  j  | | |  } |  j j t |  d  } x] | D]U }	 |	 j |	 j d k  rJ |	 j |	 j d }
 |
 | k r | j | |
 f  q qJ qJ W| S(   Nii   (   R)  R  Rm   R!   R   R   Ru   RV   (   R   R*  R1  t   emptyR  Rz   R	  R&  R8   R~   R  (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   reads_relationt  s    c         C   sl  i  } i  } i  } x | D] } d | | <q Wx2| D]*\ } }	 g  }
 g  } x| | D]} | j  |	 k rr qW n  | j } | } x | | j d k  rh| d } | j | } | | f | k r4| d } xg | | j k  r| j | |  j j k r Pn  | j | | k rPn  | d } q W| j | | f  n  |  j | | |  } |  j j	 t
 |  d  } q Wx | | D] } | j  | j  k rqtn  | j | j k rqtn  d } xR | | j k  r| j | | j | d k rPn  | d } qW|
 j | | f  qtWqW Wx> | D]6 } | | k r3g  | | <n  | | j | |	 f  qW|
 | | |	 f <q4 W| | f S(   Ni   ii    (   R   R   R   Ru   R  R   RV   R)  R  Rm   R!   (   R   R*  R1  R.  t   lookdictt   includedictt   dtransR}   Rz   R	  t   lookbt   includesR~   R   R8   t   liR&  R"   R7   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   compute_lookback_includes  sX     	

      c            s@       f d   }     f d   } t  | | |  } | S(   Nc            s    j    |    S(   N(   R5  (   R   (   R*  R.  R   (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   <lambda>  s    c            s    j    |    S(   N(   R7  (   R   (   R*  R.  R   (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR?    s    (   R  (   R   R*  t   ntransR.  R  R  R
  (    (   R*  R.  R   sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   compute_read_sets  s    c            s4    f d   }   f d   } t  | | |  } | S(   Nc            s     |  S(   N(    (   R   (   t   readsets(    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR?   	  s    c            s     j  |  g   S(   N(   Rm   (   R   (   t   inclsets(    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR?  	  s    (   R  (   R   R@  RB  RC  R  R  R
  (    (   RC  RB  sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   compute_follow_sets  s    c   	      C   s   x | j    D] \ } } x | D]x \ } } | | j k rK g  | j | <n  | j | g   } x8 | D]0 } | | j | k rd | j | j |  qd qd Wq  Wq Wd  S(   N(   R   R   Rm   RV   (	   R   t	   lookbackst	   followsetR1  t   lbRz   R~   R   R  (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   add_lookaheads	  s     c         C   st   |  j    } |  j |  } |  j | | |  } |  j | | |  \ } } |  j | | |  } |  j | |  d  S(   N(   R0  R2  RA  R>  RD  RH  (   R   R*  R.  R1  RB  t   lookdt   includedt
   followsets(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   add_lalr_lookaheads"	  s    c   $   
   C   s!  |  j  j } |  j  j } |  j } |  j } |  j } i  } | j d |  j  |  j   } |  j d k rw |  j	 |  n  d } x| D]}	 g  }
 i  } i  } i  } | j d  | j d |  | j d  x* |	 D]" } | j d | j
 t |   q W| j d  x,|	 D]$} | j | j d k r| j d k rOd | d	 <| | d	 <q1|  j d k rn| j | } n |  j  j | j } x| D]} |
 j | | d
 | j
 | f f  | j | d   } | d  k	 r| d k r| | | j
 j \ } } | j | d  \ } } | | k  s1| | k r| d k r| j
 | | <| | | <| r| r| j d |  |  j j | | d f  n  | | j
 j d 7_ q| | k r| d k rd  | | <q| s| j d |  |  j j | | d f  qq| d k  r| | } | | j
 } | j | j k r| j
 | | <| | | <| | } } | | j
 j d 7_ | | j
 j d 8_ n | | } } |  j j | | | f  | j d | | | j
 | |  qt d |   q| j
 | | <| | | <| | j
 j d 7_ qWq| j } | j | d } | |  j  j k r|  j |	 |  } |  j j t |  d  } | d k r1|
 j | | d | f  | j | d   } | d  k	 r| d k r| | k rt d |   qq+| d k  r| | | j
 j \ } } | j | d  \ } } | | k s?| | k r| d k r| | | j
 j d 8_ | | | <| | | <| s| j d |  |  j j | | d f  qq| | k r| d k rd  | | <q| r| r| j d |  |  j j | | d f  qq+t d |   q.| | | <| | | <q1qqWi  } x\ |
 D]T \ } } } | | k rB| | | k r| j d | |  d | | | f <qqBqBW| j d  d } xw |
 D]o \ } } } | | k r| | | k	 r#| | f | k r | j d | |  d } d | | | f <q q#qqW| r=| j d  n  i  }  xA |	 D]9 }! x0 |! j  D]% }" |" |  j  j! k rZd  |  |" <qZqZWqJWxg |  D]_ }# |  j |	 |#  } |  j j t |  d  } | d k r| | |# <| j d |# |  qqW| | | <| | | <| | | <| d 7} q Wd  S(   Ns   Parsing method: %sR   i    Rd   s   state %ds       (%d) %si   s   S's   $ends   reduce using rule %d (%s)R   R   s3     ! shift/reduce conflict for %s resolved as reducet   reduceR   s2     ! shift/reduce conflict for %s resolved as shiftt   shifts=     ! reduce/reduce conflict for %s resolved using rule %d (%s)s   Unknown conflict in state %dis   shift and go to state %ds    Shift/shift conflict in state %ds       %-15s %ss     ! %-15s [ %s ]s"       %-30s shift and go to state %d(   s   righti    (   s   righti    ("   R  R   R   RM   RK   R  R   R   R-  RL  R   R)   R   R   R   R   R   RV   Rm   R.   R   R  R   R   R  R  Ru   R   R)  R  R!   R   R   R   ($   R   R   R   RN   RL   R  t   actionpR*  t   stR#  t   actlistt	   st_actiont
   st_actionpt   st_gotoR~   t   laheadsR  R"   t   sprect   slevelt   rprect   rlevelt   oldpt   ppt   chosenpt   rejectpR7   R&  R8   t	   _actprintR   t   not_usedt   nkeysR,  R1   R3   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR   :	  s    			 
#$

$
	$






Rd   c      	   C   s  | j  d  d } t j j | |  d } y>t | d  } | j d | t |  j | f  d } | ri  } x |  j j	   D]y \ }	 }
 xj |
 j	   D]\ \ } } | j
 |  } | s g  g  f } | | | <n  | d j |	  | d j |  q Wq W| j d  x | j	   D] \ } } | j d	 |  x# | d D] } | j d
 |  q?W| j d  x# | d D] } | j d
 |  qrW| j d  qW| j d  | j d  n\ | j d  x? |  j j	   D]. \ } } | j d | d | d | f  qW| j d  | rni  } x |  j j	   D]y \ }	 }
 xj |
 j	   D]\ \ } } | j
 |  } | sg  g  f } | | | <n  | d j |	  | d j |  qLWq3W| j d  x | j	   D] \ } } | j d	 |  x# | d D] } | j d
 |  qW| j d  x# | d D] } | j d
 |  q%W| j d  qW| j d  | j d  n\ | j d  x? |  j j	   D]. \ } } | j d | d | d | f  qW| j d  | j d  xx |  j D]m } | j r(| j d | j | j | j | j | j | j f  q| j d t |  | j | j f  qW| j d  | j   WnP t k
 rt j   d } t j j d |  t j j t |  d  d  SXd  S(   NR   is   .pyt   wsu   
# %s
# This file is automatically generated. Do not edit.
_tabversion = %r

_lr_method = %r

_lr_signature = %r
    i   i    s   
_lr_action_items = {s   %r:([s   %r,s   ],[s   ]),s   }
s   
_lr_action = { }
for _k, _v in _lr_action_items.items():
   for _x,_y in zip(_v[0],_v[1]):
      if not _x in _lr_action:  _lr_action[_x] = { }
      _lr_action[_x][_k] = _y
del _lr_action_items
s   
_lr_action = { s   (%r,%r):%r,s   
_lr_goto_items = {s   
_lr_goto = { }
for _k, _v in _lr_goto_items.items():
   for _x,_y in zip(_v[0],_v[1]):
       if not _x in _lr_goto: _lr_goto[_x] = { }
       _lr_goto[_x][_k] = _y
del _lr_goto_items
s   
_lr_goto = { s   _lr_productions = [
s     (%r,%r,%d,%r,%r,%d),
s     (%r,%r,%d,None,None,None),
s   ]
s   Unable to create '%s'
s   
(   t   splitt   ost   pathRk   R   R   R   R   RK   R   Rm   RV   RM   RI   R   R)   R   R   R   R   R   t   IOErrorR   t   exc_infoR\   (   R   t
   modulenamet	   outputdirR  t   basemodulenameR   R   t   smallerR   R1   t   ndR   R5   R7   R   R~   t   e(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   write_table	  s    
&
&	8*c         C   sJ  y d d  l  } Wn t k
 r/ d d  l } n Xt | d  } | j t | t  | j |  j | t  | j | | t  | j |  j | t  | j |  j	 | t  g  } xy |  j
 D]n } | j r | j | j | j | j | j | j | j f  q | j t |  | j | j d  d  d  f  q W| j | | t  | j   d  S(   Nit   wb(   R   R   R   R   t   dumpR   t   pickle_protocolR   RK   RM   RI   R   RV   R)   R   R   R   R   R.   R   (   R   R   R  R   t   outft   outpR~   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   pickle_tablej
  s"    	4/N(   R   R   R.   R   R%  R)  R-  R0  R2  R5  R7  R>  RA  RD  RH  RL  R   Rm  Rs  (    (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR    s    %		"	9				+	J					yc         C   s   y
 t   Wn t  k
 r t j   \ } } } | j } x# |  d k r] | j } |  d 8}  q; W| j j   } | j | j k r | j | j  n  | SXd  S(   Ni    i   (	   Rq   R   Rf  t   tb_framet   f_backt	   f_globalst   copyt   f_localst   update(   t   levelsRl  t   bR}   R   t   ldict(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   get_caller_module_dict
  s    
		c         C   sO  g  } |  j    } d  } | } x*| D]"} | d 7} | j   } | sM q% n  y | d d k r | s t d | | f   n  | }	 | d }
 nU | d }	 |	 } | d }
 | d } | d k r | d k r t d | | f   n  | j | | |	 |
 f  Wq% t k
 r  q% t k
 rFt d	 | | | j   f   q% Xq% W| S(
   Ni   i    t   |s   %s:%d: Misplaced '|'i   t   :s   ::=s!   %s:%d: Syntax error. Expected ':'s    %s:%d: Syntax error in rule '%s'(   t
   splitlinesR.   Rb  RG   RV   t	   Exceptiont   strip(   t   docR   R   R  t   pstringst   lastpt   dlinet   psR~   R   R   t   assign(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   parse_grammar
  s6    
 


't   ParserReflectc           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 RS(   c         C   sm   | |  _  d  |  _ d  |  _ d  |  _ i  |  _ g  |  _ d |  _ | d  k r` t t	 j
  |  _ n	 | |  _ d  S(   Ni    (   R   R.   R   t
   error_funct   tokenst   filesR  R   R
   R   R\   R  (   R   R   R  (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR   
  s    							c         C   s6   |  j    |  j   |  j   |  j   |  j   d  S(   N(   t	   get_startt   get_error_funct
   get_tokenst   get_precedencet   get_pfunctions(   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   get_all
  s
    



c         C   sC   |  j    |  j   |  j   |  j   |  j   |  j   |  j S(   N(   t   validate_startt   validate_error_funct   validate_tokenst   validate_precedencet   validate_pfunctionst   validate_filesR   (   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   validate_all
  s    





c         C   sA  y d d l  m } Wn! t k
 r7 d d l m } n Xy |   } |  j ri | j |  j j d   n  |  j r | j d j g  |  j D] } d j |  ^ q  j d   n  |  j r | j d j |  j  j d   n  x8 |  j	 D]- } | d r | j | d j d   q q WWn t
 t f k
 r6n X| j   S(   Ni(   t   md5s   latin-1Rd   Re   i   (   t   hashlibR  R   R   Ry  t   encodeR   Rk   R  t   pfuncst	   TypeErrort
   ValueErrort   digest(   R   R  t   sigR~   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR  
  s$    			A	%
%c         C   s$  t  j d  } x|  j j   D] } t j j |  \ } } | d k rM d Sy& t |  } | j   } | j	   Wn t
 k
 r q n Xi  } x t |  D]{ \ } }	 | d 7} | j |	  }
 |
 r |
 j d  } | j |  } | s | | | <q|  j j d | | | |  q q Wq Wd  S(   Ns   \s*def\s+(p_[a-zA-Z_0-9]*)\(s   .pyi   s;   %s:%d: Function %s redefined. Previously defined on line %d(   t   ret   compileR  t   keysRc  Rd  t   splitextR   t	   readlinesR   Re  R   R   t   groupRm   R  R   (   R   t   freR   t   baset   extR   t   linest	   counthasht   linent   lR   R   t   prev(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR    s*     
c         C   s   |  j  j d  |  _ d  S(   NR   (   R   Rm   R   (   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR  '  s    c         C   s;   |  j  d  k	 r7 t |  j  t  s7 |  j j d  q7 n  d  S(   Ns   'start' must be a string(   R   R.   RZ   R)   R  R   (   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR  +  s    c         C   s   |  j  j d  |  _ d  S(   Nt   p_error(   R   Rm   R  (   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR  1  s    c         C   s   |  j  r t |  j  t j  r' d } n; t |  j  t j  rE d } n |  j j d  d |  _ d  St |  j   j } t |  j   j	 } d |  j
 | <t |  j   j d | k r |  j j d | |  d |  _ q n  d  S(   Ni    i   s2   'p_error' defined, but is not a function or methods$   %s:%d: p_error() requires 1 argument(   R  RZ   R   t   FunctionTypet
   MethodTypeR  R   R   t   co_firstlinenot   co_filenameR  t   co_argcount(   R   t   ismethodt   elinet   efile(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR  5  s    				c         C   s   |  j  j d d   } | s8 |  j j d  d |  _ d  St | t t f  sj |  j j d  d |  _ d  S| s |  j j d  d |  _ d  S| |  _ d  S(   NR  s   No token list is definedi   s   tokens must be a list or tuples   tokens is empty(	   R   Rm   R.   R  R   RZ   R   R   R  (   R   R  (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR  I  s    			c         C   sv   d |  j  k r, |  j j d  d |  _ d  Si  } x= |  j  D]2 } | | k rd |  j j d |  n  d | | <q< Wd  S(   NR   s.   Illegal token name 'error'. Is a reserved wordi   s   Token '%s' multiply defined(   R  R  R   R   (   R   R   R3   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR  ]  s    	c         C   s   |  j  j d d   |  _ d  S(   NR   (   R   Rm   R.   R   (   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR  k  s    c         C   si  g  } |  j  r\t |  j  t t f  sD |  j j d  d |  _ d  Sxt |  j   D]\ } } t | t t f  s |  j j d  d |  _ d  St |  d k  r |  j j d |  d |  _ d  S| d } t | t  s |  j j d  d |  _ d  SxX | d D]L } t | t  s7|  j j d  d |  _ d  S| j	 | | | d f  qWqT Wn  | |  _
 d  S(	   Ns"   precedence must be a list or tuplei   s   Bad precedence tablei   s?   Malformed precedence entry %s. Must be (assoc, term, ..., term)i    s)   precedence associativity must be a strings    precedence items must be strings(   R   RZ   R   R   R  R   R   R   R)   RV   t   preclist(   R   R  R   R~   R   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR  o  s6    				
		%c         C   s   g  } x |  j  j   D] \ } } | d  d k r8 q n  | d k rJ q n  t | t j t j f  r t |  j } t |  j } | j	 | | | | j
 f  q q W| j   | |  _ d  S(   Ni   t   p_R  (   R   R   RZ   R   R  R  R   R  R  RV   t   __doc__t   sortR  (   R   t   p_functionsR   t   itemR   R   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR    s      #
c         C   s  g  } t  |  j  d k r8 |  j j d  d |  _ d  Sxw|  j D]l\ } } } } |  j | } t | t j  r| d } n d } t |  j	 | k r |  j j d | | | j
  d |  _ qB t |  j	 | k  r |  j j d | | | j
  d |  _ qB | j s$|  j j d | | | j
  qB y: t | | |  } x! | D] }	 | j | |	 f  q@WWn@ t k
 rt j   d }
 |  j j t |
   d |  _ n Xd |  j | <qB WxX|  j j   D]G\ } } | d d !d k rt | t j t j f  rqn  | d d !d	 k rqn  | d d !d k rP| d
 k rP|  j j d |  n  t | t j  rwt |  j	 d k st | t j  rt |  j	 d k ryT | j j d  } | d d k r|  j j d t |  j t |  j |  n  Wq	t k
 rq	XqqW| |  _ d  S(   Ni    s+   no rules of the form p_rulename are definedi   i   s'   %s:%d: Rule '%s' has too many argumentss%   %s:%d: Rule '%s' requires an argumentsC   %s:%d: No documentation string specified in function '%s' (ignored)R  t   t_R  s   '%s' not defined as a functionRe   R  s;   %s:%d: Possible grammar rule '%s' defined without p_ prefix(   R   R  R  R   R   RZ   R   R  R   R  R   R  R   R  RV   RG   R   Rf  R)   R  R   R  Rb  R  R  R  R  (   R   R  R   R   R   R  R   t   reqargst   parsed_gR&  Rl  R3   R5   (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR    sX    			.  ''&N(   R   R   R.   R   R  R  R  R  R  R  R  R  R  R  R  R  R  R  (    (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyR  
  s   		
											Rd   c   :   
   C   sQ
  | r d } n  | d  k r- t t j  } n  | rp g  t |  D] } | t | |  f ^ q@ } t |  } n t d  } t | d | } | j	   | j
 r t d   n  | j   } y t   } | r | j |  } n | j |  } | s| | k rqy3 | j | j  t | | j  } | j a | SWqqt k
 rmt j   d } | j d t |   qqXn  Wn@ t k
 rt j   } | j t |   n t k
 rn X|
 d  k r| rt t | d   }
 qt   }
 n  |
 j d t  d } | j   rt d   n  | j s5| j d	  n  t  | j!  } xk | j" D]` \ } } } y | j# | | |  WqNt$ k
 rt j   d } | j d
 t |   qNXqNWx | j% D]{ \ } } | \ } } } }  y | j& | |  | | |  Wqt$ k
 r6t j   d } | j
 d
 t |   d } qXqWy0 | d  k r]| j' | j(  n | j' |  Wn: t$ k
 rt j   d } | j
 t |   d } n X| rt d   n  | j)   }! x6 |! D]. \ }" }# | j
 d |# j* |# j+ |"  d } qW| j,   }$ |$ ro|
 j d  |
 j d  |
 j d  x1 |$ D]& } | j d |  |
 j d |  qBWn  | r|
 j d  |
 j d  |
 j d  x3 t- | j.  D] \ }% }& |
 j d |% |&  qWn  | j/   }' x- |' D]% }# | j d |# j* |# j+ |# j0  qWt1 |$  d k r0| j d  n  t1 |$  d k r[| j d t1 |$   n  t1 |'  d k r}| j d  n  t1 |'  d k r| j d t1 |'   n  | r|
 j d  |
 j d  |
 j d  t2 | j3  }( |( j4   xJ |( D]B } |
 j d | d j5 g  | j3 | D] }) t |)  ^ q  qW|
 j d  |
 j d  |
 j d  t2 | j6  }* |* j4   xJ |* D]B }+ |
 j d |+ d j5 g  | j6 |+ D] }) t |)  ^ q  qW|
 j d  n  | rA| j7   }, x |, D] }- | j d |-  qW| j8   }. x' |. D] }/ | j
 d |/  d } qWn  | j9   }0 x- |0 D]% \ } } | j
 d | |  d } qTW| rt d   n  | r| j: d |   n  t; | |  |
  } | rZt1 | j<  }1 |1 d k r| j d  n |1 d k r| j d  |1  n  t1 | j=  }2 |2 d k r8| j d!  qZ|2 d k rZ| j d" |2  qZn  | r	| j< sr| j= r	|
 j d  |
 j d#  |
 j d  x0 | j< D]% \ }3 }4 }5 |
 j d$ |4 |3 |5  qWi  }6 x | j= D] \ }3 }7 }8 |3 t> |7  t> |8  f |6 k r	qn  |
 j d% |3 |7  |
 j d& |8 |3  | j d% |3 |7  | j d& |8 |3  d |6 |3 t> |7  t> |8  f <qWg  }9 xc | j= D]U \ }3 }7 }8 |8 j? r	|8 |9 k r	|
 j d' |8  | j d' |8  |9 j@ |8  q	q	Wn  | r	
| jA | |	 |  n  | r"
| jB | |  n  | j | j  t | | j  } | j a | S((   Ni    i   R  s   Unable to build parseri   s.   There was a problem loading the table file: %sRa  s5   Created by PLY version %s (http://www.dabeaz.com/ply)s    no p_error() function is defineds   %ss=   %s:%d: Symbol '%s' used, but not defined as a token or a ruleRd   s   Unused terminals:s    Token '%s' defined, but not useds       %sR   s   Rule %-5d %ss&   %s:%d: Rule '%s' defined, but not useds   There is 1 unused tokens   There are %d unused tokenss   There is 1 unused rules   There are %d unused ruless'   Terminals, with rules where they appears
   %-20s : %sRe   s*   Nonterminals, with rules where they appears   Symbol '%s' is unreachables+   Infinite recursion detected for symbol '%s's4   Precedence rule '%s' defined for unknown symbol '%s's   Generating %s tabless   1 shift/reduce conflicts   %d shift/reduce conflictss   1 reduce/reduce conflicts   %d reduce/reduce conflictss
   Conflicts:s7   shift/reduce conflict for %s in state %d resolved as %ss;   reduce/reduce conflict in state %d resolved using rule (%s)s   rejected rule (%s) in state %ds   Rule (%s) is never reduced(C   R.   R
   R   R\   t   dirR<   t   dictR}  R  R  R   R   R  R   R  R   R  R   RH   R  Rc   R  Rf  R   R   R   R)   R   R   R   t   __version__R  R   R  R  R   R   R  R   R   R   R   R   R   R   R   R   R   R   R   R   R   R  Rk   R   R   R   R   R   R  R  R  R!   R   RV   Rm  Rs  (:   R!  R   R   t	   tabmoduleR   t   check_recursiont   optimizet   write_tablest	   debugfileRh  t   debuglogt   errorlogt
   picklefileR   t   _itemsR   t   pinfoR  t   lrt   read_signatureR0   Rl  t   errorsR  R   R   R   t   funcnamet   gramR   R   R   R   R   RW   Ru   R   R3   R~   R   R4  R1   t   nontermst   nontermt   unreachablet   uR   t   inft   unused_prect   num_srt   num_rrRz   R   t
   resolutiont   already_reportedt   rulet   rejectedt   warned_never(    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   yacc  sR   	.
			!	

#
@
@
!#	(3   R  R   t	   yaccdebugt
   debug_filet
   tab_modulet
   default_lrRo   RY   R   Rp  R  R   R   t   os.pathRc  R   R   t   maxintR  t   AttributeErrort   maxsizeR	   t   objectR
   R   R  R   R%   R&   R'   R+   RH   R  R   R   R   R   R   R   R   R   R   R  R  R  R  R}  R  R  R.   R  (    (    (    sF   /home/users/norris/public_html/pat/assignments/assignment1/ply/yacc.pyt   <module>>   sj   0			
	0   wI,	 T	
		  		( 