;
Πβ"Ic            
   @   s₯   d  Z  d Z d d g Z d d l Z d d l Z d d l Z d d l m Z m Z m	 Z	 m
 Z
 m Z Gd   d e  Z d	   Z d
 d d d d d  Z d   Z d S(   uZ   Parser driver.

This provides a high-level interface to parse a file into a syntax tree.

u#   Guido van Rossum <guido@python.org>u   Driveru   load_grammari    Ni   (   u   grammaru   parseu   tokenu   tokenizeu   pgenc             B   sY   |  Ee  Z d d d   Z d d  Z d d  Z d d  Z d d  Z d d  Z	 d S(   c             C   s<   | |  _  | d  k o t j   } n | |  _ | |  _ d  S(   N(   u   grammaru   Noneu   loggingu	   getLoggeru   loggeru   convert(   u   selfu   grammaru   convertu   logger(    (    u1   /mit/python/lib/python3.0/lib2to3/pgen2/driver.pyu   __init__   s
    		c             C   s$  t  j |  j |  j  } | j   d } d } d } } } }	 }
 d } xΠ| D]°} | \ } } } }	 }
 | | | f k oj | \ } } | | k  o" | d | | 7} | } d } n | | k  o | |
 | |  7} | } qι n | t j t j f k oA | | 7} |	 \ } } | j	 d  o | d 7} d } qQ qQ n | t
 j k o t j | } n | o$ |  j j d t
 j | | |  n | j | | | | f  o  | o |  j j d  n Pn d } |	 \ } } | j	 d  o | d 7} d } qQ qQ Wt  j d t t t   | j S(	   u4   Parse a series of tokens and return the syntax tree.i   i    u    u   
u   %s %r (prefix=%r)u   Stop.u   incomplete inputN(   u   parseu   Parseru   grammaru   convertu   setupu   Noneu   tokenizeu   COMMENTu   NLu   endswithu   tokenu   OPu   opmapu   loggeru   debugu   tok_nameu   addtokenu
   ParseErroru   tu   vu   xu   rootnode(   u   selfu   tokensu   debugu   pu   linenou   columnu   typeu   valueu   startu   endu	   line_textu   prefixu	   quintupleu   s_linenou   s_column(    (    u1   /mit/python/lib/python3.0/lib2to3/pgen2/driver.pyu   parse_tokens$   sR    
 




c             C   s"   t  j | j  } |  j | |  S(   u*   Parse a stream and return the syntax tree.(   u   tokenizeu   generate_tokensu   readlineu   parse_tokens(   u   selfu   streamu   debugu   tokens(    (    u1   /mit/python/lib/python3.0/lib2to3/pgen2/driver.pyu   parse_stream_rawS   s    c             C   s   |  j  | |  S(   u*   Parse a stream and return the syntax tree.(   u   parse_stream_raw(   u   selfu   streamu   debug(    (    u1   /mit/python/lib/python3.0/lib2to3/pgen2/driver.pyu   parse_streamX   s    c          	   C   s2   t  |  } z |  j | |  SWd | j   Xd S(   u(   Parse a file and return the syntax tree.N(   u   openu   parse_streamu   close(   u   selfu   filenameu   debugu   stream(    (    u1   /mit/python/lib/python3.0/lib2to3/pgen2/driver.pyu
   parse_file\   s    c             C   s(   t  j t |  j  } |  j | |  S(   u*   Parse a string and return the syntax tree.(   u   tokenizeu   generate_tokensu   generate_linesu   __next__u   parse_tokens(   u   selfu   textu   debugu   tokens(    (    u1   /mit/python/lib/python3.0/lib2to3/pgen2/driver.pyu   parse_stringd   s    NF(
   u   __name__u
   __module__u   Noneu   __init__u   Falseu   parse_tokensu   parse_stream_rawu   parse_streamu
   parse_fileu   parse_string(   u
   __locals__(    (    u1   /mit/python/lib/python3.0/lib2to3/pgen2/driver.pyu   Driver   s   
/c             c   s.   x |  j  d  D] } | Vq Wx d Vq" d S(   u<   Generator that behaves like readline without using StringIO.u    NT(   u
   splitlinesu   True(   u   textu   line(    (    u1   /mit/python/lib/python3.0/lib2to3/pgen2/driver.pyu   generate_linesj   s
     	u   Grammar.txtc       	      C   sI  | d k o t j   } n | d k oZ t j j |   \ } } | d k o
 d } n | | d j t t t	 j
   d } n | p t | |   o | j d |   t j |   } | of | j d |  y | j |  Wq(t k
 o2 } z | j d t |   WYd d } ~ Xq(XqEn t j   } | j |  | S(	   u'   Load the grammar (maybe from a pickle).u   .txtu    u   .u   .pickleu!   Generating grammar tables from %su   Writing grammar tables to %su   Writing failed:N(   u   Noneu   loggingu	   getLoggeru   osu   pathu   splitextu   joinu   mapu   stru   sysu   version_infou   _neweru   infou   pgenu   generate_grammaru   dumpu   IOErroru   grammaru   Grammaru   load(	   u   gtu   gpu   saveu   forceu   loggeru   headu   tailu   gu   e(    (    u1   /mit/python/lib/python3.0/lib2to3/pgen2/driver.pyu   load_grammarr   s&    
+3c             C   sR   t  j j |   p d St  j j |  p d St  j j |   t  j j |  k S(   u0   Inquire whether file a was written since file b.FT(   u   osu   pathu   existsu   Falseu   Trueu   getmtime(   u   au   b(    (    u1   /mit/python/lib/python3.0/lib2to3/pgen2/driver.pyu   _newer   s
    TF(   u   __doc__u
   __author__u   __all__u   osu   loggingu   sysu    u   grammaru   parseu   tokenu   tokenizeu   pgenu   objectu   Driveru   generate_linesu   Noneu   Trueu   Falseu   load_grammaru   _newer(    (    (    u1   /mit/python/lib/python3.0/lib2to3/pgen2/driver.pyu   <module>   s   (O	