U
    ]gg                     @   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# ddd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Z0G d,d deZ1G d-d deZ2G d.d deZ3G d/d deZ4G d0d deZ5G d1d2 d2eZ6G d3d deZ7G d4d deZ8dS )5z
    pygments.lexers.parsers
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for parser generators.

    :copyright: Copyright 2006-2025 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                   @   sN  e Zd ZdZdZdZdgZg Zd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d0fd1ed2fgd3	Zd4S )5r   zA 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).

    ZRagel&http://www.colm.net/open-source/ragel/Zragel1.1\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urlaliases	filenamesversion_addedr   r
   r   r   ZHexIntegerr   DoubleSingleRegexr   Variabler   r   r   joinr   tokens r\   r\   ;/tmp/pip-unpacked-wheel-zak7uw41/pygments/lexers/parsers.pyr   #   sx   c                   @   s   e Zd ZdZdZdgZdgZdZd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.
    zEmbedded Ragelzragel-em*.rlr-   r.   r@   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   s   d| kS )Nz@LANG: indepr\   textr\   r\   r]   analyse_text   s    zRagelEmbeddedLexer.analyse_textN)rL   rM   rN   rO   rP   rR   rS   rQ   rT   rZ   r   r   r   r   r   r	   r[   rb   r\   r\   r\   r]   r      sJ     Ac                       sB   e Zd ZdZdZddgZdgZdZdZ fdd	Z	d
d Z
  ZS )r    z0
    A lexer for Ragel in a Ruby host file.
    zRagel in Ruby Hostz
ragel-rubyzragel-rbr^   r-   r.   c                    s   t  jttf| d S N)super__init__r   r   selfoptions	__class__r\   r]   re      s    zRagelRubyLexer.__init__c                 C   s   d| kS )Nz@LANG: rubyr\   r`   r\   r\   r]   rb      s    zRagelRubyLexer.analyse_textrL   rM   rN   rO   rP   rR   rS   rQ   rT   re   rb   __classcell__r\   r\   ri   r]   r       s   c                       s@   e Zd ZdZdZdgZdgZdZdZ fddZ	d	d
 Z
  ZS )r   z-
    A lexer for Ragel in a C host file.
    zRagel in C Hostzragel-cr^   r-   r.   c                    s   t  jttf| d S rc   )rd   re   r   r   rf   ri   r\   r]   re      s    zRagelCLexer.__init__c                 C   s   d| kS )Nz@LANG: cr\   r`   r\   r\   r]   rb      s    zRagelCLexer.analyse_textrk   r\   r\   ri   r]   r      s   c                       s@   e Zd ZdZdZdgZdgZdZdZ fddZ	d	d
 Z
  ZS )r   z-
    A lexer for Ragel in a D host file.
    zRagel in D Hostzragel-dr^   r-   r.   c                    s   t  jttf| d S rc   )rd   re   r   r   rf   ri   r\   r]   re     s    zRagelDLexer.__init__c                 C   s   d| kS )Nz@LANG: dr\   r`   r\   r\   r]   rb     s    zRagelDLexer.analyse_textrk   r\   r\   ri   r]   r      s   c                       s@   e Zd ZdZdZdgZdgZdZdZ fddZ	d	d
 Z
  ZS )r   z/
    A lexer for Ragel in a C++ host file.
    zRagel in CPP Hostz	ragel-cppr^   r-   r.   c                    s   t  jttf| d S rc   )rd   re   r   r   rf   ri   r\   r]   re     s    zRagelCppLexer.__init__c                 C   s   d| kS )Nz
@LANG: c++r\   r`   r\   r\   r]   rb     s    zRagelCppLexer.analyse_textrk   r\   r\   ri   r]   r   
  s   c                       s@   e Zd ZdZdZdgZdgZdZdZ fddZ	d	d
 Z
  ZS )r   z8
    A lexer for Ragel in an Objective C host file.
    zRagel in Objective C Hostz
ragel-objcr^   r-   r.   c                    s   t  jttf| d S rc   )rd   re   r   r   rf   ri   r\   r]   re   '  s    zRagelObjectiveCLexer.__init__c                 C   s   d| kS )Nz@LANG: objcr\   r`   r\   r\   r]   rb   *  s    z!RagelObjectiveCLexer.analyse_textrk   r\   r\   ri   r]   r     s   c                       s@   e Zd ZdZdZdgZdgZdZdZ fddZ	d	d
 Z
  ZS )r!   z0
    A lexer for Ragel in a Java host file.
    zRagel in Java Hostz
