B
    (d0e                 @   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-2023 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               @   sJ  e Zd 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d0ed1fgd2	Zd3S )4r   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).

    .. versionadded:: 1.1

    Ragelz&http://www.colm.net/open-source/ragel/ragelz\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'(\\\\|\\[^\\]|[^'\\])*'z\[(\\\\|\\[^\\]|[^\\\]])*\]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=;(|)	z[^{}\'"/#]+z[^\\]\\[{}]z"(\\\\|\\[^\\]|[^"\\])*"z'(\\\\|\\[^\\]|[^'\\])*'z//.*$\n?z/\*(.|\n)*?\*/z\#.*$\n?z/(?!\*)(\\\\|\\[^\\]|[^/\\])*//z)+z#pushz\}z#pop)	r2   r3   r4   r5   r1   r6   r7   rootr8   N)__name__
__module____qualname____doc__nameurlaliases	filenamesr   r
   r   r   HexIntegerr   DoubleSingleRegexr   Variabler   r   r   joinr   tokens rO   rO   d/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/pygments/lexers/parsers.pyr   #   sZ   


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-emz*.rlr;   r<   )	z
[^%\'"/#]+z%(?=[^%]|$)z"(\\\\|\\[^\\]|[^"\\])*"z'(\\\\|\\[^\\]|[^'\\])*'z/\*(.|\n)*?\*/z//.*$\n?z\#.*$\n?z/(?!\*)(\\\\|\\[^\\]|[^/\\])*/r=   z)+z(%%)(?![{%])(.*)($|;)(\n?)z(%%%%|%%)\{zmulti-line-fsm)z[^}\'"\[/#]z\}(?=[^%]|$)z\}%(?=[^%]|$)z[^\\]\\[{}]z(>|\$|%|<|@|<>)/z /(?!\*)(\\\\|\\[^\\]|[^/\\])*/\*z/(?=[^/*]|$)z"(\\\\|\\[^\\]|[^"\\])*"z'(\\\\|\\[^\\]|[^'\\])*'z\[(\\\\|\\[^\\]|[^\]\\])*\]z/\*(.|\n)*?\*/z//.*$\n?z\#.*$\n?z\}%%z#pop)r>   zmulti-line-fsmc             C   s   d| kS )Nz@LANG: indeprO   )textrO   rO   rP   analyse_text   s    zRagelEmbeddedLexer.analyse_textN)r?   r@   rA   rB   rC   rE   rF   rM   r   r   r   r   r   r	   rN   rR   rO   rO   rO   rP   r      s   
!4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    zK
    A lexer for Ragel in a Ruby host file.

    .. versionadded:: 1.1
    zRagel in Ruby Hostz
ragel-rubyzragel-rbz*.rlc                s   t  jttf| d S )N)super__init__r   r   )selfoptions)	__class__rO   rP   rT      s    zRagelRubyLexer.__init__c             C   s   d| kS )Nz@LANG: rubyrO   )rQ   rO   rO   rP   rR      s    zRagelRubyLexer.analyse_text)
r?   r@   rA   rB   rC   rE   rF   rT   rR   __classcell__rO   rO   )rW   rP   r       s   c                   s8   e Zd ZdZdZdgZdgZ fddZdd Z  Z	S )	r   zH
    A lexer for Ragel in a C host file.

    .. versionadded:: 1.1
    zRagel in C Hostzragel-cz*.rlc                s   t  jttf| d S )N)rS   rT   r   r   )rU   rV   )rW   rO   rP   rT      s    zRagelCLexer.__init__c             C   s   d| kS )Nz@LANG: crO   )rQ   rO   rO   rP   rR      s    zRagelCLexer.analyse_text)
r?   r@   rA   rB   rC   rE   rF   rT   rR   rX   rO   rO   )rW   rP   r      s   c                   s8   e Zd ZdZdZdgZdgZ fddZdd Z  Z	S )	r   zH
    A lexer for Ragel in a D host file.

    .. versionadded:: 1.1
    zRagel in D Hostzragel-dz*.rlc                s   t  jttf| d S )N)rS   rT   r   r   )rU   rV   )rW   rO   rP   rT     s    zRagelDLexer.__init__c             C   s   d| kS )Nz@LANG: drO   )rQ   rO   rO   rP   rR     s    zRagelDLexer.analyse_text)
