ó
¦V]c           @@  sŸ   d  d l  m Z d d l m Z m Z m Z m Z m Z m Z m	 Z	 m
 Z
 m Z m Z d d l m Z d e f d „  ƒ  YZ d „  Z d e f d	 „  ƒ  YZ d
 S(   i    (   t   absolute_importi   (
   t   Altt   Seqt   Rept   Rep1t   Optt   Anyt   AnyButt   Bolt   Eolt   Char(   t	   PlexErrort   RegexpSyntaxErrorc           B@  s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s6   lib/python2.7/site-packages/Cython/Plex/Traditional.pyR      s   c         C@  s   t  |  ƒ j ƒ  S(   sk   
    Convert traditional string representation of regular expression |s|
    into Plex representation.
    (   t   REParsert   parse_re(   t   s(    (    s6   lib/python2.7/site-packages/Cython/Plex/Traditional.pyt   re   s    R   c           B@  st   e  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@  s)   | |  _  d |  _ d |  _ |  j ƒ  d  S(   Niÿÿÿÿi    (   R   t   it   endt   next(   t   selfR   (    (    s6   lib/python2.7/site-packages/Cython/Plex/Traditional.pyt   __init__   s    			c         C@  s6   |  j  ƒ  } |  j s2 |  j d t |  j ƒ ƒ n  | S(   Ns   Unexpected %s(   t	   parse_altR   t   errort   reprt   c(   R   R   (    (    s6   lib/python2.7/site-packages/Cython/Plex/Traditional.pyR   "   s    	c         C@  sj   |  j  ƒ  } |  j d k rf | g } x0 |  j d k rV |  j ƒ  | j |  j  ƒ  ƒ q' Wt | Œ  } n  | S(   s#   Parse a set of alternative regexps.t   |(   t	   parse_seqR   R   t   appendR   (   R   R   t   re_list(    (    s6   lib/python2.7/site-packages/Cython/Plex/Traditional.pyR   (   s    	
c         C@  sC   g  } x0 |  j  r8 |  j d k r8 | j |  j ƒ  ƒ q	 Wt | Œ  S(   s   Parse a sequence of regexps.s   |)(   R   R   R   t	   parse_modR   (   R   R   (    (    s6   lib/python2.7/site-packages/Cython/Plex/Traditional.pyR   3   s    c         C@  s‚   |  j  ƒ  } xo |  j r} |  j d k r} |  j d k rF t | ƒ } n* |  j d k rd t | ƒ } n t | ƒ } |  j ƒ  q W| S(   s7   Parse a primitive regexp followed by *, +, ? modifiers.s   *+?t   *t   +(   t
   parse_primR   R   R   R   R   R   (   R   R   (    (    s6   lib/python2.7/site-packages/Cython/Plex/Traditional.pyR    :   s    c         C@  sÌ   |  j  ƒ  } | d k r' t d ƒ } n¡ | d k r< t } nŒ | d k rQ t } nw | d k ry |  j ƒ  } |  j d ƒ nO | d k r¡ |  j ƒ  } |  j d ƒ n' | d	 k r¼ |  j  ƒ  } n  t | ƒ } | S(
   s   Parse a primitive regexp.t   .s   
t   ^t   $t   (t   )t   [t   ]s   \(   t   getR   R   R	   R   t   expectt   parse_charsetR
   (   R   R   R   (    (    s6   lib/python2.7/site-packages/Cython/Plex/Traditional.pyR#   G   s"    		c         C@  s7  g  } d } |  j  d k r. d } |  j ƒ  n  |  j  d k rW | j d ƒ |  j ƒ  n  x° |  j r	|  j  d k r	|  j ƒ  } |  j  d k rù |  j d ƒ d k rù |  j ƒ  |  j ƒ  } xJ t t | ƒ t | ƒ d ƒ D] } | j t | ƒ ƒ qÙ WqZ | j | ƒ qZ Wd j	 | ƒ } | r)t
 | ƒ St | ƒ Sd S(   s5   Parse a charset. Does not include the surrounding [].i    R%   i   R*   t   -t    N(   R   R   R   R   R+   t	   lookaheadt   ranget   ordt   chrt   joinR   R   (   R   t	   char_listt   invertt   c1t   c2t   at   chars(    (    s6   lib/python2.7/site-packages/Cython/Plex/Traditional.pyR-   \   s(    $
&
c         C@  sU   |  j  } |  j d } |  _ | t | ƒ k  r? | | |  _ n d |  _ d |  _ d S(   s   Advance to the next char.i   R/   N(   R   R   t   lenR   R   (   R   R   R   (    (    s6   lib/python2.7/site-packages/Cython/Plex/Traditional.pyR   u   s    		c         C@  s0   |  j  r |  j d ƒ n  |  j } |  j ƒ  | S(   Ns   Premature end of string(   R   R   R   R   (   R   R   (    (    s6   lib/python2.7/site-packages/Cython/Plex/Traditional.pyR+      s
    		
c         C@  s5   |  j  | } | t |  j ƒ k  r- |  j | Sd Sd S(   s   Look ahead n chars.R/   N(   R   R;   R   (   R   t   nt   j(    (    s6   lib/python2.7/site-packages/Cython/Plex/Traditional.pyR0   †   s    c         C@  s7   |  j  | k r |  j ƒ  n |  j d t | ƒ ƒ d S(   sj   
        Expect to find character |c| at current position.
        Raises an exception otherwise.
        s
   Missing %sN(   R   R   R   R   (   R   R   (    (    s6   lib/python2.7/site-packages/Cython/Plex/Traditional.pyR,   Ž   s    c         C@  s)   t  d t |  j ƒ |  j | f ƒ ‚ d S(   s1   Raise exception to signal syntax error in regexp.s,   Syntax error in regexp %s at position %d: %sN(   R   R   R   R   (   R   t   mess(    (    s6   lib/python2.7/site-packages/Cython/Plex/Traditional.pyR   ˜   s    (   R   R   R   R   R   R   R    R#   R-   R   R+   R0   R,   R   (    (    (    s6   lib/python2.7/site-packages/Cython/Plex/Traditional.pyR      s   								
			
N(   t
   __future__R    t   RegexpsR   R   R   R   R   R   R   R   R	   R
   t   ErrorsR   R   R   t   objectR   (    (    (    s6   lib/python2.7/site-packages/Cython/Plex/Traditional.pyt   <module>	   s
   F	