
    2h                        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	 ej        ej	        fZ
n# e$ r eefZ
Y nw xY wej        d         dk     rd Znd Z ej        d          Z G d de          Z G d	 d
e          Z G d de          Z G d de          Z G d d          Zd Zd Zd Zd Zd Zd Z G d de          ZddZ ddZ!d Z"e"Z#dS ) z3.5    N   c                     | j         S N)	func_codefs    L/home/metal/girl-os-victor/victor-clad/tools/message-buffers/clad/ply/lex.pyr   r   3   s
    {    c                     | j         S r   )__code__r   s    r	   r   r   6   s
    zr
   z^[a-zA-Z0-9_]+$c                       e Zd Zd ZdS )LexErrorc                 $    |f| _         || _        d S r   )argstext)selfmessagess      r	   __init__zLexError.__init__@   s    Zr
   N)__name__
__module____qualname__r    r
   r	   r   r   ?   s#            r
   r   c                       e Zd Zd Zd ZdS )LexTokenc                 <    d| j         | j        | j        | j        fz  S )NzLexToken(%s,%r,%d,%d))typevaluelinenolexposr   s    r	   __str__zLexToken.__str__F   s    &$)DJt{4;)WWWr
   c                      t          |           S r   )strr!   s    r	   __repr__zLexToken.__repr__H   s    4yyr
   N)r   r   r   r"   r%   r   r
   r	   r   r   E   s5        X X X    r
   r   c                   .    e Zd Zd Zd Zd Zd ZeZeZdS )	PlyLoggerc                     || _         d S r   r   )r   r   s     r	   r   zPlyLogger.__init__O   s    r
   c                 F    | j                             ||z  dz              d S )N
r   writer   msgr   kwargss       r	   criticalzPlyLogger.criticalQ   s%    cDjD()))))r
   c                 L    | j                             d||z  z   dz              d S )Nz	WARNING: r*   r+   r-   s       r	   warningzPlyLogger.warningT   s*    [3:.566666r
   c                 L    | j                             d||z  z   dz              d S )NzERROR: r*   r+   r-   s       r	   errorzPlyLogger.errorW   s*    Y#*-455555r
   N)	r   r   r   r   r0   r2   r4   infodebugr   r
   r	   r'   r'   N   sV          * * *7 7 76 6 6 DEEEr
   r'   c                       e Zd Zd Zd ZdS )
NullLoggerc                     | S r   r   )r   names     r	   __getattribute__zNullLogger.__getattribute___       r
   c                     | S r   r   )r   r   r/   s      r	   __call__zNullLogger.__call__a   r<   r
   N)r   r   r   r;   r>   r   r
   r	   r8   r8   ^   s2              r
   r8   c                   d    e Zd Zd ZddZd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S )Lexerc                 ,   d | _         d | _        i | _        i | _        i | _        d| _        g | _        d | _        i | _        i | _	        d| _
        d | _        d| _        d| _        d | _        d | _        d| _        d| _        d | _        d| _        d| _        d S )NINITIALr       )lexre	lexretext
lexstaterelexstateretextlexstaterenameslexstatelexstatestacklexstateinfolexstateignorelexstateerrorf
lexreflagslexdatar    lexlen	lexerrorf	lextokens	lexignorelexliterals	lexmoduler   lexoptimizer!   s    r	   r   zLexer.__init__s   s    
  !!   r
   Nc           
         t          j         |           }|ri }| j                                        D ]\  }}g }|D ]b\  }}g }	|D ]X}
|
r|
d         s|	                    |
           "|	                    t	          ||
