
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    Õ¿VX‚  ã                
   @   sF  d dl mZ dZdZdd„ ZdZdZdZd	d
„ ZeZ	dZ
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd dlZd dlZd dlZd dlZe d¡Zddddddddd d!œ	Zd"d#„ ZG d$d%„ d%eƒZG d&d'„ d'eƒZed(k�rBd dlmZ e ¡ Zd dl Z e!e j"d) ƒZ#e# $¡ Z%eeƒZ&e& 'e%e j"d) ¡ e& (¡ Z)e)�s2�qBe*e&j+e)ƒ �q dS )*é    )Ú
generators)
ZCPP_IDÚCPP_INTEGERZ	CPP_FLOATZ
CPP_STRINGZCPP_CHARÚCPP_WSZCPP_COMMENT1ZCPP_COMMENT2Z	CPP_POUNDZ
CPP_DPOUNDz+-*/%|&~^<>=!?()[]{}.,;:\'"c                 C   s   | j  j| j d¡7  _| S )z\s+Ú
©ÚlexerÚlinenoÚvalueÚcount©Út© r   ú8/opt/alt/python38/lib/python3.8/site-packages/ply/cpp.pyÚt_CPP_WS   s    r   z\#z\#\#z[A-Za-z_][\w_]*c                 C   s   | S )zA(((((0x)|(0X))[0-9a-fA-F]+)|(\d+))([uU][lL]|[lL][uU]|[uU]|[lL])?)r   r   r   r   r   r   $   s    r   z?((\d+)(\.\d+)(e(\+|-)?(\d+))? | (\d+)e(\+|-)?(\d+))([lL]|[fF])?c                 C   s   | j  j| j d¡7  _| S )z\"([^\\\n]|(\\(.|\n)))*?\"r   r   r   r   r   r   Út_CPP_STRING.   s    r   c                 C   s   | j  j| j d¡7  _| S )z(L)?\'([^\\\n]|(\\(.|\n)))*?\'r   r   r   r   r   r   Ú
t_CPP_CHAR4   s    r   c                 C   s8   | j  d¡}| j j|7  _d| _|r.d| nd| _ | S )z(/\*(.|\n)*?\*/)r   r   ú )r	   r
   r   r   Útype)r   Zncrr   r   r   Út_CPP_COMMENT1:   s
     r   c                 C   s   d| _ d| _dS )z(//.*?(\n|$))r   r   N)r   r	   r   r   r   r   Út_CPP_COMMENT2C   s     r   c                 C   s(   | j d | _| j d | _ | j d¡ | S ©Nr   é   )r	   r   r   Úskipr   r   r   r   Út_errorH   s    r   Nz\?\?[=/\'\(\)\!<>\-]ú#ú\ú^ú[ú]ú|Ú{Ú}ú~)	ú=ú/ú'ú(ú)ú!ú<ú>ú-c                 C   s   t  dd„ | ¡S )Nc                 S   s   t |  ¡ d  S ©Néÿÿÿÿ)Ú_trigraph_repÚgroup)Úgr   r   r   Ú<lambda>r   ó    ztrigraph.<locals>.<lambda>)Ú_trigraph_patÚsub)Úinputr   r   r   Útrigraphq   s    r6   c                   @   s   e Zd Zddd„ZdS )ÚMacroNFc                 C   s0   || _ || _|| _|| _|r&|d | _d | _d S r,   )Únamer	   ÚarglistÚvariadicÚvarargÚsource)Úselfr8   r	   r9   r:   r   r   r   Ú__init__…   s    
zMacro.__init__)NF)Ú__name__Ú
__module__Ú__qualname__r>   r   r   r   r   r7   „   s   r7   c                   @   s¨   e Zd Zd&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d„Zdd„ Zd(dd„Zdd„ Zdd„ Zd d!„ Zdi fd"d#„Zd$d%„ ZdS ))ÚPreprocessorNc                 C   sl   |d krt j}|| _i | _g | _g | _|  ¡  t ¡ }|  dt 	d|¡ ¡ |  dt 	d|¡ ¡ d | _
d S )Nz__DATE__ "%s"z%b %d %Yz__TIME__ "%s"z%H:%M:%S)Úlexr   ÚmacrosÚpathÚ	temp_pathÚlexprobeÚtimeÚ	localtimeÚdefineÚstrftimeÚparser)r=   r   Ztmr   r   r   r>   –   s    zPreprocessor.__init__c                 C   s0   g }| j  |¡ | j  ¡ }|s q,| |¡ q|S ©N)r   r5   ÚtokenÚappend)r=   ÚtextÚtokensÚtokr   r   r   Útokenize¬   s    
 zPreprocessor.tokenizec                 C   s   t d|||f ƒ d S )Nz%s:%d %s)Úprint)r=   ÚfileÚlineÚmsgr   r   r   Úerror»   s    zPreprocessor.errorc              	   C   sŽ  | j  d¡ | j  ¡ }|r$|jdkr.tdƒ n|j| _| j  d¡ | j  ¡ }|r^t|jƒdkrhtdƒ n|j| _t|jƒ| _	| j  d¡ | j  ¡ }|r |jdkrªtdƒ n|j| _
