3
ãde¦§  ã               @   s<  d Z d ZddlZddlZddlZddlZddlZddlZyejej	fZ
W n ek
rd   eefZ
Y nX ejdƒZG dd„ deƒZG dd„ deƒZG dd	„ d	eƒZG d
d„ deƒZG dd„ dƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZG dd„ deƒZdddddeejƒddddf
dd„Z d$d d!„Z!d"d#„ Z"e"Z#dS )%z3.10é    Nz^[a-zA-Z0-9_]+$c               @   s   e Zd Zdd„ ZdS )ÚLexErrorc             C   s   |f| _ || _d S )N)ÚargsÚtext)ÚselfÚmessageÚs© r   úH/var/www/agendate/envp3/lib/python3.6/site-packages/pycparser/ply/lex.pyÚ__init__:   s    zLexError.__init__N)Ú__name__Ú
__module__Ú__qualname__r
   r   r   r   r	   r   9   s   r   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚLexTokenc             C   s   d| j | j| j| jf S )NzLexToken(%s,%r,%d,%d))ÚtypeÚvalueÚlinenoÚlexpos)r   r   r   r	   Ú__str__A   s    zLexToken.__str__c             C   s   t | ƒS )N)Ústr)r   r   r   r	   Ú__repr__D   s    zLexToken.__repr__N)r   r   r   r   r   r   r   r   r	   r   @   s   r   c               @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ ZeZeZd	S )
Ú	PlyLoggerc             C   s
   || _ d S )N)Úf)r   r   r   r   r	   r
   L   s    zPlyLogger.__init__c             O   s   | j j|| d ƒ d S )NÚ
)r   Úwrite)r   Úmsgr   Úkwargsr   r   r	   ÚcriticalO   s    zPlyLogger.criticalc             O   s   | j jd||  d ƒ d S )Nz	WARNING: r   )r   r   )r   r   r   r   r   r   r	   ÚwarningR   s    zPlyLogger.warningc             O   s   | j jd||  d ƒ d S )NzERROR: r   )r   r   )r   r   r   r   r   r   r	   ÚerrorU   s    zPlyLogger.errorN)	r   r   r   r
   r   r   r   ÚinfoÚdebugr   r   r   r	   r   K   s   r   c               @   s   e Zd Zdd„ Zdd„ ZdS )Ú
NullLoggerc             C   s   | S )Nr   )r   Únamer   r   r	   Ú__getattribute__^   s    zNullLogger.__getattribute__c             O   s   | S )Nr   )r   r   r   r   r   r	   Ú__call__a   s    zNullLogger.__call__N)r   r   r   r#   r$   r   r   r   r	   r!   ]   s   r!   c               @   s|   e Zd Zdd„ Zdd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„ ZeZdS )ÚLexerc             C   sŽ   d | _ d | _i | _i | _i | _d| _g | _d | _i | _i | _	i | _
d| _d | _d| _d| _d | _d | _d | _d| _d| _d | _d| _d| _d S )NÚINITIALr   Ú é   F)ÚlexreÚ	lexretextÚ
lexstatereÚlexstateretextÚlexstaterenamesÚlexstateÚlexstatestackÚlexstateinfoÚlexstateignoreÚlexstateerrorfÚlexstateeoffÚ
lexreflagsÚlexdatar   ÚlexlenÚ	lexerrorfÚlexeoffÚ	lextokensÚ	lexignoreÚlexliteralsÚ	lexmoduler   Úlexoptimize)r   r   r   r	   r
   t   s.    zLexer.__init__Nc             C   sâ   t j | ƒ}|rÞi }xŽ| jjƒ D ]€\}}g }x\|D ]T\}}g }	xF|D ]>}
|
 sV|
