U
    祡c;r                     @   s"  d Z ddl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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 ddlmZ dd	d
ddddg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#G dd deZ$G dd deZ%G dd deZ&dS )z
    pygments.lexers.dotnet
    ~~~~~~~~~~~~~~~~~~~~~~

    Lexers for .net languages.

    :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)
RegexLexerDelegatingLexerbygroupsincludeusingthisdefaultwords)PunctuationTextCommentOperatorKeywordNameStringNumberLiteralOther
Whitespace)get_choice_opt)	unistring)XmlLexerCSharpLexerNemerleLexerBooLexer
VbNetLexerCSharpAspxLexerVbNetAspxLexerFSharpLexerc                   @   s  e Zd ZdZdZdZdddgZdgZdgZe	j
e	jB Zd	d
eddddd d d edddddddddd
 d dedddddd d d eddddddddddd d dZi ZdZe D ](\ZZde d e d  eeeeejeefd!eeejfd"efd#eeefd$ej fd%ej!fd&efd'efd(efd)e"fd*e"fd+e"j#fd,e$fd-eej%eej%ej%efd.ee&ee&fd/e&fd0ee&efd1e&j'fd2ee&ed3fd4ee&ed5feefgeej(d6fe)d6gd7ed6fd8e d9 ej*d6fgd:ee< qd;d< Z+d=S )>r   a  
    For C# source code.

    Additional options accepted:

    `unicodelevel`
      Determines which Unicode characters this lexer allows for identifiers.
      The possible values are:

      * ``none`` -- only the ASCII letters and numbers are allowed. This
        is the fastest selection.
      * ``basic`` -- all Unicode characters from the specification except
        category ``Lo`` are allowed.
      * ``full`` -- all Unicode characters as specified in the C# specs
        are allowed.  Note that this means a considerable slowdown since the
        ``Lo`` category has more than 40,000 characters in it!

      The default value is ``basic``.

      .. versionadded:: 0.8
    zC#z/https://docs.microsoft.com/en-us/dotnet/csharp/Zcsharpzc#csz*.csztext/x-csharp@?[_a-zA-Z]\w*@?[_LuLlLtLmNl][NdPcCfMnMc]*	@?(?:_|[^Lo])[^nonebasicfullT^([ \t]*)((?:(?:\[\])?\s+)+?)(
)(\s*)(\()^(\s*)(\[.*?\])[^\S\n]+(\\)(\n)//.*?\n/[*].*?[*]/\n[~!%^&*()+=|\[\]:;,.<>/?-][{}]@"(""|[^"])*"z!\$?"(\\\\|\\[^\\]|[^"\\\n])*["\n]'\\.'|'[^\\]'zA[0-9](\.[0-9]*)?([eE][+-][0-9]+)?[flFLdD]?|0[xX][0-9a-fA-F]+[Ll]?zb(#)([ \t]*)(if|endif|else|elif|define|undef|line|error|warning|region|endregion|pragma)\b(.*?)(\n)\b(extern)(\s+)(alias)\ba  (abstract|as|async|await|base|break|by|case|catch|checked|const|continue|default|delegate|do|else|enum|event|explicit|extern|false|finally|fixed|for|foreach|goto|if|implicit|in|interface|internal|is|let|lock|new|null|on|operator|out|override|params|private|protected|public|readonly|ref|return|sealed|sizeof|stackalloc|static|switch|this|throw|true|try|typeof|unchecked|unsafe|virtual|void|while|get|set|new|partial|yield|add|remove|value|alias|ascending|descending|from|group|into|orderby|select|thenby|where|join|equals)\b(global)(::)zk(bool|byte|char|decimal|double|dynamic|float|int|long|object|sbyte|short|string|uint|ulong|ushort|var)\b\??z(class|struct)(\s+)class(namespace|using)(\s+)	namespace#pop(?=\()(|\.)+)rootrF   rH   c                 K   sL   t |dt| jd}|| jkr.| j|| _n| j| | _tj| f| d S NZunicodelevelr5   	r   listtokensZ_all_tokens	__class__Zprocess_tokendefZ_tokensr   __init__selfoptionslevel rX   :/tmp/pip-unpacked-wheel-6wad6tea/pygments/lexers/dotnet.pyrS      s
    
zCSharpLexer.__init__N),__name__
__module____qualname____doc__nameurlaliases	filenames	mimetypesre	MULTILINEDOTALLflagsunicombine	allexceptlevelsrQ   token_variantsitems	levelnamecs_identr   r   r   r   r   Functionr
   	Attributer   r   Single	Multiliner   Charr   Preprocr   TypeClassr   	NamespacerS   rX   rX   rX   rY   r      s   
      
 .