r?   r@   rA   rB   rC   rE   rF   rT   rR   rX   rO   rO   )rW   rP   r      s   c                   s8   e Zd ZdZdZdgZdgZ fddZdd Z  Z	S )	r   zJ
    A lexer for Ragel in a C++ host file.

    .. versionadded:: 1.1
    zRagel in CPP Hostz	ragel-cppz*.rlc                s   t  jttf| d S )N)rS   rT   r   r   )rU   rV   )rW   rO   rP   rT     s    zRagelCppLexer.__init__c             C   s   d| kS )Nz
@LANG: c++rO   )rQ   rO   rO   rP   rR     s    zRagelCppLexer.analyse_text)
r?   r@   rA   rB   rC   rE   rF   rT   rR   rX   rO   rO   )rW   rP   r     s   c                   s8   e Zd ZdZdZdgZdgZ fddZdd Z  Z	S )	r   zS
    A lexer for Ragel in an Objective C host file.

    .. versionadded:: 1.1
    zRagel in Objective C Hostz
ragel-objcz*.rlc                s   t  jttf| d S )N)rS   rT   r   r   )rU   rV   )rW   rO   rP   rT   (  s    zRagelObjectiveCLexer.__init__c             C   s   d| kS )Nz@LANG: objcrO   )rQ   rO   rO   rP   rR   +  s    z!RagelObjectiveCLexer.analyse_text)
r?   r@   rA   rB   rC   rE   rF   rT   rR   rX   rO   rO   )rW   rP   r     s   c                   s8   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 Java host file.

    .. versionadded:: 1.1
    zRagel in Java Hostz
ragel-javaz*.rlc                s   t  jttf| d S )N)rS   rT   r   r   )rU   rV   )rW   rO   rP   rT   :  s    zRagelJavaLexer.__init__c             C   s   d| kS )Nz@LANG: javarO   )rQ   rO   rO   rP   rR   =  s    zRagelJavaLexer.analyse_text)
r?   r@   rA   rB   rC   rE   rF   rT   rR   rX   rO   rO   )rW   rP   r!   /  s   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*z[A-Z]\w*z[a-z]\w*z\'(?:\\\\|\\\'|[^\']*)\'z[0-9]+z\s+z//.*$z/\*(.|\n)*?\*/r2   r3   z*(lexer|parser|tree)?(\s*)(grammar\b)(\s*)(z)(;)z	options\brV   ztokens\brN   z(scope)(\s*)(z
)(\s*)(\{)actionz(catch|finally)\b	exceptionz(@z)(\s*)(::)?(\s*)(z0((?:protected|private|public|fragment)\b)?(\s*)(z)(!)?)z	rule-altszrule-prelimsz\nz#popz\sz\[znested-arg-actionz\{z	returns\bz(throws)(\s+)()z	(,)(\s*)(z(scope)(\s+)(\{)z(scope)(\s+)(z	)(\s*)(;)r0   z"(\\\\|\\[^\\]|[^"\\])*"z'(\\\\|\\[^\\]|[^'\\])*'z<<([^>]|>[^>])>>z\$?[A-Z_]\w*z\$?[a-z_]\w*z-(\+|\||->|=>|=|\(|\)|\.\.|\.|\?|\*|\^|!|\#|~)r/   r:   r;   z)(\s*)(=)?(\s*)(z
)?(\s*)(;)z\}z)(\s*)(=)(\s*)(r<   z\*)z[^${}\'"/\\]+z"(\\\\|\\[^\\]|[^"\\])*"z'(\\\\|\\[^\\]|[^'\\])*'z//.*$\n?z/\*(.|\n)*?\*/z/(?!\*)(\\\\|\\[^\\]|[^/\\])*/z\\(?!%)r=   z)+z(\\)(%)z(\$[a-zA-Z]+)(\.?)(text|value)?z#push)z[^$\[\]\'"/]+z"(\\\\|\\[^\\]|[^"\\])*"z'(\\\\|\\[^\\]|[^'\\])*'z//.*$\n?z/\*(.|\n)*?\*/z/(?!\*)(\\\\|\\[^\\]|[^/\\])*/r=   z\]z(\\\\|\\\]|\\\[|[^\[\]])+)
r2   r3   r>   r\   zrule-prelimsz	rule-altsrN   rV   r[   znested-arg-actionc             C   s   t d| t jS )Nz^\s*grammar\s+[a-zA-Z0-9]+\s*;)researchM)rQ   rO   rO   rP   rR     s    zAntlrLexer.analyse_textN)!r?   r@   rA   rB   rC   rE   rF   _idZ
_TOKEN_REFZ	_RULE_REFZ_STRING_LITERALZ_INTr   r
   r   r   r   r   Classr   rL   Labelr   rI   rJ   Constantr   rM   r	   r   PropertyrN   rR   rO   rO   rO   rP   r"   A  s   	











 


