ó œt•Pc@s6ddlZddlmZdefd„ƒYZdS(iÿÿÿÿN(t_tparsercBsMeZdd„Zd„Zd„Zdd„Zd„Zd„Zd„Z RS( cCs(||_||_||_d|_dS(N(t _tokenizert _elementst_methodstNonetcurrent(tselft tokenizertelementstmethods((s4/sys/lib/python2.7/site-packages/mercurial/parser.pyt__init__s   cCs7|j}y|jjƒ|_Wntk r2nX|S(sadvance the tokenizer(Rt_itertnextt StopIteration(Rtt((s4/sys/lib/python2.7/site-packages/mercurial/parser.pyt_advances   cCsN|jd|kr@tjtdƒ|jd|jdƒ‚n|jƒdS(s0make sure the tokenizer matches an end conditionisunexpected token: %siN(Rterrort ParseErrorRR(Rtmtpos((s4/sys/lib/python2.7/site-packages/mercurial/parser.pyt_match#sic Cs{|jƒ\}}}|j|d}|sKtjtdƒ||ƒ‚nt|ƒdkrp|d|f}n–t|ƒdkrÀ|d|jdkrÀ|j|d|ƒ|ddf}nF|d|j |dƒf}t|ƒdkr|j|d|ƒnxn||j|jddkrv|jƒ\}}}|j|}t|ƒdkr‘|j|jdd r‘|d}|d|f}q t|ƒdks®|d rÍtjtdƒ||ƒ‚n|d} t| ƒdkr*| d|jdkr*|j| d|ƒ| d|df}q | d||j | dƒf}t| ƒdkr |j| d|ƒq q W|S(Nisnot a prefix: %siiiisnot an infix: %s( RRRRRtlenRRRt_parse( RtbindttokentvalueRtprefixtexprtetsuffixtinfix((s4/sys/lib/python2.7/site-packages/mercurial/parser.pyR)s8)! +  ) cCsD|j|ƒ|_|jƒ|jƒ}|j\}}}||fS(s$generate a parse tree from a message(RR RRR(RtmessagetresRRR((s4/sys/lib/python2.7/site-packages/mercurial/parser.pytparseNs   cCsHt|tƒs|S|j|dg|dD]}|j|ƒ^q,ŒS(s4recursively evaluate a parse tree using node methodsii(t isinstancettupleRteval(RttreeR((s4/sys/lib/python2.7/site-packages/mercurial/parser.pyR%UscCs)|j|ƒ}|jr%|j|ƒS|S(s?parse a message into a parse tree and evaluate if methods given(R"RR%(RR R((s4/sys/lib/python2.7/site-packages/mercurial/parser.pyt__call__Zs  N( t__name__t __module__RR RRRR"R%R'(((s4/sys/lib/python2.7/site-packages/mercurial/parser.pyRs    %  (Rti18nRtobjectR(((s4/sys/lib/python2.7/site-packages/mercurial/parser.pyts