+
    TBik                         R t ^ RIHtHtHtHtHtHt ^ RIH	t	H
t
HtHtHtHtHtHtHtHt . ROt ! R R]4      t ! R R]4      t ! R	 R]4      t ! R
 R]4      tR# )z
pygments.lexers.grammar_notation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Lexers for grammar notations like BNF.

:copyright: Copyright 2006-2025 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                   |    ] tR t^tRtRtR.tR.tR.tRt	Rt
RR	]! ]]P                  ]4      3R
]3R]3R]3./tRtR# )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____firstlineno____doc__namealiases	filenames	mimetypesurlversion_addedr   r   r   Classr   r   tokens__static_attributes__r       E/usr/lib/python3.14/site-packages/pygments/lexers/grammar_notation.pyr   r      sq    2 DgG	II
BCM 	"k4::{;= X 4L

Fr+   c                       ] tR t^BtRtRtRtR.tR.tR.t	Rt
RtRR	]P                  3R
]3R]3R]3R]3R]3R]3R]3R]3R]3R]3R]3]! ]RR7      ]3R]P&                  3R]3R]3R]3R]3./tRtR# )r   z^
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   r   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   r   N)ALPHABITCHARCRCRLFCTLDIGITDQUOTEHEXDIGHTABLFLWSPOCTETSPVCHARWSP)r   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   r   B   s     D
/ChG
IIMK 	gnn%  ) !'*#W- #G,%w/ /817; !(+H%(#H ;u-w7 (4 (# +& Z 4LS*
,Fr+   c                      ] tR t^tRtRtRtR.tR.t. R4Ot	Rt
R]! R4      ]! R	4      .RR
]P                  R3R]P                  3R]P                  3.R	R]P                  3R]3R]3R]3R]P(                  3R]P,                  R3R]P.                  R3]! R5RR7      ]P4                  3R]P4                  R3R]! ]]P:                  ]4      3R]R3R]3.RR]P,                  R3R ]P>                  3R!]P,                  3.RR"]P.                  R3R ]P>                  3R#]P.                  3.RR]R3R]3R$]3R%]P@                  3.RR&]R3R']3R]3R(]! ]P@                  ]]4      3R)]PB                  3.RR*]P                  R3R+]! ]]P                  ]]PD                  ]]#! ]$R,R-7      4      3R.]! ]P                  ]PD                  4      3R/]P                  3.R,R0]! ]]P                  4      3]! R	4      R1]P                  3./	t%R2t&R3# )6r   z&
For JSpeech Grammar Format grammars.
JSGFzhttps://www.w3.org/TR/jsgf/jsgfz*.jsgfz2.2r   commentsznon-commentsz
/\*\*(?!/)zdocumentation commentz/\*[\w\W]*?\*/z//.*$z\A#JSGF[^;]*r4   ;z[=|()\[\]*+]z/[^/]+/"stringz\{tagr1   r2   z	grammar\bzgrammar namez(<)(NULL|VOID)(>)<rulenamez\w+|[^\s;=|()\[\]*+/"{<\w]+z#popz\\.z[^\\"]+z\}z[^\\}]+\.z[^;\s.]+>r0   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   N)zapplication/jsgfzapplication/x-jsgfz	text/jsgf)importpublic)'r   r   r   r    r!   r"   r&   r#   r$   r%   r'   r   r   	MultilinerF   Preprocr   r   r   r   Floatr   DoubleOtherr   r	   Reservedr   r   Builtinr   Escape	NamespaceConstantSpecialr   r   r)   r*   r   r+   r,   r   r      s    D
'ChG
IGIM 	JN#
 	G--/FG 1 12w~~&

 	goo.Z ;h'&6==(+FLL%('68H8HI7++^<!k4<<=?;
++T2
 	6==&)V]]#'

 	FLL&)V]]#&

 	;'Z K $..)	
 	;'K Z !8DNND+#NO&
 	 W&&/2j'"3"3Z %I">@A #g''9; 1 12	"
 	Xj'2C2CDEN#7$$%
u?Fr+   c                       ] tR t^tRtRtRtR.tR.tR.t	Rt
RR	]P                  3R
]3R]3R]3R]! ]]]4      3R]P$                  3R]P                  3R]P(                  3R]3.	/tRtR# )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[()]rQ   z (\[)([^\]]*(?:\\.[^\]\\]*)*)(\])z$[a-z]?"[^"\\]*(?:\\.[^"\\]*)*"[a-z]*z$[a-z]?'[^'\\]*(?:\\.[^'\\]*)*'[a-z]*u#   [^\s<←:=/|&!?*+\^↑~()\[\]"\'#]+r   r   N)r   r   r   r    r!   r"   r&   r#   r$   r%   r'   r   rF   r   r   r	   r   r   rZ   r   r(   r   r)   r*   r   r+   r,   r   r      s    " D
/CgG	IIM 	gnn% '1 k" G 1k6;79 5fmmD4fmmD 4TZZ@ 4L3
Fr+   N)r   r   r   r   )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,   <module>rh      s^    M L4 4 4 =-z -`?
 ?DJ
 JZ5z 5r+   