| j  d¡ | j  ¡ }|rÖ|jdkrÞd | _n|j| _| j  d	¡ | j  ¡ }|�r|jd	k�rd | _td
ƒ n|j| _| j| jf| _dddddddddg	}|D ]:}| j  |¡ | j  ¡ }|�rz|j|k�rNtd| ƒ �qNd S )NZ
identifierz"Couldn't determine identifier typeZ12345i90  zCouldn't determine integer typez
"filename"zCouldn't determine string typez  r   z%Couldn't determine token for newlinesr)   r*   r   ú##r   r&   r'   ú,Ú.z,Unable to lex '%s' required for preprocessor)r   r5   rN   r	   rT   r   Út_IDÚintÚ	t_INTEGERÚt_INTEGER_TYPEÚt_STRINGZt_SPACEZ	t_NEWLINEÚt_WS)r=   rR   ÚcharsÚcr   r   r   rG   Ç   sD    









zPreprocessor.lexprobec                 C   s   | j  |¡ d S rM   )rE   rO   )r=   rE   r   r   r   Úadd_path  s    zPreprocessor.add_pathc                 c   sä   | j  ¡ }dd„ | ¡ D ƒ}tt|ƒƒD ]T}|d }||  d¡r(|t|ƒk r(|| d d… ||  ||< d||< |d7 }q4q(d |¡}| |¡ d|_g }| 	¡ }|sªqÖ| 
|¡ |j| jkrœd|jkrœ|V  g }qœ|rà|V  d S )Nc                 S   s   g | ]}|  ¡ ‘qS r   )Úrstrip©Ú.0Úxr   r   r   Ú
<listcomp>  s     z,Preprocessor.group_lines.<locals>.<listcomp>r   r   r-   Ú r   )r   ZcloneÚ
splitlinesZxrangeÚlenÚendswithÚjoinr5   r   rN   rO   r   ra   r	   )r=   r5   rC   ÚlinesÚiÚjZcurrent_linerR   r   r   r   Úgroup_lines  s*    



zPreprocessor.group_linesc                 C   st   d}|t |ƒk r*|| j| jkr*|d7 }q|d |…= t |ƒd }|dkrb|| j| jkrb|d8 }q@||d d …= |S r   )rl   r   ra   )r=   rQ   rp   r   r   r   Ú
tokenstrip0  s    


