
    |e0e                        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e      Z% G d de      Z& G d de      Z' G d de      Z( G d de      Z) G d de      Z* G d de      Z+ G d de      Z, G d de      Z- G d  d!e      Z. G d" d#e      Z/ G d$ d%e      Z0 G d& d'e      Z1 G d( d)e      Z2 G d* d+e      Z3 G d, d-e      Z4 G d. d/e      Z5 G d0 d1e      Z6 G d2 d3e      Z7 G d4 d5e      Z8y)6z
    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                   
   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,j/                  d-      z   d.z   efd'ed/fd0ed1fgd2	Zy3)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/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[^{}\'"/#]+[^\\]\\[{}]r2   r3   //.*$\n?/\*(.|\n)*?\*/\#.*$\n?r4   /)+#push\}#pop)	r8   r9   r:   r;   r7   r<   r=   rootr?   N)__name__
__module____qualname____doc__nameurlaliases	filenamesr   r   r   r   HexIntegerr   DoubleSingleRegexr   Variabler   r   r   joinr	   tokens     9/usr/lib/python3/dist-packages/pygments/lexers/parsers.pyr   r   #   s    D
2CiGI Z 
 w
 +G40':BGLCWM	
 

+V^^,

 )&--8(&--8+V4.=	
 dmm,
 8(#H%8H((3((3*H5'2*H5(#*H5hx 
" JL!JJIM"K K(8;
 DII   " #" #& K)K(+
mMFr_   r   c                      e Zd ZdZdZdgZdgZddj                  d      z   dz   efd	 e	e
 ee      e
e      fd
e
dfgddj                  ddj                  d      z   dz   ddddddf      z   dz    ee      fde
dfgdZd Zy)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*.rlrB   rC   )	z
[^%\'"/#]+z%(?=[^%]|$)r2   r3   rF   rE   rG   r4   rH   rI   z(%%)(?![{%])(.*)($|;)(\n?)z(%%%%|%%)\{multi-line-fsm)z[^}\'"\[/#]z\}(?=[^%]|$)z\}%(?=[^%]|$)rD   z(>|\$|%|<|@|<>)/z /(?!\*)(\\\\|\\[^\\]|[^/\\])*/\*z/(?=[^/*]|$)r2   r3   z\[(\\\\|\\[^\\]|[^\]\\])*\]rF   rE   rG   z\}%%rL   )rM   rc   c                 
    d| v S )Nz@LANG: indepr^   texts    r`   analyse_textzRagelEmbeddedLexer.analyse_text   s    %%r_   N)rN   rO   rP   rQ   rR   rT   rU   r\   r	   r   r   r   r   r
   r]   rg   r^   r_   r`   r   r      s    DlGI DII     & +H[5::5F5@$-H I
 [*:;3
8 DIItyy "  ( ). ,+.!;  < =< j)=+@ k6*C"
9?FB&r_   r   c                   :     e Zd ZdZdZddgZdgZ fdZd Z xZ	S )r!   zK
    A lexer for Ragel in a Ruby host file.

    .. versionadded:: 1.1
    zRagel in Ruby Hostz
ragel-rubyzragel-rbrb   c                 8    t        |   t        t        fi | y N)super__init__r   r   selfoptions	__class__s     r`   rl   zRagelRubyLexer.__init__       $6B'Br_   c                 
    d| v S )Nz@LANG: rubyr^   re   s    r`   rg   zRagelRubyLexer.analyse_text       $$r_   
rN   rO   rP   rQ   rR   rT   rU   rl   rg   __classcell__rp   s   @r`   r!   r!      s+      DZ(GIC%r_   r!   c                   8     e Zd ZdZdZdgZdgZ fdZd Z xZ	S )r   zH
    A lexer for Ragel in a C host file.

    .. versionadded:: 1.1
    zRagel in C Hostzragel-crb   c                 8    t        |   t        t        fi | y rj   )rk   rl   r   r   rm   s     r`   rl   zRagelCLexer.__init__       !3?w?r_   c                 
    d| v S )Nz@LANG: cr^   re   s    r`   rg   zRagelCLexer.analyse_text       T!!r_   rt   rv   s   @r`   r   r      (     DkGI@"r_   r   c                   8     e Zd ZdZdZdgZdgZ fdZd Z xZ	S )r   zH
    A lexer for Ragel in a D host file.

    .. versionadded:: 1.1
    zRagel in D Hostzragel-drb   c                 8    t        |   t        t        fi | y rj   )rk   rl   r   r   rm   s     r`   rl   zRagelDLexer.__init__  ry   r_   c                 
    d| v S )Nz@LANG: dr^   re   s    r`   rg   zRagelDLexer.analyse_text  r{   r_   rt   rv   s   @r`   r   r      r|   r_   r   c                   8     e Zd ZdZdZdgZdgZ fdZd Z xZ	S )r   zJ
    A lexer for Ragel in a C++ host file.

    .. versionadded:: 1.1
    zRagel in CPP Hostz	ragel-cpprb   c                 8    t        |   t        t        fi | y rj   )rk   rl   r   r   rm   s     r`   rl   zRagelCppLexer.__init__  s    #5AAr_   c                 
    d| v S )Nz
