o
    Ñ­jš  ã                   @   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-present 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                   @   sV   e Zd ZdZdZg d¢Zg d¢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Úbsdmake)z*.makz*.mkr   r   z
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di | j¤Ž}d}|D ]8}| j |¡s!|r7| t|ƒdtj|fgf¡ | 	¡  
d¡}q| j |¡rK| 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ÚtextÚinsÚlinesÚdoneÚlexÚbackslashflagÚliner   r   úQ/var/www/html/CropPilot/venv/lib/python3.10/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   r2   Úanalyse_text?   s   ÿzMakefileLexer.analyse_textN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚaliasesÚ	filenamesÚ	mimetypesÚurlÚversion_addedr3   Úcompiler!   r(   r)   r5   r   r   r   r2   r      s    ÿ
r   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_]+Ú.)ÚrootrD   rB   rC   N)r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r   r   r   r   r	   r   r   ÚVariabler
   r   ÚDoubleÚSingleÚFunctionr   r   Útokensr   r   r   r2   r   E   sd    

ÿ
þÿÿþéûýù
Úr   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ÚwsrE   rF   rG   rH   z(\$\{)(.+?)(\})z(\$ENV\{)(.+?)(\})z(\$<)(.+?)(>)z	(?s)".*?"z\\\S+z'\[(?P<level>=*)\[[\w\W]*?\](?P=level)\]z[^)$"# \t\n]+rI   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)rK   rS   ÚstringrT   rU   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        )r3   r4   Ú	MULTILINEÚ
IGNORECASE)r+   Úexpr   r   r2   r5   Ë   s
   ÿzCMakeLexer.analyse_textN)r6   r7   r8   r9   r:   r>   r;   r<   r=   r?   r   r   ÚBuiltinr   r   r   r
   rL   r   rM   Ú	Multiliner   r	   rP   r5   r   r   r   r2   r   ƒ   sP    
ÿÿâ!ôÿÿýÊ=r   )r9   r3   Ú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   r2   Ú<module>   s    
 (/>