d         j                  |
d         f           Yc|                    ||	f           |||<   ||_        i |_        | j                                        D ]"\  }}t	          ||j                  |j        |<   #||_        |S Nr   rD   )copyrG   itemsappendgetattrr   rN   rV   )r   objectcnewtabkeyritemnewrecrefindex	newfindexr   efs               r	   clonezLexer.clone   sM   IdOO  	!F"o3355 
$ 
$
U#( P PKC!#Y$ P P ! &1 &&--a000%"))76!A$-+H+H1*NOOOO	P
 c)_---#s!AL"A.4466 D DR(/r{(C(C %% AKr
   rC   c           
         t          |t          j                  rd S |                    d          d         }t          j                            ||          dz   }t          |d          }|                    d|dt          d           |                    dt          t                    z             |                    d	t          | j                  z             |                    d
t          | j                  z             |                    dt          | j                  z             |                    dt          | j                  z             i }| j        d         }g }|D ],}	|	d         D ]!}
|
r|
d         r|                    |
           "-| j                                        D ]~\  }}g }t'          t)          |                    D ]U}|                    | j        |         |         t-          ||         d         | j        |         |                   f           V|||<   |                    dt          |          z             |                    dt          | j                  z             i }| j                                        D ]\  }}|r|j        ||<   d ||<   |                    dt          |          z             |                                 d S )N.z.pywz# z5.py. This file automatically created by PLY (version z). Don't edit!
z_tabversion   = %s
z_lextokens    = %s
z_lexreflags   = %s
z_lexliterals  = %s
z_lexstateinfo = %s
rB   rD   r   z_lexstatere   = %s
z_lexstateignore = %s
z_lexstateerrorf = %s
)
isinstancetypes
ModuleTypesplitospathjoinopenr,   __version__repr__tabversion__rS   rO   rU   rL   rG   r\   r[   rangelenrH   _funcs_to_namesrI   rM   rN   r   close)r   tabfile	outputdirbasetabfilenamefilenametftabreinitialinitialfuncspartr   ra   lretitemitaberrrg   s                    r	   writetabzLexer.writetab   s   ge.// 	F!--,,R07<<	/::5@(3
bibibijujujuvwww
'$~*>*>>???
'$t~*>*>>???
'$t*?*??@@@
'$t/?*@*@@AAA
'$t/@*A*AABBB/), 	+ 	+D!W + + +1 + ''***+ --// 	  	 HCUCHHoo v v,, 3C 8 ;OCPQFSTIVZVjknVopqVr<s<stuuuuU3ZZ
'$u++5666
)D1D,E,EEFFF*0022 	% 	%GC % "&++ $&++
)DLL8999





r
   c           	         t          |t          j                  r|}nGt          j        d         dk     rt          d|z             ni }t          d|z  ||           |d         }t          |dd          t          k    rt          d          |j	        | _
        |j        | _        |j        | _        |j        | _        |j        | _        i | _        i | _        |j                                        D ]\  }}g }g }t/          t1          |                    D ]}	|                    t5          j        ||	         d         |j        t4          j        z            t;          ||	         d         |          f           |                    ||	         d                    || j        |<   || j        |<   i | _        |j                                        D ]\  }}
||
         | j        |<   |                      d	           d S )
Nr   r   zimport %s as lextablextab_tabversionz0.0zInconsistent PLY versionrD   rB   )!rm   rn   ro   sysversion_infoexecr]   rw   ImportError
_lextokensrS   _lexreflagsrO   _lexliteralsrU   _lexstateinforL   _lexstateignorerM   rG   rH   _lexstaterer[   rx   ry   r\   recompileVERBOSE_names_to_funcsrN   _lexstateerrorfbegin)r   r|   fdictr   envra   r   r   txtitemr   rg   s              r	   readtabzLexer.readtab   s   ge.// 	'FF"Q&&*W45555*W4c#>>>X6-...@@8999$/$0$1$2$4!!)//11 	0 	0GCUWCHHoo , ,,,
3q6!9V5G"*5T U UVefijkflmnfopuVvVvwxxx..Q++++$)T_S!(/T %%!,2244 	2 	2FC(-b	T %%

9r
   c                     |d d         }t          |t                    st          d          || _        d| _        t          |          | _        d S )NrD   zExpected a stringr   )rm   StringTypes