c                   s:   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 C++ Target

    .. versionadded:: 1.1
    zANTLR With CPP Targetz	antlr-cppz*.Gz*.gc                s   t  jttf| d S )N)rS   rT   r   r"   )rU   rV   )rW   rO   rP   rT     s    zAntlrCppLexer.__init__c             C   s   t | otd| tjS )Nz^\s*language\s*=\s*C\s*;)r"   rR   r^   r_   r`   )rQ   rO   rO   rP   rR     s    
zAntlrCppLexer.analyse_text)
r?   r@   rA   rB   rC   rE   rF   rT   rR   rX   rO   rO   )rW   rP   r&     s   c                   s:   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(   zB
    ANTLR with Objective-C Target

    .. versionadded:: 1.1
    zANTLR With ObjectiveC Targetz
antlr-objcz*.Gz*.gc                s   t  jttf| d S )N)rS   rT   r   r"   )rU   rV   )rW   rO   rP   rT   "  s    zAntlrObjectiveCLexer.__init__c             C   s   t | otd| S )Nz^\s*language\s*=\s*ObjC\s*;)r"   rR   r^   r_   )rQ   rO   rO   rP   rR   %  s    
z!AntlrObjectiveCLexer.analyse_text)
r?   r@   rA   rB   rC   rE   rF   rT   rR   rX   rO   rO   )rW   rP   r(     s   c                   s<   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'   z9
    ANTLR with C# Target

    .. versionadded:: 1.1
    zANTLR With C# Targetzantlr-csharpzantlr-c#z*.Gz*.gc                s   t  jttf| d S )N)rS   rT   r   r"   )rU   rV   )rW   rO   rP   rT   5  s    zAntlrCSharpLexer.__init__c             C   s   t | otd| tjS )Nz^\s*language\s*=\s*CSharp2\s*;)r"   rR   r^   r_   r`   )rQ   rO   rO   rP   rR   8  s    
