
^c           @   s  d  Z  d a d Z d Z d Z d Z d d l Z d d l Z d d l Z d d l	 Z	 d d l
 Z y d d l m Z Wn! e k
 r d d l m Z n Xd d	 l m Z d
 e f d     YZ d f  d     YZ d f  d     YZ d f  d     YZ d   Z d   Z d   Z d f  d     YZ d f  d     YZ e j d  Z d   Z d   Z d   Z  d   Z! d   Z" d d  Z# d    Z$ d!   Z% e& d"  Z' d#   Z( e& d$  Z) d%   Z* d&   Z+ d' a, d(   Z- d)   Z. i  a/ d*   Z0 d+   Z1 d,   Z2 d-   Z3 d.   Z4 d/   Z5 d0   Z6 d1   Z7 d2   Z8 d3   Z9 d4   Z: d5   Z; d6   Z< e d7 d8  Z= e d' d9  Z> y e j? e j@ f ZA Wn eB k
 reC ZA n Xe t e& e e& d d' d e d7 d: 
 ZD d;   ZE d<   aF d S(=   s   2.2i   s
   parser.outt   parsetabt   LALRi   iN(   t   StringIO(   t   utilt	   YaccErrorc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyR   O   s    t
   YaccSymbolc           B   s   e  Z d    Z d   Z RS(   c         C   s   |  j  S(   N(   t   type(   t   self(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   __str__c   s    c         C   s
   t  |   S(   N(   t   str(   R	   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   __repr__d   s    (   R   R   R
   R   (    (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyR   b   s   	t   YaccProductionc           B   s\   e  Z d	 d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z RS(
   c         C   s   | |  _  g  |  _ | |  _ d  S(   N(   t   slicet   pbstackt   stack(   R	   t   sR   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   __init__p   s    		c         C   st   t  |  t k r= | d k r, |  j | j S|  j | j Sn3 g  |  j | j | j | j  D] } | j ^ q] Sd  S(   Ni    (   R   t   intR   t   valueR   t   startt   stopt   step(   R	   t   nR   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   __getitem__u   s
     c         C   s   | |  j  | _ d  S(   N(   R   R   (   R	   R   t   v(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   __setitem__|   s    c         C   s   t  |  j  S(   N(   t   lenR   (   R	   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   __len__   s    c         C   s   t  |  j | d d  S(   Nt   linenoi    (   t   getattrR   (   R	   R   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyR      s    c         C   s<   t  |  j | d d  } t  |  j | d |  } | | f S(   NR   i    t	   endlineno(   R   R   (   R	   R   t	   startlinet   endline(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   linespan   s    c         C   s   t  |  j | d d  S(   Nt   lexposi    (   R   R   (   R	   R   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyR$      s    c         C   s<   t  |  j | d d  } t  |  j | d |  } | | f S(   NR$   i    t	   endlexpos(   R   R   (   R	   R   t   startpost   endpos(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   lexspan   s    c         C   s   | d k r t  d   n  | t |  j  d k rZ t  d | t |  j  d f   n  x3 t d |  D]" } |  j j |  j | d  qj Wd  S(   Ni    s   Expected a positive valuei   s,   Can't push %d tokens. Only %d are available.(   t
   ValueErrorR   R   t   rangeR   t   append(   R	   R   t   i(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   pushback   s    &N(   R   R   t   NoneR   R   R   R   R   R#   R$   R(   R-   (    (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyR   o   s   							t   Parserc           B   s8   e  Z d d   Z d   Z d   Z d d d d  Z RS(   c         C   sU   | d k r t  d   n  d  |  _ d  |  _ i  |  _ i  |  _ i  |  _ d |  _ d  S(   Nt   xyzzys-   Can't instantiate Parser. Use yacc() instead.s
   Unknown LR(   R   R.   t   productionst	   errorfunct   actiont   gotot   requiret   method(   R	   t   magic(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyR      s    					c         C   s   d |  _  d  S(   Ni    (   t
   errorcount(   R	   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/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   R+   (   R	   t   sym(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   restart   s    		i    c         C   s  d  } g  } |  j } |  j } |  j } t d   }	 |  |	 _ d |  _ | sg d d l m }
 |
 j	 } n  | |	 _	 | r | j
 |  n  | j } g  } | |  _ g  } | |  _ | |	 _ d  } | j d  t   } d | _ | j |  x| d k r	d | d f GHn  | sK| s!|   } n | j   } | sKt   } d | _ qKn  | rd d j g  | D] } | j ^ qad  t |  f j   } n  | d } | j } | j | | f d   } | d k rd	 | f GHn  | d  k	 r| d k r| d k rt j j d
  d  S| j |  | d k rFt j j d | | f  n  | j |  d  } |  j d k r |  j d 8_ q q n  | d k  r@| | } | j } | j } t   } | | _ d  | _ | d k rt j j d | | f  n  | r| | d } | | d <yd | d j | _ t | d d | d j  | _ | d j  | _  t | d d | d j   | _! Wn t" k
 rd | _ n X| | 3| | 3n d | _ | g } | |	 _# g  |	 _$ | j% |	  |	 j$ r| j |  x |	 j$ D] } | j |  qWd  } n  | j |  | j | | d | f  q n  | d k r| d } t | d d   St j j | d  qn  | d  k r| rt j j | d  n  |  j st& |  _ | } | j d k rd  } n  |  j' r/|  j( a( | a |  j) a) |  j' |  } b( b b) |  j s| } d  } q qq| rt* | d  rP| 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 r| j d k rd  } d  } | 2q n  | j d k r d  S| j d k r| d } | j d k r4d  } q n  t   } d | _ t* | d  rd| j | _ n  | | _ | j |  | } q | j   | j   q n  t+ d   q d  S(   Ni    i   (   t   lexs   $endt   stateis   %s . %st    R3   s   yacc: Parse error. EOF
s   %-60s shift state %s
s   %-60s reduce %d
R    R%   R   s   
R   s(   yacc: Syntax error at line %d, token=%s
s   yacc: Syntax error, token=%ss    yacc: Parse error in input. EOF
t   errors   yacc: internal parser error!!!
(,   R.   R3   R4   R1   R   t   parserR8   t    R>   t   lexert   inputt   tokenR:   R;   R   R+   R   R   t   popt   joinR   t   lstript   gett   syst   stderrt   writet   nameR   R   R   R   R    R$   R%   t   AttributeErrorR   R   t   funct   error_countR2   R9   R=   t   hasattrt   RuntimeError(   R	   RE   RD   t   debugt	   lookaheadt   lookaheadstackt   actionsR4   t   prodt   psliceR>   t	   get_tokenR:   R;   t   errtokenR<   t   xxt	   errorleadR   t   ltypet   tt   pt   pnamet   plent   targt   _tR   t   tokR   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   parse   s    													B
						
 $						
									  	!
				

N(   R   R   R.   R   R9   R=   Rf   (    (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyR/      s   		c         C   s  t  j j |   \ } } | d k r( d Sy& t |   } | j   } | j   Wn t k
 rb d SXt j d  } i  } d } d } x | D] }	 | j	 |	  }
 |
 r |
 j
 d  } | j |  } | s | | | <q t j j d |  | | | f  d } n  | d 7} q W| S(   Ns   .pyi   s   \s*def\s+(p_[a-zA-Z_0-9]*)\(s<   %s:%d: Function %s redefined. Previously defined on line %d
i    (   t   ost   patht   splitextt   opent	   readlinest   closet   IOErrort   ret   compilet   matcht   groupRJ   RK   RL   RM   (   t   filenamet   baset   extt   ft   linest   fret	   counthasht   linent   noerrort   lt   mRN   t   prev(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   validate_file  s0      	c      	   C   s.  x'|  j    D]\ } } | d d !d k rP t |  t j t j f k rP q n  | d d !d k ri q n  | d d !d k r t j j d |  n  d r t | t j  r | j	 j
 d k r yR | j j d  } | d d k rt j j d	 | j	 j | j	 j | f  n  Wq&t k
 r"q&Xq q Wd  S(
   Ni    i   t   p_t   t_s.   yacc: Warning. '%s' not defined as a function
i   R@   t   :sF   %s:%d: Warning. Possible grammar rule '%s' defined without p_ prefix.
(   t   itemsR   t   typest   FunctionTypet
   MethodTypeRK   RL   RM   t
   isinstancet   __code__t   co_argcountt   __doc__t   splitt   co_filenamet   co_firstlinenot	   Exception(   t   dR   R   t   doc(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   validate_dict  s    1  *0c           C   sg   d  g a i  a i  a i  a i  a i  a i  a i  a g  a	 d  a
 t j   a i  a t   a t   a d  S(   N(   R.   t   Productionst	   Prodnamest   Prodmapt	   Terminalst   Nonterminalst   Firstt   Followt
   Precedencet   LRitemst	   Errorfunct   hashlibt   sha256t	   Signaturet   RequiresR   t   _vft   _vfc(    (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   initialize_vars  s    		t
   Productionc           B   s,   e  Z d    Z d   Z d   Z d   Z RS(   c         K   sp   x* | j    D] \ } } t |  | |  q Wd |  _ d |  _ d |  _ g  |  _ i  |  _ i  |  _ g  |  _ d  S(   Nii    (	   R   t   setattrt   lr_indext	   lr0_addedt	   lr1_addedt   usymst
   lookaheadst   lk_addedt
   setnumbers(   R	   t   kwt   kR   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyR   '  s    						c         C   s<   |  j  r+ d |  j d j |  j   f } n d |  j } | S(   Ns   %s -> %sR@   s   %s -> <empty>(   RX   RN   RH   (   R	   R   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyR
   2  s    	"c         C   s
   t  |   S(   N(   R   (   R	   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyR   9  s    c         C   s'  | t  |  j  k r d  St   } |  j | _ t |  j  | _ |  j | _ | | _ i  | _ |  j	 | _	 | j j
 | d  t | j  | _ t  | j  | _  |  j | _ y t | j | d | _ Wn" t t f k
 r } g  | _ n Xy | j | d | _ Wn t k
 r"d  | _ n X| S(   Nt   .i   (   R   RX   R.   R   RN   t   listt   numberR   R   R   t   insertt   tupleR   R   t   lraftert
   IndexErrort   KeyErrort   lrbefore(   R	   R   R`   t   e(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   lr_item=  s,     			(   R   R   R   R
   R   R   (    (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyR   &  s   			t   MiniProductionc           B   s   e  Z RS(    (   R   R   (    (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyR   W  s   s   ^[a-zA-Z0-9_-~]+$c         C   s  | t  k r- t j j d | | | f  d S| d k rZ t j j d | | | f  d St j |  s t j j d | | | f  d Sx t t |   D] } | | } | d d k r@yl t |  } t |  d k rt j j d	 | | | | f  d S| t  k rg  t  | <n  | | | <w Wq@t	 k
 r<q@Xn  t j |  r | d
 k r t j j d | | | | f  d Sq Wd | | f } | t
 k rt
 | }	 t j j d | | |	 f  t j j d | | |	 j |	 j f  d St   }
 | |
 _ | |
 _ | |
 _ | |
 _ |  |
 _ t t  |
 _ t j |
  |
 t
 | <| t k rfg  t | <n  d } x_| t |
 j  k  r|
 j | } | d
 k rIy |
 j | d } Wn2 t k
 rt j j d |
 j |
 j f  d SXt j | d   } | s&t j j d |
 j |
 j | f  d S| |
 _ |
 j | =|
 j | =qon  | t  k rt  | j |
 j  t |
 d  st j | d  |
 _ qn- | t k rg  t | <n  t | j |
 j  | d 7} qoWt |
 d  sd |
 _ n  t |
 j  |
 _ t |
 j  |
 _ g  |
 _ x3 |
 j D]( } | |
 j k r |
 j j |  q q Wy t |
 j j |
  Wn! t k
 r|
 g t |
 j <n Xd S(   Ns;   %s:%d: Illegal rule name '%s'. Already defined as a token.
iRA   s9   %s:%d: Illegal rule name '%s'. error is a reserved word.
s   %s:%d: Illegal rule name '%s'
i    s   '"i   sD   %s:%d: Literal token %s in rule '%s' may only be a single character
s   %precs&   %s:%d: Illegal name '%s' in rule '%s'
s   %s -> %ss   %s:%d: Duplicate rule %s.
s$   %s:%d: Previous definition at %s:%d
s-   %s:%d: Syntax error. Nothing follows %%prec.
s2   %s:%d: Nothing known about the precedence of '%s'
t   prect   right(   R   i    (   R   i    (   R   RK   RL   RM   t   _is_identifierRp   R*   R   t   evalt   SyntaxErrorR   t   filet   lineR   RN   RX   RP   R   R   R+   R   R   R   RJ   R.   R   RR   R   R   R   R   (   Ru   R   R   t   prodnamet   symst   xR   t   ct   mapR|   R`   R,   R_   t   precnameR   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   add_productionn  s    
 
 
&						
 #	

	c         C   sa  |  j  j } |  j  j } d } t |  t j  r9 d } n d } |  j  j | k ru t j j	 d | | |  j
 f  d S|  j  j | k  r t j j	 d | | |  j
 f  d S|  j r=|  j j   } d  } | } x| D]`} | d 7} | j   }	 |	 s q n  y |	 d d k rc| s5t j j	 d | | f  d S| }
 t |	  d k rZ|	 d } qg  } nu |	 d }
 |
 } |	 d } t |	  d k r|	 d } n g  } | d	 k r| d
 k rt j j	 d | | f  d St |  | | |
 |  } | | 7} Wq t k
 r5t j j	 d | | | f  | d 8} q Xq Wn  t j j	 d | | |  j
 f  | S(   Ni    i   i   s)   %s:%d: Rule '%s' has too many arguments.
is'   %s:%d: Rule '%s' requires an argument.
t   |s   %s:%d: Misplaced '|'.
R   s   ::=s"   %s:%d: Syntax error. Expected ':'
s!   %s:%d: Syntax error in rule '%s'
s:   %s:%d: No documentation string specified in function '%s'
(   R   R   R   R   R   R   R   RK   RL   RM   R   R   t
   splitlinesR.   R   R   R   R   (   Ru   R   R   RA   t   reqdargst   pstringst   lastpt   dlinet   psR`   R   R   t   assignR   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   add_function  s\    	  	
 	

 c          C   s   i  }  x4 t  t j    t  t j    D] } d |  | <q) Wt t d j d |   x5 t j   D]' } |  | sb t j j	 d |  qb qb Wd S(   s   
    Find each symbol that can be reached from the start symbol.
    Print a warning for any nonterminals that can't be reached.
    (Unused terminals have already had their warning.)
    i    s"   yacc: Symbol '%s' is unreachable.
N(
   R   R   t   keysR   t   mark_reachable_fromR   RX   RK   RL   RM   (   t	   ReachableR   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   compute_reachable  s    )
c         C   sZ   | |  r d Sd | |  <x; t  j |  g   D]' } x | j D] } t | |  q; Wq+ Wd S(   s<   
    Mark all symbols that are reachable from symbol s.
    Ni   (   R   RJ   RX   R   (   R   R   R`   t   r(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyR   +  s    

c    
      C   s\  i  }  x t  j   D] } d |  | <q Wd |  d <x t j   D] } d |  | <q> Wx d } x t j   D]r \ } } xc | D][ } x+ | j D] } |  | s d } Pq q Wd } | r{ |  | s d |  | <d } n  Pq{ q{ Wqh W| sU PqU qU d } xd |  j   D]V \ } }	 |	 s | t k r7| t  k r7| d k r7qTt j j d |  d } q q W| S(   s>   
    Raise an error for any symbols that don't terminate.
    i   s   $endi    RA   s3   yacc: Infinite recursion detected for symbol '%s'.
(	   R   R   R   R   R   RX   RK   RL   RM   (
   t
   TerminatesR_   R   t   some_changet   plR`   R   t   p_terminatest
   some_errort
   terminates(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   compute_terminates>  s<    



	$c   
   	   C   se  d } x t  D]y } | s q n  xd | j D]Y } | t k r) | t k r) | d k r) t j j d | j | j | f  d } q) q) q) Wq Wd } t	 r t
 j d  n  xh t j   D]Z \ } } | d k r | r t j j d |  t	 r t
 j d |  n  | d 7} q q Wt	 rbt
 j d  x; t d t t    D]! } t
 j d	 | t  | f  q:Wn  d } x^ t j   D]P \ } } | sut | d } t j j d
 | j | j | f  | d 7} ququW| d k rt j j d  n  | d k rt j j d |  n  | d k r*t j j d  n  | d k rMt j j d |  n  t	 rDt
 j d  t t j    } | j   xK | D]C }	 t
 j d |	 d j g  t |	 D] } t |  ^ q f  qWt
 j d  t t j    } | j   xN | D]C }	 t
 j d |	 d j g  t |	 D] } t |  ^ q f  qWn  |  rat   | t   7} n  | S(   Ni    RA   s?   %s:%d: Symbol '%s' used, but not defined as a token or a rule.
i   s   Unused terminals:

s1   yacc: Warning. Token '%s' defined, but not used.
s      %s
s
   
Grammar

s   Rule %-5d %s
s1   %s:%d: Warning. Rule '%s' defined, but not used.
s(   yacc: Warning. There is 1 unused token.
s+   yacc: Warning. There are %d unused tokens.
s'   yacc: Warning. There is 1 unused rule.
s*   yacc: Warning. There are %d unused rules.
s*   
Terminals, with rules where they appear

s   %-20s : %s
R@   s-   
Nonterminals, with rules where they appear

(   R   RX   R   R   RK   RL   RM   R   R   t	   yaccdebugR   R   R*   R   R   R   R   t   sortRH   R   R   R   (
   t   cycle_checkRA   R`   R   t
   unused_tokR   R,   t   unused_prodt   ksR   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   verify_productions  sf     $# "#
A
Dc          C   s   x} t  D]u }  |  } |  j d  } d } xQ |  j |  } | | _ | sM Pn  t t  | _ t j |  | } | d 7} q+ q Wd  S(   Ni    i   (   R   R   t   lr_nextR   R   t   lr_numR+   (   R`   t   lastlrit   lriR,   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   build_lritems  s    	 c         C   s   d } d } x |  D] } | d 7} y | d } | d } | d k rv | d k rv | d k rv t  j j d |  d SxN | D]F } | t k r t  j j d |  | d 7} q} n  | | f t | <q} WWq t  j j d	  | d 7} q Xq W| S(
   Ni    i   t   leftR   t   nonassocs   yacc: Invalid precedence '%s'
is5   yacc: Precedence already specified for terminal '%s'
s    yacc: Invalid precedence table.
(   RK   RL   RM   R   (   t   plistt   plevelRA   R`   R   t   termsR_   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   add_precedence  s(    


$
c         C   so   |  s t  d j }  n  t d d d |  g d d d d d d d
 d   t  d <|  g t  d _ t |  j d  d  S(   Ni   RN   s   S'RX   R   i    R   R   R   RP   (   s   righti    (   R   RN   R   R.   R   R   R+   (   R   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   augment_grammar  s
    4c         C   s~   g  } xq |  D]\ } d } xC t  | D]7 } | d k r? d } q$ | | k r$ | j |  q$ q$ W| rh q Pq W| j d  | S(   Ni    s   <empty>i   (   R   R+   (   t   betat   resultR   t   x_produces_emptyRu   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   first  s    	 c   
   
   C   s  x t  j   D] } g  t | <q W|  s7 t d j }  n  d g t |  <xAd } x+t d D]} xt t | j   D] } | j | } | t  k rt t | j | d  } d } xY | D]Q } | d k r | t | k r t | j	 |  d } n  | d k r d } q q W| s+| t | j  d k rsxB t | j D]0 } | t | k r9t | j	 |  d } q9q9Wqsqt qt WqX W| sG PqG qG d rt
 rt j d  xT t  j   D]C } t j d | d j g  t | D] }	 t |	  ^ q f  qWn  d  S(   Ni   s   $endi    s   <empty>s	   
Follow:
s   %-20s : %s
R@   (   R   R   R   R   RN   R*   R   RX   R   R+   R   R   RM   RH   R   (
   R   R   t   didaddR`   R,   t   Bt   fstt   hasemptyRu   R   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   compute_follow8  s<    	 c       
   C   sY  x! t  j   D] }  |  g t |  <q Wd g t d <d g t d <x t j   D] } g  t | <qK Wx d } xm t j   D]_ } xV t | D]J } xA t | j  D]0 } | t | k r t | j |  d } q q Wq Wqu W| sb Pqb qb d rUt rUt	 j
 d  xT t j   D]C } t	 j
 d | d j g  t | D] } t |  ^ q. f  qWn  d  S(   Ns   $endt   #i    i   s   
First:
s   %-20s : %s
R@   (   R   R   R   R   R   R   RX   R+   R   R   RM   RH   R   (   R_   R   R   R`   Ru   R   R   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   compute_first1d  s*    	c           C   s"   i  a  i  a d a i  a i  a d  S(   Nt   Unknown(   t
   _lr_actiont   _lr_gotot
   _lr_methodt   _lr_goto_cachet   _lr0_cidhash(    (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   lr_init_vars  s
    i    c         C   s   t  d 7a  t } |  } d } xi | r d } xV | D]N } xE | j D]: } | j t  k r^ qC n  | j | j  t  | _ d } qC Wq3 Wq  W| S(   Ni   i    (   t
   _add_countR   R   R   R+   R   (   t   It   prodlistt   JR   t   jR   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   lr0_closure  s    
	 	c         C   s3  t  j t |   | f d   } | r( | St  j | d   } | sS i  } | t  | <n  g  } xy |  D]q } | j } | r` | j | k r` | j t |  d   } | s i  } | | t |  <n  | j |  | } q` q` W| j d d   } | s| rt |  } | | d <q| | d <n  | t  t |   | f <| S(   Ns   $end(   R   RJ   t   idR.   R   R   R+   R  (   R  R   t   gR   t   gsR`   R   t   s1(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   lr0_goto  s2     	c          C   s#  t  t d j g  g }  d } x( |  D]  } | t t |  <| d 7} q& Wd } x | t |   k  r|  | } | d 7} i  } x, | D]$ } x | j D] } d  | | <q Wq Wxj | j   D]\ } t	 | |  } | s q n  t |  t k r q n  t |   t t |  <|  j
 |  q WqS W|  S(   Ni    i   (   R  R   R   R   R  R   R   R.   R   R  R+   (   t   CR,   R  t   asymst   iiR   R   R  (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt	   lr0_items  s,    

  c          C   s   i  }  d } x xe t  d D]Y } | j d k rB d |  | j <q n  x. | j D] } | |  k rL PqL qL Wd |  | j <q Wt |   | k r Pn  t |   } q |  S(   Ni    i   (   R   R   RN   RX   (   t   nullablet   num_nullableR`   R_   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   compute_nullable_nonterminals  s      c         C   s   g  } x t  t |    D] } xt |  | D]h } | j | j d k  r* | | j | j d f } | d t k r | | k r | j |  q q q* q* W| d } q W| S(   Ni   (   R*   R   R   RX   R   R+   (   R  t   transR?   R`   R_   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   find_nonterminal_transitions4  s     c   
      C   s   i  } | \ } } g  } t  |  | |  } xf | D]^ } | j | j d k  r2 | j | j d }	 |	 t k r |	 | k r | j |	  q q q2 q2 W| d k r | t d j d k r | j d  n  | S(   Ni   i    s   $end(   R  R   R   RX   R   R+   R   (
   R  R  R  t   dr_setR?   t   NR   R  R`   t   a(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   dr_relationH  s     #c   
      C   s   g  } | \ } } t  |  | |  } t j t |  d  } x] | D]U } | j | j d k  rD | j | j d }	 |	 | k r | j | |	 f  q qD qD W| S(   Nii   (   R  R   RJ   R  R   R   RX   R+   (
   R  R  t   emptyt   relR?   R  R  R  R`   R  (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   reads_relation`  s    c         C   s`  i  } i  } i  } x | D] } d | | <q Wx&| D]\ } } g  }	 g  }
 x|  | D]} | j  | k rr qW n  | j } | } x | | j d k  r\| d } | j | } | | f | k r.| d } xa | | j k  r| j | t k r Pn  | j | | k r