8c                !   @   s.  e Zd ZdZdZdZdgZdgZdgZe	j
e	jB Zdded	d
ddd d d ed	d
dddddddd
 d ded	d
dddd d d ed	d
ddddddddd d dZi ZdZe D ]P\ZZde d e d eeeeejeefdeeejfd efd!eeefd"ej fd#ej!fd$efd%ee"ee"d&fd'ee"ee"d(fd)e"d*fd+e d, ee#ee#fd-e#fd.e efd/eeed0fd1efd2efd3e"fd4e"fd5e"j$fd6e%fd7e%fd8eej&eej&d9fd:ee#ee#fd;e#fd<ee#efd=e#j'fd>e d? eeee#j'fd@ee#edAfdBee#edCfeefgeej(dDfgdEej&fdFefd$edDfgdGedDfdHe dI ej)dDfgdJe"fd.e efd/eeed0fdKe"fdLe"dDfgdMe"fd.e efd/eeed0fd)e"dNfdOe"dDfgdPe"fd)e"dNfdOe"dDfgdQe#fdRefeefdSe%fdTedNfdUedDfgdVee< qdWdX Z*dYdZ Z+d[S )\r   a  
    For Nemerle source code.

    Additional options accepted:

    `unicodelevel`
      Determines which Unicode characters this lexer allows for identifiers.
      The possible values are:

      * ``none`` -- only the ASCII letters and numbers are allowed. This
        is the fastest selection.
      * ``basic`` -- all Unicode characters from the specification except
        category ``Lo`` are allowed.
      * ``full`` -- all Unicode characters as specified in the C# specs
        are allowed.  Note that this means a considerable slowdown since the
        ``Lo`` category has more than 40,000 characters in it!

      The default value is ``basic``.

    .. versionadded:: 1.5
    ZNemerlezhttp://nemerle.orgZnemerlez*.nztext/x-nemerler    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   Tr7   r8   r9   r:   r;   r<   r=   r>   r?   z(\$)(\s*)(")splice-stringz(\$)(\s*)(<#)splice-string2z<#recursive-stringz(<\[)(\s*)(z:)?z\]\>z\$z(\$)(\()splice-string-contentr@   rA   rB   z"(\\\\|\\[^\\]|[^"\\\n])*["\n]rC   z0[xX][0-9a-fA-F]+[Ll]?z*[0-9](\.[0-9]*)?([eE][+-][0-9]+)?[flFLdD]?zY(#)([ \t]*)(if|endif|else|elif|define|undef|line|error|warning|region|endregion|pragma)\bpreprocrD   a  (abstract|and|as|base|catch|def|delegate|enum|event|extern|false|finally|fun|implements|interface|internal|is|macro|match|matches|module|mutable|new|null|out|override|params|partial|private|protected|public|ref|sealed|static|syntax|this|throw|true|try|type|typeof|virtual|volatile|when|where|with|assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield)\brE   zo(bool|byte|char|decimal|double|float|int|long|object|sbyte|short|string|uint|ulong|ushort|void|array|list)\b\??z(:>?)(\s*)(z\??)z"(class|struct|variant|module)(\s+)rF   rG   rH   rI   z\w+z[ \t]+rJ   rK   rL   z[^"$]z\\""z[^#<>$]#pushz#>z[^#<>]zif|matchz[~!%^&*+=|\[\]:;,.<>/?-\\"$ ]\d+\(\))rM   rF   r|   rH   rx   ry   rz   r{   c                 K   sL   t |dt| jd}|| jkr.| j|| _n| j| | _tj| f| d S rN   rO   rT   rX   rX   rY   rS   )  s    