zPreprocessor.tokenstripc           	      C   s€  g }g }g }d}t |ƒ}d}||k r>|| j| jkr>|d7 }q||k rd|| jdkrd| |d ¡ n |  | j|d jd¡ dg g fS |d7 }||k �r`|| }|jdkr¼| |¡ |d7 }nš|jdk�r|d8 }|dk�r|rø| |  |¡¡ | |¡ |d ||fS | |¡ nD|jdk�rL|dk�rL| |  |¡¡ | |d ¡ g }n
| |¡ |d7 }qŒ|  | j|d jd¡ dg g fS )	Nr   r   r&   zMissing '(' in macro argumentsr'   rZ   r-   zMissing ')' in macro arguments)	rl   r   ra   r	   rO   rX   r<   r   rs   )	r=   Z	tokenlistÚargsÚ	positionsZcurrent_argZnestingZtokenlenrp   r   r   r   r   Úcollect_argsL  sD    









zPreprocessor.collect_argsc                 C   s  g |_ g |_g |_d}|t|jƒk �r |j| j| jk�rh|j| j|jk�rh|j |j| j¡}|dkrÆ|j|d  jdkrÆt	 	|j| ¡|j|< | j
|j| _|j|d = |j ||d f¡ qn |dk�r|j|d  jdk�r|j  d||d f¡ |j|d = qnZ|d t|jƒk �rT|j|d  jdk�rT|j  d||f¡ |d7 }qn|j  d||f¡ nŽ|j| jdk�rö|j�rö|dk�rö|j|d  jdk�rö|d t|jƒk �rö|j|d  j| jk�rö|j|d  j|jk�rö|j |d ¡ |d7 }q|j jdd	„ d
d� d S )Nr   r   r   rY   rc   ÚerZ   c                 S   s   | d S )Né   r   )rh   r   r   r   r1   ¢  r2   z,Preprocessor.macro_prescan.<locals>.<lambda>T)ÚkeyÚreverse)ÚpatchÚ	str_patchÚvar_comma_patchrl   r	   r   r\   r9   ÚindexÚcopyr`   rO   r:   r;   Úsort)r=   Úmacrorp   Úargnumr   r   r   Úmacro_prescan�  sB    ( *(ÿÿþ
zPreprocessor.macro_prescanc           
      C   s   dd„ |j D ƒ}i }|jD ]X\}}||krRdd dd„ || D ƒ¡  dd¡||< t || ¡||< || || _ qd}|jrž|d	 sž|jD ]}d ||< d
}qŒi }|jD ]^\}	}}|	dkrÐ|| |||d …< q¨|	dkr¨||krò|  || ¡||< || |||d …< q¨|�rdd„ |D ƒ}|S )Nc                 S   s   g | ]}t   |¡‘qS r   ©r   ©rg   Z_xr   r   r   ri   ®  s     z2Preprocessor.macro_expand_args.<locals>.<listcomp>z"%s"rj   c                 S   s   g | ]
}|j ‘qS r   ©r	   rf   r   r   r   ri   µ  s     r   z\\Fr-   Trc   r   rw   c                 S   s   g | ]}|r|‘qS r   r   ©rg   Z_ir   r   r   ri   Ñ  s      )	r	   r|   rn   Úreplacer   r:   r}   r{   Úexpand_macros)
r=   r�   rt   ÚrepZstr_expansionr‚   rp   Zcomma_patchÚexpandedZptyper   r   r   Úmacro_expand_args¬  s.    (
zPreprocessor.macro_expand_argsc                 C   sÐ  |d kri }d}|t |ƒk �rÌ|| }|j| jk�rÂ|j| jk�r |j|k�r d||j< | j|j }|js´|  dd„ |jD ƒ|¡}|D ]}|j|_q†||||d …< |t |ƒ7 }�nà|d }|t |ƒk râ|| j| jkrâ|d7 }q¼|| jdk�r”|  	||d … ¡\}	}
}|j
�sTt |
ƒt |jƒk�rT|  | j|jd|jt |jƒf ¡ ||	 }�n@|j
�rÜt |
ƒt |jƒd k �rÜt |jƒdk�r¬|  | j|jd	|jt |jƒd f ¡ n&|  | j|jd
|jt |jƒd f ¡ ||	 }n¸|j
�rLt |
ƒt |jƒd k�r|
 g ¡ nD|||t |jƒd   ||	 d … |
t |jƒd < |
t |jƒd …= |  ||
¡}|  ||¡}|D ]}|j|_�qh|||||	 …< |t |ƒ7 }||j= qn"|jdk�rÂ| j|_|  |j¡|_|d7 }q|S )Nr   Tc                 S   s   g | ]}t   |¡‘qS r   r„   r…   r   r   r   ri   ì  s     z.Preprocessor.expand_macros.<locals>.<listcomp>r   r&   zMacro %s requires %d argumentsrx   z(Macro %s must have at least %d argumentsz'Macro %s must have at least %d argumentZ__LINE__)rl   r   r\   r	   rD   r9   r‰   r   ra   rv   r:   rX   r<   rO   rŒ   r^   r_   )r=   rQ   r‹   rp   r   ÚmÚexrw   rq   Útokcountrt   ru   rŠ   Úrr   r   r   r‰   Þ  s\    


