B
    G
\k                 @   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-2017 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               @   sB  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fde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
    ZRagelZ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)	r0   r1   r2   r3   r/   r4   r5   rootr6   N)__name__
__module____qualname____doc__namealiases	filenamesr   r
   r   r   ZHexIntegerr   Regexr   Variabler   r   r   joinr   tokens rI   rI   6lib/python3.7/site-packages/pygments/lexers/parsers.pyr   %   sX   


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*.rlr9   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: indeprI   )textrI   rI   rJ   analyse_text   s    zRagelEmbeddedLexer.analyse_textN)r=   r>   r?   r@   rA   rB   rC   rG   r   r   r   r   r   r	   rH   rL   rI   rI   rI   rJ   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    zN
    A lexer for `Ragel`_ in a Ruby host file.

    .. versionadded:: 1.1
    zRagel in Ruby Hostz
ragel-rubyzragel-rbz*.rlc                s   t t| jttf| d S )N)superr    __init__r   r   )selfoptions)	__class__rI   rJ   rN      s    zRagelRubyLexer.__init__c             C   s   d| kS )Nz@LANG: rubyrI   )rK   rI   rI   rJ   rL      s    zRagelRubyLexer.analyse_text)
r=   r>   r?   r@   rA   rB   rC   rN   rL   __classcell__rI   rI   )rQ   rJ   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 C host file.

    .. versionadded:: 1.1
    zRagel in C Hostzragel-cz*.rlc                s   t t| jttf| d S )N)rM   r   rN   r   r   )rO   rP   )rQ   rI   rJ   rN      s    zRagelCLexer.__init__c             C   s   d| kS )Nz@LANG: crI   )rK   rI   rI   rJ   rL      s    zRagelCLexer.analyse_text)
r=   r>   r?   r@   rA   rB   rC   rN   rL   rR   rI   rI   )rQ   rJ   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 D host file.

    .. versionadded:: 1.1
    zRagel in D Hostzragel-dz*.rlc                s   t t| jttf| d S )N)rM   r   rN   r   r   )rO   rP   )rQ   rI   rJ   rN     s    zRagelDLexer.__init__c             C   s   d| kS )Nz@LANG: drI   )rK   rI   rI   rJ   rL   	  s    zRagelDLexer.analyse_text)
r=   r>   r?   r@   rA   rB   rC   rN   rL   rR   rI   rI   )rQ   rJ   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   zM
    A lexer for `Ragel`_ in a CPP host file.

    .. versionadded:: 1.1
    zRagel in CPP Hostz	ragel-cppz*.rlc                s   t t| jttf| d S )N)rM   r   rN   r   r   )rO   rP   )rQ   rI   rJ   rN     s    zRagelCppLexer.__init__c             C   s   d| kS )Nz
@LANG: c++rI   )rK   rI   rI   rJ   rL     s    zRagelCppLexer.analyse_text)
r=   r>   r?   r@   rA   rB   rC   rN   rL   rR   rI   rI   )rQ   rJ   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   zV
    A lexer for `Ragel`_ in an Objective C host file.

    .. versionadded:: 1.1
    zRagel in Objective C Hostz
ragel-objcz*.rlc                s   t t| jttf| d S )N)rM   r   rN   r   r   )rO   rP   )rQ   rI   rJ   rN   *  s    zRagelObjectiveCLexer.__init__c             C   s   d| kS )Nz@LANG: objcrI   )rK   rI   rI   rJ   rL   /  s    z!RagelObjectiveCLexer.analyse_text)
r=   r>   r?   r@   rA   rB   rC   rN   rL   rR   rI   rI   )rQ   rJ   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!   zN
    A lexer for `Ragel`_ in a Java host file.

    .. versionadded:: 1.1
    zRagel in Java Hostz