zNemerleLexer.__init__c                 C   s   d}d| kr|d7 }|S )zUNemerle is quite similar to Python, but @if is relatively uncommon
        elsewhere.r   z@ifg?rX   textresultrX   rX   rY   analyse_text4  s    zNemerleLexer.analyse_textN),rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rQ   rk   rl   rm   rn   r   r   r   r   r   ro   r
   rp   r   r   rq   rr   r   r   rs   r   rt   ru   rv   rw   rS   r   rX   rX   rX   rY   r      s        
 

 
 
@


	

	kc                   @   sV  e Zd ZdZdZdZdgZdgZdgZde	fde
jfd	e
jd
fdefdeee	fdefdejfdejfdejfdefdefdefdeee	dfdeee	dfdeee	dfdejfdejfdejfdejfdefdejfd efd!ejfd"ejfd#ejjfd$ejfgd	e
jd%fd&e
jd'fd(e
jfd)e
jfgdejd'fgdejd'fgd*ej d'fgd+Z!d,S )-r   z
    For Boo source code.
    ZBoozhttps://github.com/boo-lang/booZbooz*.booz
text/x-boo\s+z	(#|//).*$z/[*]commentz[]{}:(),.;[]r<   z\\z(in|is|and|or|not)\bz/(\\\\|\\[^\\]|[^/\\\s])/z@/(\\\\|\\[^\\]|[^/\\])*/z=~|!=|==|<<|>>|[-+/*%=<>&^|]aO  (as|abstract|callable|constructor|destructor|do|import|enum|event|final|get|interface|internal|of|override|partial|private|protected|public|return|set|static|struct|transient|virtual|yield|super|and|break|cast|continue|elif|else|ensure|except|for|given|goto|if|in|is|isa|not|or|otherwise|pass|raise|ref|try|unless|when|while|from|as)\bzdef(?=\s+\(.*?\))z
(def)(\s+)funcnamez(class)(\s+)	classnamez(namespace)(\s+)rH   z(?<!\.)(true|false|null|self|__eval__|__switch__|array|assert|checked|enumerate|filter|getter|len|lock|map|matrix|max|min|normalArrayIndexing|print|property|range|rawArrayIndexing|required|typeof|unchecked|using|yieldAll|zip)\bz"""(\\\\|\\"|.*?)"""z"(\\\\|\\[^\\]|[^"\\])*"z'(\\\\|\\[^\\]|[^'\\])*'z[a-zA-Z_]\w*z%(\d+\.\d*|\d*\.\d+)([fF][+-]?[0-9]+)?z[0-9][0-9.]*(ms?|d|h|s)z0\d+z0x[a-fA-F0-9]+z\d+Lr   r~   z[*]/rI   z[^/*]z[*/]z[a-zA-Z_][\w.]*)rM   r   r   r   rH   N)"rZ   r[   r\   r]   r^   r_   r`   ra   rb   r   r   rq   rr   r
   r   r   r   Wordr   Regexr   r   BuiltinDoubler   FloatOctHexIntegerZLongro   rv   rw   rQ   rX   rX   rX   rY   r   ?  sb   

'




c                   @   s  e Zd ZdZdZdZdddddgZd	d
gZddgZde	
dddd d d e	
ddddddddd	 d ZejejB Zdejfdefdefdeeefdeeefdejfd efd!eejeejeejfed"d#d$d%efd&ed'fd(ed)fd*eeed+fd,eeed-fd.eeed/fd0ejfd1ejfd2efd3ed4fd5eeefed6 efd7ej fd8e!j"fd9e!j#fd:e!j#fd;e!j#fgd<efd=ed>fd?efgeej$d>fe%d>geej&d>fgeej'd>fgeej(fd@ej(fe%d>gdefdAed>fe%d>gdBZ)dCdD Z*dES )Fr   zo
    For Visual Basic.NET source code.
    Also LibreOffice Basic, OpenOffice Basic, and StarOffice Basic.
    zVB.netz5https://docs.microsoft.com/en-us/dotnet/visual-basic/zvb.netZvbnetZlobasZoobasZsobasz*.vbz*.basztext/x-vbnetz
text/x-vbaz[_r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   z	^\s*<.*?>r   r?   z(rem\b.*?)(\n)z
('.*?)(\n)z#If\s.*?\sThen|#ElseIf\s.*?\sThen|#Else|#End\s+If|#Const|#ExternalSource.*?\n|#End\s+ExternalSource|#Region.*?\n|#End\s+Region|#ExternalChecksumz[(){}!#,.:]z?(Option)(\s+)(Strict|Explicit|Compare)(\s+)(On|Off|Binary|Text))lZ
AddHandlerZAliasZByRefZByValZCallZCaseZCatchZCBoolZCByteZCCharZCDateZCDecZCDblZCIntZCLngZCObjContinueZCSByteZCShortZCSngZCStrZCTypeZCUIntZCULngZCUShortZDeclareZDefaultZDelegateZ
DirectCastZDoEachZElseZElseIfZEndIfZEraseErrorEventZExitFalseZFinallyZForZFriendZGetZGlobalZGoSubZGoToZHandlesZIfZ
ImplementsZInheritsZ	InterfaceZLetLibZLoopZMeZMustInheritZMustOverrideZMyBaseZMyClassZ	NarrowingZNewZNextZNotZNothingZNotInheritableZNotOverridableZOfZOnr   OptionOptionalZ	OverloadsZOverridableZ	OverridesZ
ParamArrayZPartialZPrivateZ	ProtectedZPublicZ
RaiseEventZReadOnlyZReDimZRemoveHandlerZResumeZReturnZSelectSetZShadowsZSharedrq   ZStaticZStepZStopZSyncLockZThenZThrowToTrueZTryZTryCastZWendZUsingZWhenZWhileZWideningZWithZ
WithEventsZ	WriteOnlyz(?<!\.)z\b)prefixsuffixz(?<!\.)End\bendz(?<!\.)(Dim|Const)\bdimz#(?<!\.)(Function|Sub|Property)(\s+)r   z"(?<!\.)(Class|Structure|Enum)(\s+)r   z&(?<!\.)(Module|Namespace|Imports)(\s+)rH   z|(?<!\.)(Boolean|Byte|Char|Date|Decimal|Double|Integer|Long|Object|SByte|Short|Single|String|Variant|UInteger|ULong|UShort)\bzU(?<!\.)(AddressOf|And|AndAlso|As|GetType|In|Is|IsNot|Like|Mod|Or|OrElse|TypeOf|Xor)\bzE&=|[*]=|/=|\\=|\^=|\+=|-=|<<=|>>=|<<|>>|:=|<=|>=|<>|[-&*/\\^+=<>\[\]]r}   stringz(_)(\n)z	[%&@!#$]?z#.*?#z"(\d+\.\d*|\d*\.\d+)(F[+-]?[0-9]+)?z\d+([SILDFR]|US|UI|UL)?z&H[0-9a-f]+([SILDFR]|US|UI|UL)?z&O[0-7]+([SILDFR]|US|UI|UL)?""z"C?rI   [^"]+\.z?(Function|Sub|Property|Class|Structure|Enum|Module|Namespace)\b)rM   r   r   r   r   rH   r   c                 C   s   t d| t jrdS d S )Nz^\s*(#If|Module|Namespace)g      ?)rc   searchrd   r   rX   rX   rY   r     s    zVbNetLexer.analyse_textN)+rZ   r[   r\   r]   r^   r_   r`   ra   rb   rg   rh   Zuni_namerc   rd   
IGNORECASErf   r   rp   r   r   r   rt   r
   r   ZDeclarationr	   ru   r   r   r   r   r   Dater   r   r   Variabler   ro   rv   rw   rQ   r   rX   rX   rX   rY   r     s           