@LANG: c++r^   re   s    r`   rg   zRagelCppLexer.analyse_text  s    t##r_   rt   rv   s   @r`   r   r     s(     DmGIB$r_   r   c                   8     e Zd ZdZdZdgZdgZ fdZd Z xZ	S )r    zS
    A lexer for Ragel in an Objective C host file.

    .. versionadded:: 1.1
    zRagel in Objective C Hostz
ragel-objcrb   c                 8    t        |   t        t        fi | y rj   )rk   rl   r   r   rm   s     r`   rl   zRagelObjectiveCLexer.__init__(  s    *<HHr_   c                 
    d| v S )Nz@LANG: objcr^   re   s    r`   rg   z!RagelObjectiveCLexer.analyse_text+  rs   r_   rt   rv   s   @r`   r    r      s(     'DnGII%r_   r    c                   8     e Zd ZdZdZdgZdgZ fdZd Z xZ	S )r"   zK
    A lexer for Ragel in a Java host file.

    .. versionadded:: 1.1
    zRagel in Java Hostz
ragel-javarb   c                 8    t        |   t        t        fi | y rj   )rk   rl   r   r   rm   s     r`   rl   zRagelJavaLexer.__init__:  rq   r_   c                 
    d| v S )Nz@LANG: javar^   re   s    r`   rg   zRagelJavaLexer.analyse_text=  rs   r_   rt   rv   s   @r`   r"   r"   /  s(      DnGIC%r_   r"   c                      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z   dz    eeeeeej$                  e      fdedfdedfdez   dz    eeeej(                  ee      dfdedfdez   dz   ez   dz    eej*                  eeeej*                  ee      dfdez   dz    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z   d&z    eeeej*                        fd'ez   d&z    eeeej*                        fdedfd( eeee      dfd)ez   d*z    eeeej*                  ee      fdez   dz    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j0                  fd.efd/ej2                  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z   d5z   e
z   d6z    eej*                  eeeeee      fd7edfg ed       ed      d#efd4ez   d8z   d9j7                  ee
ed:f      z   d*z    eej(                  eeeeee      fd7edfgd4d9j7                  d;      z   d<z   efd= eee      fd> eej(                  eej<                        fd#ed?fd7edfgd4d9j7                  d@      z   d<z   efd!ed?fdAedfd> eej(                  eej<                        fdBefgdC
ZdD Z yE)Fr#   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]+r1   z//.*$rF   r8   r9   z*(lexer|parser|tree)?(\s*)(grammar\b)(\s*)(z)(;)z	options\bro   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\nrL   z\sz\[nested-arg-actionr>   z	returns\bz(throws)(\s+)()z	(,)(\s*)(z(scope)(\s+)(\{)z(scope)(\s+)(z	)(\s*)(;)r6   r2   r3   z<<([^>]|>[^>])>>z\$?[A-Z_]\w*z\$?[a-z_]\w*z-(\+|\||->|=>|=|\(|\)|\.\.|\.|\?|\*|\^|!|\#|~)r5   rA   rB   z)(\s*)(=)?(\s*)(z
)?(\s*)(;)rK   z)(\s*)(=)(\s*)(rC   z\*)z[^${}\'"/\\]+r2   r3   rE   rF   r4   z\\(?!%)rH   rI   z(\\)(%)z(\$[a-zA-Z]+)(\.?)(text|value)?rJ   )z[^$\[\]\'"/]+r2   r3   rE   rF   r4   rH   z\]z(\\\\|\\\]|\\\[|[^\[\]])+)
r8   r9   rM   r   r   r   r]   ro   r   r   c                 L    t        j                  d| t         j                        S )Nz^\s*grammar\s+[a-zA-Z0-9]+\s*;)researchMre   s    r`   rg   zAntlrLexer.analyse_text  s    yy:D"$$GGr_   N)!rN   rO   rP   rQ   rR   rT   rU   _id
_TOKEN_REF	_RULE_REF_STRING_LITERAL_INTr   r   r   r   r   r   Classr   r[   Labelr   rX   rY   Constantr   r\   r
   r	   Propertyr]   rg   r^   r_   r`   r#   r#   A  s    DiGI
