/ lib / pycparser / ply / lex.pyc
lex.pyc
  1  o

  2  U��c���
  3  @s:dZdZddlZddlZddlZddlZddlZddlZzejej	fZ
  4  Wn
ey1ee
fZ
  5  Ynwe�d�ZGdd�de�ZGdd�de�ZGdd	�d	e�ZGd
  6  d�de�ZGdd
�d
�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�ZGdd�de�Zdddddeej�ddddf
  7  dd�Z d$d d!�Z!d"d#�Z"e"Z#dS)%z3.10�Nz^[a-zA-Z0-9_]+$c@seZdZdd�ZdS)�LexErrorcCs|f|_||_dS�N)�args�text)�self�message�s�r	��C:\Users\Jacks.GUTTSPC\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\pycparser\ply\lex.py�__init__:s
  8  zLexError.__init__N)�__name__�
  9  __module__�__qualname__rr	r	r	r
 10  r9src@�eZdZdd�Zdd�ZdS)�LexTokencCsd|j|j|j|jfS)NzLexToken(%s,%r,%d,%d))�type�value�lineno�lexpos�rr	r	r
 11  �__str__A�zLexToken.__str__cCst|�Sr)�strrr	r	r
 12  �__repr__DszLexToken.__repr__N)rr
rrrr	r	r	r
 13  r@�rc@s4eZdZdd�Zdd�Zdd�Zdd�ZeZeZd	S)
 14  �	PlyLoggercCs
 15  ||_dSr��f)rrr	r	r
 16  rLs
 17  zPlyLogger.__init__cOs|j�||d�dS)N�
 18  �r�write�r�msgr�kwargsr	r	r
 19  �criticalOrzPlyLogger.criticalcO�|j�d||d�dS)Nz	WARNING: rrr!r	r	r
 20  �warningR�zPlyLogger.warningcOr%)NzERROR: rrr!r	r	r
 21  �errorUr'zPlyLogger.errorN)	rr
rrr$r&r(�info�debugr	r	r	r
 22  rKsrc@r)�
 23  NullLoggercC�|Srr	)r�namer	r	r
 24  �__getattribute__^�zNullLogger.__getattribute__cOr,rr	)rrr#r	r	r
 25  �__call__ar/zNullLogger.__call__N)rr
rr.r0r	r	r	r
 26  r+]rr+c@s|eZdZdd�Zddd�Zddd�Zd	d
 27  �Zdd�Zd
d�Zdd�Z	dd�Z
 28  dd�Zdd�Zdd�Z
dd�Zdd�ZeZdS)�LexercCs�d|_d|_i|_i|_i|_d|_g|_d|_i|_i|_	i|_
 29  d|_d|_d|_
d|_d|_d|_d|_d|_d|_d|_d|_d|_dS)N�INITIALr��F)�lexre�	lexretext�
 30  lexstatere�lexstateretext�lexstaterenames�lexstate�
lexstatestack�lexstateinfo�lexstateignore�lexstateerrorf�lexstateeoff�
 31  lexreflags�lexdatar�lexlen�	lexerrorf�lexeoff�	lextokens�	lexignore�lexliterals�	lexmoduler�lexoptimizerr	r	r
 32  rts.
 33  zLexer.__init__Nc	Cs�t�|�}|rei}|j��D]:\}}g}|D]&\}}g}	|D]}
 34  |
 35  r&|
 36  ds,|	�|
 37  �q|	�t||
 38  dj�|
 39  df�qq|�||	f�|||<q||_i|_|j��D]
\}}t||j�|j|<qT||_|S�Nrr4)�copyr7�items�append�getattrrr>rH)r�object�cZnewtab�key�ritemZnewre�cre�findexZ	newfindexr�efr	r	r
 40  �clone�s*
 41  
 42   �
 43  zLexer.cloner3c	Cs�t|tj�r
 44  td��|�d�d}tj�||�d}t|d���}|�	d|t
 45  f�|�	dtt��|�	dtt
|j���|�	d	t|j��|�	d
 46  t|j��|�	dt|j��i}|j��D](\}}g}	t||j||j|�D]\\}
 47  }}}