<


 Xc                   @   sf   e Zd ZdZdZg Zg ZejZ	dde
ejeejfde
eeeeefdeefdeefgiZdS )	GenericAspxLexerz"
    Lexer for ASP.NET pages.
    zaspx-genrM   z(<%[@=#]?)(.*?)(%>)z(<script.*?>)(.*?)(</script>)z
(.+?)(?=<)z.+N)rZ   r[   r\   r]   r^   ra   rb   rc   re   rf   r   r   Tagr   r   r   rQ   rX   rX   rX   rY   r     s   


r   c                       sF   e Zd ZdZdZdgZddddddgZg Z fd	d
Zdd Z	  Z
S )r   z9
    Lexer for highlighting C# within ASP.NET pages.
    zaspx-cs*.aspx*.asax*.ascx*.ashx*.asmx*.axdc                    s   t  jttf| d S N)superrS   r   r   rU   rV   rR   rX   rY   rS     s    zCSharpAspxLexer.__init__c                 C   s4   t d| t jd k	rdS t d| t jd k	r0dS d S )NzPage\s*Language="C#"皙?zscript[^>]+language=["\']C#333333?rc   r   Ir   rX   rX   rY   r     s    zCSharpAspxLexer.analyse_textrZ   r[   r\   r]   r^   r`   ra   rb   rS   r   __classcell__rX   rX   r   rY   r   	  s   c                       sF   e Zd ZdZdZdgZddddddgZg Z fd	d
Zdd Z	  Z
S )r   zG
    Lexer for highlighting Visual Basic.net within ASP.NET pages.
    zaspx-vbr   r   r   r   r   r   c                    s   t  jttf| d S r   )r   rS   r   r   r   r   rX   rY   rS   '  s    zVbNetAspxLexer.__init__c                 C   s4   t d| t jd k	rdS t d| t jd k	r0dS d S )NzPage\s*Language="Vb"r   zscript[^>]+language=["\']vbr   r   r   rX   rX   rY   r   *  s    zVbNetAspxLexer.analyse_textr   rX   rX   r   rY   r     s   c                B   @   s  e Zd ZdZdZdZddgZddgZdgZd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJgBZ	e	dKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcddg7 Z	dedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddddddddddg+Z
