o
    Ñ­j0'  ã                   @   s´   d Z ddlZddl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mZmZ g d¢ZG dd„ deƒZG dd	„ d	eƒZG d
d„ deƒZG dd„ deƒZG dd„ deƒZdS )zÚ
    pygments.lexers.algebra
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for computer algebra systems.

    :copyright: Copyright 2006-present by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)ÚLexerÚ
RegexLexerÚbygroupsÚdo_insertionsÚwords)
ÚTextÚCommentÚOperatorÚKeywordÚNameÚStringÚNumberÚPunctuationÚGenericÚ
Whitespace)ÚGAPLexerÚGAPConsoleLexerÚMathematicaLexerÚ
MuPADLexerÚBCLexerc                   @   sŒ   e Zd ZdZdZdZdgZg d¢ZdZdde	j
fd	efd
efdefdejfdejfdefdejfdejfdefdefdefgiZdd„ ZdS )r   z
    For GAP source code.
    ÚGAPúhttps://www.gap-system.orgÚgap)z*.gz*.gdz*.giz*.gapú2.0Úrootz#.*$ú"(?:[^"\\]|\\.)*"ú\(|\)|\[|\]|\{|\}aV  (?x)\b(?:
                if|then|elif|else|fi|
                for|while|do|od|
                repeat|until|
                break|continue|
                function|local|return|end|
                rec|
                quit|QUIT|
                IsBound|Unbind|
                TryNextMethod|
                Info|Assert
              )\bzD(?x)\b(?:
                true|false|fail|infinity
              )\bzx(?x)\b(?:
                (Declare|Install)([A-Z][A-Za-z]+)|
                   BindGlobal|BIND_GLOBAL
              )\bz\.|,|:=|;|=|\+|-|\*|/|\^|>|<z=(?x)\b(?:
                and|or|not|mod|in
              )\bzC(?x)
              (?:\w+|`[^`]*`)
              (?:::\w+|`[^`]*`)*ú[0-9]+(?:\.[0-9]*)?(?:e[0-9]+)?ú\.[0-9]+(?:e[0-9]+)?Ú.c                 C   s6   d}t  d| ¡r|d7 }t  d| ¡r|d7 }t|dƒS )Nç        zl(InstallTrueMethod|Declare(Attribute|Category|Filter|Operation|GlobalFunction|Synonym|SynonymAttr|Property))gffffffæ?zm(DeclareRepresentation|Install(GlobalFunction|Method|ImmediateMethod|OtherMethod)|New(Family|Type)|Objectify)g      ð?)ÚreÚsearchÚmin)ÚtextÚscore© r&   úT/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pygments/lexers/algebra.pyÚanalyse_textG   s   þþ
zGAPLexer.analyse_textN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚurlÚaliasesÚ	filenamesÚversion_addedr   ÚSingler   r   r
   r   ÚConstantÚBuiltinr	   ÚWordÚVariabler   r   Útokensr(   r&   r&   r&   r'   r      sB    õýüýþÝÿ(r   c                   @   s>   e Zd ZdZdZddgZdgZdZdZdZ	d	d
„ Z
dd„ ZdS )r   zD
    For GAP console sessions. Modeled after JuliaConsoleLexer.
    zGAP sessionzgap-consolezgap-replz*.tstr   z2.14zgap-repl/euclidean.tstc           	   	   c   sR  � t di | j¤Ž}d}d}g }d}d}|jdd�D ]~}| d¡s%| d¡rD| t|ƒdtj|d d… fgf¡ ||dd … 7 }d}d}nM|sf| d	¡rf| t|ƒdtj|d d
… fgf¡ ||d
d … 7 }n+|rwt|| 	|¡ƒE d H  d}g }| d¡s~|rˆ|tj
|fV  d}n|tj|fV  d}|t|ƒ7 }q|r§t|| 	|¡ƒE d H  d S d S )Nr   Ú FT)Úkeependszgap> zbrk> é   z> é   zError, r&   )r   ÚoptionsÚ
splitlinesÚ
startswithÚappendÚlenr   ÚPromptr   Úget_tokens_unprocessedÚErrorÚOutput)	Úselfr$   ÚgaplexerÚstartÚcurcodeÚ
insertionsÚoutputÚerrorÚliner&   r&   r'   rB   f   sB   €$$

ÿ
ÿÿz&GAPConsoleLexer.get_tokens_unprocessedc                 C   s   t  d| ¡rdS dS )Nz^gap> gÍÌÌÌÌÌì?r    )r!   r"   )r$   r&   r&   r'   r(   Š   s   zGAPConsoleLexer.analyse_textN)r)   r*   r+   r,   r-   r/   r0   r.   r1   Ú_examplerB   r(   r&   r&   r&   r'   r   [   s    $r   c                   @   sª   e Zd ZdZdZdZg d¢Zg d¢Zg d¢ZdZ	dZ
d	Zd
d„ Zddefdejfdejfdejfdefdejfdejfdejfee
ƒefeeƒefdefdejfgiZdS )r   z,
    Lexer for Mathematica source code.
    ÚMathematicaz!https://www.wolfram.com/language/)ÚmathematicaÚmmaÚnbÚwlÚwolfram)z*.nbz*.cdfz*.nbpz*.maz*.wlz*.wls)zapplication/mathematicaz#application/vnd.wolfram.mathematicaz+application/vnd.wolfram.mathematica.packagezapplication/vnd.wolfram.cdfzapplication/vnd.wolfram.wlr   ) z;;ú=z=.z!===z:=z->z:>z/.ú+ú-Ú*ú/ú^z&&z||ú!z<>ú|z/;ú?ú@z//z/@z@@z@@@z~~z===ú&ú<ú>z<=z>=)ú,ú;ú(ú)ú[ú]Ú{Ú}c                 C   s   d  d dd„ | D ƒ¡¡S )Nz({})r[   c                 s   s   � | ]}t  |¡V  qd S )N)r!   Úescape)Ú.0Úentryr&   r&   r'   Ú	<genexpr>®   s   € z1MathematicaLexer._multi_escape.<locals>.<genexpr>)ÚformatÚjoin)Úentriesr&   r&   r'   Ú_multi_escape­   s   zMathematicaLexer._multi_escaper   z(?s)\(\*.*?\*\)z([a-zA-Z]+[A-Za-z0-9]*`)z([A-Za-z0-9]*_+[A-Za-z0-9]*)z#\d*z([a-zA-Z]+[a-zA-Z0-9]*)z
