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