UNPKG

994 BJavaScriptView Raw
1/*
2Language: Extended Backus-Naur Form
3Author: Alex McKibben <alex@nullscope.net>
4Website: https://en.wikipedia.org/wiki/Extended_Backus–Naur_form
5*/
6
7/** @type LanguageFn */
8function ebnf(hljs) {
9 const commentMode = hljs.COMMENT(/\(\*/, /\*\)/);
10
11 const nonTerminalMode = {
12 className: "attribute",
13 begin: /^[ ]*[a-zA-Z]+([\s_-]+[a-zA-Z]+)*/
14 };
15
16 const specialSequenceMode = {
17 className: "meta",
18 begin: /\?.*\?/
19 };
20
21 const ruleBodyMode = {
22 begin: /=/,
23 end: /[.;]/,
24 contains: [
25 commentMode,
26 specialSequenceMode,
27 {
28 // terminals
29 className: 'string',
30 variants: [
31 hljs.APOS_STRING_MODE,
32 hljs.QUOTE_STRING_MODE,
33 {
34 begin: '`',
35 end: '`'
36 }
37 ]
38 }
39 ]
40 };
41
42 return {
43 name: 'Extended Backus-Naur Form',
44 illegal: /\S/,
45 contains: [
46 commentMode,
47 nonTerminalMode,
48 ruleBodyMode
49 ]
50 };
51}
52
53export { ebnf as default };