
^c           @   s1  d  Z  d d l Z d d l Z d d l Z d d l m Z d d l Z e j d  Z y e j	 e j
 f Z Wn e k
 r e Z n Xd e f d     YZ d e f d	     YZ d
 f  d     YZ d   Z d   Z d   Z d   Z d   Z e e d d d d d d  Z e e d  Z d   Z e Z d S(   s   2.2iNi   (   t   utils   ^[a-zA-Z0-9_]+$t   LexErrorc           B   s   e  Z d    Z RS(   c         C   s   | f |  _  | |  _ d  S(   N(   t   argst   text(   t   selft   messaget   s(    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyt   __init__0   s    (   t   __name__t
   __module__R   (    (    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyR   /   s   t   LexTokenc           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   s    d |  j  |  j |  j |  j f S(   Ns   LexToken(%s,%r,%d,%d)(   t   typet   valuet   linenot   lexpos(   R   (    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyt   __str__6   s    c         C   s
   t  |   S(   N(   t   str(   R   (    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyt   __repr__8   s    c         C   s   |  j  j |  d  S(   N(   t   lexert   skip(   R   t   n(    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyR   :   s    (   R   R	   R   R   R   (    (    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyR
   5   s   		t   Lexerc           B   sn   e  Z d    Z d 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  |  _ i  |  _ i  |  _ d |  _ g  |  _ d  |  _ i  |  _ i  |  _	 d |  _
 d  |  _ d |  _ d |  _ d  |  _ d  |  _ d |  _ d |  _ d  |  _ d |  _ d |  _ d |  _ d  S(   Nt   INITIALi    t    i   (   t   Nonet   lexret	   lexretextt
   lexstateret   lexstateretextt   lexstatet   lexstatestackt   lexstateinfot   lexstateignoret   lexstateerrorft
   lexreflagst   lexdataR   t   lexlent	   lexerrorft	   lextokenst	   lexignoret   lexliteralst	   lexmoduleR   t   lexdebugt   lexoptimize(   R   (    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyR   G   s*    																				c      	   C   s	  t    } |  j | _ |  j | _ |  j | _ |  j | _ |  j | _ |  j | _ |  j | _ |  j | _ |  j	 | _	 |  j
 | _
 |  j | _ |  j | _ |  j | _ |  j | _ |  j | _ |  j | _ |  j | _ | ri  } x |  j j   D] \ } } g  } xw | D]o \ } } g  }	 xZ | D]R }
 |
 s;|
 d rN|	 j |
  q#n  |	 j t | |
 d j  |
 d f  q#Wq
W| j | |	 f  | | | <q W| | _ i  | _ x6 |  j j   D]% \ } } t | | j  | j | <qW| | _ n  | j | j  | S(   Ni    i   (   R   R   R   R   R   R   R    R!   R"   R#   R   R$   R&   R*   R   R+   R(   R)   t   itemst   appendt   getattrR   t   begin(   R   t   objectt   ct   newtabt   keyt   ritemt   newret   cret   findext	   newfindext   ft   ef(    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyt   clonea   sL    	/		c   
      C   s  t  | d d  } | j d | t f  | j d t |  j   | j d t |  j   | j d t |  j   | j d t |  j   i  } xv |  j j	   D]e \ } } g  } xF t
 t |   D]2 } | j |  j | | t | | d  f  q W| | | <q W| j d	 t |   | j d
 t |  j   i  } x= |  j j	   D], \ } }	 |	 rz|	 j | | <qXd  | | <qXW| j d t |   | j   d  S(   Ns   .pyt   wsJ   # %s.py. This file automatically created by PLY (version %s). Don't edit!
s   _lextokens    = %s
s   _lexreflags   = %s
s   _lexliterals  = %s
s   _lexstateinfo = %s
i   s   _lexstatere   = %s
s   _lexstateignore = %s
s   _lexstateerrorf = %s
(   t   opent   writet   __version__t   reprR&   R"   R(   R   R   R,   t   ranget   lenR-   R   t   _funcs_to_namesR    R!   R   R   t   close(
   R   t   tabfilet   tft   tabreR3   t   lret   titemt   it   taberrR:   (    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyt   writetab   s*    0c   	      B   sX  d | d  Ue  j |  _ e  j |  _ e  j |  _ e  j |  _ e  j	 |  _
 i  |  _ i  |  _ x e  j j   D] \ } } g  } g  } xj e e |   D]V } | j e j | | d e  j  e | | d |  f  | j | | d  q W| |  j | <| |  j | <qj Wi  |  _ x. e  j j   D] \ } } | | |  j | <q&W|  j d  d  S(   Ns   import %s as lextabi    i   R   (   t   lextabt
   _lextokensR&   t   _lexreflagsR"   t   _lexliteralsR(   t   _lexstateinfoR   t   _lexstateignoreR    R   R   t   _lexstatereR,   RA   RB   R-   t   ret   compilet   _names_to_funcsR!   t   _lexstateerrorfR/   (	   R   RE   t   fdictR3   RH   RI   t   txtitemRJ   R:   (    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyt   readtab   s(    		;	c         C   sX   t  | t j  p! t  | t j  s3 t d   n  | |  _ d |  _ t |  |  _ d  S(   Ns   Expected a stringi    (	   t
   isinstanceR    t
   bytes_typet   string_typet
   ValueErrorR#   R   RB   R$   (   R   R   (    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyt   input   s
    $		c         C   s{   | |  j  k r t d   n  |  j  | |  _ |  j | |  _ |  j j | d  |  _ |  j j | d   |  _
 | |  _ d  S(   Ns   Undefined stateR   (   R   R^   R   R   R   R    t   getR'   R!   R   R%   R   (   R   t   state(    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyR/      s    c         C   s$   |  j  j |  j  |  j |  d  S(   N(   R   R-   R   R/   (   R   Ra   (    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyt
   push_state   s    c         C   s   |  j  |  j j    d  S(   N(   R/   R   t   pop(   R   (    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyt	   pop_state   s    c         C   s   |  j  S(   N(   R   (   R   (    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyt   current_state   s    c         C   s   |  j  | 7_  d  S(   N(   R   (   R   R   (    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyR      s    c         C   s  |  j  } |  j } |  j } |  j } x| | k  r| | | k rS | d 7} q' n  x}|  j D]=\ } } | j | |  } | s q] n  | |  _ t   } | j   | _	 |  j
 | _
 | | _  |  | _ | j   } | j }	 | |	 \ }
 | _ | |  _  |
 s| j r
| SPn  t |
 t j  s$Pn  |
 |  } | sC|  j  } Pn  |  j s| j |  j k rt d |
 j j |
 j j |
 j | j f | |   qn  | SW| | |  j k rt   } | | | _	 |  j
 | _
 |  | _ | j	 | _ | | _  | d |  _  | S|  j rt   } |  j | | _	 |  j
 | _
 d | _ |  | _ | | _  | |  _  |  j |  } | |  j  k rt d | | | |   n  |  j  } | sq' n  | S| |  _  t d | | | f | |   q' W| d |  _  |  j d  k rt d   n  d  S(   Ni   s4   %s:%d: Rule '%s' returned an unknown token type '%s't   errors&   Scanning error. Illegal character '%s's"   Illegal character '%s' at index %ds"   No input string given with input()(   R   R$   R'   R#   R   t   matcht   lexmatchR
   t   groupR   R   R   t   endt	   lastindexR   R[   t   collectionst   CallableR+   R&   R   t   __code__t   co_filenamet   co_firstlinenoR   R(   R%   R   t   RuntimeError(   R   R   R$   R'   R#   R   t   lexindexfunct   mt   tokRJ   t   funct   newtok(    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyt   token   s    				
 							 		#										 	%N(   R   R	   R   R   R;   RL   RZ   R_   R/   Rb   Rd   Re   R   Rw   (    (    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyR   F   s   	2			
					
c         C   s:  d d  l  } | j j |   \ } } | d k r4 d Sy& t |   } | j   } | j   Wn t k
 rn d SXt j d  } t j d  } i  } d }	 d }
 x | D] } | j	 |  } | s | j	 |  } n  | r(| j
 d  } | j |  } | s