ragel-javaz*.rlc                s   t t| jttf| d S )N)rM   r!   rN   r   r   )rO   rP   )rQ   rI   rJ   rN   >  s    zRagelJavaLexer.__init__c             C   s   d| kS )Nz@LANG: javarI   )rK   rI   rI   rJ   rL   B  s    zRagelJavaLexer.analyse_text)
r=   r>   r?   r@   rA   rB   rC   rN   rL   rR   rI   rI   )rQ   rJ   r!   3  s   c               @   sJ  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fd-e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/
    ZANTLRZantlrz[A-Za-z]\w*z[A-Z]\w*z[a-z]\w*z\'(?:\\\\|\\\'|[^\']*)\'z[0-9]+z\s+z//.*$z/\*(.|\n)*?\*/r0   r1   z*(lexer|parser|tree)?(\s*)(grammar\b)(\s*)(z)(;)z	options\brP   ztokens\brH   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*)(;)r.   z'(\\\\|\\'|[^'])*'z"(\\\\|\\"|[^"])*"z<<([^>]|>[^>])>>z\$?[A-Z_]\w*z\$?[a-z_]\w*z-(\+|\||->|=>|=|\(|\)|\.\.|\.|\?|\*|\^|!|\#|~)r-   r8   r9   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(\\\\|\\\]|\\\[|[^\[\]])+)
r0   r1   r<   rT   zrule-prelimsz	rule-altsrH   rP   rS   znested-arg-actionc             C   s   t d| t jS )Nz^\s*grammar\s+[a-zA-Z0-9]+\s*;)researchM)rK   rI   rI   rJ   rL     s    zAntlrLexer.analyse_textN)r=   r>   r?   r@   rA   rB   rC   Z_idZ
_TOKEN_REFZ	_RULE_REFZ_STRING_LITERALZ_INTr   r
   r   r   r   r   Classr   rF   Labelr   ZConstantr   rG   r	   r   ZPropertyrH   rL   rI   rI   rI   rJ   r"   F  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 CPP Target

    .. versionadded:: 1.1
    zANTLR With CPP Targetz	antlr-cppz*.Gz*.gc                s   t t| jttf| d S )N)rM   r&   rN   r   r"   )rO   rP   )rQ   rI   rJ   rN   *  s    zAntlrCppLexer.__init__c             C   s   t | otd| tjS )Nz^\s*language\s*=\s*C\s*;)r"   rL   rV   rW   rX   )rK   rI   rI   rJ   rL   -  s    
zAntlrCppLexer.analyse_text)
r=   r>   r?   r@   rA   rB   rC   rN   rL   rR   rI   rI   )rQ   rJ   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(   zE
    `ANTLR`_ with Objective-C Target

    .. versionadded:: 1.1
    zANTLR With ObjectiveC Targetz
antlr-objcz*.Gz*.gc                s   t t| jttf| d S )N)rM   r(   rN   r   r"   )rO   rP   )rQ   rI   rJ   rN   =  s    zAntlrObjectiveCLexer.__init__c             C   s   t | otd| S )Nz^\s*language\s*=\s*ObjC\s*;)r"   rL   rV   rW   )rK   rI   rI   rJ   rL   A  s    
z!AntlrObjectiveCLexer.analyse_text)
r=   r>   r?   r@   rA   rB   rC   rN   rL   rR   rI   rI   )rQ   rJ   r(   2  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 C# Target

    .. versionadded:: 1.1
    zANTLR With C# Targetzantlr-csharpzantlr-c#z*.Gz*.gc                s   t t| jttf| d S )N)rM   r'   rN   r   r"   )rO   rP   )rQ   rI   rJ   rN   Q  s    zAntlrCSharpLexer.__init__c             C   s   t | otd| tjS )Nz^\s*language\s*=\s*CSharp2\s*;)r"   rL   rV   rW   rX   )rK   rI   rI   rJ   rL   U  s    
zAntlrCSharpLexer.analyse_text)
r=   r>   r?   r@   rA   rB   rC   rN   rL   rR   rI   rI   )rQ   rJ   r'   F  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 t| jttf| d S )N)rM   r#   rN   r   r"   )rO   rP   )rQ   rI   rJ   rN   e  s    zAntlrPythonLexer.__init__c             C   s   t | otd| tjS )Nz^\s*language\s*=\s*Python\s*;)r"   rL   rV   rW   rX   )rK   rI   rI   rJ   rL   i  s    
zAntlrPythonLexer.analyse_text)
r=   r>   r?   r@   rA   rB   rC   rN   rL   rR   rI   rI   )rQ   rJ   r#   Z  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 t| jttf| d S )N)rM   r)   rN   r   r"   )rO   rP   )rQ   rI   rJ   rN   y  s    zAntlrJavaLexer.__init__c             C   s   t | odS )Ng?)r"   rL   )rK   rI   rI   rJ   rL   }  s    zAntlrJavaLexer.analyse_text)
r=   r>   r?   r@   rA   rB   rC   rN   rL   rR   rI   rI   )rQ   rJ   r)   n  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 t| jttf| d S )N)rM   r%   rN   r   r"   )rO   rP   )rQ   rI   rJ   rN     s    zAntlrRubyLexer.__init__c             C   s   t | otd| tjS )Nz^\s*language\s*=\s*Ruby\s*;)r"   rL   rV   rW   rX   )rK   rI   rI   rJ   rL     s    
zAntlrRubyLexer.analyse_text)
r=   r>   r?   r@   rA   rB   rC   rN   rL   rR   rI   rI   )rQ   rJ   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 Perl Target

    .. versionadded:: 1.1
    zANTLR With Perl Targetz