ValueErrorrP   r    ry   rQ   )r   r   r_   s      r	   inputzLexer.input   sO    bqbE!K(( 	20111!ffr
   c                    || j         vrt          d          | j         |         | _        | j        |         | _        | j                            |d          | _        | j                            |d           | _	        || _
        d S )NzUndefined staterC   )rG   r   rE   rH   rF   rM   getrT   rN   rR   rJ   r   states     r	   r   zLexer.begin  sz    ''.///_U+
,U3,00r::,00t<<r
   c                 n    | j                             | j                   |                     |           d S r   )rK   r\   rJ   r   r   s     r	   
push_statezLexer.push_state  s3    !!$-000

5r
   c                 ^    |                      | j                                                   d S r   )r   rK   popr!   s    r	   	pop_statezLexer.pop_state  s)    

4%))++,,,,,r
   c                     | j         S r   )rJ   r!   s    r	   current_statezLexer.current_state   s
    }r
   c                 &    | xj         |z  c_         d S r   )r    )r   ns     r	   skipz
Lexer.skip&  s    qr
   c                    | j         }| j        }| j        }| j        }||k     r||         |v r|dz  }| j        D ]X\  }}|                    ||          }|st                      }|                                |_        | j	        |_	        ||_         |j
        }	||	         \  }
|_        |
s;|j        r|                                | _         |c S |                                } n|                                }| |_        || _        || _          |
|          }|s| j         }| j        } n| j        s[|j        | j        vrMt#          dt%          |
          j        t%          |
          j        |
j        |j        fz  ||d                    |c S ||         | j        v rFt                      }||         |_        | j	        |_	        |j        |_        ||_         |dz   | _         |S | j        rt                      }| j        |d          |_        | j	        |_	        d|_        | |_        ||_         || _         |                     |          }|| j         k    r!t#          d||         z  ||d                    | j         }|sj|S || _         t#          d||         |fz  ||d                    ||k     |dz   | _         | j        t1          d          d S )NrD   z4%s:%d: Rule '%s' returned an unknown token type '%s'r4   z&Scanning error. Illegal character '%s'z"Illegal character '%s' at index %dz"No input string given with input())r    rQ   rT   rP   rE   matchr   groupr   r   	lastindexr   endlexerlexmatchrW   rS   r   r   co_filenameco_firstlinenor   rU   rR   RuntimeError)r   r    rQ   rT   rP   rE   lexindexfuncmtokr   funcnewtoks               r	   tokenzLexer.token0  s   KKN	Lvoov)++! '+j Kr Kr"lKK//"( jjGGII	![
#
K ,QSX h $%EEGGdk jjj uuwwfe !	 !$c   $F $IE ' J!;$.88&']%dOO749W M6;a8 (88?8HJ J J  6?d&666"**C 'CI!%CJ"yCH!'CJ"(1*DKJ > ""**C $VWW 5CI!%CJ&CH $CI!'CJ"(DK!^^C00F,,&'OSZ[aSb'celmsmtmteuvvv![F!+8!M$CwvW]F^^`ghnhoho`pqqqe vooh qj< DEEEtr
   c                     | S r   r   r!   s    r	   __iter__zLexer.__iter__  r<   r
   c                 @    |                                  }|t          |S r   )r   StopIteration)r   ts     r	   nextz
Lexer.next  s    JJLL9r
   r   )rC   )r   r   r   r   rh   r   r   r   r   r   r   r   r   r   r   r   __next__r   r
   r	   r@   r@   r   s          4   <& & & &V     J      - - -    ^ ^ ^B     HHHr
   r@   c                 .    t          | d| j                  S )Nregex)r]   __doc__)r   s    r	   
