3

V'íc0eã@s*dZddlZddlmZmZmZmZmZddlm	Z	m
Z
mZmZm
Z
mZmZmZmZmZddlmZddlmZmZddlmZddlmZdd	lmZdd
lmZddl m!Z!ddl"m#Z#d
ddddddddddddddddddgZ$Gd d
„d
eƒZ%Gd!d„deƒZ&Gd"d„deƒZ'Gd#d„deƒZ(Gd$d„deƒZ)Gd%d„deƒZ*Gd&d„deƒZ+Gd'd„deƒZ,Gd(d„deƒZ-Gd)d„deƒZ.Gd*d„deƒZ/Gd+d„deƒZ0Gd,d„deƒZ1Gd-d„deƒZ2Gd.d„deƒZ3Gd/d„deƒZ4Gd0d„deƒZ5Gd1d2„d2eƒZ6Gd3d„deƒZ7Gd4d„deƒZ8dS)5zÐ
    pygments.lexers.parsers
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for parser generators.

    :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
éN)Ú
RegexLexerÚDelegatingLexerÚincludeÚbygroupsÚusing)
ÚPunctuationÚOtherÚTextÚCommentÚOperatorÚKeywordÚNameÚStringÚNumberÚ
Whitespace)Ú	JavaLexer)ÚCLexerÚCppLexer)ÚObjectiveCLexer)ÚDLexer)ÚCSharpLexer)Ú	RubyLexer)ÚPythonLexer)Ú	PerlLexerÚ
RagelLexerÚRagelEmbeddedLexerÚRagelCLexerÚRagelDLexerÚ
RagelCppLexerÚRagelObjectiveCLexerÚRagelRubyLexerÚRagelJavaLexerÚ
AntlrLexerÚAntlrPythonLexerÚAntlrPerlLexerÚAntlrRubyLexerÚ
AntlrCppLexerÚAntlrCSharpLexerÚAntlrObjectiveCLexerÚAntlrJavaLexerÚAntlrActionScriptLexerÚTreetopLexerÚ	EbnfLexerc@sJeZdZdZdZdZdgZgZdefgde	fgde
fde
fd	e
fd
e
fgdejfdej
fgd
ejfdejfdefdejfgdejfgdefdefdefdefdefdefdefdefdefdefdefdefdefdefged ƒed!ƒed"ƒed#ƒed$ƒed%ƒed&ƒd'ed(fd)efd*efg
d+d,jd9ƒd3efd'ed4fd5ed6fgd7œ	Zd8S):rzðA pure `Ragel <www.colm.net/open-source/ragel>`_ lexer.  Use this
    for fragments of Ragel.  For ``.rl`` files, use
    :class:`RagelEmbeddedLexer` instead (or one of the
    language-specific subclasses).

    .. versionadded:: 1.1

    ZRagelz&http://www.colm.net/open-source/ragel/Zragelz\s+z\#.*$z(access|action|alphtype)\bz (getkey|write|machine|include)\bz2(any|ascii|extend|alpha|digit|alnum|lower|upper)\bz3(xdigit|cntrl|graph|print|punct|space|zlen|empty)\bz0x[0-9A-Fa-f]+z[+-]?[0-9]+ú"(\\\\|\\[^\\]|[^"\\])*"ú'(\\\\|\\[^\\]|[^'\\])*'z\[(\\\\|\\[^\\]|[^\\\]])*\]ú/(?!\*)(\\\\|\\[^\\]|[^/\\])*/z[a-zA-Z_]\w*ú,z\||&|--?z