zAntlrCSharpLexer.analyse_text)
r?   r@   rA   rB   rC   rE   rF   rT   rR   rX   rO   rO   )rW   rP   r'   *  s   c                   s:   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 Python Target

    .. versionadded:: 1.1
    zANTLR With Python Targetzantlr-pythonz*.Gz*.gc                s   t  jttf| d S )N)rS   rT   r   r"   )rU   rV   )rW   rO   rP   rT   H  s    zAntlrPythonLexer.__init__c             C   s   t | otd| tjS )Nz^\s*language\s*=\s*Python\s*;)r"   rR   r^   r_   r`   )rQ   rO   rO   rP   rR   K  s    
zAntlrPythonLexer.analyse_text)
r?   r@   rA   rB   rC   rE   rF   rT   rR   rX   rO   rO   )rW   rP   r#   =  s   c                   s:   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 Java Target

    .. versionadded:: 1.
    zANTLR With Java Targetz
antlr-javaz*.Gz*.gc                s   t  jttf| d S )N)rS   rT   r   r"   )rU   rV   )rW   rO   rP   rT   [  s    zAntlrJavaLexer.__init__c             C   s   t | odS )Ng?)r"   rR   )rQ   rO   rO   rP   rR   ^  s    zAntlrJavaLexer.analyse_text)
r?   r@   rA   rB   rC   rE   rF   rT   rR   rX   rO   rO   )rW   rP   r)   P  s   c                   s<   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 Ruby Target

    .. versionadded:: 1.1
    zANTLR With Ruby Targetz
antlr-rubyzantlr-rbz*.Gz*.gc                s   t  jttf| d S )N)rS   rT   r   r"   )rU   rV   )rW   rO   rP   rT   n  s    zAntlrRubyLexer.__init__c             C   s   t | otd| tjS )Nz^\s*language\s*=\s*Ruby\s*;)r"   rR   r^   r_   r`   )rQ   rO   rO   rP   rR   q  s    
zAntlrRubyLexer.analyse_text)
r?   r@   rA   rB   rC   rE   rF   rT   rR   rX   rO   rO   )rW   rP   r%   c  s   c                   s:   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 Perl Target

    .. versionadded:: 1.1
    zANTLR With Perl Targetz
antlr-perlz*.Gz*.gc                s   t  jttf| d S )N)rS   rT   r   r"   )rU   rV   )rW   rO   rP   rT     s    zAntlrPerlLexer.__init__c             C   s   t | otd| tjS )Nz^\s*language\s*=\s*Perl5\s*;)r"   rR   r^   r_   r`   )rQ   rO   rO   rP   rR     s    
zAntlrPerlLexer.analyse_text)
r?   r@   rA   rB   rC   rE   rF   rT   rR   rX   rO   rO   )rW   rP   r$   v  s   c                   s<   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*   zC
    ANTLR with ActionScript Target

    .. versionadded:: 1.1
    zANTLR With ActionScript Targetzantlr-actionscriptzantlr-asz*.Gz*.gc                s"   ddl m} t j|tf| d S )Nr   )ActionScriptLexer)Zpygments.lexers.actionscriptrf   rS   rT   r"   )rU   rV   rf   )rW   rO   rP   rT     s    zAntlrActionScriptLexer.__init__c             C   s   t | otd| tjS )Nz#^\s*language\s*=\s*ActionScript\s*;)r"   rR   r^   r_   r`   )rQ   rO   rO   rP   rR     s    
z#AntlrActionScriptLexer.analyse_text)
r?   r@   rA   rB   rC   rE   rF   rT   rR   rX   rO   rO   )rW   rP   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endz#pushz[A-Z]\w*(?:::[A-Z]\w*)*zrule\brulez	include\br   z[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]*zend\b)	r>   ri   rj   r   rl   rm   rn   rh   rk   N)r?   r@   rA   rB   r   r   r   	Namespacer   rb   r   rI   rJ   r   rc   r   r   rK   r   rH   r   r
   rN   rO   rO   rO   rP   rg     sP   




rg   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                s   t  jttf| d S )N)rS   rT   r   rg   )rU   rV   )rW   rO   rP   rT     s    zTreetopLexer.__init__)	r?   r@   rA   rB   rC   rE   rF   rT   rX   rO   rO   )rW   rP   r+     s
   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-ebnfr2   comment_start
identifierr9   
productionz"[^"]*"z'[^']*'z(\?[^?]*\?)z[\[\]{}(),|]-r:   z#popz\.z\s+z\(\*commentz[^*)]z\*\)z[*)]z([a-zA-Z][\w \-]*))r>   rv   r2   rt   rx   ru   N)r?   r@   rA   rB   rC   rE   rF   	mimetypesr   r   r   rI   rJ   r   Entityr   r	   r
   	Multiliner   rN   rO   rO   rO   rP   r,     s4   



)9rB   r^   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*   rg   r+   r,   rO   rO   rO   rP   <module>	   sN   0_S DE