o
    Ñ­j‘G  ã                   @   s¨   d Z ddlZddlmZmZmZmZmZmZm	Z	m
Z
 ddlmZ ddlmZmZmZmZmZmZmZmZmZ ddgZG dd	„ d	eƒZG d
d„ deƒZG dd„ deƒZdS )zÍ
    pygments.lexers.c_cpp
    ~~~~~~~~~~~~~~~~~~~~~

    Lexers for C/C++ languages.

    :copyright: Copyright 2006-present by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)Ú
RegexLexerÚincludeÚbygroupsÚusingÚthisÚinheritÚdefaultÚwords)Úget_bool_opt)	ÚTextÚCommentÚOperatorÚKeywordÚNameÚStringÚNumberÚPunctuationÚ
WhitespaceÚCLexerÚCppLexerc                   @   sÐ  e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
e
› de› d�Zdejdfdejdfde d eeeƒejƒdfde d eeeƒejƒdfde d eeejeeƒfdefdefdefe
ejfeejfdejfgedƒedƒdeejeƒdfdeejejejejƒfde d  e d! e d" e d# e d$ ejfd%e d  e d! e d" e d& e d' ejfd(e d) e d* e d+ e d, ejfd-e e ejfd.e ej fd/e ej!fd0e e ej"fd1e#fd2efd3ej$feefge%d4d5d6d7�e&j'fe%d8d6d9�e&j(fgd:ee&eƒd;fd<e&d=fe%d>d6d9�e&fe%d?d6d9�e&j'fd@e&j'fe%dAd5d6d7�e&j'fgedBƒedƒdCe	 dD e dE e	 dE e dF e dG eeeƒeedBdH�ej)eedBdH�eeƒeedBdH�eeƒeƒdIfdCe	 dD e dE e	 dE e dF e dJ eeeƒeedBdH�ej)eedBdH�eeƒeedBdH�eeƒeƒfedƒe*dKƒgedBƒedLƒdMefdNedOfgedBƒedLƒdPefdQedRfdMedOfgdSedOfdTej+fdUefdefdVefgdCe dW e dX eeeƒejeeƒej,ejƒfdCe dW e dY eeeƒejeeƒej,ejƒfdZejfd[ejfd\ejdOfd]ejfd^ejfdejdOfgd_ejdRfd`ejdOfdaejdOfdbefgeej-dOfdcedOfe*dOƒgddedOfeej.fedBƒedLƒgdeœZ/h df£Z0h dg£Z1h dh£Z2h di£Z3djdk„ Z4dpdmdn„Z5doS )qÚCFamilyLexerzg
    For C family source code.  This is used as a base class to avoid repetitious
    definitions.
    z\s*(?:/[*].*?[*]/\s*)?z[0-9a-fA-F](\'?[0-9a-fA-F])*z
\d(\'?\d)*z:(([uU]?[zZ])|([zZ][uU])|([uU][lL]{0,2})|([lL]{1,2}[uU]?))?z4(?!\d)(?:[\w$]|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8})+z7(?!\d)(?:[\w$]|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}|::)+z//(?:.|(?<=\\)\n)*\nz5/(?:\\\n)?[*](?:[^*]|[*](?!(?:\\\n)?/))*[*](?:\\\n)?/z\s*(?:(?:(?:z)|(?:z))\s*)*z^#if\s+0Úif0z^#Úmacroz^(z
)(#if\s+0)z)(#)z4(^[ \t]*)(?!(?:public|private|protected|default)\b)(z)(\s*)(:)(?!:)z\nz[^\S\n]+z\\\nz/(\\\n)?[*][\w\W]*ÚkeywordsÚtypesz([LuU]|u8)?(")ÚstringzA([LuU]|u8)?(')(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])(')z0[xX](z\.z|\.ú|z
)[pP][+-]?z[lL]?z(-)?(z
)[eE][+-]?z[fFlL]?z(-)?((z\.(z)?|\.z)[fFlL]?)|(z[fFlL])z	(-)?0[xX]z(-)?0[bB][01](\'?[01])*z(-)?0(\'?[0-7])+z(-)?z[~!%^&*+=|?:<>/-]z
[()\[\],.]z(true|false|NULL|nullptr)\b)Úint8Úint16Úint32Úint64Úwchar_tÚ__ú\b©ÚprefixÚsuffix)ÚboolÚintÚlongÚfloatÚshortÚdoubleÚcharÚunsignedÚsignedÚvoidÚ_BitIntÚ__int128©r&   z(struct|union)(\s+)Ú	classnamezcase\bú
case-value)!ÚasmÚautoÚbreakÚconstÚ	constexprÚcontinuer   ÚdoÚelseÚenumÚexternÚforÚgotoÚifÚregisterÚ
restrictedÚreturnÚsizeofÚstructÚstaticÚswitchÚtypedefÚtypeofÚtypeof_unqualÚvolatileÚwhileÚunionÚthread_localÚalignasÚalignofÚstatic_assertÚ_PragmaÚfortran)ÚinlineÚ_inlineÚ__inlineÚnakedÚrestrictÚthreadz(__m(128i|128d|128|64))\b)r6   ÚbasedÚexceptÚstdcallÚcdeclÚfastcallÚdeclspecÚfinallyÚtryÚleaveÚw64Ú	unalignedÚraiseÚnoopÚ
identifierÚforceinlineÚassumeÚnullÚ
whitespaceú(z(?:[&*\s])+)(z)(z)(\([^;"\')]*?\))(z)([^;{/"\']*)(\{))ÚstateÚfunctionz)([^;/"\']*)(;)Ú	statementÚ
statementsz\}z[{;]ú#popú;z\{z#pushú"zO\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|[0-7]{1,3})z	[^\\"\n]+z\\z)(include)(z)("[^"]+")([^\n]*)z)(<[^>]+>)([^\n]*)z[^/\n]+z/[*](.|\n)*?[*]/z//.*?\nú/z	(?<=\\)\nz^\s*#if.*?(?<!\\)\nz^\s*#el(?:se|if).*\nz^\s*#endif.*?(?<!\\)\nz.*?\nú\s*(?=>)z(?<!:)(:)(?!:))rm   rr   r   r   Úrootrq   rp   r   r   r   r4   r5   >   ÚDIRÚFILEÚdiv_tÚoff_tÚfpos_tÚldiv_tÚsize_tÚtime_tÚwint_tÚclock_tÚjmp_bufÚssize_tÚva_listr!   Úwctype_tÚ	mbstate_tÚ	ptrdiff_tÚ	wctrans_tÚsig_atomic_t>   Úint8_tÚint16_tÚint32_tÚint64_tÚuint8_tÚintmax_tÚintptr_tÚuint16_tÚuint32_tÚuint64_tÚ	uintmax_tÚ	uintptr_tÚint_fast8_tÚint_fast16_tÚint_fast32_tÚint_fast64_tÚint_least8_tÚuint_fast8_tÚint_least16_tÚint_least32_tÚint_least64_tÚuint_fast16_tÚuint_fast32_tÚuint_fast64_tÚuint_least8_tÚuint_least16_tÚuint_least32_tÚuint_least64_t>   Úid_tÚdev_tÚgid_tÚino_tÚkey_tÚpid_tÚsig_tÚuid_tÚmode_tÚnfds_tÚrlim_tÚtimer_tÚsigset_tÚsigval_tÚ	clockid_tÚ	cpu_set_tÚ	cpumask_tÚ	siginfo_tÚ	socklen_tÚsighandler_t>%   Ú
atomic_intÚatomic_boolÚatomic_charÚatomic_longÚatomic_uintÚatomic_llongÚatomic_scharÚatomic_shortÚatomic_ucharÚatomic_ulongÚatomic_size_tÚatomic_ullongÚatomic_ushortÚatomic_wchar_tÚatomic_char16_tÚatomic_char32_tÚatomic_intmax_tÚatomic_intptr_tÚatomic_ptrdiff_tÚatomic_uintmax_tÚatomic_uintptr_tÚatomic_int_fast8_tÚatomic_int_fast16_tÚatomic_int_fast32_tÚatomic_int_fast64_tÚatomic_int_least8_tÚatomic_uint_fast8_tÚatomic_int_least16_tÚatomic_int_least32_tÚatomic_int_least64_tÚatomic_uint_fast16_tÚatomic_uint_fast32_tÚatomic_uint_fast64_tÚatomic_uint_least8_tÚatomic_uint_least16_tÚatomic_uint_least32_tÚatomic_uint_least64_tc                 K   sN   t |ddƒ| _t |ddƒ| _t |ddƒ| _t |ddƒ| _tj| fi |¤Ž d S )NÚstdlibhighlightingTÚc99highlightingÚc11highlightingÚplatformhighlighting)r
   rà   rá   râ   rã   r   Ú__init__)ÚselfÚoptions© rç   úR/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pygments/lexers/c_cpp.pyrä   ø   s
   zCFamilyLexer.__init__©rx   c                 c   s’   � t  | ||¡D ]>\}}}|tu r@| jr|| jv rtj}n#| jr)|| jv r)tj}n| j	r5|| j