d  rb|	j|
ƒ qB|	jt||
d jƒ|
d fƒ qBW q0W |j||	fƒ |||< qW ||_i |_x(| jjƒ D ]\}}t||jƒ|j|< qºW ||_|S )Nr   r(   )Úcopyr+   ÚitemsÚappendÚgetattrr   r2   r<   )r   ÚobjectÚcZnewtabÚkeyZritemZnewreZcreZfindexZ	newfindexr   Úefr   r   r	   Úclone�   s(    


&zLexer.cloner'   c             C   sÞ  t |tjƒrtdƒ‚|jdƒd }tjj||ƒd }t|dƒ��”}|j	d|t
f ƒ |j	dttƒ ƒ |j	dtt| jƒƒ ƒ |j	d	t| jƒ ƒ |j	d
t| jƒ ƒ |j	dt| jƒ ƒ i }xb| jjƒ D ]T\}}g }	x>t|| j| | j| ƒD ]"\\}
}}}|	j|t||ƒfƒ qðW |	||< qÊW |j	dt|ƒ ƒ |j	dt| jƒ ƒ i }x,| jjƒ D ]\}}|�rl|jnd ||< �qXW |j	dt|ƒ ƒ i }x,| jjƒ D ]\}}|�r°|jnd ||< �qœW |j	dt|ƒ ƒ W d Q R X d S )Nz&Won't overwrite existing lextab moduleÚ.r(   z.pyÚwzJ# %s.py. This file automatically created by PLY (version %s). Don't edit!
z_tabversion   = %s
z_lextokens    = set(%s)
z_lexreflags   = %s
z_lexliterals  = %s
z_lexstateinfo = %s
z_lexstatere   = %s
z_lexstateignore = %s
z_lexstateerrorf = %s
z_lexstateeoff = %s
éÿÿÿÿ)Ú
isinstanceÚtypesÚ
ModuleTypeÚIOErrorÚsplitÚosÚpathÚjoinÚopenr   Ú__version__ÚreprÚ__tabversion__Útupler9   r4   r;   r0   r+   r?   Úzipr,   r-   r@   Ú_funcs_to_namesr1   r2   r   r3   )r   ÚlextabÚ	outputdirZbasetabmoduleÚfilenameÚtfZtabreÚ	statenameÚlreÚtitemÚpatÚfuncZretextÚrenamesZtaberrrE   Ztabeofr   r   r	   Úwritetab®   s6    (zLexer.writetabc             C   sR  t |tjƒr|}ntd| ƒ tj| }t|ddƒtkr@tdƒ‚|j	| _
|j| _|j| _| j
t| jƒB | _|j| _|j| _i | _i | _xb|jjƒ D ]T\}}g }g }x.|D ]&\}}	|jtj||jƒt|	|ƒfƒ q¨W || j|< || j|< q’W i | _x$|jjƒ D ]\}}
||
 | j|< qüW i | _x&|j jƒ D ]\}}
||
 | j|< �q(W | j!dƒ d S )Nz	import %sZ_tabversionz0.0zInconsistent PLY versionr&   )"rJ   rK   rL   ÚexecÚsysÚmodulesrA   rU   ÚImportErrorZ