antlr-perlz*.Gz*.gc                s   t t| jttf| d S )N)rM   r$   rN   r   r"   )rO   rP   )rQ   rI   rJ   rN     s    zAntlrPerlLexer.__init__c             C   s   t | otd| tjS )Nz^\s*language\s*=\s*Perl5\s*;)r"   rL   rV   rW   rX   )rK   rI   rI   rJ   rL     s    
zAntlrPerlLexer.analyse_text)
r=   r>   r?   r@   rA   rB   rC   rN   rL   rR   rI   rI   )rQ   rJ   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*   zF
    `ANTLR`_ with ActionScript Target

    .. versionadded:: 1.1
    zANTLR With ActionScript Targetzantlr-aszantlr-actionscriptz*.Gz*.gc                s&   ddl m} tt| j|tf| d S )Nr   )ActionScriptLexer)Zpygments.lexers.actionscriptr[   rM   r*   rN   r"   )rO   rP   r[   )rQ   rI   rJ   rN     s    zAntlrActionScriptLexer.__init__c             C   s   t | otd| tjS )Nz#^\s*language\s*=\s*ActionScript\s*;)r"   rL   rV   rW   rX   )rK   rI   rI   rJ   rL     s    
z#AntlrActionScriptLexer.analyse_text)
r=   r>   r?   r@   rA   rB   rC   rN   rL   rR   rI   rI   )rQ   rJ   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 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<   r^   r_   r   ra   rb   rc   r]   r`   N)r=   r>   r?   r@   r   r   r   Z	Namespacer   rY   r   DoubleSingler   rZ   r   r   rE   r   rD   r   r
   rH   rI   rI   rI   rJ   r\     sP   




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
    ZTreetopZtreetopz	*.treetopz*.ttc                s   t t| jttf| d S )N)rM   r+   rN   r   r\   )rO   rP   )rQ   rI   rJ   rN     s    zTreetopLexer.__init__)	r=   r>   r?   r@   rA   rB   rC   rN   rR   rI   rI   )rQ   rJ   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
    ZEBNFZebnfz*.ebnfztext/x-ebnfr0   comment_start
identifierr7   
productionz"[^"]*"z'[^']*'z(\?[^?]*\?)z[\[\]{}(),|]-r8   z#popz\.z\s+z\(\*commentz[^*)]z\*\)z[*)]z([a-zA-Z][\w \-]*))r<   rh   r0   rf   rj   rg   N)r=   r>   r?   r@   rA   rB   rC   Z	mimetypesr   r   r   rd   re   r   ZEntityr   r	   r
   Z	Multiliner   rH   rI   rI   rI   rJ   r,     s4   



)9r@   rV   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,   rI   rI   rI   rJ   <module>
   sN   0]S ZE