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