_lextokensr9   Z_lexreflagsr4   Z_lexliteralsr;   ÚsetÚlextokens_allZ_lexstateinfor0   Z_lexstateignorer1   r+   r,   Z_lexstaterer?   r@   ÚreÚcompileÚ_names_to_funcsr2   Z_lexstateerrorfr3   Z_lexstateeoffÚbegin)r   ZtabfileÚfdictrY   r]   r^   r_   Ztxtitemr`   Ú	func_namerE   r   r   r	   ÚreadtabÓ   s8    
"
zLexer.readtabc             C   s8   |d d… }t |tƒstdƒ‚|| _d| _t|ƒ| _d S )Nr(   zExpected a stringr   )rJ   ÚStringTypesÚ
ValueErrorr5   r   Úlenr6   )r   r   rC   r   r   r	   Úinputû   s    
zLexer.inputc             C   sd   || j krtdƒ‚| j | | _| j| | _| jj|dƒ| _| jj|d ƒ| _	| j
j|d ƒ| _|| _d S )NzUndefined stater'   )r+   rr   r)   r,   r*   r1   Úgetr:   r2   r7   r3   r8   r.   )r   Ústater   r   r	   rm     s    
zLexer.beginc             C   s   | j j| jƒ | j|ƒ d S )N)r/   r@   r.   rm   )r   rv   r   r   r	   Ú
push_state  s    zLexer.push_statec             C   s   | j | jjƒ ƒ d S )N)rm   r/   Úpop)r   r   r   r	   Ú	pop_state  s    zLexer.pop_statec             C   s   | j S )N)r.   )r   r   r   r	   Úcurrent_state!  s    zLexer.current_statec             C   s   |  j |7  _ d S )N)r   )r   Únr   r   r	   Úskip'  s    z
Lexer.skipc             C   s~  | j }| j}| j}| j}�xþ||k �r|| |kr<|d7 }q�xÖ| jD ]ä\}}|j||ƒ}|s`qFtƒ }|jƒ |_| j	|_	||_ |j
}	||	 \}
|_|
s´|jrª|jƒ | _ |S |jƒ }P |jƒ }| |_|| _|| _ |
|ƒ}|sè| j }| j}P | j�s(|j| jk�r(td|
jj|
jj|
j|jf ||d … ƒ‚|S W || | jk�rrtƒ }|| |_| j	|_	|j|_||_ |d | _ |S | j�ròtƒ }| j|d … |_| j	|_	d|_| |_||_ || _ | j|ƒ}|| j k�ràtd||  ||d … ƒ‚| j }|�sîq|S || _ td|| |f ||d … ƒ‚qW | j�r\tƒ }d|_d|_| j	|_	||_ | |_|| _ | j|ƒ}|S |d | _ | jd k�rztdƒ‚d S )	Nr(   z4%s:%d: Rule '%s' returned an unknown token type '%s'r   z&Scanning error. Illegal character '%s'z"Illegal character '%s' at index %dÚeofr'   z"No input string given with input())r   r6   r:   r5   r)   Úmatchr   Úgroupr   r   Ú	lastindexr   ÚendÚlexerZlexmatchr=   ri   r   Ú__code__Úco_filenameÚco_firstlinenor   r;   r7   r8   ÚRuntimeError)r   r   r6   r:   r5   r)   ÚlexindexfuncÚmÚtokÚira   Znewtokr   r   r	   Útoken1  sœ    




"

zLexer.tokenc             C   s   | S )Nr   )r   r   r   r	   Ú__iter__Ÿ  s    zLexer.__iter__c             C   s   | j ƒ }|d krt‚|S )N)r‹   ÚStopIteration)r   Útr   r   r	   Únext¢  s    z
Lexer.next)N)r'   )r   r   r   r
   rF   rc   rp   rt   rm   rw   ry   rz   r|   r‹   rŒ   r�   Ú__next__r   r   r   r	   r%   s   s   

%(
nr%   c             C   s   t | d| jƒS )NÚregex)rA   Ú__doc__)ra   r   r   r	   Ú
_get_regex·  s    r“   c             C   s0   t j| ƒ}|jjƒ }|j|jkr,|j|jƒ |S )N)re   Ú	_getframeÚ	f_globalsr>   Úf_localsÚupdate)Zlevelsr   Úldictr   r   r	   Úget_caller_module_dictÁ  s
    

r™   c             C   sJ   g }x@t | |ƒD ]2\}}|r8|d r8|j||d fƒ q|j|ƒ qW |S )Nr   r(   )rW   r@   )ZfunclistÚnamelistÚresultr   r"   r   r   r	   rX   Î  s    rX   c             C   sH   g }x>| D ]6}|r6|d r6|j ||d  |d fƒ q
|j |ƒ q
W |S )Nr   r(   )r@   )rš   rn   r›   r{   r   r   r	   rl   Ý  s    
rl   c             C   sd  | sg S dj | ƒ}yÎtj||ƒ}d gt|jjƒ ƒd  }|d d … }xˆ|jjƒ D ]z\}}	|j|d ƒ}
t|
ƒt	j
t	jfkr’|
|| f||	< |||	< qP|
d k	rP|||	< |jdƒdkrºd||	< qPd || f||	< qPW ||fg|g|gfS  tk
�r^   tt| ƒd ƒ}|dk�rd}t| d |… |||ƒ\}}}t| |d … |||ƒ\}}}|| || || fS X d S )Nú|r(   Úignore_r   é   )NN)rQ   rj   rk   ÚmaxÚ
groupindexÚvaluesr?   ru   r   rK   ÚFunctionTypeÚ
MethodTypeÚfindÚ	ExceptionÚintrs   Ú_form_master_re)ZrelistÚreflagsr˜   Útoknamesr‘   r)   r‡   Zlexindexnamesr   rŠ   Úhandlerˆ   Úllistr^   ZlnamesZrlistZrreZrnamesr   r   r	   r§   í  s2    