ragel-javar^   r-   r.   c                    s   t  jttf| d S rc   )rd   re   r   r   rf   ri   r\   r]   re   9  s    zRagelJavaLexer.__init__c                 C   s   d| kS )Nz@LANG: javar\   r`   r\   r\   r]   rb   <  s    zRagelJavaLexer.analyse_textrk   r\   r\   ri   r]   r!   .  s   c                   @   sV  e Zd ZdZdZdgZg ZdZd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d0efd1ejfd2ejfd3efd4efd#ed$fd%edfd5ed!fgededd%efd6e
 d7 e d8 eejeeeeeefd9ed!fgededd%efd6e	 d: d;e	eed<f d, eejeeeeeefd9ed!fgd6d;d= d> efd?eeefd@eejeej fd%edAfd9ed!fgd6d;dB d> efd#edAfdCed!fd@eejeej fdDefgdE
Z!dFdG Z"dHS )Ir"   z{
    Generic ANTLR Lexer.
    Should not be called directly, instead
    use DelegatingLexer for your target language.
    ZANTLRZantlrhttps://www.antlr.orgr.   z[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\brh   ztokens\br[   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   rp   rr   rq   r[   rh   ro   rs   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   rR   rS   rQ   rT   Z_idZ
_TOKEN_REFZ	_RULE_REFZ_STRING_LITERALZ_INTr   r
   r   r   r   r   Classr   rY   Labelr   rV   rW   Constantr   rZ   r	   r   ZPropertyr[   rb   r\   r\   r\   r]   r"   @  s(  

  
	



   
    )c                       sB   e Zd ZdZdZdgZddgZdZdZ fdd	Z	d
d Z
  ZS )r&   z
    ANTLR with C++ Target
    zANTLR With CPP Targetz	antlr-cpp*.G*.grm   r.   c                    s   t  jttf| d S rc   )rd   re   r   r"   rf   ri   r\   r]   re     s    zAntlrCppLexer.__init__c                 C   s   t | otd| tjS )Nz^\s*language\s*=\s*C\s*;r"   rb   ru   rv   rw   r`   r\   r\   r]   rb     s    
zAntlrCppLexer.analyse_textrk   r\   r\   ri   r]   r&     s   c                       sB   e Zd ZdZdZdgZddgZdZdZ fdd	Z	d
d Z
  ZS )r(   z'
    ANTLR with Objective-C Target
    zANTLR With ObjectiveC Targetz
antlr-objcr{   r|   rm   r.   c                    s   t  jttf| d S rc   )rd   re   r   r"   rf   ri   r\   r]   re     s    zAntlrObjectiveCLexer.__init__c                 C   s   t | otd| S )Nz^\s*language\s*=\s*ObjC\s*;)r"   rb   ru   rv   r`   r\   r\   r]   rb   "  s    

z!AntlrObjectiveCLexer.analyse_textrk   r\   r\   ri   r]   r(     s   c                       sD   e Zd ZdZdZddgZddgZdZdZ fd	d
Z	dd Z
  ZS )r'   z
    ANTLR with C# Target
    zANTLR With C# Targetzantlr-csharpzantlr-c#r{   r|   rm   r.   c                    s   t  jttf| d S rc   )rd   re   r   r"   rf   ri   r\   r]   re   2  s    zAntlrCSharpLexer.__init__c                 C   s   t | otd| tjS )Nz^\s*language\s*=\s*CSharp2\s*;r}   r`   r\   r\   r]   rb   5  s    
zAntlrCSharpLexer.analyse_textrk   r\   r\   ri   r]   r'   '  s   c                       sB   e Zd ZdZdZdgZddgZdZdZ fdd	Z	d
d Z
  ZS )r#   z"
    ANTLR with Python Target
    zANTLR With Python Targetzantlr-pythonr{   r|   rm   r.   c                    s   t  jttf| d S rc   )rd   re   r   r"   rf   ri   r\   r]   re   E  s    zAntlrPythonLexer.__init__c                 C   s   t | otd| tjS )Nz^\s*language\s*=\s*Python\s*;r}   r`   r\   r\   r]   rb   H  s    