|	�|t||
�f�qu|	||<qc|�	dt|��|�	d
t|j��i}|j��D]
\}}|r�|jnd||<q�|�	dt|��i}|j��D]
\}}|r�|jnd||<q�|�	dt|��Wd�dS1s�wYdS)Nz&Won't overwrite existing lextab module�.�����z.py�wzJ# %s.py. This file automatically created by PLY (version %s). Don't edit!
 48  z_tabversion   = %s
 49  z_lextokens    = set(%s)
 50  z_lexreflags   = %s
 51  z_lexliterals  = %s
 52  z_lexstateinfo = %s
 53  z_lexstatere   = %s
 54  z_lexstateignore = %s
 55  z_lexstateerrorf = %s
 56  z_lexstateeoff = %s
 57  )�
 58  isinstance�types�
 59  ModuleType�IOError�split�os�path�join�openr �__version__�repr�__tabversion__�tuplerEr@rGr<r7rL�zipr8r9rM�_funcs_to_namesr=r>rr?)r�lextab�	outputdirZ
basetabmodule�filename�tfZtabre�	statename�lre�titem�pat�funcZretext�renamesZtaberrrUZtabeofr	r	r
 60  �writetab�s8&
 61  "�zLexer.writetabcCs@t|tj�r	|}ntd|�tj|}t|dd�tkr td��|j	|_
 62  |j|_|j
|_|j
 63  t|j�B|_|j|_|j|_i|_i|_|j��D](\}}g}g}|D]\}}	|�t�||j�t|	|�f�qR||j|<||j|<qHi|_|j��D]\}}
 64  ||
 65  |j|<qyi|_|j ��D]\}}
 66  ||
 67  |j|<q�|�!d�dS)N�	import %s�_tabversionz0.0zInconsistent PLY versionr2)"rZr[r\�exec�sys�modulesrNre�ImportError�
 68  _lextokensrE�_lexreflagsr@�_lexliteralsrG�set�
lextokens_all�
_lexstateinfor<�_lexstateignorer=r7r8�_lexstatererLrM�re�compile�_names_to_funcsr>�_lexstateerrorfr?�
_lexstateeoff�begin)rZtabfile�fdictrirmrnroZtxtitemrp�	func_namerUr	r	r
 69  �readtab�s8
 70   
 71  z
Lexer.readtabcCs8|dd�}t|t�std��||_d|_t|�|_dS)Nr4zExpected a stringr)rZ�StringTypes�
 72  ValueErrorrAr�lenrB)rrrPr	r	r
 73  �input�s
 74  zLexer.inputcCsd||jvr	td��|j||_|j||_|j�|d�|_|j�|d�|_	|j
 75  �|d�|_||_dS)NzUndefined stater3)
r7r�r5r8r6r=�getrFr>rCr?rDr:�r�stater	r	r
 76  r�s
 77  
 78  zLexer.begincCs|j�|j�|�|�dSr)r;rMr:r�r�r	r	r
 79 80  push_stateszLexer.push_statecCs|�|j���dSr)r�r;�poprr	r	r
 81  �	pop_stateszLexer.pop_statecCs|jSr)r:rr	r	r
 82  �
current_state!szLexer.current_statecCs|j|7_dSr)r)r�nr	r	r
 83  �skip'sz
 84  Lexer.skipcCsx|j}|j}|j}|j}||k�r
 85  |||vr|d7}q|jD]v\}}|�||�}|s,qt�}|��|_|j	|_	||_|j
 86  }	||	\}
 87  |_|
 88  sY|jrS|��|_|S|��}n�|��}||_
||_||_|
 89  |�}|st|j}|j}n�|js�|j|jvr�td|
 90  jj|
 91  jj|
 92  j|jf||d���|S|||jvr�t�}|||_|j	|_	|j|_||_|d|_|S|jr�t�}|j|d�|_|j	|_	d|_||_
||_||_|�|�}||jkr�td||||d���|j}|s�q|S||_td|||f||d���||ks|j�r+t�}d|_d|_|j	|_	||_||_
||_|�|�}|S|d|_|jdu�r:td��dS)	Nr4z4%s:%d: Rule '%s' returned an unknown token type '%s'r(z&Scanning error. Illegal character '%s'z"Illegal character '%s' at index %d�eofr3z"No input string given with input())rrBrFrAr5�matchr�grouprr�	lastindexr�end�lexerZlexmatchrIr~r�__code__�co_filename�co_firstlinenorrGrCrD�RuntimeError)rrrBrFrAr5�lexindexfunc�m�tok�irqZnewtokr	r	r
 93  �token1s�
 94  
 95  
 96  �
 97  �
 98  
 99  