r§   c             C   sˆ   d}| j dƒ}x0t|dd … dƒD ]\}}||kr"|dkr"P q"W |dkrZt|d|… ƒ}nd}d|krnt|ƒ}dj||d … ƒ}||fS )Nr(   Ú_ÚANYr&   )r&   )rN   Ú	enumeraterV   rQ   )r   ÚnamesZnonstateÚpartsrŠ   ÚpartÚstatesZ	tokennamer   r   r	   Ú_statetoken  s    
r³   c               @   sf   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„ ZdS )ÚLexerReflectNr   c             C   sL   || _ d | _g | _|| _ddi| _tƒ | _d| _|d krBtt	j
ƒn|| _d S )Nr&   Ú	inclusiveF)r˜   Z
error_funcÚtokensr¨   Ú	stateinforh   rf   r   r   re   ÚstderrÚlog)r   r˜   r¹   r¨   r   r   r	   r
   /  s    
zLexerReflect.__init__c             C   s$   | j ƒ  | jƒ  | jƒ  | jƒ  d S )N)Ú
get_tokensÚget_literalsÚ
get_statesÚ	get_rules)r   r   r   r	   Úget_all:  s    zLexerReflect.get_allc             C   s   | j ƒ  | jƒ  | jƒ  | jS )N)Úvalidate_tokensÚvalidate_literalsÚvalidate_rulesr   )r   r   r   r	   Úvalidate_allA  s    zLexerReflect.validate_allc             C   sp   | j jdd ƒ}|s(| jjdƒ d| _d S t|ttfƒsL| jjdƒ d| _d S |sf| jjdƒ d| _d S || _d S )Nr¶   zNo token list is definedTztokens must be a list or tupleztokens is empty)r˜   ru   r¹   r   rJ   ÚlistrV   r¶   )r   r¶   r   r   r	   rº   H  s    zLexerReflect.get_tokensc             C   sT   i }xJ| j D ]@}tj|ƒs.| jjd|ƒ d| _||krD| jjd|ƒ d||< qW d S )NzBad token name '%s'TzToken '%s' multiply definedr(   )r¶   Ú_is_identifierr~   r¹   r   r   )r   Z	terminalsr{   r   r   r	   r¿   \  s    
zLexerReflect.validate_tokensc             C   s    | j jddƒ| _| jsd| _d S )NÚliteralsr'   )r˜   ru   rÅ   )r   r   r   r	   r»   g  s    zLexerReflect.get_literalsc             C   sp   yDx>| j D ]4}t|tƒ s&t|ƒdkr
| jjdt|ƒƒ d| _q
W W n& tk
rj   | jjdƒ d| _Y nX d S )Nr(   z.Invalid literal %s. Must be a single characterTzIInvalid literals specification. literals must be a sequence of characters)rÅ   rJ   rq   rs   r¹   r   rT   Ú	TypeError)r   rC   r   r   r	   rÀ   m  s    zLexerReflect.validate_literalsc             C   sü   | j jdd ƒ| _| jrøt| jttfƒs:| jjdƒ d| _n¾x¼| jD ]²}t|tƒ s^t|ƒdkrx| jjdt	|ƒƒ d| _qB|\}}t|t
ƒs¤| jjdt	|ƒƒ d| _qB|dkp²|dksÊ| jjd	|ƒ d| _qB|| jkrê| jjd
|ƒ d| _qB|| j|< qBW d S )Nr²   z)states must be defined as a tuple or listTrž   zMInvalid state specifier %s. Must be a tuple (statename,'exclusive|inclusive')zState name %s must be a stringrµ   Ú	exclusivez:State type for state %s must be 'inclusive' or 'exclusive'zState '%s' already defined)r˜   ru   r²   rJ   rV   rÃ   r¹   r   rs   rT   rq   r·   )r   r   r"   Z	statetyper   r   r	   r¼   x  s0    

