
                             S r SSKrSSKJrJrJrJrJrJr  SSK	J
r
JrJrJrJrJrJrJr  SSKJr  / SQr " S S\5      r " S	 S
\5      r " S S\5      rg)z
pygments.lexers.make
~~~~~~~~~~~~~~~~~~~~

Lexers for Makefiles and similar.

:copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
    N)Lexer
RegexLexerincludebygroupsdo_insertionsusing)TextCommentOperatorKeywordNameStringPunctuation
Whitespace)	BashLexer)MakefileLexerBaseMakefileLexer
CMakeLexerc                       \ rS rSrSrSr/ SQr/ SQrS/r\	R                  " S5      r\	R                  " S5      rS	 rS
 rSrg)r      z}
Lexer for BSD and GNU make extensions (lenient enough to handle both in
the same file even).

*Rewritten in Pygments 0.10.*
Makefile)makemakefilemfbsdmake)z*.makz*.mkr   r   z
Makefile.*GNUmakefileztext/x-makefilez^(?:\.\s*(include|undef|error|warning|if|else|elif|endif|for|endfor)|\s*(ifeq|ifneq|ifdef|ifndef|else|endif|-?include|define|endef|:|vpath)|\s*(if|else|endif))(?=\s)z^\s*@?#c              #   :  #    / nUR                  SS9nSn[        S0 U R                  D6nSnU H  nU R                  R	                  U5      (       d  U(       aO  UR                  [        U5      S[        R                  U4/45        UR                  5       R                  S5      nMy  U R                  R	                  U5      (       a&  UR                  [        U5      S[        U4/45        M  XG-  nM     [        X%R                  U5      5       S h  vN   g  N7f)NT)keepends Fr   \ )
splitlinesr   options	r_specialmatchappendlenr
   Preprocstripendswith	r_commentr   get_tokens_unprocessed)selftextinslinesdonelexbackslashflaglines           'lib/third_party/pygments/lexers/make.pyr,   $MakefileLexer.get_tokens_unprocessed-   s     ./$,,/D~~##D))]

CIGOOT(B'CDE $

 5 5d ;%%d++

CIGT(:';<=  !&@&@&FGGGs   DDDDc                 >    [         R                  " SU 5      (       a  gg )Nz\$\([A-Z_]+\)g?)research)r.   s    r5   analyse_textMakefileLexer.analyse_text=   s    99%t,, -    r!   N)__name__
__module____qualname____firstlineno____doc__namealiases	filenames	mimetypesr8   compiler$   r+   r,   r:   __static_attributes__r!   r<   r5   r   r      sN     D3GVI"#I

	%&I 

:&IH r<   r   c                      \ rS rSrSrSrS/r/ r/ rS\	" \
5      4S\4S\4S\4S	\" \\5      S
4S\4S\" \R                   \\\\	" \
5      5      4S\R&                  4S\R(                  4S\" \R*                  \\5      S4S\S4/S\4S\R                   4S\4S\S4S\S4/S\R                   4S\S4S\4/S\4S\S4S\4S\S4S\4S\S4S\4/S .rS!rg")#r   C   zH
Lexer for simple Makefiles (no preprocessing).

.. versionadded:: 0.10
zBase Makefilebasemakez^(?:[\t ]+.*\n|\n)+z\$[<@$+%?|*]z\s+z#.*?\nz&((?:un)?export)(\s+)(?=[\w${}\t -]+\n)exportz(?:un)?export\s+z7([\w${}().-]+)(\s*)([!?:+]?=)([ \t]*)((?:.*\\\n)+|.*\n)z"(\\\\|\\[^\\]|[^"\\])*"z'(\\\\|\\[^\\]|[^'\\])*'z([^\n:]+)(:+)([ \t]*)block-headerz\$\(	expansionz[^\w$().-]+z[\w.-]+z\$\(#push\)#popz	[\w${}-]+\nz[,|]z\\\nz
[a-zA-Z_]+.)rootrM   rK   rL   r!   N)r=   r>   r?   r@   rA   rB   rC   rD   rE   r   r   r   r   r
   r   r   Variabler   r   DoubleSingleFunctionr	   r   tokensrG   r!   r<   r5   r   r   C   sv    DlGII
 $U9%56g&Z  6gz*H6 '*Gz8Zi "#
 )&--8(&--8%xx(5 g{+/
4 T"'GGW%GV$
 4==)D&!Z 
 k"(dOg{+D!J'4L
M/Fr<   r   c                      \ rS rSrSrSrSrS/rSS/rS/r	S	\
" \R                  \\5      S
4\" S5      \" S5      /S\S4S\S4S\
" \\R"                  \5      4S\
" \\R"                  \5      4S\
" \\R"                  \5      4S\R&                  4S\4S\4S\4\" S5      \" S5      // S\4/S\4S\4S\4/S.rS rSrg) r      z/
Lexer for CMake files.

.. versionadded:: 1.2
CMakez https://cmake.org/documentation/cmakez*.cmakezCMakeLists.txtztext/x-cmakez\b(\w+)([ \t]*)(\()argskeywordswsrN   rO   rP   rQ   z(\$\{)(.+?)(\})z(\$ENV\{)(.+?)(\})z(\$<)(.+?)(>)z	(?s)".*?"z\\\S+z[^)$"# \t\n]+rR   z\\b(WIN32|UNIX|APPLE|CYGWIN|BORLAND|MINGW|MSVC|MSVC_IDE|MSVC60|MSVC70|MSVC71|MSVC80|MSVC90)\bz[ \t]+z(#\[(?P<level>=*)\[[\w\W]*?\](?P=level)\]z#.*\n)rT   r^   stringr_   r`   c                 |    Sn[         R                  " X[         R                  [         R                  -  S9(       a  gg)Nzu^[ \t]*CMAKE_MINIMUM_REQUIRED[ \t]*\([ \t]*VERSION[ \t]*\d+(\.\d+)*[ \t]*([ \t]FATAL_ERROR)?[ \t]*\)[ \t]*(#[^\n]*)?$)flagsg?g        )r8   r9   	MULTILINE
IGNORECASE)r.   exps     r5   r:   CMakeLexer.analyse_text   s/     	 99SbllR]]&BCr<   r!   N)r=   r>   r?   r@   rA   rB   urlrC   rD   rE   r   r   Builtinr   r   r   r   rU   r   rV   r   r
   rY   r:   rG   r!   r<   r5   r   r      s3   
 D
,CiG,-I I< $XdllJ.9&;<BDJDM=
B K)K((DMM8!LM"HXt}}h$OPx$--JK6==)vv&JJDM

/079

 
#8'Bw
k:Fx	r<   r   )rA   r8   pygments.lexerr   r   r   r   r   r   pygments.tokenr	   r
   r   r   r   r   r   r   pygments.lexers.shellr   __all__r   r   r   r!   r<   r5   <module>rn      sX    
    +
>*E *Z;
 ;|Q Qr<   