o
    ‡ÎÖae  ã                   @   s  d Z ddlZddl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 ddlmZ ddlmZ dd	lmZ dd
lmZ ddl m!Z! ddl"m#Z# g d¢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ƒZ0G d&d'„ d'eƒZ1G d(d)„ d)eƒZ2G d*d+„ d+eƒZ3G d,d-„ d-eƒZ4G d.d/„ d/eƒZ5G d0d1„ d1eƒZ6G d2d3„ d3eƒZ7G d4d5„ d5eƒZ8dS )6zÐ
    pygments.lexers.parsers
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for parser generators.

    :copyright: Copyright 2006-2021 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                   @   sF  e Zd ZdZdZdgZg Zdefgdefgde	fde	fde	fd	e	fgd
e
jfde
jfgdejfdejfdefdejfgdejfgdefdefdefdefdefdefdefdefdefdefdefdefdefdefgedƒed ƒed!ƒed"ƒed#ƒed$ƒed%ƒd&ed'fd(efd)efg
d*d+ d,¡ d- efd&ed.fd/ed0fgd1œ	Zd2S )3r   zç
    A pure `Ragel <http://www.complang.org/ragel/>`_ lexer.  Use this for
    fragments of Ragel.  For ``.rl`` files, use RagelEmbeddedLexer instead
    (or one of the language-specific subclasses).

    .. versionadded:: 1.1
    ÚRagelÚragelú\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)\bz0x[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Ú	operatorsú\{Úhostú=ú;ú(ú|)	z[^{}\'"/#]+ú[^\\]\\[{}]r0   r1   ú//.*$\n?ú/\*(.|\n)*?\*/ú\#.*$\n?r2   ú/ú)+ú#pushú\}ú#pop)	r6   r7   r8   r9   r5   r:   r;   Úrootr=   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚaliasesÚ	filenamesr   r
   r   r   ÚHexÚIntegerr   ÚDoubleÚSingleÚRegexr   ÚVariabler   r   r   Újoinr   Útokens© r[   r[   ú9/usr/lib/python3/dist-packages/pygments/lexers/parsers.pyr   #   sv    ÿÿüþüÿòöïïë
Êr   c                   @   sž   e Zd ZdZdZdgZdgZdd d¡ d efd	e	e
eeƒe
eƒfd
e
dfgdd dd d¡ d ddddddf¡ d eeƒfde
dfgdœZdd„ ZdS )r   zã
    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
    zEmbedded Ragelzragel-emú*.rlr@   rA   )	z
[^%\'"/#]+z%(?=[^%]|$)r0   r1   rD   rC   rE   r2   rF   rG   z(%%)(?![{%])(.*)($|;)(\n?)z(%%%%|%%)\{úmulti-line-fsm)z[^}\'"\[/#]z\}(?=[^%]|$)z\}%(?=[^%]|$)rB   z(>|\$|%|<|@|<>)/z /(?!\*)(\\\\|\\[^\\]|[^/\\])*/\*z/(?=[^/*]|$)r0   r1   z\[(\\\\|\\[^\\]|[^\]\\])*\]rD   rC   rE   z\}%%rJ   )rK   r^   c                 C   ó   d| v S )Nz@LANG: indepr[   ©Útextr[   r[   r\   Úanalyse_textÏ   ó   zRagelEmbeddedLexer.analyse_textN)rL   rM   rN   rO   rP   rQ   rR   rY   r   r   r   r   r   r	   rZ   rb   r[   r[   r[   r\   r   €   sF    	òòþçìãââ ßäAr   c                       s:   e Zd ZdZdZddgZdgZ‡ fdd„Zdd	„ Z‡  Z	S )
r    zN
    A lexer for `Ragel`_ in a Ruby host file.

    .. versionadded:: 1.1
    zRagel in Ruby Hostz
ragel-rubyzragel-rbr]   c                    ó   t ƒ jttfi |¤Ž d S ©N)ÚsuperÚ__init__r   r   ©ÚselfÚoptions©Ú	__class__r[   r\   rg   Þ   ó   zRagelRubyLexer.__init__c                 C   r_   )Nz@LANG: rubyr[   r`   r[   r[   r\   rb   á   rc   zRagelRubyLexer.analyse_text©
rL   rM   rN   rO   rP   rQ   rR   rg   rb   Ú__classcell__r[   r[   rk   r\   r    Ó   s    r    c                       ó8   e Zd ZdZdZdgZdgZ‡ fdd„Zdd„ Z‡  Z	S )	r   zK
    A lexer for `Ragel`_ in a C host file.

    .. versionadded:: 1.1
    zRagel in C Hostzragel-cr]   c                    rd   re   )rf   rg   r   r   rh   rk   r[   r\   rg   ð   rm   zRagelCLexer.__init__c                 C   r_   )Nz@LANG: cr[   r`   r[   r[   r\   rb   ó   rc   zRagelCLexer.analyse_textrn   r[   r[   rk   r\   r   å   ó    r   c                       rp   )	r   zK
    A lexer for `Ragel`_ in a D host file.

    .. versionadded:: 1.1
    zRagel in D Hostzragel-dr]   c                    rd   re   )rf   rg   r   r   rh   rk   r[   r\   rg     rm   zRagelDLexer.__init__c                 C   r_   )Nz@LANG: dr[   r`   r[   r[   r\   rb     rc   zRagelDLexer.analyse_textrn   r[   r[   rk   r\   r   ÷   rq   r   c                       rp   )	r   zM
    A lexer for `Ragel`_ in a CPP host file.

    .. versionadded:: 1.1
    zRagel in CPP Hostz	ragel-cppr]   c                    rd   re   )rf   rg   r   r   rh   rk   r[   r\   rg     rm   zRagelCppLexer.__init__c                 C   r_   )Nz
@LANG: c++r[   r`   r[   r[   r\   rb     rc   zRagelCppLexer.analyse_textrn   r[   r[   rk   r\   r   	  rq   r   c                       rp   )	r   zV
    A lexer for `Ragel`_ in an Objective C host file.

    .. versionadded:: 1.1
    zRagel in Objective C Hostz
ragel-objcr]   c                    rd   re   )rf   rg   r   r   rh   rk   r[   r\   rg   &  rm   zRagelObjectiveCLexer.__init__c                 C   r_   )Nz@LANG: objcr[   r`   r[   r[   r\   rb   )  rc   z!RagelObjectiveCLexer.analyse_textrn   r[   r[   rk   r\   r     rq   r   c                       rp   )	r!   zN
    A lexer for `Ragel`_ in a Java host file.

    .. versionadded:: 1.1
    zRagel in Java Hostz
ragel-javar]   c                    rd   re   )rf   rg   r   r   rh   rk   r[   r\   rg   8  rm   zRagelJavaLexer.__init__c                 C   r_   )Nz@LANG: javar[   r`   r[   r[   r\   rb   ;  rc   zRagelJavaLexer.analyse_textrn   r[   r[   rk   r\   r!   -  rq   r!   c                   @   sN  e Zd ZdZdZdgZg ZdZdZdZ	dZ
dZd	efgd
efdefgedƒedƒde d eeeeeejeƒfdedfdedfde d eeeejeeƒdfdedfde d e d eejeeeejeeƒdfde d eeeejeƒdfg	dedfd efedƒd!ed"fd#edfgedƒedƒd$efd!ed"fd#edfd%e d& eeeejƒfd'e d& eeeejƒfdedfd(eeeeƒdfd)e d* eeeejeeƒfde d eejeeƒdfd+edfgedƒedƒdedfd+efd,ejfd-ejfd.efd/ejfd0ejfd1efd2efd!ed"fd#edfd3edfgedƒedƒd#efd4e d5 e
 d6 eejeeeeeeƒfd7edfgedƒedƒd#efd4e d8 d9 ee
ed:f¡ d* eejeeeeeeƒfd7edfgd4d9 d;¡ d< efd=eeeƒfd>eejeejƒfd#ed?fd7edfgd4d9 d@¡ d< efd!ed?fdAedfd>eejeejƒfdBefgdCœ
ZdDdE„ Z dFS )Gr"   z¿
    Generic `ANTLR`_ Lexer.
    Should not be called directly, instead
    use DelegatingLexer for your target language.

    .. versionadded:: 1.1

    .. _ANTLR: http://www.antlr.org/
    ÚANTLRÚantlrz[A-Za-z]\w*ú[A-Z]\w*z[a-z]\w*z\'(?:\\\\|\\\'|[^\']*)\'z[0-9]+r/   z//.*$rD   r6   r7   z*(lexer|parser|tree)?(\s*)(grammar\b)(\s*)(z)(;)z	options\brj   ztokens\brZ   z(scope)(\s*)(z
)(\s*)(\{)Úactionz(catch|finally)\bÚ	exceptionz(@z)(\s*)(::)?(\s*)(z0((?:protected|private|public|fragment)\b)?(\s*)(z)(!)?)ú	rule-altsúrule-prelimsz\nrJ   z\sz\[únested-arg-actionr<   z	returns\bz(throws)(\s+)(ú)z	(,)(\s*)(z(scope)(\s+)(\{)z(scope)(\s+)(z	)(\s*)(;)r4   r0   r1   z<<([^>]|>[^>])>>z\$?[A-Z_]\w*z\$?[a-z_]\w*z-(\+|\||->|=>|=|\(|\)|\.\.|\.|\?|\*|\^|!|\#|~)r3   r?   r@   z)(\s*)(=)?(\s*)(z
)?(\s*)(;)rI   z)(\s*)(=)(\s*)(rA   z\*)z[^${}\'"/\\]+r0   r1   rC   rD   r2   z\\(?!%)rF   rG   z(\\)(%)z(\$[a-zA-Z]+)(\.?)(text|value)?rH   )z[^$\[\]\'"/]+r0   r1   rC   rD   r2   rF   z\]z(\\\\|\\\]|\\\[|[^\[\]])+)
r6   r7   rK   rv   rx   rw   rZ   rj   ru   ry   c                 C   s   t  d| t j¡S )Nz^\s*grammar\s+[a-zA-Z0-9]+\s*;)ÚreÚsearchÚMr`   r[   r[   r\   rb   ü  s   zAntlrLexer.analyse_textN)!rL   rM   rN   rO   rP   rQ   rR   Ú_idÚ
_TOKEN_REFÚ	_RULE_REFÚ_STRING_LITERALÚ_INTr   r
   r   r   r   r   ÚClassr   rX   ÚLabelr   rU   rV   ÚConstantr   rY   r	   r   ÚPropertyrZ   rb   r[   r[   r[   r\   r"   ?  s   
ÿþ
ÿÿ
ÿþÿþ
þêú	
ÿ
ÿÿ
ÿ
ÿçêÿÿþø
ÿÿÿþøííÿçððÿè �ó )r"   c                       ó:   e Zd ZdZdZdgZddgZ‡ fdd„Zdd	„ Z‡  Z	S )
r&   z=
    `ANTLR`_ with CPP Target

    .. versionadded:: 1.1
    zANTLR With CPP Targetz	antlr-cppú*.Gú*.gc                    rd   re   )rf   rg   r   r"   rh   rk   r[   r\   rg     rm   zAntlrCppLexer.__init__c                 C   ó   t  | ¡ot d| tj¡S )Nz^\s*language\s*=\s*C\s*;©r"   rb   r{   r|   r}   r`   r[   r[   r\   rb     ó   
ÿzAntlrCppLexer.analyse_textrn   r[   r[   rk   r\   r&     ó    r&   c                       r‡   )
r(   zE
    `ANTLR`_ with Objective-C Target

    .. versionadded:: 1.1
    zANTLR With ObjectiveC Targetz
antlr-objcrˆ   r‰   c                    rd   re   )rf   rg   r   r"   rh   rk   r[   r\   rg      rm   zAntlrObjectiveCLexer.__init__c                 C   s   t  | ¡o
t d| ¡S )Nz^\s*language\s*=\s*ObjC\s*;)r"   rb   r{   r|   r`   r[   r[   r\   rb   #  s   

ÿz!AntlrObjectiveCLexer.analyse_textrn   r[   r[   rk   r\   r(     r�   r(   c                       ó<   e Zd ZdZdZddgZddgZ‡ fdd„Zd	d
„ Z‡  Z	S )r'   z<
    `ANTLR`_ with C# Target

    .. versionadded:: 1.1
    zANTLR With C# Targetzantlr-csharpzantlr-c#rˆ   r‰   c                    rd   re   )rf   rg   r   r"   rh   rk   r[   r\   rg   3  rm   zAntlrCSharpLexer.__init__c                 C   rŠ   )Nz^\s*language\s*=\s*CSharp2\s*;r‹   r`   r[   r[   r\   rb   6  rŒ   zAntlrCSharpLexer.analyse_textrn   r[   r[   rk   r\   r'   (  ó    r'   c                       r‡   )
r#   z@
    `ANTLR`_ with Python Target

    .. versionadded:: 1.1
    zANTLR With Python Targetzantlr-pythonrˆ   r‰   c                    rd   re   )rf   rg   r   r"   rh   rk   r[   r\   rg   F  rm   zAntlrPythonLexer.__init__c                 C   rŠ   )Nz^\s*language\s*=\s*Python\s*;r‹   r`   r[   r[   r\   rb   I  rŒ   zAntlrPythonLexer.analyse_textrn   r[   r[   rk   r\   r#   ;  r�   r#   c                       r‡   )
r)   z=
    `ANTLR`_ with Java Target

    .. versionadded:: 1.
    zANTLR With Java Targetz
antlr-javarˆ   r‰   c                    rd   re   )rf   rg   r   r"   rh   rk   r[   r\   rg   Y  rm   zAntlrJavaLexer.__init__c                 C   s   t  | ¡odS )NgÍÌÌÌÌÌì?)r"   rb   r`   r[   r[   r\   rb   \  s   zAntlrJavaLexer.analyse_textrn   r[   r[   rk   r\   r)   N  r�   r)   c                       rŽ   )r%   z>
    `ANTLR`_ with Ruby Target

    .. versionadded:: 1.1
    zANTLR With Ruby Targetz
antlr-rubyzantlr-rbrˆ   r‰   c                    rd   re   )rf   rg   r   r"   rh   rk   r[   r\   rg   l  rm   zAntlrRubyLexer.__init__c                 C   rŠ   )Nz^\s*language\s*=\s*Ruby\s*;r‹   r`   r[   r[   r\   rb   o  rŒ   zAntlrRubyLexer.analyse_textrn   r[   r[   rk   r\   r%   a  r�   r%   c                       r‡   )
r$   z>
    `ANTLR`_ with Perl Target

    .. versionadded:: 1.1
    zANTLR With Perl Targetz
antlr-perlrˆ   r‰   c                    rd   re   )rf   rg   r   r"   rh   rk   r[   r\   rg     rm   zAntlrPerlLexer.__init__c                 C   rŠ   )Nz^\s*language\s*=\s*Perl5\s*;r‹   r`   r[   r[   r\   rb   ‚  rŒ   zAntlrPerlLexer.analyse_textrn   r[   r[   rk   r\   r$   t  r�   r$   c                       rŽ   )r*   zF
    `ANTLR`_ with ActionScript Target

    .. versionadded:: 1.1
    zANTLR With ActionScript Targetzantlr-actionscriptzantlr-asrˆ   r‰   c                    s&   ddl m} tƒ j|tfi |¤Ž d S )Nr   )ÚActionScriptLexer)Úpygments.lexers.actionscriptr�   rf   rg   r"   )ri   rj   r�   rk   r[   r\   rg   ’  s   zAntlrActionScriptLexer.__init__c                 C   rŠ   )Nz#^\s*language\s*=\s*ActionScript\s*;r‹   r`   r[   r[   r\   rb   –  rŒ   z#AntlrActionScriptLexer.analyse_textrn   r[   r[   rk   r\   r*   ‡  s    r*   c                   @   sT  e Zd ZdZedƒdefdejdfdedfgedƒedƒded	fdedfd
ejfgedƒedƒdedfdedfdefgedƒd
ej	dfgedƒedƒde
jfde
jfdeejeƒfdefdefdefde
jfdeejeejƒfdeeej	eƒfdedfde
jfgdedfdedfdefgded	fdedfdefgd efd!ejfgd"edfgd#œ	Zd$S )%ÚTreetopBaseLexerzœ
    A base lexer for `Treetop <http://treetop.rubyforge.org/>`_ grammars.
    Not for direct use; use TreetopLexer instead.

    .. versionadded:: 1.6
    Úspacezrequire[ \t]+[^\n\r]+[\n\r]zmodule\bÚmodulez	grammar\bÚgrammarÚendrH   z[A-Z]\w*(?:::[A-Z]\w*)*zrule\bÚrulez	include\br   rt   rJ   r0   r1   z([A-Za-z_]\w*)(:)z[A-Za-z_]\w*z[()]z	[?+*/&!~]z$\[(?:\\.|\[:\^?[a-z]+:\]|[^\\\]])+\]z([0-9]*)(\.\.)([0-9]*)z(<)([^>]+)(>)r<   Úinline_moduleú\.ÚrubyrI   z[^{}]+z
[ \t\n\r]+z#[^\n]*zend\b)	rK   r”   r•   r   r—   r˜   rš   r“   r–   N)rL   rM   rN   rO   r   r   r   Ú	Namespacer   rƒ   r   rU   rV   r   r„   r   r   rW   r   rT   r   r
   rZ   r[   r[   r[   r\   r’   ›  sh    	
üûû
þÿòýýþÿ
Ér’   c                       s2   e Zd ZdZdZdgZddgZ‡ fdd„Z‡  ZS )r+   ze
    A lexer for `Treetop <http://treetop.rubyforge.org/>`_ grammars.

    .. versionadded:: 1.6
    ÚTreetopÚtreetopz	*.treetopz*.ttc                    rd   re   )rf   rg   r   r’   rh   rk   r[   r\   rg   ë  rm   zTreetopLexer.__init__)	rL   rM   rN   rO   rP   rQ   rR   rg   ro   r[   r[   rk   r\   r+   à  s    r+   c                   @   sÎ   e Zd ZdZdZdgZdgZdgZedƒedƒedƒd	e	d
fgedƒedƒedƒde
jfde
jfdejfdefde	fdedfdedfg
defgdejdfgdejfedƒdejdfdejfgdefgdœZdS )r,   z—
    Lexer for `ISO/IEC 14977 EBNF
    <http://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_Form>`_
    grammars.

    .. versionadded:: 2.0
    ÚEBNFÚebnfz*.ebnfztext/x-ebnfr6   Úcomment_startÚ
identifierr>   Ú
productionz"[^"]*"z'[^']*'z(\?[^?]*\?)z[\[\]{}(),|]ú-r?   rJ   r™   r/   z\(\*Úcommentz[^*)]z\*\)z[*)]z([a-zA-Z][\w \-]*))rK   r¢   r6   r    r¤   r¡   N)rL   rM   rN   rO   rP   rQ   rR   Ú	mimetypesr   r   r   rU   rV   r   ÚEntityr   r	   r
   Ú	Multiliner   rZ   r[   r[   r[   r\   r,   ï  sD    üöÿ
ÿ
üÿ
ár,   )9rO   r{   Úpygments.lexerr   r   r   r   r   Úpygments.tokenr   r   r	   r
   r   r   r   r   r   r   Úpygments.lexers.jvmr   Úpygments.lexers.c_cppr   r   Úpygments.lexers.objectiver   Úpygments.lexers.dr   Úpygments.lexers.dotnetr   Úpygments.lexers.rubyr   Úpygments.lexers.pythonr   Úpygments.lexers.perlr   Ú__all__r   r   r    r   r   r   r   r!   r"   r&   r(   r'   r#   r)   r%   r$   r*   r’   r+   r,   r[   r[   r[   r\   Ú<module>   sD    
0	]S DE