1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- /*
- Language: Extended Backus-Naur Form
- Author: 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;
|