B
    0ӛYV              $   @   s  d dl mZ ddlZd dl mZ d dlmZ d dlT dddd	Zddddd
Zddddd
Z	G d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*Z0d+Z1G d,d- d-ej2Z3d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQg$Z4dRdS Z5e6e5 Z7dS )T   )antlr    N)Utils)upack1)*    @   )RVA)r	   r
   r   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   6lib/python3.7/site-packages/xlwt/ExcelFormulaParser.pyr      s   r                  	   
                                                                  !   "   #   c               @   sl   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   s0   t jj| f|| 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   |  d d S )Nr
   )expr)r;   r   r   r   formulaN   s    zParser.formulac             C   sZ  |  | xH| dtkrP| dtkrP| d}|r^|tgkr^| t tdt}n|r|tgkr| t tdt	}n|r|t
gkr| t
 tdt}n|r|tgkr| t tdt}nf|r|tgkr| t tdt}n@|r |tgkr | t tdt}nt| d|  |  | |  j|7  _qP qW d 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   sT   |  | xD| dtkrJ| t tdt}|  | |  j|7  _qP qW d S )Nr   r@   )
prec1_exprrB   CONCATrE   rF   rG   Z	ptgConcatr8   )r;   rN   rP   r   r   r   rA      s    


zParser.prec0_exprc             C   s   |  | x| dtks(| dtkr| d}|rX|tgkrX| t tdt}n<|r~|tgkr~| t tdt}nt	
| d|  |  | |  j|7  _qP qW d 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   |  | x| dtks(| dtkr| d}|rX|tgkrX| t tdt}n<|r~|tgkr~| t tdt}nt	
| d|  |  | |  j|7  _qP qW d 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   sT   |  | xD| dtkrJ| t tdt}|  | |  j|7  _qP qW d S )Nr   r@   )
prec4_exprrB   POWERrE   rF   rG   ZptgPowerr8   )r;   rN   rP   r   r   r   rV      s    


zParser.prec3_exprc             C   s   |  | | d}|rD|tgkrD| t |  jtdt7  _nD|rr|tt	t
tttttttttttttgkrrnt| d|  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    


,zParser.prec4_exprc             C   s   |  d}|r8|ttttttttt	t
tgkr8| | nP|rr|tgkrr| t | | |  jtdt7  _nt| d|  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    
"