_get_regexr     s    4---r
   c                 (   	 t           # t           $ r~ t          j                    \  }}}|j        }| dk    r|j        }| dz  } | dk    |j                                        }|j        |j        k    r|                    |j                   |cY S w xY wrY   )	r   r   exc_infotb_framef_back	f_globalsrZ   f_localsupdate)levelsebr   r   ldicts         r	   get_caller_module_dictr     s     
 
 
!AJqjjAaKF qjj   "";!*$$LL$$$
s   	 BBBc                     g }t          | |          D ]B\  }}|r&|d         r|                    ||d         f           -|                    |           C|S rY   )zipr\   )funclistnamelistresultr   r:   s        r	   rz   rz     sn    Fhx((  $ 
!A$ 
]]D!A$<((((]]1Mr
   c                     g }| D ]K}|r2|d         r*|                     ||d                  |d         f           6|                     |           L|S rY   )r\   )r   r   r   r   s       r	   r   r     si    V   1Q4 mmU1Q4[1.////mmA]r
   c                 B   | sg S d                     |           }	 t          j        |t          j        |z            }d gt	          |j                                                  dz   z  }|d d          }|j                                        D ]\  }}	|                    |d           }
t          |
          t          j        t          j        fv r|
||         f||	<   |||	<   U|
1|||	<   |                    d          dk    rd||	<   {d ||         f||	<   ||fg|g|gfS # t          $ rt t          t!          |           dz            }|dk    rd}t#          | d |         |||          \  }}}t#          | |d          |||          \  }}}||z   ||z   ||z   fcY S w xY w)N|rD   ignore_r   NN   )rs   r   r   r   max
groupindexvaluesr[   r   r   rn   FunctionType
MethodTypefind	Exceptionintry   _form_master_re)relistreflagsr   toknamesr   rE   r   lexindexnamesr   r   handler   llistr   lnamesrlistrrernamess                     r	   r   r     s   "9HHVE3
5g!566 x3u'7'>'>'@'@#A#A!#CD$QQQ#))++ 
	: 
	:CAaYYq&&FF|| 2E4DEEE#)(1+"6Q#$a  ##$a 66)$$q((&1LOO'+Xa[&9LO|$%ug}o== 3 3 3FA66q1,VBQBZhOOsF,VABBZhOOsFU{CGVF]22223s   DD   A;FFc                 H   d}|                      d          }t          dt          |                    D ]}||         |vr||         dk    r n|dk    rt          |d|                   }nd}d|v rt          |          }d                    ||d                    }||fS )NrD   _ANY)rB   )rp   rx   ry   tuplers   )r   namesnonstatepartsr   states	tokennames          r	   _statetokenr    s    HGGCLLE1SZZ   ? ?aE!!eAh%&7&71uueAaCj!!vvvevqrr##I9r
   c                   R    e Zd ZddZd Zd Zd Zd Zd Zd	 Z	d
 Z
d Zd Zd ZdS )LexerReflectNr   c                     || _         d | _        g | _        || _        ddi| _        i | _        d| _        | t          t          j	                  | _
        d S || _
        d S )NrB   	inclusiver   )r   
error_functokensr   	stateinfomodulesr4   r'   r   stderrlog)r   r   r  r   s       r	   r   zLexerReflect.__init__+  s]    
!%4
; ,,DHHHDHHHr
   c                     |                                   |                                  |                                  |                                  d S r   )
get_tokensget_literals
get_states	get_rulesr!   s    r	   get_allzLexerReflect.get_all:  sJ    r
   c                     |                                   |                                  |                                  | j        S r   )validate_tokensvalidate_literalsvalidate_rulesr4   r!   s    r	   validate_allzLexerReflect.validate_allA  s@       zr
   c                 \   | j                             dd           }|s#| j                            d           d| _        d S t	          |t
          t          f          s#| j                            d           d| _        d S |s#| j                            d           d| _        d S || _        d S )Nr  zNo token list is definedrD   ztokens must be a list or tupleztokens is empty)r   r   r  r4   rm   listr   r  )r   r  s     r	   r  zLexerReflect.get_tokensH  s    .. 	HNN5666DJF&$// 	HNN;<<<DJF 	HNN,---DJFr
   c                     i }| j         D ]b}t                              |          s"| j                            d|           d| _        ||v r| j                            d|           d||<   cd S )NzBad token name '%s'rD   zToken '%s' multiply defined)r  _is_identifierr   r  r4   r2   )r   	terminalsr   s      r	   r  zLexerReflect.validate_tokens\  s    	 	 	A!''** 4Q777
