B
    `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 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-2017 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)Ú	BashLexerÚMakefileLexerÚBaseMakefileLexerÚ
CMakeLexerc               @   sZ   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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.*
    ZMakefileZmakeZmakefileZmfZbsdmakez*.makz*.mkz
Makefile.*Z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f | jŽ}d}xx|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(W xt|| |¡ƒD ]
}|V  q®W d S )NTÚ Fr   ú\)Ú
splitlinesr   ZoptionsÚ	r_specialÚmatchÚappendÚlenr	   ZPreprocÚstripÚendswithÚ	r_commentr   Úget_tokens_unprocessed)	ÚselfÚtextZinsÚlinesZdoneZlexZbackslashflagÚlineÚitem© r#   ú3lib/python3.7/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#   r$   Úanalyse_text?   s    zMakefileLexer.analyse_textN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚaliasesÚ	filenamesÚ	mimetypesr%   Úcompiler   r   r   r'   r#   r#   r#   r$   r      s   
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 MakefileZbasemakez^(?:[\t ]+.*\n|\n)+z\$[<@$+%?|*]z\s+z#.*?\nz(export)(\s+)(?=[\w${}\t -]+\n)Úexportz	export\s+z7([\w${}().-]+)(\s*)([!?:+]?=)([ \t]*)((?:.*\\\n)+|.*\n)z(?s)"(\\\\|\\.|[^"\\])*"z(?s)'(\\\\|\\.|[^'\\])*'z([^\n:]+)(:+)([ \t]*)zblock-headerz\$\(Ú	expansionz[^$a-zA-Z_()]+z
[a-zA-Z_]+z\$z\(z#pushz\)z#popz	[\w${}-]+z\nz[,|]z\\\nÚ.)Úrootr2   r1   zblock-headerN)r(   r)   r*   r+   r,   r-   r.   r/   r   r   r   r   r	   r   r   ÚVariabler
   r   ÚDoubleÚSingleZFunctionr   Útokensr#   r#   r#   r$   r   E   sD   


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
    ZCMakeZcmakez*.cmakezCMakeLists.txtztext/x-cmakez\b(\w+)([ \t]*)(\()ÚargsÚkeywordsÚwsz\(z#pushz\)z#popz(\$\{)(.+?)(\})z(\$ENV\{)(.+?)(\})z(\$<)(.+?)(>)z	(?s)".*?"z\\\S+z[^)$"# \t\n]+z\nz\\b(WIN32|UNIX|APPLE|CYGWIN|BORLAND|MINGW|MSVC|MSVC_IDE|MSVC60|MSVC70|MSVC71|MSVC80|MSVC90)\bz[ \t]+z#.*\n)r4   r9   Ústringr:   r;   c             C   s$   d}t j|| t jt jB dr dS dS )NzI^ *CMAKE_MINIMUM_REQUIRED *\( *VERSION *\d(\.\d)* *( FATAL_ERROR)? *\) *$)Úflagsgš™™™™™é?g        )r%   r&   Ú	MULTILINEÚ
IGNORECASE)r   Zexpr#   r#   r$   r'   Æ   s    zCMakeLexer.analyse_textN)r(   r)   r*   r+   r,   r-   r.   r/   r   r   ZBuiltinr   r   r   r
   r5   r   r6   r   r	   r8   r'   r#   r#   r#   r$   r   €   s4   
)r+   r%   Zpygments.lexerr   r   r   r   r   r   Zpygments.tokenr   r	   r
   r   r   r   r   Zpygments.lexers.shellr   Ú__all__r   r   r   r#   r#   r#   r$   Ú<module>
   s    $
.;