\.|<:|:>>?ú:z->z(>|\$|%|<|@|<>)(/|eof\b)z(>|\$|%|<|@|<>)(!|err\b)z(>|\$|%|<|@|<>)(\^|lerr\b)z(>|\$|%|<|@|<>)(~|to\b)z(>|\$|%|<|@|<>)(\*|from\b)z>|@|\$|%z\*|\?|\+|\{[0-9]*,[0-9]*\}z!|\^z\(|\)ÚliteralsÚ
whitespaceÚcommentsÚkeywordsÚnumbersÚidentifiersÚ	operatorsz\{Úhostú=ú;ú(ú|ú[^{}\'"/#]+ú[^\\]\\[{}]ú//.*$\n?ú/\*(.|\n)*?\*/ú\#.*$\n?ú/z)+z#pushz\}z#pop)	r3r4r5r6r2r7r8Úrootr9N)	r>r?r-r.r@rArBr/rC)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚurlÚaliasesÚ	filenamesrr
rrZHexÚIntegerrÚDoubleÚSingleÚRegexr
ÚVariablerrrÚjoinrÚtokens©rTrTú;/tmp/pip-build-gk9425m9/Pygments/pygments/lexers/parsers.pyr#sZ


c@sžeZdZdZdZdgZdgZddjd"ƒdefde	e
eeƒe
e
ƒfde
dfgddjddjd#ƒdd	d
dddd
fƒdeeƒfde
dfgdœZdd „Zd!S)$rzà
    A lexer for Ragel embedded in a host language file.

    This will only highlight Ragel statements. If you want host language
    highlighting then call the language-specific Ragel lexer.

    .. versionadded:: 1.1
    zEmbedded Ragelzragel-emz*.rlr<r=ú
[^%\'"/#]+ú%(?=[^%]|$)ú"(\\\\|\\[^\\]|[^"\\])*"ú'(\\\\|\\[^\\]|[^'\\])*'ú/\*(.|\n)*?\*/ú//.*$\n?ú\#.*$\n?ú/(?!\*)(\\\\|\\[^\\]|[^/\\])*/rCz)+z(%%)(?![{%])(.*)($|;)(\n?)z(%%%%|%%)\{zmulti-line-fsmú[^}\'"\[/#]ú\}(?=[^%]|$)ú
\}%(?=[^%]|$)ú[^\\]\\[{}]ú(>|\$|%|<|@|<>)/ú /(?!\*)(\\\\|\\[^\\]|[^/\\])*/\*ú/(?=[^/*]|$)z\[(\\\\|\\[^\\]|[^\]\\])*\]z\}%%z#pop)rDzmulti-line-fsmcCsd|kS)Nz@LANG: indeprT)ÚtextrTrTrUÚanalyse_textÑszRagelEmbeddedLexer.analyse_textN)	rVrWrXrYrZr[r\r]rC)r^r_r`rarbrcrd)rErFrGrHrIrKrLrRrrrrrr	rSrfrTrTrTrUr‚s
!4cs:eZdZdZdZddgZdgZ‡fdd„Zdd	„Z‡Z	S)
r zK
    A lexer for Ragel in a Ruby host file.

    .. versionadded:: 1.1
    zRagel in Ruby Hostz
ragel-rubyzragel-rbz*.rlcstƒjttf|ŽdS)N)ÚsuperÚ__init__rr)ÚselfÚoptions)Ú	__class__rTrUrhàszRagelRubyLexer.__init__cCsd|kS)Nz@LANG: rubyrT)rerTrTrUrfãszRagelRubyLexer.analyse_text)
rErFrGrHrIrKrLrhrfÚ
__classcell__rTrT)rkrUr Õscs8eZdZdZdZdgZdgZ‡fdd„Zdd„Z‡Z	S)	rzH
    A lexer for Ragel in a C host file.

    .. versionadded:: 1.1
    zRagel in C Hostzragel-cz*.rlcstƒjttf|ŽdS)N)rgrhrr)rirj)rkrTrUrhòszRagelCLexer.__init__cCsd|kS)Nz@LANG: crT)rerTrTrUrfõszRagelCLexer.analyse_text)
rErFrGrHrIrKrLrhrfrlrTrT)rkrUrçscs8eZdZdZdZdgZdgZ‡fdd„Zdd„Z‡Z	S)	rzH
    A lexer for Ragel in a D host file.

    .. versionadded:: 1.1
    zRagel in D Hostzragel-dz*.rlcstƒjttf|ŽdS)N)rgrhrr)rirj)rkrTrUrhszRagelDLexer.__init__cCsd|kS)Nz@LANG: drT)rerTrTrUrfszRagelDLexer.analyse_text)
rErFrGrHrIrKrLrhrfrlrTrT)rkrUrùscs8eZdZdZdZdgZdgZ‡fdd„Zdd„Z‡Z	S)	rzJ
    A lexer for Ragel in a C++ host file.

    .. versionadded:: 1.1
    zRagel in CPP Hostz	ragel-cppz*.rlcstƒjttf|ŽdS)N)rgrhrr)rirj)rkrTrUrhszRagelCppLexer.__init__cCsd|kS)Nz
@LANG: c++rT)rerTrTrUrfszRagelCppLexer.analyse_text)
rErFrGrHrIrKrLrhrfrlrTrT)rkrUrscs8eZdZdZdZdgZdgZ‡fdd„Zdd„Z‡Z	S)	rzS
    A lexer for Ragel in an Objective C host file.

    .. versionadded:: 1.1
    zRagel in Objective C Hostz
ragel-objcz*.rlcstƒjttf|ŽdS)N)rgrhrr)rirj)rkrTrUrh(szRagelObjectiveCLexer.__init__cCsd|kS)Nz@LANG: objcrT)rerTrTrUrf+sz!RagelObjectiveCLexer.analyse_text)
rErFrGrHrIrKrLrhrfrlrTrT)rkrUrscs8eZdZdZdZdgZdgZ‡fdd„Zdd„Z‡Z	S)	r!zK
    A lexer for Ragel in a Java host file.

    .. versionadded:: 1.1
    zRagel in Java Hostz
ragel-javaz*.rlcstƒjttf|ŽdS)N)rgrhrr)rirj)rkrTrUrh:szRagelJavaLexer.__init__cCsd|kS)Nz@LANG: javarT)rerTrTrUrf=szRagelJavaLexer.analyse_text)
rErFrGrHrIrKrLrhrfrlrTrT)rkrUr!/sc@sNeZdZdZdZdgZgZdZdZdZ	dZ
dZd	efgd
e
fde
fgedƒed
ƒdedeeeeeejeƒfdedfdedfdedeeeejeeƒdfdedfdededeejeeeejeeƒdfdedeeeejeƒdLfg	ded fd!efed
ƒd"ed#fd$edfgedƒed
ƒd%efd"ed#fd$edfd&ed'eeeejƒfd(ed'eeeejƒfdedfd)eeeeƒdfd*ed+eeeejeeƒfdedeejeeƒdfd,ed fgedƒed
ƒdedfd,efd-ejfd.ejfd/efd0ejfd1ejfd2efd3efd"ed#fd$edfd4ed fgedƒed
ƒd$efd5ed6e
d7eejeeeeeeƒfd8ed fgedƒed
ƒd$efd5ed9d:jee
ed;fƒd+eejeeeeeeƒfd8ed fgd5d:jdMƒdAefdBeeeƒfdCeejeejƒfd$edDfd8ed fgd5d:jdNƒdAefd"edDfdFed fdCeejeejƒfdGefgdHœ
ZdIdJ„Z dKS)Or"z¿
    Generic `ANTLR`_ Lexer.
    Should not be called directly, instead
    use DelegatingLexer for your target language.

    .. versionadded:: 1.1

    .. _ANTLR: http://www.antlr.org/
    ZANTLRZantlrz[A-Za-z]\w*z[A-Z]\w*z[a-z]\w*z\'(?:\\\\|\\\'|[^\']*)\'z[0-9]+z\s+z//.*$ú/\*(.|\n)*?\*/r3r4z*(lexer|parser|tree)?(\s*)(grammar\b)(\s*)(z)(;)z	options\brjztokens\brSz
(scope)(\s*)(z
)(\s*)(\{)Úactionz(catch|finally)\bÚ	exceptionz(@z)(\s*)(::)?(\s*)(z0((?:protected|private|public|fragment)\b)?(\s*)(z)(!)?ú	rule-altsúrule-prelimsz\nz#popz\sz\[znested-arg-actionz\{z	returns\bz(throws)(\s+)(ú)z	(,)(\s*)(z(scope)(\s+)(\{)z
(scope)(\s+)(z	)(\s*)(;)r1ú"(\\\\|\\[^\\]|[^"\\])*"ú'(\\\\|\\[^\\]|[^'\\])*'z<<([^>]|>[^>])>>z\$?[A-Z_]\w*z\$?[a-z_]\w*z-(\+|\||->|=>|=|\(|\)|\.\.|\.|\?|\*|\^|!|\#|~)r0r;r<z)(\s*)(=)?(\s*)(z
)?(\s*)(;)z\}z)(\s*)(=)(\s*)(r=z\*ú
[^${}\'"/\\]+ú//.*$\n?ú/(?!\*)(\\\\|\\[^\\]|[^/\\])*/ú\\(?!%)rCz)+z(\\)(%)z(\$[a-zA-Z]+)(\.?)(text|value)?z#pushú
[^$\[\]\'"/]+z\]z(\\\\|\\\]|\\\[|[^\[\]])+)
r3r4rDrozrule-prelimsz	rule-altsrSrjrnznested-arg-actioncCstjd|tjƒS)Nz^\s*grammar\s+[a-zA-Z0-9]+\s*;)ÚreÚsearchÚM)rerTrTrUrfþszAntlrLexer.analyse_textN)rprq)rursrtrvrmrwrxrC)ryrsrtrvrmrwrC)!rErFrGrHrIrKrLÚ_idZ
_TOKEN_REFZ	_RULE_REFZ_STRING_LITERALZ_INTrr
rrrr
ÚClassrrQÚLabelrrNrOÚConstantrrRr	rZPropertyrSrfrTrTrTrUr"As¸	











 


