File: //lib/python3/dist-packages/pygments/lexers/__pycache__/parsers.cpython-311.pyc
�
�E�c0e � � � d Z ddlZddlmZmZmZmZmZ ddlm Z m
Z
mZmZm
Z
mZmZmZmZmZ ddlmZ ddlmZmZ ddlmZ ddlmZ dd lmZ dd
lmZ ddl m!Z! ddl"m#Z# g d
�Z$ G d� de� � Z% G d� de� � Z& G d� de� � Z' G d� de� � Z( G d� de� � Z) G d� de� � Z* G d� de� � Z+ G d� de� � Z, G d� de� � 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� � Z8dS )6z�
pygments.lexers.parsers
~~~~~~~~~~~~~~~~~~~~~~~
Lexers for parser generators.
:copyright: Copyright 2006-2022 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 Zd ZdZdZdZdgZg Zdefgde fgde
fde
fd e
fd
e
fgdej fdej
fgd
ej fdej fdefdej fgdej fgdefdefdefdefdefdefdefdefdefdefdefdefdefdefg ed � � ed!� � ed"� � ed#� � ed$� � ed%� � ed&� � d'ed(fd)efd*efg
d+d,� d-� � z d.z efd'ed/fd0ed1fgd2� Zd3S )4r z�A 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)\bz0x[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<