Ńņ
ą"Ic        /   @   sj  d  Z  d d k Td d k Z d d k Z d d k Z d e f d     YZ d d k l Z l	 Z	 d d k l
 Z
 l Z l Z d   Z d	 d
  Z d   Z d   Z d   Z d f  d     YZ e i e i e i e i e i e i e i e i e i e i e i e i e i e i  e i! e i" g Z# h d e i$ 6d e i% 6d e i& 6d e i' 6d e i( 6d e i) 6d e i* 6Z+ e i, e i- e i. e i/ e i0 e i1 e i2 e i e i3 e i4 e i5 e i6 e i7 e i8 e i9 e i: e i; e i< e i= e i> e i? e i@ e iA e iB e iC e i e i e i e i e i e i e iD e i e i e i e i e i e i  e i! e i" e iE g) ZF eG e d  o eF iH e iI  n eG e d  o eF iH e iJ  n e i e i e i e i e i e i e i e i e i e i e i  e i! g ZK h  ZL x' e iM iN   D] \ ZO ZP eP eL eO <qWx' e iQ iN   D] \ ZO ZP eP eL eO <qCWd   ZR d S(   sī   Parse tree transformation module.

Transforms Python source code into an abstract syntax tree (AST)
defined in the ast module.

The simplest ways to invoke this module are via parse and parseFile.
parse(buf) -> AST
parseFile(path) -> AST
i’’’’(   t   *Nt   WalkerErrorc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR   !   s   (   t
   CO_VARARGSt   CO_VARKEYWORDS(   t	   OP_ASSIGNt	   OP_DELETEt   OP_APPLYc         C   s3   t  |  d  } | i   d } | i   t |  S(   Nt   Us   
(   t   opent   readt   closet   parse(   t   patht   ft   src(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt	   parseFile'   s    
t   execc         C   sY   | d j p | d j o t    i |   S| d j o t    i |   St d   d  S(   NR   t   singlet   evals4   compile() arg 3 must be 'exec' or 'eval' or 'single'(   t   Transformert
   parsesuitet	   parseexprt
   ValueError(   t   buft   mode(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR   1   s
    c         C   sµ   g  } xØ |  D]  } t  | d  o | i | i    q t |  t d  j o | i t t |    q t |  t g   j o | i t |   q | i |  q W| S(   Nt   asList(   NN(   t   hasattrt   appendR   t   typet   Nonet   tuple(   t   nodest   lt   item(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR   :   s     c         C   sh   t  |  d t  p	 |  d SxD |  d D]8 } t  | t  o" t |  } | d  j	 o | Sq( q( Wd  S(   Ni   i   (   t
   isinstanceR    t   extractLineNoR   (   t   astt   childt   lineno(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR%   H   s    	 c          G   s{   |  d } t  i |  oJ y t  | |  d   SWqw t j
 o! t  | Gt |   G|  GH  qw Xn t d t |    d  S(   Ni    i   s$   Can't find appropriate Node type: %s(   R!   t   has_keyt	   TypeErrort   lenR   t   str(   t   argst   kind(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   NodeR   s    
R   c           B   s}  e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z e Z d   Z d   Z e Z e Z e Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z  d   Z! d   Z" d   Z# d   Z$ d   Z% d    Z& d!   Z' d"   Z( d#   Z) d$   Z* d%   Z+ d&   Z, d'   Z- d(   Z. d)   Z/ d*   Z0 d+   Z1 d,   Z2 d-   Z3 d.   Z4 d/   Z5 d0   Z6 d1   Z7 d2   Z8 d3   Z9 e9 Z: e9 Z; e9 Z< d4   Z= d5   Z> d6   Z? e? Z@ d7   ZA d8   ZB d9   ZC d:   ZD d;   ZE d<   ZF d=   ZG d>   ZH d?   ZI d@   ZJ dA   ZK dB   ZL dC   ZM dD   ZN dE   ZO dF   ZP dG   ZQ dH   ZR dI   ZS dJ   ZT dK   ZU dL   ZV dM   ZW dN   ZX dO   ZY dP   ZZ dQ   Z[ dR   Z\ dS   Z] dT   Z^ dU   Z_ dV   Z` dW   Za dX   Zb dY   Zc dZ   Zd d[   Ze d\   Zf d]   Zg d^   Zh d_   Zi d`   Zj da   Zk db   Zl dc   Zm dd   Zn eo ep de  o df   Zq dg   Zr dh   Zs n
 di   Zq eo ep dj  o dk   Zt dl   Zu n dm   Zv dn   Zw do   Zx dp   Zy dq   Zz dr   Z{ ds   Z| dt   Z} du   Z~ dw dv  Z RS(x   sź   Utility object for transforming Python parse trees.

    Exposes the following methods:
        tree = transform(ast_tree)
        tree = parsesuite(text)
        tree = parseexpr(text)
        tree = parsefile(fileob | filename)
    c         C   s×   h  |  _  xG t i i   D]6 \ } } t |  |  o t |  |  |  i  | <q q W|  i |  i  t i <h |  i	 t i
 6|  i t i 6|  i t i 6|  i t i 6|  i t i 6|  i t i 6|  i t i 6|  _ d  |  _ d  S(   N(   t	   _dispatcht   symbolt   sym_namet   itemsR   t   getattrt   com_NEWLINEt   tokent   NEWLINEt	   atom_lpart   LPARt	   atom_lsqbt   LSQBt   atom_lbracet   LBRACEt   atom_backquotet	   BACKQUOTEt   atom_numbert   NUMBERt   atom_stringt   STRINGt	   atom_namet   NAMEt   _atom_dispatchR   t   encoding(   t   selft   valuet   name(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   __init__h   s    	 c         C   sF   t  | t  p t  | t  p t i | d d } n |  i |  S(   s,   Transform an AST into a modified parse tree.t	   line_infoi   (   R$   R    t   listt   parsert	   ast2tuplet   compile_node(   RH   t   tree(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt	   transformx   s     c         C   s   |  i  t i |   S(   s6   Return a modified parse tree for the given suite text.(   RR   RN   t   suite(   RH   t   text(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR   ~   s    c         C   s   |  i  t i |   S(   s;   Return a modified parse tree for the given expression text.(   RR   RN   t   expr(   RH   RT   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR      s    c         C   s<   t  |  t  d  j o t |  } n |  i | i    S(   s@   Return a modified parse tree for the contents of the given file.t    (   R   R
   R   R   (   RH   t   file(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt	   parsefile   s    c      	   C   s  | d } | t  i j o% | d |  _ | d } | d } n | t  i j o |  i | d  S| t  i j o |  i | d  S| t  i j o |  i | d  S| t  i j o |  i | d  S| t  i j o |  i | d  S| t  i j o |  i | d  St	 d | f  d  S(   Ni    i   i   s   unexpected node type(
   R1   t   encoding_declRG   t   single_inputt
   file_inputt
   eval_inputt   lambdeft   funcdeft   classdefR   (   RH   t   nodet   n(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRP      s$    

c         C   s7   | d d } | t  i j o |  i | d  St   S(   Ni    (   R6   R7   t   com_stmtt   Pass(   RH   R`   Ra   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRZ   ©   s    c         C   s   |  i  | t i  } | d  j	 o
 d } n d } g  } xN | | D]B } | d t i j o( | d t i j o |  i | |  qC qC Wt | t	 |   S(   Ni   i    (
   t   get_docstringR1   R[   R   R6   t	   ENDMARKERR7   t   com_append_stmtt   Modulet   Stmt(   RH   t   nodelistt   doct   it   stmtsR`   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR[   ³   s    
 (c         C   s   t  |  i | d   S(   Ni    (   t
   Expressiont   com_node(   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR\   æ   s    c         C   s_   t  |  } |  i |  } d } x7 | | j  o) t | | | d d  } | d 7} q$ W| S(   Ni   i   (   R+   RD   t   Getattr(   RH   Ri   t   listlenR#   Rk   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   decorator_nameÄ   s     c         C   sN   |  i  | d d  } t |  d j o |  i | | d  } n | } | S(   Ni   i   (   Rq   R+   t   com_call_function(   RH   Ri   t   funcnameRU   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt	   decoratorŅ   s
    c         C   s;   g  } x( | D]  } | i  |  i | d   q Wt |  S(   Ni   (   R   Rt   t
   Decorators(   RH   Ri   R3   t   dec_nodelist(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt
   decoratorsć   s
     c         C   s¦   | d d t  i j o- | d g t | d d  } |  i |  S| d d t  i j o< |  i | d d  } |  i | d d  } | | _ | St    d  S(   Ni   i    (   R1   R^   RM   R_   Rw   R   (   RH   Ri   Ra   Rw   t   cls(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt	   decoratedė   s    	c         C   s  t  |  d j o |  i | d d  } n d  } | d d } | d d } | d d } | d t i j o  |  i | d  \ } } } n d	 } } d } |  i | d  }	 |  i | d  }
 |	 d  j	 o |
 i d =n t	 | | | | | |	 |
 d | S(
   Ni   i    i   iü’’’i   iż’’’i’’’’R(   (    (
   R+   Rw   R   R1   t   varargslistt   com_arglistRd   Rn   R!   t   Function(   RH   Ri   Rw   R(   RJ   R-   t   namest   defaultst   flagsRj   t   code(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR^   ÷   s      
c      	   C   s   | d d t  i j o$ |  i | d d  \ } } } n d } } d } |  i | d  } t | | | | d | d d S(   Ni   i    i   i’’’’R(   (    (   R1   Rz   R{   Rn   t   Lambda(   RH   Ri   R}   R~   R   R   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR]     s    $
c         C   sĒ   | d d } |  i  | d  } | d d t i j o
 g  } n6 | d d t i j o
 g  } n |  i | d  } |  i | d  } | d  j	 o | i d =n t | | | | d | d d S(   Ni   i’’’’i   i    i   R(   (	   Rd   R6   t   COLONt   RPARt	   com_basesRn   R   R!   t   Class(   RH   Ri   RJ   Rj   t   basesR   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR_   &  s    

c         C   s   |  i  | d  S(   Ni    (   Rb   (   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   stmt<  s    c         C   sG   g  } x4 t  d t |  d  D] } |  i | | |  q Wt |  S(   Ni    i   (   t   rangeR+   Rf   Rh   (   RH   Ri   Rl   Rk   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   simple_stmtC  s
     c         C   s
   t   d  S(   N(   R   (   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt
   parametersJ  s    c         C   s
   t   d  S(   N(   R   (   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRz   M  s    c         C   s
   t   d  S(   N(   R   (   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   fpdefP  s    c         C   s
   t   d  S(   N(   R   (   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   fplistS  s    c         C   s
   t   d  S(   N(   R   (   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   dotted_nameV  s    c         C   s
   t   d  S(   N(   R   (   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   comp_opY  s    c         C   s
   t   d  S(   N(   R   (   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   trailer\  s    c         C   s
   t   d  S(   N(   R   (   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   sliceop_  s    c         C   s
   t   d  S(   N(   R   (   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   argumentb  s    c      	   C   s  | d } |  i  |  | d  } t |  d j o t | d | i S| d d t i j of g  } xA t d t |  d d  D]# } | i |  i | | t	   q Wt
 | | d | d d S|  i | d  } |  i | d  } t | | d | d | d St d  d  S(   Ni’’’’i   R(   i    i   s   can't get here(   t   lookup_nodeR+   t   DiscardR(   R6   t   EQUALR   R   t
   com_assignR   t   Assignt   com_augassignt   com_augassign_opt	   AugAssignR   (   RH   Ri   t   ent   exprNodet   nodeslRk   t   lvalt   op(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt	   expr_stmtj  s    
 !c         C   sö   g  } t  |  d j o d } d  } nB | d d t i j o |  i | d  } d } n d  } d } x: t | t  |  d  D]  } | i |  i | |   q W| d d t i j o t | | d | d d St	 | | d | d d S(   Ni   i    i   i   i’’’’R(   (
   R+   R   R6   t
   RIGHTSHIFTRn   R   R   t   COMMAt   Printt   Printnl(   RH   Ri   R3   t   startt   destRk   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt
   print_stmt{  s    

 c         C   s   |  i  | d t  S(   Ni   (   R   R   (   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   del_stmt  s    c         C   s   t  d | d d  S(   NR(   i    i   (   Rc   (   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt	   pass_stmt  s    c         C   s   t  d | d d  S(   NR(   i    i   (   t   Break(   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt
   break_stmt  s    c         C   s   t  d | d d  S(   NR(   i    i   (   t   Continue(   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   continue_stmt  s    c         C   sW   t  |  d j  o t t d   d | d d St |  i | d  d | d d S(   Ni   R(   i    i   (   R+   t   Returnt   ConstR   Rn   (   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   return_stmt  s    c         C   s&   |  i  | d  } t | d | i S(   Ni    R(   (   Rn   R   R(   (   RH   Ri   RU   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt
   yield_stmt”  s    c         C   sN   t  |  d j o |  i | d  } n t d   } t | d | d d S(   Ni   R(   i    i   (   R+   Rn   R®   R   t   Yield(   RH   Ri   RI   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt
   yield_expr„  s    c         C   s®   t  |  d j o |  i | d  } n d  } t  |  d j o |  i | d  } n d  } t  |  d j o |  i | d  } n d  } t | | | d | d d S(   Ni   i   i   R(   i    i   (   R+   Rn   R   t   Raise(   RH   Ri   t   expr3t   expr2t   expr1(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt
   raise_stmt¬  s    c         C   s   |  i  | d  S(   Ni    (   Rn   (   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   import_stmt¼  s    c         C   s%   t  |  i | d  d | d d S(   Ni   R(   i    i   (   t   Importt   com_dotted_as_names(   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   import_nameĮ  s    c         C   s  d } x$ | | d d j o | d 7} q	 W| d } | | d t  i j o! |  i | |  } | d 7} n d } | | d d t i j o" t | d g | d | d d S| | d | | d d t i j } t | |  i |  | d | d d Sd  S(	   Ni   t   .i    RV   R    R(   i   (   R    N(	   R1   R   t   com_dotted_nameR6   t   STARt   FromR   R9   t   com_import_as_names(   RH   Ri   t   idxt   levelt   fromnameR`   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   import_fromĘ  s     
'c         C   sV   g  } x5 t  d t |  d  D] } | i | | d  q Wt | d | d d S(   Ni   i   R(   i    (   R   R+   R   t   Global(   RH   Ri   R}   Rk   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   global_stmtÜ  s
     c         C   s   |  i  | d  } t |  d j oG |  i  | d  } t |  d j o |  i  | d  } qw d  } n d  } } t | | | d | d d S(	   Ni   i   i   i   i   R(   i    i   (   Rn   R+   R   t   Exec(   RH   Ri   R¶   Rµ   R“   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt	   exec_stmtć  s    

c         C   s^   |  i  | d  } t |  d j o |  i  | d  } n d  } t | | d | d d S(   Ni   i   i   R(   i    i   (   Rn   R+   R   t   Assert(   RH   Ri   R¶   Rµ   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   assert_stmtń  s
    c         C   s½   g  } xe t  d t |  d d  D]G } |  i | | d  } |  i | | d  } | i | | f  q# Wt |  d d j o |  i | d  } n d  } t | | d | d d S(   Ni    i   i   i   i’’’’R(   i   (   R   R+   Rn   R   R   t   If(   RH   Ri   t   testsRk   t   testNodet	   suiteNodet   elseNode(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   if_stmtś  s     c         C   st   |  i  | d  } |  i  | d  } t |  d j o |  i  | d  } n d  } t | | | d | d d S(   Ni   i   i   i   R(   i    i   (   Rn   R+   R   t   While(   RH   Ri   RĶ   t   bodyNodeRĻ   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt
   while_stmt	  s    c         C   s   |  i  | d t  } |  i | d  } |  i | d  } t |  d j o |  i | d  } n d  } t | | | | d | d d S(   Ni   i   i   i   R(   i    i   (   R   R   Rn   R+   R   t   For(   RH   Ri   t
   assignNodet   listNodeRŅ   RĻ   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   for_stmt  s    c         C   s   |  i  |  S(   N(   t   com_try_except_finally(   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   try_stmt%  s    c         C   s   |  i  |  S(   N(   t   com_with(   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt	   with_stmt(  s    c         C   s   |  i  |  S(   N(   t   com_with_var(   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   with_var+  s    c         C   sn   t  |  d j o |  i | d  Sg  } x6 | D]. } | d t i j o |  i | |  q2 q2 Wt |  S(   Ni   i    (   R+   Rb   R1   R   Rf   Rh   (   RH   Ri   Rl   R`   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRS   .  s     c         C   s   |  i  t |  S(   N(   t
   com_binaryt   Tuple(   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   testlist>  s    c         C   s`   t  |  d j o@ | d d t i j o( |  i | d  } |  i | | d  S|  i |  S(   Ni   i   i    (   R+   R1   t   gen_forRn   t   com_generator_expressionRą   (   RH   Ri   t   test(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   testlist_gexpH  s    +c         C   s¬   t  |  d j o* | d d t i j o |  i | d  S|  i | d  } t  |  d j oE |  i | d  } |  i | d  } t | | | d | d d S| S(   Ni   i    i   i   R(   (   R+   R1   R]   Rn   t   IfExp(   RH   Ri   t   thenRć   t   else_(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRć   N  s    +c         C   sM   t  |  d j o* | d d t i j o |  i | d  S|  i t |  S(   Ni   i    (   R+   R1   R]   RŽ   t   Or(   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   or_test\  s    +c         C   s   |  i  t |  S(   N(   RŽ   t   And(   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   and_testc  s    c         C   sC   |  i  | d  } t |  d j o t | d | d d S| S(   Ni’’’’i   R(   i    (   Rn   R+   t   Not(   RH   Ri   t   result(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   not_testg  s    c   	      C   s  |  i  | d  } t |  d j o | Sg  } xŹ t d t |  d  D]° } | | d } | d } | d t i j oB | d } t |  d j o! | d j o
 d } qŗ d } qĢ n t | d } | d d } | i | |  i  | |  f  qJ Wt | | d | S(	   Ni    i   i   i   t   nots   not ins   is notR(   (   Rn   R+   R   R6   RE   t
   _cmp_typesR   t   Compare(	   RH   Ri   R`   t   resultsRk   t   nlRa   R   R(   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt
   comparisonn  s$     


$c         C   s   |  i  t |  S(   N(   RŽ   t   Bitor(   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRU     s    c         C   s   |  i  t |  S(   N(   RŽ   t   Bitxor(   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   xor_expr  s    c         C   s   |  i  t |  S(   N(   RŽ   t   Bitand(   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   and_expr  s    c         C   sę   |  i  | d  } xĢ t d t |  d  D]² } |  i  | |  } | | d d t i j o$ t | | g d | d d } q, | | d d t i j o$ t | | g d | d d } q, t d | | d d  q, W| S(   Ni    i   i   R(   s   unexpected token: %s(	   Rn   R   R+   R6   t	   LEFTSHIFTt	   LeftShiftR    t
   RightShiftR   (   RH   Ri   R`   Rk   t   right(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt
   shift_expr  s     $$c         C   sę   |  i  | d  } xĢ t d t |  d  D]² } |  i  | |  } | | d d t i j o$ t | | g d | d d } q, | | d d t i j o$ t | | g d | d d } q, t d | | d d  q, W| S(   Ni    i   i   R(   s   unexpected token: %s(	   Rn   R   R+   R6   t   PLUSt   Addt   MINUSt   SubR   (   RH   Ri   R`   Rk   Rż   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt
   arith_exprØ  s     $$c         C   s  |  i  | d  } xū t d t |  d  D]į } |  i  | |  } | | d d } | t i j o t | | g  } n | t i j o t | | g  } nZ | t i j o t	 | | g  } n4 | t i
 j o t | | g  } n t d |  | d d | _ q, W| S(   Ni    i   i   s   unexpected token: %s(   Rn   R   R+   R6   R¾   t   Mult   SLASHt   Divt   PERCENTt   Modt   DOUBLESLASHt   FloorDivR   R(   (   RH   Ri   R`   Rk   Rż   t   t(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   term“  s      c         C   s­   | d } | d } |  i  | d  | d d  } | t i j o t | d | d S| t i j o t | d | d S| t i j o t | d | d } n | S(   Ni    i’’’’i   R(   i   (   R   R6   R’   t   UnaryAddR  t   UnarySubt   TILDEt   Invert(   RH   Ri   t   eltR  R`   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   factorĘ  s    

!c         C   s   |  i  | d  } xy t d t |   D]b } | | } | d t i j o, t | |  i  | | d  g d | d S|  i | |  } q) W| S(   Ni    i   R(   i   (   Rn   R   R+   R6   t
   DOUBLESTARt   Powert   com_apply_trailer(   RH   Ri   R`   Rk   R  (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   powerÓ  s     
 c         C   s   |  i  | d d |  S(   Ni    (   RF   (   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   atomą  s    c         C   sB   | d d t  i j o t d d | d d S|  i | d  S(   Ni   i    R(   i   (    (   R6   R   Rß   Rn   (   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR8   ć  s    c         C   sB   | d d t  i j o t d d | d d S|  i | d  S(   Ni   i    R(   i   (    (   R6   t   RSQBt   Listt   com_list_constructor(   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR:   č  s    c         C   sB   | d d t  i j o t d d | d d S|  i | d  S(   Ni   i    R(   i   (    (   R6   t   RBRACEt   Dictt   com_dictmaker(   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR<   ķ  s    c         C   s   t  |  i | d   S(   Ni   (   t	   BackquoteRn   (   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR>   ņ  s    c         C   s,   t  | d d  } t | d | d d S(   Ni    i   R(   i   (   R   R®   (   RH   Ri   t   k(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR@   õ  s    c         C   s_   |  i  oG |  i  d j o t | d  i |  i   } n t d |  i  | f  St |  Sd  S(   Ns   utf-8s
   iso-8859-1s   # coding: %s
%s(   s   utf-8s
   iso-8859-1(   RG   t   unicodet   encodeR   (   RH   t   lit(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   decode_literalś  s
    
c         C   sF   d } x% | D] } | |  i  | d  7} q Wt | d | d d S(   NRV   i   R(   i    i   (   R#  R®   (   RH   Ri   R  R`   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRB     s
     c         C   s    t  | d d d | d d S(   Ni    i   R(   i   (   t   Name(   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRD     s    c         C   s   |  i  | d S(   Ni    (   R0   (   RH   R`   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR     s    c         C   s   |  i  | d | d  S(   Ni    i   (   R0   (   RH   R`   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRn     s    c         G   s   t  t d    S(   N(   R   R®   R   (   RH   R-   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR5   %  s    c         C   sä  g  } g  } d } d } x¼| t  |  j  oØ| | } | d t i j p | d t i j o× | d t i j oO | | d } | d t i j o) | i | d  | t B} | d } qĆ n | t  |  j  o\ | | d } | t i j o | | d } n t d |  | i | d  | t B} n Pn | i |  i	 |   | d } | t  |  j  oD | | d t i
 j o, | i |  i | | d   | d } n t  |  o t d  n | d } q W| | | f S(   Ni    i   i   s   unexpected token: %si   s-   non-default argument follows default argument(   R+   R6   R¾   R  RE   R   R   R   R   t	   com_fpdefR   Rn   t   SyntaxError(   RH   Ri   R}   R~   R   Rk   R`   R  (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR{   +  s>     
(

+c         C   s6   | d d t  i j o |  i | d  S| d d S(   Ni   i    i   (   R6   R9   t
   com_fplist(   RH   R`   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR%  ]  s    c         C   sr   t  |  d j o |  i | d  Sg  } x: t d t  |  d  D]  } | i |  i | |   qD Wt |  S(   Ni   i   (   R+   R%  R   R   R    (   RH   R`   RM   Rk   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR'  c  s     c         C   s_   d } xN | D]F } t  |  t  d  j o' | d d j o | | d d } q q W| d  S(   NRV   i    i   R¼   i’’’’(    (   R   (   RH   R`   RJ   Ra   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR½   l  s     *c         C   sQ   | d } |  i  | d d  } t |  d j o | d  f S| | d d f S(   Ni   i    i   (   R½   R+   R   (   RH   R`   t   dot(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   com_dotted_as_namet  s
    
c         C   sa   | d } |  i  | d  g } x: t d t |  d  D]  } | i |  i  | |   q9 W| S(   Ni   i    i   (   R)  R   R+   R   (   RH   R`   R}   Rk   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRŗ   ~  s    
 c         C   sJ   | d } t  |  d j o | d d d  f S| d d | d d f S(   Ni   i    i   (   R+   R   (   RH   R`   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   com_import_as_name  s    
c         C   sa   | d } |  i  | d  g } x: t d t |  d  D]  } | i |  i  | |   q9 W| S(   Ni   i    i   (   R*  R   R+   R   (   RH   R`   R}   Rk   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRĄ     s    
 c         C   sG   g  } x: t  d t |  d  D]  } | i |  i | |   q W| S(   Ni   i   (   R   R+   R   Rn   (   RH   R`   R   Rk   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR     s
     c   
   	   C   sū  | d d t  i j o6 t |  i | d  |  i | d  d | d d Sg  } d  } d  } x@t d t |  d  D]&} | | } | d t i j o t |  d j oJ |  i | d  } t |  d j o |  i	 | d t
  } qd  } n d  } } | i | | |  i | | d  f  n | d t  i j o\ | d d j o |  i | | d  } q| d d	 j o |  i | | d  } qqy qy Wt |  i | d  | | d | d d }	 | o t |	 | d | d d S|	 Sd  S(
   Ni   i    i   i   R(   i   i   t   elset   finally(   R6   RE   t
   TryFinallyRn   R   R   R+   R1   t   except_clauseR   R   R   t	   TryExcept(
   RH   Ri   t   clausesRĻ   t   finallyNodeRk   R`   R¶   Rµ   t
   try_except(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRŲ     s8     


+#c         C   s   |  i  | d  } |  i  | d  } | d d t i j o
 d  } n |  i | d d t  } t | | | d | d d S(   Ni   i’’’’i   i    R(   (   Rn   R6   R   R   R   R   t   With(   RH   Ri   RU   t   bodyt   var(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRŚ   Ē  s    
c         C   s   |  i  | d  S(   Ni   (   Rn   (   RH   Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRÜ   Ń  s    c         C   s   | d S(   Ni   (    (   RH   R`   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR   Õ  s    c         C   sG   |  i  |  } | i t t t t f j o | St d | i i  d S(   s   Return node suitable for lvalue of augmented assignment

        Names, slices, and attributes are the only allowable nodes.
        s   can't assign to %sN(   Rn   t	   __class__R$  t   Slicet	   SubscriptRo   R&  R   (   RH   R`   R"   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR   Ł  s    c         C   sp  xi| d } | t  i t  i t  i t  i f j o2 t |  d j o |  i | |  S| d } q | t j o. t |  d j o t d  n | d } q | t  i	 j oŅ | d d t  i
 j o t d  n t |  d j o |  i | d  } x^ t d t |  d  D]C } | | } | d t i j o t d  n |  i | |  } qW|  i | | d |  S| d } q | t  i
 j oĖ | d d } | t i j o/ | d } | d t i j o t d  qXqi| t i j o< | d } | d t i j o t d  n |  i | |  S| t i j o |  i | d |  St d  q t d	 |  q d  S(
   Ni    i   i   s   can't assign to operatori’’’’s   can't assign to ()s   can't assign to []s   can't assign to literals   bad assignment (%s)(   R1   t   exprlistRą   t   testlist_safeRä   R+   t   com_assign_tuplet   _assign_typesR&  R  R  Rn   R   R6   R  R  t   com_assign_trailerR9   R   R;   R  t   com_assign_listRE   t   com_assign_name(   RH   R`   t	   assigningR  t   primaryRk   t   ch(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR   ć  sN    
% 


c         C   s\   g  } x= t  d t |  d  D]# } | i |  i | | |   q Wt | d t |  S(   Ni   i   R(   (   R   R+   R   R   t   AssTupleR%   (   RH   R`   R@  t   assignsRk   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR;    s
     !c         C   s    g  } x t  d t |  d  D]g } | d t |  j  o- | | d d t i j o t d  qi n | i |  i | | |   q Wt | d t |  S(   Ni   i   i    s"   can't assign to list comprehensionR(   (	   R   R+   R1   t   list_forR&  R   R   t   AssListR%   (   RH   R`   R@  RD  Rk   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR>    s     !c         C   s   t  | d | d | d S(   Ni   R(   i   (   t   AssName(   RH   R`   R@  (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR?    s    c         C   s   | d d } | t  i j o |  i | | d |  S| t  i j o |  i | | d |  S| t  i j o t d  n t d |  d  S(   Ni   i    i   s   can't assign to function calls   unknown trailer type: %s(   R6   t   DOTt   com_assign_attrR;   t   com_subscriptlistR9   R&  (   RH   RA  R`   R@  R  (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR=  "  s    c         C   s   t  | | d | d | d S(   Ni   R(   i’’’’(   t   AssAttr(   RH   RA  R`   R@  (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRI  ,  s    c         C   s   t  |  } | d j o" | d } |  i |  | d  Sg  } xD t d | d  D]0 } | | } | i |  i |  | d   qT W| | d t |  S(   s=   Compile 'NODE (OP NODE)*' into (type, [ node1, ..., nodeN ]).i   i    i   R(   (   R+   R   R   R   R%   (   RH   t   constructorRi   R"   Ra   R3   Rk   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRŽ   /  s    
 
$c         C   s;   |  i  |  | d  } t | t  o | St | g  S(   Ni   (   R   R$   Rh   (   RH   R`   Rķ   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRb   ;  s    c         C   sN   |  i  |  | d  } t | t  o | i | i  n | i |  d  S(   Ni   (   R   R$   Rh   t   extendR!   R   (   RH   Rl   R`   Rķ   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRf   B  s    RE  c         C   s§   g  } x t  d t |   D]p } | | d t i j o |  i | d | |  S| | d t i j o q n | i |  i | |   q Wt	 | d | d i
 S(   Ni   i    R(   (   R   R+   R1   RE  t   com_list_comprehensionR6   R”   R   Rn   R  R(   (   RH   Ri   t   valuesRk   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR  K  s     c         C   so  | d d } g  } xE| o=| d d } | d j o |  i  | d t  } |  i | d  } t | | g   } | d d | _ | i |  t |  d j o
 d  } qW|  i | d  } q | d j oq |  i | d  }	 t	 |	 d | d d }
 | i
 i |
  t |  d j o
 d  } qW|  i | d  } q t d	 | | f  q Wt | | d | S(
   Ni   i   t   fori   i   t   ifR(   i   s,   unexpected list comprehension element: %s %d(   R   R   Rn   t   ListCompForR(   R   R+   R   t   com_list_itert
   ListCompIft   ifsR&  t   ListComp(   RH   RU   R`   R(   t   forsR  RÕ   RÖ   t   newforRć   t   newif(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRN  X  s2     

c         C   s   | d S(   Ni   (    (   RH   R`   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRS  {  s    c         C   sZ   g  } x: t  d t |  d  D]  } | i |  i | |   q Wt | d | d i S(   Ni   i   R(   i    (   R   R+   R   Rn   R  R(   (   RH   Ri   RO  Rk   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR    s
     Rį   c         C   s  | d d } g  } xB| o:| d d } | d j o |  i  | d t  } |  i | d  } t | | g  d | d d } | i |  t |  d j o
 d  } qT|  i | d  } q | d j oq |  i | d  }	 t |	 d | d d }
 | i	 i |
  t |  d j o
 d  } qT|  i | d  } q t
 d	 | | f  q Wt | d
 _ t t | |  d | S(   Ni   i   RP  i   R(   i   RQ  i   s.   unexpected generator expression element: %s %di    (   R   R   Rn   t
   GenExprForR   R+   R   t   com_gen_itert	   GenExprIfRU  R&  t   Truet
   is_outmostt   GenExprt   GenExprInner(   RH   RU   R`   R(   RW  R  RÕ   t   genNodeRX  Rć   RY  (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRā     s4     

c         C   s   | d S(   Ni   (    (   RH   R`   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR[  Ø  s    c         C   su   g  } xQ t  d t |  d  D]7 } | i |  i | |  |  i | | d  f  q Wt | d | d d i S(   Ni   i   i   R(   i    (   R   R+   R   Rn   R  R(   (   RH   Ri   R3   Rk   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR  ¬  s     c         C   s   | d d } | t  i j o |  i | | d  S| t  i j o |  i | | d  S| t  i j o |  i | | d t  St d |  d  S(   Ni   i    i   s   unknown node type: %s(	   R6   R9   Rr   RH  t   com_select_memberR;   RJ  R   R&  (   RH   t   primaryNodeRi   R  (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR  “  s    c         C   s<   | d t  i j o t d  n t | | d d | d S(   Ni    s   member must be a namei   R(   i   (   R6   RE   R&  Ro   (   RH   Rc  Ri   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRb  æ  s    c         C   sĒ  | d t  i j o t | g  d t |  Sg  } d } d  } } t |  } d } xO| | j  oA| | }	 |	 d t  i j oB | d  j	 o t d  n |  i | | d  } | d } qY nW |	 d t  i	 j oB | d  j	 o t d  n |  i | | d  } | d } qY n |  i
 |	 | |  \ } }
 | d j oH t |
 t  o8 t |	  d j o% |	 d d t i j o t d  n | i |
  | d } qY Wt | | | | d t |  S(	   Ni    R(   i   s$   already have the varargs indentifieri   s#   already have the kwargs indentifieri   s&   generator expression needs parenthesis(   R6   R   t   CallFuncR%   R   R+   R¾   R&  Rn   R  t   com_argumentR$   R_  R1   Rį   R   (   RH   Rc  Ri   R-   t   kwt	   star_nodet
   dstar_nodet   len_nodelistRk   R`   Rķ   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRr   Ä  s<    
 


+c         C   sR  t  |  d j oF | d d t i j o. |  i | d  } d |  i | | d  f St  |  d j o@ | o t d  n | o t d  n d |  i | d  f S|  i | d  } | d } x6 t  |  d j o" | d t i j o | d } qĢ W| d t i j o t d | d  n t | d | d | d } d | f S(	   Ni   i   i    i   s!   non-keyword arg after keyword args+   only named arguments may follow *expressions#   keyword can't be an expression (%s)R(   (	   R+   R1   Rį   Rn   Rā   R&  R6   RE   t   Keyword(   RH   Ri   Rf  Rg  Rć   Rķ   Ra   R`   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRe  ė  s$    +
 'c      	   C   sļ   t  |  d j o} | d } | d d t i j p+ t  |  d j o- | d d t i j o, | d d t i j o |  i | | |  Sn g  } x: t d t  |  d  D]  } | i |  i | |   qÆ Wt	 | | | d t
 |  S(   Ni   i   i    i’’’’R(   (   R+   R6   R   R1   R   t	   com_sliceR   R   t   com_subscriptR8  R%   (   RH   RA  Ri   R@  t   subt
   subscriptsRk   (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRJ  ž  s    
+ c         C   s   | d } | d } | t  i j o  | d d t  i j o t   S| t  i j p t |  d j o |  i |  S|  i |  S(   Ni   i    i   (   R6   RH  t   EllipsisR   R+   t   com_sliceobjRn   (   RH   R`   RB  R  (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRl    s    

(#c         C   sE  g  } | d d t  i j o | i t d    d } n! | i |  i | d   d } | t |  j  o@ | | d t i j o( | i |  i | |   | d } n | i t d    xk t	 | t |   D]T } | | } t |  d j o | i t d    q× | i |  i | d   q× Wt
 | d t |  S(   Ni   i    i   i   R(   (   R6   R   R   R®   R   Rn   R+   R1   Rć   R   t   SliceobjR%   (   RH   R`   R3   Rk   t   jRB  (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRp    s"    

+ 
c         C   sæ   d  } } t |  d j oF | d d t i j o |  i | d  } q  |  i | d  } n> t |  d j o* |  i | d  } |  i | d  } n t | | | | d t |  S(   Ni   i   i    i   i   R(   (   R   R+   R6   R   Rn   R7  R%   (   RH   RA  R`   R@  t   lowert   upper(    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRk  @  s    
c      
   C   sÆ  | d  j o | d } | d } n | t i j o] t |  d j o |  i | d  Sx0 | D]( } | d t i j o |  i |  Sqa Wd  S| t i j o8 x0 | D]( } | d t i j o |  i |  Sq© Wd  S| t i j oM | d d t i	 j o0 d } x" | D] } | t
 | d  } qW| Sd  S| t i j p  | t i j p | t i j o |  i | d  S| t j o% t |  d j o |  i | d  Sd  S(   Ni    i   RV   (   R   R1   RS   R+   Rd   R   R[   R  R6   RC   R   R   t
   small_stmtt
   _doc_nodes(   RH   R`   Ra   Rm  t   sR  (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyRd   N  s>    
     N(   R   R   t   __doc__RK   RR   R   R   RX   RP   RZ   R[   R\   Rq   Rt   Rw   Ry   R^   R]   t   old_lambdefR_   R   Ru  t	   flow_stmtt   compound_stmtR   R   Rz   R   R   R   R   R   R   R   R   R¦   R§   RØ   RŖ   R¬   RÆ   R°   R²   R·   Rø   R»   RÄ   RĘ   RČ   RŹ   RŠ   RÓ   R×   RŁ   RŪ   RŻ   RS   Rą   R:  t	   testlist1R9  Rä   Rć   Ré   t   old_testRė   Rī   Rō   RU   R÷   Rł   Rž   R  R  R  R  R  R8   R:   R<   R>   R@   R#  RB   RD   R   Rn   R5   R{   R%  R'  R½   R)  Rŗ   R*  RĄ   R   RŲ   RŚ   RÜ   R   R   R   R;  R>  R?  R=  RI  RŽ   Rb   Rf   R   R1   R  RN  RS  Rā   R[  R  R  Rb  Rr   Re  RJ  Rl  Rp  Rk  R   Rd   (    (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR   ^   sž   							
							!																																												!																					2					
		
			)	
			
	,		
		
						#		"				'			
	$	t   <t   >s   ==s   <=s   >=s   !=R°   R²   c         C   s|   g  } xo |  D]g } t  | t  o | i t i | |   q t  | t  o | i |  q | i t |   q W| S(   N(   R$   t   intR   t   _namest   getR,   t
   debug_tree(   RQ   R"   R  (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyR  Ņ  s     (S   Rx  t   compiler.astRN   R1   R6   t   StandardErrorR   t   compiler.constsR   R   R   R   R   R   R   R   R%   R/   R   R   Rą   R:  Rć   Ré   Rė   Rī   Rō   RU   R÷   Rł   Rž   R  R  R  R  Rv  t   LESSt   GREATERt   EQEQUALR   t	   LESSEQUALt   GREATEREQUALt   NOTEQUALRš   R^   R_   R   Ru  Rz  R   R{  R¦   R§   RØ   RŖ   R¬   RÆ   R·   Rø   RĘ   RČ   RŹ   RŠ   RÓ   R×   RŁ   RŪ   RS   R9  R  t   _legal_node_typesR   R   R°   R²   R<  R  R2   R3   R  t   vt   tok_nameR  (    (    (    s1   /mit/python/lib/python2.6/compiler/transformer.pyt   <module>	   sÖ   
	
			
	’ ’ ’ ’ ’ 





  