dZdddgZdZdZdddddddddddddddddddddddddgZdejfdejfdejfdejfgdefdejjfdejdfdefdeejefdeejefdedfdedfdedfdedfdeeeejfdeeeejfdeeeejfdeeeeeejfddƠ e	 efdefddƠ e
 e!fdeeef e!fddƠ e e!j"fddƠ e ej#fdeej$eej$ej$efdefde%j&fde%j'fde%j(fde%j)fde%j*fdej+fdej+fdefdej,dfdejfg defdrefdejfdedfdedfe-d؃gdefdedfdedfdedfdedfdedfdefgdefe.ddefdefdedfgdefdefdefdedfgdefdefdedfdefgdZ/dd Z0dS )r   zG
    For the F# language (version 3.0).

    .. versionadded:: 1.5
    zF#zhttps://fsharp.org/Zfsharpzf#z*.fsz*.fsiztext/x-fsharpZabstractasassertbasebeginrF   r   Zdelegatezdo!ZdodoneZdowncastZdowntoelifelser   	exceptionexternfalsefinallyforfunctionZfunglobalifZinheritinlineZ	interfaceZinternalinZlazyzlet!ZletmatchmembermoduleZmutablerH   newnullZofopenoverrideprivatepublicZreczreturn!returnselectZstaticstructZthentotruetrytypeZupcastzuse!Zusevalvoidwhenwhilewithzyield!yieldZatomicbreakchecked	componentconst
