U
    YSh                     @   s   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 d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.make
    ~~~~~~~~~~~~~~~~~~~~

    Lexers for Makefiles and similar.

    :copyright: Copyright 2006-2025 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                   @   sb   e Zd ZdZdZddddgZddddd	d
gZdgZdZdZ	e
dZe
dZdd Zdd ZdS )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bsdmakez*.makz*.mkz
Makefile.*GNUmakefileztext/x-makefile-https://en.wikipedia.org/wiki/Make_(software) z^(?:\.\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                 c   s   g }|j dd}d}tf | j}d}|D ]p}| j|s<|rh|t|dtj|fgf |	 
d}q(| j|r|t|dt|fgf q(||7 }q(t|||E d H  d S )NT)keependsr   Fr   \)
splitlinesr   options	r_specialmatchappendlenr	   Preprocstripendswith	r_commentr   get_tokens_unprocessed)selftextZinslinesdonelexZbackslashflagline r/   G/root/rtd-docs/venv/lib/python3.8/site-packages/pygments/lexers/make.pyr(   /   s    
z$MakefileLexer.get_tokens_unprocessedc                 C   s   t d| rdS d S )Nz\$\([A-Z_]+\)g?)research)r*   r/   r/   r0   analyse_text?   s    zMakefileLexer.analyse_textN)__name__
__module____qualname____doc__namealiases	filenames	mimetypesurlversion_addedr1   compiler    r'   r(   r3   r/   r/   r/   r0   r      s   
c                   @   s  e Zd ZdZdZdgZg Zg ZdZd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d"S )#r   z8
    Lexer for simple Makefiles (no preprocessing).
    zBase Makefilebasemaker   z0.10z^(?:[\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_]+.)rootrB   r@   rA   N)r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r   r   r   r   r	   r   r   Variabler
   r   DoubleSingleFunctionr   r   tokensr/   r/   r/   r0   r   E   sn   
      c                   @   s   e Zd ZdZdZdZdgZddgZdgZd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d Zd S )!r   z 
    Lexer for CMake files.
    CMakez https://cmake.org/documentation/cmakez*.cmakezCMakeLists.txtztext/x-cmakez1.2z\b(\w+)([ \t]*)(\()argskeywordswsrC   rD   rE   rF   z(\$\{)(.+?)(\})z(\$ENV\{)(.+?)(\})z(\$<)(.+?)(>)z	(?s)".*?"z\\\S+z'\[(?P<level>=*)\[[\w\W]*?\](?P=level)\]z[^)$"# \t\n]+rG   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)rI   rQ   stringrR   rS   c                 C   s$   d}t j|| t jt jB dr dS dS )Nzu^[ \t]*CMAKE_MINIMUM_REQUIRED[ \t]*\([ \t]*VERSION[ \t]*\d+(\.\d+)*[ \t]*([ \t]FATAL_ERROR)?[ \t]*\)[ \t]*(#[^\n]*)?$)flagsg?g        )r1   r2   	MULTILINE
IGNORECASE)r*   expr/   r/   r0   r3      s
    zCMakeLexer.analyse_textN)r4   r5   r6   r7   r8   r<   r9   r:   r;   r=   r   r   Builtinr   r   r   r
   rJ   r   rK   	Multiliner   r	   rN   r3   r/   r/   r/   r0   r      sN   
!=)r7   r1   Zpygments.lexerr   r   r   r   r   r   Zpygments.tokenr   r	   r
   r   r   r   r   r   Zpygments.lexers.shellr   __all__r   r   r   r/   r/   r/   r0   <module>   s   
 (
/>