|e,dZddlmZmZmZmZmZmZddlm Z m Z m Z m Z m Z mZmZmZmZmZgdZGddeZGddeZGd d eZGd d eZy )z pygments.lexers.grammar_notation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lexers for grammar notations like BNF. :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. ) RegexLexerbygroupsincludethisusingwords) CommentKeywordLiteralNameNumberOperator PunctuationStringText Whitespace)BnfLexer AbnfLexer JsgfLexerPegLexercjeZdZdZdZdgZdgZdgZddee e je fde fd e fd e fgiZy ) ra> 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 `_. * 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. .. versionadded:: 2.1 BNFbnfz*.bnfz text/x-bnfrootz(<)([ -;=?-~]+)(>)z::=z[^<>:]+.N)__name__ __module__ __qualname____doc__namealiases filenames mimetypesrrr ClassrrtokensB/usr/lib/python3/dist-packages/pygments/lexers/grammar_notation.pyrrsg6 DgG II  " k4::{ ; =X   4L   Fr'rceZdZdZdZdZdgZdgZdgZdZ dd e jfd e fd e fd e fd e fde fde fde fde fde fde fde fee defdej"fde fdefdefdefgiZy)rz Lexer for IETF 7405 ABNF. (Updates `5234 `_) grammars. .. versionadded:: 2.1 ABNFz#http://www.ietf.org/rfc/rfc7405.txtabnfz*.abnfz text/x-abnf)ALPHABITCHARCRCRLFCTLDIGITDQUOTEHEXDIGHTABLFLWSPOCTETSPVCHARWSPrz;.*$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]+\*\bsuffixz[a-zA-Z][a-zA-Z0-9-]*\bz(=/|=|/)z[\[\]()]\s+rN)rrrrr urlr!r"r# _core_rulesr Singler rrr r r$rrrr%r&r'r(rrBs D /ChG IIK  gnn %  )!' * #W -#G , %w // 8 17 ;!( + H % ( # H ;u -w 7( 4( #+ &Z 4LS* ,Fr'rceZdZdZdZdZdgZdgZgdZe de dgd e jd fd e jfd e jfgd e jfdefdefdefdej$fdej(dfdej*dfeddej0fdej0dfdeeej6efdedfdefg dej(dfd ej:fd!ej(fgd"ej*dfd ej:fd#ej*fgdedfdefd$efd%ej<fgd&edfd'efdefd(eej<eefd)ej>fgd*e jdfd+eee jee j@ee!e"d,-fd.ee je j@fd/e jfgd0eee jfe dd1e jfgd2 Z#y3)4rzI For JSpeech Grammar Format grammars. .. versionadded:: 2.2 JSGFzhttps://www.w3.org/TR/jsgf/jsgfz*.jsgf)zapplication/jsgfzapplication/x-jsgfz text/jsgfcomments non-commentsz /\*\*(?!/)documentation commentz/\*[\w\W]*?\*/z//.*$z \A#JSGF[^;]*r@;z [=|()\[\]*+]z/[^/]+/"stringz\{tag)importpublicr=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) rrGrHrLrMrPrRrIrUN)$rrrrr rAr!r"r#rr MultilinerCPreprocrrrr FloatrDoubleOtherrr Reservedrr BuiltinrEscape NamespaceConstantSpecialrrr%r&r'r(rrs D 'ChG IGI J  N # G--/F G  1 1 2 w~~ & goo . Z ;  h '  & 6==( + FLL% ( ' 68H8H 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'2C2CD E N # 7$$ % u?Fr'rc eZdZdZdZdZdgZdgZdgZdde jfd e fd e fd e fd ee ee fd ej fdejfdej$fdefg iZy)ru- 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`). .. versionadded:: 2.6 PEGz#https://bford.info/pub/lang/peg.pdfpegz*.pegz text/x-pegrz#.*$u<-|[←:=/|&!?*+^↑~]z[()]rSz (\[)([^\]]*(?:\\.[^\]\\]*)*)(\])z$[a-z]?"[^"\\]*(?:\\.[^"\\]*)*"[a-z]*z$[a-z]?'[^'\\]*(?:\\.[^'\\]*)*'[a-z]*u#[^\s<←:=/|&!?*+\^↑~()\[\]"\'#]+rN)rrrrr rAr!r"r#r rCrrr rrrZr r$rr%r&r'r(rrs& D /CgG II  gnn %' 1k "G 1 k6; 7 95fmm D 4fmm D4TZZ @4L3 Fr'rN)rpygments.lexerrrrrrrpygments.tokenr r r r r rrrrr__all__rrrrr&r'r(rhs`ML444 =-z-`@ @FK K\6z6r'