
nR\V              $   @   s^  d  d l  m Z d d l Z d  d l  m Z d  d l m Z d  d l Ti d d 6d d	 6d
 d 6Z i d d 6d d	 6d
 d 6d d 6Z i d d 6d d	 6d
 d 6d d 6Z	 Gd d   d e
  Z e j Z e j Z e j Z e j Z e j Z e j 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' Z* d( Z+ d) Z, d* Z- d Z. d+ Z/ d, Z0 d- Z1 Gd. d/   d/ e j2  Z3 d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d; d< d= d> d? d@ dA dB dC dD dE dF dG dH dI dJ dK dL dM dN dO dP dQ dR dS g$ Z4 dT dU   Z5 e j6 e5    Z7 d S)V   )antlr    N)Utils)upack1)*R    V@   ADc               @   s   e  Z d  Z d Z d S)FormulaParseExceptionzP
   An exception indicating that a Formula could not be successfully parsed.
   N)__name__
__module____qualname____doc__ r   r   ;/var/www/dbchiro/venv/build/xlwt/xlwt/ExcelFormulaParser.pyr      s   r                  	   
                                                                  !   "   #   c               @   s   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
   Z d d   Z d d   Z	 d d   Z
 d d   Z d d   Z d d   Z d d   Z d S)Parserc             O   s>   t  j j |  | |  t |  _ d |  _ g  |  _ g  |  _ d  S)N    )r   	LLkParser__init___tokenNamesZ
tokenNamesrpnsheet_referencesxcall_references)selfargskwargsr   r   r   r6   E   s
    			zParser.__init__c             C   s   |  j  d  d  S)Nr	   )expr)r;   r   r   r   formulaN   s    zParser.formulac             C   s  |  j  |  x|  j d  t k r|  j d  t k r|  j d  } | r | t g k r |  j t  t j d t  } n4| r | t g k r |  j t  t j d t	  } n | r | t
 g k r |  j t
  t j d t  } n | r%| t g k r%|  j t  t j d t  } n | r\| t g k r\|  j t  t j d t  } nX | r| t g k r|  j t  t j d t  } n! t j |  j d  |  j     |  j  |  |  j | 7_ q Pq Wd  S)Nr   B)
prec0_exprLAEQLEmatchstructpackZptgEQNEZptgNEGTZptgGTLTZptgLTGEZptgGEZptgLEr   NoViableAltExceptiongetFilenamer8   )r;   arg_typela1opr   r   r   r>   S   s4    *!zParser.exprc             C   sl   |  j  |  xX |  j d  t k rc |  j t  t j d t  } |  j  |  |  j | 7_ q Pq Wd  S)Nr   r@   )
prec1_exprrB   CONCATrE   rF   rG   Z	ptgConcatr8   )r;   rN   rP   r   r   r   rA      s    zParser.prec0_exprc             C   s   |  j  |  x |  j d  t k s: |  j d  t k r |  j d  } | r | t g k r |  j t  t j d t  } nX | r | t g k r |  j t  t j d t  } n! t	 j
 |  j d  |  j     |  j  |  |  j | 7_ q Pq Wd  S)Nr   r@   )
prec2_exprrB   ADDSUBrE   rF   rG   ZptgAddZptgSubr   rL   rJ   rM   r8   )r;   rN   rO   rP   r   r   r   rQ      s    *!zParser.prec1_exprc             C   s   |  j  |  x |  j d  t k s: |  j d  t k r |  j d  } | r | t g k r |  j t  t j d t  } nX | r | t g k r |  j t  t j d t  } n! t	 j
 |  j d  |  j     |  j  |  |  j | 7_ q Pq Wd  S)Nr   r@   )
prec3_exprrB   MULDIVrE   rF   rG   ZptgMulZptgDivr   rL   rJ   rM   r8   )r;   rN   rO   rP   r   r   r   rS      s    *!zParser.prec2_exprc             C   sl   |  j  |  xX |  j d  t k rc |  j t  t j d t  } |  j  |  |  j | 7_ q Pq Wd  S)Nr   r@   )
prec4_exprrB   POWERrE   rF   rG   ZptgPowerr8   )r;   rN   rP   r   r   r   rV      s    zParser.prec3_exprc             C   s   |  j  |  |  j d  } | r\ | t g k r\ |  j t  |  j t j d t  7_ nf | r | t t	 t
 t t t t t t t t t t t t t g k r n! t j |  j d  |  j     d  S)Nr   r@   )
prec5_exprrB   PERCENTrE   r8   rF   rG   Z
ptgPercentEOFrC   rH   rI   rJ   rK   rD   rT   rU   rW   rX   rZ   RPCOMMA	SEMICOLONrR   r   rL   rM   )r;   rN   rO   r   r   r   rY      s    BzParser.prec4_exprc             C   s   |  j  d  } | rR | t t t t t t t t t	 t
 t g k rR |  j |  nn | r | t g k r |  j t  |  j |  |  j t j d t  7_ n! t j |  j d  |  j     d  S)Nr   r@   )rB   
