§
    ×‘ÚjQ|  ã                   ó¼  — U d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z	 ed         Z
 ed¬¦  «         G d	„ d
¦  «        ¦   «         Z G d„ d¦  «        ZdZeedf         ed<   i Zeeef         ed<   eD ]”Ze                     d¦  «        rf ee¦  «        dk    rWed                              ¦   «         r=eeedd…                              ¦   «         edd…                              ¦   «         z   <   Œ}eee                     ¦   «         <   Œ•i dd“dd“dd“dd“dd“dd“d d“d!d"“d#d$“d%d&“d'd(“d)d*“d+d,“d-d.“d/d0“d1d2“Zd3Z e j        d4¦  «        Z e j        d5¦  «        Z e j        e› d6�¦  «        Zd7Zd8Z d9Z!d:Z"d;Z#d<Z$d=e$z   d>z   e$z   d?z   Z%d@e$z   Z&e e!z   e$z   Z'e"e#z   e$z   Z(dAZ)dBZ*dCZ+dDZ,dEe,› dF�Z-dGZ.dHZ/dIZ0dJe-z   dKz   e.z   dKz   e/z   dKz   e,z   dLz   Z1dMZ2dNe1z   d?z   Z3dOe3z   dOz   Z4dPe4z   Z5dQe4z   Z6dRe4z   Z7dSe4z   Z8dOe3z   dTz   Z9dUe3z   dVz   e3z   dWz   Z:dUe3z   dXz   e0z   dYz   Z;dZe2z   d?z   Z<d[e<z   d\z   Z=dPe=z   Z>dQe=z   Z?dRe=z   Z@dSe=z   ZAd[e<z   d]z   e0z   e<z   d\z   ZBd^ez   d?z   ZCd_ez   d`z   ez   daz   ez   dbz   ZDdceDz   d?z   eCz   ddz   ez   eCz   dLz   ZEeEdez   ZFdfez   d?z   ZGdce!z   d`z   e!z   daz   e!z   dgz   ZHdhe z   dhz   e!z   dKz   eHz   d?z   eGz   diz   ZI G dj„ dke¦  «        ZJ ed¬l¦  «         G dm„ dn¦  «        ¦   «         ZK eKdoe*eJjL        dp¦  «         eKdqe+eJjL        dp¦  «         eKdreBeJjL        ds¦  «         eKdte>eJjM        d¦  «         eKdue?eJjM        d¦  «         eKdve@eJjM        d¦  «         eKdweAeJjM        d¦  «         eKdxe=eJjM        d¦  «         eKdyeIeJjM        d¦  «         eKdzeFeJjM        d¦  «         eKd{e'eJjM        d¦  «         eKd|e(eJjM        d¦  «         eKd}e)eJjL        d~¦  «         eKde&eJjM        d¦  «         eKd€e%eJjM        d¦  «         eKd�e9eJjM        d¦  «         eKd‚e4eJjM        d¦  «         eKdƒe5eJjM        d¦  «         eKd„e6eJjM        d¦  «         eKd…e7eJjM        d¦  «         eKd†e8eJjM        d¦  «         eKd‡e:eJjL        dˆ¦  «         eKd‰e;eJjL        d¦  «         eKdŠeeJjN        d¦  «        gZOePeK         ed‹<   i ZQeeeeJedz  f         f         edŒ<   g ZRePe         ed�<   eOD ]>ZSeSjT        eSjU        feQeSjV        <   eR W                    dŽeSjV        › d�eSjX        › d?�¦  «         Œ? e j        dK Y                    eR¦  «        ¦  «        ZZe j[        e         ed�<    ed¬l¦  «         G d‘„ d’¦  «        ¦   «         Z\g  e\d“d”¦  «        ‘ e\d•d–¦  «        ‘ e\d—d˜¦  «        ‘ e\d™dš¦  «        ‘ e\d›dœ¦  «        ‘ e\d�dž¦  «        ‘ e\dŸd ¦  «        ‘ e\d¡d¢¦  «        ‘ e\d£d¤¦  «        ‘ e\d¥d¦¦  «        ‘ e\d§d¨¦  «        ‘ e\d©dª¦  «        ‘ e\d«d¬¦  «        ‘ e\d­d®¦  «        ‘ e\d¯d°¦  «        ‘ e\d±d²¦  «        ‘ e\d³d´¦  «        ‘ e\dµd¶¦  «        ‘ e\d·d¸¦  «        ‘ e\d¹dº¦  «        ‘ e\d»d¼¦  «        ‘ e\d½d¾¦  «        ‘ e\d¿dÀ¦  «        ‘ e\dÁdÂ¦  «        ‘ e\dÃdÄ¦  «        ‘ e\dÅd]¦  «        ‘ e\dÆdÇ¦  «        ‘ e\dÈdÉ¦  «        ‘ e\dÊdK¦  «        ‘ e\dËdÌ¦  «        ‘ e\dÍdÎ¦  «        ‘ e\dÏdÐ¦  «        ‘ e\dÑdÒ¦  «        ‘ e\dÓdÔ¦  «        ‘ e\dÕd�¦  «        ‘ e\dÖd×¦  «        ‘ e\dØdh¦  «        ‘ e\dÙd?¦  «        ‘ e\dÚdÛ¦  «        ‘ e\dÜdÝ¦  «        ‘ e\dÞdß¦  «        ‘ e\dàdá¦  «        ‘ e\dâdã¦  «        ‘ e\dädå¦  «        ‘ e\dædç¦  «        ‘ e\dèdé¦  «        ‘ e\dêdë¦  «        ‘Z]ePe\         edì<   i Z^eeePe\         f         edí<   e]D ]6Z_e^ `                    e_ja        d          g ¦  «         W                    e_¦  «         Œ7e^ b                    ¦   «         D ]Zcec d                    dî„ d¬ï¦  «         Œ e j        dð¦  «        Zee j[        e         edñ<    e j        dò¦  «        Zfe j[        e         edó<   dS )ôé    N)ÚCallable)Ú	dataclass)ÚEnum)ÚLiteralÚassert_never©ÚlegacyÚc23T)Úslotsc                   óB   — e Zd ZU eed<   eed<   eed<   eed<   eed<   dS )ÚTokenÚtypeÚvalueÚlinenoÚcolumnÚfilenameN)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__Úint© ó    úƒ/Users/tedpeters/Documents/Projects/Claude Projects/TPC Houses/house-viewer/.venv/lib/python3.11/site-packages/pycparser/c_lexer.pyr   r      s=   € € € € € € à
€I€I�IØ€J€J�JØ€K€K�KØ€K€K�KØ€M€M�M€M€Mr   r   c                   ó  — e Zd ZdZddœdeeeegdf         deddfd„Zdd
ededdfd„Z	dd„Z
edefd„¦   «         Zdedz  fd„Zdedz  fd„Zdededefd„Zdedz  fd„Zdedededefd„Zdededdfd„Zdd„Zdee         fd„ZdS )ÚCLexera+  A standalone lexer for C.

    Constructor parameters:
        error_func:
            Called with (msg, line, column) on lexing errors.
        dialect:
            "legacy" preserves the existing keyword set. "c23" also recognizes
            C23 keywords and predefined constants.

    Call input(text) to initialize lexing, and then keep calling token() to
    get the next token, until it returns None (at end of input).

    Non-keyword identifiers are emitted as ID tokens. The parser handles
    scopes and classifies typedef names as TYPEID.
    r	   )ÚdialectÚ
