§
    aÒ³g  ã                   ót   — 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dS )é    Nc                   ó$   — e Zd ZdZdZdd„Zd„ ZdS )ÚCoordzž Coordinates of a syntactic element. Consists of:
            - File name
            - Line number
            - (optional) column number, for the Lexer
    )ÚfileÚlineÚcolumnÚ__weakref__Nc                 ó0   — || _         || _        || _        d S ©N©r   r   r   )Úselfr   r   r   s       úQ/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/pycparser/plyparser.pyÚ__init__zCoord.__init__   s   € ØˆŒ	ØˆŒ	ØˆŒˆˆó    c                 óP   — | j         ›d| j        ›�}| j        r|d| j        z  z  }|S )Nú:z:%sr   )r   Ústrs     r   Ú__str__zCoord.__str__   s3   € Øœ˜˜ D¤I IÐ.ˆØŒ;Ð2˜˜u t¤{Ñ2Ñ2˜Øˆ
r   r
   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   r   © r   r   r   r      sH   € € € € € ðð ð
 :€Iðð ð ð ð
ð ð ð ð r   r   c                   ó   — e Zd ZdS )Ú
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dS )Ú	PLYParserc                 óx   — |dz   }d„ }|›d|›�|_         d|z  |_        t          | j        |j        |¦  «         dS )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<   d S )Né   r   r   )r   Úps     r   Úoptrulez+PLYParser._create_opt_rule.<locals>.optrule*   s   € Ø�Q”4ˆAˆa‰DˆDˆDr   z : empty
| zp_%sN)r   r   ÚsetattrÚ	__class__)r   ÚrulenameÚoptnamer#   s       r   Ú_create_opt_rulezPLYParser._create_opt_rule#   s[   € ð
 ˜VÑ#ˆð	ð 	ð 	ð 18°°¸¸ÐBˆŒØ! GÑ+ˆÔÝ�” Ô 0°'Ñ:Ô:Ð:Ð:Ð:r   Nc                 ó:   — t          | j        j        ||¬¦  «        S )Nr   )r   ÚclexÚfilename)r   Úlinenor   s      r   Ú_coordzPLYParser._coord1   s'   € ÝØ”YÔ'ØØðñ ô ð 	r   c                 ó  — |j         j         j                             dd|                     |¦  «        ¦  «        }|dk     rd}|                     |¦  «        |z
  }|                      |                     |¦  «        |¦  «        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   sr   € ð
 ”'”-Ô'×-Ò-¨d°A°q·x²xÀ	Ñ7JÔ7JÑKÔKˆØ�QŠ;ˆ;ØˆGØ—(’(˜9Ñ%Ô%¨Ñ1ˆØ�{Š{˜1Ÿ8š8 IÑ.Ô.°Ñ7Ô7Ð7r   c                 ó*   — t          |›d|›�¦  «        ‚)Nz: )r   )r   ÚmsgÚcoords      r   Ú_parse_errorzPLYParser._parse_errorB   s   € Ý U U U¨C¨CÐ0Ñ1Ô1Ð1r   r
   )r   r   r   r(   r-   r7   r;   r   r   r   r   r   "   sU   € € € € € ð;ð ;ð ;ðð ð ð ð	8ð 	8ð 	8ð2ð 2ð 2ð 2ð 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 ]}|                     d¦  «        rht          | |¦  «        }t          |d¦  «        rHt	          | |¦  «         |j        �t          | |¦  «         Œ_|st          j        dt          d¬¦  «         d}Œ€| S )	z� Class decorator to generate rules from parameterized rule templates.

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