|	 | | <q(d |  |	 | | f GHd }
 n  |	 d 7}	 q W|
 S(   Nis   .pyi   s   \s*def\s+(t_[a-zA-Z_0-9]*)\(s   \s*(t_[a-zA-Z_0-9]*)\s*=s7   %s:%d: Rule %s redefined. Previously defined on line %di    (   t   os.patht   patht   splitextR=   t	   readlinesRD   t   IOErrorRT   RU   Rg   Ri   R`   (   t   filenamet   ost   baset   extR9   t   linest   fret   sret	   counthasht   linent   noerrort   lRs   t   namet   prev(    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyt   _validate_filed  s8     	c         C   sY   g  } xL |  D]D } | rD | d rD | j  | d j | d f  q | j  |  q W| S(   Ni    i   (   R-   R   (   t   funclistt   resultR9   (    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyRC     s    !c         C   sZ   g  } xM |  D]E } | rE | d rE | j  | | d | d f  q | j  |  q W| S(   Ni    i   (   R-   (   t   namelistRX   R   R   (    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyRV     s    "c         C   s  |  s
 g  Sd j  |   } yt j | t j | B } d  g t | j j    d } x | j j   D] \ } } | j	 | d   } t
 |  t j t j f k r | | j d f | | <qe | d  k	 re | j d  d k r d | | <d | f GHqd  | d f | | <qe qe W| | f g | g f SWn t k
 r}	 t t |   d  }
 |
 d k rcd }
 n  t |  |
  | |  \ } } t |  |
 | |  \ } } | | | | f SXd  S(   Nt   |i   i   t   ignore_i    t   IGNORE(   NN(   t   joinRT   RU   t   VERBOSER   t   maxt
   groupindext   valuesR,   R`   R   t   typest   FunctionTypet
   MethodTypeR   t   findt	   Exceptiont   intRB   t   _form_master_re(   t   relistt   reflagst   ldictt   regexR   Rr   R9   RJ   t   handlet   eRs   t   llistRH   t   rlistt   rre(    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyR     s.      
 	c         C   s   d } |  j  d  } xA t d t |   D]* } | | | k r+ | | d k r+ Pq+ q+ W| d k r{ t | d | ! } n d } d | k r t | j    } n  d j | |  } | | f S(   Ni   t   _t   ANYR   (   s   INITIAL(   t   splitRA   RB   t   tuplet   keysR   (   R   t   namest   nonstatet   partsRJ   t   statest	   tokenname(    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyt   _statetoken  s      i    RM   c   3      C   s  d  } i d d 6} d }	 i  }
 t   } | | _ | | _ | rI d } n d } | r^ | }  n  |  rt |  t j  r |  j } ns t |  t  r g  t	 |   D] } | t
 |  |  f ^ q } i  } x- | D] \ } } | | | <q Wn t d   |  | _ nN y
 t  WnA t k
 rNt j   \ } } } | j } | j } | j } n X| r| ry0 | j | |  | j a | j a | a | SWqt k
 rqXn  |  rt |  t  rt
 |  d d   } t
 |  d d   } t
 |  d d	  } n6 | j d d   } | j d d   } | j d d	  } | s;t d
   n  t | t  pVt | t  sht d   n  i  | _ | sx~ | D]U } t j |  sd | GHd }	 n  | r| | j k rd | GHn  d  | j | <q~Wn x | D] } d  | j | <qW| rd t | j j    GHn  yg x` | D]X } t | t  j!  pJt | t  j"  s`t# |  d k r#d t$ |  GHd }	 q#q#q#WWn t% k
 rd GHd }	 n X| | _& | rt | t  pt | t  sd GHd }	 qx"| D]} t | t  s	t# |  d k r$d t$ |  GHd }	 qn  | \ } } t | t  j"  rZ| } t  j' |  } n  t | t  j!  st# |  t# |  k rd t$ |  GHd }	 qn  | d k p| d k sd | GHd }	 qn  | | k rd | GHd }	 qn  | | | <qWn  g  | j   D] } | d  d k r| ^ q} i  } i  }  i  }! x( | j   D] } g  | | <g  |  | <qMWi  }" i  }# t# |  d k rt d   n  x | D] } | | } t( | |  \ } }$ |$ |! | <t | t) j*  rx | D] } | | j+ | | f  qWqt | t  j!  s/t | t  j"  rZx7 | D] } |  | j+ | | f  q6Wqd | GHd }	 qWx' | j,   D] } | j- d d    qzWx' |  j,   D] } | j- d d    qWi  }% x| j   D]}& g  }' xI| |& D]=\ }( } | j. j/ }) | j. j0 }* d  |
 |* <|! |( }$ t | t j1  }+ | s| j. j2 }, |+ rVd }- n d }- |, |- k rd |* |) | j3 f GHd }	 qn  |, |- k  rd |* |) | j3 f GHd }	 qn  |$ d  k rd! |* |) | j3 f GHd }	 qqn  |$ d" k r| |# |& <qn  | j4 r	| sy] t5 j6 d# | j3 | j4 f t5 j7 | B } | j d	  rmd$ |* |) | j3 f GHd }	 wn  Wn^ t5 j8 k
 r} d% |* |) | j3 | f GHd& | j4 k rd' |* |) | j3 f GHn  d }	 qn X| rd( | j3 | j4 |& f GHqn  |' j+ d# | j3 | j4 f  qd) |* |) | j3 f GHqWxt|  |& D]h\ } }. |! | }$ |$ d  k ri	|. |" |& <q7	n  | s
