�
{fc @ s d Z d Z d d g Z d d l Z d d l Z d d l 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 d e f d � � YZ d � Z d
d e e d d � Z d � Z d
� Z d � Z e d k r e j e e � � � n d S( sZ Parser driver.
This provides a high-level interface to parse a file into a syntax tree.
s# Guido van Rossum t Drivert load_grammari����Ni ( t grammart parset tokent tokenizet pgenc B sV e Z d d d � Z e d � Z e d � Z e d � Z d e d � Z e d � Z RS( c C s: | | _ | d k r$ t j � } n | | _ | | _ d S( N( R t Nonet loggingt getLoggert loggert convert( t selfR R R
( ( s, /usr/lib64/python2.7/lib2to3/pgen2/driver.pyt __init__ s
c C s t j | j | j � } | j � d } d } d } } } } }
d } x�| D]�} | \ } } } } }
| | | f k r� | \ }
} | |
k r� | d |
| 7} |
} d } n | | k r� | |
| | !7} | } q� n | t j t j f k r6| | 7} | \ } } | j d � rQ | d 7} d } qQ qQ n | t
j k rUt j | } n | r~| j
j d t
j | | | � n | j | | | | f � r�| r�| j
j d � n Pn d } | \ } } | j d � rQ | d 7} d } qQ qQ Wt j d | | | | f � � | j S(
s4 Parse a series of tokens and return the syntax tree.i i u s
s %s %r (prefix=%r)s Stop.t s incomplete inputN( R t ParserR R t setupR R t COMMENTt NLt endswithR t OPt opmapR
t debugt tok_namet addtokent
ParseErrort rootnode( R t tokensR t pt linenot columnt typet valuet startt endt line_textt prefixt quintuplet s_linenot s_column( ( s, /usr/lib64/python2.7/lib2to3/pgen2/driver.pyt parse_tokens' sR
c C s" t j | j � } | j | | � S( s* Parse a stream and return the syntax tree.( R t generate_tokenst readlineR( ( R t streamR R ( ( s, /usr/lib64/python2.7/lib2to3/pgen2/driver.pyt parse_stream_rawW s c C s | j | | � S( s* Parse a stream and return the syntax tree.( R, ( R R+ R ( ( s, /usr/lib64/python2.7/lib2to3/pgen2/driver.pyt parse_stream\ s c C s; t j | d | � } z | j | | � SWd | j � Xd S( s( Parse a file and return the syntax tree.t rN( t codecst openR- t close( R t filenamet encodingR R+ ( ( s, /usr/lib64/python2.7/lib2to3/pgen2/driver.pyt
parse_file` s c C s+ t j t j | � j � } | j | | � S( s* Parse a string and return the syntax tree.( R R) t StringIOR* R( ( R t textR R ( ( s, /usr/lib64/python2.7/lib2to3/pgen2/driver.pyt parse_stringh s N(
t __name__t
__module__R R
t FalseR( R, R- R4 R7 ( ( ( s, /usr/lib64/python2.7/lib2to3/pgen2/driver.pyR s 0c C sR t j j | � \ } } | d k r- d } n | | d j t t t j � � d S( Ns .txtR t .s .pickle( t ost patht splitextt joint mapt strt syst version_info( t gtt headt tail( ( s, /usr/lib64/python2.7/lib2to3/pgen2/driver.pyt _generate_pickle_namen s s Grammar.txtc C s� | d k r t j � } n | d k r3 t | � n | } | sO t | | � r� | j d | � t j | � } | r� | j d | � y | j | � Wq� t k
r� } | j d | � q� Xq� n t
j � } | j | � | S( s' Load the grammar (maybe from a pickle).s! Generating grammar tables from %ss Writing grammar tables to %ss Writing failed: %sN(
R R R RG t _newert infoR t generate_grammart dumpt IOErrorR t Grammart load( RD t gpt savet forceR
t gt e( ( s, /usr/lib64/python2.7/lib2to3/pgen2/driver.pyR u s
c C sN t j j | � s t St j j | � s, t St j j | � t j j | � k S( s0 Inquire whether file a was written since file b.( R<