B
    `+                 @   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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-2021 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)Lexer
RegexLexerbygroupsdo_insertionswordsinclude)	TextCommentOperatorKeywordNameStringNumberPunctuationGeneric)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dgZdgZddgZej	ej
B 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d/fde d0 eejed1fd2e d eeeejfd3ed1fd4e d eeeejfd5e ej feedfed5ed7ej fee!d8defee"d8dejfee#d8dej$feefd9e%j&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ed6gefg*d@ejfd
ejdAfdBejdCfdDejfgdEedAfdFedCfeejfe+dGgdHedCfdIefgdJedCfdKej,fdLefgdMe ej-fdNeej-edOfgdPedAfdQedCfe+dGgdRe dS eeejdCfdTej,fe+dUdVej-fdWefd6efgdXe dS eeejdCfdTej,fe+dUdWefd6efgdYeejejdCfdKejfdZejfgd[eejejdCfd\ejfgd]e dS eejejdCfd^ej,fe+dUd_ejfd6ejfgd`e dS eejejdCfdaej,fe+dUd_ejfd6ejfgdbZ.dcdd Z/deS )gr   zV
    For `Julia <http://julialang.org/>`_ source code.

    .. versionadded:: 1.6
    ZJulia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   ]/home/kop/projects/devel/pgwui/test_venv/lib/python3.7/site-packages/pygments/lexers/julia.py
<listcomp>L   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(\{)zM(abstract[ \t]+type|primitive[ \t]+type|mutable[ \t]+struct|struct)([\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(\$)(\()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\\\$)r0   r   r-   r%   r&   r2   zin-intpr*   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   )0__name__
__module____qualname____doc__namealiases	filenames	mimetypesre	MULTILINEUNICODEflagsr   r	   Z	Multiliner   allowed_variabler   r   r
   r   ZSymbolr   Typer   r   r   operator_suffixesCharZAffixRegexZBacktickZ	Decoratorr   r   r   ZBuiltinr   ZFloatZBinOctZHexZIntegerr   ZEscapeZInterpoltokensr4   r   r   r   r"   r      s   












c               @   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}xV|dD ]F}|dr||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\|r2t	||
|E d H  d}g }|d
sD|rX|tj|fV  d}n|tj|fV  d}|t|7 }q.W |rt	||
|E d H  d S )Nr    FTzjulia>   zhelp?>zshell>z      zERROR: )r   options
splitlines
startswithappendlenr   ZPromptr   r   get_tokens_unprocessedErrorZOutput)	selfr3   ZjllexerstartZcurcodeZ
insertionsoutputerrorliner   r   r"   rO      sD    
$"z(JuliaConsoleLexer.get_tokens_unprocessedN)r5   r6   r7   r8   r9   r:   rO   r   r   r   r"   r      s   ) r8   r=   Zpygments.lexerr   r   r   r   r   r   Zpygments.tokenr   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    , O