B
    (d                @   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
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 ddd	d
ddddd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#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+G d(d deZ,dS ))z
    pygments.lexers.jvm
    ~~~~~~~~~~~~~~~~~~~

    Pygments lexers for JVM languages.

    :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)	Lexer
RegexLexerincludebygroupsusingthiscombineddefaultwords)	TextCommentOperatorKeywordNameStringNumberPunctuation
Whitespace)shebang_matches)	unistring	JavaLexer
ScalaLexer	GosuLexerGosuTemplateLexerGroovyLexer	IokeLexerClojureLexerClojureScriptLexerKotlinLexer
XtendLexerAspectJLexerCeylonLexerPigLexer	GoloLexerJasminLexer	SarlLexerc               @   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eeeeejdfd	efd
eejefdejfdefdeeeejeefdejfdejfdejfdeejedfdejfdejdfdeejedfdeejedfdedfdedfdejfdeeejfdeeeefdeeej efd efd!e!j"fd"e!j#fd#e!j$fd$e!j%fd%e!j&fd&e'fd'efd(efgd)e(fd ej)d*fgd ed*fgd+ejd*fgd,ed*fdefe*dgd-efd.efd/efd0efded*fgd1Z+d2S )3r   z
    For Java source code.
    Javaz(https://www.oracle.com/technetwork/java/javaz*.javaztext/x-javazJ(^\s*)((?:(?:public|private|protected|static|strictfp)(?:\s+))*)(record)\bclassz[^\S\n]+z(//.*?)(\n)z	/\*.*?\*/zz(assert|break|case|catch|continue|default|do|else|finally|for|if|goto|instanceof|new|return|switch|this|throw|try|while)\bzE((?:(?:[^\W\d]|\$)[\w.\[\]$<>]*\s+)+?)((?:[^\W\d]|\$)[\w$]*)(\s*)(\()z@[^\W\d][\w.]*z(abstract|const|enum|extends|final|implements|native|private|protected|public|sealed|static|strictfp|super|synchronized|throws|transient|volatile|yield)\bz6(boolean|byte|char|double|float|int|long|short|void)\bz(package)(\s+)importz(true|false|null)\bz(class|interface)\bz
(var)(\s+)varz(import(?:\s+static)?)(\s+)z"""\nmultiline_string"stringz!'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'z(\.)((?:[^\W\d]|\$)[\w$]*)z^(\s*)(default)(:)z^(\s*)((?:[^\W\d]|\$)[\w$]*)(:)z([^\W\d]|\$)[\w$]*a  ([0-9][0-9_]*\.([0-9][0-9_]*)?|\.[0-9][0-9_]*)([eE][+\-]?[0-9][0-9_]*)?[fFdD]?|[0-9][eE][+\-]?[0-9][0-9_]*[fFdD]?|[0-9]([eE][+\-]?[0-9][0-9_]*)?[fFdD]|0[xX]([0-9a-fA-F][0-9a-fA-F_]*\.?|([0-9a-fA-F][0-9a-fA-F_]*)?\.[0-9a-fA-F][0-9a-fA-F_]*)[pP][+\-]?[0-9][0-9_]*[fFdD]?z"0[xX][0-9a-fA-F][0-9a-fA-F_]*[lL]?z0[bB][01][01_]*[lL]?z0[0-7_]+[lL]?z0|[1-9][0-9_]*[lL]?z[~^*!%&\[\]<>|+=/?-]z
[{}();:.,]z\nz\s+z#popz	[\w.]+\*?z"""z[^\\"]+z\\\\z\\"z\\)rootr(   r*   r)   r+   r-   N),__name__
__module____qualname____doc__nameurlaliases	filenames	mimetypesre	MULTILINEDOTALLflagsr   r   r   r   r   Declarationr   Single	Multiliner   Functionr   	DecoratorType	NamespaceConstantr   Char	AttributeLabelr   FloatHexBinOctIntegerr   r   Classr   tokens rN   rN   `/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/pygments/lexers/jvm.pyr      sr   


c            +   @   s   e Zd ZdZdZdZdgZ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-d.d/d0d1h+Z	d2d3d4d5d6hZ
d7d8d9d:hZd;d< Zd=S )>r    z=
    For AspectJ source code.

    .. versionadded:: 1.6
    AspectJzhttp://www.eclipse.org/aspectj/aspectjz*.ajztext/x-aspectjZaspectZpointcutZ
privilegedcallZ	executionZinitializationZpreinitializationhandlergetsetZstaticinitializationtargetargsZwithinZ
withincodeZcflowZ
cflowbelow
annotationbeforeafterZaroundproceedZthrowingZ	returningZadviceexecutiondeclareparentswarningerrorZsoft
precedenceZthisJoinPointZthisJoinPointStaticPartZ thisEnclosingJoinPointStaticPartZissingletonZperthisZ	pertargetZpercflowZpercflowbelowZpertypewithinlockunlockZthisAspectInstancezparents:zwarning:zerror:zsoft:zprecedence:z@typez@methodz@constructorz@fieldc             c   s   xt | |D ]\}}}|tkr8|| jkr8|t|fV  q|tjkrr|| jkrr|t|d d fV  |t|d fV  q|tjkr|| j	kr|t|fV  q|||fV  qW d S )N)
r   get_tokens_unprocessedr   aj_keywordsr   rF   aj_inter_typer   r@   aj_inter_type_annotation)selftextindextokenvaluerN   rN   rO   rd      s    z#AspectJLexer.get_tokens_unprocessedN)r/   r0   r1   r2   r3   r4   r5   r6   r7   re   rf   rg   rd   rN   rN   rN   rO   r    v   s$   




c            (   @   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edd	 d
 Zdeddddd d
 Zdedd d
 Zde Zdedd Zde Zdeef Zdeeef Zdeeef Zdeef ZdZdeef ZdZdZdZdZdZ e!d e!d!e!d"e!d#e!d$e!d%e!d&e!d'e!d(e!d)e!d*e!d+e!d,e!d-e!d.e!d/e!d0e!d1e!d2e!d3e!d4e!d5gd6e"fgd7e#j$fd8e#j%d9fgd:e#j&fgd;e'e(e"d<fgd=e'e(e"e(e"d>fd?e'e(e"d>fge)e d@d@dAe(fdBe(fgdCe e*j+fgdDe'e,e"e(e"fgdEeef e'e(e"e*j-fdFeef e'e(e"e*j.fdGeef e'e(e"e(e"e*j.fdHeef e'e(e"e*j.fdIe(j/fdJeef e'e(e"e(e"e*j0fdKe'e(e"dLfdMe e'e(e"e*j.fdNe e'e(e"e*fg	dOeeef e'e(e"e*j.fgdPe'e(e"fgdQe'e(e"e(fdReef e'e(e"e*j.fdSeeef e'e(e"e*j0fgdTe,fdUe,fge)ed@d@dAe(fgdVe e'e1e"fdWe1fe)ee1fdXeef e1fgdYe*j2j3fdZe(j4fd[e5j6fd\e5j7fd]e5j7fd^e5j7fd_e5j8j9fd`e5j8fdae:fdbe:fdce'e:j;e:j<e:j;fdde:j;fgdee:dffdge:dhfdie:fgdje e:j=fgdke'e,e(fgdleef e(fdme(fgdne,fdoe,fgee*j.fee*fgdpe#j%fd8e#j%dqfdre#j%dsfdte#j%fgdue>dsfe!d!dve(fe!dwdxe,dyfge!d e!d!dve(fdze1fd{e,dsfd|e,fd}e,fe!dwgdue>dsfe!d!e!dwdxe,d~fge!d e!d!dze1fd{e,dsfd|e,fe!dwgde>dsfde,dsfe!d!e!dwgde:dsfde:fe!dgde:dsfe!dgd{e:j?dsfdxe,dfe!dgdxe,dqfd{e,dsfe!dgee*j.fde e'e*j0e,fde,fee*fde"fgde:fde:j<fde e'e:j?e*fde:j?dfde:fgd#Z@dS )r   z 
    For Scala source code.
    Scalazhttp://www.scala-lang.orgscalaz*.scalaztext/x-scalaz[!#%&*\-\/:?@^ZSmZSo]z[_\$LlLuZLoNlLt[z(?:%s|[0-9])z\$ z%s+z%s%s*z%s%s*(?:(?<=_)%s+)?z
(?:%s|%s+)z`[^`]+`z	(?:%s|%s)z
(?!//|/\*)z(?=\s*(//|$)))newreturnthrowZclassOfZisInstanceOfZasInstanceOfelseifZthendowhileforyieldmatchcaseZcatchfinallytry)z<%z=:=z<:<z<%<z>:z<:=z==z!=z<=z>=z<><>z<-u   ←z->u   →z=>u   ⇒?@|-+*%~\)privateZ	protectedZsynchronizedz	@volatileZabstractfinalZlazyZsealedZimplicitoverridez
@transientz@native
whitespacecommentszscript-headerimportsexportszstorage-modifiersannotationsr   declarationsinheritance	extensionend	constantsstringssymbolszsingleton-typeinlinequotedkeywords	operatorspunctuationnamesz\s+z//.*?\nz/\*commentz^#!([^\n]*)$z\b(import)(\s+)zimport-pathz\b(export)(\s+)(given)(\s+)zexport-pathz\b(export)(\s+)z\b)prefixsuffixzj\b(transparent|opaque|infix|open|inline)\b(?=[a-z\s]*\b(def|val|var|given|type|class|trait|object|enum)\b)z@%sz(\()(\s*)(using)(\s)z\b(def)\b(\s*)%s(%s)?z\b(trait)\b(\s*)%s(%s)?z3\b(?:(case)(\s+))?(class|object|enum)\b(\s*)%s(%s)?z(?<!\.)\b(type)\b(\s*)%s(%s)?z\b(val|var)\bz&\b(package)(\s+)(object)\b(\s*)%s(%s)?z\b(package)(\s+)packagez\b(given)\b(\s*)(%s)z\b(given)\b(\s*)(%s)?zC\b(extends|with|derives)\b(\s*)(%s|%s|(?=\([^\)]+=>)|(?=%s)|(?="))?z\b(extension)(\s+)(?=[\[\(])z8\b(end)(\s+)(if|while|for|match|new|extension|val|var)\bz\b(end)(\s+)(%s)%sz\b(end)(\s+)(%s|%s)?%sz[{}()\[\];,.]z(?<!:):(?!:)z(%s{2,})(\s+)z	/(?![/*])z(?<!%s)(!|&&|\|\|)(?!%s)z\b(this|super)\bz(true|false|null)\bz0[xX][0-9a-fA-F_]*zJ([0-9][0-9_]*\.[0-9][0-9_]*|\.[0-9][0-9_]*)([eE][+-]?[0-9][0-9_]*)?[fFdD]?z[0-9]+([eE][+-]?[0-9]+)?[fFdD]z[0-9]+([eE][+-]?[0-9]+)[fFdD]?z
[0-9]+[lL]z[0-9]+z""".*?"""(?!")z"(\\\\|\\"|[^"])*"z(')(\\.)(')z'[^\\]'|'\\u[0-9a-fA-F]{4}'z[fs]"""zinterpolated-string-triplez[fs]"zinterpolated-stringzraw"(\\\\|\\"|[^"])*"z
('%s)(?!')z(\.)(type)\bz\b(inline)(?=\s+(%s|%s)\s*:)z=\b(inline)\b(?=(?:.(?!\b(?:val|def|given)\b))*\b(if|match)\b)z['$]\{(?!')z'\[(?!')z[^/*]+z#pushz\*/z#popz[*/]z(?<=[\n;:])z\b(given)\bzqualified-namez\{zimport-path-curly-bracez=>z\},z[\[\]]zexport-path-curly-bracez
(?<=[\n;]):z"""(?!")r,   zinterpolated-string-commonz interpolated-string-nested-bracer.   z(%s)(\.)z\.z[^\S\n]+z[^"$\\]+z\$\$z(\$)(%s)z\$\{zinterpolated-string-bracez\\.)#r.   r   r   zscript-headerr   r   zstorage-modifiersr   r   r   r   r   r   r   r   r   r   r   r   zsingleton-typer   r   r   r   zimport-pathzimport-path-curly-bracezexport-pathzexport-path-curly-bracer   zinterpolated-string-triplezinterpolated-stringzinterpolated-string-bracez interpolated-string-nested-bracezqualified-namezinterpolated-string-commonN)Ar/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   unicombineZopcharletterZupperLetterZletterOrDigitreplaceZletterOrDigitNoDollarSignZalphaIdZsimpleInterpolatedVariableZidrestZidUpperZplainidZbackQuotedIdZanyIdZnotStartOfCommentZendOfLineMaybeWithCommentr   r   Zstorage_modifiersr   r   r   r=   r>   Hashbangr   r   r
   r   r@   r   r?   rL   r<   rB   r   BuiltinPseudorC   r   rH   rG   rK   Longr   rD   EscapeSymbolr   InterpolrM   rN   rN   rN   rO   r      s\  


















c               @   s  e Zd ZdZdZdgZddddgZdgZej	ej
B Zd	eeeejeefd
efdejfdejfdejfdefdejfdeejeejfdejfdeejefdejfdeejeejfdeejeejfdedfdeeejfdeeejfdefdefdej fdej!fdefgdefd eeejd!fd"ejfd#ed!fd$ed%fd&efgded'fe"d(gdedfd)ed'fe"d*gdedfd+ed%fd,ed'fe"d*gd-Z#d.S )/r   z:
    For Gosu source code.

    .. versionadded:: 1.5
    Gosugosuz*.gsz*.gsxz*.gspz*.varkztext/x-gosuz9^(\s*(?:[a-zA-Z_][\w.\[\]]*\s+)+?)([a-zA-Z_]\w*)(\s*)(\()z[^\S\n]+z//.*?\nz	/\*.*?\*/z@[a-zA-Z_][\w.]*z(in|as|typeof|statictypeof|typeis|typeas|if|else|foreach|for|index|while|do|continue|break|return|try|catch|finally|this|throw|new|switch|case|default|eval|super|outer|classpath|using)\bz(var|delegate|construct|function|private|internal|protected|public|abstract|override|final|static|extends|transient|implements|represents|readonly)\bz(property)(\s+)(get|set)?z<(boolean|byte|char|double|float|int|long|short|void|block)\bz(package)(\s+)z (true|false|null|NaN|Infinity)\bz5(class|interface|enhancement|enum)(\s+)([a-zA-Z_]\w*)z(uses)(\s+)([\w.]+\*?)r,   r-   z(\??[.#])([a-zA-Z_]\w*)z(:)([a-zA-Z_]\w*)z[a-zA-Z_$]\w*z)and|or|not|[\\~^*!%&\[\](){}<>|+=:;,./?-]z%[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?z[0-9]+z\nz(\\<)|(\\\$)z(<%@\s+)(extends|params)stringTemplatez<%!--.*?--%>z
(<%)|(<%=)z\$\{stringTemplateShorthand.z#poptemplateTextz%>r.   z\{z\})r.   r   r-   r   r   N)$r/   r0   r1   r2   r3   r5   r6   r7   r8   r9   r:   r;   r   r   r   r   r?   r   r   r   r=   r>   r@   r   r<   rA   rB   rC   rL   r   rE   r   rG   rK   r   rM   rN   rN   rN   rO   r     sf   c               @   s.   e Zd ZdZdZdgZdgZdgZdd ZdS )	r   z8
    For Gosu templates.

    .. versionadded:: 1.5
    zGosu Templategstz*.gstztext/x-gosu-templatec             c   s"   t  }dg}|||E d H  d S )Nr   )r   rd   )rh   ri   lexerstackrN   rN   rO   rd     s    z(GosuTemplateLexer.get_tokens_unprocessedN)	r/   r0   r1   r2   r3   r5   r6   r7   rd   rN   rN   rN   rO   r     s   c               @   sl  e Zd ZdZdZdZdgZddgZdgZe	j
e	jB Zdejd	fed	gd
efdeejefdejfdefdeeeejeefdejfdejfdejfdeejefdejfdeejedfdeejedfdej fdejfdej fdejfdefdefdej!fdeeej"fd ej#fd!efd"efd#e$j%fd$e$j&fd%e$j'fd&efgd'ej(d(fgd)ejd(fgd*Z)d+d, Z*d-S ).r   z<
    For Groovy source code.

    .. versionadded:: 1.5
    Groovyzhttps://groovy-lang.org/groovyz*.groovyz*.gradleztext/x-groovyz#!(.*?)$basez[^\S\n]+z(//.*?)(\n)z	/\*.*?\*/z(assert|break|case|catch|continue|default|do|else|finally|for|if|goto|instanceof|new|return|switch|this|throw|try|while|in|as)\bzo^(\s*(?:[a-zA-Z_][\w.\[\]]*\s+)+?)([a-zA-Z_]\w*|"(?:\\\\|\\[^\\]|[^"\\])*"|'(?:\\\\|\\[^\\]|[^'\\])*')(\s*)(\()z@[a-zA-Z_][\w.]*z(abstract|const|enum|extends|final|implements|native|private|protected|public|static|strictfp|super|synchronized|throws|transient|volatile)\bz:(def|boolean|byte|char|double|float|int|long|short|void)\bz(package)(\s+)z(true|false|null)\bz(class|interface)(\s+)r(   z(import)(\s+)r)   z	""".*?"""z	'''.*?'''z"(\\\\|\\[^\\]|[^"\\])*"z'(\\\\|\\[^\\]|[^'\\])*'z\$/((?!/\$).)*/\$z/(\\\\|\\[^\\]|[^/\\])*/z!'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'z(\.)([a-zA-Z_]\w*)z[a-zA-Z_]\w*:z[a-zA-Z_$]\w*z[~^*!%&\[\](){}<>|+=:;,./?-]z%[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?z0x[0-9a-fA-F]+z[0-9]+L?z\nz[a-zA-Z_]\w*z#popz	[\w.]+\*?)r.   r   r(   r)   c             C   s
   t | dS )Nr   )r   )ri   rN   rN   rO   analyse_texti  s    zGroovyLexer.analyse_textN)+r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r   Preprocr	   r   r   r=   r>   r   r   r   r   r?   r   r@   r<   rA   rB   rC   r   DoublerD   rE   rF   r   rG   rH   rK   rL   rM   r   rN   rN   rN   rO   r     sX   
c            /   @   s   e Zd ZdZdZdZdgZddgZdgZde	j
fd	ed
fgde	dfedde	fgde	jdfedde	jfgdedfedgde	jdfedde	jfde	jfgde	jdfedde	jfde	jfgde	dfedde	fgdefdefdefdefde	jdfde	jdfd e	jfd!e	jfd"e	jfd#e	jd$fd%e	d&fd'e	d(fd)ejfd*ejfd+ejfd,efd-efd.efd/ejfd0ejfd1efd2ejfd3efd4ejfd5efd6ejfd7ejfd8ejfd9ejfd:ejfd;ejfd<ejfd=ejfd>efd?efd@efdAefdBej fdCefg'dDZ!dES )Fr   z{
    For Ioke (a strongly typed, dynamic,
    prototype based programming language) source.

    .. versionadded:: 1.4
    Iokezhttps://ioke.org/z*.ikiokeikztext/x-iokesrczS(\\b|\\e|\\t|\\n|\\f|\\r|\\"|\\\\|\\#|\\\Z|\\u[0-9a-fA-F]{1,4}|\\[0-3]?[0-7]?[0-7])z#\{textInterpolationRootz(?<!\\)"z#popinterpolatableTextz[^"]z\}r.   z(?<!\\)/[im-psux]*z\\/z[^/]z(?<!\\)][im-psux]*z\\]z[^\]]z(?<!\\)]z\nz\s+z;(.*?)\nz\A#!(.*?)\nz#/slashRegexpz#r\[squareRegexpz	:[\w!:?]+z[\w!:?]+:(?![\w!?])z:"(\\\\|\\[^\\]|[^"\\])*"z((?<=fn\()|(?<=fnx\()|(?<=method\()|(?<=macro\()|(?<=lecro\()|(?<=syntax\()|(?<=dmacro\()|(?<=dlecro\()|(?<=dlecrox\()|(?<=dsyntax\())(\s*)"documentationr,   ri   z#\[
squareTextz\w[\w!:?]+(?=\s*=.*mimic\s)z.[a-zA-Z_][\w!:?]*(?=[\s]*[+*/-]?=[^=].*($|\.))z(break|cond|continue|do|ensure|for|for:dict|for:set|if|let|loop|p:for|p:for:dict|p:for:set|return|unless|until|while|with)(?![\w!:?])z%(eval|mimic|print|println)(?![\w!:?])z|(cell\?|cellNames|cellOwner\?|cellOwner|cells|cell|documentation|hash|identity|mimic|removeCell\!|undefineCell\!)(?![\w!:?])z(stackTraceAsText)(?![\w!:?])z"(dict|list|message|set)(?![\w!:?])z`(case|case:and|case:else|case:nand|case:nor|case:not|case:or|case:otherwise|case:xor)(?![\w!:?])z(asText|become\!|derive|freeze\!|frozen\?|in\?|is\?|kind\?|mimic\!|mimics|mimics\?|prependMimic\!|removeAllMimics\!|removeMimic\!|same\?|send|thaw\!|uniqueHexId)(?![\w!:?])z (after|around|before)(?![\w!:?])zG(kind|cellDescriptionDict|cellSummary|genSym|inspect|notice)(?![\w!:?])z(use|destructuring)zn(cell\?|cellOwner\?|cellOwner|cellNames|cells|cell|documentation|identity|removeCell!|undefineCell)(?![\w!:?])z(internal:compositeRegexp|internal:concatenateText|internal:createDecimal|internal:createNumber|internal:createRegexp|internal:createText)(?![\w!:?])zk(availableRestarts|bind|error\!|findRestart|handle|invokeRestart|rescue|restart|signal\!|warn\!)(?![\w!:?])z(nil|false|true)(?![\w!:?])a
  (Arity|Base|Call|Condition|DateTime|Aspects|Pointcut|Assignment|BaseBehavior|Boolean|Case|AndCombiner|Else|NAndCombiner|NOrCombiner|NotCombiner|OrCombiner|XOrCombiner|Conditions|Definitions|FlowControl|Internal|Literals|Reflection|DefaultMacro|DefaultMethod|DefaultSyntax|Dict|FileSystem|Ground|Handler|Hook|IO|IokeGround|Struct|LexicalBlock|LexicalMacro|List|Message|Method|Mixins|NativeMethod|Number|Origin|Pair|Range|Reflector|Regexp Match|Regexp|Rescue|Restart|Runtime|Sequence|Set|Symbol|System|Text|Tuple)(?![\w!:?])uw   (generateMatchMethod|aliasMethod|λ|ʎ|fnx|fn|method|dmacro|dlecro|syntax|macro|dlecrox|lecrox|lecro|syntax)(?![\w!:?])z-?0[xX][0-9a-fA-F]+z(-?(\d+\.?\d*|\d*\.\d+)([eE][+-]?[0-9]+)?z-?\d+z#\(a  (&&>>|\|\|>>|\*\*>>|:::|::|\.\.\.|===|\*\*>|\*\*=|&&>|&&=|\|\|>|\|\|=|\->>|\+>>|!>>|<>>>|<>>|&>>|%>>|#>>|@>>|/>>|\*>>|\?>>|\|>>|\^>>|~>>|\$>>|=>>|<<=|>>=|<=>|<\->|=~|!~|=>|\+\+|\-\-|<=|>=|==|!=|&&|\.\.|\+=|\-=|\*=|\/=|%=|&=|\^=|\|=|<\-|\+>|!>|<>|&>|%>|#>|\@>|\/>|\*>|\?>|\|>|\^>|~>|\$>|<\->|\->|<<|>>|\*\*|\?\||\?&|\|\||>|<|\*|\/|%|\+|\-|&|\^|\||=|\$|!|~|\?|#|\u2260|\u2218|\u2208|\u2209)z-(and|nand|or|xor|nor|return|import)(?![\w!?])z.(\`\`|\`|\'\'|\'|\.|\,|@@|@|\[|\]|\(|\)|\{|\})z[A-Z][\w!:?]*z[a-z_][\w!:?]*)r   ri   r   r   r   r   r   r.   N)"r/   r0   r1   r2   r3   r4   r6   r5   r7   r   r   r   r   DocRegexr   r   r   Otherr   EntityVariabler   ReservedrC   r   r?   r   rH   rG   rK   r   rL   rM   rN   rN   rN   rO   r   m  s   








	c               @   s   e Zd ZdZdZdZddgZddgZdd	gZd
Z	dZ
dZdZddejfdefdefdejfdefdejfdejfdefde ejfdejfde ejfdefee	ddefee
ddejfeeddejfde ejfeejfde fde fd e fgiZ!d!S )"r   zD
    Lexer for Clojure source code.

    .. versionadded:: 0.11
    Clojurezhttp://clojure.org/clojurecljz*.cljz*.cljcztext/x-clojurezapplication/x-clojure)
r   defr{   fnrz   Zletrv   quoter*   loop)zdef-Zdefnzdefn-ZdefmacroZdefmultiZ	defmethodZ	defstructZdefoncer\   Z	definlineZdefinterfaceZdefprotocolZ	defrecorddeftypeZ
defprojectns(-  r   r   r   z->/r   z<=r   z==r   z>=z..accessorZagentzagent-errorsZagetZalengthzall-nsZalterandzappend-childapplyz	array-mapZasetzaset-booleanz	aset-bytez	aset-charzaset-doublez
aset-floatzaset-intz	aset-longz
aset-shortassertZassocawaitz	await-forZbeanZbindingzbit-andzbit-notzbit-orzbit-shift-leftzbit-shift-rightzbit-xorbooleanzbranch?Zbutlastbytecastcharchildrenr(   zclear-agent-errorsr   ZcommutecompZ
comparatorZ
complementconcatZconjZconsZ
constantlyZcondzif-notzconstruct-proxyz	contains?countz	create-nszcreate-structcycledecZderef
differenceZdisjZdissocZdistinctZdoalldocZdorundoseqZdosyncZdotimesZdotodoubleZdownZdropz
drop-whileZeditzend?Zensureevalzevery?zfalse?Zffirstzfile-seqfilterfindzfind-doczfind-nszfind-varfirstfloatflushr}   ZfnseqZfrestZgensymzget-proxy-classrT   zhash-mapzhash-setz
identical?identityzif-letr)   zin-nsincrj   zinsert-childzinsert-leftzinsert-rightzinspect-tablezinspect-treez	instance?intZ
interleaveintersectionZintoz
into-arrayZiteratejoinkeykeyskeywordzkeyword?lastzlazy-catz	lazy-consleftZleftszline-seqzlist*listloadz	load-fileZlockinglongr   Zmacroexpandzmacroexpand-1z
make-arrayz	make-nodemapz
map-invertzmap?Zmapcatmaxzmax-keyZmemfnmergez
merge-withmetaminzmin-keyr3   	namespacezneg?rv   newlinenextznil?nodenotznot-any?z
not-every?znot=z
ns-importsz
ns-internszns-mapzns-namez
ns-publicsz	ns-refersz
ns-resolvezns-unmapZnthZnthrestorparsepartialpathpeekpopzpos?przpr-strprintz	print-strZprintlnzprintln-strZprnzprn-strprojectproxyzproxy-mappingsquotZrandzrand-intrangezre-findz	re-groupsz
re-matcherz
re-matchesz
re-patternzre-seqreadz	read-linereducerefzref-setZreferremremovezremove-methodz	remove-nsrenamezrename-keysrepeatr   Z	replicateresolverestzresultset-seqreverseZrfirstrightZrightsr.   ZrrestZrseqsecondselectzselect-keyssendzsend-offseqzseq-zipzseq?rU   shortZslurpZsomesortzsort-byz
sorted-mapzsorted-map-byz
sorted-setzspecial-symbol?zsplit-atz
split-withstrzstring?structz
struct-mapsubsZsubvecsymbolzsymbol?syncZtakeztake-nthz
take-whiletesttimezto-arrayzto-array-2dztree-seqztrue?unionupzupdate-proxyvalvalszvar-getzvar-setzvar?Zvectorz
vector-zipzvector?whenz
when-firstzwhen-letzwhen-notzwith-local-varsz	with-metaz	with-openzwith-out-strzxml-seqzxml-zipzzero?ZzipmapZzipperz(?!#)[\w!$%*+<=>?/.#|-]+r.   z;.*$z,+z\s+z
-?\d+\.\d+z	-?\d+/\d+z-?\d+z0x-?[abcdef\d]+z"(\\\\|\\[^\\]|[^"\\])*"'z\\(.|[a-z]+)z::?#?z~@|[`\'#^~&@] )r   z(?<=\()z(\[|\])z(\{|\})z(\(|\))N)"r/   r0   r1   r2   r3   r4   r5   r6   r7   Zspecial_formsr   builtinsZ
valid_namer   r=   r   r   r   rG   rK   rH   r   r   rD   r   r
   r   r<   r   r   r?   r   r   rM   rN   rN   rN   rO   r   -  s>   8c               @   s.   e Zd ZdZdZdZddgZdgZddgZd	S )