" (&
4
zPreprocessor.expand_macrosc                 C   sN  d}|t |ƒk �r|| j| jk�r|| jdk�r|d }d}d}|t |ƒk rä|| j| jkrl|d7 }qDnn|| j| jkrž|| j| jkr’d}nd}|sÚqän<|| jdkr²d}n(|| jd	krÄqän|  | j|| jd
¡ |d7 }qD| j	|| _|  
|¡|| _||d |d …= |d7 }q|  |¡}t|ƒD ]¤\}}|j| jk�rpt |¡||< | j	|| _|  
d¡|| _n`|j| j	k�r.t |¡||< t|| jƒ|| _|| jd dk�r.|| jd d… || _�q �q.d dd„ |D ƒ¡}| dd¡}| dd¡}| dd¡}zt|ƒ}W n0 tk
�rH   |  | j|d jd¡ d}Y nX |S )Nr   Zdefinedr   FZ0LZ1Lr&   Tr'   zMalformed defined()r-   Z0123456789abcdefABCDEFrj   c                 S   s   g | ]}t |jƒ‘qS r   ©Ústrr	   rf   r   r   r   ri   K  s     z)Preprocessor.evalexpr.<locals>.<listcomp>z&&z and z||z or r(   z not zCouldn't evaluate expression)rl   r   r\   r	   ra   rD   rX   r<   r   r^   r_   r‰   Ú	enumerater   r’   rn   rˆ   ÚevalZStandardError)r=   rQ   rp   rq   Z	needparenÚresultr   Úexprr   r   r   Úevalexpr   s^    " 


 
zPreprocessor.evalexprc                 c   s’  t |ƒ}|  |¡}|sd}|  d| ¡ || _g }d}d}g }|D �],}	t|	ƒD ]\}
}|j| jkrP qjqP|jdk�rb|	D ]$}|j| jkrzd|jkrz| |¡ qz|  	|	|
d d … ¡}|rØ|d j}|  	|dd … ¡}nd}g }|d	k�r|�r`|  
|¡D ]
}|V  qúg }|  |¡ �qp|d
k�rz|�r`|  
|¡D ]}|V  �q2g }| jd }|  |¡D ]}|V  �qX|| jd< || _�qp|dk�r´|�r`|  
|¡D ]}|V  �q”g }|  |¡ �qp|dk�rö| ||f¡ |�r`|d j| jk�rîd}d}nd}�qp|dk�r8| ||f¡ |�r`|d j| jk�r0d}d}nd}�qp|dk�rv| ||f¡ |�r`|  |¡}|�spd}d}nd}nê|dk�rØ|�rÀ|d d �rÖ|�r d}n|�sÖ|  |¡}|�rÖd}d}n|  | j|d jd¡ nˆ|dk�r*|�r|d d �r(|�rd}n|�s(d}d}n|  | j|d jd¡ n6|dk�rp|�rH| ¡ \}}n|  | j|d jd¡ n qB|rB| |	¡ qB|  
|¡D ]}|V  �q|g }d S )Nrj   z__FILE__ "%s"TFr   r   r   r   rJ   ÚincludeZ__FILE__ÚundefZifdefZifndefÚifÚelifr-   zMisplaced #elifÚelsezMisplaced #elseZendifzMisplaced #endif)r6   rr   rJ   r<   r“   r   ra   r	   rO   rs   r‰   rD   r˜   r™   r—   rX   r   ÚpopÚextend)r=   r5   r<   r   ro   ÚchunkZenableZ	iftriggerZifstackrh   rp   rR   Z	dirtokensr8   rt   Zoldfiler•   r   r   r   Úparsegen[  sÄ    

 


















zPreprocessor.parsegenc           
   	   c   sŒ  |sd S |rê|d j dkr4|d j| jkr4|  |¡}|d j dkr¨d}|t|ƒk rl|| j dkrbqx|d7 }qFtdƒ d S d dd„ |d|… D ƒ¡}| jdg | j }nB|d j| jkrÞ|d j dd	… }| jdg | j }ntd
ƒ d S |D ]Œ}t	j ||¡}zbt
|dƒ ¡ }t	j |¡}|�r0| j d|¡ |  ||¡D ]}	|	V  �q<|�rX| jd= W  �qˆW qî tk
�rx   Y qîX qîtd| ƒ d S )Nr   r)   r   r*   zMalformed #include <...>rj   c                 S   s   g | ]
}|j ‘qS r   r†   rf   r   r   r   ri   ð  s     z(Preprocessor.include.<locals>.<listcomp>r-   zMalformed #include statementr�   zCouldn't find '%s')r	   r   r`   r‰   rl   rT   rn   rE   rF   ÚosÚopenÚreadÚdirnameÚinsertr    ÚIOError)
r=   rQ   rp   ÚfilenamerE   ÚpZinameÚdataZdnamerR   r   r   r   r˜   Þ  sF    


