Ë
    ±éäg  ã                   ó`   — d dl Z  G d„ de«      Z G d„ de«      Z G d„ de«      Zd„ Zd	„ Zd
„ Zy)é    Nc                   ó"   — e Zd ZdZdZdd„Zd„ Zy)ÚCoordzž Coordinates of a syntactic element. Consists of:
            - File name
            - Line number
            - (optional) column number, for the Lexer
    )ÚfileÚlineÚcolumnÚ__weakref__Nc                 ó.   — || _         || _        || _        y ©N©r   r   r   )Úselfr   r   r   s       úQ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/pycparser/plyparser.pyÚ__init__zCoord.__init__   s   € ØˆŒ	ØˆŒ	Øˆ�ó    c                 óx   — | j                   ›d| j                  ›�}| j                  r|d| j                  z  z  }|S )Nú:z:%sr   )r   Ústrs     r   Ú__str__zCoord.__str__   s2   € ØŸ› D§I¢IÐ.ˆØ�;Š;˜˜u t§{¡{Ñ2Ñ2˜Øˆ
r   r
   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   r   © r   r   r   r      s   „ ñð
 :€Ióó
r   r   c                   ó   — e Zd Zy)Ú
ParseErrorN)r   r   r   r   r   r   r   r      s   … r   r   c                   ó&   — e Zd Zd„ Zdd„Zd„ Zd„ Zy)Ú	PLYParserc                 ó‚   — |dz   }d„ }|›d|›�|_         d|z  |_        t        | j                  |j                  |«       y)zŽ Given a rule name, creates an optional ply.yacc rule
            for it. The name of the optional rule is
            <rulename>_opt
        Ú_optc                 ó   — |d   |d<   y )Né   r   r   )r   Úps     r   Úoptrulez+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_rulezPLYParser._create_opt_rule#   sD   € ð
 ˜VÑ#ˆò	ò 18¹ÐBˆŒØ! GÑ+ˆÔÜ�—‘ × 0Ñ 0°'Õ:r   Nc                 óF   — t        | j                  j                  ||¬«      S )Nr   )r   ÚclexÚfilename)r   Úlinenor   s      r   Ú_coordzPLYParser._coord1   s"   € ÜØ—Y‘Y×'Ñ'ØØôð 	r   c                 óú   — |j                   j                   j                  j                  dd|j                  |«      «      }|dk  rd}|j                  |«      |z
  }| j	                  |j                  |«      |«      S )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Úlexposr-   r,   )r   r"   Ú	token_idxÚlast_crr   s        r   Ú_token_coordzPLYParser._token_coord7   sh   € ð
 —'‘'—-‘-×'Ñ'×-Ñ-¨d°A°q·x±xÀ	Ó7JÓKˆØ�QŠ;ØˆGØ—(‘(˜9Ó%¨Ñ1ˆØ�{‰{˜1Ÿ8™8 IÓ.°Ó7Ð7r   c                 ó"   — t        |›d|›�«      ‚)Nz: )r   )r   ÚmsgÚcoords      r   Ú_parse_errorzPLYParser._parse_errorB   s   € Ü¢U©CÐ0Ó1Ð1r   r
   )r   r   r   r(   r-   r7   r;   r   r   r   r   r   "   s   „ ò;óò	8ó2r   r   c                  ó   ‡ — ˆ fd„}|S )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                 ó   •— ‰| _         | S r
   )Ú_params)Ú	rule_funcÚparamss    €r   Údecoratezparameterized.<locals>.decorateP   s   ø€ Ø"ˆ	ÔØÐr   r   )r@   rA   s   ` r   ÚparameterizedrB   F   s   ø€ ôð €Or   c                 ó  — d}t        | «      D ]s  }|j                  d«      sŒt        | |«      }t        |d«      sŒ.t	        | |«       |j
                  �t        | |«       ŒS|rŒVt        j                  dt        d¬«       d}Œu | S )z� Class decorator to generate rules from parameterized rule templates.

    See `parameterized` for more information on parameterized rules.
    FÚp_r>   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   ÚtemplaterT   V   sˆ   € ð
 !ÐÜ˜“Xò 0ˆ	Ø×Ñ Õ%Ü˜S )Ó,ˆFÜ�v˜yÕ)ä˜˜YÔ'ð —>‘>Ð-Ü'¨¨VÕ4Ú-Ü—M‘MØZÜ&Ø#$õ&ð ,0Ñ(ð)0ð* €Jr   c                 ó
  ‡— ‰j                   D ]s  \  }}ˆfd„}‰j                  j                  d|«      j                  d|«      |_        ‰j                  j                  d|«      |_        t	        | |j                  |«       Œu y)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                 ó   •—  ‰| |«       y r
   r   )r   r"   Úfuncs     €r   Ú
param_rulez'_create_param_rules.<locals>.param_rule}   s   ø€ Ù��q�Mr   ÚxxxÚyyyN)r>   r   Úreplacer   r$   )rP   rW   rY   rZ   rX   s    `   r   rL   rL   t   sv   ø€ ð —L‘Lò 
6‰ˆˆSô	ð "Ÿ\™\×1Ñ1°%¸Ó=×EÑEÀeÈSÓQˆ
ÔØ"Ÿm™m×3Ñ3°E¸3Ó?ˆ
Ôô 	��Z×(Ñ(¨*Õ5ñ
6r   )	rM   Úobjectr   Ú	Exceptionr   r   rB   rT   rL   r   r   r   ú<module>r^      s<   ðó ôˆFô ô$ "�Ô !ô!2�ô !2òHò ó<6r   