constraintconstructorcontinueeagereventZexternalZfixedZfunctorr   methodZmixinobjectparallelprocessZ	protectedZpureZsealedZtailcallZtraitZvirtualZvolatilez!=#z&&&r   r   z\*z\+,z-\.z->-z\.\.r   z::z:=z:>:z;;;z<-z<\]<z>\]>z\?\?z\?z\[<z\[\|z\[z\]_`z\{z\|\]z\|z\}~z<@@z<@=z@>z@@>z[!$%&*+\./:<=>?@^|~-]andornotz[!?~]z[=<>@^|&+\*/$%-]ZsbytebytecharZ	nativeintZ
unativeintZfloat32ZsinglefloatdoubleZint8Zuint8Zint16Zuint16Zint32Zuint32Zint64Zuint64decimalunitboolr   rP   Zexnobjenumz\\[\\"\'ntbrafv]z
\\[0-9]{3}z\\u[0-9a-fA-F]{4}z\\U[0-9a-fA-F]{8}r   z	\(\)|\[\]z \b(?<!\.)([A-Z][\w\']*)(?=\s*\.)dottedz\b([A-Z][\w\']*)z(///.*?)(\n)z(//.*?)(\n)z
\(\*(?!\))r   z@"lstringz"""tqsr}   z\b(open|module)(\s+)([\w.]+)z\b(let!?)(\s+)(\w+)z\b(type)(\s+)(\w+)z&\b(member|override)(\s+)(\w+)(\.)(\w+)z\b(%s)\b|z``([^`\n\r\t]|`[^`\n\r\t])+``z(%s)z
(%s|%s)?%sz;(#)([ \t]*)(if|endif|else|line|nowarn|light|\d+)\b(.*?)(\n)z[^\W\d][\w']*z\d[\d_]*[uU]?[yslLnQRZINGmM]?z-0[xX][\da-fA-F][\da-fA-F_]*[uU]?[yslLn]?[fF]?z0[oO][0-7][0-7_]*[uU]?[yslLn]?z0[bB][01][01_]*[uU]?[yslLn]?z/-?\d[\d_]*(.[\d_]*)?([eE][+\-]?\d[\d_]*)[fFmM]?z9'(?:(\\[\\\"'ntbr ])|(\\[0-9]{3})|(\\x[0-9a-fA-F]{2}))'B?z'.''z@?"z[~?][a-z][\w\']*:z[A-Z][\w\']*(?=\s*\.)z[A-Z][\w\']*rI   z[a-z_][\w\']*z	[^(*)@"]+z\(\*r~   z\*\)z[(*)@]z[^\\"]+escape-sequencez\\\nr?   z"B?r   r   z"""B?)r  rM   r  r   r   r	  r
  c                 C   s(   d}d| kr|d7 }d| kr$|d7 }|S )zSF# doesn't have that many unique features -- |> and <| are weak
        indicators.r   z|>g?z<|rX   r   rX   rX   rY   r     s    zFSharpLexer.analyse_textN)1rZ   r[   r\   r]   r^   r_   r`   ra   rb   keywordsZkeyopts	operatorsZword_operatorsZprefix_symsZ
infix_symsZ
primitivesr   ZEscaper   r   r   ZPseudorw   r   ZDocr   rq   r   r   rv   r
   ro   joinr   r   ru   rt   r   r   r   r   ZBinr   rs   r   r   r   rQ   r   rX   rX   rX   rY   r   2  s                                                                                                                       
                     
  
3
a)'r]   rc   Zpygments.lexerr   r   r   r   r   r   r   r	   Zpygments.tokenr
   r   r   r   r   r   r   r   r   r   r   Zpygments.utilr   Zpygmentsr   rg   Zpygments.lexers.htmlr   __all__r   r   r   r   r   r   r   r   rX   rX   rX   rY   <module>   s(   	(4  t 3Dn