o
    Ñ­jn  ã                   @   s    d Z ddlmZ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 g d¢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dS )zî
    pygments.lexers.grammar_notation
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for grammar notations like BNF.

    :copyright: Copyright 2006-present by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    )Ú
RegexLexerÚbygroupsÚincludeÚthisÚusingÚwords)
ÚCommentÚKeywordÚLiteralÚNameÚNumberÚOperatorÚPunctuationÚStringÚTextÚ
Whitespace)ÚBnfLexerÚ	AbnfLexerÚ	JsgfLexerÚPegLexerc                   @   sX   e Zd ZdZdZdgZdgZdgZdZdZ	dd	e
eejeƒfd
efdefdefgiZdS )r   a#  
    This lexer is for grammar notations which are similar to
    original BNF.

    In order to maximize a number of targets of this lexer,
    let's decide some designs:

    * We don't distinguish `Terminal Symbol`.

    * We do assume that `NonTerminal Symbol` are always enclosed
      with arrow brackets.

    * We do assume that `NonTerminal Symbol` may include
      any printable characters except arrow brackets and ASCII 0x20.
      This assumption is for `RBNF <http://www.rfc-base.org/txt/rfc-5511.txt>`_.

    * We do assume that target notation doesn't support comment.

    * We don't distinguish any operators and punctuation except
      `::=`.

    Though these decision making might cause too minimal highlighting
    and you might be disappointed, but it is reasonable for us.
    ÚBNFÚbnfz*.bnfz
text/x-bnfz6https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_formú2.1Úrootz(<)([ -;=?-~]+)(>)z::=z[^<>:]+Ú.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚaliasesÚ	filenamesÚ	mimetypesÚurlÚversion_addedr   r   r   ÚClassr   r   Útokens© r'   r'   ú]/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pygments/lexers/grammar_notation.pyr      s"    ÿ÷ÿr   c                   @   s²   e Zd ZdZdZdZdgZdgZdgZdZ	dZ
d	d
ej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ee
dd�efdejfdefdefdefdefgiZdS )r   zj
    Lexer for IETF 7405 ABNF.

    (Updates `5234 <http://www.ietf.org/rfc/rfc5234.txt>`_) grammars.
    ÚABNFz#http://www.ietf.org/rfc/rfc7405.txtÚabnfz*.abnfztext/x-abnfr   )ÚALPHAÚBITÚCHARÚCRÚCRLFÚCTLÚDIGITÚDQUOTEÚHEXDIGÚHTABÚLFÚLWSPÚOCTETÚSPÚVCHARÚWSPr   z;.*$z(%[si])?"[^"]*"z%b[01]+\-[01]+\bz%b[01]+(\.[01]+)*\bz%d[0-9]+\-[0-9]+\bz%d[0-9]+(\.[0-9]+)*\bz%x[0-9a-fA-F]+\-[0-9a-fA-F]+\bz!%x[0-9a-fA-F]+(\.[0-9a-fA-F]+)*\bz\b[0-9]+\*[0-9]+z
\b[0-9]+\*z\b[0-9]+ú\*ú\b©Úsuffixz[a-zA-Z][a-zA-Z0-9-]*\bz(=/|=|/)z[\[\]()]ú\s+r   N)r   r   r   r   r   r#   r    r!   r"   r$   Ú_core_rulesr   ÚSingler
   r   r   r	   r   r%   r   r   r   r&   r'   r'   r'   r(   r   B   s<    ×ÿr   c                   @   s¶  e Zd ZdZdZdZdgZdgZg d¢ZdZ	e
dƒe
d	ƒgd
ejdfdejfdejfgdejfdefdefdefdejfdejdfdejdfeddd�ejfdejdfdeeejeƒfdedfdefgdejd fd!ejfd"ejfgd#ejd fd!ejfd$ejfgded fdefd%efd&ejfgd'ed fd(efdefd)eejeeƒfd*ej fgd+ejd fd,eeejeej!ee"e#d-d.�ƒfd/eejej!ƒfd0ejfgd1eeejƒfe
d	ƒd2ejfgd3œ	Z$d4S )5r   z.
    For JSpeech Grammar Format grammars.
    ÚJSGFzhttps://www.w3.org/TR/jsgf/Újsgfz*.jsgf)zapplication/jsgfzapplication/x-jsgfz	text/jsgfz2.2Úcommentsúnon-commentsz
/\*\*(?!/)údocumentation commentz/\*[\w\W]*?\*/z//.*$z\A#JSGF[^;]*r?   ú;z[=|()\[\]*+]z/[^/]+/ú"Ústringz\{Útag)ÚimportÚpublicr<   r=   z	grammar\búgrammar namez(<)(NULL|VOID)(>)ú<Úrulenamez\w+|[^\s;=|()\[\]*+/"{<\w]+z#popz\\.z[^\\"]+z\}z[^\\}]+ú\.z[^;\s.]+ú>r;   z([^.>]+)(\s*)(\.)z[^.>]+z\*/zH^(\s*)(\*?)(\s*)(@(?:example|see))(\s+)([\w\W]*?(?=(?:^\s*\*?\s*@|\*/)))Úexample)Ústatez(^\s*\*?\s*)(@\S*)z[^*\n@]+|\w|\Wz(\n\s*)(\*)r   )	r   rD   rE   rI   rJ   rM   rO   rF   rR   N)%r   r   r   r   r   r#   r    r!   r"   r$   r   r   Ú	MultilinerA   ÚPreprocr   r   r   r   ÚFloatr   ÚDoubleÚOtherr   r	   ÚReservedr   r   ÚBuiltinr   ÚEscapeÚ	NamespaceÚConstantÚSpecialr   r   r&   r'   r'   r'   r(   r   „   s‚    þ
ý


ÿó
ý
ýüû
ÿþÿøý
Ær   c                   @   s|   e Zd ZdZdZdZdgZdgZdgZdZ	dd	e
jfd
efdefdefdeeeeƒfdejfdejfdejfdefg	iZdS )r   u  
    This lexer is for Parsing Expression Grammars (PEG).

    Various implementations of PEG have made different decisions
    regarding the syntax, so let's try to be accommodating:

    * `<-`, `â†�`, `:`, and `=` are all accepted as rule operators.

    * Both `|` and `/` are choice operators.

    * `^`, `â†‘`, and `~` are cut operators.

    * A single `a-z` character immediately before a string, or
      multiple `a-z` characters following a string, are part of the
      string (e.g., `r"..."` or `"..."ilmsuxa`).
    ÚPEGz#https://bford.info/pub/lang/peg.pdfÚpegz*.pegz
text/x-pegz2.6r   z#.*$u   <-|[â†�:=/|&!?*+^â†‘~]z[()]rP   z (\[)([^\]]*(?:\\.[^\]\\]*)*)(\])z$[a-z]?"[^"\\]*(?:\\.[^"\\]*)*"[a-z]*z$[a-z]?'[^'\\]*(?:\\.[^'\\]*)*'[a-z]*u#   [^\s<â†�:=/|&!?*+\^â†‘~()\[\]"\'#]+r   N)r   r   r   r   r   r#   r    r!   r"   r$   r   rA   r   r   r	   r   r   rW   r   r%   r   r&   r'   r'   r'   r(   r   Ñ   s,    
ÿçÿr   N)r   Úpygments.lexerr   r   r   r   r   r   Úpygments.tokenr   r	   r
   r   r   r   r   r   r   r   Ú__all__r   r   r   r   r'   r'   r'   r(   Ú<module>   s     
00BM