error_funcNr   Úreturnc                óð   — |dvrt          d|›d�¦  «        ‚t                               ¦   «         | _        |dk    r| j                             t          ¦  «         || _        |                      ¦   «          d S )Nr   zUnknown dialect z; expected 'legacy' or 'c23'r
   )Ú
ValueErrorÚ_keyword_mapÚcopyÚupdateÚ_c23_keywordsr   Ú_init_state)Úselfr   r   s      r   Ú__init__zCLexer.__init__,   s�   € ð Ð+Ð+Ð+ÝÐW°ÐWÐWÐWÑXÔXÐXõ )×-Ò-Ñ/Ô/ˆÔØ�eÒÐØÔ×$Ò$¥]Ñ3Ô3Ð3à$ˆŒØ×ÒÑÔÐÐÐr   Ú Útextr   c                 óJ   — |                       ¦   «          || _        || _        dS )zâInitialize the lexer to the given input text.

        filename is an optional name identifying the initial file from which the
        input comes. The lexer may modify it if #line directives are
        encountered.
        N)r'   Ú_lexdataÚ	_filename)r(   r+   r   s      r   ÚinputzCLexer.input=   s(   € ð 	×ÒÑÔÐØˆŒØ!ˆŒˆˆr   c                 óh   — d| _         d| _        d| _        d| _        d | _        d| _        d| _        d S )Nr*   r   é   F)r-   r.   Ú_posÚ_line_startÚ_pending_tokÚ_linenoÚ_in_attribute©r(   s    r   r'   zCLexer._init_stateH   s<   € ØˆŒØˆŒØˆŒ	ØˆÔØ*.ˆÔØˆŒØ"ˆÔÐÐr   c                 ó   — | j         S ©N)r.   r7   s    r   r   zCLexer.filenameQ   s
   € àŒ~Ðr   c                 ó°  — | j         }t          |¦  «        }| j        �| j        }d | _        |S | j        |k     �rœ|| j                 xxdk    rnxdk    rnxdk    rn	xdk    rn n  | xj        dz  c_        �nOxdk    r/ | xj        dz  c_        | xj        dz  c_        | j        | _        �ndk    rút                               || j        dz   ¦  «        r%| xj        dz  c_        |                      ¦   «          ŒÍt                               || j        dz   ¦  «        ra| xj        dz  c_        |  
                    ¦   «         }t          |¦  «        dk    r|d         | _        t          |¦  «        dk    r|d         S �ŒQ|                      d	d| j        ¦  «        }| xj        dz  c_        |S 	 |                      ¦   «         x}r|S �Œš| j        |k     �°šd S d S )
Nú ú	úúr1   ú
ú#r   ÚPPHASH)r-   Úlenr4   r2   r5   r3   Ú_line_patternÚmatchÚ_handle_pplineÚ_pragma_patternÚ_handle_pppragmaÚ_make_tokenÚ_match_token)r(   r+   ÚnÚtokÚtokss        r   ÚtokenzCLexer.tokenU   sæ  € ð8 Œ}ˆÝ�‰IŒIˆàÔÐ(ØÔ#ˆCØ $ˆDÔØˆJàŒi˜!Šm‰mØ�t”y”/Ø-�S�S’S�S�S˜4˜4š4˜4˜4 $ $¢$ $ $¨¨ª¨¨¨¨¨¨Ø�I”I ‘N�I”I‘IØ�T’T�T�TØ�L”L AÑ%�L”LØ�I”I ‘N�I”IØ'+¤y�DÔ$Ñ$Ø’S�SÝ$×*Ò*¨4°´¸Q±Ñ?Ô?ð !Ø˜	œ	 Q™˜	œ	Ø×+Ò+Ñ-Ô-Ð-Ø Ý&×,Ò,¨T°4´9¸q±=ÑAÔAð !Ø˜	œ	 Q™˜	œ	Ø#×4Ò4Ñ6Ô6˜Ý˜t™9œ9 qš=˜=Ø04°Q´˜DÔ-Ý˜t™9œ9 qš=˜=Ø#'¨¤7˜NÙ Ø×*Ò*¨8°S¸$¼)ÑDÔD�CØ�I”I ‘N�I”IØ�JØØ"×/Ò/Ñ1Ô1Ð1�sð !Ø"˜
á ð9 Œi˜!Šm‰mˆmˆmˆmˆmr   c                 ó¤  — | j         }| j        }| j        rm||         dk    r|                      ¦   «         S t                               ||¦  «        x}r/d| _        |                      d|                     ¦   «         ¦  «        S nX||         dk    rLt                               ||¦  «        x}r/d| _        |                      d|                     ¦   «         ¦  «        S d}t                               ||¦  «        x}rF|j
        }|€J ‚|                     |¦  «        }t          |¦  «        }t          |         \  }	}
