
    L&i&                         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e          Z G d d	e          Z G d
 de          Z G d de          Z G d de          ZdS )z
    pygments.lexers.algebra
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for computer algebra systems.

    :copyright: Copyright 2006-2022 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                       e Zd ZdZdZdZdgZg 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 ZdS )r   z9
    For GAP source code.

    .. versionadded:: 2.0
    GAPzhttp://www.gap-system.orggap)z*.gz*.gdz*.giz*.gap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                     d}t          j        d|           r|dz  }t          j        d|           r|dz  }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scores     d/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/pygments/lexers/algebra.pyanalyse_textzGAPLexer.analyse_textH   sh     9>?C
 
 	 SLE 9HIM
 
 	 SLE5#    N)__name__
__module____qualname____doc__nameurlaliases	filenamesr	   Singler   r   r   r   ConstantBuiltinr
   WordVariabler   r   tokensr(    r)   r'   r   r      s         
 D
%CgG000I 	gn%!6*!;/  ] \	
 -h7 ]$%)]4 08$f-4LG$
&FP    r)   r   c                   0    e Zd ZdZdZddgZdgZd Zd ZdS )	r   z`
    For GAP console sessions. Modeled after JuliaConsoleLexer.

    .. versionadded:: 2.14
    zGAP sessionzgap-consolezgap-replz*.tstc           	   #   x  K   t          di | j        }d}d}g }d}d}|                    d          D ]W}|                    d          s|                    d          rL|                    t          |          dt          j        |d d         fgf           ||dd          z  }d}d}n|s]|                    d	          rH|                    t          |          dt          j        |d d
         fgf           ||d
d          z  }nm|r-t          ||	                    |                    E d {V  d}g }|                    d          s|r|t          j
        |fV  d}n|t          j        |fV  d}|t          |          z  }Y|r+t          ||	                    |                    E d {V  d S d S )Nr    FT)keependszgap> zbrk>    z>    zError, r8   )r   options
splitlines
startswithappendlenr   Promptr   get_tokens_unprocessedErrorOutput)	selfr%   gaplexerstartcurcode
insertionsoutputerrorlines	            r'   rE   z&GAPConsoleLexer.get_tokens_unprocessedf   sY     ++dl++
OOTO22 	 	Dw'' 4??7+C+C !!3w<<1gnd2A2h2O1P"QRRR48#  5 5 !!3w<<1gnd2A2h2O1P"QRRR48# $,"H$C$CG$L$L N  N N N N N N N N G!#J??9-- 6 64444 EE5555SYYEE 	F$H;;GDDF F F F F F F F F F F	F 	Fr)   c                 4    t          j        d|           rdS dS )Nz^gap> g?r!   )r"   r#   )r%   s    r'   r(   zGAPConsoleLexer.analyse_text   s"    
 9Y%% 	33r)   N)	r*   r+   r,   r-   r.   r0   r1   rE   r(   r8   r)   r'   r   r   \   sX         
 Dj)G	I!F !F !FH    r)   r   c                       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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   zG
    Lexer for Mathematica source code.

    .. versionadded:: 2.0
    Mathematicaz#http://www.wolfram.com/mathematica/)mathematicammanb)z*.nbz*.cdfz*.nbpz*.ma)zapplication/mathematicaz#application/vnd.wolfram.mathematicaz+application/vnd.wolfram.mathematica.packagezapplication/vnd.wolfram.cdf) z;;=z=.z!===z:=z->z:>z/.+-*/^z&&z||!z<>|z/;?@z//z/@z@@z@@@z~~z===&<>z<=z>=),;()[]{}c                 F    dd                     d | D                       z  S )Nz(%s)r]   c              3   >   K   | ]}t          j        |          V  d S )N)r"   escape).0entrys     r'   	<genexpr>z1MathematicaLexer._multi_escape.<locals>.<genexpr>   s,      !H!Hu")E"2"2!H!H!H!H!H!Hr)   )join)entriess    r'   _multi_escapezMathematicaLexer._multi_escape   s(    !H!H!H!H!HHHIIr)   r   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/   r0   r1   	mimetypes	operatorspunctuationrs   r	   r   	Namespacer6   r   FloatIntegerr   r
   r   r   r   r   r7   r8   r)   r'   r   r      s         
 D
/C***G222I0 0 0II ;KJ J J 	)($.9,dm<dm$'.FL)FL)v~&U9x(U;-vT_%
FFFr)   r   c                   L   e Zd ZdZdZdZdgZdg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   zv
    A MuPAD lexer.
    Contributed by Christopher Creutzig <christopher@creutzig.de>.

    .. versionadded:: 0.8
    MuPADzhttp://www.mupad.commupadz*.muz//.*?$/\*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   rt   r   z[^/*]+z#push\*/#pop[*/]r   r   N)r*   r+   r,   r-   r.   r/   r0   r1   r	   r2   	Multiliner   r   r   r   Classr3   r4   Pseudor
   r5   r   r   Functionr   r6   r   r7   r8   r)   r'   r   r      sY         D
 CiGI 'W&	2!6*!;/
 

 j"
 ] %dl&9:=xH ] 1&9< XdmT;779126-A 08$f-Z 4Lc2
h )*W&0W&/g'(	
i: :FFFr)   r   c            	           e Zd ZdZdZdZdgZdgZdej	        dfde
fd	ef e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   z0
    A BC lexer.

    .. versionadded:: 2.1
    BCz https://www.gnu.org/software/bc/bcz*.bcr~   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/   r0   r1   r	   r   r   r   r   r   r
   r   r   r7   r8   r)   r'   r   r     s         
 D
,CfGI W&	2!6*+&U   )./ / / 189"#+- "6*&!4L
  )*W&/g'(
! FFFr)   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   r8   r)   r'   <module>r      s    
			 L L L L L L L L L L L L L L- - - - - - - - - - - - - - - - - - - - - - - -  D D D D Dz D D DN6 6 6 6 6e 6 6 6r- - - - -z - - -`F F F F F F F FR         j          r)   