]> luflow.net public git repositories - flow-web.git/blob - static/highlight/languages/aspectj.js
Initial commit.
[flow-web.git] / static / highlight / languages / aspectj.js
1 /*! `aspectj` grammar compiled for Highlight.js 11.11.1 */
2 (function(){
3 var hljsGrammar = (function () {
4 'use strict';
5
6 /*
7 Language: AspectJ
8 Author: Hakan Ozler <ozler.hakan@gmail.com>
9 Website: https://www.eclipse.org/aspectj/
10 Description: Syntax Highlighting for the AspectJ Language which is a general-purpose aspect-oriented extension to the Java programming language.
11 Category: system
12 Audit: 2020
13 */
14
15 /** @type LanguageFn */
16 function aspectj(hljs) {
17 const regex = hljs.regex;
18 const KEYWORDS = [
19 "false",
20 "synchronized",
21 "int",
22 "abstract",
23 "float",
24 "private",
25 "char",
26 "boolean",
27 "static",
28 "null",
29 "if",
30 "const",
31 "for",
32 "true",
33 "while",
34 "long",
35 "throw",
36 "strictfp",
37 "finally",
38 "protected",
39 "import",
40 "native",
41 "final",
42 "return",
43 "void",
44 "enum",
45 "else",
46 "extends",
47 "implements",
48 "break",
49 "transient",
50 "new",
51 "catch",
52 "instanceof",
53 "byte",
54 "super",
55 "volatile",
56 "case",
57 "assert",
58 "short",
59 "package",
60 "default",
61 "double",
62 "public",
63 "try",
64 "this",
65 "switch",
66 "continue",
67 "throws",
68 "privileged",
69 "aspectOf",
70 "adviceexecution",
71 "proceed",
72 "cflowbelow",
73 "cflow",
74 "initialization",
75 "preinitialization",
76 "staticinitialization",
77 "withincode",
78 "target",
79 "within",
80 "execution",
81 "getWithinTypeName",
82 "handler",
83 "thisJoinPoint",
84 "thisJoinPointStaticPart",
85 "thisEnclosingJoinPointStaticPart",
86 "declare",
87 "parents",
88 "warning",
89 "error",
90 "soft",
91 "precedence",
92 "thisAspectInstance"
93 ];
94 const SHORTKEYS = [
95 "get",
96 "set",
97 "args",
98 "call"
99 ];
100
101 return {
102 name: 'AspectJ',
103 keywords: KEYWORDS,
104 illegal: /<\/|#/,
105 contains: [
106 hljs.COMMENT(
107 /\/\*\*/,
108 /\*\//,
109 {
110 relevance: 0,
111 contains: [
112 {
113 // eat up @'s in emails to prevent them to be recognized as doctags
114 begin: /\w+@/,
115 relevance: 0
116 },
117 {
118 className: 'doctag',
119 begin: /@[A-Za-z]+/
120 }
121 ]
122 }
123 ),
124 hljs.C_LINE_COMMENT_MODE,
125 hljs.C_BLOCK_COMMENT_MODE,
126 hljs.APOS_STRING_MODE,
127 hljs.QUOTE_STRING_MODE,
128 {
129 className: 'class',
130 beginKeywords: 'aspect',
131 end: /[{;=]/,
132 excludeEnd: true,
133 illegal: /[:;"\[\]]/,
134 contains: [
135 { beginKeywords: 'extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton' },
136 hljs.UNDERSCORE_TITLE_MODE,
137 {
138 begin: /\([^\)]*/,
139 end: /[)]+/,
140 keywords: KEYWORDS.concat(SHORTKEYS),
141 excludeEnd: false
142 }
143 ]
144 },
145 {
146 className: 'class',
147 beginKeywords: 'class interface',
148 end: /[{;=]/,
149 excludeEnd: true,
150 relevance: 0,
151 keywords: 'class interface',
152 illegal: /[:"\[\]]/,
153 contains: [
154 { beginKeywords: 'extends implements' },
155 hljs.UNDERSCORE_TITLE_MODE
156 ]
157 },
158 {
159 // AspectJ Constructs
160 beginKeywords: 'pointcut after before around throwing returning',
161 end: /[)]/,
162 excludeEnd: false,
163 illegal: /["\[\]]/,
164 contains: [
165 {
166 begin: regex.concat(hljs.UNDERSCORE_IDENT_RE, /\s*\(/),
167 returnBegin: true,
168 contains: [ hljs.UNDERSCORE_TITLE_MODE ]
169 }
170 ]
171 },
172 {
173 begin: /[:]/,
174 returnBegin: true,
175 end: /[{;]/,
176 relevance: 0,
177 excludeEnd: false,
178 keywords: KEYWORDS,
179 illegal: /["\[\]]/,
180 contains: [
181 {
182 begin: regex.concat(hljs.UNDERSCORE_IDENT_RE, /\s*\(/),
183 keywords: KEYWORDS.concat(SHORTKEYS),
184 relevance: 0
185 },
186 hljs.QUOTE_STRING_MODE
187 ]
188 },
189 {
190 // this prevents 'new Name(...), or throw ...' from being recognized as a function definition
191 beginKeywords: 'new throw',
192 relevance: 0
193 },
194 {
195 // the function class is a bit different for AspectJ compared to the Java language
196 className: 'function',
197 begin: /\w+ +\w+(\.\w+)?\s*\([^\)]*\)\s*((throws)[\w\s,]+)?[\{;]/,
198 returnBegin: true,
199 end: /[{;=]/,
200 keywords: KEYWORDS,
201 excludeEnd: true,
202 contains: [
203 {
204 begin: regex.concat(hljs.UNDERSCORE_IDENT_RE, /\s*\(/),
205 returnBegin: true,
206 relevance: 0,
207 contains: [ hljs.UNDERSCORE_TITLE_MODE ]
208 },
209 {
210 className: 'params',
211 begin: /\(/,
212 end: /\)/,
213 relevance: 0,
214 keywords: KEYWORDS,
215 contains: [
216 hljs.APOS_STRING_MODE,
217 hljs.QUOTE_STRING_MODE,
218 hljs.C_NUMBER_MODE,
219 hljs.C_BLOCK_COMMENT_MODE
220 ]
221 },
222 hljs.C_LINE_COMMENT_MODE,
223 hljs.C_BLOCK_COMMENT_MODE
224 ]
225 },
226 hljs.C_NUMBER_MODE,
227 {
228 // annotation is also used in this language
229 className: 'meta',
230 begin: /@[A-Za-z]+/
231 }
232 ]
233 };
234 }
235
236 return aspectj;
237
238 })();
239
240 hljs.registerLanguage('aspectj', hljsGrammar);
241 })();