r   zI
    Lexer for ClojureScript source code.

    .. versionadded:: 2.0
    ClojureScriptz http://clojure.org/clojurescriptclojurescriptcljsz*.cljsztext/x-clojurescriptzapplication/x-clojurescriptN)	r/   r0   r1   r2   r3   r4   r5   r6   r7   rN   rN   rN   rO   r     s   c               @   s   e Zd ZdZejejB Zdee	e
ejeefdefdeejefdejfdejfdefdejfd	ejfd
eejedfdeejedfdejfdejfdeeejfdejfdefdefdejfdejfdejfdefgdejdfgdejdfgdZ dS )TeaLangLexerzb
    For Tea source code. Only used within a
    TeaTemplateLexer.

    .. versionadded:: 1.5
    z:^(\s*(?:[a-zA-Z_][\w\.\[\]]*\s+)+?)([a-zA-Z_]\w*)(\s*)(\()z[^\S\n]+z(//.*?)(\n)z	/\*.*?\*/z@[a-zA-Z_][\w\.]*z/(and|break|else|foreach|if|in|not|or|reverse)\bz(as|call|define)\bz(true|false|null)\bz(template)(\s+)templatez(import)(\s+)r)   z"(\\\\|\\[^\\]|[^"\\])*"z'(\\\\|\\[^\\]|[^'\\])*'z(\.)([a-zA-Z_]\w*)z[a-zA-Z_]\w*:z[a-zA-Z_\$]\w*z3(isa|[.]{3}|[.]{2}|[=#!<>+-/%&;,.\*\\\(\)\[\]\{\}])z%[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?z0x[0-9a-fA-F]+z[0-9]+L?z\nz[a-zA-Z_]\w*z#popz	[\w.]+\*?)r.   r=  r)   N)!r/   r0   r1   r2   r8   r9   r:   r;   r   r   r   r   r?   r   r   r   r=   r>   r@   r   r<   rC   rB   r   r   rE   rF   r   rG   rH   rK   rL   rM   rN   rN   rN   rO   r<    s4   r<  c               @   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Zdeeeejeefd	efd
eejefdejdfdejfdefdejfdejfdeejefdejfdeejedfdeejedfdefdejfdeeej fdej!fdefd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d#e"j%fd$e"j%fd%e"j&fd&e"j&fd'efgd(ej'd)fgd*ejd)fgd+ejfdejd,fd-ejd)fd.ejfgd/Z(d0S )1r!   z<
    For Ceylon source code.

    .. versionadded:: 1.6
    Ceylonzhttp://ceylon-lang.org/ceylonz*.ceylonztext/x-ceylonz(?:\s|//.*?\n|/[*].*?[*]/)+z9^(\s*(?:[a-zA-Z_][\w.\[\]]*\s+)+?)([a-zA-Z_]\w*)(\s*)(\()z[^\S\n]+z(//.*?)(\n)z/\*r   z(shared|abstract|formal|default|actual|variable|deprecated|small|late|literal|doc|by|see|throws|optional|license|tagged|final|native|annotation|sealed)\bz(break|case|catch|continue|else|finally|for|in|if|return|switch|this|throw|try|while|is|exists|dynamic|nonempty|then|outer|assert|let)\bz9(abstracts|extends|satisfies|super|given|of|out|assign)\bz(function|value|void|new)\bz(assembly|module|package)(\s+)z(true|false|null)\bz#(class|interface|object|alias)(\s+)r(   z(import)(\s+)r)   z"(\\\\|\\[^\\]|[^"\\])*"z%'\\.'|'[^\\]'|'\\\{#[0-9a-fA-F]{4}\}'z(\.)([a-z_]\w*)z[a-zA-Z_]\w*:z[a-zA-Z_]\w*z[~^*!%&\[\](){}<>|+=:;,./?-]z/\d{1,3}(_\d{3})+\.\d{1,3}(_\d{3})+[kMGTPmunpf]?z7\d{1,3}(_\d{3})+\.[0-9]+([eE][+-]?[0-9]+)?[kMGTPmunpf]?z*[0-9][0-9]*\.\d{1,3}(_\d{3})+[kMGTPmunpf]?z2[0-9][0-9]*\.[0-9]+([eE][+-]?[0-9]+)?[kMGTPmunpf]?z##([0-9a-fA-F]{4})(_[0-9a-fA-F]{4})+z#[0-9a-fA-F]+z\$([01]{4})(_[01]{4})+z\$[01]+z\d{1,3}(_\d{3})+[kMGTP]?z[0-9]+[kMGTP]?z\nz[A-Za-z_]\w*z#popz[a-z][\w.]*z[^*/]z#pushz\*/z[*/])r.   r(   r)   r   N))r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   _wsr   r   r   r   r?   r   r   r   r=   r>   r@   r   r<   rA   rB   rC   r   rD   rE   rF   r   rG   rH   rI   rK   rL   rM   rN   rN   rN   rO   r!     sj   



c                @   s  e Zd ZdZdZdZdgZddgZdgZe	j
e	jB Zded	d
ddd d d ed	d
dddddddd
 d Zded	d
ddd d d ed	d
ddddddddd d Zde d e d ZdZdefdefdejfdefd eejefd!eejefd"ejfd#efd$efd%ejfed&ejfed'd(d)ejfd*ejfd+eeeej fd,ee!ej"fd-ee#ej"fd.ej$fd/ej$fd0eeee#ed1fd2e d3 ee%e&d4d5ej'ed1fd6eej'ee#d7fd2e d8 ee%e&d4d5ej'ed9fd2e d: ee%e&d4d5ej'ed;fd<e!fd=e!fd>e#fd?ed@fdAedBfdCej(fdDe)fdEe dF efgeej*dGfgeej+dGfgdHe#fdefeej+fdIe dJ ee#eefdKe!dLfdMe#dGfgdKe!dLfdEe dN e eee#ej,dGfeej,dGfgdOee!edGfdPe#fdQefdHe#fdefeefgdRej'fdefe-dGgdAedGfe.dSgd?edGfdAefe.dSgdTefdUefdVefdWej/dXfdYeej/efdZefgdAefdWej/dXfd[e#d\fd]ej/dGfe.d^gd[e#d\fd]e#dGfe.d^gd_Z0d`S )ar   z<
    For Kotlin source code.

    .. versionadded:: 1.5
    Kotlinzhttp://kotlinlang.org/kotlinz*.ktz*.ktsztext/x-kotlinz@?[_rq   rp   rs   ZLmrr   ro   rt   ZNdZPcZCfZMnZMcz]*Zsz\'~!%^&*()+=|\[\]:;,.<>/\?-]*(z|`z`)zactual|abstract|annotation|companion|const|crossinline|data|enum|expect|external|final|infix|inline|inner|internal|lateinit|noinline|open|operator|override|private|protected|public|sealed|suspend|tailrec|valuez[^\S\n]+z\s+z\\$z\nz(//.*?)(\n)z^(#!/.+?)(\n)z/[*].*?[*]/zas\?z(as|break|by|catch|constructor|continue|do|dynamic|else|finally|get|for|if|init|[!]*in|[!]*is|out|reified|return|set|super|this|throw|try|typealias|typeof|vararg|when|where|while)\bzit\b)zBoolean?zByte?zChar?zDouble?zFloat?zInt?zLong?zShort?zString?zAny?zUnit?)BooleanZByterD   r   rG   ZIntr   ZShortr   AnyZUnitz\b)r   z(true|false|null)\bz(package|import)(\s+)(\S+)z(\?\.)((?:[^\W\d]|\$)[\w$]*)z(\.)((?:[^\W\d]|\$)[\w$]*)z@[^\W\d][\w.]*z[^\W\d][\w.]+@z(object)(\s+)(:)(\s+)r(   z((?:(?:z(|fun)\s+)*)(class|interface|object)(\s+)	modifiers)statez(var|val)(\s+)(\()destructuring_assignmentz)\s+)*)(var|val)(\s+)variablez)\s+)*)(fun)(\s+)functionz::|!!|\?[:.]z[~^*!%&\[\]<>|+=/?-]z
[{}();:.,]z"""r+   r,   r-   z'\\.'|'[^\\]'z?[0-9](\.[0-9]*)?([eE][+-][0-9]+)?[flFL]?|0[xX][0-9a-fA-F]+[Ll]?ru   z((\?[^.])?)z#popr   z	(:)(\s+)()r   genericz\)z(\.)z(>)(\s*)r   z(reified|out|in)\bz\w+string_commonz\\\\z\\"z\\z\$\{interpolationz	(\$)(\w+)z[^\\"$]+z\{scopez\}r.   )r.   r(   rJ  rI  rK  rM  rG  r-   r+   rN  rO  rP  N)1r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r   r   Zkt_nameZkt_space_nameZkt_idrG  r   r   r   r   r   r=   r>   r   r   r   r
   rA   rC   rB   r   rE   r   r@   r   r   r<   rD   r   rL   r   r?   r	   r   r   rM   rN   rN   rN   rO   r   F  s   >@






c               @   sF  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eeeejeefdefd	eejefd
ejfdejfdefdejfdejfdeejefdejfdeejedfdeejedfdedfdedfdejfdejfdejfdefdefde j!fde j"fde j#fd efgd!ej$d"fgd#ejd"fgd$ed"fd%ed"fd&efgd'Z%d(S ))r   z;
    For Xtend source code.

    .. versionadded:: 1.6
    Xtendzhttps://www.eclipse.org/xtend/xtendz*.xtendztext/x-xtendz=^(\s*(?:[a-zA-Z_][\w.\[\]]*\s+)+?)([a-zA-Z_$][\w$]*)(\s*)(\()z[^\S\n]+z(//.*?)(\n)z	/\*.*?\*/z@[a-zA-Z_][\w.]*z(assert|break|case|catch|continue|default|do|else|finally|for|if|goto|instanceof|new|return|switch|this|throw|try|while|IF|ELSE|ELSEIF|ENDIF|FOR|ENDFOR|SEPARATOR|BEFORE|AFTER)\bz(def|abstract|const|enum|extends|final|implements|native|private|protected|public|static|strictfp|super|synchronized|throws|transient|volatile)\bz6(boolean|byte|char|double|float|int|long|short|void)\bz(package)(\s+)z(true|false|null)\bz(class|interface)(\s+)r(   z(import)(\s+)r)   z(''')r=  z(\u00BB)z"(\\\\|\\[^\\]|[^"\\])*"z'(\\\\|\\[^\\]|[^'\\])*'z[a-zA-Z_]\w*:z[a-zA-Z_$]\w*z[~^*!%&\[\](){}<>\|+=:;,./?-]z%[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?z0x[0-9a-fA-F]+z[0-9]+L?z\nz[a-zA-Z_]\w*z#popz	[\w.]+\*?z'''z\u00ABr   )r.   r(   r)   r=  N)&r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r   r   r   r   r?   r   r   r   r=   r>   r@   r   r<   rA   rB   rC   r   r   rF   r   rG   rH   rK   rL   rM   rN   rN   rN   rO   r     sP   c               @   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efdefd	ejfd
ejfdefdefedededededdejfdejfdejfdefdeejeefdefdefdefgdefgdejfgdejfgdefgdefdefd efgd!Z d"S )#r"   z?
    For Pig Latin source code.

    .. versionadded:: 2.0
    Pigzhttps://pig.apache.org/pigz*.pigz
text/x-pigz\s+z--.*z/\*[\w\W]*?\*/z\\$z\\z1\'(?:\\[ntbrf\\\']|\\u[0-9a-f]{4}|[^\'\\\n\r])*\'r   typesr8  punctr   z[0-9]*\.[0-9]+(e[0-9]+)?[fd]?z0x[0-9a-f]+z[0-9]+L?z\nz([a-z_]\w*)(\s*)(\()z[()#:]z[^(:#\'")\s]+z\S+\s+a  (assert|and|any|all|arrange|as|asc|bag|by|cache|CASE|cat|cd|cp|%declare|%default|define|dense|desc|describe|distinct|du|dump|eval|exex|explain|filter|flatten|foreach|full|generate|group|help|if|illustrate|import|inner|input|into|is|join|kill|left|limit|load|ls|map|matches|mkdir|mv|not|null|onschema|or|order|outer|output|parallel|pig|pwd|quit|register|returns|right|rm|rmf|rollup|run|sample|set|ship|split|stderr|stdin|stdout|store|stream|through|union|using|void)\bz(AVG|BinStorage|cogroup|CONCAT|copyFromLocal|copyToLocal|COUNT|cross|DIFF|MAX|MIN|PigDump|PigStorage|SIZE|SUM|TextLoader|TOKENIZE)\bzR(bytearray|BIGINTEGER|BIGDECIMAL|chararray|datetime|double|float|int|long|tuple)\bz[;(){}\[\]]z[#=,./%+\-?]z (eq|gt|lt|gte|lte|neq|matches)\bz(==|<=|<|>=|>|!=))r.   r   r8  rU  rV  r   N)!r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   
IGNORECASEr;   r   r   r>   r   r   r   r   r   rG   rH   rK   r   r   r?   r   r   r   rA   r   rM   rN   rN   rN   rO   r"   $  sJ   c               @   s  e Zd ZdZdZdZdgZdgZdefde	fde
fd	e
fd
e
jfdefdeejedfdeejefdejfdeejedfdeejedfdeejedfdejfdefdeejefdejfdeejefdejfdejfdejfdejjfdejfd efd!ejfd"eed#d$fd%eed#d&fd'eed#d(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 ej d*fgd-efd.efgd/ej!fgd"ed*fe"d0d1efgd%ej#d*fe"d0gd'ed*fe"d0gd2e
fd3e
fd4e
fgd5Z$d6S )7r#   z:
    For Golo source code.

    .. versionadded:: 2.0
    Golozhttp://golo-lang.org/z*.gologoloz[^\S\n]+z#.*$z5(\^|\.\.\.|:|\?:|->|==|!=|=|\+|\*|%|/|<=|<|>=|>|=|\.)z(?<=[^-])(-)(?=[^-])z2(?<=[^`])(is|isnt|and|or|not|oftype|in|orIfNull)\bz
[]{}|(),[]z(module|import)(\s+)modnamez\b([a-zA-Z_][\w$.]*)(::)z+\b([a-zA-Z_][\w$]*(?:\.[a-zA-Z_][\w$]*)+)\bz(let|var)(\s+)varnamez(struct)(\s+)
structnamez(function)(\s+)funcnamez(null|true|false)\bz(augment|pimp|if|else|case|match|return|case|when|then|otherwise|while|for|foreach|try|catch|finally|throw|local|continue|break)\bz%(map|array|list|set|vector|tuple)(\[)z6(print|println|readln|raise|fun|asInterfaceInstance)\bz(`?[a-zA-Z_][\w$]*)(\()z&-?[\d_]*\.[\d_]*([eE][+-]?\d[\d_]*)?F?z	0[0-7]+j?z0[xX][a-fA-F0-9]+z-?\d[\d_]*Lz
-?\d[\d_]*z`?[a-zA-Z_][\w$]*z@[a-zA-Z_][\w$.]*z"""stringescapetriplestringr,   doublestringr6  singlestringz----((.|\n)*?)----z#popz[a-zA-Z_][\w$.]*\*?z`?[\w.]+\*?z[^\\\'"\n]+z[\'"\\]zY\\([\\abfnrtv"\']|\n|N\{.*?\}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|x[a-fA-F0-9]{2}|[0-7]{1,3})r-   z\nz[#=,./%+\-?]z (eq|gt|lt|gte|lte|neq|matches)\bz(==|<=|<|>=|>|!=))r.   r]  rZ  r\  r[  r-   r^  r_  r`  ra  r   N)%r/   r0   r1   r2   r3   r4   r6   r5   r   r   r   Wordr   r   r   rB   r   r<   rC   r   r?   r   rG   rJ   rH   rK   r   r@   r   r   r   rL   r   r   r   r   rM   rN   rN   rN   rO   r#   h  s   






c            "   @   s  e Zd ZdZdZdZddgZdgZdZde Z	d	e Z
d
e
 Zde
 Zde
 Zdedfdejdfdejdfdefdedfe	efdejfde ejfde ejfde ejfde ejfde ejdfde ejfde ejdfd e ejd!fd"e ejd#fd$e ejd%fd&e ejd'fd(e ejd)fd*e ejd+fd,e ejdfd-e ejd.fd/e ejd0fd1e ejd2fed3ed4ejfd5e ejd6fd7e ejd8fd9e ejd:fd;e ejd<fed=ed4ejdfd>e ejd?fd@e ejdAfg dejdfdBejfdCejfgdejdfdDejfdEejfgdFefdejdGfedHdIe eej eefeej!fgdedJfdKe ejdLfedHgdFefdMe ejdfedHeej!dNfgdFefdMe ejdfedHe"dNgdejdGfedHeej!fgdOe edfed+gedHdPeef eej#ej$ej%edfdQeef eej$ej%dfgedHdRedSfdTeef eej#ej$ej%edfdUeef eej$ej%dfgedHdRefdVeef eej#ej$ej%edfdWe
 ej#dfe"dgedHdRefdTeef eej#ej$ej%edfdWe
 ej#dfe"dgdXedfe"d?ge	efdYe
 e&dZfe"d[gedHdQeef eej$ej'dfgd\e ejd]fedHd^ee
eef eej$ej%ejj(dfgedHd_ee
eef eej$ej%ej)ed`fgedHeej dfgedHdae eej)ed`fgdbe ejdfedHgedHd^ee
eef eej$ej%ejj%dfgdFefdKe ejdfedHeej fgedHeejdfgedHdce edfdde edefdfe edgfgdhZ*didj Z+dkS )lr$   z>
    For Jasmin assembly code.

    .. versionadded:: 2.0
    Jasminzhttp://jasmin.sourceforge.net/jasminjasminxtz*.jz \n\t\rz	(?:[%s]+)z%s:=z
(?=[%s]|$)z[^%s]+z(?:[^%s.;\[/]+)z\nz#popr6  )z#popr   r,   r-   r   r   labelz;.*z(\$[-+])?0x-?[\da-fA-F]+%sz(\$[-+]|\+)?-?\d+%szG-?(\d+\.\d*|\.\d+)([eE][-+]?\d+)?[fFdD]?[\x00-\x08\x0b\x0c\x0e-\x1f]*%sz\$%sz\.annotation%srX   a!  (\.attribute|\.bytecode|\.debug|\.deprecated|\.enclosing|\.interface|\.line|\.signature|\.source|\.stack|\.var|abstract|annotation|bridge|class|default|enum|field|final|fpstrict|interface|native|private|protected|public|signature|static|synchronized|synthetic|transient|varargs|volatile)%sz	\.catch%szcaught-exceptionzb(\.class|\.implements|\.inner|\.super|inner|invisible|invisibleparam|outer|visible|visibleparam)%szclass/convert-dotsz	\.field%s)zdescriptor/convert-dotsfieldz(\.end|\.limit|use)%szno-verificationz
\.method%smethodz\.set%sr*   z
\.throws%s	exceptionz(from|offset|to|using)%szis%s)zdescriptor/convert-dotsr*   z(locals|stack)%sverificationzmethod%szenclosing-method)ZaaloadZaastoreZaconst_nullZaloadZaload_0Zaload_1Zaload_2Zaload_3Zaload_wZareturnZarraylengthZastoreZastore_0Zastore_1Zastore_2Zastore_3Zastore_wathrowZbaloadZbastoreZbipush
breakpointZcaloadZcastoreZd2fZd2iZd2lZdaddZdaloadZdastoreZdcmpgZdcmplZdconst_0Zdconst_1ZddivZdloadZdload_0Zdload_1Zdload_2Zdload_3Zdload_wZdmulZdnegZdremZdreturnZdstoreZdstore_0Zdstore_1Zdstore_2Zdstore_3Zdstore_wZdsubdupdup2Zdup2_x1Zdup2_x2Zdup_x1Zdup_x2Zf2dZf2iZf2lZfaddZfaloadZfastoreZfcmpgZfcmplZfconst_0Zfconst_1Zfconst_2ZfdivZfloadZfload_0Zfload_1Zfload_2Zfload_3Zfload_wZfmulZfnegZfremZfreturnZfstoreZfstore_0Zfstore_1Zfstore_2Zfstore_3Zfstore_wZfsubZi2bZi2cZi2dZi2fZi2lZi2siaddZialoadiandZiastoreZiconst_0Ziconst_1Ziconst_2Ziconst_3Ziconst_4Ziconst_5Z	iconst_m1ZidivZiincZiinc_wZiloadZiload_0Ziload_1Ziload_2Ziload_3Ziload_wimulZinegint2byteZint2charZ	int2shortiorZiremZireturnZishlZishrZistoreZistore_0Zistore_1Zistore_2Zistore_3Zistore_wisubZiushrixorZl2dZl2fZl2iZladdZlaloadZlandZlastoreZlcmpZlconst_0Zlconst_1Zldc2_wZldivZlloadZlload_0Zlload_1Zlload_2Zlload_3Zlload_wZlmulZlnegZlookupswitchZlorZlremZlreturnZlshlZlshrZlstoreZlstore_0Zlstore_1Zlstore_2Zlstore_3Zlstore_wZlsubZlushrZlxorZmonitorenterZmonitorexitZnopr  Zpop2retZret_wrw   ZsaloadZsastoreZsipushZswap)r   z0(anewarray|checkcast|instanceof|ldc|ldc_w|new)%szclass/no-dotsz=invoke(dynamic|interface|nonvirtual|special|static|virtual)%s
invocationz(getfield|putfield)%s)zdescriptor/no-dotsrg  z(getstatic|putstatic)%s)zdescriptor/no-dotsstatic)ZgotoZgoto_wZ	if_acmpeqZ	if_acmpneZ	if_icmpeqZ	if_icmpgeZ	if_icmpgtZ	if_icmpleZ	if_icmpltZ	if_icmpneZifeqZifgeZifgtZifleZifltZifneZ	ifnonnullZifnullZjsrZjsr_wz(multianewarray|newarray)%szdescriptor/convert-dotsztableswitch%stablez\\u[\da-fA-F]{4}z[^'\\]+z0\\([nrtfb"\'\\]|u[\da-fA-F]{4}|[0-3]?[0-7]{1,2})z[^"\\]+z\n+r   r	   z(%s)([ \t\r]*)(:))z#popzannotation-bodyz	default%s)z#popzannotation-defaultz\.end%s)zannotation-itemszdescriptor/no-dotszall%sz(L)((?:%s[/.])*)(%s)(;)z((?:%s[/.])*)(%s)z\[+)z#popzdescriptor/no-dotsz(L)((?:%s/)*)(%s)(;)z((?:%s/)*)(%s)z(L)((?:%s[/.])*)(%s?)(;)z
[^%s\[)L]+z\)z(?=[^%s]*\())z#poprw  )z#popzclass/convert-dotszstatic%s)z#poprx  z(((?:%s[/.](?=[^%s]*[/.]))*)(%s[/.])?(%s)z-((?:%s[/.](?=[^%s(]*[/.]))*)(%s[/.])?(%s)(\())z#popzdescriptor/convert-dotszdescriptors/convert-dotszdescriptor/convert-dotsz(%s)(\()z(locals|method|stack)%sz8(Double|Float|Integer|Long|Null|Top|UninitializedThis)%szObject%s)z#popzclass/no-dotszUninitialized%s)z#poprf  )r	   r   r-   r.   rX   zannotation-bodyzannotation-defaultzannotation-itemszcaught-exceptionzclass/convert-dotszclass/no-dotszdescriptor/convert-dotszdescriptor/no-dotszdescriptors/convert-dotszenclosing-methodri  rg  rw  rf  rh  zno-verificationrx  ry  r*   rj  c             C   sV   d}t d| t jr4|d7 }t d| t jr4|d7 }t d| t jrL|d7 }t|dS )	Nr   z^\s*\.class\sg      ?z^\s*[a-z]+_[a-z]+\bg333333?za^\s*\.(attribute|bytecode|debug|deprecated|enclosing|inner|interface|limit|set|signature|stack)\bg333333?g      ?)r8   searchr9   r  )ri   ZscorerN   rN   rO   r     s    zJasminLexer.analyse_textN),r/   r0   r1   r2   r3   r4   r5   r6   _whitespacer@  Z
_separator_break_nameZ_unqualified_namer   r   r=   r   r   r   r   rH   rK   rG   r   r   r   r   r
   r   r   r   rF   r   r	   rA   rB   rL   r   	ExceptionInstancer?   rM   r   rN   rN   rN   rO   r$     sB  


























