
sec        )   @   sf  d  Z  d d l Td d l Z d d l Z d d l Z d e f d     YZ d d l m Z m	 Z	 d d l m
 Z
 m Z m Z d   Z d	 d
  Z d   Z d   Z d   Z d f  d     YZ e j e j e j e j e j e j e j e j e j e j e j e j e j e j  e j! e j" g Z# i d e j$ 6d e j% 6d e j& 6d e j' 6d e j( 6d e j) 6d e j* 6Z+ e j, e j- e j. e j/ e j0 e j1 e j2 e j e j3 e j4 e j5 e j6 e j7 e j8 e j9 e j: e j; e j< e j= e j> e j? e j@ e jA e jB e jC e j e j e j e j e j e j e jD e j e j e j e j e j e j  e j! e j" e jE g) ZF eG e d  reF jH e jI  n  eG e d  reF jH e jJ  n  e j e j e j e j e j e j e j e j e j e j e j  e j! g ZK i  ZL x' e jM jN   D] \ ZO ZP eP eL eO <qWx' e jQ jN   D] \ ZO ZP eP eL eO <q?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__(    (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR   !   s   (   t
   CO_VARARGSt   CO_VARKEYWORDS(   t	   OP_ASSIGNt	   OP_DELETEt   OP_APPLYc         C   s3   t  |  d  } | j   d } | j   t |  S(   Nt   Us   
(   t   opent   readt   closet   parse(   t   patht   ft   src(    (    s*   /usr/lib/python2.7/compiler/transformer.pyt	   parseFile'   s    
t   execc         C   sT   | d k s | d k r( t    j |   S| d k rD t    j |   St 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(    (    s*   /usr/lib/python2.7/compiler/transformer.pyR   1   s
    c         C   s   g  } x |  D] } t  | d  r8 | j | j    q t |  t d  k rl | j t t |    q t |  t g   k r | j t |   q | j |  q W| S(   Nt   asList(   NN(   t   hasattrt   appendR   t   typet   Nonet   tuple(   t   nodest   lt   item(    (    s*   /usr/lib/python2.7/compiler/transformer.pyR   :   s    c         C   sb   t  |  d t  s |  d Sx@ |  d D]4 } t  | t  r& t |  } | d  k	 rZ | Sq& q& Wd  S(   Ni   i   (   t
   isinstanceR    t   extractLineNoR   (   t   astt   childt   lineno(    (    s*   /usr/lib/python2.7/compiler/transformer.pyR%   H   s    c          G   st   |  d } | t  k r] y t  | |  d   SWqp t k
 rY t  | Gt |   G|  GH  qp Xn t d t |    d  S(   Ni    i   s$   Can't find appropriate Node type: %s(   R!   t	   TypeErrort   lenR   t   str(   t   argst   kind(    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   NodeR   s    

R   c           B   sU  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 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} du dt  Z RS(v   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   i  |  _  xE t j j   D]4 \ } } t |  |  r t |  |  |  j  | <q q W|  j |  j  t j <i |  j	 t j
 6|  j t j 6|  j t j 6|  j t j 6|  j t j 6|  j t j 6|  j t j 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(    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   __init__h   s    	c         C   sC   t  | t  p t  | t  s6 t j | d d } n  |  j |  S(   s,   Transform an AST into a modified parse tree.t	   line_infoi   (   R$   R    t   listt   parsert   st2tuplet   compile_node(   RG   t   tree(    (    s*   /usr/lib/python2.7/compiler/transformer.pyt	   transformx   s    c         C   s   |  j  t j |   S(   s6   Return a modified parse tree for the given suite text.(   RQ   RM   t   suite(   RG   t   text(    (    s*   /usr/lib/python2.7/compiler/transformer.pyR   ~   s    c         C   s   |  j  t j |   S(   s;   Return a modified parse tree for the given expression text.(   RQ   RM   t   expr(   RG   RS   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR      s    c         C   s:   t  |  t  d  k r' t |  } n  |  j | j    S(   s@   Return a modified parse tree for the contents of the given file.t    (   R   R
   R   R   (   RG   t   file(    (    s*   /usr/lib/python2.7/compiler/transformer.pyt	   parsefile   s    c         C   s  | d } | t  j k r= | d |  _ | d } | d } n  | t  j k r] |  j | d  S| t  j k r} |  j | d  S| t  j k r |  j | d  S| t  j k r |  j | d  S| t  j k r |  j | d  S| t  j k r |  j | d  St	 d | f  d  S(   Ni    i   i   s   unexpected node type(
   R0   t   encoding_declRF   t   single_inputt
   file_inputt
   eval_inputt   lambdeft   funcdeft   classdefR   (   RG   t   nodet   n(    (    s*   /usr/lib/python2.7/compiler/transformer.pyRO      s$    

c         C   s5   | d d } | t  j k r. |  j | d  St   S(   Ni    (   R5   R6   t   com_stmtt   Pass(   RG   R_   R`   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyRY      s    c         C   s   |  j  | t j  } | d  k	 r* d } n d } g  } xK | | D]? } | d t j k rA | d t j k rA |  j | |  qA qA Wt | t	 |   S(   Ni   i    (
   t   get_docstringR0   RZ   R   R5   t	   ENDMARKERR6   t   com_append_stmtt   Modulet   Stmt(   RG   t   nodelistt   doct   it   stmtsR_   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyRZ      s    	&c         C   s   t  |  j | d   S(   Ni    (   t
   Expressiont   com_node(   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR[      s    c         C   s   t  |  } | d k r( | d d k s. t  |  j |  } d } xs | | k  r | | d t j k so t  | | d d t j k s t  t | | | d d  } | d 7} qF W| S(   Ni   i   i    (   R*   t   AssertionErrorRC   R5   t   DOTRD   t   Getattr(   RG   Rh   t   listlenR#   Rj   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   decorator_name   s    "!c         C   s   t  |  d k s t  | d d t j k s5 t  | d d t j k sR t  | d d t j k so t  |  j | d d  } t  |  d k r | d d t j k s t  |  j	 | | d  } n | } | S(	   Ni   i   i   i    ii   i   (   i   i   i   (
   R*   Rn   R5   t   ATR6   R0   t   dotted_nameRr   R8   t   com_call_function(   RG   Rh   t   funcnameRT   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt	   decorator   s    c         C   sT   g  } xA | D]9 } | d t  j k s, t  | j |  j | d   q Wt |  S(   Ni    i   (   R0   Rw   Rn   R   t
   Decorators(   RG   Rh   R2   t   dec_nodelist(    (    s*   /usr/lib/python2.7/compiler/transformer.pyt
   decorators   s
    c         C   s   | d d t  j k s t  | d d t  j k r` | d g t | d d  } |  j |  S| d d t  j k r |  j | d d  } |  j | d d  } | | _ | St    d  S(   Ni    i   (   R0   Rz   Rn   R]   RL   R^   R   (   RG   Rh   R`   Rz   t   cls(    (    s*   /usr/lib/python2.7/compiler/transformer.pyt	   decorated   s    	c      
   C   se  t  |  d k rI | d d t j k s/ t  |  j | d d  } n t  |  d k sa t  d  } | d d } | d d } | d d } | d t j k r |  j | d  \ } } } n d
 } } d } |  j | d  }	 |  j | d  }
 |	 d  k	 rCt	 |
 t
  st  t	 |
 j d t  s6t  |
 j d =n  t | | | | | |	 |
 d	 | S(   Ni   i    i   i   ii   iiR(   (    (   R*   R0   Rz   Rn   R   t   varargslistt   com_arglistRc   Rm   R$   Rg   R!   t   Discardt   Function(   RG   Rh   Rz   R(   RI   R,   t   namest   defaultst   flagsRi   t   code(    (    s*   /usr/lib/python2.7/compiler/transformer.pyR]      s(    
c         C   s~   | d d t  j k r: |  j | d d  \ } } } n d } } d } |  j | d  } t | | | | d | d d S(   Ni   i    i   iR(   (    (   R0   R}   R~   Rm   t   Lambda(   RG   Rh   R   R   R   R   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR\     s    #
c         C   s   | d d } |  j  | d  } | d d t j k rA g  } n3 | d d t j k ra g  } n |  j | d  } |  j | d  } | d  k	 r t | t  s t	  t | j
 d t  s t	  | j
 d =n  t | | | | d | d d S(   Ni   ii   i    i   R(   (   Rc   R5   t   COLONt   RPARt	   com_basesRm   R   R$   Rg   Rn   R!   R   t   Class(   RG   Rh   RI   Ri   t   basesR   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR^   &  s    		c         C   s   |  j  | d  S(   Ni    (   Ra   (   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   stmt<  s    c         C   sG   g  } x4 t  d t |  d  D] } |  j | | |  q Wt |  S(   Ni    i   (   t   rangeR*   Re   Rg   (   RG   Rh   Rk   Rj   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   simple_stmtC  s    c         C   s
   t   d  S(   N(   R   (   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt
   parametersJ  s    c         C   s
   t   d  S(   N(   R   (   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR}   M  s    c         C   s
   t   d  S(   N(   R   (   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   fpdefP  s    c         C   s
   t   d  S(   N(   R   (   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   fplistS  s    c         C   s
   t   d  S(   N(   R   (   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyRt   V  s    c         C   s
   t   d  S(   N(   R   (   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   comp_opY  s    c         C   s
   t   d  S(   N(   R   (   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   trailer\  s    c         C   s
   t   d  S(   N(   R   (   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   sliceop_  s    c         C   s
   t   d  S(   N(   R   (   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   argumentb  s    c         C   s  | d } |  j  |  | d  } t |  d k rH t | d | j S| d d t j k r g  } xA t d t |  d d  D]# } | j |  j | | t	   q Wt
 | | d | d d S|  j | d  } |  j | d  } t | | d | d | d St d  d  S(   Nii   R(   i    i   s   can't get here(   t   lookup_nodeR*   R   R(   R5   t   EQUALR   R   t
   com_assignR   t   Assignt   com_augassignt   com_augassign_opt	   AugAssignR   (   RG   Rh   t   ent   exprNodet   nodeslRj   t   lvalt   op(    (    s*   /usr/lib/python2.7/compiler/transformer.pyt	   expr_stmtj  s    
#!c         C   s  g  } t  |  d k r' d } d  } nn | d d t j k r t  |  d k sm | d d t j k sm t  |  j | d  } d } n d  } d } x: t | t  |  d  D]  } | j |  j | |   q W| d d t j k rt	 | | d | d d St
 | | d | d d S(   Ni   i    i   i   i   iR(   (   R*   R   R5   t
   RIGHTSHIFTt   COMMARn   Rm   R   R   t   Printt   Printnl(   RG   Rh   R2   t   startt   destRj   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt
   print_stmt{  s     		c         C   s   |  j  | d t  S(   Ni   (   R   R   (   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   del_stmt  s    c         C   s   t  d | d d  S(   NR(   i    i   (   Rb   (   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt	   pass_stmt  s    c         C   s   t  d | d d  S(   NR(   i    i   (   t   Break(   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt
   break_stmt  s    c         C   s   t  d | d d  S(   NR(   i    i   (   t   Continue(   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   continue_stmt  s    c         C   sU   t  |  d k  r0 t t d   d | d d St |  j | d  d | d d S(   Ni   R(   i    i   (   R*   t   Returnt   ConstR   Rm   (   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   return_stmt  s    c         C   s&   |  j  | d  } t | d | j S(   Ni    R(   (   Rm   R   R(   (   RG   Rh   RT   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt
   yield_stmt  s    c         C   sL   t  |  d k r( |  j | d  } n t d   } t | d | d d S(   Ni   R(   i    i   (   R*   Rm   R   R   t   Yield(   RG   Rh   RH   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt
   yield_expr  s    c         C   s   t  |  d k r( |  j | d  } n d  } t  |  d k rV |  j | d  } n d  } t  |  d k r |  j | d  } n d  } t | | | d | d d S(   Ni   i   i   R(   i    i   (   R*   Rm   R   t   Raise(   RG   Rh   t   expr3t   expr2t   expr1(    (    s*   /usr/lib/python2.7/compiler/transformer.pyt
   raise_stmt  s    c         C   s)   t  |  d k s t  |  j | d  S(   Ni   i    (   R*   Rn   Rm   (   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   import_stmt  s    c         C   s%   t  |  j | d  d | d d S(   Ni   R(   i    i   (   t   Importt   com_dotted_as_names(   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   import_name  s    c         C   s4  | d d d k s t   d } x" | | d d k rD | d 7} q# W| d } | | d t j k r |  j | |  } | d 7} n d } | | d d k s t   | | d d t j k r t | d
 g | d | d d	 S| | d | | d d t j k } t | |  j	 |  | d | d d	 Sd  S(   Ni    i   t   fromt   .RU   t   importR    R(   i   (   R    N(
   Rn   R0   Rt   t   com_dotted_nameR5   t   STARt   FromR   R8   t   com_import_as_names(   RG   Rh   t   idxt   levelt   fromnameR_   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   import_from  s     
'c         C   sV   g  } x5 t  d t |  d  D] } | j | | d  q Wt | d | d d S(   Ni   i   R(   i    (   R   R*   R   t   Global(   RG   Rh   R   Rj   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   global_stmt  s    c         C   s   |  j  | d  } t |  d k ri |  j  | d  } t |  d k r` |  j  | d  } qs d  } n
 d  } } t | | | d | d d S(	   Ni   i   i   i   i   R(   i    i   (   Rm   R*   R   t   Exec(   RG   Rh   R   R   R   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt	   exec_stmt  s    	
c         C   s\   |  j  | d  } t |  d k r; |  j  | d  } n d  } t | | d | d d S(   Ni   i   i   R(   i    i   (   Rm   R*   R   t   Assert(   RG   Rh   R   R   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   assert_stmt  s
    c         C   s   g  } xe t  d t |  d d  D]G } |  j | | d  } |  j | | d  } | j | | f  q# Wt |  d d k r |  j | d  } n d  } t | | d | d d S(   Ni    i   i   i   iR(   i   (   R   R*   Rm   R   R   t   If(   RG   Rh   t   testsRj   t   testNodet	   suiteNodet   elseNode(    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   if_stmt  s    #c         C   sr   |  j  | d  } |  j  | d  } t |  d k rN |  j  | d  } n d  } t | | | d | d d S(   Ni   i   i   i   R(   i    i   (   Rm   R*   R   t   While(   RG   Rh   R   t   bodyNodeR   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt
   while_stmt	  s    c         C   s   |  j  | d t  } |  j | d  } |  j | d  } t |  d k rd |  j | d  } n d  } t | | | | d | d d S(   Ni   i   i   i   R(   i    i   (   R   R   Rm   R*   R   t   For(   RG   Rh   t
   assignNodet   listNodeR   R   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   for_stmt  s    c         C   s   |  j  |  S(   N(   t   com_try_except_finally(   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   try_stmt%  s    c         C   s   |  j  |  S(   N(   t   com_with(   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt	   with_stmt(  s    c         C   s   |  j  |  S(   N(   t   com_with_var(   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   with_var+  s    c         C   sj   t  |  d k r# |  j | d  Sg  } x4 | D], } | d t j k r0 |  j | |  q0 q0 Wt |  S(   Ni   i    (   R*   Ra   R0   R   Re   Rg   (   RG   Rh   Rk   R_   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyRR   .  s    c         C   s   |  j  t |  S(   N(   t
   com_binaryt   Tuple(   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   testlist>  s    c         C   sz   | d d t  j k s t  t |  d k rm | d d t  j k rm |  j | d  } |  j | | d  S|  j |  S(   Ni    i   i   (   R0   t   testRn   R*   t   comp_forRm   t   com_generator_expressionR   (   RG   Rh   R   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   testlist_compH  s
    )c         C   s   t  |  d k r: | d d t j k r: |  j | d  S|  j | d  } t  |  d k r t  |  d k sw t  | d d d k s t  | d d d k s t  |  j | d  } |  j | d  } t | | | d	 | d d S| S(
   Ni   i    i   t   ifi   t   elsei   i   R(   (   R*   R0   R\   Rm   Rn   t   IfExp(   RG   Rh   t   thenR   t   else_(    (    s*   /usr/lib/python2.7/compiler/transformer.pyR   P  s    )c         C   sJ   t  |  d k r: | d d t j k r: |  j | d  S|  j t |  S(   Ni   i    (   R*   R0   R\   R   t   Or(   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   or_test^  s    )c         C   s   |  j  t |  S(   N(   R   t   And(   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   and_teste  s    c         C   sA   |  j  | d  } t |  d k r= t | d | d d S| S(   Nii   R(   i    (   Rm   R*   t   Not(   RG   Rh   t   result(    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   not_testi  s    c   	      C   s	  |  j  | d  } t |  d k r) | Sg  } x t d t |  d  D] } | | d } | d } | d t j k r | d } t |  d k r | d k r d } q d } q n t | d } | d d } | j | |  j  | |  f  qH Wt | | d | S(	   Ni    i   i   i   t   nots   not ins   is notR(   (   Rm   R*   R   R5   RD   t
   _cmp_typesR   t   Compare(	   RG   Rh   R_   t   resultsRj   t   nlR`   R   R(   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt
   comparisonp  s"    

	$c         C   s   |  j  t |  S(   N(   R   t   Bitor(   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyRT     s    c         C   s   |  j  t |  S(   N(   R   t   Bitxor(   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   xor_expr  s    c         C   s   |  j  t |  S(   N(   R   t   Bitand(   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   and_expr  s    c         C   s   |  j  | d  } x t d t |  d  D] } |  j  | |  } | | d d t j k r t | | g d | d d } q, | | d d t j k r t | | g d | d d } q, t d | | d d  q, W| S(   Ni    i   i   R(   s   unexpected token: %s(	   Rm   R   R*   R5   t	   LEFTSHIFTt	   LeftShiftR   t
   RightShiftR   (   RG   Rh   R_   Rj   t   right(    (    s*   /usr/lib/python2.7/compiler/transformer.pyt
   shift_expr  s    ##c         C   s   |  j  | d  } x t d t |  d  D] } |  j  | |  } | | d d t j k r t | | g d | d d } q, | | d d t j k r t | | g d | d d } q, t d | | d d  q, W| S(   Ni    i   i   R(   s   unexpected token: %s(	   Rm   R   R*   R5   t   PLUSt   Addt   MINUSt   SubR   (   RG   Rh   R_   Rj   R  (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt
   arith_expr  s    ##c         C   s  |  j  | d  } x t d t |  d  D] } |  j  | |  } | | d d } | t j k r{ t | | g  } ny | t j k r t | | g  } nU | t j k r t	 | | g  } n1 | t j
 k r t | | g  } n t d |  | d d | _ q, W| S(   Ni    i   i   s   unexpected token: %s(   Rm   R   R*   R5   R   t   Mult   SLASHt   Divt   PERCENTt   Modt   DOUBLESLASHt   FloorDivR   R(   (   RG   Rh   R_   Rj   R  t   t(    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   term  s    c         C   s   | d } | d } |  j  | d  | d d  } | t j k rX t | d | d S| t j k r{ t | d | d S| t j k r t | d | d } n  | S(   Ni    ii   R(   i   (   R   R5   R  t   UnaryAddR  t   UnarySubt   TILDEt   Invert(   RG   Rh   t   eltR  R_   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   factor  s    

!c         C   s   |  j  | d  } xw t d t |   D]` } | | } | d t j k rw t | |  j  | | d  g d | d S|  j | |  } q) W| S(   Ni    i   R(   i   (   Rm   R   R*   R5   t
   DOUBLESTARt   Powert   com_apply_trailer(   RG   Rh   R_   Rj   R  (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   power  s    
 c         C   s   |  j  | d d |  S(   Ni    (   RE   (   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   atom  s    c         C   s@   | d d t  j k r/ t d d | d d S|  j | d  S(   Ni   i    R(   i   (    (   R5   R   R   Rm   (   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR7     s    c         C   s@   | d d t  j k r/ t d d | d d S|  j | d  S(   Ni   i    R(   i   (    (   R5   t   RSQBt   Listt   com_list_constructor(   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR9     s    c         C   s@   | d d t  j k r/ t d d | d d S|  j | d  S(   Ni   i    R(   i   (    (   R5   t   RBRACEt   Dictt   com_dictorsetmaker(   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR;     s    c         C   s   t  |  j | d   S(   Ni   (   t	   BackquoteRm   (   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR=     s    c         C   s,   t  | d d  } t | d | d d S(   Ni    i   R(   i   (   R   R   (   RG   Rh   t   k(    (    s*   /usr/lib/python2.7/compiler/transformer.pyR?     s    c         C   s[   |  j  rM |  j  d k r6 t | d  j |  j   } n  t d |  j  | f  St |  Sd  S(   Ns   utf-8s
   iso-8859-1s   # coding: %s
%s(   s   utf-8s
   iso-8859-1(   RF   t   unicodet   encodeR   (   RG   t   lit(    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   decode_literal  s
    	c         C   sF   d } x% | D] } | |  j  | d  7} q Wt | d | d d S(   NRU   i   R(   i    i   (   R)  R   (   RG   Rh   R%  R_   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyRA     s    c         C   s    t  | d d d | d d S(   Ni    i   R(   i   (   t   Name(   RG   Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyRC     s    c         C   s   |  j  | d S(   Ni    (   R/   (   RG   R_   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR     s    c         C   s   |  j  | d | d  S(   Ni    i   (   R/   (   RG   R_   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyRm      s    c         G   s   t  t d    S(   N(   R   R   R   (   RG   R,   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR4   '  s    c         C   s  g  } g  } d } d } x| t  |  k  r| | } | d t j k s] | d t j k r+| d t j k r | | d } | d t j k r | j | d  | t B} | d } q n  | t  |  k  r'| | d } | t j k r | | d } n t d |  | j | d  | t B} n  Pn  | j |  j	 |   | d } | t  |  k  r| | d t j
 k r| j |  j | | d   | d } n t  |  rt d  n  | d } q W| | | f S(   Ni    i   i   s   unexpected token: %si   s-   non-default argument follows default argument(   R*   R5   R   R  RD   R   R   R   R   t	   com_fpdefR   Rm   t   SyntaxError(   RG   Rh   R   R   R   Rj   R_   R  (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR~   -  s<    
&

)c         C   s4   | d d t  j k r( |  j | d  S| d d S(   Ni   i    i   (   R5   R8   t
   com_fplist(   RG   R_   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR+  _  s    c         C   sp   t  |  d k r# |  j | d  Sg  } x: t d t  |  d  D]  } | j |  j | |   qB Wt |  S(   Ni   i   (   R*   R+  R   R   R    (   RG   R_   RL   Rj   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR-  e  s    c         C   s\   d } xK | D]C } t  |  t  d  k r | d d k r | | d d } q q W| d  S(   NRU   i    i   R   i(    (   R   (   RG   R_   RI   R`   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR   n  s
    (c         C   s   | d t  j k s t  | d } |  j | d d  } t |  d k rV | d  f S| d d d k sp t  | d d t j k s t  | | d d f S(   Ni    i   t   asi   (   R0   t   dotted_as_nameRn   R   R*   R   R5   RD   (   RG   R_   t   dot(    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   com_dotted_as_namev  s    

c         C   sz   | d t  j k s t  | d } |  j | d  g } x: t d t |  d  D]  } | j |  j | |   qR W| S(   Ni    i   i   (   R0   t   dotted_as_namesRn   R1  R   R*   R   (   RG   R_   R   Rj   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR     s    
c         C   s   | d t  j k s t  | d } | d d t j k s@ t  t |  d k rd | d d d  f S| d d d k s t |   | d d t j k s t  | d d | d d f S(   Ni    i   R.  i   (   R0   t   import_as_nameRn   R5   RD   R*   R   (   RG   R_   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   com_import_as_name  s    
 c         C   sz   | d t  j k s t  | d } |  j | d  g } x: t d t |  d  D]  } | j |  j | |   qR W| S(   Ni    i   i   (   R0   t   import_as_namesRn   R4  R   R*   R   (   RG   R_   R   Rj   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR     s    
c         C   sG   g  } x: t  d t |  d  D]  } | j |  j | |   q W| S(   Ni   i   (   R   R*   R   Rm   (   RG   R_   R   Rj   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR     s    c   
      C   s  | d d t  j k rL t |  j | d  |  j | d  d | d d Sg  } d  } d  } x4t d t |  d  D]} | | } | d t j k r't |  d k r |  j | d  } t |  d k r |  j	 | d t
  } q d  } n
 d  } } | j | | |  j | | d  f  n  | d t  j k rw | d d k rd|  j | | d  } q| d d	 k r|  j | | d  } qqw qw Wt |  j | d  | | d | d d }	 | rt |	 | d | d d S|	 Sd  S(
   Ni   i    i   i   R(   i   i   R   t   finally(   R5   RD   t
   TryFinallyRm   R   R   R*   R0   t   except_clauseR   R   R   t	   TryExcept(
   RG   Rh   t   clausesR   t   finallyNodeRj   R_   R   R   t
   try_except(    (    s*   /usr/lib/python2.7/compiler/transformer.pyR     s6    
	
*!c         C   su   |  j  | d  } x[ t t |  d d d  D]= } |  j | | | | d d  } | d k rg | S| } q0 Wd  S(   Nii   i    ii   i   (   Rm   R   R*   t   com_with_item(   RG   Rh   t   bodyRj   t   ret(    (    s*   /usr/lib/python2.7/compiler/transformer.pyR     s    #!c         C   sZ   t  |  d k r+ |  j | d t  } n d  } |  j | d  } t | | | d | S(   Ni   i   i   R(   (   R*   R   R   R   Rm   t   With(   RG   Rh   R>  R(   t   varRT   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR=    s
    c         C   s!   | d t  j k s t  | d S(   Ni    i   (   R0   t	   augassignRn   (   RG   R_   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR     s    c         C   sE   |  j  |  } | j t t t t f k r. | St d | j j  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(   Rm   t	   __class__R*  t   Slicet	   SubscriptRp   R,  R   (   RG   R_   R"   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR     s    c         C   sU  xN| d } | t  j t  j t  j t  j f k r` t |  d k rS |  j | |  S| d } q | t k r t |  d k r t d  n  | d } q | t  j	 k rq| d d t  j
 k r t d  n  t |  d k rd|  j | d  } x\ t d t |  d  D]A } | | } | d t j k r7t d  n  |  j | |  } qW|  j | | d |  S| d } q | t  j
 k r@| d d } | t j k r| d } | d t j k r=t d  q=qM| t j k r| d } | d t j k rt d  n  |  j | |  S| t j k r4|  j | d |  St d  q t d	 |  q Wd  S(
   Ni    i   i   s   can't assign to operatoris   can't assign to ()s   can't assign to []s   can't assign to literals   bad assignment (%s)(   R0   t   exprlistR   t   testlist_safeR   R*   t   com_assign_tuplet   _assign_typesR,  R  R  Rm   R   R5   R  R  t   com_assign_trailerR8   R   R:   R  t   com_assign_listRD   t   com_assign_name(   RG   R_   t	   assigningR  t   primaryRj   t   ch(    (    s*   /usr/lib/python2.7/compiler/transformer.pyR     sL    
$ 


c         C   s\   g  } x= t  d t |  d  D]# } | j |  j | | |   q Wt | d t |  S(   Ni   i   R(   (   R   R*   R   R   t   AssTupleR%   (   RG   R_   RM  t   assignsRj   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyRH    s    !c         C   s   g  } x t  d t |  d  D] } | d t |  k  r | | d d t j k rb t d  n  | | d d t j k s t | | d   n  | j |  j	 | | |   q Wt
 | d t |  S(   Ni   i   i    s"   can't assign to list comprehensionR(   (   R   R*   R0   t   list_forR,  R5   R   Rn   R   R   t   AssListR%   (   RG   R_   RM  RQ  Rj   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyRK    s    2!c         C   s   t  | d | d | d S(   Ni   R(   i   (   t   AssName(   RG   R_   RM  (    (    s*   /usr/lib/python2.7/compiler/transformer.pyRL  %  s    c         C   s   | d d } | t  j k r4 |  j | | d |  S| t  j k rZ |  j | | d |  S| t  j k ru t d  n  t d |  d  S(   Ni   i    i   s   can't assign to function calls   unknown trailer type: %s(   R5   Ro   t   com_assign_attrR:   t   com_subscriptlistR8   R,  (   RG   RN  R_   RM  R  (    (    s*   /usr/lib/python2.7/compiler/transformer.pyRJ  (  s    c         C   s   t  | | d | d | d S(   Ni   R(   i(   t   AssAttr(   RG   RN  R_   RM  (    (    s*   /usr/lib/python2.7/compiler/transformer.pyRU  2  s    c         C   s   t  |  } | d k r9 | d } |  j |  | d  Sg  } xD t d | d  D]0 } | | } | j |  j |  | d   qR W| | d t |  S(   s=   Compile 'NODE (OP NODE)*' into (type, [ node1, ..., nodeN ]).i   i    i   R(   (   R*   R   R   R   R%   (   RG   t   constructorRh   R"   R`   R2   Rj   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR   5  s    

$c         C   sK   |  j  |  | d  } | d  k	 s+ t  t | t  r> | St | g  S(   Ni   (   R   R   Rn   R$   Rg   (   RG   R_   R   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyRa   A  s
    c         C   s^   |  j  |  | d  } | d  k	 s+ t  t | t  rM | j | j  n | j |  d  S(   Ni   (   R   R   Rn   R$   Rg   t   extendR!   R   (   RG   Rk   R_   R   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyRe   H  s
    c         C   s   g  } x t  d t |   D] } | | d t j k rm t | |  d k sU t  |  j | d | |  S| | d t j k r q n  | j |  j	 | |   q Wt
 | d | d j S(   Ni   i    R(   (   R   R*   R0   RR  Rn   t   com_list_comprehensionR5   R   R   Rm   R  R(   (   RG   Rh   t   valuesRj   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR   P  s    c         C   s   |  j  | d  | d  S(   NRL   (   t   com_comprehensionR   (   RG   RT   R_   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyRZ  ]  s    c         C   s  | d d } g  } x| r| d d } | d k r |  j  | d t  } |  j | d  }	 t | |	 g   }
 | d d |
 _ | j |
  t |  d k r d  } q| d k r |  j | d  } q|  j	 | d  } q | d k r|  j | d  } t
 | d | d d } |
 j j |  t |  d	 k rGd  } q| d k ri|  j | d	  } q|  j	 | d	  } q t d
 | | f  q W| d k rt | | d | S| d k rt | | d | S| d k rt | | | d | St d t |    d  S(   Ni   i   t   fori   i   RL   R   R(   i   s'   unexpected comprehension element: %s %dt   sett   dicts   unexpected comprehension type: (   R   R   Rm   t   ListCompForR(   R   R*   R   t   com_list_itert   com_comp_itert
   ListCompIft   ifsR,  t   ListCompt   SetCompt   DictCompR   t   repr(   RG   R   R   R_   R   R(   t   forsR  R   t   compNodet   newforR   t   newif(    (    s*   /usr/lib/python2.7/compiler/transformer.pyR\  `  sD    
			c         C   s!   | d t  j k s t  | d S(   Ni    i   (   R0   t	   list_iterRn   (   RG   R_   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyRa    s    c         C   s!   | d t  j k s t  | d S(   Ni    i   (   R0   t	   comp_iterRn   (   RG   R_   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyRb    s    c         C   su  | d d } g  } x8| rN| d d } | d k r |  j  | d t  } |  j | d  } t | | g  d | d d } | j |  t |  d k r d  } qK|  j | d  } q | d k r8|  j | d  }	 t |	 d | d d }
 | j	 j |
  t |  d k r"d  } qK|  j | d  } q t
 d	 | | f  q Wt | d
 _ t t | |  d | S(   Ni   i   R]  i   R(   i   R   i   s.   unexpected generator expression element: %s %di    (   R   R   Rm   t
   GenExprForR   R*   R   Rb  t	   GenExprIfRd  R,  t   Truet
   is_outmostt   GenExprt   GenExprInner(   RG   RT   R_   R(   Ri  R  R   t   genNodeRk  R   Rl  (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR     s2    			c         C   s  | d t  j k s t  | d } t |  d k sL | d d t j k r g  } x: t d t |  d  D]  } | j |  j | |   qk Wt	 | d | d j
 S| d d t  j k r |  j | d  } |  j | d  | d d  St |  d k rp| d d t  j k rp| d d t j k s0t  |  j | d  } |  j | d  } |  j | | | d d  Sg  } xQ t d t |  d  D]7 } | j |  j | |  |  j | | d  f  qWt | d | d d j
 Sd  S(	   Ni    i   i   R(   R^  i   R_  i   (   R0   t   dictorsetmakerRn   R*   R5   R   R   R   Rm   t   SetR(   R   R\  R   R   R"  (   RG   Rh   R2   Rj   RT   t   keyRH   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR#    s(    
))c         C   s   | d d } | t  j k r1 |  j | | d  S| t  j k rT |  j | | d  S| t  j k rz |  j | | d t  St d |  d  S(   Ni   i    i   s   unknown node type: %s(	   R5   R8   Ru   Ro   t   com_select_memberR:   RV  R   R,  (   RG   t   primaryNodeRh   R  (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR    s    c         C   s:   | d t  j k r t d  n  t | | d d | d S(   Ni    s   member must be a namei   R(   i   (   R5   RD   R,  Rp   (   RG   Rz  Rh   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyRy    s    c         C   s  | d t  j k r, t | g  d t |  Sg  } d } d  } } t |  } d } x@| | k  r| | }	 |	 d t  j k r | d  k	 r t d  n  |  j | | d  } | d } qW nR |	 d t  j	 k r| d  k	 r t d  n  |  j | | d  } | d } qW n  |  j
 |	 | |  \ } }
 | d k r|t |
 t  r|t |	  d k r||	 d d t j k r|t d  n  | j |
  | d } qW Wt | | | | d t |  S(	   Ni    R(   i   s$   already have the varargs indentifieri   s#   already have the kwargs indentifieri   s&   generator expression needs parenthesis(   R5   R   t   CallFuncR%   R   R*   R   R,  Rm   R  t   com_argumentR$   Rs  R0   R   R   (   RG   Rz  Rh   R,   t   kwt	   star_nodet
   dstar_nodet   len_nodelistRj   R_   R   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyRu     s:    



)c         C   sD  t  |  d k rV | d d t j k rV |  j | d  } d |  j | | d  f St  |  d k r | rz t d  n  | r t d  n  d |  j | d  f S|  j | d  } | d } x3 t  |  d k r | d t j k r | d } q W| d t j k r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*   R0   R   Rm   R   R,  R5   RD   t   Keyword(   RG   Rh   R}  R~  R   R   R`   R_   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR|    s"    )
(c         C   s   t  |  d k r | d } | d d t j k s\ t  |  d k r | d d t j k r | d d t j k r |  j | | |  Sn  g  } x: t d t  |  d  D]  } | j |  j | |   q Wt	 | | | d t
 |  S(   Ni   i   i    iR(   (   R*   R5   R   R0   R   t	   com_sliceR   R   t   com_subscriptRE  R%   (   RG   RN  Rh   RM  t   subt
   subscriptsRj   (    (    s*   /usr/lib/python2.7/compiler/transformer.pyRV  "  s    
)c         C   s|   | d } | d } | t  j k rA | d d t  j k rA t   S| t  j k sb t |  d k ro |  j |  S|  j |  S(   Ni   i    i   (   R5   Ro   t   EllipsisR   R*   t   com_sliceobjRm   (   RG   R_   RO  R  (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR  6  s    

&!c         C   s>  g  } | d d t  j k r9 | j t d    d } n  | j |  j | d   d } | t |  k  r | | d t j k r | j |  j | |   | d } n | j t d    xi t	 | t |   D]R } | | } t |  d k r
| j t d    q | j |  j | d   q Wt
 | d t |  S(   Ni   i    i   i   R(   (   R5   R   R   R   R   Rm   R*   R0   R   R   t   SliceobjR%   (   RG   R_   R2   Rj   t   jRO  (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR  @  s     
	)
c         C   s   d  } } t |  d k r_ | d d t j k rI |  j | d  } q |  j | d  } n; t |  d k r |  j | d  } |  j | d  } n  t | | | | d t |  S(   Ni   i   i    i   i   R(   (   R   R*   R5   R   Rm   RD  R%   (   RG   RN  R_   RM  t   lowert   upper(    (    s*   /usr/lib/python2.7/compiler/transformer.pyR  d  s    
c         C   s  | d  k r# | d } | d } n  | t j k r t |  d k rU |  j | d  Sx. | D]& } | d t j k r\ |  j |  Sq\ Wd  S| t j k r x. | D]& } | d t j k r |  j |  Sq Wd  S| t j k r'| d d t j	 k r#d } x" | D] } | t
 | d  } qW| Sd  S| t j k sT| t j k sT| t j k re|  j | d  S| t k rt |  d k r|  j | d  Sd  S(   Ni    i   RU   (   R   R0   RR   R*   Rc   R   RZ   R  R5   RB   R   R   t
   small_stmtt
   _doc_nodes(   RG   R_   R`   R  t   sR  (    (    s*   /usr/lib/python2.7/compiler/transformer.pyRc   r  s8    
N(   R   R   t   __doc__RJ   RQ   R   R   RW   RO   RY   RZ   R[   Rr   Rw   Rz   R|   R]   R\   t   old_lambdefR^   R   R  t	   flow_stmtt   compound_stmtR   R   R}   R   R   Rt   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   RR   R   RG  t	   testlist1RF  R   R   R   t   old_testR   R   R   RT   R   R   R  R	  R  R  R  R  R7   R9   R;   R=   R?   R)  RA   RC   R   Rm   R4   R~   R+  R-  R   R1  R   R4  R   R   R   R   R=  R   R   R   RH  RK  RL  RJ  RU  R   Ra   Re   R   RZ  R\  Ra  Rb  R   R#  R  Ry  Ru   R|  RV  R  R  R  R   Rc   (    (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR   ^   s   							
							!																																												!																					2					
		
			)						
	,		
		
							1			"				'			
	$	t   <t   >s   ==s   <=s   >=s   !=R   R   c         C   s~   g  } xq |  D]i } t  | t t f  rD | j t j | |   q t  | t  rc | j |  q | j t |   q W| S(   N(   R$   t   intt   longR   t   _namest   getR+   t
   debug_tree(   RP   R"   R  (    (    s*   /usr/lib/python2.7/compiler/transformer.pyR    s    (S   R  t   compiler.astRM   R0   R5   t   StandardErrorR   t   compiler.constsR   R   R   R   R   R   R   R   R%   R.   R   R   R   RG  R   R   R   R   R   RT   R   R   R  R	  R  R  R  R  t   LESSt   GREATERt   EQEQUALR   t	   LESSEQUALt   GREATEREQUALt   NOTEQUALR   R]   R^   R   R  R  R   R  R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   RR   RF  R  t   _legal_node_typesR   R   R   R   RI  R  R1   R2   R%  t   vt   tok_nameR  (    (    (    s*   /usr/lib/python2.7/compiler/transformer.pyt   <module>	   s   
	
			
	     9