v r5tj}n| jr@|| jv r@tj}|||fV  qd S )N)r   Úget_tokens_unprocessedr   rà   Ústdlib_typesr   ÚTyperá   Ú	c99_typesrâ   Úc11_atomic_typesrã   Úlinux_types)rå   ÚtextÚstackÚindexÚtokenÚvaluerç   rç   rè   rê   ÿ   s   €ÿõz#CFamilyLexer.get_tokens_unprocessedN)ré   )6Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú_ws1Ú_hexpartÚ_decpartÚ
_intsuffixÚ_identÚ_namespaced_identÚ_comment_singleÚ_comment_multilineÚ_possible_commentsr   ÚPreprocr   r   r   r   r   ÚLabelr   r   ÚSingleÚ	Multiliner   r   ÚAffixÚCharr   ÚFloatÚHexÚBinÚOctÚIntegerr   ÚBuiltinr	   r   ÚReservedrì   ÚFunctionr   ÚEscapeÚPreprocFileÚClassÚConstantÚtokensrë   rí   rï   rî   rä   rê   rç   rç   rç   rè   r      sÀ   


ÿ
ÿüüûéÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêÿÿþþýûûÿÿûûò
ÿÿþþýýûûýõ
ÿÿþþýýûûýùã üûÿú	ÿÿÿÿ