TRUE_CONSTFALSE_CONST	STR_CONST	NUM_CONST	INT_CONSTFUNC_IFFUNC_CHOOSENAME	QUOTENAMELPREF2DprimaryrU   rE   r8   rF   rG   Z	ptgUminusr   rL   rJ   rM   )r;   rN   rO   r   r   r   r[      s    3zParser.prec5_exprc       2      C   s[  d  } d  } d  } d  } d  } d  } d  } d  }	 d  }
 d  } |  j  d  } | r | t g k r |  j t  |  j t j d t d  7_ n| r | t g k r |  j t  |  j t j d t d  7_ n| rC| t g k rC|  j	 d  } |  j t  |  j t j d t
  t | j d d'  j d d   7_ n| r| t g k r|  j	 d  } |  j t  |  j t j d t t | j   7_ n| r7| t g k r7|  j t  |  j t  |  j d  |  j  d  } | r| t g k r|  j t  nF | r3| t g k r3|  j t  n! t j |  j	 d  |  j     |  j t j d	 t d
 d  7_ t |  j  d
 } |  j |  |  j  d  } | r| t g k r|  j t  nF | r| t g k r|  j t  n! t j |  j	 d  |  j     |  j t j d	 t d d  7_ t |  j  d
 } |  j d  |  t j d | |  |  j | d
 d   |  _ |  j |  |  j t  |  j t j d	 t d d  7_ |  j t j d	 t d d  7_ t |  j  } |  j d  |  t j d | | d
 d  |  j | d
 d   |  _ n | rq| t g k rq|  j t  d } g  } |  j t  |  j d  t |  j  } t |  j  g } x|  j  d  t k s|  j  d  t k r8|  j  d  } | r| t g k r|  j t  nF | r&| t g k r&|  j t  n! t j |  j	 d  |  j     t |  j  } |  j  d  } | r| t t t t t t t t  t! t" t t# g k r|  j |  nZ | r| t t t g k r|  j t j d t$  7_ n! t j |  j	 d  |  j     | j% |  j | d    | j% t |  j   qPqW|  j t  |  j d  |  |  _ t |  } d d   | D } d g | } d | d( <x< t& | d d d)  D]$ } | | | | d | | d <qWd
 | d
 g } x1 t& |  D]# } | j% | d* | | d  qWd
 | d } xw t& |  D]i } xV t& | | | | d  D]9 } |  j | } | d | d | d
 | f |  j | <qWW| d 7} q5Wg  } | j% t j d	 t d |   | j% t j d | d |   xH t& |  D]: } | j% | |  | j% t j d	 t d | |   qW| j% t j d	 t' | d d   |  j d j( |  7_ n| r| t g k r|  j t  |  j |  |  j t  |  j t j d t)  7_ n|  j  d  t k rw	t* j+ |  j  d
   rw	|  j	 d  } |  j t  t, | j  } | d k rP	|  j t j d t- |  7_ qW|  j t j d t t |   7_ n|  j  d  t# k r

t* j+ |  j  d
   r

|  j	 d  } |  j t#  t. j/ | j  \ } } t0 t1 | }  |  j t j d |  | |  7_ nM|  j  d  t# k r
|  j  d
  t2 k r
|  j	 d  } |  j t#  |  j t2  |  j	 d  } |  j t#  t. j/ | j  \ }! }" t. j/ | j  \ }# }$ t3 t4 | }  |  j t j d |  |! |# |" |$  7_ nv|  j  d  t k s |  j  d  t  k s |  j  d  t! k r|  j  d
  t2 k sJ|  j  d
  t5 k r|  j6   }% |% }& |  j  d  } | r| t2 g k r|  j t2  |  j6   }& n9 | r| t5 g k rn! t j |  j	 d  |  j     |  j t5  |  j	 d  } |  j t#  t7 t1 | }  d }' t. j/ | j  \ }! }" t j d d |! |"  }' |  j  d  } | r| t2 g k r|  j t2  |  j	 d  }	 |  j t#  t8 t4 | }  t. j/ |	 j  \ }# }$ t j d d |! |# |" |$  }' ni | r| t9 t: t; t< t	 t= t> t? t" t@ tA tB tC t t t tD g k rn! t j |  j	 d  |  j     |  j t j d |   7_ |  j j% |% |& t |  j  f  |  j |' 7_ n|  j  d  t  k rt* j+ |  j  d
   r|  j	 d  }
 |  j t   tE d |
 jF   nj|  j  d  t  k r6|  j  d
  t k r6|  j	 d  } |  j t   | j jG   }( |( tH k rvtH |( \ }) }* }+ }, }- tI |-  }. n tE d | j   |) d k  }/ |/ r|  jJ j% |( t |  j  d f  |  j t j d tK d  d! d  7_ n  |  j t  |  jL |. |* |+  }0 |  j t  |0 |+ k s,|0 |* k  rHtE d" |0 | j f   n  |/ rt tM |, }1 |  j t j d# |1 |0 d d$  7_ qW|* |+ k rtN tM |, }1 |  j t j d |1 |)  7_ qW|0 d k r| j jG   d% k r|  j t j d	 t d& d  7_ qWt tM |, }1 |  j t j d# |1 |0 |)  7_ n! t j |  j	 d  |  j     d  S)+Nr   Z2Br   r@   z"""z<Bdr	   z<BBH   r   z<H   r   c             S   s   g  |  ] } t  |   q Sr   )len).0chunkr   r   r   