Pn  | d } q W|
 j | | f  n  t |  | |  } t j t	 |  d  } q Wx |  | D] } | j  | j  k rqhn  | j | j k rqhn  d } xR | | j k  r| j | | j | d k rPn  | d } qW|	 j | | f  qhWqW Wx> |
 D]6 } | | k r'g  | | <n  | | j | | f  qW|	 | | | f <q4 W| | f S(   Ni   ii    (
   RN   R   R   RX   R   R+   R  R   RJ   R  (   R  R  R  t   lookdictt   includedictt   dtransR_   R?   R  t   lookbt   includesR`   R   R  t   liR  R   R,   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   compute_lookback_includes  sX     	

      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   FPR  R   R   t   F(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   digraph  s     #c      	   C   sc  | j  |   t |  } | | |  <| |   | |  <| |   } x | D] }	 | |	 d k r{ t |	 | | | | | |  n  t | |  | |	  | |  <x> | j |	 g   D]* }
 |
 | |  k r | |  j  |
  q q WqF W| |  | k r_t j | | d <| |  | | d <| j   } xB | |  k r[t j | | d <| |  | | d <| j   } qWn  d  S(   Ni    i(   R+   R   R#  t   minRJ   RK   t   maxsizeRG   (   R   R  R   R'  R$  R%  R&  R   R  t   yR  t   element(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyR#    s(    
 c            s:      f d   }    f d   } t  | | |  } | S(   Nc            s   t    |    S(   N(   R  (   R   (   R  R  (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   <lambda>  s    c            s   t    |    S(   N(   R  (   R   (   R  R  (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyR-    s    (   R(  (   R  t   ntransR  R&  R%  R'  (    (   R  R  s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   compute_read_sets  s    c            s4    f d   }   f d   } t  |  | |  } | S(   Nc            s     |  S(   N(    (   R   (   t   readsets(    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyR-    s    c            s     j  |  g   S(   N(   RJ   (   R   (   t   inclsets(    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyR-    s    (   R(  (   R.  R0  R1  R&  R%  R'  (    (   R1  R0  s3   /usr/lib64/python2.7/site-packages/sepolgen/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   RJ   R+   (   t	   lookbackst	   followsetR  t   lbR?   R`   Ru   R  (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   add_lookaheads.  s     c         C   sb   t    } t |   } t |  | |  } t |  | |  \ } } t | | |  } t | |  d  S(   N(   R  R  R/  R"  R2  R6  (   R  R  R  R0  t   lookdt   includedt
   followsets(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   add_lalr_lookaheads?  s    	c      
   C   s  t  } t } i  } |  a d } d } t rR t j j d |   t j d |   n  t   } |  d k rt t	 |  n  d } x| D]} g  }	 t r t j d |  x. | D]& }
 t j d |
 j
 t |
  f  q Wt j d  n  xm| D]e}
 y4|
 j d d	 k r|
 j d
 k r:d | | d f <|
 | | d f <q%|  d k rV|
 j | } n t |
 j } x| D]} |	 j | |
 d |
 j
 |
 f f  | j | | f d   } | d  k	 r| d k rt | | | f j
 j \ } } t j | d"  \ } } | | k  s| | k r| d k r|
 j
 | | | f <|
 | | | f <| r| rt j d |  t j d |  | d 7} qq| | k r| d k rd  | | | f <q| st j d |  t j d |  | d 7} qq| d k  rt | } t |
 j
 } | j | j k rC|
 j
 | | | f <|
 | | | f <n  | d 7} t j d | | | | f j
 | | | f f  t j d | | | | f j
 | | | f f  qt j j d |  qj|
 j
 | | | f <|
 | | | f <qjWn1|
 j } |
 j | d } | t k r%t | |  } t j t |  d  } | d k r%|	 j | |
 d | f  | j | | f d   } | d  k	 r| d k r| | k rt j j d |  qq| d k  rt | | | f j
 j \ } } t j | d#  \ } } | | k s%| | k r}| d k r}| | | | f <|
 | | | f <| s| d 7} t j d |  t j d |  qq| | k r| d k rd  | | | f <q| r| r| d 7} t j d |  t j d |  qqt j j d |  q"| | | | f <|
 | | | f <q%n  Wq t k
 rP} t d  j |   q Xq Wt rdi  } xl |	 D]d \ } }
 } | | f | k rh|
 | | | f k rt j d | | f  d | | | f <qqhqhWt j d  x |	 D]y \ } }
 } | | f | k r|
 | | | f k	 r]| | f | k rZt j d | | f  d | | | f <qZq]qqWn  t rzt j d  n  i  } x; | D]3 } x* | j  D] } | t! k rd  | | <qqWqWxz | j"   D]l } t | |  } t j t |  d  } | d k r| | | | f <t r7t j d | | f  q7qqW| d 7} q Wt r| d k rrt j j d |  n  | d k rt j j d |  n  | d k rt j j d  |  n  | d k rt j j d! |  qn  d  S($   Ni    s%   yacc: Generating %s parsing table...
