o
    ‡ÎÖa  ã                   @   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 g d¢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-2021 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                   @   sN   e Zd ZdZdZg d¢Zg d¢Zdg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Ú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                 c   s¸   � g }|  d¡}d}tdi | j¤Ž}d}|D ]8}| j |¡s |r6| t|ƒdtj|fgf¡ | 	¡  
d¡}q| j |¡rJ| t|ƒdt|fgf¡ q||7 }qt|| |¡ƒE d H  d S )NTÚ Fr   ú\© )Ú
splitlinesr   ÚoptionsÚ	r_specialÚmatchÚappendÚlenr	   ÚPreprocÚstripÚendswithÚ	r_commentr   Úget_tokens_unprocessed)ÚselfÚtextÚinsÚlinesÚdoneÚlexÚbackslashflagÚliner   r   ú6/usr/lib/python3/dist-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Ú	mimetypesr1   Úcompiler   r&   r'   r3   r   r   r   r0   r      s    ÿ
r   c                   @   s  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d S )!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_]+Ú.)Úrootr@   r>   r?   N)r4   r5   r6   r7   r8   r9   r:   r;   r   r   r   r   r	   r   r   r   ÚVariabler
   r   ÚDoubleÚSingleÚFunctionr   Útokensr   r   r   r0   r   C   sV    

ÿÿÿìûýù
Ýr   c                   @   sÖ   e 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fdefed	ƒed
ƒgg defgdefdefgdœZdd„ ZdS )r   z\
    Lexer for `CMake <http://cmake.org/Wiki/CMake>`_ files.

    .. versionadded:: 1.2
    ÚCMakeÚcmakez*.cmakezCMakeLists.txtztext/x-cmakez\b(\w+)([ \t]*)(\()ÚargsÚkeywordsÚwsrA   rB   rC   rD   z(\$\{)(.+?)(\})z(\$ENV\{)(.+?)(\})z(\$<)(.+?)(>)z	(?s)".*?"z\\\S+z[^)$"# \t\n]+rE   z\\b(WIN32|UNIX|APPLE|CYGWIN|BORLAND|MINGW|MSVC|MSVC_IDE|MSVC60|MSVC70|MSVC71|MSVC80|MSVC90)\bz[ \t]+z#.*\n)rG   rO   ÚstringrP   rQ   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   r9   r:   r;   r   r   ÚBuiltinr   r   r   r
   rH   r   rI   r   r   r	   rL   r3   r   r   r   r0   r   ~   sH    
ÿÿâ!õÿÿþË;r   )r7   r1   Ú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   r   r0   Ú<module>   s    
 (-;