]> luflow.net public git repositories - flow-web.git/blob - static/highlight/es/languages/lisp.js
Initial commit.
[flow-web.git] / static / highlight / es / languages / lisp.js
1 /*! `lisp` grammar compiled for Highlight.js 11.11.1 */
2 var hljsGrammar = (function () {
3 'use strict';
4
5 /*
6 Language: Lisp
7 Description: Generic lisp syntax
8 Author: Vasily Polovnyov <vast@whiteants.net>
9 Category: lisp
10 */
11
12 function lisp(hljs) {
13 const LISP_IDENT_RE = '[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*';
14 const MEC_RE = '\\|[^]*?\\|';
15 const LISP_SIMPLE_NUMBER_RE = '(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?';
16 const LITERAL = {
17 className: 'literal',
18 begin: '\\b(t{1}|nil)\\b'
19 };
20 const NUMBER = {
21 className: 'number',
22 variants: [
23 {
24 begin: LISP_SIMPLE_NUMBER_RE,
25 relevance: 0
26 },
27 { begin: '#(b|B)[0-1]+(/[0-1]+)?' },
28 { begin: '#(o|O)[0-7]+(/[0-7]+)?' },
29 { begin: '#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?' },
30 {
31 begin: '#(c|C)\\(' + LISP_SIMPLE_NUMBER_RE + ' +' + LISP_SIMPLE_NUMBER_RE,
32 end: '\\)'
33 }
34 ]
35 };
36 const STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null });
37 const COMMENT = hljs.COMMENT(
38 ';', '$',
39 { relevance: 0 }
40 );
41 const VARIABLE = {
42 begin: '\\*',
43 end: '\\*'
44 };
45 const KEYWORD = {
46 className: 'symbol',
47 begin: '[:&]' + LISP_IDENT_RE
48 };
49 const IDENT = {
50 begin: LISP_IDENT_RE,
51 relevance: 0
52 };
53 const MEC = { begin: MEC_RE };
54 const QUOTED_LIST = {
55 begin: '\\(',
56 end: '\\)',
57 contains: [
58 'self',
59 LITERAL,
60 STRING,
61 NUMBER,
62 IDENT
63 ]
64 };
65 const QUOTED = {
66 contains: [
67 NUMBER,
68 STRING,
69 VARIABLE,
70 KEYWORD,
71 QUOTED_LIST,
72 IDENT
73 ],
74 variants: [
75 {
76 begin: '[\'`]\\(',
77 end: '\\)'
78 },
79 {
80 begin: '\\(quote ',
81 end: '\\)',
82 keywords: { name: 'quote' }
83 },
84 { begin: '\'' + MEC_RE }
85 ]
86 };
87 const QUOTED_ATOM = { variants: [
88 { begin: '\'' + LISP_IDENT_RE },
89 { begin: '#\'' + LISP_IDENT_RE + '(::' + LISP_IDENT_RE + ')*' }
90 ] };
91 const LIST = {
92 begin: '\\(\\s*',
93 end: '\\)'
94 };
95 const BODY = {
96 endsWithParent: true,
97 relevance: 0
98 };
99 LIST.contains = [
100 {
101 className: 'name',
102 variants: [
103 {
104 begin: LISP_IDENT_RE,
105 relevance: 0,
106 },
107 { begin: MEC_RE }
108 ]
109 },
110 BODY
111 ];
112 BODY.contains = [
113 QUOTED,
114 QUOTED_ATOM,
115 LIST,
116 LITERAL,
117 NUMBER,
118 STRING,
119 COMMENT,
120 VARIABLE,
121 KEYWORD,
122 MEC,
123 IDENT
124 ];
125
126 return {
127 name: 'Lisp',
128 illegal: /\S/,
129 contains: [
130 NUMBER,
131 hljs.SHEBANG(),
132 LITERAL,
133 STRING,
134 COMMENT,
135 QUOTED,
136 QUOTED_ATOM,
137 LIST,
138 IDENT
139 ]
140 };
141 }
142
143 return lisp;
144
145 })();
146 ;
147 export default hljsGrammar;