ô


ü
üü �â &r   c                   @   sj   e Zd ZdZdZdgZg d¢Zg d¢ZdZdZ	dZ
ed	d
d�efegedd
d�ejfegdœZdd„ ZdS )r   aÍ  
    For C source code with preprocessor directives.

    Additional options accepted:

    `stdlibhighlighting`
        Highlight common types found in the C/C++ standard library (e.g. `size_t`).
        (default: ``True``).

    `c99highlighting`
        Highlight common types found in the C99 standard library (e.g. `int8_t`).
        Actually, this includes all fixed-width integer types.
        (default: ``True``).

    `c11highlighting`
        Highlight atomic types found in the C11 standard library (e.g. `atomic_bool`).
        (default: ``True``).

    `platformhighlighting`
        Highlight common types found in the platform SDK headers (e.g. `clockid_t` on Linux).
        (default: ``True``).
    ÚCÚc)z*.cz*.hz*.idcz*.x[bp]m)ztext/x-chdrztext/x-csrczimage/x-xbitmapzimage/x-xpixmapz6https://en.wikipedia.org/wiki/C_(programming_language)Ú çš™™™™™¹?)Ú_AlignasÚ_AlignofÚ	_NoreturnÚ_CountofÚ_GenericÚ_Thread_localÚ_Static_assertÚ
_ImaginaryÚcountofÚnoreturnÚ	imaginaryÚcomplexr#   r3   )Ú_BoolÚ_ComplexÚ_AtomicÚ
_Decimal32Ú
_Decimal64Ú_Decimal128)r   r   c                 C   s,   t  d| t j¡r
dS t  d| t j¡rdS d S )Nz^\s*#include [<"]r  z^\s*#ifn?def )ÚreÚsearchÚ	MULTILINE©rð   rç   rç   rè   Úanalyse_text;  s
   ÿzCLexer.analyse_textN)rõ   rö   r÷   rø   ÚnameÚaliasesÚ	filenamesÚ	mimetypesÚurlÚversion_addedÚpriorityr	   r   r   rì   r  r/  rç   rç   rç   rè   r     s*    ýýûþøc                
   @   s  e Zd ZdZdZdZddgZg d¢ZddgZd	Z	d