I~~  !>BBBIaLL	 	r
   c                 f    | j                             dd          | _        | j        s	d| _        d S d S )NliteralsrC   )r   r   r  r!   s    r	   r  zLexerReflect.get_literalsg  s8    
z"55} 	DMMM	 	r
   c                 .   	 | j         D ]Y}t          |t                    rt          |          dk    r/| j                            dt          |                     d| _        Zd S # t          $ r% | j                            d           d| _        Y d S w xY w)NrD   z.Invalid literal %s. Must be a single characterzIInvalid literals specification. literals must be a sequence of characters)r  rm   r   ry   r  r4   rv   	TypeError)r   r_   s     r	   r  zLexerReflect.validate_literalsm  s    	] # #!!K00 #CFFQJJHNN#SUYZ[U\U\]]]!"DJ# #
  	 	 	HNNfgggDJJJJ	s   A!A% %+BBc                 
   | j                             dd           | _        | j        rXt          | j        t          t
          f          s#| j                            d           d| _        d S | j        D ]}t          |t                    rt          |          dk    r0| j                            dt          |                     d| _        [|\  }}t          |t                    s0| j                            dt          |                     d| _        |dk    s)|dk    s#| j                            d	|           d| _        || j        v r$| j                            d
|           d| _        || j        |<   d S d S )Nr   z)states must be defined as a tuple or listrD   r   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   r   r   rm   r   r  r  r4   ry   rv   r   r  )r   r   r:   	statetypes       r	   r  zLexerReflect.get_statesx  s   jnnXd33; 	9t{E$<88 9(..!LMMM $***; 9 9a)!E22 (c!ffkk#x~~.}  C  DE  F  F   G   G   G,-tz'*+i)${;; (#x~~.NPTUYPZPZ[[[,-tz' )[ 8 8I<T<T#x~~.jkoppp,-tz'4>11#x~~.J4PPP,-tz'/8t,,/	9 	9
9 9r
   c                    d | j         D             }i | _        i | _        i | _        i | _        i | _        | j        D ]}g | j        |<   g | j        |<   t          |          dk    r#| j        	                    d           d| _	        d S |D ]}| j         |         }t          || j                  \  }}|| j        |<   t          |d          r|dk    r|D ]}|| j        |<   X|dk    rRt          |          j        }t          |          j        }| j        	                    d|||j                   d| _	        |D ]$}| j        |                             ||f           %t#          |t$                    r|dk    r0|D ]}|| j        |<   d	|v r| j                            d
