ó
    jñ:i  ã                   ó`   • S SK r  " S S\5      r " S S\5      r " S S\5      rS rS	 rS
 rg)é    Nc                   ó,   • \ rS rSrSrSrSS jrS rSrg)	ÚCoordé   zuCoordinates of a syntactic element. Consists of:
- File name
- Line number
- (optional) column number, for the Lexer
)ÚfileÚlineÚcolumnÚ__weakref__Nc                 ó(   • Xl         X l        X0l        g ©N©r   r   r   )Úselfr   r   r   s       ÚV/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/pycparser/plyparser.pyÚ__init__ÚCoord.__init__   s   € ØŒ	ØŒ	Ø�ó    c                 ó†   • U R                   < SU R                  < 3nU R                  (       a  USU R                  -  -  nU$ )NÚ:z:%sr   )r   Ústrs     r   Ú__str__ÚCoord.__str__   s2   € ØŸœ D§I£IÐ.ˆØ�;�;˜˜u t§{¡{Ñ2Ñ2˜Øˆ
r   )r   r   r   r   )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__r   r   Ú__static_attributes__© r   r   r   r      s   † ñð
 :€Iôõ
r   r   c                   ó   • \ rS rSrSrg)Ú
ParseErroré   r   N)r   r   r   r   r   r   r   r   r    r       s   † šTr   r    c                   ó0   • \ rS rSrS rSS jrS rS rSrg)	Ú	PLYParseré"   c                 ó†   • US-   nS nU< SU< 3Ul         SU-  Ul        [        U R                  UR                  U5        g)zmGiven a rule name, creates an optional ply.yacc rule
for it. The name of the optional rule is
<rulename>_opt
Ú_optc                 ó   • US   US'   g )Né   r   r   )r   Úps     r   ÚoptruleÚ+PLYParser._create_opt_rule.<locals>.optrule*   s   € Ø�Q‘4ˆAˆaŠDr   z : empty
| zp_%sN)r   r   ÚsetattrÚ	__class__)r   ÚrulenameÚoptnamer*   s       r   Ú_create_opt_ruleÚPLYParser._create_opt_rule#   sD   € ð
 ˜VÑ#ˆò	ó 18ºÐBˆŒØ! GÑ+ˆÔÜ�—‘ × 0Ñ 0°'Õ:r   Nc                 ó@   • [        U R                  R                  UUS9$ )Nr   )r   ÚclexÚfilename)r   Úlinenor   s      r   Ú_coordÚPLYParser._coord1   s"   € ÜØ—Y‘Y×'Ñ'ØØñð 	r   c                 óü   • UR                   R                   R                  R                  SSUR                  U5      5      nUS:  a  SnUR                  U5      U-
  nU R	                  UR                  U5      U5      $ )z¶Returns the coordinates for the YaccProduction object 'p' indexed
with 'token_idx'. The coordinate includes the 'lineno' and
'column'. Both follow the lex semantic, starting from 1.
Ú
r   éÿÿÿÿ)ÚlexerÚlexdataÚrfindÚlexposr6   r5   )r   r)   Ú	token_idxÚlast_crr   s        r   Ú_token_coordÚPLYParser._token_coord7   sh   € ð
 —'‘'—-‘-×'Ñ'×-Ñ-¨d°A°q·x±xÀ	Ó7JÓKˆØ�Q‹;ØˆGØ—(‘(˜9Ó%¨Ñ1ˆØ�{‰{˜1Ÿ8™8 IÓ.°Ó7Ð7r   c                 ó&   • [        U< SU< 35      e)Nz: )r    )r   ÚmsgÚcoords      r   Ú_parse_errorÚPLYParser._parse_errorB   s   € Ü£UªCÐ0Ó1Ð1r   r   r   )	r   r   r   r   r0   r6   rA   rF   r   r   r   r   r#   r#   "   s   † ò;ôò	8õ2r   r#   c                  ó   ^ • U 4S jnU$ )aÁ  Decorator to create parameterized rules.

Parameterized rule methods must be named starting with 'p_' and contain
'xxx', and their docstrings may contain 'xxx' and 'yyy'. These will be
replaced by the given parameter tuples. For example, ``p_xxx_rule()`` with
docstring 'xxx_rule  : yyy' when decorated with
``@parameterized(('id', 'ID'))`` produces ``p_id_rule()`` with the docstring
'id_rule  : ID'. Using multiple tuples produces multiple rules.
c                 ó   >• TU l         U $ r   )Ú_params)Ú	rule_funcÚparamss    €r   ÚdecorateÚparameterized.<locals>.decorateP   s   ø€ Ø"ˆ	ÔØÐr   r   )rL   rM   s   ` r   ÚparameterizedrO   F   s   ø€ õð €Or   c                 ó.  • Sn[        U 5       Hƒ  nUR                  S5      (       d  M  [        X5      n[        US5      (       d  M9  [	        X5        UR
                  b  [        X5        M^  U(       a  Mg  [        R                  " S[        SS9  SnM…     U $ )z‡Class decorator to generate rules from parameterized rule templates.

See `parameterized` for more information on parameterized rules.
FÚp_rJ   z@parsing methods must have __doc__ for pycparser to work properlyé   )Ú
stacklevelT)
ÚdirÚ
startswithÚgetattrÚhasattrÚdelattrr   Ú_create_param_rulesÚwarningsÚwarnÚRuntimeWarning)ÚclsÚissued_nodoc_warningÚ	attr_nameÚmethods       r   Útemplatera   V   s†   € ð
 !ÐÜ˜–Xˆ	Ø×Ñ ×%Ó%Ü˜SÓ,ˆFÜ�v˜y×)Ó)ä˜Ô'ð —>‘>Ñ-Ü'¨Ö4ß-Ð-Ü—M’MØZÜ&Ø#$ò&ð ,0Ò(ñ) ð* €Jr   c                 ó  ^• TR                    Hs  u  p#U4S jnTR                  R                  SU5      R                  SU5      Ul        TR                  R                  SU5      Ul        [	        XR                  U5        Mu     g)a  Create ply.yacc rules based on a parameterized rule function

Generates new methods (one per each pair of parameters) based on the
template rule function `func`, and attaches them to `cls`. The rule
function's parameters must be accessible via its `_params` attribute.
c                 ó   >• T" X5        g r   r   )r   r)   Úfuncs     €r   Ú
param_ruleÚ'_create_param_rules.<locals>.param_rule}   s
   ø€ Ù��Mr   ÚxxxÚyyyN)rJ   r   Úreplacer   r,   )r]   rd   rg   rh   re   s    `   r   rY   rY   t   sm   ø€ ð —L”L‰ˆõ	ð "Ÿ\™\×1Ñ1°%¸Ó=×EÑEÀeÈSÓQˆ
ÔØ"Ÿm™m×3Ñ3°E¸3Ó?ˆ
Ôô 	�×(Ñ(¨*Ö5ò !r   )	rZ   Úobjectr   Ú	Exceptionr    r#   rO   ra   rY   r   r   r   Ú<module>rl      s<   ðó ôˆFô ô$ "�Ô !ô!2�ô !2òHò ó<6r   