||||	|
f}t                               ||         ¦  «        x}r_|D ]\}|                     |j        |¦  «        r?t          |j        ¦  «        }|�||d         k    r||j        |j        t&          j        df} nŒ]|€1|                      d	||         ›�|¦  «         | xj        d
z  c_        dS |\  }}}}	}
|	xt&          j        k    r nšxt&          j        k    rF |dk    rd|› �}
|
€J ‚|                      |
|¦  «         | xj        t/          d
|¦  «        z  c_        dS t&          j        k    r%| j        rdn| j                             |d¦  «        }n	 t5          |	¦  «         |                      |||¦  «        }| xj        |z  c_        |S )zùMatch one token at the current position.

        Returns a Token on success, or None if no token could be matched and
        an error was reported. This method always advances _pos by the matched
        length, or by 1 on error/no-match.
        ú(FÚATTRIBUTE_ENDú[TÚATTRIBUTE_BEGINNr   zIllegal character r1   ÚBAD_CHAR_CONSTzInvalid char constant ÚID)r-   r2   r6   Ú_attribute_argumentsÚ_attribute_endrD   Ú_attribute_tokenÚendÚ_attribute_beginÚ_regex_masterÚ	lastgroupÚgrouprB   Ú_regex_actionsÚ_fixed_tokens_by_firstÚgetÚ
startswithÚliteralÚtok_typeÚ_RegexActionÚTOKENÚ_errorÚERRORÚmaxrT   r#   r   rH   )r(   r+   ÚposrD   ÚbestÚmrb   r   ÚlengthÚactionÚmsgÚbucketÚentryrK   s                 r   rI   zCLexer._match_token—   s  € ð Œ}ˆØŒiˆð Ôð 
	IØ�CŒy˜CÒÐØ×0Ò0Ñ2Ô2Ð2Ý&×,Ò,¨T°3Ñ7Ô7Ð7ˆuð KØ%*�Ô"Ø×,Ò,¨_¸e¿iºi¹k¼kÑJÔJÐJðKð
 �#ŒY˜#ÒÐÕ,<×,BÒ,BÀ4ÈÑ,MÔ,MÐ#M 5ÐØ!%ˆDÔØ×(Ò(Ð):¸E¿IºI¹K¼KÑHÔHÐHð ˆå×#Ò# D¨#Ñ.Ô.Ð.ˆ1ð 	:Ø”{ˆHàÐ'Ð'Ð'Ø—G’G˜HÑ%Ô%ˆEÝ˜‘Z”ZˆFÝ(¨Ô2‰KˆF�CØ˜H e¨V°SÐ9ˆDå+×/Ò/°°S´	Ñ:Ô:Ð:ˆ6ð 	Øð ð �Ø—?’? 5¤=°#Ñ6Ô6ð 
Ý  ¤Ñ/Ô/�FØ�| v°°Q´Ò'7Ð'7à"Ø!œNØ!œMÝ(Ô.Ø ð ˜ð �Eð
ð ˆ<Ø�KŠKÐ:¨T°#¬YÐ:Ð:¸CÑ@Ô@Ð@ØˆIŒI˜‰NˆIŒIØ�4à/3Ñ,ˆ�˜% ¨ØØ#•Ô#Ò#Ð#Ð#ØØ#•Ô#Ò#Ð#Ð#ØÐ/Ò/Ð/Ø:°5Ð:Ð:�Cà���Ø—’˜C Ñ%Ô%Ð%Ø�	”	�S  F™^œ^Ñ+�	”	Ø�tÝ”’�à Ô.ÐV�D�D°DÔ4E×4IÒ4IÈ%ÐQUÑ4VÔ4Vð �ð Ý˜VÑ$Ô$Ð$à×Ò˜x¨°Ñ4Ô4ˆØˆ	Œ	�VÑˆ	Œ	àˆ
r   ÚkindrX   c                 ó  — | j         | j        |…         }|                      ||| j        ¦  «        }| xj        |                     d¦  «        z  c_        d|v r%| j        |                     d¦  «        z   dz   | _        || _        |S )a  Emit the text from _pos up to end and advance lexer state.

        Attribute delimiters can contain whitespace, and argument clauses can
        span lines. Record the token's starting coordinates before updating
        line tracking for the entire consumed span.
        r?   r1   )r-   r2   rH   r5   ÚcountÚrfindr3   )r(   rp   rX   r   rK   s        r   rW   zCLexer._attribute_tokenð   s€   € ð ”˜dœi¨#˜oÔ.ˆØ×Ò˜t U¨D¬IÑ6Ô6ˆØˆŒ˜Ÿš DÑ)Ô)Ñ)ˆŒØ�5ˆ=ˆ=Ø#œy¨5¯;ª;°tÑ+<Ô+<Ñ<¸qÑ@ˆDÔØˆŒ	Øˆ
r   c                 ób  — | j         }| j        }|dz   }dg}ddddœ}d}|t          |¦  «        k     �rÒ||         }|                     d|¦  «        r'|                     d|d	z   ¦  «        }|d
k     r�n“|d	z   }ŒY|                     d|¦  «        r1|                     d|d	z   ¦  «        }|d
k     rt          |¦  «        n|}Œ t
                               ||¦  «        x}	r|	                     ¦   «         }ŒÒ|dv r|}