CJI1OD Z 
 w(

 L!J:S@6Igz7J

!#$ 7I.'8,#m3gz4==*!#$,. "7K8S[//#5Edjj*k:jj*k;<DF A3FPgz4::{C*,-
6 J'JJK!45K*
 L!J7#K!45K*$s*gz4::68C#%k:tzz:< 7I. !(7J"L#l2gz4::z;OQ S[=(djj*k:HF ;'3
8 L!J 7I.; )&--8(&--8 &) dmm,dmm,=xH;K!45K*;'-
2 L!JK J!44Fdjj*k:j+78 K(	
 L!JK CZ,,XXsOT59:;=IJdmmZjJ56 K(	
 DII   & '& '( +u56/dmm[$--@BK)K(3
8 DII     !  !& K)K(/dmm[$--@B)511
YfFPHr_   r#   c                   :     e Zd ZdZdZdgZddgZ fdZd Z xZ	S )r'   z:
    ANTLR with C++ Target

    .. versionadded:: 1.1
    zANTLR With CPP Targetz	antlr-cpp*.G*.gc                 8    t        |   t        t        fi | y rj   )rk   rl   r   r#   rm   s     r`   rl   zAntlrCppLexer.__init__  s    :99r_   c                 z    t         j                  |       xr% t        j                  d| t        j                        S )Nz^\s*language\s*=\s*C\s*;r#   rg   r   r   r   re   s    r`   rg   zAntlrCppLexer.analyse_text  s/    &&t, ?II14>	?r_   rt   rv   s   @r`   r'   r'     s)     #DmGI:?r_   r'   c                   :     e Zd ZdZdZdgZddgZ fdZd Z xZ	S )r)   zB
    ANTLR with Objective-C Target

    .. versionadded:: 1.1
    zANTLR With ObjectiveC Targetz
antlr-objcr   r   c                 8    t        |   t        t        fi | y rj   )rk   rl   r   r#   rm   s     r`   rl   zAntlrObjectiveCLexer.__init__"  s    *@@r_   c                 \    t         j                  |       xr t        j                  d|       S )Nz^\s*language\s*=\s*ObjC\s*;)r#   rg   r   r   re   s    r`   rg   z!AntlrObjectiveCLexer.analyse_text%  s)    &&t, <II4d;	<r_   rt   rv   s   @r`   r)   r)     s*     *DnGIA<r_   r)   c                   <     e Zd ZdZdZddgZddgZ fdZd Z xZ	S )	r(   z9
    ANTLR with C# Target

    .. versionadded:: 1.1
    zANTLR With C# Targetzantlr-csharpzantlr-c#r   r   c                 8    t        |   t        t        fi | y rj   )rk   rl   r   r#   rm   s     r`   rl   zAntlrCSharpLexer.__init__5      j<G<r_   c                 z    t         j                  |       xr% t        j                  d| t        j                        S )Nz^\s*language\s*=\s*CSharp2\s*;r   re   s    r`   rg   zAntlrCSharpLexer.analyse_text8  s1    &&t, EII7rttD	Er_   rt   rv   s   @r`   r(   r(   *  s-     "Dz*GI=Er_   r(   c                   :     e Zd ZdZdZdgZddgZ fdZd Z xZ	S )r$   z=
    ANTLR with Python Target

    .. versionadded:: 1.1
    zANTLR With Python Targetzantlr-pythonr   r   c                 8    t        |   t        t        fi | y rj   )rk   rl   r   r#   rm   s     r`   rl   zAntlrPythonLexer.__init__H  r   r_   c                 z    t         j                  |       xr% t        j                  d| t        j                        S )Nz^\s*language\s*=\s*Python\s*;r   re   s    r`   rg   zAntlrPythonLexer.analyse_textK  s1    &&t, DII6bddC	Dr_   rt   rv   s   @r`   r$   r$   =  s+     &DGI=Dr_   r$   c                   :     e Zd ZdZdZdgZddgZ fdZd Z xZ	S )r*   z:
    ANTLR with Java Target

    .. versionadded:: 1.
    zANTLR With Java Targetz
antlr-javar   r   c                 8    t        |   t        t        fi | y rj   )rk   rl   r   r#   rm   s     r`   rl   zAntlrJavaLexer.__init__[      J:':r_   c                 4    t         j                  |       xr dS )Ng?)r#   rg   re   s    r`   rg   zAntlrJavaLexer.analyse_text^  s    &&t,44r_   rt   rv   s   @r`   r*   r*   P  s)     $DnGI;5r_   r*   c                   <     e Zd ZdZdZddgZddgZ fdZd Z xZ	S )	r&   z;
    ANTLR with Ruby Target

    .. versionadded:: 1.1
    zANTLR With Ruby Targetz