-?\d+\.\d*z
-?\d*\.\d+z-?\d+z".*?"ú\s+N)r)   r*   r+   r,   r-   r.   r/   r0   Ú	mimetypesr1   Ú	operatorsÚpunctuationrp   r   r   Ú	Namespacer6   r   ÚFloatÚIntegerr   r	   r   r   r   r   r7   r&   r&   r&   r'   r   •   s4    

ñÿr   c                   @   sØ   e Zd ZdZdZdZdgZdgZdZde	j
fde	jd	fd
efdefdefdejfdejfdejjfdefdejfdefdeejeeƒfdejfdefdefdefdefgde	jfde	jdfde	jdfde	jfgdœZdS ) r   z[
    A MuPAD lexer.
    Contributed by Christopher Creutzig <christopher@creutzig.de>.
    ÚMuPADzhttp://www.mupad.comÚmupadz*.muz0.8z//.*?$ú/\*Úcommentr   r   a¹  (?x)\b(?:
                next|break|end|
                axiom|end_axiom|category|end_category|domain|end_domain|inherits|
                if|%if|then|elif|else|end_if|
                case|of|do|otherwise|end_case|
                while|end_while|
                repeat|until|end_repeat|
                for|from|to|downto|step|end_for|
                proc|local|option|save|begin|end_proc|
                delete|frame
              )\baU  (?x)\b(?:
                DOM_ARRAY|DOM_BOOL|DOM_COMPLEX|DOM_DOMAIN|DOM_EXEC|DOM_EXPR|
                DOM_FAIL|DOM_FLOAT|DOM_FRAME|DOM_FUNC_ENV|DOM_HFARRAY|DOM_IDENT|
                DOM_INT|DOM_INTERVAL|DOM_LIST|DOM_NIL|DOM_NULL|DOM_POLY|DOM_PROC|
                DOM_PROC_ENV|DOM_RAT|DOM_SET|DOM_STRING|DOM_TABLE|DOM_VAR
              )\bz�(?x)\b(?:
                PI|EULER|E|CATALAN|
                NIL|FAIL|undefined|infinity|
                TRUE|FALSE|UNKNOWN
              )\bz\b(?:dom|procname)\bz-\.|,|:|;|=|\+|-|\*|/|\^|@|>|<|\$|\||!|\'|%|~=zž(?x)\b(?:
                and|or|not|xor|
                assuming|
                div|mod|
                union|minus|intersect|in|subset
              )\bz \b(?:I|RDN_INF|RD_NINF|RD_NAN)\bzi(?x)
              ((?:[a-zA-Z_#][\w#]*|`[^`]*`)
              (?:::[a-zA-Z_#][\w#]*|`[^`]*`)*)(\s*)([(])z](?x)
              (?:[a-zA-Z_#][\w#]*|`[^`]*`)
              (?:::[a-zA-Z_#][\w#]*|`[^`]*`)*r   r   rq   r   z[^/*]+z#pushú\*/ú#popú[*/]©r   r{   N)r)   r*   r+   r,   r-   r.   r/   r0   r1   r   r2   Ú	Multiliner   r   r
   r   ÚClassr3   r4   ÚPseudor	   r5   r   r   ÚFunctionr   r6   r   r7   r&   r&   r&   r'   r   Å   sV    

öûû
úýþÏ4

ü
Ìr   c                	   @   sˆ   e Zd ZdZdZdZdgZdgZdZde	j
dfd	efd
efeddd�efdefdefdefdefgde	j
fde	j
dfde	j
fgdœZdS )r   z
    A BC lexer.
    ÚBCz https://www.gnu.org/software/bc/Úbcz*.bcz2.1rz   r{   r   z[{}();,])ÚifÚelseÚwhileÚforÚbreakÚcontinueÚhaltÚreturnÚdefineÚautoÚprintÚreadÚlengthÚscaleÚsqrtÚlimitsÚquitÚwarrantyz\b)Úsuffixz!\+\+|--|\|\||&&|([-<>+*%\^/!=])=?z[0-9]+(\.[0-9]*)?z\.[0-9]+r   z[^*/]+r|   r}   r~   r   N)r)   r*   r+   r,   r-   r.   r/   r0   r1   r   r€   r   r   r   r
   r	   r   r   r7   r&   r&   r&   r'   r     s6    
ýýÿó
ý
ðr   )r,   r!   Úpygments.lexerr   r   r   r   r   Úpygments.tokenr   r   r	   r
   r   r   r   r   r   r   Ú__all__r   r   r   r   r   r&   r&   r&   r'   Ú<module>   s    
0F:0H