관리-도구
편집 파일: cparser.cpython-36.pyc
3 M��ZR� � @ s� d dl mZ d dlmZmZ d dlmZmZ yd dl mZ W n e k rX ddl Z Y nX ddlZddlZddl Z y(e jd#k r�ddlZnddlZej� ZW n e k r� dZY nX dZejd ejejB �Zejd ejejB �Zejd�Zejd�Zejd �Zejd�Zdaejdej�Zejd�Z ejd�Z!ejd�Z"ejd�Z#ejd�Z$ejd�Z%ejd�Z&dd� Z'dd� Z(dd� Z)dd� Z*dd � Z+G d!d"� d"e,�Z-dS )$� )�model)�COMMON_TYPES�resolve_common_type)�FFIError� CDefError)� _pycparser� N� z<cdef source string>z/\*.*?\*/|//([^\n\\]|\\.)*?$z?^\s*#\s*define\s+([A-Za-z_][A-Za-z_0-9]*)\b((?:[^\n\\]|\\.)*?)$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 krtj� a t S )N)� _parser_cache� pycparserZCParser� r r �/usr/lib64/python3.6/cparser.py�_get_parser* s r c C s g }x�t j| �}|sP |j| d |j� � � |jd� d}|j|j� � |j� }| jd|�rn|jd� |d7 }d}|}x`|t| �k r�| | }|dkr�|d7 }n.|dkr�|dkr�P |d8 }n|dkr�|dkr�P |d7 }qxW | ||� | | |d � } qW |j| � dj|�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_pycparser0 s<