antlr-rubyzantlr-rbr   r   c                 8    t        |   t        t        fi | y rj   )rk   rl   r   r#   rm   s     r`   rl   zAntlrRubyLexer.__init__n  r   r_   c                 z    t         j                  |       xr% t        j                  d| t        j                        S )Nz^\s*language\s*=\s*Ruby\s*;r   re   s    r`   rg   zAntlrRubyLexer.analyse_textq  s1    &&t, BII4dBDDA	Br_   rt   rv   s   @r`   r&   r&   c  s-     $DZ(GI;Br_   r&   c                   :     e Zd ZdZdZdgZddgZ fdZd Z xZ	S )r%   z;
    ANTLR with Perl Target

    .. versionadded:: 1.1
    zANTLR With Perl Targetz
antlr-perlr   r   c                 8    t        |   t        t        fi | y rj   )rk   rl   r   r#   rm   s     r`   rl   zAntlrPerlLexer.__init__  r   r_   c                 z    t         j                  |       xr% t        j                  d| t        j                        S )Nz^\s*language\s*=\s*Perl5\s*;r   re   s    r`   rg   zAntlrPerlLexer.analyse_text  s1    &&t, CII5tRTTB	Cr_   rt   rv   s   @r`   r%   r%   v  s*     $DnGI;Cr_   r%   c                   <     e Zd ZdZdZddgZddgZ fdZd Z xZ	S )	r+   zC
    ANTLR with ActionScript Target

    .. versionadded:: 1.1
    zANTLR With ActionScript Targetzantlr-actionscriptzantlr-asr   r   c                 <    ddl m} t        |   |t        fi | y )Nr   )ActionScriptLexer)pygments.lexers.actionscriptr   rk   rl   r#   )rn   ro   r   rp   s      r`   rl   zAntlrActionScriptLexer.__init__  s    B*JB'Br_   c                 z    t         j                  |       xr% t        j                  d| t        j                        S )Nz#^\s*language\s*=\s*ActionScript\s*;r   re   s    r`   rg   z#AntlrActionScriptLexer.analyse_text  s1    &&t, JII<dBDDI	Jr_   rt   rv   s   @r`   r+   r+     s.     ,D#Z0GICJr_   r+   c                      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y$)%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endrJ   z[A-Z]\w*(?:::[A-Z]\w*)*zrule\brulez	include\br   r   rL   r2   r3   z([A-Za-z_]\w*)(:)z[A-Za-z_]\w*z[()]z	[?+*/&!~]z$\[(?:\\.|\[:\^?[a-z]+:\]|[^\\\]])+\]z([0-9]*)(\.\.)([0-9]*)z(<)([^>]+)(>)r>   inline_module\.rubyrK   z[^{}]+z
[ \t\n\r]+z#[^\n]*zend\b)	rM   r   r   r   r   r   r   r   r   N)rN   rO   rP   rQ   r   r	   r   	Namespacer   r   r   rX   rY   r   r   r   r   rZ   r   rW   r   r   r]   r^   r_   r`   r   r     s    G+U3'++X67I.	
 GEN'7+7I.'8
 GEN(7I.$
 G'V<

 GEN(&--8(&--8!8DJJ#DEd#k"8$4fllC&fnnh?AxTZZMNK1FLL!
" E6"K(
 E7#E6"
 J'(

 w'
o:Fr_   r   c                   4     e Zd ZdZdZdgZddgZ fdZ xZS )r,   ze
    A lexer for `Treetop <http://treetop.rubyforge.org/>`_ grammars.

    .. versionadded:: 1.6
    Treetoptreetopz	*.treetopz*.ttc                 8    t        |   t        t        fi | y rj   )rk   rl   r   r   rm   s     r`   rl   zTreetopLexer.__init__  s    $4@@r_   )	rN   rO   rP   rQ   rR   rT   rU   rl   ru   rv   s   @r`   r,   r,     s,     DkGf%IA Ar_   r,   c                      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y)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-ebnfr8   comment_start
identifierr@   
productionz"[^"]*"z'[^']*'z(\?[^?]*\?)z[\[\]{}(),|]-rA   rL   r   r1   z\(\*commentz[^*)]z\*\)z[*)]z([a-zA-Z][\w \-]*))rM   r   r8   r   r   r   N)rN   rO   rP   rQ   rR   rT   rU   	mimetypesr   r   r   rX   rY   r   Entityr   r
   r   	Multiliner   r]   r^   r_   r`   r-   r-     s)    DhG
II L!O$L!8\*	
 L!O$L!''T[[)k*8;'K(
 TN
 g''3
 w(()O$g''0g''(	
 #G,
?"Fr_   r-   )9rQ   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`   <module>r      sQ   
 . . . ) 2 5 $ . * . *(\ \~P& P&f%_ %$"/ "$"/ "$$O $$%? %$%_ %$~H ~HF?O ?&<? <&E E&D D&5_ 5&B_ B&C_ C&J_ J(Bz BJA? A0
 0r_   