cs:eZdZdZdZdgZddgZ‡fdd„Zdd	„Z‡Z	S)
r&z:
    ANTLR with C++ Target

    .. versionadded:: 1.1
    zANTLR With CPP Targetz	antlr-cppz*.Gz*.gcstƒjttf|ŽdS)N)rgrhrr")rirj)rkrTrUrhszAntlrCppLexer.__init__cCstj|ƒotjd|tjƒS)Nz^\s*language\s*=\s*C\s*;)r"rfrzr{r|)rerTrTrUrfs
zAntlrCppLexer.analyse_text)
rErFrGrHrIrKrLrhrfrlrTrT)rkrUr&scs:eZdZdZdZdgZddgZ‡fdd„Zdd	„Z‡Z	S)
r(zB
    ANTLR with Objective-C Target

    .. versionadded:: 1.1
    zANTLR With ObjectiveC Targetz
antlr-objcz*.Gz*.gcstƒjttf|ŽdS)N)rgrhrr")rirj)rkrTrUrh"szAntlrObjectiveCLexer.__init__cCstj|ƒotjd|ƒS)Nz^\s*language\s*=\s*ObjC\s*;)r"rfrzr{)rerTrTrUrf%s
z!AntlrObjectiveCLexer.analyse_text)
rErFrGrHrIrKrLrhrfrlrTrT)rkrUr(scs<eZdZdZdZddgZddgZ‡fdd„Zd	d
„Z‡Z	S)r'z9
    ANTLR with C# Target

    .. versionadded:: 1.1
    zANTLR With C# Targetzantlr-csharpzantlr-c#z*.Gz*.gcstƒjttf|ŽdS)N)rgrhrr")rirj)rkrTrUrh5szAntlrCSharpLexer.__init__cCstj|ƒotjd|tjƒS)Nz^\s*language\s*=\s*CSharp2\s*;)r"rfrzr{r|)rerTrTrUrf8s