|dz  }|t          |¦  «        k     r>||         |
dhvr2|||         dk    rd	ndz  }|t          |¦  «        k     r||         |
dhv°2|t          |¦  «        k    s||         |
k    rn˜|dz  }�ŒU||v r|                     ||         ¦  «         nX|dv rT||d         k    rd}n^| 	                    ¦   «          |s/|  
                    d|dz   ¦  «        }|j        dd…         |_        |S |dz  }|t          |¦  «        k     �°Ò|                      ||¦  «         t          |¦  «        | _        dS )a�  Scan an attribute argument clause with _pos at its opening '('.

        Return one ATTRIBUTE_ARGUMENTS token containing the raw text inside
        the outer parentheses. A stack tracks the expected closing delimiters
        for nested (), [], and {}. Comments and quoted literals are skipped
        while balancing, but preserved in the token value. This bypasses normal
        token classification, keeping arbitrary attribute arguments separate
        from C expressions and scope tracking.

        Report malformed clauses at the opening parenthesis. If the error
        callback returns, consume the remaining input and return None.
        r1   ú)ú]Ú})rO   rQ   Ú{z Unterminated attribute argumentsz/*z*/é   r   z//r?   >   ú"ú'ú\z)]}éÿÿÿÿz+Mismatched delimiter in attribute argumentsÚATTRIBUTE_ARGUMENTSN)r-   r2   rB   r`   ÚfindÚ_attribute_wordrD   rX   ÚappendÚpoprW   r   re   )r(   r+   Ústartrh   ÚclosersÚpairsÚerrorÚchrX   rD   ÚquoterK   s               r   rU   zCLexer._attribute_argumentsÿ   s{  € ð Œ}ˆØ”	ˆØ�a‰iˆØ�%ˆØ ¨#Ð.Ð.ˆØ2ˆØ•C˜‘I”IŠo‰oØ�c”ˆBØ�Š˜t SÑ)Ô)ð Ø—i’i  c¨A¡gÑ.Ô.�Ø˜’7�7ÙØ˜A‘g�ØØ�Š˜t SÑ)Ô)ð Ø—i’i  c¨A¡gÑ.Ô.�Ø#&¨¢7 7•c˜$‘i”i�i°�Øõ (×-Ò-¨d°CÑ8Ô8Ð8ˆuð Ø—i’i‘k”k�ØØ�ZÐÐØ�Ø�q‘�Ø�C ™IœI’o�o¨$¨s¬)¸EÀ4¸=Ð*HÐ*HØ  S¤	¨TÒ 1Ð 1˜1˜1°qÑ8�Cð �C ™IœI’o�o¨$¨s¬)¸EÀ4¸=Ð*HÐ*Hà�#˜d™)œ)Ò#Ð# t¨C¤y°EÒ'9Ð'9ØØ�q‘�ÙØ�Uˆ{ˆ{Ø—’˜u RœyÑ)Ô)Ð)Ð)Ø�u��Ø˜ œÒ$Ð$ØI�EØØ—’‘”�Øð Ø×/Ò/Ð0EÀsÈQÁwÑOÔO�CØ #¤	¨!¨B¨$¤�C”IØ�JØ�1‰HˆCðM •C˜‘I”IŠo‰oðN 	�Š�E˜5Ñ!Ô!Ð!Ý˜‘I”IˆŒ	Øˆtr   rb   r   rh   c                 óZ   — || j         z
  dz   }t          ||| j        || j        ¦  «        }|S )a"  Create a Token at an absolute input position.

        Expects tok_type/value and the absolute byte offset pos in the current
        input. Does not advance lexer state; callers manage _pos themselves.
        Returns a Token with the current filename and line/column coordinates.
        r1   )r3   r   r5   r.   )r(   rb   r   rh   r   rK   s         r   rH   zCLexer._make_token=  s4   € ð �tÔ'Ñ'¨!Ñ+ˆÝ�H˜e T¤\°6¸4¼>ÑJÔJˆØˆ
r   rm   c                 óX   — || j         z
  dz   }|                      || j        |¦  «         d S ©Nr1   )r3   r   r5   )r(   rm   rh   r   s       r   re   zCLexer._errorH  s2   € Ø�tÔ'Ñ'¨!Ñ+ˆØ�Š˜˜Tœ\¨6Ñ2Ô2Ð2Ð2Ð2r   c                 ó(  ‡ ‡	‡
‡‡— ‰ j         }t          |¦  «        }|                     d‰ j        ¦  «        Š
‰
dk    r|Š
|‰ j        ‰
…         Š	dŠt          ‰	¦  «        Šdˆ	ˆˆfd„} |¦   «          ‰	                     d‰¦  «        r‰dz  Šdt
          d z  d	t
          d z  dd fˆ
ˆˆ fd
„}dt
          dt          dd fˆ