c               @   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eeeejeefdefd	eejefd
ejfdejfdefdejfdejfdeejefdejfdeejedfdeejedfdejfdejfdejfdefdefde j!fde j"fde j#fdefgdej$dfgd ejdfgd!Z%d"S )#r%   z:
    For SARL source code.

    .. versionadded:: 2.4
    SARLzhttp://www.sarl.iosarlz*.sarlztext/x-sarlz=^(\s*(?:[a-zA-Z_][\w.\[\]]*\s+)+?)([a-zA-Z_$][\w$]*)(\s*)(\()z[^\S\n]+z(//.*?)(\n)z	/\*.*?\*/z@[a-zA-Z_][\w.]*z(as|break|case|catch|default|do|else|extends|extension|finally|fires|for|if|implements|instanceof|new|on|requires|return|super|switch|throw|throws|try|typeof|uses|while|with)\bz(abstract|def|dispatch|final|native|override|private|protected|public|static|strictfp|synchronized|transient|val|var|volatile)\bz6(boolean|byte|char|double|float|int|long|short|void)\bz(package)(\s+)z+(false|it|null|occurrence|this|true|void)\bzY(agent|annotation|artifact|behavior|capacity|class|enum|event|interface|skill|space)(\s+)r(   z(import)(\s+)r)   z"(\\\\|\\[^\\]|[^"\\])*"z'(\\\\|\\[^\\]|[^'\\])*'z[a-zA-Z_]\w*:z[a-zA-Z_$]\w*z[~^*!%&\[\](){}<>\|+=:;,./?-]z%[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?z0x[0-9a-fA-F]+z[0-9]+L?z\nz[a-zA-Z_]\w*z#popz	[\w.]+\*?)r.   r(   r)   N)&r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r   r   r   r   r?   r   r   r   r=   r>   r@   r   r<   rA   rB   rC   r   r   rF   r   rG   rH   rK   rL   rM   rN   rN   rN   rO   r%     sH   
)-r2   r8   Zpygments.lexerr   r   r   r   r   r   r   r	   r
   Zpygments.tokenr   r   r   r   r   r   r   r   r   Zpygments.utilr   pygmentsr   r   __all__r   r    r   r   r   r   r   r   r   r<  r!   r   r   r"   r#   r$   r%   rN   rN   rN   rO   <module>	   sB   ,,\(  "ON A /P BDr  