| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | /*Language: Extended Backus-Naur FormAuthor: Alex McKibben <alex@nullscope.net>Website: https://en.wikipedia.org/wiki/Extended_Backus–Naur_form*//** @type LanguageFn */function ebnf(hljs) {  const commentMode = hljs.COMMENT(/\(\*/, /\*\)/);  const nonTerminalMode = {    className: "attribute",    begin: /^[ ]*[a-zA-Z]+([\s_-]+[a-zA-Z]+)*/  };  const specialSequenceMode = {    className: "meta",    begin: /\?.*\?/  };  const ruleBodyMode = {    begin: /=/,    end: /[.;]/,    contains: [      commentMode,      specialSequenceMode,      {        // terminals        className: 'string',        variants: [          hljs.APOS_STRING_MODE,          hljs.QUOTE_STRING_MODE,          {            begin: '`',            end: '`'          }        ]      }    ]  };  return {    name: 'Extended Backus-Naur Form',    illegal: /\S/,    contains: [      commentMode,      nonTerminalMode,      ruleBodyMode    ]  };}module.exports = ebnf;
 |