ˆ fd„} |¦   «          ‰‰k    r |d d ¦  «         d S ‰	‰         dk    r |d‰¦  «         d S t          j        t          ‰	‰d …         ¦  «        }|s |d‰¦  «         d S | 
                    d¦  «        }‰t          |¦  «        z  Š |¦   «          ‰‰k    r ||d ¦  «         d S ‰	‰         dk    r |d‰¦  «         d S t          j        t          ‰	‰d …         ¦  «        }|s |d‰¦  «         d S | 
                    d¦  «                             d¦  «                             d¦  «        }‰t          | 
                    d¦  «        ¦  «        z  Š	  |¦   «          ‰‰k    rnXt          j        t          ‰	‰d …         ¦  «        }|s |d‰¦  «         d S ‰t          | 
                    d¦  «        ¦  «        z  ŠŒi |||¦  «         d S )Nr?   r}   r   r    c                  ó^   •— ‰‰k     r!‰ ‰         dv r‰dz  Š‰‰k     r‰ ‰         dv °d S d S d S d S )Nú 	r1   r   )ÚlineÚline_lenrh   s   €€€r   Úskip_wsz&CLexer._handle_ppline.<locals>.skip_wsi  sP   ø€ à˜’.�. T¨#¤Y°%Ð%7Ð%7Ø�q‘�ð ˜’.�. T¨#¤Y°%Ð%7Ð%7Ð%7Ð%7�.�.�.�.Ð%7Ð%7r   r�   é   Úpp_lineÚpp_filenamec                 ó:  •— | €‰                      d‰j        ‰z   ¦  «         nb	 t          |                      dd¦  «        ¦  «        ‰_        n/# t
          $ r" ‰                      d‰j        ‰z   ¦  «         Y d S w xY w|�|‰_        ‰dz   ‰_        ‰j        ‰_        d S )Nzline number missing in #liner{   r*   úinvalid #line directiver1   )re   r2   r   Úreplacer5   r"   r.   r3   )r“   r”   Úline_endr�   r(   s     €€€r   Úsuccessz&CLexer._handle_ppline.<locals>.successr  s³   ø€ ØˆØ—’Ð:¸D¼IÈÑ<PÑQÔQÐQÐQðÝ#& w§¢°s¸BÑ'?Ô'?Ñ#@Ô#@�D”L�LøÝ!ð ð ð Ø—K’KÐ 9¸4¼9ÀxÑ;OÑPÔPÐPØ�F�Fðøøøð Ð*Ø%0�D”NØ  1™ˆDŒIØ#œyˆDÔÐÐs   ¤(A Á(A9Á8A9rm   Úoffsetc                 óp   •— ‰                      | ‰j        |z   ¦  «         ‰dz   ‰_        ‰j        ‰_        d S r‹   )re   r2   r3   )rm   rš   r˜   r(   s     €€r   Úfailz#CLexer._handle_ppline.<locals>.fail€  s9   ø€ Ø�KŠK˜˜TœY¨Ñ/Ñ0Ô0Ð0Ø  1™ˆDŒIØ#œyˆDÔÐÐr   rz   z$filename before line number in #liner–   T©r    N)r-   rB   r   r2   r`   r   r   ÚrerD   Ú_decimal_digitsr\   Ú_string_literalÚlstripÚrstrip)r(   r+   rJ   r‘   r™   rœ   rj   r“   r”   r�   r˜   r�   rh   s   `        @@@@r   rE   zCLexer._handle_pplineL  s<  øøøøø€ ð( Œ}ˆÝ�‰IŒIˆØ—9’9˜T 4¤9Ñ-Ô-ˆØ�rŠ>ˆ>ØˆHØ�D”I Ð(Ô)ˆØˆÝ�t‘9”9ˆð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð
 	ˆ‰	Œ	ˆ	Ø�?Š?˜6 3Ñ'Ô'ð 	Ø�1‰HˆCð	)�S 4™Zð 	)µc¸D±jð 	)ÀTð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð	)•cð 	)¥3ð 	)¨4ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð
 	ˆ‰	Œ	ˆ	Ø�(Š?ˆ?ØˆG�D˜$ÑÔÐØˆFØ�Œ9˜ÒÐØˆDÐ7¸Ñ=Ô=Ð=ØˆFõ ŒH•_ d¨3¨4¨4¤jÑ1Ô1ˆØð 	ØˆDÐ*¨CÑ0Ô0Ð0ØˆFà—'’'˜!‘*”*ˆØ�s�7‰|Œ|ÑˆØˆ‰	Œ	ˆ	Ø�(Š?ˆ?ØˆG�G˜TÑ"Ô"Ð"ØˆFà�Œ9˜ÒÐØˆDÐ*¨CÑ0Ô0Ð0ØˆFåŒH•_ d¨3¨4¨4¤jÑ1Ô1ˆØð 	ØˆDÐ*¨CÑ0Ô0Ð0ØˆFà—g’g˜a‘j”j×'Ò'¨Ñ,Ô,×3Ò3°CÑ8Ô8ˆØ�s�1—7’7˜1‘:”:‰ŒÑˆð	#ØˆG‰IŒIˆIØ�hŠˆØÝ”�¨$¨s¨t¨t¬*Ñ5Ô5ˆAØð Ø�Ð.°Ñ4Ô4Ð4Ø�Ø•3�q—w’w˜q‘z”z‘?”?Ñ"ˆCð	#ð 	ˆ�˜Ñ%Ô%Ð%Ð%Ð%r   c                 óê  — | j         }t          |¦  «        }| j        }||k     r||         dv r|dz  }||k     r
||         dv °||k    r	|| _        g S |                     d|¦  «        s"|                      d|¦  «         |dz   | _        g S |}|t          d¦  «        z  }|                      dd|¦  «        g}||k     r||         dv r|dz  }||k     r
||         dv °|}||k     r#||         dk    r|dz  }||k     r||         dk    °||k    r2|                     |                      d|||…         |¦  «        ¦  «         ||k     r(||         dk    r| xj        dz  c_        |dz  }|| _        || _        |S )NrŽ   r1   Úpragmazinvalid #pragma directiveÚPPPRAGMAr?   ÚPPPRAGMASTR)	r-   rB   r2   r`   re   rH   r�   r5   r3   )r(   r+   rJ   rh   Ú
pragma_posrL   rƒ   s          r   rG   zCLexer._handle_pppragma³  sÇ  € ð Œ}ˆÝ�‰IŒIˆØŒiˆà�AŠgˆg˜$˜sœ) uÐ,Ð,Ø�1‰HˆCð �AŠgˆg˜$˜sœ) uÐ,Ð,à�!Š8ˆ8ØˆDŒIØˆIà�Š˜x¨Ñ-Ô-ð 	Ø�KŠKÐ3°SÑ9Ô9Ð9Ø˜a™ˆDŒIØˆIàˆ
Ø�s�8‰}Œ}ÑˆØ× Ò  ¨X°zÑBÔBÐCˆà�AŠgˆg˜$˜sœ) uÐ,Ð,Ø�1‰HˆCð �AŠgˆg˜$˜sœ) uÐ,Ð,ð ˆØ�AŠgˆg˜$˜sœ) tÒ+Ð+Ø�1‰HˆCð �AŠgˆg˜$˜sœ) tÒ+Ð+à�Š;ˆ;Ø�KŠK˜×(Ò(¨¸¸UÀ3¸Y¼ÈÑOÔOÑPÔPÐPØ�Š7ˆ7�t˜C”y DÒ(Ð(ØˆLŒL˜AÑˆLŒLØ�1‰HˆCØ"ˆDÔØˆŒ	Øˆr   )r*   r�   )r   r   r   Ú__doc__r   r   r   ÚDialectr)   r/   r'   Úpropertyr   r   rM   rI   rW   rU   rH   re   rE   ÚlistrG   r   r   r   r   r      sú  € € € € € ðð ð( $ð	ð ð à˜c 3¨˜_¨dÐ2Ô3ðð ð	ð
 
ðð ð ð ð"	"ð 	"˜#ð 	"¨ð 	"°dð 	"ð 	"ð 	"ð 	"ð#ð #ð #ð #ð ð˜#ð ð ð ñ „Xðð@!�u˜t‘|ð @!ð @!ð @!ð @!ðDW˜e d™lð Wð Wð Wð Wðr Sð ¨sð °uð ð ð ð ð< e¨d¡lð <ð <ð <ð <ð|	 Cð 	°ð 	¸#ð 	À%ð 	ð 	ð 	ð 	ð3˜#ð 3 Cð 3¨Dð 3ð 3ð 3ð 3ðe&ð e&ð e&ð e&ðN* $ u¤+ð *ð *ð *ð *ð *ð *r   r   )/ÚAUTOÚBREAKÚCASEÚCHARÚCONSTÚCONTINUEÚDEFAULTÚDOÚDOUBLEÚELSEÚENUMÚEXTERNÚFLOATÚFORÚGOTOÚIFÚINLINEÚINTÚLONGÚREGISTERÚOFFSETOFÚRESTRICTÚRETURNÚSHORTÚSIGNEDÚSIZEOFÚSTATICÚSTRUCTÚSWITCHÚTYPEDEFÚUNIONÚUNSIGNEDÚVOIDÚVOLATILEÚWHILEÚ__BUILTIN_VA_ARGÚ__INT128Ú_BOOLÚ_COMPLEXÚ_GENERICÚ	_NORETURNÚ_THREAD_LOCALÚ_STATIC_ASSERTÚ_ATOMICÚ_ALIGNOFÚ_ALIGNASÚ_PRAGMA.Ú	_keywordsr#   Ú_r1   ry   ÚalignasrÙ   ÚalignofrØ   ÚboolrÑ   Ústatic_assertrÖ   Úthread_localrÕ   ÚtrueÚ
BOOL_CONSTÚfalseÚnullptrÚNULLPTRÚ	constexprÚ	CONSTEXPRÚtypeofÚTYPEOFÚtypeof_unqualÚTYPEOF_UNQUALÚ_BitIntÚ_BITINTÚ
_Decimal32Ú
_DECIMAL32Ú
_Decimal64Ú
_DECIMAL64Ú_Decimal128Ú_DECIMAL128Ú
_ImaginaryÚ
_IMAGINARYz[a-zA-Z_$][0-9a-zA-Z_$]*z\[\s*\[z\]\s*\]z(|(?:[0-9]|\.[0-9])(?:[eEpP][+-]|[\w.'])*z[0-9](?:'?[0-9])*z0[xX]z[0-9a-fA-F](?:'?[0-9a-fA-F])*z0[bB]z[01](?:'?[01])*za(([uU](wb|WB))|((wb|WB)[uU]?)|([uU]ll)|([uU]LL)|(ll[uU]?)|(LL[uU]?)|([uU][lL])|([lL][uU]?)|[uU])?z(0z)|([1-9](?:'?[0-9])*ru   z0(?:'?[0-7])*z0(?:'?[0-7])*'?[89]z\/\*z\/\/z!(u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})z(?!z-)([a-wyzA-Z._~!=&\^\-\\?'"]|x(?![0-9a-fA-F]))z(\d+)(?!\d)z(x[0-9a-fA-F]+)(?![0-9a-fA-F])z#([\\][^a-zA-Z._~^!=&\^\-\\?'"x0-9])z(\\(ú|z))z(\\[0-9a-zA-Z._~!=&\^\-\\?'"])z
([^'\\\n]|r{   ÚLÚu8ÚuÚUz{2,4}'z('z*\n)|('z*$)z[^'
]+')|('')|('z	[^'\n]*')z
([^"\\\n]|rz   z*"Ú*z
([eE][-+]?z((z)?\.z)|(z\.)z(((z?)|(z(df|dd|dl|DF|DD|DL|[FfLl])?z
([pP][+-]?z\.))rO   z[FfLl]?)c                   ó   — e Zd ZdZdZdZdS )rc   r   r1   ry   N)r   r   r   rd   rT   rf   r   r   r   rc   rc   Ì  s   € € € € € Ø€EØ	
€BØ€E€E€Er   rc   )Úfrozenc                   ó>   — e Zd ZU eed<   eed<   eed<   edz  ed<   dS )Ú
_RegexRulerb   Úregex_patternrl   NÚerror_message)r   r   r   r   r   rc   r   r   r   r   r   Ò  sE   € € € € € € ð €M€M�MØÐÐÑØÐÐÑØ˜‘:ÐÐÑÐÐr   r   ÚUNSUPPORTED_C_STYLE_COMMENTzKComments are not supported, see https://github.com/eliben/pycparser#3using.ÚUNSUPPORTED_CXX_STYLE_COMMENTÚBAD_STRING_LITERALz#String contains invalid escape codeÚWSTRING_LITERALÚU8STRING_LITERALÚU16STRING_LITERALÚU32STRING_LITERALÚSTRING_LITERALÚHEX_FLOAT_CONSTÚFLOAT_CONSTÚINT_CONST_HEXÚINT_CONST_BINÚBAD_CONST_OCTzInvalid octal constantÚINT_CONST_OCTÚINT_CONST_DECÚINT_CONST_CHARÚ
CHAR_CONSTÚWCHAR_CONSTÚU8CHAR_CONSTÚU16CHAR_CONSTÚU32CHAR_CONSTÚUNMATCHED_QUOTEzUnmatched 'rS   rT   Ú_regex_rulesr]   Ú_regex_pattern_partsz(?P<ú>rZ   c                   ó$   — e Zd ZU eed<   eed<   dS )Ú_FixedTokenrb   ra   N)r   r   r   r   r   r   r   r   r  r    s"   € € € € € € à€M€M�MØ€L€L�L€L€Lr   r  ÚELLIPSISz...ÚLSHIFTEQUALz<<=ÚRSHIFTEQUALz>>=ÚPLUSPLUSz++Ú
MINUSMINUSz--ÚARROWz->ÚLANDz&&ÚLORz||ÚLSHIFTz<<ÚRSHIFTz>>ÚLEz<=ÚGEz>=ÚEQz==ÚNEz!=Ú
TIMESEQUALz*=ÚDIVEQUALz/=ÚMODEQUALz%=Ú	PLUSEQUALz+=Ú
MINUSEQUALz-=ÚANDEQUALz&=ÚOREQUALz|=ÚXOREQUALz^=ÚEQUALSú=ÚPLUSú+ÚMINUSú-ÚTIMESÚDIVIDEú/ÚMODú%ÚORÚANDú&ÚNOTú~ÚXORú^ÚLNOTú!ÚLTú<ÚGTÚCONDOPú?ÚLPARENÚRPARENÚLBRACKETrQ   ÚRBRACKETrv   ÚLBRACErx   ÚRBRACErw   ÚCOMMAú,ÚPERIODú.ÚSEMIú;ÚCOLONú:Ú
COLONCOLONz::Ú_fixed_tokensr^   c                 ó*   — t          | j        ¦  «        S r9   )rB   ra   )Úitems    r   ú<lambda>r_  Z  s   € ¥# d¤lÑ"3Ô"3€ r   )ÚkeyÚreversez([ \t]*line\W)|([ \t]*\d+)rC   z[ \t]*pragma\WrF   )grž   Úcollections.abcr   Údataclassesr   Úenumr   Útypingr   r   r©   r   r   rÛ   Útupler   r   r#   ÚdictÚkeywordr`   rB   ÚisalphaÚupperÚlowerr&   Ú_identifierÚcompilerY   rV   r€   rŸ   Ú_hex_prefixÚ_hex_digitsÚ_bin_prefixÚ_bin_digitsÚ_integer_suffix_optÚ_decimal_constantÚ_octal_constantÚ_hex_constantÚ_bin_constantÚ_bad_octal_constantÚ_unsupported_c_style_commentÚ_unsupported_cxx_style_commentÚ_unicode_escapeÚ_simple_escapeÚ_decimal_escapeÚ_hex_escapeÚ_bad_escapeÚ_escape_sequenceÚ _escape_sequence_start_in_stringÚ_cconst_charÚ_char_constÚ_wchar_constÚ_u8char_constÚ_u16char_constÚ_u32char_constÚ_multicharacter_constantÚ_unmatched_quoteÚ_bad_char_constÚ_string_charr    Ú_wstring_literalÚ_u8string_literalÚ_u16string_literalÚ_u32string_literalÚ_bad_string_literalÚ_exponent_partÚ_fractional_constantÚ_unsuffixed_floating_constantÚ_floating_constantÚ_binary_exponent_partÚ_hex_fractional_constantÚ_hex_floating_constantrc   r   rf   rd   rT   r  r«   r]   r  Ú_rulerl   r  rb   r�   r  ÚjoinrZ   ÚPatternr  r\  r^   Ú_entryÚ
setdefaultra   ÚvaluesÚ_bucketÚsortrC   rF   r   r   r   ú<module>rŸ     s  ðð 
€	€	€	€	Ø $Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (à
�/Ô
"€ð €�ÐÑÔðð ð ð ð ñ ô ñ ÔððBð Bð Bð Bð Bñ Bô Bð BðP0€	ˆ5��c�Œ?ð 0ð 0ñ 0ðd  "€ˆd�3˜�8ŒnÐ !Ð !Ñ !àð 0ð 0€Gà×Ò˜#ÑÔð 0 3 3 w¡<¤<°!Ò#3Ð#3¸À¼
×8JÒ8JÑ8LÔ8LÐ#3ØBIˆ�W˜R˜a˜R”[×&Ò&Ñ(Ô(¨7°1°2°2¬;×+<Ò+<Ñ+>Ô+>Ñ>Ñ?Ð?à(/ˆ�W—]’]‘_”_Ñ%Ð%ðØˆzðàˆzðð ˆGðð Ð%ð	ð
 �Oðð ˆLðð ˆ\ðð ˆyðð �ðð ˆhðð �_ðð ˆyðð �,ðð �,ðð �=ðð  �,ð!€ð0 *€Ø�2”:˜jÑ)Ô)Ð Ø�”˜JÑ'Ô'€Ø�"”* ÐVÐVÐVÑWÔW€ð
 &€Ø€Ø-€Ø€Ø€ðKð ð
 	ÐÑÐ!7Ñ7Ð:MÑMÐPSÑSð ð "Ð$7Ñ7€Ø˜kÑ)Ð,?Ñ?€Ø˜kÑ)Ð,?Ñ?€à+Ð ð  'Ð Ø!(Ð ð* 7€ð Rˆ?ÐQÐQÐQð ð %€Ø3€Ø8€ð Øñà	ñ
ð ñð 
ñ	
ð
 ñð 
ñ
ð ñð ñð ð" $IÐ  à Ð#3Ñ3°cÑ9€Ø�LÑ  3Ñ&€Ø�[Ñ €Ø�{Ñ"€Ø�{Ñ"€Ø�{Ñ"€Ø Ñ-°Ñ8Ð Ø˜,Ñ&¨Ñ3°lÑBÀUÑJÐ à�ÑÐ6Ñ6¸ÑDÐGWÑWð ð
 !Ð#CÑCÀcÑI€Ø˜Ñ$ tÑ+€Ø˜Ñ(Ð Ø˜?Ñ*Ð Ø˜?Ñ*Ð Ø˜?Ñ*Ð Ø˜LÑ(¨3Ñ.°Ñ<¸|ÑKÈdÑRÐ ð  Ñ/°#Ñ5€àØñàñð ñð ñ	ð
 ñð ñð ð 
Øñà	ñ
ð ñð ñ	ð
 ñð ñð ñð ð 3Ð5RÑRÐ Ø$ Ñ6¸Ñ<Ð à	ˆKÑ˜+Ñ%¨Ñ3°eÑ;¸kÑIÈKÑWð ð Øñà	ñ
ð ñð 
ñ	
ð
 ñð 
ñ
ð ñð ñð ðð ð ð ð �4ñ ô ð ð €�$ÐÑÔðð ð ð ð ñ ô ñ Ôðð €JØ%Ø$ØÔØUñ	ô ð €JØ'Ø&ØÔØUñ	ô ð €JØØØÔØ-ñ	ô ð €JÐ Ð"2°LÔ4FÈÑMÔMØ€JÐ!Ð#4°lÔ6HÈ$ÑOÔOØ€JÐ"Ð$6¸Ô8JÈDÑQÔQØ€JÐ"Ð$6¸Ô8JÈDÑQÔQØ€JÐ °,Ô2DÀdÑKÔKØ€JÐ Ð"8¸,Ô:LÈdÑSÔSØ€Jˆ}Ð0°,Ô2DÀdÑKÔKØ€Jˆ ¨|Ô/AÀ4ÑHÔHØ€Jˆ ¨|Ô/AÀ4ÑHÔHØ€JØØØÔØ ñ	ô ð €Jˆ °Ô1CÀTÑJÔJØ€JˆÐ 1°<Ô3EÀtÑLÔLØ€JÐÐ!9¸<Ô;MÈtÑTÔTØ€Jˆ|˜[¨,Ô*<¸dÑCÔCØ€Jˆ}˜l¨LÔ,>ÀÑEÔEØ€Jˆ~˜}¨lÔ.@À$ÑGÔGØ€Jˆ °Ô0BÀDÑIÔIØ€Jˆ °Ô0BÀDÑIÔIØ€JÐ Ð"2°LÔ4FÈÑVÔVØ€JÐ °,Ô2DÀdÑKÔKØ€Jˆt�[ ,¤/°4Ñ8Ô8ðY-"€ˆd�:Ôð -ð -ñ -ð^ >@€��S˜% ¨c°D©jÐ 8Ô9Ð9Ô:Ð ?Ð ?Ñ ?Ø"$Ð �d˜3”iÐ $Ð $Ñ $Øð Pð P€EØ&+¤l°EÔ4GÐ%H€N�5”>Ñ"Ø×ÒÐ N u¤~Ð NÐ N¸Ô8KÐ NÐ NÐ NÑOÔOÐOÐOð
 ", ¤¨C¯HªHÐ5IÑ,JÔ,JÑ!KÔ!K€ˆrŒz˜#ŒÐ KÐ KÑ Kð €�$ÐÑÔðð ð ð ð ñ ô ñ Ôðð
0$Ø€K�
˜EÑ"Ô"ð0$à€K�˜uÑ%Ô%ð0$ð €K�˜uÑ%Ô%ð0$ð €K�
˜DÑ!Ô!ð	0$ð
 €K�˜dÑ#Ô#ð0$ð €K�˜ÑÔð0$ð €K�˜ÑÔð0$ð €K��tÑÔð0$ð €K�˜$ÑÔð0$ð €K�˜$ÑÔð0$ð €K��dÑÔð0$ð €K��dÑÔð0$ð €K��dÑÔð0$ð €K��dÑÔð0$ð €K�˜dÑ#Ô#ð0$ð  €K�
˜DÑ!Ô!ð!0$ð" €K�
˜DÑ!Ô!ð#0$ð$ €K�˜TÑ"Ô"ð%0$ð& €K�˜dÑ#Ô#ð'0$ð( €K�
˜DÑ!Ô!ð)0$ð* €K�	˜4Ñ Ô ð+0$ð, €K�
˜DÑ!Ô!ð-0$ð. €K�˜#ÑÔð/0$ð0 €K�˜ÑÔð10$ð2 €K�˜ÑÔð30$ð4 €K�˜ÑÔð50$ð6 €K�˜#ÑÔð70$ð8 €K��sÑÔð90$ð: €K��cÑÔð;0$ð< €K��sÑÔð=0$ð> €K��sÑÔð?0$ð@ €K��sÑÔðA0$ðB €K�˜ÑÔðC0$ðD €K��cÑÔðE0$ðF €K��cÑÔðG0$ðH €K�˜#ÑÔðI0$ðJ €K�˜#ÑÔðK0$ðL €K�˜#ÑÔðM0$ðN €K�
˜CÑ Ô ðO0$ðP €K�
˜CÑ Ô ðQ0$ðR €K�˜#ÑÔðS0$ðT €K�˜#ÑÔðU0$ðV €K�˜ÑÔðW0$ðX €K�˜#ÑÔðY0$ðZ €K�˜ÑÔð[0$ð\ €K�˜ÑÔð]0$ð^ €K�˜dÑ#Ô#ð_0$€ˆt�KÔ ð 0ð 0ñ 0ðn 8:Ð ˜˜S $ {Ô"3Ð3Ô4Ð 9Ð 9Ñ 9Øð Lð L€FØ×%Ò% f¤n°QÔ&7¸Ñ<Ô<×CÒCÀFÑKÔKÐKÐKØ%×,Ò,Ñ.Ô.ð Cð C€GØ‡L‚LÐ3Ð3¸T€LÑBÔBÐBÐBà!+ ¤Ð,IÑ!JÔ!J€ˆrŒz˜#ŒÐ JÐ JÑ JØ#- 2¤:Ð.?Ñ#@Ô#@€�”˜C”Ð @Ð @Ñ @Ð @Ð @r   