;
"Ic               @   s   d  Z  d d l Z d d l Z d d l m Z d d l m Z d d g Z Gd   d  Z	 d d d  Z e d	 k o{ e e j  d
 k o e	   Z n# e j d
 Z e	 e e  e  Z x3 e j   Z e o e d e e   q Pq n d S(   u8   A lexical analyzer class for simple shell-like syntaxes.i    N(   u   deque(   u   StringIOu   shlexu   splitc             B   s   |  Ee  Z d  Z d d d d  Z d   Z d d  Z d   Z d   Z	 d   Z
 d   Z d d d  Z d	   Z d
   Z d S(   u8   A lexical analyzer class for simple shell-like syntaxes.c             C   sK  t  | t  o t |  } n | d  k	 o | |  _ | |  _ n t j |  _ d  |  _ | |  _ | o d  |  _	 n
 d |  _	 d |  _
 d |  _ |  j o |  j d 7_ n d |  _ d |  _ d |  _ d |  _ d |  _ d	 |  _ t   |  _ d
 |  _ d |  _ d |  _ t   |  _ d  |  _ |  j o t d |  j |  j f  n d  S(   Nu    u   #u?   abcdfeghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_u   ÃÃ Ã¡Ã¢Ã£Ã¤Ã¥Ã¦Ã§Ã¨Ã©ÃªÃ«Ã¬Ã­Ã®Ã¯Ã°Ã±Ã²Ã³Ã´ÃµÃ¶Ã¸Ã¹ÃºÃ»Ã¼Ã½Ã¾Ã¿ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃu    	
u   '"u   \u   "u    i   i    u   shlex: reading from %s, line %dF(   u
   isinstanceu   stru   StringIOu   Noneu   instreamu   infileu   sysu   stdinu   posixu   eofu
   commentersu	   wordcharsu
   whitespaceu   Falseu   whitespace_splitu   quotesu   escapeu   escapedquotesu   stateu   dequeu   pushbacku   linenou   debugu   tokenu	   filestacku   sourceu   print(   u   selfu   instreamu   infileu   posix(    (    u"   /mit/python/lib/python3.0/shlex.pyu   __init__   s<    						
										
c             C   s<   |  j  d k o t d t |   n |  j j |  d S(   u:   Push a token onto the stack popped by the get_token methodi   u   shlex: pushing token N(   u   debugu   printu   repru   pushbacku
   appendleft(   u   selfu   tok(    (    u"   /mit/python/lib/python3.0/shlex.pyu
   push_token8   s    c             C   s   t  | t  o t |  } n |  j j |  j |  j |  j f  | |  _ | |  _ d |  _ |  j o= | d k	 o t
 d |  j f  q t
 d |  j f  n d S(   u9   Push an input source onto the lexer's input source stack.i   u   shlex: pushing to file %su   shlex: pushing to stream %sN(   u
   isinstanceu   stru   StringIOu	   filestacku
   appendleftu   infileu   instreamu   linenou   debugu   Noneu   print(   u   selfu	   newstreamu   newfile(    (    u"   /mit/python/lib/python3.0/shlex.pyu   push_source>   s    "			
c             C   sc   |  j  j   |  j j   \ |  _ |  _  |  _ |  j o t d |  j  |  j f  n d |  _ d S(   u   Pop the input source stack.u   shlex: popping to %s, line %du    N(	   u   instreamu   closeu	   filestacku   popleftu   infileu   linenou   debugu   printu   state(   u   self(    (    u"   /mit/python/lib/python3.0/shlex.pyu
   pop_sourceL   s    !
c             C   sP  |  j  o< |  j  j   } |  j d k o t d t |   n | S|  j   } |  j d k	 od xa | |  j k oL |  j |  j    } | o  | \ } } |  j	 | |  n |  j
   } qe Wn x= | |  j k o, |  j p |  j S|  j   |  j
   } q W|  j d k o6 | |  j k o t d t |   qLt d  n | S(   uB   Get a token from the input stream (or from stack if it's nonempty)i   u   shlex: popping token u   shlex: token=u   shlex: token=EOFN(   u   pushbacku   popleftu   debugu   printu   repru
   read_tokenu   sourceu   Noneu
   sourcehooku   push_sourceu	   get_tokenu   eofu	   filestacku
   pop_source(   u   selfu   toku   rawu   specu   newfileu	   newstream(    (    u"   /mit/python/lib/python3.0/shlex.pyu	   get_tokenU   s2    
  

c             C   s  d } d } xl|  j j d  } | d k o |  j d |  _ n |  j d k o& t d t |  j  d t |   n |  j d  k o d |  _	 Pq |  j d k or| p d  |  _ Pqx| |  j
 k oE |  j d k o t d	  n |  j	 p |  j o | o Pqq qx| |  j k o! |  j j   |  j d |  _ qx|  j o# | |  j k o d
 } | |  _ qx| |  j k o | |  _	 d
 |  _ qx| |  j k o$ |  j p | |  _	 n | |  _ qx|  j o | |  _	 d
 |  _ qx| |  _	 |  j	 p |  j o | o Pqxq q |  j |  j k o d } | p. |  j d k o t d  n t d   n | |  j k o5 |  j p |  j	 | |  _	 d |  _ Pqd
 |  _ qx|  j o9 | |  j k o) |  j |  j k o |  j } | |  _ qx|  j	 | |  _	 q |  j |  j k o | p. |  j d k o t d  n t d   n | |  j k o4 | |  j k o$ | | k o |  j	 |  j |  _	 n |  j	 | |  _	 | |  _ q |  j d
 k o| p d  |  _ Pqx| |  j
 k oN |  j d k o t d  n d |  _ |  j	 p |  j o | o Pqtq qx| |  j k o[ |  j j   |  j d |  _ |  j o0 d |  _ |  j	 p |  j o | o Pqq qtqx|  j o | |  j k o | |  _ qx|  j o# | |  j k o d
 } | |  _ qx| |  j k p | |  j k p
 |  j o |  j	 | |  _	 qx|  j j |  |  j d k o t d  n d |  _ |  j	 o Pqxq q q |  j	 } d |  _	 |  j o | o | d k o
 d  } n |  j d k o- | o t d t |   qt d  n | S(   Nu    i   u   
i   u   shlex: in stateu   I see character:u    i   u+   shlex: I see whitespace in whitespace stateu   au    shlex: I see EOF in quotes stateu   No closing quotationu    shlex: I see EOF in escape stateu   No escaped characteru%   shlex: I see whitespace in word stateu&   shlex: I see punctuation in word stateu   shlex: raw token=u   shlex: raw token=EOFFT(   u   Falseu   instreamu   readu   linenou   debugu   printu   repru   stateu   Noneu   tokenu
   whitespaceu   posixu
   commentersu   readlineu   escapeu	   wordcharsu   quotesu   whitespace_splitu   Trueu
   ValueErroru   escapedquotesu   pushbacku
   appendleft(   u   selfu   quotedu   escapedstateu   nextcharu   result(    (    u"   /mit/python/lib/python3.0/shlex.pyu
   read_tokenu   s    			

		
				
	 
	

		
c             C   s   | d d k o | d d  } n t  |  j t  o< t j j |  o( t j j t j j |  j  |  } n | t | d  f S(   u(   Hook called on a filename to be sourced.i    u   "i   iu   r(	   u
   isinstanceu   infileu   stru   osu   pathu   isabsu   joinu   dirnameu   open(   u   selfu   newfile(    (    u"   /mit/python/lib/python3.0/shlex.pyu
   sourcehook   s
    '(c             C   sB   | d k o |  j } n | d k o |  j } n d | | f S(   u<   Emit a C-compiler-like, Emacs-friendly error-message leader.u   "%s", line %d: N(   u   Noneu   infileu   lineno(   u   selfu   infileu   lineno(    (    u"   /mit/python/lib/python3.0/shlex.pyu   error_leader   s
    c             C   s   |  S(   N(    (   u   self(    (    u"   /mit/python/lib/python3.0/shlex.pyu   __iter__  s    c             C   s*   |  j    } | |  j k o
 t  n | S(   N(   u	   get_tokenu   eofu   StopIteration(   u   selfu   token(    (    u"   /mit/python/lib/python3.0/shlex.pyu   __next__	  s    
NF(   u   __name__u
   __module__u   __doc__u   Noneu   Falseu   __init__u
   push_tokenu   push_sourceu
   pop_sourceu	   get_tokenu
   read_tokenu
   sourcehooku   error_leaderu   __iter__u   __next__(   u
   __locals__(    (    u"   /mit/python/lib/python3.0/shlex.pyu   shlex   s   
$				 				c             C   s9   t  |  d | } d | _ | p d | _ n t |  S(   Nu   posixu    T(   u   shlexu   Trueu   whitespace_splitu
   commentersu   list(   u   su   commentsu   posixu   lex(    (    u"   /mit/python/lib/python3.0/shlex.pyu   split  s
    	u   __main__i   u   Token: FT(   u   __doc__u   os.pathu   osu   sysu   collectionsu   dequeu   iou   StringIOu   __all__u   shlexu   Falseu   Trueu   splitu   __name__u   lenu   argvu   lexeru   fileu   openu	   get_tokenu   ttu   printu   repr(    (    (    u"   /mit/python/lib/python3.0/shlex.pyu   <module>   s"   