zAntlrCSharpLexer.analyse_text)
rErFrGrHrIrKrLrhrfrlrTrT)rkrUr'*scs:eZdZdZdZdgZddgZ‡fdd„Zdd	„Z‡Z	S)
r#z=
    ANTLR with Python Target

    .. versionadded:: 1.1
    zANTLR With Python Targetzantlr-pythonz*.Gz*.gcstƒjttf|ŽdS)N)rgrhrr")rirj)rkrTrUrhHszAntlrPythonLexer.__init__cCstj|ƒotjd|tjƒS)Nz^\s*language\s*=\s*Python\s*;)r"rfrzr{r|)rerTrTrUrfKs
zAntlrPythonLexer.analyse_text)
rErFrGrHrIrKrLrhrfrlrTrT)rkrUr#=scs:eZdZdZdZdgZddgZ‡fdd„Zdd	„Z‡Z	S)
r)z:
    ANTLR with Java Target

    .. versionadded:: 1.
    zANTLR With Java Targetz
antlr-javaz*.Gz*.gcstƒjttf|ŽdS)N)rgrhrr")rirj)rkrTrUrh[szAntlrJavaLexer.__init__cCstj|ƒodS)NgÍÌÌÌÌÌì?)r"rf)rerTrTrUrf^szAntlrJavaLexer.analyse_text)
rErFrGrHrIrKrLrhrfrlrTrT)rkrUr)Pscs<eZdZdZdZddgZddgZ‡fdd„Zd	d
„Z‡Z	S)r%z;
    ANTLR with Ruby Target

    .. versionadded:: 1.1
    zANTLR With Ruby Targetz
antlr-rubyzantlr-rbz*.Gz*.gcstƒjttf|ŽdS)N)rgrhrr")rirj)rkrTrUrhnszAntlrRubyLexer.__init__cCstj|ƒotjd|tjƒS)Nz^\s*language\s*=\s*Ruby\s*;)r"rfrzr{r|)rerTrTrUrfqs
zAntlrRubyLexer.analyse_text)
rErFrGrHrIrKrLrhrfrlrTrT)rkrUr%cscs:eZdZdZdZdgZddgZ‡fdd„Zdd	„Z‡Z	S)
r$z;
    ANTLR with Perl Target

    .. versionadded:: 1.1
    zANTLR With Perl Targetz