|           #|dk    r$| j        	                    d|           d| _	        M|D ]$}| j        |                             ||f           %v| j        	                    d|           d| _	        | j                                        D ]F}t*          j        d         dk     r|                    d            /|                    d            G| j                                        D ]G}t*          j        d         dk     r|                    d            /|                    d d           Hd S )Nc                 .    g | ]}|d d         dk    |S )Nr   t_r   ).0r   s     r	   
<listcomp>z*LexerReflect.get_rules.<locals>.<listcomp>  s%    <<<!QrrUd]]A]]]r
   r   z+No rules of the form t_rulename are definedrD   r>   r4   ignorez,%s:%d: Rule '%s' must be defined as a string\z#%s contains a literal backslash '\''Rule '%s' must be defined as a functionz&%s not defined as a function or stringr   c                     t          t          | d                   j        t          |d                   j                  S NrD   )cmpr   r   xys     r	   <lambda>z(LexerReflect.get_rules.<locals>.<lambda>  s-    3y1'EiPQRSPTooFd#e#e r
   c                 6    t          | d                   j        S r,  )r   r   r/  s    r	   r1  z(LexerReflect.get_rules.<locals>.<lambda>  s    Yqt__%C r
   )ra   c                     t          | d                   t          |d                   k     t          | d                   t          |d                   k    z
  S r,  ry   r.  s     r	   r1  z(LexerReflect.get_rules.<locals>.<lambda>  s>    C!IIAaD		$9c!A$ii#aPQd))>S#T r
   c                 ,    t          | d                   S r,  r5  r3  s    r	   r1  z(LexerReflect.get_rules.<locals>.<lambda>  s    S1YY r
   T)ra   reverse)r   r   funcsymstrsymr(  errorfr  ry   r  r4   r  hasattrr   r   r   r   r\   rm   r   r2   r   r   r   sort)	r   tsymbolsr   r   r   r   toknamelinefiles	            r	   r  zLexerReflect.get_rules  sS   <<tz<<<  	! 	!A!T\!_ T[^^x==AHNNHIIIDJF  	  	A
1A)!DN;;OFG&DM!q$$ g%%# + +)*A+(($Q<<6D$Q<<3DHNN#QRVW[\]\fggg!"DJJ# 6 6Q..!u55556A{++ h&&# + +)*Aqyy(()OPQRRR''HNN#LaPPP!"DJJ# 5 5A--qe44445 GKKK

 $$&& 	E 	EA"Q&&eeffff CCDDDD ##%% 	= 	=A"Q&&TTUUUU ..t<<<<	= 	=r
   c           
      	   | j         D ]}| j        |         D ]*\  }}t          |          j        }t          |          j        }t          j        |          }d| j        |<   | j        |         }t          |t          j                  rd}nd}t          |          j        }	|	|k    r*| j                            d|||j                   d| _        |	|k     r*| j                            d|||j                   d| _        t!          |          s+| j                            d|||j                   d| _        &	 t#          j        d|dt!          |          dt"          j        | j        z            }
|
                    d	          r)| j                            d
|||j                   d| _        # t"          j        $ rx t-          j                    \  }}}| j                            d|||j        |           dt!          |          v r"| j                            d|||j                   d| _        Y (w xY w| j        |         D ]V\  }}| j        |         }|dk    r#| j                            d|           d| _        <|| j        vr=|                    d          dk     r$| j                            d||           d| _        	 t#          j        d|d|dt"          j        | j        z            }
|
                    d	          r"| j                            d|           d| _        # t"          j        $ r] t-          j                    \  }}}| j                            d||           d|v r| j                            d|           d| _        Y Tw xY w| j        |         s/| j        |         s"| j                            d|           d| _        | j                            |d           }|r|}t          |          j        }t          |          j        }t          j        |          }d| j        |<   t          |t          j                  rd}nd}t          |          j        }	|	|k    r)| j                            d|||j                   d| _        |	|k     r)| j                            d|||j                   d| _        | j        D ]}|                     |           d S )NrD   r   z'%s:%d: Rule '%s' has too many argumentsz%%s:%d: Rule '%s' requires an argumentz2%s:%d: No regular expression defined for rule '%s'(?P<>)rC   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 '\#'r4   r*  r   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  r8  r   r   r   inspect	getmoduler	  r   rm   rn   r   co_argcountr  r4   r   r   r   r   r   r   r   r   r   r9  r  r   r:  r   validate_module)r   r   fnamer   r?  r@  moduler>  reqargsnargsr_   _etyper   _etracer:   refuncs                    r	   r  zLexerReflect.validate_rules  s   ^ ]	# ]	#E
 !L/ %# %#q ||2 ||/ *1--'(V$-.a!122  GGG!!07??HNN#LTRVWXWabbb!"DJ7??HNN#JDQUVWV`aaa!"DJ!!}} HNN#WX\]abcblmmm!"DJ
