| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 | /** * @param {string} value * @returns {RegExp} * *//** * @param {RegExp | string } re * @returns {string} */function source(re) {  if (!re) return null;  if (typeof re === "string") return re;  return re.source;}/** * @param {...(RegExp | string) } args * @returns {string} */function concat(...args) {  const joined = args.map((x) => source(x)).join("");  return joined;}/*Language: Augmented Backus-Naur FormAuthor: Alex McKibben <alex@nullscope.net>Website: https://tools.ietf.org/html/rfc5234Audit: 2020*//** @type LanguageFn */function abnf(hljs) {  const regexes = {    ruleDeclaration: /^[a-zA-Z][a-zA-Z0-9-]*/,    unexpectedChars: /[!@#$^&',?+~`|:]/  };  const keywords = [    "ALPHA",    "BIT",    "CHAR",    "CR",    "CRLF",    "CTL",    "DIGIT",    "DQUOTE",    "HEXDIG",    "HTAB",    "LF",    "LWSP",    "OCTET",    "SP",    "VCHAR",    "WSP"  ];  const commentMode = hljs.COMMENT(/;/, /$/);  const terminalBinaryMode = {    className: "symbol",    begin: /%b[0-1]+(-[0-1]+|(\.[0-1]+)+){0,1}/  };  const terminalDecimalMode = {    className: "symbol",    begin: /%d[0-9]+(-[0-9]+|(\.[0-9]+)+){0,1}/  };  const terminalHexadecimalMode = {    className: "symbol",    begin: /%x[0-9A-F]+(-[0-9A-F]+|(\.[0-9A-F]+)+){0,1}/  };  const caseSensitivityIndicatorMode = {    className: "symbol",    begin: /%[si]/  };  const ruleDeclarationMode = {    className: "attribute",    begin: concat(regexes.ruleDeclaration, /(?=\s*=)/)  };  return {    name: 'Augmented Backus-Naur Form',    illegal: regexes.unexpectedChars,    keywords: keywords,    contains: [      ruleDeclarationMode,      commentMode,      terminalBinaryMode,      terminalDecimalMode,      terminalHexadecimalMode,      caseSensitivityIndicatorMode,      hljs.QUOTE_STRING_MODE,      hljs.NUMBER_MODE    ]  };}module.exports = abnf;
 |