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