zLexerReflect.get_statesc       	      C   sR  dd„ | j D ƒ}i | _i | _i | _i | _i | _i | _x"| jD ]}g | j|< g | j|< q<W t|ƒdkrz| j	j
dƒ d| _
d S �x‚|D �]x}| j | }t|| jƒ\}}|| j|< t|dƒ�rX|dkrÚx”|D ]}|| j|< qÆW n||dkrüxr|D ]}|| j|< qèW nZ|d	k�r2|jj}|jj}| j	j
d
|||jƒ d| _
n$xÈ|D ]}| j| j||fƒ �q8W q‚t|tƒ�rè|d	k�r¢x|D ]}|| j|< �qtW d|k�ræ| j	jd|ƒ nD|dk�rÂ| j	j
d|ƒ d| _
n$x8|D ]}| j| j||fƒ �qÈW q‚| j	j
d|ƒ d| _
q‚W x$| jjƒ D ]}|jdd„ d� �qW x&| jjƒ D ]}|jdd„ dd� �q2W d S )Nc             S   s    g | ]}|d d… dkr|‘qS )Nrž   Zt_r   )Ú.0r   r   r   r	   ú
<listcomp>˜  s    z*LexerReflect.get_rules.<locals>.<listcomp>r   z+No rules of the form t_rulename are definedTr$   r   r}   Úignorez,%s:%d: Rule '%s' must be defined as a stringú\z#%s contains a literal backslash '\'z'Rule '%s' must be defined as a functionz&%s not defined as a function or stringc             S   s   | d j jS )Nr(   )rƒ   r…   )Úxr   r   r	   Ú<lambda>Ò  s    z(LexerReflect.get_rules.<locals>.<lambda>)rD   c             S   s   t | d ƒS )Nr(   )rs   )rÌ   r   r   r	   rÍ   Ö  s    )rD   Úreverse)r˜   r©   ÚfuncsymÚstrsymrÊ   ÚerrorfÚeoffr·   rs   r¹   r   r³   Úhasattrrƒ   r…   r„   r   r@   rJ   rq   r   r¡   Úsort)	r   Ztsymbolsr   r   rŽ   r²   ÚtoknameÚlineÚfiler   r   r	   r½   —  sb    












