
    MhF                         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	e          Z G d
 de          Z G d de          ZdS )z
    pygments.lexers.c_cpp
    ~~~~~~~~~~~~~~~~~~~~~

    Lexers for C/C++ languages.

    :copyright: Copyright 2006-2025 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                   J	   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z   dz    e ee          ej                  dfdez   dz    e ee          ej                  dfdez   dz    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z   d z   ez   d!z   ez   d"z   ez   d#z   ez   d$z   ej        fd%ez   d z   ez   d!z   ez   d"z   ez   d&z   ez   d'z   ej        fd(ez   d)z   ez   d*z   ez   d+z   ez   d,z   ej        fd-ez   ez   ej        fd.ez   ej         fd/ez   ej!        fd0ez   ez   ej"        fd1e#fd2efd3ej$        feefg e%d4d5d67          e&j'        f e%d8d69          e&j(        fgd: ee&e          d;fd<e&d=f e%d>d69          e&f e%d?d69          e&j'        fd@e&j'        f e%dAd5d67          e&j'        fg edB           ed          dCe	z   dDz   ez   dEz   e	z   dEz   ez   dFz   ez   dGz    e ee           eedBH          ej)         eedBH           ee           eedBH           ee          e          dIfdCe	z   dDz   ez   dEz   e	z   dEz   ez   dFz   ez   dJz    e ee           eedBH          ej)         eedBH           ee           eedBH           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z   dWz   ez   dXz    e ee          ej         ee          ej,        ej                  fdCez   dWz   ez   dYz    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Z3dj Z4dndlZ5dmS )o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][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)\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continuer	   doelseenumexternforgotoifregister
restrictedreturnsizeofstructstaticswitchtypedefvolatilewhileunionthread_localalignasalignofstatic_assert_Pragma)inline_inline__inlinenakedrestrictthreadz(__m(128i|128d|128|64))\b)r8   basedexceptstdcallcdeclfastcalldeclspecfinallytryleavew64	unalignedraisenoop
identifierforceinlineassume
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(?<!:)(:)(?!:))rj   ro   r   r   rootrn   rm   r   r   r   r6   r7   >   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                     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optionss     U/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pygments/lexers/c_cpp.pyr   zCFamilyLexer.__init__   sv    ".w8Ld"S"S+G5FMM+G5FMM$0:PRV$W$W!D,,G,,,,,    ru   c              #   J  K   t          j        | ||          D ]\  }}}|t          u rs| j        r|| j        v rt
          j        }nV| j        r|| j        v rt
          j        }n9| j	        r|| j
        v rt
          j        }n| j        r|| j        v rt
          j        }|||fV  d S )N)r   get_tokens_unprocessedr   r   stdlib_typesr   Typer   	c99_typesr   c11_atomic_typesr   linux_types)r   textstackindextokenvalues         r   r   z#CFamilyLexer.get_tokens_unprocessed   s      1$eDD	& 	&E5%}}* )u8I/I/I#LEE) )et~.E.E#LEE) )et7L.L.L#LEE. )5D<L3L3L#LE%%%%%	& 	&r   N)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      s         %D /H H5J EFR .OQ [ZZ?QZZZ
 '/517?G,D[=(XeeDkk7?33U<D[6!XeeDkk7?33W> 	 /	/
 Xj$*j+FFH J*%dOgn-!23"G$56/
4 GJGGv > >IQXflFKfkJJL !E)H4v=H,-/78:BCDJLR  5(83f<xG$N%&(013=>?E|M!F*X5@&')124>?@FNH$z16:>'*4fjA :-vz:x*,fn=!8,K(#T\2TN-
2 UA% " " "#*#35U  (-/ / /07>
 $XXgz%B%BKP.U V
  ! ! !
 #*+ U &+- - -.5.>@ *7+;<U 7
 U, , ,
 .5-=?
, GL!!GJ%% ) &'*%&) ''*
 ''
*!! XeeDkk55\#B#B#BmUU4|%D%D%DeDkk55\#B#B#BeDkk;0 0  %% ) &'*%&) ''*
 ''
* XeeDkk55\#B#B#BmUU4|%D%D%DeDkk55\#B#B#BeDkk;0 0
1 GGGK  ;
@ GL!!GL!!K k6*	
 GL!!GL!!+K)K(
 66"<=C]L6"fFO
 $Y~%d*+@@tgouuT{{ ,gn> >? $Y~%d*+@@tgouuT{{ ,gn> >? ) '"3407?#7?+GOV,
 $W_g>$gov>&@w	
 TZ($'GFOO	
 V4T]#GL!!GL!!	
{c cFJ8 8 8L: : :IA A AK
C 
C 
C- - -& & & & & &r   r   c                       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
          efeg edd
          ej        fegdZ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_Generic_Thread_local_Static_assert
_Imaginarynoreturn	imaginarycomplexr%   r5   )_Bool_Complex_Atomic)r   r   c                     t          j        d| t           j                  rdS t          j        d| t           j                  rdS d S )Nz^\s*#include [<"]r  z^\s*#ifn?def )research	MULTILINEr   s    r   analyse_textzCLexer.analyse_text;  sH    9)4>> 	39%tR\:: 	3	 	r   N)r   r   r   r   namealiases	filenames	mimetypesurlversion_addedpriorityr
   r   r   r   r  r,  r  r   r   r   r     s         , DeG333ITTTI
BCMH U T     '( 
 U3EBBBGLQ
 F    r   c                      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          ej        fdej        fg ed           e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          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# 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text/x-c++hdrztext/x-c++srcr  r  z<((?:[LuU]|u8)?R)(")([^\\()\s]{,16})(\()((?:.|\n)*?)(\)\3)("))virtual_inheritanceuuidofsupersingle_inheritancemultiple_inheritance	interfaceeventr$   r%   r&   z#__(offload|blockingoffload|outer)\brj   )classrH   r5   rp   rt   z(class|concept|typename)(\s+)r6   )4catch
const_castdeletedynamic_castexplicitexportfriendmutablenewoperatorprivate	protectedpublicreinterpret_castr=  
__restrictstatic_casttemplater   throwthrowsra   typeidr   virtual	constexprnullptr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_eqznamespace\b	namespacez(enum)(\s+)enumnamezchar(16_t|32_t|8_t)\bz[;{])rp   ru   zinline\brn   )ro   ru   ro  r   r   rn  c                 b    t          j        d|           rdS t          j        d|           rdS d S )Nz#include <[a-z_]+>g?zusing namespace g?)r(  r)  r+  s    r   r,  zCppLexer.analyse_text  s@    9)400 	39'.. 	3	 	r   N)!r   r   r   r   r-  r1  r.  r/  r0  r2  r3  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  s        , D
CenG9 9 9I !/2IMH
 MXflFF,<f>Nf.8 89 
 U B/ / /070@B 4W^D
 GL!!U&u555w? $*f5$'GFOO
 .xx/L/LkZU 	: 
 
 
 &
' Wk2XXgz::JG
$ &w|4

 k#34'*+ $.1GK  	
_5 5Fn    r   )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   <module>rx     s    
			" " " " " " " " " " " " " " " " " " " " & & & & & &$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ Z
 u& u& u& u& u&: u& u& u&p1 1 1 1 1\ 1 1 1h\ \ \ \ \| \ \ \ \ \r   