zAntlrPythonLexer.analyse_textrk   r\   r\   ri   r]   r#   :  s   c                       sB   e Zd ZdZdZdgZddgZdZdZ fdd	Z	d
d Z
  ZS )r)   z 
    ANTLR with Java Target
    zANTLR With Java Targetz
antlr-javar{   r|   rm   r.   c                    s   t  jttf| d S rc   )rd   re   r   r"   rf   ri   r\   r]   re   X  s    zAntlrJavaLexer.__init__c                 C   s   t | odS )Ng?)r"   rb   r`   r\   r\   r]   rb   [  s    zAntlrJavaLexer.analyse_textrk   r\   r\   ri   r]   r)   M  s   c                       sD   e Zd ZdZdZddgZddgZdZdZ fd	d
Z	dd Z
  ZS )r%   z 
    ANTLR with Ruby Target
    zANTLR With Ruby Targetz
antlr-rubyzantlr-rbr{   r|   rm   r.   c                    s   t  jttf| d S rc   )rd   re   r   r"   rf   ri   r\   r]   re   k  s    zAntlrRubyLexer.__init__c                 C   s   t | otd| tjS )Nz^\s*language\s*=\s*Ruby\s*;r}   r`   r\   r\   r]   rb   n  s    
zAntlrRubyLexer.analyse_textrk   r\   r\   ri   r]   r%   `  s   c                       sB   e Zd ZdZdZdgZddgZdZdZ fdd	Z	d
d Z
  ZS )r$   z 
    ANTLR with Perl Target
    zANTLR With Perl Targetz
antlr-perlr{   r|   rm   r.   c                    s   t  jttf| d S rc   )rd   re   r   r"   rf   ri   r\   r]   re   ~  s    zAntlrPerlLexer.__init__c                 C   s   t | otd| tjS )Nz^\s*language\s*=\s*Perl5\s*;r}   r`   r\   r\   r]   rb     s    
zAntlrPerlLexer.analyse_textrk   r\   r\   ri   r]   r$   s  s   c                       sD   e Zd ZdZdZddgZddgZdZdZ fd	d
Z	dd Z
  ZS )r*   z(
    ANTLR with ActionScript Target
    zANTLR With ActionScript Targetzantlr-actionscriptzantlr-asr{   r|   rm   r.   c                    s"   ddl m} t j|tf| d S )Nr   )ActionScriptLexer)Zpygments.lexers.actionscriptr~   rd   re   r"   )rg   rh   r~   ri   r\   r]   re     s    zAntlrActionScriptLexer.__init__c                 C   s   t | otd| tjS )Nz#^\s*language\s*=\s*ActionScript\s*;r}   r`   r\   r\   r]   rb     s    
z#AntlrActionScriptLexer.analyse_textrk   r\   r\   ri   r]   r*     s   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 :class:`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   rn   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   rx   r   rV   rW   r   ry   r   r   rX   r   rU   r   r
   r[   r\   r\   r\   r]   r     sf   	

r   c                       s:   e Zd ZdZdZdgZddgZdZdZ fdd	Z	  Z
S )
r+   z'
    A lexer for Treetop grammars.
    ZTreetopZtreetopz	*.treetopz*.ttz!https://cjheath.github.io/treetopz1.6c                    s   t  jttf| d S rc   )rd   re   r   r   rf   ri   r\   r]   re     s    zTreetopLexer.__init__)rL   rM   rN   rO   rP   rR   rS   rQ   rT   re   rl   r\   r\   ri   r]   r+     s   c                   @   s   e Zd ZdZdZdgZdgZdgZdZd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
    <https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_Form>`_
    grammars.
    ZEBNFZebnfz*.ebnfztext/x-ebnfz?https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_Formz2.0r6   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   rR   rS   	mimetypesrQ   rT   r   r   r   rV   rW   r   Entityr   r	   r
   Z	Multiliner   r[   r\   r\   r\   r]   r,     sF   

)9rO   ru   Zpygments.lexerr   r   r   r   r   Zpygments.tokenr   r   r	   r
   r   r   r   r   r   r   Zpygments.lexers.jvmr   Zpygments.lexers.c_cppr   r   Zpygments.lexers.objectiver   Zpygments.lexers.dr   Zpygments.lexers.dotnetr   Zpygments.lexers.rubyr   Zpygments.lexers.pythonr   Z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>   sb   
0         	^S BE