#

555*Q----#H"*W[WcJcddAwwr{{ ''egklpqrq{|||%&
x # # #),&FAwHNN#XZ^_cdednopqqqjmm++'`aefjlmlvwww!"DJJJ# +e, # #Q--g%%HNN#LdSSS!"DJ$+--',,y2I2IA2M2MHNN#RSWX_```!"DJ
#

444#:2:;TUUA ((_`deee&'x # # #),&FAwHNN#QRVWXYYYaxx(Z[_```!"DJJJ# <& t{5/A @GGG
 KOOE$//E # ||2 ||/ *1--'(V$a!122  GGG!!07??HNN#LTRVWXWabbb!"DJ7??HNN#JDQUVWV`aaa!"DJl 	) 	)F  ((((	) 	)s(   ?A9F::BI IA%L::A(N&%N&c                    t          j        |          \  }}t          j        d          }t          j        d          }i }|dz  }|D ]}|                    |          }|s|                    |          }|rk|                    d          }	|                    |	          }
|
s|||	<   n9t          j        |          }| j        	                    d|||	|
           d| _	        |dz  }d S )Nz\s*def\s+(t_[a-zA-Z_0-9]*)\(z\s*(t_[a-zA-Z_0-9]*)\s*=rD   z7%s:%d: Rule %s redefined. Previously defined on line %d)
rF  getsourcelinesr   r   r   r   r   getsourcefiler  r4   )r   rK  lineslinenfresre	counthashlr   r:   prevr   s               r	   rI  zLexerReflect.validate_moduleJ  s   -f55uj899j455	
 	 	A		!A !IIaLL #wwqzz }}T** #&+IdOO&4V<<HHNN#\]efklpquvvv!"DJQJEE	 	r
   )Nr   )r   r   r   r   r  r  r  r  r  r  r  r  r  rI  r   r
   r	   r  r  *  s                 (    	 	 	9 9 9>D= D= D=Na) a) a)X    r
   r  r   rC   c
           
      p    d }
ddi}t                      }||_        |	t          t          j                  }	|r|t          t          j                  }|r|  r+ fdt                     D             }t          |          }
nt          d          }
t          |
|	|          }|	                                 |s#|
                                rt          d          |r;|r9	 |                    ||
           |j        a|j        a|a|S # t           $ r Y nw xY w|rQ|                    d|j                   |                    d|j                   |                    d	|j                   i |_        |j        D ]}d
|j        |<   t-          |j        t.          t0          f          r@ t3          |j        d                                                   |j                  |_        n|j        |_        |j        }i }|D ]}g }|j        |         D ]}\  }}t;          |          j        }t;          |          j        }|                     d|dtC          |          d           |r%|                    d|tC          |          |           ~|j"        |         D ];\  }}|                     d|d|d           |r|                    d|||           <|||<   |r|                    d           |D ]}tG          ||         ||
|j$                  \  }}}||j%        |<   ||j&        |<   ||j'        |<   |r=tQ          tS          |                    D ] }|                    d||||                    !|*                                D ]\  }}|dk    r|dk    r|j%        |         +                    |j%        d                    |j&        |         +                    |j&        d                    |j'        |         +                    |j'        d                    ||_,        |j%        d         |_-        |j&        d         |_.        ||_/        |j0        |_1        |j1        2                    dd          |_3        |j4        |_5        |j4        2                    dd           |_6        |j6        s|	7                    d           |*                                D ]\  }}|dk    rF||j4        vr|	7                    d|           ||j0        vr|j3        r|	7                    d|           Q|dk    rX||j4        vr#|j4        2                    dd           |j4        |<   ||j0        vr#|j0        2                    dd          |j0        |<   |j        a|j        a|a|r|r|8                    ||           |S )NrB   r  c                 4    g | ]}|t          |          fS r   )r]   )r&  krK  s     r	   r'  zlex.<locals>.<listcomp>y  s(    ===A1WVA&&'===r
   r   )r  r   zCan't build lexerzlex: tokens   = %rzlex: literals = %rzlex: states   = %rrD   r   rB  rC  rD  z(lex: Adding rule %s -> '%s' (state '%s')z#lex: ==== MASTER REGEXS FOLLOW ====z"lex: state '%s' : regex[%d] = '%s'rC   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')9r@   rW   r'   r   r
  dirdictr   r  r  r  SyntaxErrorr   r   r   r   r   r5   r  r  r  rS   rm   r  r   r   rs   rU   r8  r   r   r   r\   r   r9  r   r   rG   rH   rI   rx   ry   r[   extendrL   rE   rF   rO   r(  rM   r   rT   r:  rN   rR   r2   r   )rK  r^   r6   optimizer   r   nowarnr}   debuglogerrorlogr   r  lexobj_itemslinfor   regexsr   