zParser.prec5_exprc       2      C   s  d }d }d }d }d }d }d }d }	d }
d }|  d}|rf|tgkrf| t |  jtdtd7  _n"|r|tgkr| t |  jtdtd7  _n|r|tgkr| 	d}| t |  jtdt
t|jdd dd 7  _n|r8|tgkr8| 	d}| t |  jtdtt|j7  _nP|r<|tgkr<| t | t | d	 |  d}|r|tgkr| t n4|r|tgkr| t nt| 	d|  |  jtd
tdd7  _t| jd }| | |  d}|r|tgkr| t n4|r<|tgkr<| t nt| 	d|  |  jtd
tdd7  _t| jd }| jd | td||  | j|d d   | _| | | t |  jtd
tdd7  _|  jtd
tdd7  _t| j}| jd | td||d  d  | j|d d   | _	nL|r|tgkr| t d}g }| t | d	 t| j}t| jg}x6|  dtks|  dtkr|  d}|r|tgkr| t n4|r|tgkr| t nt| 	d|  t| j}|  d}|rR|tttttttt t!t"tt#gkrR| | nD|r|tttgkr|  jtdt$7  _nt| 	d|  |%| j|d   |%t| j nP qW | t | jd | | _t|}dd |D }dg| }d|d< x6t&|d ddD ]"}|| ||  d ||d < qW d| d g}x,t&|D ] }|%|d ||  d  qVW d| d }xft&|D ]Z}xJt&|| ||d  D ]0}| j| }|d |d |d | f| j|< qW |d7 }qW g }|%td
td| |%tjd|d  f|  x:t&|D ].}|%||  |%td
td||  q0W |%td
t'|d d |  jd(|7  _n|r|tgkr| t | | | t |  jtdt)7  _n|  dtkrbt*+|  drb| 	d}| t t,|j}|dkrB|  jtdt-|7  _n|  jtdtt|7  _n&|  dt#krt*+|  dr| 	d}| t# t./|j\}}t0t1|  } |  jtd| ||7  _n|  dt#krr|  dt2krr| 	d}| t# | t2 | 	d}| t# t./|j\}!}"t./|j\}#}$t3t4|  } |  jtd| |!|#|"|$7  _n|  dtks|  dt ks|  dt!k
rl|  dt2ks|  dt5k
rl| 6 }%|%}&|  d}|r|t2gkr| t2 | 6 }&n*|	r|t5gk	rnt| 	d|  | t5 | 	d}| t# t7t1|  } d}'t./|j\}!}"tdd|!|"}'|  d}|	r|t2gk	r| t2 | 	d}	| t# t8t4|  } t./|	j\}#}$tdd|!|#|"|$}'nJ|
r|t9t:t;t<t	t=t>t?t"t@tAtBtCttttDgk
rnt| 	d|  |  jtd| 7  _| j%|%|&t| jf |  j|'7  _n|  dt k
rt*+|  d
r| 	d}
| t  tEd|
jF n|  dt krr|  dtkrr| 	d}| t  |jG }(|(tHkrtH|( \})}*}+},}-tI|-}.ntEd|j |)dk }/|/rj| jJ%|(t| jd f |  jtd tKd!d"d7  _| t | L|.|*|+}0| t |0|+ks|0|*k rtEd#|0|jf |/rttM|,  }1|  jtd$|1|0d d%7  _n|*|+krtNtM|,  }1|  jtd|1|)7  _n\|0dkrJ|jG d&krJ|  jtd
td'd7  _n&ttM|,  }1|  jtd$|1|0|)7  _nt| 	d|  d S )(Nr   Z2Br   r@   z"""z<Bdr
   z<BBH   r   z<H   r	   c             S   s   g | ]}t |qS r   )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    )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ptgAttrrq   r^   ZptgFuncVarRrg   r9   re   rh   ri   rU   rk   
ptgMissArgappendZ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pos0Zpos1Zpos2Z
rpn_chunksZ	rpn_startZref_markersZmarkZncZ	chunklensZskiplensZicZjump_posZchunk_shiftZrefxrefZ
choose_rpnZ	int_valuercZptgZr1Zc1Zr2Zc2Zsheet1Zsheet2Z	rpn_ref2dZ	func_tokuZopcodemin_argcmax_argcZ	func_typeZarg_type_strarg_type_listZxcallZ	arg_countZfunc_ptgr   r   r   rl     s   




4

"





2


>



 


(

" 
& 


"



 "

 




"P









2"

 







 
zParser.primaryc             C   s   d }d }d }d }|  d}|rD|tgkrD| d}| t |j}nz|rn|tgkrn| d}| t |j}nP|r|tgkr| d}| t |jdd dd}nt	| d| 
 |S )Nr   rm   z''')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}|| }|  d}|r|ttttttttt	t
ttgkr| | |d7 }x^|  dtksv|  dtkr|t|k r|| }n|d }|dkr|d }|  d}|r|tgkr| t n0|r|tgkr| t nt| d|  |  d}|r6|ttttttttt	t
ttgkr6| | nD|rd|tttgkrd|  jtdt7  _nt| d|  |d7 }qXP qXW n*|r|tgkrnt| d|  |S )Nr   r   rm   +r@   )rB   ra   rb   rc   rd   re   rf   rg   rh   ri   rU   rj   rk   r>   r_   r`   rq   rE   r   rL   rJ   rM   r^   r8   rF   rG   r{   )r;   r   r   r   Zarg_cntrN   rO   r   r   r   r   2  s@    
(



(
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   )8rv   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   
    3