<listcomp>~  s   	 z"Parser.primary.<locals>.<listcomp>r   r   z<%dHd    i  z<BHz<B2Hz<B4Hz<3Hz<5Hz<Bz*[formula] found unexpected NAME token (%r)z[formula] unknown function (%s)z<BHHHiޭ  i  z%d parameters for function: %sz<2BH   ZSUMr    rw   rw   rw   )OrB   ra   rE   r8   rF   rG   ZptgBoolrb   rc   rJ   ZptgStrr   textreplacerd   ZptgNumfloatrf   rj   r>   r`   r_   r   rL   rM   ZptgAttrrp   r^   ZptgFuncVarRrg   r9   re   rh   ri   rU   rk   
ptgMissArgappendxrangeZptgFuncVarVjoinZptgParen_tokenSet_0memberintZptgIntr   Zcell_to_packed_rowcolZptgRefR_RVAdeltaRefCOLONZptgAreaR_RVAdeltaAreaBANGsheetZ	ptgRef3dRZ
ptgArea3dRr]   rC   rH   rI   rK   rD   rT   rW   rX   rZ   r\   rR   	ExceptionZtxtupperZall_funcs_by_namelistr:   Z	ptgNameXR	expr_list	_RVAdeltaZptgFuncR)2r;   rN   Zstr_tokZint_tokZnum_tokZ	ref2d_tokZ
ref2d1_tokZ
ref2d2_tokZref3d_ref2dZref3d_ref2d2Zname_tokZfunc_tokrO   Zpos0pos1pos2Z
rpn_chunksZ	rpn_startZref_markersmarkZncZ	chunklensZskiplensZicZjump_posZchunk_shiftrefxrefZ
choose_rpnZ	int_valuercZptgZr1c1Zr2c2Zsheet1Zsheet2Z	rpn_ref2dZ	func_tokuopcodemin_argcmax_argcZ	func_typeZarg_type_strarg_type_listZxcall	arg_countZfunc_ptgr   r   r   rl     s   !!A*!!!!?!!J*!6!
"!"*!'#-!'-$**i!!E!"-*#(!!$$zParser.primaryc             C   s  d  } d  } d  } d  } |  j  d  } | rd | t g k rd |  j d  } |  j t  | j } n | r | t g k r |  j d  } |  j t  | j } nt | r | t g k r |  j d  } |  j t  | j d d  j d d  } n! t j	 |  j d  |  j
     | S)Nr   z'''rw   )rB   rh   rJ   rE   rx   re   ri   ry   r   rL   rM   )r;   r   Zsheet_ref_nameZsheet_ref_intZsheet_ref_quoterO   r   r   r   r     s&    "!zParser.sheetc             C   s\  d  } d } | | } |  j  d  } | r| t t t t t t t t t	 t
 t t g k r|  j |  | d 7} x|  j  d  t k s |  j  d  t k r| t |  k  r | | } n
 | d } | d k r | d } n  |  j  d  } | r| t g k r|  j t  nF | r:| t g k r:|  j t  n! t j |  j d  |  j     |  j  d  } | r| t t t t t t t t t	 t
 t t g k r|  j |  nZ | r| t t t g k r|  j t j d t  7_ n! t j |  j d  |  j     | d 7} qu Pqu Wn9 | r7| t g k r7n! t j |  j d  |  j     | S)Nr   r   +rn   r@   rw   )rB   ra   rb   rc   rd   re   rf   rg   rh   ri   rU   rj   rk   r>   r_   r`   rp   rE   r   rL   rJ   rM   r^   r8   rF   rG   r{   )r;   r   r   r   Zarg_cntrN   rO   r   r   r   r   2  s@    
6
*
!6!!zParser.expr_listN)r   r   r   r6   r?   r>   rA   rQ   rS   rV   rY   r[   rl   r   r   r   r   r   r   r3   A   s   	- r3   z<0>r]   z<2>NULL_TREE_LOOKAHEADra   rb   rc   rd   re   rf   rg   rh   ri   rC   rH   rI   rJ   rK   rD   rT   rU   rW   rX   rZ   r\   rj   r^   LBRBr   r_   r`   rk   
REF2D_R1C1r   rR   c              C   s   d d g }  |  S)Nl   `# r   r   )datar   r   r   mk_tokenSet_0  s    r   )8ru   r   rF   r   ZUnicodeUtilsr   Z
ExcelMagicr   r   r   r   r   ZSKIPZINVALID_TYPEZEOF_TYPEr]   r   ZMIN_USER_TYPEra   rb   rc   rd   re   rf   rg   rh   ri   rC   rH   rI   rJ   rK   rD   rT   rU   rW   rX   rZ   r\   rj   r^   r   r   r   r_   r`   rk   r   r   rR   r5   r3   r7   r   ZBitSetr   r   r   r   r   <module>   s   
""
						  1	