]> luflow.net public git repositories - flow-web.git/blob - static/highlight/languages/abnf.js
Initial commit.
[flow-web.git] / static / highlight / languages / abnf.js
1 /*! `abnf` grammar compiled for Highlight.js 11.11.1 */
2 (function(){
3 var hljsGrammar = (function () {
4 'use strict';
5
6 /*
7 Language: Augmented Backus-Naur Form
8 Author: Alex McKibben <alex@nullscope.net>
9 Website: https://tools.ietf.org/html/rfc5234
10 Category: syntax
11 Audit: 2020
12 */
13
14 /** @type LanguageFn */
15 function abnf(hljs) {
16 const regex = hljs.regex;
17 const IDENT = /^[a-zA-Z][a-zA-Z0-9-]*/;
18
19 const KEYWORDS = [
20 "ALPHA",
21 "BIT",
22 "CHAR",
23 "CR",
24 "CRLF",
25 "CTL",
26 "DIGIT",
27 "DQUOTE",
28 "HEXDIG",
29 "HTAB",
30 "LF",
31 "LWSP",
32 "OCTET",
33 "SP",
34 "VCHAR",
35 "WSP"
36 ];
37
38 const COMMENT = hljs.COMMENT(/;/, /$/);
39
40 const TERMINAL_BINARY = {
41 scope: "symbol",
42 match: /%b[0-1]+(-[0-1]+|(\.[0-1]+)+)?/
43 };
44
45 const TERMINAL_DECIMAL = {
46 scope: "symbol",
47 match: /%d[0-9]+(-[0-9]+|(\.[0-9]+)+)?/
48 };
49
50 const TERMINAL_HEXADECIMAL = {
51 scope: "symbol",
52 match: /%x[0-9A-F]+(-[0-9A-F]+|(\.[0-9A-F]+)+)?/
53 };
54
55 const CASE_SENSITIVITY = {
56 scope: "symbol",
57 match: /%[si](?=".*")/
58 };
59
60 const RULE_DECLARATION = {
61 scope: "attribute",
62 match: regex.concat(IDENT, /(?=\s*=)/)
63 };
64
65 const ASSIGNMENT = {
66 scope: "operator",
67 match: /=\/?/
68 };
69
70 return {
71 name: 'Augmented Backus-Naur Form',
72 illegal: /[!@#$^&',?+~`|:]/,
73 keywords: KEYWORDS,
74 contains: [
75 ASSIGNMENT,
76 RULE_DECLARATION,
77 COMMENT,
78 TERMINAL_BINARY,
79 TERMINAL_DECIMAL,
80 TERMINAL_HEXADECIMAL,
81 CASE_SENSITIVITY,
82 hljs.QUOTE_STRING_MODE,
83 hljs.NUMBER_MODE
84 ]
85 };
86 }
87
88 return abnf;
89
90 })();
91
92 hljs.registerLanguage('abnf', hljsGrammar);
93 })();