Z
deejeejejeejeƒfegeedddd�ejfdejfgedƒeddd�efejejdfdedfedƒgdeeeƒdfeddd�efdedfdeeeƒdfegdejfegdedfd ejfejejfed!ƒgd"œZd#d$„ Z d%S )&r   aÏ  
    For C++ source code with preprocessor directives.

    Additional options accepted:

    `stdlibhighlighting`
        Highlight common types found in the C/C++ standard library (e.g. `size_t`).
        (default: ``True``).

    `c99highlighting`
        Highlight common types found in the C99 standard library (e.g. `int8_t`).
        Actually, this includes all fixed-width integer types.
        (default: ``True``).

    `c11highlighting`
        Highlight atomic types found in the C11 standard library (e.g. `atomic_bool`).
        (default: ``True``).

    `platformhighlighting`
        Highlight common types found in the platform SDK headers (e.g. `clockid_t` on Linux).
        (default: ``True``).
    zC++zhttps://isocpp.org/Úcppzc++)z*.cppz*.hppz*.c++z*.h++z*.ccz*.hhz*.cxxz*.hxxz*.Cz*.Hz*.cpz*.CPPz*.tppz*.cppmz*.ixxz*.mxxztext/x-c++hdrztext/x-c++srcr  r  z<((?:[LuU]|u8)?R)(")([^\\()\s]{,16})(\()((?:.|\n)*?)(\)\3)("))Úvirtual_inheritanceÚuuidofÚsuperÚextendsÚsingle_inheritanceÚmultiple_inheritanceÚ	interfaceÚ
implementsÚeventrb   rl   r"   r#   r$   z#__(offload|blockingoffload|outer)\brm   )ÚclassrG   r3   rs   rw   z(class|concept|typename)(\s+)r4   )5ÚcatchÚ
const_castÚdeleteÚdynamic_castÚexplicitÚexportÚfriendÚmutableÚnewÚoperatorÚprivateÚ	protectedÚpublicÚreinterpret_castrA  Ú
__restrictÚstatic_castÚtemplater   ÚthrowÚthrowsrc   Útypeidr   ÚvirtualÚconceptÚdecltypeÚnoexceptÚoverrideÚfinalÚ	constinitÚ	constevalÚco_awaitÚ	co_returnÚco_yieldÚrequiresÚimportÚmoduleÚtypenameÚandÚand_eqÚbitandÚbitorÚcomplÚnotÚnot_eqÚorÚor_eqÚxorÚxor_eqÚcontract_assertÚpreÚpostznamespace\bÚ	namespacez(enum)(\s+)Úenumnamezchar(16_t|32_t|8_t)\bz[;{])rs   rx   zinline\brq   )rr   rx   rt  r   r   rs  c                 C   s$   t  d| ¡rdS t  d| ¡rdS d S )Nz#include <[a-z_]+>gš™™™™™É?zusing namespace gš™™™™™Ù?)r+  r,  r.  rç   rç   rè   r/  ›  s
   ÿzCppLexer.analyse_textN)!rõ   rö   r÷   rø   r0  r4  r1  r2  r3  r5  r6  r   r   r  Ú	Delimiterr   r	   r   r  ÚPseudor   r   rý   r   r  r   r   r   rì   r   Ú	Namespacer  r/  rç   rç   rç   rè   r   B  sd    ÿÿûþþù
ù

ö
öñþ
üÑ7)rø   r+  Úpygments.lexerr   r   r   r   r   r   r   r	   Úpygments.utilr
   Úpygments.tokenr   r   r   r   r   r   r   r   r   Ú__all__r   r   r   rç   rç   rç   rè   Ú<module>   s    
(, y4