s   

Parsing method: %s

R   s   
state %d

s       (%d) %s
s   
iR   s   S's   $ends   reduce using rule %d (%s)R   R   s6   shift/reduce conflict in state %d resolved as reduce.
s5     ! shift/reduce conflict for %s resolved as reduce.
i   R   s5   shift/reduce conflict in state %d resolved as shift.
s4     ! shift/reduce conflict for %s resolved as shift.
s@   reduce/reduce conflict in state %d resolved using rule %d (%s).
s?     ! reduce/reduce conflict for %s resolved using rule %d (%s).
s   Unknown conflict in state %d
s   shift and go to state %ds!   Shift/shift conflict in state %d
s   Hosed in lr_parse_tables       %-15s %s
s     ! %-15s [ %s ]
s#       %-30s shift and go to state %d
s   yacc: %d shift/reduce conflict
s    yacc: %d shift/reduce conflicts
s    yacc: %d reduce/reduce conflict
s!   yacc: %d reduce/reduce conflicts
(   s   righti    (   s   righti    (#   R   R   R   R   RK   RL   RM   R   R  R:  R   R   RX   RN   R   R   R+   RJ   R.   R   R   R   R   R   R   R   R  R   R  R   R   t   with_tracebackR   R   R   (   R6   R4   R3   t   actionpt   n_srconflictt   n_rrconflictR  t   stR  t   actlistR`   t   laheadsR  R   t   sprect   slevelt   rprect   rlevelt   oldpt   ppR,   R  R  R   t	   _actprintR|   t   nkeysR  R   R   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   lr_parse_tableW  s   	$# $
14	 $

 !RC   c         C   sd  t  j j | |   d } y#t | d  } | j d | t t  t t j    f  d } | ri  } xv t	 j
   D]h \ } } | j | d  } | s g  g  f } | | | d <n  | d j | d  | d j |  qv W| j d  x | j
   D] \ } } | j d |  x# | d D] } | j d |  q$W| j d	  x# | d D] } | j d |  qWW| j d
  q W| j d  | j d  nY | j d  x< t	 j
   D]. \ } } | j d | d | d | f  qW| j d  | r<i  } xv t j
   D]h \ } } | j | d  } | sTg  g  f } | | | d <n  | d j | d  | d j |  q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  nY | j d  x< t j
   D]. \ } } | j d | d | d | f  qVW| j d  | j d  x t D]w }	 |	 r|	 j r| j d |	 j |	 j |	 j j |	 j |	 j f  q | j d |	 j |	 j f  q| j d  qW| j d  | j   Wn! t k
 r_}
 d | GH|
 GHn Xd  S(   Ns   .pyt   ws`   
# %s
# This file is automatically generated. Do not edit.

_lr_method = %s

_lr_signature = %s
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]):
       _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]):
       _lr_goto[(_x,_k)] = _y
del _lr_goto_items
s   
_lr_goto = { s   _lr_productions = [
s     (%r,%d,%r,%r,%d),
s     (%r,%d,None,None,None),
s     None,
s   ]
s   Unable to create '%s'(   Rg   Rh   RH   Rj   RM   t   reprR   R   t   digestR   R   RJ   R+   R   R   RP   RN   R   R   R   R   Rl   Rm   (   t
   modulenamet	   outputdirRr   Ru   t   smallerR   R   R   R,   R`   R   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   lr_write_tables  s    &
&
&	5 	c         B   sv   yW d |  d  U| s* e  j   e j k rR e j a e j a e j a e j a d Sd SWn e e	 f k
 rq d SXd  S(   Ns   import %s as parsetabi   i    (
   R   RM  R    t   _lr_signatureR   R   t   _lr_productionsR   t   ImportErrorRO   (   t   modulet   optimize(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   lr_read_tables  s    				c
   %   
   C   sS  | a  t   i  }
 d } t j t j |    | r t | t j  rS | j	 } qt | t
  r g  t |  D] } | t | |  f ^ qo } i  } x/ | D] } | d | | d <q Wqt d   nN y
 t  WnA t k
 rt j   \ } } } | j } | j } | j } n X| s4| j d d   } n  | rSt j t j |   n  | rt | d  rt 2xt D] } | st j d   qst   } | d | _ | d | _ | d | _ | d | _ | d r| | d | _ n  t j |  qsWn| r(t | t
  r(t | d d   } n | j d d   } | sOt  d	   n  t | t!  pjt | t"  s|t  d
   n  | j d d   } | r7t | t#  st  d   n  x | j$   D]q \ } } yH t | t!  st%  n  g  | D] } | j& d  ^ q} | t' | <Wqt( k
 r/d | GHqXqWn  d | k rWd GHt  d   n  x0 | D]( } | t) k r|d | GHn  g  t) | <q^Wg  t) d <| j d d   } | rt | t!  pt | t"  st  d   n  t* |  t j t j t+ |    n  x' | D] } | t, k r	d( t, | <q	q	W| j d d   } | rt | t j-  r_d } n' t | t j.  rzd } n t  d   | j/ j0 }  | j/ j1 }! d  |
 |! <| j/ j2 d | k rt  d |! |  f   n  | a3 n d GHg  | j4   D]\ } t5 | |  t j- t j. f k r| | j6 d  d k r| | j6 d k r| | ^ q}" t |"  d k rut  d   n  |" j7 d d    x= |" D]5 } t8 |  d k  r| d 7} qd  |
 | j/ j1 <qWx3 |" D]+ } | j9 rt j t j | j9   qqWt:   | rt  d   n  t |  sx) |
 j4   D] }# t; |#  s3d } q3q3Wt< |  | r| t= k rt  d |   n  t> |  t? d  |  } g  | j4   D]E } t5 |  t j- t j. f k r| | j6 d  d k r| | ^ q}$ | rt  d   n  t@   tA   tB |  |  d) k r8tC |   n t  d# |    | r^tD | |	  n  t  ry_ tE tF jG jH |	 |  d$  } | jI tJ jK    | jI d%  | jI tL jK    | jM   WqtN k
 r} d& | | f GHqXqn  tO d'  } t | _P t3 | _Q tR | _S tT | _U tV | _W t' | _X | jY aY | aZ | sOt[   n  | S(*   Ni    i   s   Expected a moduleR   i   i   i   t   tokenss&   module does not define a list 'tokens's   tokens must be a list or tuple.R5   s   require must be a dictionary.R   sJ   Invalid specification for rule '%s' in require. Expected a list of stringsRA   s1   yacc: Illegal token 'error'.  Is a reserved word.s   Illegal token names+   yacc: Warning. Token '%s' multiply defined.t
   precedences#   precedence must be a list or tuple.R   t   p_errors3   'p_error' defined, but is not a function or method.s%   %s:%d: p_error() requires 1 argument.s0   yacc: Warning. no p_error() function is defined.R   s,   no rules of the form p_rulename are defined.t   keyc         S   s
   |  j  j S(   N(   R   R   (   R   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyR-  <  s    s   Unable to construct parser.s   Bad starting symbol '%s'R   t   SLRR   s   Unknown parsing method '%s'RK  s   

s   yacc: can't create '%s'R0   (   s   righti    (   R\  s   LALR(\   R   R   R   t   updateR   t   encode_inputR   R   t
   ModuleTypet   __dict__t   _INSTANCETYPEt   dirR   R)   RS   RK   t   exc_infot   tb_framet   f_backt	   f_globalsRJ   R.   RW  R   RS  R+   R   RN   R   R   R   RP   R   R   R   t   dictR   t	   TypeErrorR   R   R   R   R   RL  R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R~   R   R   R   R   R   R   R   RJ  RQ  Rj   Rg   Rh   RH   RM   R   t   getvalueR   Rl   Rm   R/   R1   R2   R   R3   R   R4   R   R6   R5   Rf   RB   t   yacc_cleanup(%   R6   RT   RU  t	   tabmoduleR   t   check_recursionRV  t   write_tablest	   debugfileRO  t   filesRA   t   ldictR   t   _itemsR,   R   t   bR_   Ru   R`   R|   RX  t   requiresR   R   R   t   v1R   R   t   eft   ismethodt   elinet   efilet   symbolsRr   t	   otherfunc(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   yacc  s$   .
			
	"

		
	9#	 

E
							
c           C   s:   b  b b b b b b b b b	 b
 b b b b b b b d  S(   N(   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyRj    s
    	c          O   s   t  d   d  S(   Ns!   yacc: No parser built with yacc()(   R   (   t   argst   kwargs(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyRf     s    (G   t   __version__R   t
   debug_filet
   tab_modulet
   default_lrRQ   Rn   R   RK   R   t   os.pathRg   t	   cStringIOR   RT  t   ioRC   R   R   R   R   R   R/   R~   R   R   R   R   Ro   R   R   R   R   R   R   R   R   R   R.   R   R   R   R   R   R  R  R  R   R  R  R  R  R  R"  R(  R#  R/  R2  R6  R:  RJ  RQ  RW  t   InstanceTypet
   ObjectTypeRa  RO   t   objectR{  Rj  Rf   (    (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/yacc.pyt   <module>5   sz   <0 			D1	l	A			BO			",	)			!	<				+	O	
	"					n
'	