3

V'íc~ã@sždZddlZddlmZmZmZmZmZmZddl	m
Z
mZmZm
Z
mZmZmZmZddlmZdddgZGd	d„deƒZGd
d„deƒZGdd„deƒZdS)zÎ
    pygments.lexers.make
    ~~~~~~~~~~~~~~~~~~~~

    Lexers for Makefiles and similar.

    :copyright: Copyright 2006-2022 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@sZeZdZdZdZddddgZddddd	d
gZdgZej	dƒZ
ej	d
ƒZdd„Zdd„Z
dS)rz
    Lexer for BSD and GNU make extensions (lenient enough to handle both in
    the same file even).

    *Rewritten in Pygments 0.10.*
    ÚMakefileÚmakeÚmakefileZmfZbsdmakez*.makz*.mkz
Makefile.*ZGNUmakefileztext/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*@?#ccs¸g}|jdd}d}tf|jŽ}d}xx|D]p}|jj|ƒs>|rj|jt|ƒdtj|fgfƒ|j	ƒj
dƒ}q*|jj|ƒr’|jt|ƒdt|fgfƒq*||7}q*Wt||j
|ƒƒEdHdS)NT)ÚkeependsÚFrú\)Ú
splitlinesrÚoptionsÚ	r_specialÚmatchÚappendÚlenr	ZPreprocÚstripÚendswithÚ	r_commentrÚget_tokens_unprocessed)ÚselfÚtextZinsÚlinesÚdoneÚlexZ
backslashflagÚline©r*ú8/tmp/pip-build-gk9425m9/Pygments/pygments/lexers/make.pyr#-s
z$MakefileLexer.get_tokens_unprocessedcCstjd|ƒrdSdS)Nz
\$\([A-Z_]+\)gš™™™™™¹?)ÚreÚsearch)r%r*r*r+Úanalyse_text=szMakefileLexer.analyse_textN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚaliasesÚ	filenamesÚ	mimetypesr,Úcompilerr"r#r.r*r*r*r+rs
c@seZdZdZdZdgZgZgZdee	ƒfde
fdefdefde
e
eƒd	fd
e
fde
ejeeeee	ƒƒfdejfd
ejfde
ejeeƒdfde
dfgdefdejfde
fde
dfde
dfgdejfdedfdefgdefdedfdefde
dfdefdedfdefgdœZd S)!rzT
    Lexer for simple Makefiles (no preprocessing).

    .. versionadded:: 0.10
    z
Base MakefileZbasemakez^(?:[\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]*)zblock-headerz\$\(Ú	expansionz[^\w$().-]+z[\w.-]+z\$z\(z#pushz\)z#popz	[\w${}-]+z\nz[,|]z\\\nz
[a-zA-Z_]+Ú.)Úrootr9r8zblock-headerN)r/r0r1r2r3r4r5r6rrrrr	rrÚVariabler
r
ÚDoubleÚSingleZFunctionrrÚtokensr*r*r*r+rCsJ





c
@sÚeZdZdZdZdZdgZddgZdgZde	e
jee
ƒd	fed
ƒedƒgde
d
fde
dfde	ee
jeƒfde	ee
jeƒfde	ee
jeƒfdejfdefdefdefed
ƒedƒggdefgdefdefgdœZdd„ZdS)rz;
    Lexer for CMake files.

    .. versionadded:: 1.2
    ZCMakez https://cmake.org/documentation/Zcmakez*.cmakezCMakeLists.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)r;r@ÚstringrArBcCs$d}tj||tjtjBdr dSdS)Nzu^[ \t]*CMAKE_MINIMUM_REQUIRED[ \t]*\([ \t]*VERSION[ \t]*\d+(\.\d+)*[ \t]*([ \t]FATAL_ERROR)?[ \t]*\)[ \t]*(#[^\n]*)?$)Úflagsgš™™™™™é?g)r,r-Ú	MULTILINEÚ
IGNORECASE)r%Úexpr*r*r+r.ÈszCMakeLexer.analyse_textN)r/r0r1r2r3Úurlr4r5r6rrZBuiltinrrrr
r<r
r=rr	r?r.r*r*r*r+rs6
)r2r,Zpygments.lexerrrrrrrZpygments.tokenrr	r
rrr
rrZpygments.lexers.shellrÚ__all__rrrr*r*r*r+Ú<module>	s (
->