HOME


Mini Shell 1.0
DIR: /snap/certbot/4482/lib64/python3.12/site-packages/pycparser/__pycache__/
Upload File :
Current File : //snap/certbot/4482/lib64/python3.12/site-packages/pycparser/__pycache__/plyparser.cpython-312.pyc
�

�S�g��`�ddlZGd�de�ZGd�de�ZGd�de�Zd�Zd	�Zd
�Zy)�Nc�"�eZdZdZdZdd�Zd�Zy)�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�rrr)�selfrrrs    ��/build/snapcraft-certbot-29b1212f749eeba2f1dece1adfe9a83a/parts/certbot/install/lib/python3.12/site-packages/pycparser/plyparser.py�__init__zCoord.__init__s����	���	����c�x�|j�d|j��}|jr|d|jzz
}|S)N�:z:%sr)r�strs  r
�__str__z
Coord.__str__s2�����D�I�I�.���;�;��u�t�{�{�2�2���
rr
)�__name__�
__module__�__qualname__�__doc__�	__slots__rr�rr
rr
s���
:�I��
rrc��eZdZy)�
ParseErrorN)rrrrrr
rrs�rrc�&�eZdZd�Zdd�Zd�Zd�Zy)�	PLYParserc��|dz}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�rr)r�ps  r
�optrulez+PLYParser._create_opt_rule.<locals>.optrule*s���Q�4�A�a�Drz : empty
| zp_%sN)rr�setattr�	__class__)r�rulename�optnamer#s    r
�_create_opt_rulezPLYParser._create_opt_rule#sD��
�V�#��	�18��B���!�G�+�������� 0� 0�'�:rNc�F�t|jj||��S)Nr)r�clex�filename)r�linenors   r
�_coordzPLYParser._coord1s"����Y�Y�'�'����	rc��|jjjjdd|j|��}|dkrd}|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_crrs     r
�_token_coordzPLYParser._token_coord7sh��
�'�'�-�-�'�'�-�-�d�A�q�x�x�	�7J�K���Q�;��G��(�(�9�%��1���{�{�1�8�8�I�.��7�7rc�"�t|�d|����)Nz: )r)r�msg�coords   r
�_parse_errorzPLYParser._parse_errorBs���U�C�0�1�1rr
)rrrr(r-r7r;rrr
rr"s��;��	8�2rrc����fd�}|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����|_|Sr
)�_params)�	rule_func�paramss �r
�decoratezparameterized.<locals>.decoratePs���"�	���rr)r@rAs` r
�
parameterizedrBFs�����Orc��d}t|�D]s}|jd�s�t||�}t|d�s�.t	||�|j
�
t
||��S|r�Vtjdtd��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
�templaterTVs���
!����X�0�	�����%��S�)�,�F��v�y�)���Y�'��>�>�-�'��V�4�-��M�M�Z�&�#$�&�,0�(�)0�*�Jrc�
���jD]s\}}�fd�}�jjd|�jd|�|_�jjd|�|_t	||j|��uy)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����||�yr
r)rr"�funcs  �r
�
param_rulez'_create_param_rules.<locals>.param_rule}s�����q�Mr�xxx�yyyN)r>r�replacerr$)rPrWrYrZrXs `   r
rLrLtsv����L�L�
6���S�	�"�\�\�1�1�%��=�E�E�e�S�Q�
��"�m�m�3�3�E�3�?�
��	��Z�(�(�*�5�
6r)	rM�objectr�	ExceptionrrrBrTrLrrr
�<module>r^s<����F��$"��!�!2��!2�H
� �<6r