zLexerReflect.get_rulesc             C   s”  �xp| j D �]d}�x|| j| D �]l\}}|jj}|jj}tj|ƒ}| jj|ƒ | j	| }t
|tjƒrjd}nd}|jj}	|	|krš| jjd|||jƒ d| _q|	|k r¾| jjd|||jƒ d| _qt|ƒsâ| jjd|||jƒ d| _qyDtjd|t|ƒf | jƒ}
|
jdƒ�r$| jjd	|||jƒ d| _W q tjk
�rŠ } zD| jjd
|||j|ƒ dt|ƒk�rt| jjd|||jƒ d| _W Y d d }~X qX qW �x
| j| D ]ü\}}| j	| }|dk�rÒ| jjd|ƒ d| _�qž|| jk�r|jdƒdk �r| jjd||ƒ d| _�qžy:tjd||f | jƒ}
|
jdƒ�r@| jjd|ƒ d| _W nT tjk
�r– } z4| jjd||ƒ d|k�r€| jjd|ƒ d| _W Y d d }~X nX �qžW | j|  �rÎ| j|  �rÎ| jjd|ƒ d| _| jj|d ƒ}|r
|}|jj}|jj}tj|ƒ}| jj|ƒ t
|tjƒ�rd}nd}|jj}	|	|k�rN| jjd|||jƒ d| _|	|k r
| jjd|||jƒ d| _q
W x| jD ]}| j|ƒ �q|W d S )Nrž   r(   z'%s:%d: Rule '%s' has too many argumentsTz%%s:%d: Rule '%s' requires an argumentz2%s:%d: No regular expression defined for rule '%s'z
(?P<%s>%s)r'   z<%s:%d: Regular expression for rule '%s' matches empty stringz3%s:%d: Invalid regular expression for rule '%s'. %sú#z6%s:%d. Make sure '#' in rule '%s' is escaped with '\#'r   z'Rule '%s' must be defined as a functionr�   r   z-Rule '%s' defined for an unspecified token %sz5Regular expression for rule '%s' matches empty stringz,Invalid regular expression for rule '%s'. %sz/Make sure '#' in rule '%s' is escaped with '\#'zNo rules defined for state '%s')r·   rÏ   rƒ   r…   r„   ÚinspectÚ	getmodulerf   Úaddr©   rJ   rK   r£   Úco_argcountr¹   r   r   r“   rj   rk   r¨   r~   rÐ   r¶   r¤   rÑ   ru   Úvalidate_module)r   rv   Úfnamer   rÖ   r×   ÚmodulerÕ   ZreqargsÚnargsrC   Úer"   ÚrZefuncr   r   r	   rÁ   Ù  s–    









zLexerReflect.validate_rulesc             C   sÄ   yt j|ƒ\}}W n tk
r&   d S X tjdƒ}tjdƒ}i }|d7 }xv|D ]n}|j|ƒ}|sj|j|ƒ}|r´|jdƒ}	|j|	ƒ}
|
s�|||	< n$t j|ƒ}| j	j
d|||	|
ƒ d| _
|d7 }qNW d S )Nz\s*def\s+(t_[a-zA-Z_0-9]*)\(z\s*(t_[a-zA-Z_0-9]*)\s*=r(   z7%s:%d: Rule %s redefined. Previously defined on line %dT)rÙ   ÚgetsourcelinesrM   rj   rk   r~   r   ru   Úgetsourcefiler¹   r   )r   rß   ÚlinesZlinenZfreZsreZ	counthashrÖ   rˆ   r"   Úprevr[   r   r   r	   rÝ   @  s*    








zLexerReflect.validate_module)Nr   )r   r   r   r
   r¾   rÂ   rº   r¿   r»   rÀ   r¼   r½   rÁ   rÝ   r   r   r   r	   r´   .  s   
Bgr´   FrY   c
       %         sŽ  |d krd}d }
ddi}t ƒ }||_|	d kr6ttjƒ}	|rL|d krLttjƒ}|rT|‰ ˆ r”‡ fdd„tˆ ƒD ƒ}t|ƒ}
d|
krœtj|
d  j|
d< nt	dƒ}
|
j
d	ƒ}|rÈt|tƒrÈd
|krÈ|d
 | }t|
