ó
ê™xTc           @   s²   d  d l  m Z d  d l m Z d „  Z d „  Z d e f d „  ƒ  YZ d „  Z d „  Z d	 e f d
 „  ƒ  YZ	 d d d d Z
 d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   division(   t   slots_getstate_setstatec         C   s    | j  d d ƒ j  |  d |  ƒ S(   Ns   \s   \\(   t   replace(   t
   quote_chart   string(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt   escape_python_str   s    c         C   s   |  t  d |  d d | ƒ |  S(   NR   i    R   (   R   (   t   quote_tokenR   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt   quote_python_str   s    t   character_iteratorc           B   se   e  Z d  d d d d g Z d „  Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z	 d „  Z
 RS(   t   input_stringt   i_chart   line_numbert   backup_i_chart   backup_line_numberc         C   s1   | |  _  d |  _ d |  _ d  |  _ d  |  _ d  S(   Ni    i   (   R	   R
   R   t   NoneR   R   (   t   OR	   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt   __init__   s
    				c         C   s   |  j  |  _ |  j |  _ d  S(   N(   R
   R   R   R   (   R   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt   mark_for_backup   s    c         C   s   |  j  |  _ |  j |  _ d  S(   N(   R   R
   R   R   (   R   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt   restore_backup    s    c         C   s7   |  j  | } | t |  j ƒ k r& d  S|  j |  j  | !S(   N(   R
   t   lenR	   R   (   R   t   nt   end(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt
   look_ahead$   s     c         C   s*   |  j  t |  j ƒ k r d  S|  j |  j  S(   N(   R
   R   R	   R   (   R   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt   look_ahead_1)   s     c         C   s;   |  j  |  j d k r( |  j d 7_ n  |  j d 7_ d  S(   Ns   
i   (   R	   R
   R   (   R   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt   skip_ahead_1-   s     c         C   sL   |  j  ƒ  } | d  k	 rH |  j d 7_ | d k rH |  j d 7_ qH n  | S(   Ni   s   
(   R   R   R
   R   (   R   t   result(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt   next1   s     c         C   s�  x‰t  r‹|  j t |  j ƒ k r% d S|  j |  j d k rM |  j d 7_ q x^ t  r­ |  j d 7_ |  j d 7_ |  j t |  j ƒ k r� d S|  j |  j d k rP PqP qP W|  j j | |  j |  j t | ƒ ƒ |  j k rñ |  j d 7_ q |  j t | ƒ 7_ xO t  rW|  j t |  j ƒ k r+d S|  j |  j j ƒ  rEPn  |  j d 7_ q	WxO t  r©|  j t |  j ƒ k r}d S|  j |  j j ƒ  s—Pn  |  j d 7_ q[WxÛ t | ƒ D]Í \ } } |  j j | |  j |  j t | ƒ ƒ |  j k r·|  j t | ƒ 7_ xt t  r|  j t |  j ƒ k r.| S|  j |  j } |  j d 7_ | d k rl|  j d 7_ | S| j ƒ  sPqqWPq·q·Wq Wd S(   Ni    s   
i   (   t   TrueR
   R   R	   R   t   findt   isspacet	   enumerate(   R   t   introt	   followupst
   i_followupt   followupt   c(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt   scan_for_start8   s\    	 	  	(	  	  		  (   t   __name__t
   __module__t	   __slots__R   R   R   R   R   R   R   R$   (    (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyR      s   								c         C   s…   g  } |  d  k	 rB | j |  ƒ | d  k	 rb | j d | ƒ qb n  | d  k	 rb | j d | ƒ n  t | ƒ d k rx d  Sd j | ƒ S(   Ns   line %ds   input line %di    s   , (   R   t   appendR   t   join(   t   source_infoR   R   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt   wherea   s     c         C   s'   t  |  | ƒ } | d  k r d Sd | S(   Nt    s    (%s)(   R+   R   (   R*   R   t   s(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt	   where_strl   s     t   wordc           B   sb   e  Z d  d d d g Z d d d d „ Z d „  Z d „  Z d „  Z d „  Z d	 „  Z	 d
 „  Z
 RS(   t   valueR   R   R*   c         C   s(   | |  _  | |  _ | |  _ | |  _ d  S(   N(   R0   R   R   R*   (   R   R0   R   R   R*   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyR   u   s    			c         C   s/   |  j  d  k r |  j St d |  j  d |  j ƒ S(   NR   R   (   R   R   R0   R   (   R   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt   __str__   s    c         C   s   t  |  j |  j ƒ S(   N(   R+   R*   R   (   R   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyR+   „   s    c         C   s   t  |  j |  j ƒ S(   N(   R.   R*   R   (   R   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyR.   ‡   s    c         C   s&   t  d | |  j |  j ƒ  f ƒ ‚ d  S(   Ns   Syntax error: %s"%s"%s(   t   RuntimeErrorR0   R.   (   R   t   message(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt   raise_syntax_errorŠ   s    c         C   s'   |  j  | k r# |  j d | ƒ n  d  S(   Ns   expected "%s", found (   R0   R4   (   R   R0   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt   assert_expectedŽ   s    c         C   s&   t  d t |  ƒ |  j ƒ  f ƒ ‚ d  S(   Ns"   Unquoted word expected, found %s%s(   R2   t   strR.   (   R   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt   raise_unquoted_word_expected’   s    N(   R%   R&   R'   R   R   R1   R+   R.   R4   R5   R7   (    (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyR/   q   s   					t   ABCDEFGHIJKLMNOPQRSTUVWXYZt   abcdefghijklmnopqrstuvwxyzt
   0123456789t   _t   settingsc           B   s5   e  Z d  d d d d g Z d d e d d d „ Z RS(   t   unquoted_single_character_wordst   contiguous_word_characterst   enable_unquoted_embedded_quotest   comment_characterst   meta_commentR,   c         C   sI   | |  _  | d  k r! t |  _ n	 | |  _ | |  _ | |  _ | |  _ d  S(   N(   R=   R   t"   default_contiguous_word_charactersR>   R?   R@   RA   (   R   R=   R>   R?   R@   RA   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyR   £   s    				N(   R%   R&   R'   R   R   R   (    (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyR<   š   s   	t   word_iteratorc           B   s€   e  Z d  d d g Z d d d d „ Z d „  Z d d „ Z d d „ Z d d „ Z d d	 „ Z	 d d
 „ Z
 d „  Z d „  Z RS(   t	   char_iterR*   t   list_of_settingsc         C   s‰   | d  k s | d  k s t ‚ t | ƒ |  _ | d  k rU | d  k	 rU d | |  _ n	 | |  _ | d  k r| t ƒ  g |  _ n	 | |  _ d  S(   Ns	   file "%s"(   R   t   AssertionErrorR   RD   R*   R<   RE   (   R   R	   R*   t	   file_nameRE   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyR   ¹   s    	c         C   s   |  S(   N(    (   R   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt   __iter__É   s    i    c   
   	   C   s†  |  j  | } |  j } | j ƒ  xYt r{| j ƒ  } | d  k rE Pn  | j ƒ  rW q# n  | | j k rÑ | j d  k s™ | j	 d t
 | j ƒ ƒ | j k rÑ xÜt rÍ | j ƒ  } | d  k sÆ | d k rœ Pqœ qœ Wq# | d k rv| } g  } | j } | j	 d d ƒ | | k r3| j ƒ  | j ƒ  | | | } n | } xt rJ| j ƒ  } | | k r¡| | k rjPn  | j	 d d ƒ | | k r¡| j ƒ  | j ƒ  Pq¡n  | d k r| j ƒ  }	 |	 d k rÒ| j ƒ  q|	 | k rí| j ƒ  } q|	 d k r| j ƒ  q<qn  | d  k r:t d t |  j | j ƒ ƒ ‚ n  | j | ƒ q<Wt d d	 j | ƒ d
 | d | d |  j ƒ S| g } | j } | | j k rS| j d	 k sµ| | j k rSx› t rO| j ƒ  } | d  k rÚPn  | j ƒ  rêPn  | | j k rýPn  | j d	 k r5| | j k r5| j s1| d k r5Pn  | j | ƒ | j ƒ  q¸Wn  t d d	 j | ƒ d | d |  j ƒ Sq# Wt ‚ d  S(   NR   s   
t   "t   'i   s   \s%   Syntax error: missing closing quote%sR0   R,   R   R   R*   (   RI   RJ   (   RI   RJ   (   RE   RD   R   R   R   R   R   R@   RA   R   R   R   R   R   R2   R.   R*   R(   R/   R)   R=   R>   R?   t   StopIteration(
   R   t   settings_indexR<   RD   R#   R   t
   word_valuet   word_line_numberR   R;   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyR   Ì   sž    	
	  	 	

	 


	
			   
c         C   s*   y |  j  | ƒ SWn t k
 r% d  SXd  S(   N(   R   RK   R   (   R   RL   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt   try_pop  s      c         C   s5   y |  j  | ƒ SWn t k
 r0 t d ƒ ‚ n Xd  S(   Ns   Unexpected end of input.(   R   RK   R2   (   R   RL   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt   pop  s      c         C   s>   |  j  | ƒ } | d  k	 r: | j d  k	 r: | j ƒ  q: n  | S(   N(   RO   R   R   R7   (   R   RL   R/   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt   try_pop_unquoted   s
     c         C   s/   |  j  | ƒ } | j d  k	 r+ | j ƒ  n  | S(   N(   RP   R   R   R7   (   R   RL   R/   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt   pop_unquoted&  s     c         C   s   |  j  j ƒ  d  S(   N(   RD   R   (   R   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt   backup+  s    c         C   s   |  j  j | | ƒ d  S(   N(   RD   R$   (   R   R   R    (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyR$   .  s    N(   R%   R&   R'   R   R   RH   R   RO   RP   RQ   RR   RS   R$   (    (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyRC   ²   s   		L	N(   t
   __future__R    t   libtbxR   R   R   R   R+   R.   R/   RB   R<   RC   (    (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/tokenizer.pyt   <module>   s   		U		(