ž {yMa!c@sοdZdZddgZddlZddlZddlZddlZddlZddlm Z m Z m Z m Z m Z Gdd„deƒZd ddddd d„Zd d „Zd d„Zedkrλejeeƒ ƒƒndS(uZParser driver. This provides a high-level interface to parse a file into a syntax tree. u#Guido van Rossum uDriveru load_grammariNi(ugrammaruparseutokenutokenizeupgencBst|EeZdZd d dd„Zddd„Zddd„Zddd„Zd dd d „Z dd d „Z d S(uDrivercCs:||_|dkr$tjƒ}n||_||_dS(N(ugrammaruNoneuloggingu getLoggeruloggeruconvert(uselfugrammaruconvertulogger((u9/opt/alt/python33/lib64/python3.3/lib2to3/pgen2/driver.pyu__init__s    uDriver.__init__cCstj|j|jƒ}|jƒd}d}d}}}} } d} xΒ|D]œ} | \}}}} } |||fkrγ|\} }|| kr·| d| |7} | }d}n||krγ| | ||…7} |}qγn|tjtjfkr9| |7} | \}}|j dƒrQ|d7}d}qQqQn|t j krXtj |}n|r|j jdt j||| ƒn|j||| |fƒrΉ|r΅|j jdƒnPnd} | \}}|j dƒrQ|d7}d}qQqQWtjd||| |fƒ‚|jS( u4Parse a series of tokens and return the syntax tree.iiuu u%s %r (prefix=%r)uStop.uincomplete inputN(uparseuParserugrammaruconvertusetupuNoneutokenizeuCOMMENTuNLuendswithutokenuOPuopmapuloggerudebugutok_nameuaddtokenu ParseErrorurootnode(uselfutokensudebugupulinenoucolumnutypeuvalueustartuendu line_textuprefixu quintupleus_linenous_column((u9/opt/alt/python33/lib64/python3.3/lib2to3/pgen2/driver.pyu parse_tokens&sR                uDriver.parse_tokenscCs"tj|jƒ}|j||ƒS(u*Parse a stream and return the syntax tree.(utokenizeugenerate_tokensureadlineu parse_tokens(uselfustreamudebugutokens((u9/opt/alt/python33/lib64/python3.3/lib2to3/pgen2/driver.pyuparse_stream_rawVsuDriver.parse_stream_rawcCs|j||ƒS(u*Parse a stream and return the syntax tree.(uparse_stream_raw(uselfustreamudebug((u9/opt/alt/python33/lib64/python3.3/lib2to3/pgen2/driver.pyu parse_stream[suDriver.parse_streamc Cs;tj|d|ƒ}z|j||ƒSWd|jƒXdS(u(Parse a file and return the syntax tree.urN(ucodecsuopenu parse_streamuclose(uselfufilenameuencodingudebugustream((u9/opt/alt/python33/lib64/python3.3/lib2to3/pgen2/driver.pyu parse_file_suDriver.parse_filecCs+tjtj|ƒjƒ}|j||ƒS(u*Parse a string and return the syntax tree.(utokenizeugenerate_tokensuiouStringIOureadlineu parse_tokens(uselfutextudebugutokens((u9/opt/alt/python33/lib64/python3.3/lib2to3/pgen2/driver.pyu parse_stringgsuDriver.parse_stringNF( u__name__u __module__u __qualname__uNoneu__init__uFalseu parse_tokensuparse_stream_rawu parse_streamu parse_fileu parse_string(u __locals__((u9/opt/alt/python33/lib64/python3.3/lib2to3/pgen2/driver.pyuDrivers 0u Grammar.txtc Cs<|dkrtjƒ}n|dkr~tjj|ƒ\}}|dkrTd}n||djttt j ƒƒd}n|s”t ||ƒ r|j d|ƒt j|ƒ}|r8|j d|ƒy|j|ƒWqtk r}z|j dt|ƒƒWYdd}~XqXq8ntjƒ}|j|ƒ|S( u'Load the grammar (maybe from a pickle).u.txtuu.u.pickleu!Generating grammar tables from %suWriting grammar tables to %suWriting failed:N(uNoneuloggingu getLoggeruosupathusplitextujoinumapustrusysu version_infou_neweruinfoupgenugenerate_grammarudumpuIOErrorugrammaruGrammaruload( ugtugpusaveuforceuloggeruheadutailugue((u9/opt/alt/python33/lib64/python3.3/lib2to3/pgen2/driver.pyu load_grammarms&    *0  cCsNtjj|ƒsdStjj|ƒs,dStjj|ƒtjj|ƒkS(u0Inquire whether file a was written since file b.FT(uosupathuexistsuFalseuTrueugetmtime(uaub((u9/opt/alt/python33/lib64/python3.3/lib2to3/pgen2/driver.pyu_newer†s u_newercGsi|stjdd…}ntjdtjdtjddƒx$|D]}t|dd dd ƒqEWd S( uMain program, when run as a script: produce grammar pickle files. Calls load_grammar for each argument, a path to a grammar text file. iNulevelustreamuformatu %(message)susaveuforceT(usysuargvuloggingu basicConfiguINFOustdoutu load_grammaruTrue(uargsugt((u9/opt/alt/python33/lib64/python3.3/lib2to3/pgen2/driver.pyumains umainu__main__TF(u__doc__u __author__u__all__ucodecsuiouosuloggingusysuugrammaruparseutokenutokenizeupgenuobjectuDriveruNoneuTrueuFalseu load_grammaru_newerumainu__name__uexituint(((u9/opt/alt/python33/lib64/python3.3/lib2to3/pgen2/driver.pyu s      (P