
    |e                         d Z ddlZddlmZmZmZmZmZm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 g dZ G d de      Z G d	 d
e      Z G d de      Zy)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                   ~    e Zd ZdZdZg dZg dZdgZ ej                  d      Z
 ej                  d      Zd Zd	 Zy
)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              #     K   g }|j                  d      }d}t        di | j                  }d}|D ]  }| j                  j	                  |      s|rN|j                  t        |      dt        j                  |fgf       |j                         j                  d      }n| j                  j	                  |      r%|j                  t        |      dt        |fgf       ||z  } t        ||j                  |            E d {    y 7 w)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           6/usr/lib/python3/dist-packages/pygments/lexers/make.pyr+   z$MakefileLexer.get_tokens_unprocessed-   s     ./$,,/ 	D~~##D)]

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

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

CIGT(:';<=	 !c&@&@&FGGGs   DDDDc                 2    t        j                  d|       ryy )Nz\$\([A-Z_]+\)g?)research)r-   s    r4   analyse_textzMakefileLexer.analyse_text=   s    99%t, -    N)__name__
__module____qualname____doc__namealiases	filenames	mimetypesr6   compiler#   r*   r+   r8   r    r9   r4   r   r      sR     D3GVI"#I

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

:&IH r9   r   c                      e Zd ZdZdZdgZg Zg Zd ee	      fde
fdefdefd ee
e      d	fd
e
fd eej                  eee ee	            fdej$                  fdej&                  fd eej(                  ee      dfde
dfgdefdej                  fde
fde
dfde
dfgdej                  fdedfdefgdefdedfdefde
dfdefdedfdefgdZy )!r   zT
    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_]+.)rootrG   rE   rF   N)r:   r;   r<   r=   r>   r?   r@   rA   r   r   r   r   r
   r   r   Variabler   r   DoubleSingleFunctionr	   r   tokensr    r9   r4   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/Fr9   r   c                      e Zd ZdZdZdZdgZddgZdgZd e	e
j                  ee      d	f ed
       ed      gdedfdedfd e	ee
j                   e      fd e	ee
j                   e      fd e	ee
j                   e      fdej$                  fdefdej&                  fdefdef ed
       ed      gg defgdefdefdefgdZd Zy)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wsrH   rI   rJ   rK   z(\$\{)(.+?)(\})z(\$ENV\{)(.+?)(\})z(\$<)(.+?)(>)z	(?s)".*?"z\\\S+z'\[(?P<level>=*)\[[\w\W]*?\](?P=level)\]z[^)$"# \t\n]+rL   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)rN   rW   stringrX   rY   c                 x    d}t        j                  || t         j                  t         j                  z        ryy)Nzu^[ \t]*CMAKE_MINIMUM_REQUIRED[ \t]*\([ \t]*VERSION[ \t]*\d+(\.\d+)*[ \t]*([ \t]FATAL_ERROR)?[ \t]*\)[ \t]*(#[^\n]*)?$)flagsg?g        )r6   r7   	MULTILINE
IGNORECASE)r-   exps     r4   r8   zCMakeLexer.analyse_text   s1     	 99S$bllR]]&BCr9   N)r:   r;   r<   r=   r>   urlr?   r@   rA   r   r   Builtinr   r   r   r   rO   r   rP   	Multiliner   r
   rS   r8   r    r9   r4   r   r      sA   
 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79I9IJv&JJDM

/079

 
#8'Bw
m;Fz	r9   r   )r=   r6   pygments.lexerr   r   r   r   r   r   pygments.tokenr	   r
   r   r   r   r   r   r   pygments.lexers.shellr   __all__r   r   r   r    r9   r4   <module>rg      sX    
    +
>*E *Z;
 ;|R Rr9   