antlr-perlz*.Gz*.gcstƒjttf|ŽdS)N)rgrhrr")rirj)rkrTrUrhszAntlrPerlLexer.__init__cCstj|ƒotjd|tjƒS)Nz^\s*language\s*=\s*Perl5\s*;)r"rfrzr{r|)rerTrTrUrf„s
zAntlrPerlLexer.analyse_text)
rErFrGrHrIrKrLrhrfrlrTrT)rkrUr$vscs<eZdZdZdZddgZddgZ‡fdd„Zd	d
„Z‡Z	S)r*zC
    ANTLR with ActionScript Target

    .. versionadded:: 1.1
    zANTLR With ActionScript Targetzantlr-actionscriptzantlr-asz*.Gz*.gcs"ddlm}tƒj|tf|ŽdS)Nr)ÚActionScriptLexer)Zpygments.lexers.actionscriptrrgrhr")rirjr)rkrTrUrh”szAntlrActionScriptLexer.__init__cCstj|ƒotjd|tjƒS)Nz#^\s*language\s*=\s*ActionScript\s*;)r"rfrzr{r|)rerTrTrUrf˜s
z#AntlrActionScriptLexer.analyse_text)
rErFrGrHrIrKrLrhrfrlrTrT)rkrUr*‰sc@sTeZdZdZedƒdefdejdfdedfgedƒedƒded	fdedfd
ejfgedƒedƒdedfd
edfdefgedƒd
ej	dfgedƒedƒde
jfde
jfde
ejeƒfdefdefdefde
jfde
ejeejƒfde
eej	eƒfdedfde
jfg
dedfdedfdefgded	fdedfdefgd efd!ejfgd"edfgd#œ	Zd$S)%ÚTreetopBaseLexerz¥
    A base lexer for `Treetop <http://treetop.rubyforge.org/>`_ grammars.
    Not for direct use; use :class:`TreetopLexer` instead.

    .. versionadded:: 1.6
    Úspacezrequire[ \t]+[^\n\r]+[\n\r]zmodule\bÚmodulez	grammar\bÚgrammarÚendz#pushz[A-Z]\w*(?:::[A-Z]\w*)*zrule\bÚrulez	include\brz[A-Z]\w*z#popz"(\\\\|\\[^\\]|[^"\\])*"z'(\\\\|\\[^\\]|[^'\\])*'z([A-Za-z_]\w*)(:)z[A-Za-z_]\w*z[()]z	[?+*/&!~]z$\[(?:\\.|\[:\^?[a-z]+:\]|[^\\\]])+\]z([0-9]*)(\.\.)([0-9]*)z
(<)([^>]+)(>)z\{Ú
inline_modulez\.Úrubyz\}z[^{}]+z
[ \t\n\r]+z#[^\n]*zend\b)	rDr„r…rr‡rˆr‰rƒr†N)rErFrGrHrrrÚ	Namespacer
r~rrNrOrrrrrPrrMrr
rSrTrTrTrUr‚sP




r‚cs2eZdZdZdZdgZddgZ‡fdd„Z‡ZS)r+ze
    A lexer for `Treetop <http://treetop.rubyforge.org/>`_ grammars.

    .. versionadded:: 1.6
    ZTreetopZtreetopz	*.treetopz*.ttcstƒjttf|ŽdS)N)rgrhrr‚)rirj)rkrTrUrhíszTreetopLexer.__init__)	rErFrGrHrIrKrLrhrlrTrT)rkrUr+âs
c
@sÎeZdZdZdZdgZdgZdgZedƒedƒedƒd	e	d
fgedƒedƒedƒde
jfde
jfd
e
jfdefde	fdedfdedfg
defgdejdfgdejfedƒdejdfdejfgdefgdœZdS)r,z—
    Lexer for `ISO/IEC 14977 EBNF
    <http://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_Form>`_
    grammars.

    .. versionadded:: 2.0
    ZEBNFZebnfz*.ebnfztext/x-ebnfr3Ú
comment_startÚ
identifierr:Ú
productionz"[^"]*"z'[^']*'z(\?[^?]*\?)z[\[\]{}(),|]ú-r;z#popz\.z\s+z\(\*Úcommentz[^*)]z\*\)z[*)]z([a-zA-Z][\w \-]*))rDrr3r‹rrŒN)rErFrGrHrIrKrLÚ	mimetypesrrrrNrOr
ÚEntityrr	r
Z	MultilinerrSrTrTrTrUr,ñs4



)9rHrzZpygments.lexerrrrrrZpygments.tokenrrr	r
rrr
rrrZpygments.lexers.jvmrZpygments.lexers.c_cpprrZpygments.lexers.objectiverZpygments.lexers.drZpygments.lexers.dotnetrZpygments.lexers.rubyrZpygments.lexers.pythonrZpygments.lexers.perlrÚ__all__rrr rrrrr!r"r&r(r'r#r)r%r$r*r‚r+r,rTrTrTrUÚ<module>	sN0_SDE