zPreprocessor.includec                 C   s¼  t |ttfƒr|  |¡}|}�zz|d }t|ƒdkr>|d }nd }|sbt|jg ƒ}|| j|j< �n4|j| j	kr˜t|j|  
|dd … ¡ƒ}|| j|j< �nþ|jdk�rŽ|  |dd … ¡\}}}d}	|D ]î}
|	rÚtdƒ  �q–d dd	„ |
D ƒ¡}|d
k�r$d}	| j|
d _d|
d _d}	|
dd …= qÄnb|dd … d
k�r†|
d j| jk�r†d}	|
dd …= |
d jdd … d
krÄ|
d jd d… |
d _qÄt|
ƒdk�s¤|
d j| jkrÄtdƒ  �q–qÄ|  
|d| d … ¡}d}|t|ƒk �r\|d t|ƒk �rP|| j| j	k�r ||d  jdk�r ||= �qÎn0|| jdk�rP||d  j| j	k�rP||d = |d7 }�qÎt|j|dd	„ |D ƒ|	ƒ}|  |¡ || j|j< ntdƒ W n tk
�r¶   tdƒ Y nX d S )Nr   r   rx   r&   Fz0No more arguments may follow a variadic argumentrj   c                 S   s   g | ]}t |jƒ‘qS r   r‘   r‡   r   r   r   ri   )  s     z'Preprocessor.define.<locals>.<listcomp>z...TZ__VA_ARGS__éýÿÿÿzInvalid macro argumentrY   c                 S   s   g | ]}|d  j ‘qS )r   r†   rf   r   r   r   ri   G  s     zBad macro definition)Ú
isinstancer’   ZunicoderS   rl   r7   r	   rD   r   ra   rs   rv   rT   rn   r\   rƒ   ÚLookupError)r=   rQ   Zlinetokr8   Zmtyper�   r�   rt   ru   r:   ÚaZastrZmvaluerp   r   r   r   rJ     sl    




$
&&

zPreprocessor.definec                 C   s0   |d j }z| j|= W n tk
r*   Y nX d S )Nr   )r	   rD   r¬   )r=   rQ   Úidr   r   r   r™   U  s
    
zPreprocessor.undefc                 C   s   || _ |  ||¡| _d S rM   )Úignorer    rL   )r=   r5   r<   r¯   r   r   r   Úparsea  s    zPreprocessor.parsec                 C   sD   z"t | jƒ}|j| jkr|W S qW n tk
r>   d | _Y d S X d S rM   )ÚnextrL   r   r¯   ÚStopIteration)r=   rR   r   r   r   rN   j  s    
 zPreprocessor.token)N)N)N)r?   r@   rA   r>   rS   rX   rG   rd   rr   rs   rv   rƒ   rŒ   r‰   r—   r    r˜   rJ   r™   r°   rN   r   r   r   r   rB   •   s&   
<!5+2
B;
 1F	rB   Ú__main__r   ),Z
__future__r   rQ   Úliteralsr   Zt_CPP_POUNDZt_CPP_DPOUNDZt_CPP_IDr   Zt_CPP_INTEGERZt_CPP_FLOATr   r   r   r   r   Úrer   rH   Zos.pathr¡   Úcompiler3   r.   r6   Úobjectr7   rB   r?   Zply.lexrC   r   Úsysr¢   ÚargvÚfr£   r5   r¨   r°   rN   rR   rT   r<   r   r   r   r   Ú<module>
   sb   	
÷     c
 