B
    G
\                 @   s   d Z ddl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 dddg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 grammer notations like BNF.

    :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)
RegexLexerbygroupsincludethisusingwords)	CommentKeywordLiteralNameNumberOperatorPunctuationStringTextBnfLexer	AbnfLexer	JsgfLexerc               @   sP   e Zd ZdZdZdgZdgZdg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 grammer 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 desision making might cause too minimal highlighting
    and you might be disappointed, but it is reasonable for us.

    .. versionadded:: 2.1
    ZBNFZbnfz*.bnfz
text/x-bnfrootz(<)([ -;=?-~]+)(>)z::=z[^<>:]+.N)__name__
__module____qualname____doc__namealiases	filenames	mimetypesr   r   r   Classr   r   tokens r    r    ?lib/python3.7/site-packages/pygments/lexers/grammar_notation.pyr      s   c               @   s   e 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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   z
    Lexer for `IETF 7405 ABNF
    <http://www.ietf.org/rfc/rfc7405.txt>`_
    (Updates `5234 <http://www.ietf.org/rfc/rfc5234.txt>`_)
    grammars.

    .. versionadded:: 2.1
    ZABNFZabnfz*.abnfztext/x-abnf)ZALPHAZBITZCHARZCRZCRLFZCTLZDIGITZDQUOTEZHEXDIGZHTABZLFZLWSPZOCTETZSPZVCHARZ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]+z\*z\b)suffixz[a-zA-Z][a-zA-Z0-9-]+\bz(=/|=|/)z[\[\]()]z\s+r   N)r   r   r   r   r   r   r   r   Z_core_rulesr   Singler
   r   r   r	   r   r   r   r   r   r    r    r    r!   r   E   s2   c               @   s  e Zd ZdZdZdgZdgZdddgZej	ej
B 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jej"e#e$d-d.fd/eejej"fd0ejfgd1ejfed	d2ejfgd3	Z%d4S )5r   zn
    For `JSpeech Grammar Format <https://www.w3.org/TR/jsgf/>`_
    grammars.

    .. versionadded:: 2.2
    ZJSGFZjsgfz*.jsgfzapplication/jsgfzapplication/x-jsgfz	text/jsgfcommentsznon-commentsz
/\*\*(?!/)zdocumentation commentz/\*[\w\W]*?\*/z//.*z\A#JSGF[^;]*z\s+;z[=|()\[\]*+]z/[^/]+/"stringz\{tag)importZpublicz\b)r"   z	grammar\bzgrammar namez(<)(NULL|VOID)(>)<rulenamez\w+|[^\s;=|()\[\]*+/"{<\w]+z#popz\\.z[^\\"]+z\}z[^\\}]+z\.z[^;\s.]+>z\*z([^.>]+)(\s*)(\.)z[^.>]+z\*/zB(^\s*\*?\s*)(@(?:example|see)\s+)([\w\W]*?(?=(?:^\s*\*?\s*@|\*/)))example)statez(^\s*\*?\s*)(@\S*)z[^*\n@]+|\w|\Wz\n\s*\*r   )	r   r$   znon-commentsr'   r(   zgrammar namer+   zdocumentation commentr-   N)&r   r   r   r   r   r   r   r   re	MULTILINEUNICODEflagsr   r   Z	Multiliner#   ZPreprocr   r   r   r   ZFloatr   DoubleZOtherr   r	   ZReservedr   r   ZBuiltinZEscapeZ	NamespaceZConstantSpecialr   r   r   r    r    r    r!   r      sb   














)r   r/   Zpygments.lexerr   r   r   r   r   r   Zpygments.tokenr   r	   r
   r   r   r   r   r   r   __all__r   r   r   r    r    r    r!   <module>
   s    ,
0C