
\Kc           @   s   d  d k  Z  d  d k Z d  d k Z d  d k Z d  d k Z d  d k l Z d  d k l Z l	 Z	 l
 Z
 l Z d  d k l Z l Z l Z l Z d  d k l Z l Z l Z l Z d  d k l Z l Z l Z l Z l Z l Z l Z l Z d  d k l Z y e i d Z  Wn e! j
 o d	 Z  n Xh  d
 d d f <d d	 d f <d d d	 f <d d	 d	 f <Z" d	 Z# d Z$ d Z% d Z& d d  Z' e( e( d  Z) d f  d     YZ* d e* f d     YZ+ d e* f d     YZ, d e* f d     YZ- d f  d     YZ. d   Z/ d f  d     YZ0 d  f  d!     YZ1 d" e1 e0 f d#     YZ2 d$ e1 e0 f d%     YZ3 d& e1 e0 f d'     YZ4 d( f  d)     YZ5 d* e1 e5 e0 f d+     YZ6 d, e1 e5 e0 f d-     YZ7 d. f  d/     YZ8 d0 e1 e8 e0 f d1     YZ9 d2   Z: d3   Z; d4 f  d5     YZ< d6 f  d7     YZ= d8 e= f d9     YZ> d: e= f d;     YZ? d< e= f d=     YZ@ d> e= f d?     YZA h  e> e iB <e? e iC <e@ e iD <eA e iE <ZF d@   ZG eH dA j o& x e iI d	 D] ZJ e' eJ  qWn d S(B   iN(   t   StringIO(   t   astt   parset   walkt   syntax(   t   pyassemt   misct   futuret   symbols(   t   SC_LOCALt	   SC_GLOBALt   SC_FREEt   SC_CELL(   t
   CO_VARARGSt   CO_VARKEYWORDSt   CO_NEWLOCALSt	   CO_NESTEDt   CO_GENERATORt   CO_FUTURE_DIVISIONt   CO_FUTURE_ABSIMPORTt   CO_FUTURE_WITH_STATEMENT(   t   TupleArgi    i   t   CALL_FUNCTIONt   CALL_FUNCTION_VARt   CALL_FUNCTION_KWt   CALL_FUNCTION_VAR_KWi   i   i   c         C   s   t  |  d  } | i   } | i   t | |   } y | i |  Wn t j
 o
   n, Xt  |  d d  } | i |  | i   d  S(   Nt   Ut   ct   wb(   t   opent   readt   closet   Modulet   compilet   SyntaxErrort   dump(   t   filenamet   displayt   ft   buft   mod(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   compileFile$   s    
c         C   s   | d j	 p | d j	 o t d  n | d j o t |  |  } nM | d j o t |  |  } n- | d j o t |  |  } n t d   | i   | i S(   s*   Replacement for builtin compile() functions   not implemented yett   singlet   exect   evals6   compile() 3rd arg must be 'exec' or 'eval' or 'single'N(   t   Nonet   RuntimeErrort   InteractiveR    t
   Expressiont
   ValueErrorR!   t   code(   t   sourceR$   t   modet   flagst   dont_inheritt   gen(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR!   2   s    
t   AbstractCompileModec           B   s2   e  Z d Z d    Z d   Z d   Z d   Z RS(   c         C   s   | |  _  | |  _ d  |  _ d  S(   N(   R3   R$   R-   R2   (   t   selfR3   R$   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   __init__G   s    		c         C   s9   t  |  i |  i  } t i |  i |  t i |  | S(   N(   R   R3   R4   R   t   set_filenameR$   R   t   check(   R9   t   tree(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt	   _get_treeL   s    c         C   s   d  S(   N(    (   R9   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR!   R   s    c         C   s   |  i  S(   N(   R2   (   R9   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   getCodeU   s    N(   t   __name__t
   __module__R-   R4   R:   R>   R!   R?   (    (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR8   C   s
   			R0   c           B   s   e  Z d  Z d   Z RS(   R,   c         C   s+   |  i    } t |  } | i   |  _ d  S(   N(   R>   t   ExpressionCodeGeneratorR?   R2   (   R9   R=   R7   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR!   \   s    (   R@   RA   R4   R!   (    (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR0   X   s   R/   c           B   s   e  Z d  Z d   Z RS(   R*   c         C   s+   |  i    } t |  } | i   |  _ d  S(   N(   R>   t   InteractiveCodeGeneratorR?   R2   (   R9   R=   R7   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR!   e   s    (   R@   RA   R4   R!   (    (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR/   a   s   R    c           B   s8   e  Z d  Z d d  Z d   Z e i   Z d   Z RS(   R+   i    c         C   sP   |  i    } t |  } | o d d  k } | i |  GHn | i   |  _ d  S(   Ni(   R>   t   ModuleCodeGeneratort   pprintR?   R2   (   R9   R%   R=   R7   RE   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR!   n   s    c         C   s*   | i  |  i    t i |  i |  d  S(   N(   t   writet   getPycHeadert   marshalR#   R2   (   R9   R&   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR#   v   s    c         C   s2   t  i i |  i  } t i d |  } |  i | S(   Ns   <i(   t   ost   patht   getmtimeR$   t   structt   packt   MAGIC(   R9   t   mtime(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyRG   |   s    (	   R@   RA   R4   R!   R#   t   impt	   get_magicRN   RG   (    (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR    j   s
   	t   LocalNameFinderc           B   sk   e  Z d  Z d d  Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z RS(   s   Find local names in scopec         C   sC   t  i   |  _ t  i   |  _ x | D] } |  i i |  q% Wd  S(   N(   R   t   Sett   namest   globalst   add(   R9   RT   t   name(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR:      s
     c         C   sH   x> |  i  i   D]- } |  i i |  o |  i i |  q q W|  i S(   N(   RU   t   elementsRT   t   has_eltt   remove(   R9   t   elt(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt	   getLocals   s
     c         C   s   d  S(   N(    (   R9   t   node(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt	   visitDict   s    c         C   s(   x! | i  D] } |  i i |  q
 Wd  S(   N(   RT   RU   RV   (   R9   R]   RW   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitGlobal   s    
 c         C   s   |  i  i | i  d  S(   N(   RT   RV   RW   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitFunction   s    c         C   s   d  S(   N(    (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitLambda   s    c         C   s5   x. | i  D]# \ } } |  i  i | p |  q
 Wd  S(   N(   RT   RV   (   R9   R]   RW   t   alias(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitImport   s    
 c         C   s5   x. | i  D]# \ } } |  i  i | p |  q
 Wd  S(   N(   RT   RV   (   R9   R]   RW   Rb   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt	   visitFrom   s    
 c         C   s   |  i  i | i  d  S(   N(   RT   RV   RW   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt
   visitClass   s    c         C   s   |  i  i | i  d  S(   N(   RT   RV   RW   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitAssName   s    (    (   R@   RA   t   __doc__R:   R\   R^   R_   R`   Ra   Rc   Rd   Re   Rf   (    (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyRR      s   								c         C   s-   t  |  t i  o |  i p d Sq) n d S(   Ni   i    (   t
   isinstanceR   t   Constt   value(   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   is_constant_false   s    
t   CodeGeneratorc           B   sZ  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 e d  Z e Z d Z d Z d   Z d   Z d   Z d   Z d 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 d+   Z6 d,   Z7 d Z8 d-   Z9 d.   Z: d/   Z; d0   Z< d1   Z= d2   Z> d3   Z? d4   Z@ d5   ZA d6   ZB d7   ZC d8   ZD d9   ZE d:   ZF d; d<  ZG eH d= j o eG ZI eG ZJ n d>   ZI d?   ZJ d@   ZK h  dA dB <dC dD <dE dF <dG dH <dI dJ <dK dL <dM dN <dO dP <dQ dR <dS dT <dU dV <dW dX <ZL dY   ZM dZ   ZN d[   ZO d\   ZP d]   ZQ d^   ZR d d_  ZS d`   ZT da   ZU db   ZV d dc  ZW d dd  ZX de   ZY df   ZZ dg   Z[ dh   Z\ di   Z] dj   Z^ dk   Z_ dl   Z` dm   Za dn   Zb do   Zc dp   Zd dq   Ze dr   Zf ds   Zg dt   Zh du   Zi dv   Zj dw   Zk dx   Zl dy   Zm dz   Zn d{   Zo d|   Zp d}   Zq d~   Zr RS(   s  Defines basic code generator for Python bytecode

    This class is an abstract base class.  Concrete subclasses must
    define an __init__() that defines self.graph and then calls the
    __init__() defined in this class.

    The concrete class must also define the class attributes
    NameFinder, FunctionGen, and ClassGen.  These attributes can be
    defined in the initClass() method, which is a hook for
    initializing these methods after all the classes have been
    defined.
    i    c         C   s   |  i  d  j o |  i   d |  i _  n |  i   t i   |  _ t i   |  _ d  |  _	 |  i
   d |  _ |  i   i } xz | D]r } | d j o |  i i t  d |  _ q | d j o |  i i t  q | d j o |  i i t  q q Wd  S(   Ni   t   BINARY_DIVIDEt   divisiont   BINARY_TRUE_DIVIDEt   absolute_importt   with_statement(   t   _CodeGenerator__initializedR-   t	   initClasst	   __class__t
   checkClassR   t   Stackt   localst   setupst   last_linenot   _setupGraphDelegationt   _div_opt
   get_modulet   futurest   grapht   setFlagR   R   R   (   R9   R}   t   feature(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR:      s&    

	
	 c         C   s   d S(   s)   This method is called once for each classN(    (   R9   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyRs      s    c         C   s   y` t  |  d  p t  t |  d  p t  t |  d  p t  t |  d  p t  Wn. t j
 o" } d |  i i } t |  n Xd S(   s*   Verify that class is constructed correctlyR~   t
   NameFindert   FunctionGent   ClassGens   Bad class construction for %sN(   t   hasattrt   AssertionErrort   getattrRt   R@   (   R9   t   msgt   intro(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyRu      s    c         C   sO   |  i  i |  _ |  i  i |  _ |  i  i |  _ |  i  i |  _ |  i  i |  _ d  S(   N(   R~   t   emitt   newBlockt
   startBlockt	   nextBlockt   setDocstring(   R9   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyRz      s
    c         C   s   |  i  i   S(   s   Return a code object(   R~   R?   (   R9   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR?      s    c         C   s/   |  i  d  j	 o t i | |  i   Sn | Sd  S(   N(   t
   class_nameR-   R   t   mangle(   R9   RW   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR      s    c         C   s    t  i   } t | |  | i S(   N(   R   t   SymbolVisitorR   t   scopes(   R9   R=   t   s(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   parseSymbols   s    c         C   s   t  d  d  S(   Ns#   should be implemented by subclasses(   R.   (   R9   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR|     s    c         C   s   |  i  i   i |  S(   N(   Rw   t   topRY   (   R9   RW   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   isLocalName  s    c         C   s   |  i  d |  d  S(   Nt   STORE(   t   _nameOp(   R9   RW   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt	   storeName
  s    c         C   s   |  i  d |  d  S(   Nt   LOAD(   R   (   R9   RW   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   loadName  s    c         C   s   |  i  d |  d  S(   Nt   DELETE(   R   (   R9   RW   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   delName  s    c         C   s   |  i  |  } |  i i |  } | t j o: |  i p |  i | d |  q |  i | d |  n | t j o: |  i p |  i | d |  q |  i | d |  nF | t j p | t j o |  i | d |  n t	 d | | f  d  S(   Nt   _NAMEt   _FASTt   _GLOBALt   _DEREFs    unsupported scope for var %s: %d(
   R   t   scopet
   check_nameR	   t	   optimizedR   R
   R   R   R.   (   R9   t   prefixRW   R   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR     s    

c         C   s:   |  i  o |  i | d |  n |  i | d |  d S(   s   Emit name ops for names generated implicitly by for loops

        The interpreter generates names that start with a period or
        dollar sign.  The symbol table ignores these names because
        they aren't present in the program text.
        R   R   N(   R   R   (   R9   R   RW   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   _implicitNameOp&  s    
c         C   s[   t  | d d  } | d j	 o8 | |  i j p | o! |  i d |  | |  _ t Sn t S(   s  Emit SET_LINENO if necessary.

        The instruction is considered necessary if the node has a
        lineno attribute and it is different than the last lineno
        emitted.

        Returns true if SET_LINENO was emitted.

        There are no rules for when an AST node should have a lineno
        attribute.  The transformer and AST code need to be reviewed
        and a consistent policy implemented and documented.  Until
        then, this method works around missing line numbers.
        t   linenot
   SET_LINENON(   R   R-   Ry   R   t   Truet   False(   R9   R]   t   forceR   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt
   set_lineno7  s    	c         C   s   |  i  |  |  _ |  i | |  _ |  i d d  | i o$ |  i d | i  |  i d  n t | i |  i   d d } |  i	 i
 | i    |  i | i  |  i d d   |  i d  d  S(   NR   i    t
   LOAD_CONSTRg   t   verboset   RETURN_VALUE(   R   R   R   R   t   docR   R   R]   R   Rw   t   pushR\   t   visitR-   (   R9   R]   t   lnf(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitModuleU  s    
c         C   sP   |  i  |  |  i |  |  _ |  i | |  _ |  i | i  |  i d  d  S(   NR   (   R   R   R   R   R   R]   R   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitExpressionb  s
    c         C   sE   |  i  | d d | i o |  i | i  n |  i | i  d  S(   Nt   isLambdai    (   t   _visitFuncOrLambdaR   R   R   RW   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR`   i  s    
c         C   s   |  i  | d d d  S(   NR   i   (   R   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyRa   o  s    c         C   s  | oD | i  o: x! | i  i D] } |  i |  q Wt | i  i  } n d } |  i | |  i | |  i |  i    } t | i	 |  | i
   |  i |  x | i D] } |  i |  q W|  i | t | i   x$ t |  D] } |  i d d  q Wd  S(   Ni    R   i   (   t
   decoratorst   nodesR   t   lenR   R   R   R|   R   R2   t   finishR   t   defaultst   _makeClosuret   rangeR   (   R9   R]   R   t	   decoratort   ndecoratorsR7   t   defaultt   i(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR   r  s$     

  c         C   s   |  i  | |  i |  i    } t | i |  | i   |  i |  |  i d | i  x | i	 D] } |  i
 |  qb W|  i d t | i	   |  i | d  |  i d d  |  i d  |  i | i  d  S(   NR   t   BUILD_TUPLEi    R   t   BUILD_CLASS(   R   R   R|   R   R2   R   R   R   RW   t   basesR   R   R   R   (   R9   R]   R7   t   base(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyRe     s    

 c         C   s  |  i    } t | i  } x t |  D] } | i | \ } } t |  o q( n |  i |  |  i |  |  i    } |  i d |  |  i   |  i d  |  i |  |  i d |  |  i	 |  |  i d  q( W| i
 o |  i | i
  n |  i |  d  S(   Nt   JUMP_IF_FALSEt   POP_TOPt   JUMP_FORWARD(   R   R   t   testsR   Rk   R   R   R   R   R   t   else_(   R9   R]   t   endt   numtestsR   t   testt   suitet   nextTest(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitIf  s(     

c         C   s8  |  i  |  |  i   } |  i   } |  i   } |  i d |  |  i |  |  i i t | f  |  i  | d t |  i | i	  |  i d | p |  |  i   |  i d  |  i | i
  |  i d |  |  i |  |  i d  |  i d  |  i i   | i o |  i | i  n |  i |  d  S(   Nt
   SETUP_LOOPR   R   R   t   JUMP_ABSOLUTEt	   POP_BLOCK(   R   R   R   R   Rx   R   t   LOOPR   R   R   t   bodyR   t   popR   (   R9   R]   t   loopR   t   after(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt
   visitWhile  s*    

c         C   s*  |  i    } |  i    } |  i    } |  i i t | f  |  i |  |  i d |  |  i | i  |  i d  |  i |  |  i | d d |  i d |  |  i | i	  |  i | i
  |  i d |  |  i |  |  i d  |  i i   | i o |  i | i  n |  i |  d  S(   NR   t   GET_ITERR   i   t   FOR_ITERR   R   (   R   Rx   R   R   R   R   R   t   listR   t   assignR   R   R   (   R9   R]   t   startt   anchorR   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitFor  s(    
c         C   sE   |  i  p t d | i | i f  n |  i |  |  i d  d  S(   Ns   'break' outside loop (%s, %d)t
   BREAK_LOOP(   Rx   R"   R$   R   R   R   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt
   visitBreak  s
    
c         C   sj  |  i  p t d | i | i f  n |  i  i   \ } } | t j o+ |  i |  |  i d |  |  i   n | t	 j p | t
 j o |  i |  t |  i   } xA | d j o3 | d } |  i  | \ } } | t j o Pq q W| t j o t d | i | i f  n |  i d |  |  i   n1 | t j o# d } t | | i | i f  n d  S(   Ns    'continue' outside loop (%s, %d)R   i    i   t   CONTINUE_LOOPs7   'continue' not allowed inside 'finally' clause (%s, %d)(   Rx   R"   R$   R   R   R   R   R   R   t   EXCEPTt   TRY_FINALLYR   t   END_FINALLY(   R9   R]   t   kindt   blockR   t
   loop_blockR   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitContinue  s2    
 

c         C   s}   |  i    } xI | i d  D]: } |  i |  |  i | |  |  i   |  i d  q W|  i | i d  |  i |  d  S(   NiR   (   R   R   R   R   R   (   R9   R]   t   jumpR   t   child(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt	   visitTest  s     
c         C   s   |  i  | d  d  S(   NR   (   R   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitAnd  s    c         C   s   |  i  | d  d  S(   Nt   JUMP_IF_TRUE(   R   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitOr  s    c         C   s   |  i    } |  i    } |  i | i  |  i d |  |  i d  |  i | i  |  i d |  |  i |  |  i d  |  i | i  |  i |  d  S(   NR   R   R   (   R   R   R   R   t   thenR   R   (   R9   R]   t   endblockt	   elseblock(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt
   visitIfExp  s    c         C   sD  |  i  | i  |  i   } xy | i d  D]j \ } } |  i  |  |  i d  |  i d  |  i d |  |  i d |  |  i   |  i d  q* W| i o4 | i d \ } } |  i  |  |  i d |  n t | i  d j oT |  i   } |  i d |  |  i |  |  i d	  |  i d  |  i |  n d  S(
   Nit   DUP_TOPt	   ROT_THREEt
   COMPARE_OPR   R   i   R   t   ROT_TWO(   R   t   exprR   t   opsR   R   R   R   (   R9   R]   t   cleanupt   opR2   R   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitCompare"  s,     

c         C   s  |  i  |  d |  i } |  i d |  _ |  i d d  |  i d  |  i d d  |  i d |  g  } x t t t | i   | i  D] \ } } |  i |  \ } } d  } x> | i
 D]3 }	 | d  j o |  i   } n |  i |	 |  q W| i d | | | f  q W|  i d	 |  |  i | i  |  i d
 d  |  i d  x | D]z \ } } } | oG |  i   }
 |  i d |
  |  i |  |  i d  |  i |
  n |  i d |  |  i |  qXW|  i d |  |  i d |  _ d  S(   Ns	   $append%di   t
   BUILD_LISTi    R   t	   LOAD_ATTRt   appendR   R   R   R   R   R   R   (   R   t   _CodeGenerator__list_countR   R   t   zipR   R   t   qualsR   R-   t   ifsR   t   insertR   R   R   (   R9   R]   R   t   stackR   t   for_R   R   t   contt   if_t   skip_one(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitListComp=  sD    " 
  c         C   s   |  i    } |  i    } |  i | i  |  i d  |  i |  |  i | d t |  i d |  |  i   |  i | i  | | f S(   NR   R   R   (   R   R   R   R   R   R   R   R   (   R9   R]   R   R   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitListCompForc  s    
c         C   sN   |  i  | d t |  i | i  |  i d |  |  i   |  i d  d  S(   NR   R   R   (   R   R   R   R   R   R   (   R9   R]   t   branch(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitListCompIfp  s
    
c         C   s   | i  i   } | o[ x | D] } |  i d |  q W|  i d t |   |  i d |  |  i d |  n! |  i d |  |  i d |  d  S(   Nt   LOAD_CLOSURER   R   t   MAKE_CLOSUREt   MAKE_FUNCTION(   R   t   get_free_varsR   R   (   R9   R7   t   argst   freesRW   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR   w  s     c         C   s   t  | |  i |  i |  i    } t | i |  | i   |  i |  |  i | d  |  i	 | i i
 d i  |  i d  |  i d d  d  S(   Ni    R   R   i   (   t   GenExprCodeGeneratorR   R   R|   R   R2   R   R   R   R   R  t   iterR   (   R9   R]   R7   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitGenExpr  s    
c      	   C   s  |  i  |  g  } x t t t | i   | i  D] \ } } |  i |  \ } } } d  } x> | i D]3 }	 | d  j o |  i   } n |  i |	 |  qi W| i	 d | | | | f  q5 W|  i | i
  |  i d  |  i d  x | D] \ } } } } | oG |  i   }
 |  i d |
  |  i |  |  i d  |  i |
  n |  i d |  |  i |  |  i d  |  i i   |  i |  q W|  i d d   d  S(   Ni    t   YIELD_VALUER   R   R   R   R   (   R   R  R   R   R  R   R-   R  R   R  R   R   R   R   Rx   R   (   R9   R]   R  R   R  R   R   R   R  R	  R
  (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitGenExprInner  s:    " 
   c         C   s   |  i    } |  i    } |  i    } |  i i t | f  |  i d |  | i o |  i d  n |  i | i  |  i d  |  i	 |  |  i
 | d t |  i d |  |  i	   |  i | i  | | | f S(   NR   s   .0R   R   R   (   R   Rx   R   R   R   t
   is_outmostR   R   R  R   R   R   R   (   R9   R]   R   R   R   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitGenExprFor  s    

c         C   sN   |  i  | d t |  i | i  |  i d |  |  i   |  i d  d  S(   NR   R   R   (   R   R   R   R   R   R   (   R9   R]   R  (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitGenExprIf  s
    
c         C   s   |  i    } |  i |  |  i   |  i | i  |  i d |  |  i   |  i d  |  i d d  | i o$ |  i | i  |  i d d  n |  i d d  |  i |  |  i d  d  S(   NR   R   t   LOAD_GLOBALR   t   RAISE_VARARGSi   i   (   R   R   R   R   R   R   t   fail(   R9   R]   R   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitAssert  s    


c         C   s   |  i  |  d } | i o |  i | i  | d } n | i o |  i | i  | d } n | i o |  i | i  | d } n |  i d |  d  S(   Ni    i   R  (   R   t   expr1R   t   expr2t   expr3R   (   R9   R]   t   n(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt
   visitRaise  s    


c         C   sh  |  i    } |  i    } |  i    } | i o |  i    } n | } |  i |  |  i d |  |  i |  |  i i t | f  |  i | i	  |  i d  |  i i
   |  i d |  |  i |  t | i  d } x>t t | i   D]'} | i | \ } }	 } |  i |  | oa |  i d  |  i |  |  i d d  |  i    }
 |  i d |
  |  i   |  i d	  n |  i d	  |	 o |  i |	  n |  i d	  |  i d	  |  i |  |  i d |  | o |  i |
  n |  i   | o |  i d	  q q W|  i d
  | i o! |  i |  |  i | i  n |  i |  d  S(   Nt   SETUP_EXCEPTR   R   i   R   R   s   exception matchR   R   R   (   R   R   R   R   R   Rx   R   R   R   R   R   R   R   t   handlersR   (   R9   R]   R   R'  R   t   lElset   lastR   R   t   targett   next(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitTryExcept  sZ    
 


c         C   s   |  i    } |  i    } |  i |  |  i d |  |  i |  |  i i t | f  |  i | i  |  i d  |  i i	   |  i d d   |  i |  |  i i t | f  |  i | i  |  i d  |  i i	   d  S(   Nt   SETUP_FINALLYR   R   R   (   R   R   R   R   Rx   R   R   R   R   R   R-   R   t   final(   R9   R]   R   R.  (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitTryFinally%  s    c         C   s
  |  i    } |  i    } d |  i } d |  i } |  i d 7_ |  i |  |  i | i  |  i d  |  i d d  |  i d |  |  i d d  |  i d	 d
  | i d  j o |  i d  n |  i d |  |  i d |  |  i	 |  |  i
 i t | f  | i d  j	 o4 |  i d |  |  i d |  |  i | i  n |  i | i  |  i d  |  i
 i   |  i d d   |  i	 |  |  i
 i t | f  |  i d |  |  i d |  |  i d  |  i d  |  i
 i   |  i d 8_ d  S(   Ns   $exit%ds   $value%di   R   R   t   __exit__R   t	   __enter__R   i    R   R-  R   R   R   R   t   WITH_CLEANUPR   (   R   t   _CodeGenerator__with_countR   R   R   R   R   t   varsR-   R   Rx   R   R   R   R   R   (   R9   R]   R   R.  t   exitvart   valuevar(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt	   visitWith8  sD    c         C   s.   |  i  |  |  i | i  |  i d  d  S(   NR   (   R   R   R   R   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitDiscard_  s    c         C   s   |  i  d | i  d  S(   NR   (   R   Rj   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt
   visitConstd  s    c         C   s'   |  i  d | i  |  i | i  d  S(   NR   (   R   RW   R   R   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitKeywordg  s    c         C   s   d  S(   N(    (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR_   k  s    c         C   s!   |  i  |  |  i | i  d  S(   N(   R   R   RW   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt	   visitNameo  s    c         C   s   |  i  |  d  S(   N(   R   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt	   visitPasss  s    c         C   s   |  i  |  |  i i t  o d n d } x | i D] \ } } t d j o$ |  i d |  |  i d d   n |  i d |  | i d  d } | o |  i	 |  |  i
 |  q7 |  i
 |  q7 Wd  S(   Ni    ii   R   t   IMPORT_NAMEt   .(   R   R~   t	   checkFlagR   RT   t   VERSIONR   R-   t   splitt   _resolveDotsR   (   R9   R]   t   levelRW   Rb   R(   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyRc   v  s     
 c         C   se  |  i  |  | i } | d j o |  i i t  o
 d } n t d   | i  } t d j o* |  i d |  |  i d t	 |   n |  i d | i
  x | i D] \ } } t d j o} | d j o; d |  _ |  i d  t | i  d j p t  d  SqP|  i d	 |  |  i |  |  i | p |  q |  i d	 |  q W|  i d
  d  S(   Ni    ic         S   s   |  \ } } | S(    (    (   t   .0RW   Rb   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   <lambda>  s    i   R   R=  t   *t   IMPORT_STARt   IMPORT_FROMR   (   R   RC  R~   R?  R   t   mapRT   R@  R   t   tuplet   modnamet	   namespaceR   R   RB  R   (   R9   R]   RC  t   fromlistRW   Rb   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyRd     s,    	!

 	c         C   sS   | i  d  } t |  d j o d  Sn x" | d D] } |  i d |  q5 Wd  S(   NR>  i   R   (   RA  R   R   (   R9   RW   t   eltsR[   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyRB    s     c         C   s0   |  i  | i  |  i d |  i | i   d  S(   NR   (   R   R   R   R   t   attrname(   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitGetattr  s    c         C   s   |  i  |  |  i | i  t | i  d } xl t t | i   D]U } | i | } | | j  o |  i d  n t | t i	  o |  i |  qF qF Wd  S(   Ni   R   (
   R   R   R   R   R   R   R   Rh   R   t   Node(   R9   R]   t   dupsR   R[   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitAssign  s     c         C   se   | i  d j o |  i | i  n> | i  d j o! |  i |  |  i | i  n d G| i  GHd  S(   Nt	   OP_ASSIGNt	   OP_DELETEt   oops(   R5   R   RW   R   R   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyRf     s    c         C   s   |  i  | i  | i d j o  |  i d |  i | i   nB | i d j o  |  i d |  i | i   n d G| i GH| GHd  S(   NRT  t
   STORE_ATTRRU  t   DELETE_ATTRs   warning: unexpected flags:(   R   R   R5   R   R   RO  (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitAssAttr  s      t   UNPACK_SEQUENCEc         C   sU   t  |  d j o |  i | t | i   n x | i D] } |  i |  q: Wd  S(   NRU  (   t   findOpR   R   R   R   (   R9   R]   R   R   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   _visitAssSequence  s
    
 i   c         C   s   |  i  | d  d  S(   Nt   UNPACK_TUPLE(   R\  (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitAssTuple  s    c         C   s   |  i  | d  d  S(   Nt   UNPACK_LIST(   R\  (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitAssList  s    c         C   sg   |  i  |  t | i  } |  i | d  |  i | i  |  i |  i | i  |  i | d  d  S(   Nt   loadt   store(   R   t   wrap_augR]   R   R   R   t   _augmented_opcodeR   (   R9   R]   t   aug_node(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitAugAssign  s    t   INPLACE_ADDs   +=t   INPLACE_SUBTRACTs   -=t   INPLACE_MULTIPLYs   *=t   INPLACE_DIVIDEs   /=t   INPLACE_FLOOR_DIVIDEs   //=t   INPLACE_MODULOs   %=t   INPLACE_POWERs   **=t   INPLACE_RSHIFTs   >>=t   INPLACE_LSHIFTs   <<=t   INPLACE_ANDs   &=t   INPLACE_XORs   ^=t
   INPLACE_ORs   |=c         C   sF   | d j o |  i  | i  n" | d j o |  i | i  n d  S(   NRa  Rb  (   R   RW   R   (   R9   R]   R4   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitAugName  s    c         C   s   | d j o= |  i  | i  |  i d  |  i d |  i | i   n; | d j o- |  i d  |  i d |  i | i   n d  S(   NRa  R   R   Rb  R   RW  (   R   R   R   R   RO  (   R9   R]   R4   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitAugGetattr  s     c         C   s   | d j o |  i  | d  n | d j o d } | i o | d B} n | i o | d B} n | d j o |  i d  n, | d j o |  i d  n |  i d	  |  i d
 |  n d  S(   NRa  i   Rb  i    i   R   i   t   ROT_FOURR   s   STORE_SLICE+%d(   t
   visitSlicet   lowert   upperR   (   R9   R]   R4   t   slice(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitAugSlice  s    

c         C   sP   | d j o |  i  | d  n, | d j o |  i d  |  i d  n d  S(   NRa  i   Rb  R   t   STORE_SUBSCR(   t   visitSubscriptR   (   R9   R]   R4   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitAugSubscript  s
    c         C   s   |  i  | i  | i d  j o |  i d d   n |  i  | i  | i d  j o |  i d  n |  i  | i  |  i d  d  S(   NR   R   t	   EXEC_STMT(   R   R   Rw   R-   R   RU   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt	   visitExec  s    c         C   s  d } d } |  i  |  |  i | i  xI | i D]> } |  i |  t | t i  o | d } q3 | d } q3 W| i d  j	 o |  i | i  n | i	 d  j	 o |  i | i	  n | i d  j	 } | i	 d  j	 } t
 | | f } |  i | | d >| B d  S(   Ni    i   i   (   R   R   R]   R  Rh   R   t   Keywordt	   star_argsR-   t
   dstar_argst   callfunc_opcode_infoR   (   R9   R]   t   post   kwt   argt	   have_start
   have_dstart   opcode(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitCallFunc&  s$    
 c         C   s   |  i  |  | i o |  i | i  n xn | i D]c } | i o |  i d  n |  i |  | i o |  i d  |  i d  q5 |  i d  q5 W| i o | o |  i d  n d  S(   NR   R   t   PRINT_ITEM_TOt
   PRINT_ITEMR   (   R   t   destR   R   R   (   R9   R]   t   newlineR   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt
   visitPrint:  s    

 

c         C   s?   |  i  | d d | i o |  i d  n |  i d  d  S(   NR  i   t   PRINT_NEWLINE_TOt   PRINT_NEWLINE(   R  R  R   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitPrintnlJ  s    
c         C   s.   |  i  |  |  i | i  |  i d  d  S(   NR   (   R   R   Rj   R   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitReturnQ  s    c         C   s.   |  i  |  |  i | i  |  i d  d  S(   NR  (   R   R   Rj   R   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt
   visitYieldV  s    c         C   sB  |  i  | i  d } | i o |  i  | i  | d B} n | i o |  i  | i  | d B} n | oS | d j o |  i d  q | d j o |  i d d  q |  i d d  n | i d j o |  i d |  nZ | i d	 j o |  i d
 |  n5 | i d j o |  i d |  n d G| i GH  d  S(   Ni    i   i   R   i   t   DUP_TOPXt   OP_APPLYs   SLICE+%dRT  s   STORE_SLICE+%dRU  s   DELETE_SLICE+%ds   weird slice(   R   R   Rw  Rx  R   R5   (   R9   R]   t   aug_flagRy  (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyRv  ]  s,    

c         C   s   |  i  | i  x | i D] } |  i  |  q Wt | i  d j o |  i d t | i   n | o |  i d d  n | i d j o |  i d  nC | i d j o |  i d  n" | i d	 j o |  i d
  n d  S(   Ni   R   R  i   R  t   BINARY_SUBSCRRT  R{  RU  t   DELETE_SUBSCR(   R   R   t   subsR   R   R5   (   R9   R]   R  t   sub(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR|  x  s    
 c         C   s1   |  i  | i  |  i  | i  |  i |  d  S(   N(   R   t   leftt   rightR   (   R9   R]   R   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   binaryOp  s    c         C   s   |  i  | d  S(   Nt
   BINARY_ADD(   R  (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitAdd  s    c         C   s   |  i  | d  S(   Nt   BINARY_SUBTRACT(   R  (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitSub  s    c         C   s   |  i  | d  S(   Nt   BINARY_MULTIPLY(   R  (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitMul  s    c         C   s   |  i  | |  i  S(   N(   R  R{   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitDiv  s    c         C   s   |  i  | d  S(   Nt   BINARY_FLOOR_DIVIDE(   R  (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitFloorDiv  s    c         C   s   |  i  | d  S(   Nt   BINARY_MODULO(   R  (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitMod  s    c         C   s   |  i  | d  S(   Nt   BINARY_POWER(   R  (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt
   visitPower  s    c         C   s   |  i  | d  S(   Nt   BINARY_LSHIFT(   R  (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitLeftShift  s    c         C   s   |  i  | d  S(   Nt   BINARY_RSHIFT(   R  (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitRightShift  s    c         C   s!   |  i  | i  |  i |  d  S(   N(   R   R   R   (   R9   R]   R   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   unaryOp  s    c         C   s   |  i  | d  S(   Nt   UNARY_INVERT(   R  (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitInvert  s    c         C   s   |  i  | d  S(   Nt   UNARY_NEGATIVE(   R  (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitUnarySub  s    c         C   s   |  i  | d  S(   Nt   UNARY_POSITIVE(   R  (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitUnaryAdd  s    c         C   s   |  i  | d  S(   NR  (   R  (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitUnaryInvert  s    c         C   s   |  i  | d  S(   Nt	   UNARY_NOT(   R  (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitNot  s    c         C   s   |  i  | d  S(   Nt   UNARY_CONVERT(   R  (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitBackquote  s    c         C   sD   |  i  | d  x, | d D]  } |  i  |  |  i |  q Wd  S(   Ni    i   (   R   R   (   R9   R   R   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   bitOp  s
     c         C   s   |  i  | i d  S(   Nt
   BINARY_AND(   R  R   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitBitand  s    c         C   s   |  i  | i d  S(   Nt	   BINARY_OR(   R  R   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt
   visitBitor  s    c         C   s   |  i  | i d  S(   Nt
   BINARY_XOR(   R  R   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitBitxor  s    c         C   s   |  i  d t  d  S(   NR   (   R   t   Ellipsis(   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitEllipsis  s    c         C   sK   |  i  |  x | i D] } |  i |  q W|  i d t | i   d  S(   NR   (   R   R   R   R   R   (   R9   R]   R[   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt
   visitTuple  s
    
 c         C   sK   |  i  |  x | i D] } |  i |  q W|  i d t | i   d  S(   NR   (   R   R   R   R   R   (   R9   R]   R[   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt	   visitList  s
    
 c         C   s>   x | i  D] } |  i |  q
 W|  i d t | i    d  S(   Nt   BUILD_SLICE(   R   R   R   R   (   R9   R]   R   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   visitSliceobj  s    
 c         C   s|   |  i  |  |  i d d  xX | i D]M \ } } |  i d  |  i |  |  i |  |  i d  |  i d  q' Wd  S(   Nt	   BUILD_MAPi    R   R   R{  (   R   R   t   itemsR   (   R9   R]   t   kt   v(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR^     s    
 N(s   R@   RA   Rg   R   R-   Rr   R   R:   Rs   Ru   Rz   R?   R   R   R|   R   R   R   R   R   R   R   R   RR   R   R   R   R   R   R`   Ra   R   Re   R   R   R   R   R   R   R   R   R   R   R  R  R  R  R   R  R  R  R  R   R%  R,  R/  R3  R7  R8  R9  R:  R_   R;  R<  Rc   Rd   RB  RP  RS  Rf   RY  R\  R@  R^  R`  Rf  Rd  Rs  Rt  Rz  R}  R  R  R  R  R  R  Rv  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^   (    (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyRl      s   																									
					&					!						2		'														

																																																	t   NestedScopeMixinc           B   s   e  Z d  Z d   Z RS(   s>   Defines initClass() for nested scoping (Python 2.2-compatible)c         C   s(   t  |  i _ t |  i _ t |  i _ d  S(   N(   RR   Rt   R   t   FunctionCodeGeneratorR   t   ClassCodeGeneratorR   (   R9   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyRs     s    (   R@   RA   Rg   Rs   (    (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR    s   RD   c           B   s)   e  Z e i Z d Z d    Z d   Z RS(   c         C   sE   t  i d | i  |  _ t i |  |  _ |  i   t | |   d  S(   Ns   <module>(	   R   t   PyFlowGraphR$   R~   R   t   find_futuresR}   t    _ModuleCodeGenerator__super_initR   (   R9   R=   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR:     s    
c         C   s   |  S(   N(    (   R9   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR|     s    N(   R@   RA   Rl   R:   R  R-   R   R|   (    (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyRD     s   		RB   c           B   s/   e  Z e i Z d Z d Z d    Z d   Z RS(   c         C   s3   t  i d | i  |  _ |  i   t | |   d  S(   Ns   <expression>(   R   R  R$   R~   t$   _ExpressionCodeGenerator__super_initR   (   R9   R=   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR:     s    
c         C   s   |  S(   N(    (   R9   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR|     s    N(    (	   R@   RA   Rl   R:   R  R-   R   R}   R|   (    (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyRB     s
   		RC   c           B   s8   e  Z e i Z d Z d Z d    Z d   Z d   Z	 RS(   c         C   sM   t  i d | i  |  _ |  i   |  i |  t | |   |  i d  d  S(   Ns   <interactive>R   (   R   R  R$   R~   t%   _InteractiveCodeGenerator__super_initR   R   R   (   R9   R=   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR:     s
    
c         C   s   |  S(   N(    (   R9   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR|   #  s    c         C   s!   |  i  | i  |  i d  d  S(   Nt
   PRINT_EXPR(   R   R   R   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR8  &  s    N(    (
   R@   RA   Rl   R:   R  R-   R   R}   R|   R8  (    (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyRC     s   			t   AbstractFunctionCodec           B   sG   e  Z d  Z d Z d   Z d   Z d   Z d   Z d   Z e Z	 RS(   i   i    c         C   sW  | |  _  | |  _ | o' t } d | i } | i d | _ n
 | i } t | i  \ } }	 t i | | i	 | d d |  _
 | |  _ |  i   | o | i o |  i | i  n t | i |  i |  d d }
 |  i i |
 i    | i o |  i
 i t  n | i o |  i
 i t  n |  i |  |	 o |  i | i  n d  S(   Ns   <lambda.%d>i   R   R   i    (   R   t   moduleR  t   lambdaCountRW   t   generateArgListt   argnamesR   R  R$   R~   R   t
   super_initR   R   R   R2   R   Rw   R   R\   t   varargsR   R   t   kwargsR   R   t   generateArgUnpack(   R9   t   funcR   R   R   R(   t   klassRW   R  t   hasTupleArgR   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR:   0  s.    				
!

c         C   s   |  i  S(   N(   R  (   R9   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR|   M  s    c         C   s<   |  i  i   |  i p |  i d d   n |  i d  d  S(   NR   R   (   R~   t   startExitBlockR   R   R-   (   R9   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR   P  s    
c         C   sd   x] t  t |   D]I } | | } t | t  o) |  i d d | d  |  i |  q q Wd  S(   Nt	   LOAD_FASTs   .%di   (   R   R   Rh   RJ  R   t   unpackSequence(   R9   R  R   R  (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR  V  s     
c         C   s   t  d j o |  i d t |   n |  i d t |   x? | D]7 } t | t  o |  i |  qD |  i d |  qD Wd  S(   Ni   RZ  R]  R   (   R@  R   R   Rh   RJ  R  R   (   R9   t   tupR[   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR  ]  s     (
   R@   RA   R   R  R:   R|   R   R  R  t   unpackTuple(    (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR  ,  s   					R  c           B   s)   e  Z e i Z d Z e i Z d    Z RS(   c         C   s   | |  _  | | |  _ |  i | | | | |  |  i i |  i i    |  i i |  i i    |  i i d  j	 o |  i i
 t  n d  S(   N(   R   R   t"   _FunctionCodeGenerator__super_initR~   t   setFreeVarsR  t   setCellVarst   get_cell_varst	   generatorR-   R   R   (   R9   R  R   R   R   R(   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR:   q  s    	N(	   R@   RA   Rl   R:   R  R-   R   R  R  (    (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR  j  s   		R  c           B   s)   e  Z e i Z d Z e i Z d    Z RS(   c         C   su   | |  _  | | |  _ |  i | | d | |  |  i i |  i i    |  i i |  i i    |  i i t	  d  S(   Ni   (
   R   R   t!   _GenExprCodeGenerator__super_initR~   R  R  R  R  R   R   (   R9   t   gexpR   R   R(   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR:     s    	N(	   R@   RA   Rl   R:   R  R-   R   R  R  (    (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR  z  s   		t   AbstractClassCodec           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   s   | i  |  _ | |  _ t i | i  | i d d d d |  _ |  i   t | i	 |  i
   d d } |  i i | i    |  i i t  | i o |  i | i  n d  S(   NR   i    R  i   R   (   RW   R   R  R   R  R$   R~   R  R   R2   R   Rw   R   R\   R   R   R   R   (   R9   R  R   R  R   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR:     s    	

c         C   s   |  i  S(   N(   R  (   R9   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR|     s    c         C   s+   |  i  i   |  i d  |  i d  d  S(   Nt   LOAD_LOCALSR   (   R~   R  R   (   R9   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR     s    (   R@   RA   R:   R|   R   (    (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR    s   		R  c           B   s)   e  Z e i Z d Z e i Z d    Z RS(   c         C   s   | |  _  | | |  _ |  i | | |  |  i i |  i i    |  i i |  i i    |  i |  |  i	 d d  |  i
 d  | i o$ |  i	 d | i  |  i
 d  n d  S(   NR  R@   RA   R   Rg   (   R   R   t   _ClassCodeGenerator__super_initR~   R  R  R  R  R   R   R   R   (   R9   R  R   R  (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR:     s    	
N(	   R@   RA   Rl   R:   R  R-   R   R  R  (    (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR    s   		c         C   s   g  } g  } d } x t  t |    D] } |  | } t | t  o | i |  q% t | t  o> | i t | d |   | i t i	 |   | d } q% t
 d |  q% W| | | f S(   s&   Generate an arg list marking TupleArgsi    i   i   s   unexpect argument type:(   R   R   Rh   t   strR   RJ  R   t   extendR   t   flattenR1   (   t   arglistR  t   extrat   countR   R[   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR    s     
c         C   s#   t    } t |  | d d | i S(   s5   Find the op (DELETE, LOAD, STORE) in an AssTuple treeR   i    (   t   OpFinderR   R   (   R]   R  (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR[    s    	R  c           B   s&   e  Z d    Z d   Z e Z e Z RS(   c         C   s   d  |  _ d  S(   N(   R-   R   (   R9   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR:     s    c         C   sD   |  i  d  j o | i |  _  n! |  i  | i j o t d  n d  S(   Ns   mixed ops in stmt(   R   R-   R5   R1   (   R9   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyRf     s    (   R@   RA   R:   Rf   RY  R|  (    (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR    s   		t	   Delegatorc           B   s    e  Z d  Z d   Z d   Z RS(   s  Base class to support delegation for augmented assignment nodes

    To generator code for augmented assignments, we use the following
    wrapper classes.  In visitAugAssign, the left-hand expression node
    is visited twice.  The first time the visit uses the normal method
    for that node .  The second time the visit uses a different method
    that generates the appropriate code to perform the assignment.
    These delegator classes wrap the original AST nodes in order to
    support the variant visit methods.
    c         C   s   | |  _  d  S(   N(   t   obj(   R9   R  (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR:     s    c         C   s   t  |  i |  S(   N(   R   R  (   R9   t   attr(    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyt   __getattr__  s    (   R@   RA   Rg   R:   R  (    (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR    s   
	t
   AugGetattrc           B   s   e  Z RS(    (   R@   RA   (    (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR    s   t   AugNamec           B   s   e  Z RS(    (   R@   RA   (    (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR    s   t   AugSlicec           B   s   e  Z RS(    (   R@   RA   (    (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR    s   t   AugSubscriptc           B   s   e  Z RS(    (   R@   RA   (    (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyR    s   c         C   s   t  |  i |   S(   N(   t   wrapperRt   (   R]   (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pyRc    s    t   __main__(K   RP   RI   RH   RL   t   syst	   cStringIOR    t   compilerR   R   R   R   R   R   R   R   t   compiler.constsR	   R
   R   R   R   R   R   R   R   R   R   R   t   compiler.pyassemR   t   version_infoR@  t   AttributeErrorR  R   R   R   R   R)   R-   R!   R8   R0   R/   R    RR   Rk   Rl   R  RD   RB   RC   R  R  R  R  R  R  R[  R  R  R  R  R  R  t   Getattrt   Namet   Slicet	   SubscriptR   Rc  R@   t   argvt   file(    (    (    s(   /usr/lib/python2.5/compiler/pycodegen.pys   <module>   s   """:		+	    @>					 