|	|d�}|jƒ  |sò|jƒ ròtdƒ‚|oø|�r4y |j||
ƒ |ja|ja|a|S  tk
�r2   Y nX |�rd|jd|jƒ |jd|jƒ |jd|jƒ tƒ |_x|jD ]}|jj|ƒ �qtW t|jttfƒ�r¸t|jd ƒƒ j |jƒ|_!n|j|_!|jt|j!ƒB |_"|j}i }x¶|D ]®}g }xX|j#| D ]J\}}|j$j%}|j$j&}|j'd|t(|ƒf ƒ |�rö|jd|t(|ƒ|ƒ �qöW x@|j)| D ]2\}}|j'd||f ƒ |�rP|jd|||ƒ �qPW |||< �qâW |�r¤|jdƒ xt|D ]l}t*|| ||
|j+ƒ\}}}||j,|< ||j-|< ||j.|< |�rªx&t/|ƒD ]\}}|jd|||ƒ �qöW �qªW xl|j0ƒ D ]`\}}|dk�r$|dk�r$|j,| j1|j,d ƒ |j-| j1|j-d ƒ |j.| j1|j.d ƒ �q$W ||_2|j,d |_3|j-d |_4||_5|j6|_7|j7j
ddƒ|_8|j9|_:|j9j
dd ƒ|_;|j;�sî|	j<dƒ |j=|_>|j=j
dd ƒ|_?x¤|j0ƒ D ]˜\} }|dk�r\| |j9k�r:|	j<d| ƒ | |j6k�r¦|j8�r¦|	j<d| ƒ nJ|dk�r| |j9k�r†|j9j
dd ƒ|j9| < | |j6k�r|j6j
ddƒ|j6| < �qW |ja|ja|a|�rŠ|�rŠ|d k�rBt|t@jAƒ�rè|j}!nNd
|k�rü|
d }!n:|jBd
ƒ}"d
j |"d d… ƒ}#tCd|# ƒ tDtj|# ddƒ}!tEjFjG|!ƒ}y|jH||ƒ W n6 tIk
�rˆ }$ z|	j<d||$f ƒ W Y d d }$~$X nX |S )NrY   r&   rµ   c                s   g | ]}|t ˆ |ƒf‘qS r   )rA   )rÈ   Úk)rß   r   r	   rÉ   z  s    zlex.<locals>.<listcomp>Ú__file__r   rž   Ú__package__rG   )r¹   r¨   zCan't build lexerzlex: tokens   = %rzlex: literals = %rzlex: states   = %rr   z
(?P<%s>%s)z(lex: Adding rule %s -> '%s' (state '%s')z#lex: ==== MASTER REGEXS FOLLOW ====z"lex: state '%s' : regex[%d] = '%s'r'   zNo t_error rule is definedrÇ   z1No error rule is defined for exclusive state '%s'z2No ignore rule is defined for exclusive state '%s'r(   z	import %sz#Couldn't write lextab module %r. %srI   )Jr%   r=   r   re   r¸   ÚdirÚdictrf   rè   r™   ru   rJ   r   r´   r¾   rÂ   ÚSyntaxErrorrp   r‹   rt   r‚   rg   r   r¶   rÅ   r·   rh   r9   rÛ   rÃ   rV   r   rQ   r;   ri   rÏ   rƒ   r…   r„   r@   r“   rÐ   r§   r©   r+   r,   r-   r®   r?   Úextendr0   r)   r*   r4   rÊ   r1   r:   rÑ   r2   r7   r   rÒ   r3   r8   rK   rL   rN   rd   rA   rO   rP   Údirnamerc   rM   )%rß   rB   r    ÚoptimizerY   r¨   ZnowarnrZ   ZdebuglogZerrorlogr˜   r·   ZlexobjZ_itemsÚpkgZlinfor{   Zregexsrv   Z
regex_listrÞ   r   rÖ   r×   r"   râ   r)   Zre_textZre_namesrŠ   r   Ústyper   Úsrcfiler°   Úpkgnamerá   r   )rß   r	   Úlex_  sð    
















$rô   c             C   s´   |sVy&t jd }t|ƒ}|jƒ }|jƒ  W n* tk
rT   t jjdƒ t jjƒ }Y nX | rb| j	}nt	}||ƒ | rz| j
}nt
}x0|ƒ }|sŒP t jjd|j|j|j|jf ƒ q€W d S )Nr(   z/Reading from standard input (type EOF to end):
z(%s,%r,%d,%d)
)re   ÚargvrR   ÚreadÚcloseÚ
IndexErrorÚstdoutr   Ústdinrt   r‹   r   r   r   r   )r‚   Údatar[   r   Ú_inputÚ_tokenr‰   r   r   r	   Úrunmain  s*    
rþ   c                s   ‡ fdd„}|S )Nc                s    t ˆ dƒrtˆ ƒ| _nˆ | _| S )Nr$   )rÓ   r“   r‘   )r   )râ   r   r	   Ú	set_regexB  s    
zTOKEN.<locals>.set_regexr   )râ   rÿ   r   )râ   r	   ÚTOKENA  s    r   )NN)$rS   rU   rj   re   rK   r>   rO   rÙ   Z
StringTypeZUnicodeTyperq   ÚAttributeErrorr   Úbytesrk   rÄ   r¥   r   rB   r   r   r!   r%   r“   r™   rX   rl   r§   r³   r´   r¦   ÚVERBOSErô   rþ   r   ÚTokenr   r   r   r	   Ú<module>"   sD   
  F
(  3
 @
"
