관리-도구
편집 파일: cparser.cpython-39.pyc
a �`Ǭ � @ s� d dl mZ d dlmZmZ d dlmZmZ zd dl mZ W n e yV ddl Z Y n0 ddlZddlZddl Z z(e jdk r�ddlZnddlZe�� ZW n e y� dZY n0 dd � Zd Ze�dejejB �Ze�dejejB �Ze�d ej�Ze�d�Ze�d�Ze�d�Ze�d�Zdae�dej �Z!e�d�Z"e�d�Z#e�d�Z$e�d�Z%e�d�Z&e�d�Z'e�d�Z(dd� Z)dd� Z*dd� Z+d d!� Z,d"d#� Z-d$d%� Z.d&d'� Z/d(d)� Z0d*d+� Z1G d,d-� d-e2�Z3dS ).� )�model)�COMMON_TYPES�resolve_common_type)�FFIError� CDefError)� _pycparser� N)� c C s dd l } dd l} d S �Nr )Zpycparser.yacctabZpycparser.lextab)� pycparser� r �2/usr/lib64/python3.9/site-packages/cffi/cparser.py�%_workaround_for_static_import_finders s r z<cdef source string>z/\*.*?\*/|//([^\n\\]|\\.)*?$z?^\s*#\s*define\s+([A-Za-z_][A-Za-z_0-9]*)\b((?:[^\n\\]|\\.)*?)$z^[ \t]*#[ \t]*(?:line|\d+)\b.*$z=\s*\.\.\.\s*[,}]|\.\.\.\s*\}z__dotdotdot\d+__$z\[\s*\.\.\.\s*\]z\w+|\Sz-?0?x?[0-9a-f]+[lu]*$z\b(__stdcall|WINAPI)\bz[(]\s*(__stdcall|WINAPI)\bz\b__cdecl\bz9\bextern\s*"(Python|Python\s*\+\s*C|C\s*\+\s*Python)"\s*.z'[*]\s*((const|volatile|restrict)\b\s*)+z3(\b(int|long|short|signed|unsigned|char)\s*)+\.\.\.z\b(double|float)\s*\.\.\.c C s t d u rt�� a t S �N)� _parser_cacher ZCParserr r r r �_get_parser2 s r c C s g }t �| �}|sq�|�| d |�� � � |�d� d}|�|�� � |�� }| �d|�rl|�d� |d7 }d}|}|t| �k r�| | }|dkr�|d7 }n.|dkr�|dkr�q�|d8 }n|dv r�|dkr�q�|d7 }qt| ||� | | |d � } q|�| � d�|�S )N�(�)�*r r z,;=� ) �_r_star_const_space�search�append�start�group�end� startswith�len�join)�csource�parts�match�closing�endpos�level�i�cr r r �_workaround_for_old_pycparser8 s6 r'