regex_listrJ  r   r?  r@  r:   rP  rE   re_textre_namesr   styper   s   `                              r	   lexro  f  s`   E{+IWWF!F SZ(( - ,,H v *====V===V&q)) 8G<<<E	MMOOO 3 	31222 	F 		NN6%(((LELEEM 	 	 	D	  =*EL999*EN;;;*EO<<< F\     %.$u.. ,4T%."34466;;ENKK"^ IF # #
 e, 	e 	eHE1Q<<.DQ<<+DeeeJqMMMMBCCC eHzZ[}}^cddd l5) 	X 	XFDddd1115666 XHaQVWWW"u  =;<<< Y Y#26%=u~#^#^ w#(% '.e$(0u% 	Y3w<<(( Y YB5!WUVZXXXX !(( U UeI%;"6"6u%,,V->y-IJJJ"5)001Fy1QRRR#E*11&2H2STTT#F$Y/FL,Y7FF "LF,002>>F "LF|''	$77F 75666 ??$$ 
D 
D%K%,&&##$WYZ[[[%,&&6+;&##$XZ[\\\k!!%,&&%*\%5%5i%E%E5<?%,&&%*\%5%5i%C%C5<? LELEE  *( *y)))Ms   %'D 
DDc                 $   |s	 t           j        d         }t          |          }|                                }|                                 nM# t
          $ r@ t           j                            d           t           j                                        }Y nw xY w| r| j	        }nt          } ||           | r| j
        }nt          }	  |            }|sd S t           j                            d|j        |j        |j        |j        fz             I)NrD   z/Reading from standard input (type EOF to end):
z(%s,%r,%d,%d)
)r   argvrt   readr{   
IndexErrorstdoutr,   stdinr   r   r   r   r   r    )r   datar   r   _input_tokenr   s          r	   runmainry    s    $	$x{HXA6688DGGIIII 	$ 	$ 	$JOPPP9>>##DDD	$  
F4LLL [fhhEE
*ch	3:cj-YYZZZ[s   A	A ABBc                       fd}|S )Nc                 `    t          d          rt                    | _        n| _        | S )Nr>   )r;  r   r   )r   rP  s    r	   	set_regexzTOKEN.<locals>.set_regex  s0    1Z   	 mmAGGAGr
   r   )rP  r|  s   ` r	   TOKENr}    s$         r
   )
NNr   r   r   r   r   rC   NNr   )$ru   rw   r   r   rn   rZ   rq   rF  
StringTypeUnicodeTyper   AttributeErrorr$   bytesr   r   r   r  r   r   r^   r   r'   r8   r@   r   r   rz   r   r   r  r  ro  ry  r}  Tokenr   r
   r	   <module>r     s  D  ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (#U%67KK   ,KKK A      .//
    y       v                  (h h h h h h h hp	. . .  ,     "3 3 3N  .u u u u u6 u u ux	M M M Mj[ [ [ [B   	s   - 	99