ó
è™xTc           @   s>   d  d l  m Z d  d l Z d „  Z d d d d d „ Z d S(   iÿÿÿÿ(   t   divisionNc         C   s}  t  } | } g  } x-t rA|  j d d ƒ } | d  k r= Pn  | r› | j d  k r› | j d
 k r› | j d k ru Pn  | j d k r’ |  j ƒ  Pn  t } n� | j d  k	 sÈ | j d  k rá | j d k rá | s8| j | ƒ q8nW | j | j k r|  j ƒ  Pn7 | j d k s| j d  k	 r8| s8| j | ƒ q8n  | } q Wt	 | ƒ d k ryt
 d	 t | ƒ | j ƒ  f ƒ ‚ n  | S(   Nt   settings_indexi   t   {t   }t   ;t   #s   \i    s   Missing value for %s%s(   R   R   R   R   (   t   Falset   Truet   try_popt   Nonet   quote_tokent   valuet   backupt   appendt   line_numbert   lent   RuntimeErrort   strt	   where_str(   t   word_iteratort	   lead_wordt   have_commentt	   last_wordt   resultt   word(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/parser.pyt   collect_assigned_words   s>    	 
	 
 
c         C   s–  | d  k r i  } n  | d  k r* i  } n  d } d  }	 xët r#|  j ƒ  }
 |
 d  k r[ Pn  |
 j d k r|
 j | k r|  j ƒ  } | j d k r˜ Pn  | j d k r­ q9 n  | j d k rä t d |
 j | j | j ƒ  f ƒ ‚ n  |  j d |
 j d d d g ƒ d k r9 Pq9 q9 n  | d  k	 r4|
 j | k r4d  S|
 j d	 k r\t d
 |
 j ƒ  ƒ ‚ n  |
 j d  d k rˆ|
 j d |
 _ t } n t	 } |
 j } |  j
 ƒ  } | j d  k r¦| j d	 k sç| j d  d k sç| j d  d k r¦t j j |
 j ƒ s+|
 j d k r|
 j d ƒ q+|
 j d ƒ n  d  }	 t j j d |
 j d | j ƒ  d | d |
 j ƒ  ƒ } xõ t r^| j d	 k rƒPn  | j d  d k r¯| j d | _ t } n t	 } | j d  d k sß| j | j d ƒ rt d | j | j ƒ  f ƒ ‚ n  |  j ƒ  j d ƒ t |  | ƒ } | sO| j d | j d d | d | ƒ n  |  j ƒ  } qjWt d |  d | d | d | d d  d! | d" | d | ƒ | j | ƒ q9 |  j ƒ  |
 j d  d k r�t j j |
 j ƒ s|
 j d k r÷|
 j d ƒ q|
 j d# ƒ n  |
 j d$ k r,|  j ƒ  j d ƒ n  t j j d |
 j d t |  |
 ƒ d | j ƒ  d | d |
 j ƒ  ƒ }	 | j |	 ƒ q9 |	 d  k s¤|	 j |
 j d ƒ rÆt d% |
 j |
 j ƒ  f ƒ ‚ n  |  j ƒ  } | j d ƒ t |  |
 ƒ } | s9 |	 j d |
 j d d | d | d& | ƒ q9 q9 W| d  k	 r’| d  k rEd' } n | j ƒ  } | d' k rpt d( | ƒ ‚ n  t d) | t | ƒ | f ƒ ‚ n  d  S(*   Ni    s   #philt   __END__t   __ON__t   __OFF__s   Unknown: %s %s%st   introt	   followupsR   s   Syntax error: unexpected "{"%si   t   !t   .i   s   !.R   s   unexpected s   improper scope name t   namet
   primary_idt   is_disabledR   s    Unexpected scope attribute: %s%st   =t   wordst   scope_extract_call_proxy_cacheR   t   converter_registryt   primary_id_generatort   primary_parent_scopet
   stop_tokenR   t
   start_wordt   definition_converter_caches   improper definition name t   includes%   Unexpected definition attribute: %s%st   converter_cachet    s   Syntax error: missing "%s"s-   Syntax error: no matching "%s" for "%s" at %s(   R	   R   t   try_pop_unquotedR   R   t   pop_unquotedR   R   t   scan_for_startR   t   popR
   t   libtbxt   philt   is_standard_identifiert   raise_syntax_errort   scopet   nextt   has_attribute_with_namet   assert_expectedR   t   assign_attributet   collect_objectst   adoptR   t
   definitiont   whereR   (   R   R'   R(   R)   R*   R+   R,   R&   t   prev_line_numbert   active_definitionR   R   R#   R8   t   assigned_wordsR@   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/parser.pyR=   "   sè    				   "							

			(   t
   __future__R    t   libtbx.philR4   R   R	   R=   (    (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/parser.pyt   <module>   s   	#