|$ d" k r	t d* |   d }	 q7	n  |$ | j k r	|$ j9 d+  d k  r	d, | |$ f GHd }	 q7	n  yK t5 j6 d# | |. f t5 j7 | B } | j d	  r 
d- | GHd }	 w7	n  WnF t5 j8 k
 ri
} d. | | f GHd& |. k r]
d/ | GHn  d }	 q7	n X| r
d( | |. |& f GHq
n  |' j+ d# | |. f  q7	W|' s
d0 |& GHd }	 n  |' |% |& <qW| s
x, |
 j   D] } t: |  s
d }	 q
q
Wn  |	 rt d1   n  x |% j   D]x }& t; |% |& | |  \ }/ }0 |/ | j< |& <|0 | j= |& <| r x3 t> t# |0   D] } d2 |& | |0 | f GHquWq q Wxk | j?   D]] \ }& }1 |& d k r|1 d k r| j< |& j@ | j< d  | j= |& j@ | j= d  qqW| | _A | j< d | _B | j= d | _C |" | _D | jD j d d	  | _E |# | _F |# j d d   | _G | r| jG rd3 GHn  x | j?   D] \ } }2 |2 d k r| r| |# k rd4 | GHn  | rP| |" k rP| jE rPd5 | GHqPq|2 d k r| |# k r(|# j d d   |# | <n  | |" k rP|" j d d	  |" | <qPqqW| j a | j a | a | r| r| jH |  n  | S(6   Nt	   inclusiveR   i    i   s   Expected a module or instancet   tokensR   t   literalsR   s$   lex: module does not define 'tokens's$   lex: tokens must be a list or tuple.s   lex: Bad token name '%s's*   lex: Warning. Token '%s' multiply defined.s   lex: tokens = '%s's3   lex: Invalid literal %s. Must be a single charactersO   lex: Invalid literals specification. literals must be a sequence of characters.s/   lex: states must be defined as a tuple or list.i   sR   lex: invalid state specifier %s. Must be a tuple (statename,'exclusive|inclusive')s(   lex: state name %s must be a byte stringt	   exclusives?   lex: state type for state %s must be 'inclusive' or 'exclusive's    lex: state '%s' already defined.t   t_s1   lex: no rules of the form t_rulename are defined.s+   lex: %s not defined as a function or stringR3   c         S   s   |  d j  j S(   Ni   (   Rn   Rp   (   t   x(    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyt   <lambda>  s    c         S   s   t  |  d  S(   Ni   (   RB   (   R   (    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyR     s    s(   %s:%d: Rule '%s' has too many arguments.s&   %s:%d: Rule '%s' requires an argument.t   ignores-   %s:%d: Rule '%s' must be defined as a string.Rf   s
   (?P<%s>%s)s=   %s:%d: Regular expression for rule '%s' matches empty string.s3   %s:%d: Invalid regular expression for rule '%s'. %st   #s7   %s:%d. Make sure '#' in rule '%s' is escaped with '\#'.s(   lex: Adding rule %s -> '%s' (state '%s')s2   %s:%d: No regular expression defined for rule '%s's,   lex: Rule '%s' must be defined as a functionR   s3   lex: Rule '%s' defined for an unspecified token %s.s;   lex: Regular expression for rule '%s' matches empty string.s1   lex: Invalid regular expression for rule '%s'. %ss5   lex: Make sure '#' in rule '%s' is escaped with '\#'.s$   lex: No rules defined for state '%s's   lex: Unable to build lexer.s!   lex: state '%s'. regex[%d] = '%s's)   lex: Warning. no t_error rule is defined.s?   lex: Warning. no error rule is defined for exclusive state '%s's@   lex: Warning. no ignore rule is defined for exclusive state '%s'(I   R   R   R*   R+   R[   R   t
   ModuleTypet   __dict__t   _INSTANCETYPEt   dirR.   R^   R)   Rq   t   syst   exc_infot   tb_framet   f_backt	   f_globalsRZ   Rw   R_   R   t   ImportErrorR`   t   SyntaxErrort   listR   R&   t   _is_identifierRg   R   R    R\   R]   RB   R@   t	   TypeErrorR(   t   encode_inputR   Rl   Rm   R-   R   t   sortRn   Rp   Ro   R   t   co_argcountR   t   __doc__RT   RU   R   Rf   R   R   R   R   R   RA   R,   t   extendR   R   R   R    R'   R!   R%   RL   (3   t   moduleR0   t   debugt   optimizeRM   R   t   nowarnR   t	   stateinfoRf   t   filest   lexobjt   warnt   kt   _itemsRJ   t   vR   t   bt   tR9   R   R   R   R   R1   R   R   t	   statetypet   original_namet   tsymbolst   funcsymt   strsymt   toknamesR   t   errorft   toknamet   regexsRa   t
   regex_listt   fnamet   linet   filet   ismethodt   nargst   reqargst   rR   t   re_textR   t   stype(    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyt   lex  s   			 	 	.
							 7
		"+		/


 $ 	


		
	)
 

$#	
		!"			 		c         C   s   | sd y3 t  j d } t |  } | j   } | j   Wqd t k
 r` d GHt  j j   } qd Xn  |  rv |  j } n t } | |  |  r |  j } n t } x7 |   } | s Pn  d | j	 | j
 | j | j f GHq d  S(   Ni   s.   Reading from standard input (type EOF to end):s   (%s,%r,%d,%d)(   R   t   argvR=   t   readRD   t
   IndexErrort   stdinR_   Rw   R   R   R   R   (   R   t   dataR}   R9   t   _inputt   _tokenRt   (    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyt   runmain>  s*    
	 c            s     f d   } | S(   Nc            s     |  _  |  S(   N(   R   (   R9   (   R   (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyt   set_doca  s    	(    (   R   R   (    (   R   s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyt   TOKEN`  s    (   R?   RT   R   R   R   R    Rl   RU   R   t   InstanceTypet
   ObjectTypeR   t   AttributeErrorR0   R   R   R
   R   R   RC   RV   R   R   R   R   R   R   t   Token(    (    (    s2   /usr/lib64/python2.7/site-packages/sepolgen/lex.pyt   <module>   s,   $
 	'			&	 X"	