U
    luf~-                     @   s   d 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mZmZ ddlmZ ddlmZmZmZmZmZ ddgZdZd	ZG d
d deZG dd deZdS )z
    pygments.lexers.julia
    ~~~~~~~~~~~~~~~~~~~~~

    Lexers for the Julia language.

    :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    )Lexer
RegexLexerbygroupsdo_insertionswordsinclude)
TextCommentOperatorKeywordNameStringNumberPunctuationGeneric
Whitespaceshebang_matches)OPERATORS_LISTDOTTED_OPERATORS_LISTKEYWORD_LISTBUILTIN_LISTLITERAL_LIST
JuliaLexerJuliaConsoleLexeru)   (?:[a-zA-Z_¡-􏿿][a-zA-Z_0-9!¡-􏿿]*)uN  [²³¹ʰʲʳʷʸˡˢˣᴬᴮᴰᴱᴳᴴᴵᴶᴷᴸᴹᴺᴼᴾᴿᵀᵁᵂᵃᵇᵈᵉᵍᵏᵐᵒᵖᵗᵘᵛᵝᵞᵟᵠᵡᵢᵣᵤᵥᵦᵧᵨᵩᵪᶜᶠᶥᶦᶫᶰᶸᶻᶿ′″‴‵‶‷⁗⁰ⁱ⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎ₐₑₒₓₕₖₗₘₙₚₛₜⱼⱽ]*c                ,   @   s  e Zd ZdZdZdZddgZdgZddgZd	e	fd
e	fde
jdfde
fdefde d e d eee	eefde d ejfde d ee	ejfde d e d eeje	ee	ejfde d eee	ejfde d eeje	efeeeedefedd eD edefeddgefdejfde d  efd!eejed"fd#eejed$fd%eejejd&fd'eejejd(fde d) eejed*fde d+ eejed,fde d- eejejd.fde d/ eejejd0fde d1 eejed2fd3e d eee	ejfd4ed2fd5e d eee	eeejfd6e d eee	eeejfd7e ejfeedhed7ed9ejfeed:defee d:dejfee!d:dej"feefd;e#j$fd<e#j$fd=e#j$fd>e#j%fd?e#j&fd@e#j'fdAe#j(fed8gefg+dBe
jfde
jdCfdDe
jdEfdFe
jfgdGedCfdHedEfeejfe)dIgdJedEfdKefgdLedEfdMej*fdNefgdOe ej+fdPeej+edQfgdRedCfdSedEfe)dIgdTe dU eeejdEfdVej*fe)dWdXej+fdYefd8efgdZe dU eeejdEfdVej*fe)dWdYefd8efgd[eejejdEfdMejfd\ejfgd]eejejdEfd^ejfgd_e dU eejejdEfd`ej*fe)dWdaejfd8ejfgdbe dU eejejdEfdcej*fe)dWdaejfd8ejfgddZ,dedf Z-dgS )ir   z;
    For Julia source code.

    .. versionadded:: 1.6
    ZJuliazhttps://julialang.org/juliaZjlz*.jlztext/x-juliazapplication/x-juliaz\nz[^\S\n]+z#=blockcommentz#.*$z
[\[\](),;](z
)(\s*)(:)()z(?<![\]):<>\d.])(:z(?<=::)(\s*)(z)\b(?![(\[])z)(\s*)([<>]:)(\s*)(z([<>]:)(\s*)(z\b(z)(\s*)([<>]:))suffixc                 C   s   g | ]}d | qS ). ).0or!   r!   9/tmp/pip-unpacked-wheel-7eq1ciah/pygments/lexers/julia.py
<listcomp>K   s     zJuliaLexer.<listcomp>z.....zZ'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,3}|\\u[a-fA-F0-9]{1,4}|\\U[a-fA-F0-9]{1,6}|[^\\\'\n])'z(?<=[.\w)\]])(\'z)+z
(raw)(""")tqrawstringz(raw)(")	rawstringz(r)(""")tqregexz(r)(")regexz)?(""")tqstringz)?(")stringz)?(```)	tqcommandz)?(`)commandz)(\{)curlyz(where)(\s+)(z(\{)z.(abstract|primitive)([ \t]+)(type\b)([\s()]+)(z0(mutable(?=[ \t]))?([ \t]+)?(struct\b)([\s()]+)(@r    )prefixr   z\bzJ(\d+((_\d+)+)?\.(?!\.)(\d+((_\d+)+)?)?|\.\d+((_\d+)+)?)([eEf][+-]?[0-9]+)?z\d+((_\d+)+)?[eEf][+-]?[0-9]+zQ0x[a-fA-F0-9]+((_[a-fA-F0-9]+)+)?(\.([a-fA-F0-9]+((_[a-fA-F0-9]+)+)?)?)?p[+-]?\d+z0b[01]+((_[01]+)+)?z0o[0-7]+((_[0-7]+)+)?z!0x[a-fA-F0-9]+((_[a-fA-F0-9]+)+)?z\d+((_\d+)+)?z[^=#]z#pushz=#z#popz[=#]z\{z\}rootz"""z([^"]|"[^"][^"])+"z\\"z([^"\\]|\\[^"])+z\$z(\$)(\()in-intpz\(z\)z(")(z|\d+)?z+\\([\\"\'$nrbtfav]|(x|u|U)[a-fA-F0-9]+|\d+)interpz=%[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?[hlL]?[E-GXc-giorsux%]z	[^"$%\\]+z(""")(z(")([imsxa]*)?z[^\\"]+z(""")([imsxa]*)?z[^"]+z(`)(z\\[`$]z[^\\`$]+z(```)(z\\\$)r2   r   r/   r'   r(   r5   r4   r,   r+   r*   r)   r.   r-   c                 C   s
   t | dS )Nr   r   )textr!   r!   r$   analyse_text   s    zJuliaLexer.analyse_textN)r&   r    ).__name__
__module____qualname____doc__nameurlaliases	filenames	mimetypesr   r	   Z	Multiliner   allowed_variabler   r   r
   r   ZSymbolr   Typer   r   r   operator_suffixesCharZAffixRegexZBacktickr   Z	Decoratorr   r   r   ZBuiltinr   ZFloatZBinOctZHexZIntegerr   ZEscapeZInterpoltokensr7   r!   r!   r!   r$   r      sd  







 

 
 
 

 

 t




 

 

 	
   Lc                   @   s$   e Zd ZdZdZddgZdd ZdS )r   zb
    For Julia console sessions. Modeled after MatlabSessionLexer.

    .. versionadded:: 1.6
    zJulia consoleZjlconz
julia-replc           	   	   c   s  t f | j}d}d}g }d}d}|jddD ]F}|drz|t|dtj|d d fgf ||dd  7 }d}d}n|ds|d	r|tj|d d fV  |d t|dd  fV  d}d}n|d
r|s|t|dt	|d d fgf ||dd  7 }n\|r0t
|||E d H  d}g }|dsB|rV|tj|fV  d}n|tj|fV  d}|t|7 }q,|rt
|||E d H  d S )Nr    FT)keependszjulia>   zhelp?>zshell>z      zERROR: )r   options
splitlines
startswithappendlenr   ZPromptr   r   r   get_tokens_unprocessedErrorZOutput)	selfr6   ZjllexerstartZcurcodeZ
insertionsoutputerrorliner!   r!   r$   rP      sL    
$" 
 z(JuliaConsoleLexer.get_tokens_unprocessedN)r8   r9   r:   r;   r<   r>   rP   r!   r!   r!   r$   r      s   N) r;   Zpygments.lexerr   r   r   r   r   r   Zpygments.tokenr   r	   r
   r   r   r   r   r   r   r   Zpygments.utilr   Zpygments.lexers._julia_builtinsr   r   r   r   r   __all__rA   rC   r   r   r!   r!   r!   r$   <module>   s   
 0 ]