100  
101  �V
102  
103  zLexer.tokencCr,rr	rr	r	r
104  �__iter__�r/zLexer.__iter__cCs|��}|dur
105  t�|Sr)r��
StopIteration)r�tr	r	r
106  �next�sz
107  Lexer.nextr)r3)rr
rrrVrsr�r�r�r�r�r�r�r�r�r��__next__r	r	r	r
108  r1ss
109  
110  %(

111  nr1cCst|d|j�S)N�regex)rN�__doc__)rqr	r	r
112113  _get_regex�sr�cCs0t�|�}|j��}|j|jkr|�|j�|Sr)rw�	_getframe�	f_globalsrK�f_locals�update)�levelsr�ldictr	r	r
114  �get_caller_module_dict�s
115  
116  
117  r�cCsFg}t||�D]\}}|r|dr|�||df�q|�|�q|SrJ)rgrM)�funclist�namelist�resultrr-r	r	r
118  rh�srhcCsDg}|D]}|r|dr|�||d|df�q|�|�q|SrJ)rM)r�r�r�r�r	r	r
119  r��sr�cCs\|sgSd�|�}zft�||�}dgt|j���d}|dd�}|j��D]=\}}	|�|d�}
120  t|
121  �t	j
122  t	jfvrH|
123  ||f||	<|||	<q'|
124  durd|||	<|�d�dkr\d||	<q'd||f||	<q'||fg|g|gfWSt
y�tt|�d�}|dkr�d}t|d|�|||�\}}
}t||d�|||�\}}}|||
|||fYSw)N�|r4�ignore_r�NN�)rar�r��max�
125  groupindex�valuesrLr�rr[�FunctionType�
126  MethodType�find�	Exception�intr��_form_master_re)Zrelist�reflagsr��toknamesr�r5r�Z
lexindexnamesrr��handler��llistrn�lnames�rlistZrre�rnamesr	r	r
127  r��s6
128  
129  
130  ��r�cCs�d}|�d�}t|dd�d�D]\}}||vr|dkrnq|dkr,t|d|��}nd}d|vr6t|�}d�||d��}||fS)Nr4�_�ANY)r2)r^�	enumeraterfra)r�namesZnonstate�partsr��part�statesZ	tokennamer	r	r
131  �_statetokens
132  �r�c@sfeZdZddd�Zdd�Zdd�Zd	d
133  �Zdd�Zd
d�Zdd�Z	dd�Z
134  dd�Zdd�Zdd�Z
dS)�LexerReflectNrcCsR||_d|_g|_||_ddi|_t�|_d|_|dur$tt	j
135  �|_dS||_dS)Nr2�	inclusiveF)r��
136  error_func�tokensr��	stateinfor}rxr(rrw�stderr�log)rr�r�r�r	r	r
137  r/s
138  "zLexerReflect.__init__cCs$|��|��|��|��dSr)�
139  get_tokens�get_literals�
140  get_states�	get_rulesrr	r	r
141  �get_all:szLexerReflect.get_allcCs|��|��|��|jSr)�validate_tokens�validate_literals�validate_rulesr(rr	r	r
142  �validate_allAszLexerReflect.validate_allcCsp|j�dd�}|s|j�d�d|_dSt|ttf�s&|j�d�d|_dS|s3|j�d�d|_dS||_dS)Nr�zNo token list is definedTztokens must be a list or tupleztokens is empty)r�r�r�r(rZ�listrfr�)rr�r	r	r
143  r�Hs
144  zLexerReflect.get_tokenscCsPi}|jD] }t�|�s|j�d|�d|_||vr!|j�d|�d||<qdS)NzBad token name '%s'TzToken '%s' multiply definedr4)r��_is_identifierr�r�r(r&)r�	terminalsr�r	r	r
145  r�\s
146  
147  
148  �zLexerReflect.validate_tokenscCs$|j�dd�|_|jsd|_dSdS)N�literalsr3)r�r�r�rr	r	r
149  r�gs
150  �zLexerReflect.get_literalscCshz |jD]}t|t�rt|�dkr|j�dt|��d|_qWdSty3|j�d�d|_YdSw)Nr4z.Invalid literal %s. Must be a single characterTzIInvalid literals specification. literals must be a sequence of characters)r�rZr�r�r�r(rd�	TypeError)rrPr	r	r
151  r�ms
152  ���zLexerReflect.validate_literalscCs�|j�dd�|_|jrzt|jttf�s|j�d�d|_dS|jD]Z}t|t�r.t|�dkr;|j�dt	|��d|_q!|\}}t|t
153  �sQ|j�dt	|��d|_q!|dksd|dksd|j�d	|�d|_q!||jvrt|j�d
154  |�d|_q!||j|<q!dSdS)Nr�z)states must be defined as a tuple or listTr�zMInvalid state specifier %s. Must be a tuple (statename,'exclusive|inclusive')zState name %s must be a stringr��	exclusivez:State type for state %s must be 'inclusive' or 'exclusive'zState '%s' already defined)r�r�r�rZrfr�r�r(r�rdr�r�)rrr-Z	statetyper	r	r
155  r�xs4
156  
157  
158  
159  �zLexerReflect.get_statesc	Csdd�|jD�}i|_i|_i|_i|_i|_i|_|jD]}g|j|<g|j|<qt|�dkr;|j	�
160  d�d|_
161  dS|D]�}|j|}t||j�\}}||j|<t|d�r�|dkre|D]}||j|<q\q=|dkrt|D]}||j|<qkq=|d	kr�|j
j}|j
j}|j	�
162  d
163  |||j�d|_
164  q=|D]}|j|�||f�q�q=t|t�r�|d	kr�|D]}||j|<q�d|vr�|j	�d|�q=|dkr�|j	�
165  d
|�d|_
166  q=|D]}|j|�||f�q�q=|j	�
167  d|�d|_
168  q=|j��D]
169  }|jdd�d�q�|j��D]}|jdd�dd�q�dS)NcSs g|]}|dd�dkr|�qS)Nr��t_r	)�.0rr	r	r
170171  <listcomp>�s z*LexerReflect.get_rules.<locals>.<listcomp>rz+No rules of the form t_rulename are definedTr0r(r��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 stringcSs|djjS�Nr4)r�r���xr	r	r
172  �<lambda>��z(LexerReflect.get_rules.<locals>.<lambda>)rQcSst|d�Sr�)r�r�r	r	r
173  r��r�)rQ�reverse)r�r��funcsym�strsymr��errorf�eoffr�r�r�r(r��hasattrr�r�r�rrMrZr�r&r��sort)	rZtsymbolsrrr�r��tokname�line�filer	r	r
174  r��sn
175  
176  
177  
178  
179  ���
180  ���zLexerReflect.get_rulescCsj|jD�]�}|j|D]�\}}|jj}|jj}t�|�}|j�|�|j	|}t
181  |tj�r0d}nd}|jj
}	|	|krH|j�d|||j�d|_q|	|krZ|j�d|||j�d|_qt|�sl|j�d|||j�d|_qz!t�d|t|�f|j�}
182  |
183  �d�r�|j�d	|||j�d|_Wqtjy�}z$|j�d
184  |||j|�dt|�vr�|j�d|||j�d|_WYd}~qd}~ww|j|D]x\}}
|j	|}|d
kr�|j�d|�d|_q�||jvr�|�d�dkr�|j�d||�d|_q�zt�d||
f|j�}
185  |
186  �d��r|j�d|�d|_Wq�tj�y<}z|j�d||�d|
v�r/|j�d|�d|_WYd}~q�d}~ww|j|�sS|j|�sS|j�d|�d|_|j�|d�}|�r�|}|jj}|jj}t�|�}|j�|�t
187  |tj��r|d}nd}|jj
}	|	|k�r�|j�d|||j�d|_|	|k�r�|j�d|||j�d|_q|jD]}|�|��q�dS)Nr�r4z'%s:%d: Rule '%s' has too many argumentsTz%%s:%d: Rule '%s' requires an argumentz2%s:%d: No regular expression defined for rule '%s'�
188  (?P<%s>%s)r3z<%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(r�r�rz-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 '\#'zNo rules defined for state '%s')r�r�r�r�r��inspect�	getmodulerx�addr�rZr[r��co_argcountr�r(rr�r�r�r�r�r�r�r�r�r��validate_module)rr��fnamerr�r��moduler��reqargs�nargsrP�er-�rZefuncr	r	r
189  r��s�
190  
191  
192  ���
193  �
194  ��
195  
196  
197  �
198  �zLexerReflect.validate_rulescCs�z	t�|�\}}Wn
199  tyYdSwt�d�}t�d�}i}|d7}|D]7}|�|�}|s4|�|�}|rY|�d�}	|�|	�}
200  |
201  sG|||	<nt�|�}|j	�
202  d|||	|
203  �d|_
204  |d7}q&dS)Nz\s*def\s+(t_[a-zA-Z_0-9]*)\(z\s*(t_[a-zA-Z_0-9]*)\s*=r4z7%s:%d: Rule %s redefined. Previously defined on line %dT)r�getsourcelinesr]r�r�r�r�r��
getsourcefiler�r()rr�lines�linen�fre�sre�	counthashr�r�r-�prevrkr	r	r
205  r@s.�
206  
207  
208  
209  
210  
211  
212  
213  
214  �zLexerReflect.validate_module)Nr)rr
rrr�r�r�r�r�r�r�r�r�rr	r	r	r
215  r�.s
216  Bgr�Fric
217  %
218  sh|durd}d}
219  ddi}t�}||_|	durttj�}	|r&|dur&ttj�}|r*|��rJ�fdd�t��D�}
t|
�}
220  d|
221  vrItj|
222  dj|
223  d<nt	d�}
224  |
225226  d	�}|rdt|t�rdd
227  |vrd|d
228  |}t
|
229  |	|d�}|��|sy|��rytd��|r�|r�z|�||
230  �|ja|ja|a|WSty�Ynw|r�|�d
|j�|�d|j�|�d|j�t�|_|jD]}|j�|�q�t|jttf�r�t|jd��� |j�|_!n|j|_!|jt|j!�B|_"|j}i}|D]Q}g}|j#|D]$\}}|j$j%}|j$j&}|�'d|t(|�f�|�r|�d|t(|�|�q�|j)|D]\}}|�'d||f�|�r4|�d|||��q|||<q�|�rC|�d�|D]4}t*||||
231  |j+�\}}}||j,|<||j-|<||j.|<|�rxt/|�D]
\}}|�d|||��qj�qE|�0�D]0\}}|dk�r�|dk�r�|j,|�1|j,d�|j-|�1|j-d�|j.|�1|j.d��q~||_2|j,d|_3|j-d|_4||_5|j6|_7|j7�
232  dd�|_8|j9|_:|j9�
233  dd�|_;|j;�s�|	�<d�|j=|_>|j=�
234  dd�|_?|�0�D]M\} }|dk�r| |j9v�r|	�<d| �| |j6v�r|j8�r|	�<d| ��q�|dk�r>| |j9v�r.|j9�
235  dd�|j9| <| |j6v�r>|j6�
236  dd�|j6| <�q�|ja|ja|a|�r�|�r�|du�r�t|t@jA��r^|j}!n'd
237  |v�rh|
238  d}!n|�Bd
239  �}"d
240  � |"dd��}#tCd|#�tDtj|#dd�}!tEjF�G|!�}z	|�H||�W|StI�y�}$z|	�<d||$f�WYd}$~$|Sd}$~$ww|S)Nrir2r�csg|]	}|t�|�f�qSr	)rN)r��k�rr	r
241  r�zszlex.<locals>.<listcomp>�__file__r
r��__package__rW)r�r�zCan't build lexerzlex: tokens   = %rzlex: literals = %rzlex: states   = %rrrz(lex: Adding rule %s -> '%s' (state '%s')z#lex: ==== MASTER REGEXS FOLLOW ====z"lex: state '%s' : regex[%d] = '%s'r3zNo t_error rule is definedr�z1No error rule is defined for exclusive state '%s'z2No ignore rule is defined for exclusive state '%s'rXrtz#Couldn't write lextab module %r. %s)Jr1rIrrwr��dir�dictrxrr�r�rZrr�r�r��SyntaxErrorr�r�r�r�ryr)r�r�r�r}rErr�rfrrarGr~r�r�r�r�rMr�r�r�r�r7r8r9r�rL�extendr<r5r6r@r�r=rFr�r>rCr&r�r?rDr[r\r^rvrNr_r`�dirnamersr])%rrOr*�optimizerir��nowarnrj�debuglog�errorlogr�r�Zlexobj�_items�pkgZlinfor��regexsr�Z
242  regex_listrrr�r�r-rr5Zre_textZre_namesr�r�styper�srcfiler��pkgnamerr	rr
243  �lex_s
244  
245  �
246  �
247  ��
248  
249  
250  
251  
252  ��
253  
254  �
255  �
256  
257  
258  
259  ���r(cCs�|s*ztjd}t|�}|��}|��Wnty)tj�d�tj��}Ynw|r0|j	}nt	}||�|r<|j
260  }nt
261  }	|�}|sFdStj�d|j|j|j
|jf�q?)Nr4z/Reading from standard input (type EOF to end):
262  Tz(%s,%r,%d,%d)
263  )rw�argvrb�read�close�
264  IndexError�stdoutr �stdinr�r�rrrr)r��datarkr�_input�_tokenr�r	r	r
265  �runmains.
266  � �r2cs�fdd�}|S)Ncs"t�d�rt��|_|S�|_|S)Nr0)r�r�r�r�rr	r
267  �	set_regexBs
268  
269  
270  �zTOKEN.<locals>.set_regexr	)rr4r	r3r
271  �TOKENAsr5r�)$rcrer�rwr[rKr_rZ
272  StringType�UnicodeTyper��AttributeErrorr�bytesr�r�r�rrOrrr+r1r�r�rhr�r�r�r�r��VERBOSEr(r2r5�Tokenr	r	r	r
273  �<module>sJ!�
274  F
275  
(
276  3
277  �
278  A"