1 /*
2 * Generated by ./misc/optlib2c from optlib/systemtap.ctags, Don't edit this manually.
3 */
4 #include "general.h"
5 #include "parse.h"
6 #include "routines.h"
7 #include "field.h"
8 #include "xtag.h"
9
10
initializeSystemTapParser(const langType language)11 static void initializeSystemTapParser (const langType language)
12 {
13
14 addLanguageRegexTable (language, "main");
15 addLanguageRegexTable (language, "comment");
16 addLanguageRegexTable (language, "any");
17 addLanguageRegexTable (language, "skipWhiteSpace");
18 addLanguageRegexTable (language, "skipLiteral");
19 addLanguageRegexTable (language, "ssliteral");
20 addLanguageRegexTable (language, "dsliteral");
21 addLanguageRegexTable (language, "arraysize");
22 addLanguageRegexTable (language, "stmtend");
23 addLanguageRegexTable (language, "probe");
24 addLanguageRegexTable (language, "probeBody");
25 addLanguageRegexTable (language, "probeStmt");
26 addLanguageRegexTable (language, "func");
27 addLanguageRegexTable (language, "funcSig");
28 addLanguageRegexTable (language, "funcBody");
29 addLanguageRegexTable (language, "funcStmt");
30 addLanguageRegexTable (language, "cfuncStmt");
31 addLanguageRegexTable (language, "vars");
32 addLanguageRegexTable (language, "macro");
33 addLanguageRegexTable (language, "macroSig");
34 addLanguageRegexTable (language, "macroBody");
35 addLanguageRegexTable (language, "macroStmt");
36 addLanguageRegexTable (language, "comment_multiline");
37 addLanguageRegexTable (language, "comment_oneline");
38
39 addLanguageTagMultiTableRegex (language, "main",
40 "^[^#/'\"pfg@%]+",
41 "", "", "", NULL);
42 addLanguageTagMultiTableRegex (language, "main",
43 "^probe[[:space:]]+",
44 "", "", "{tenter=probe}", NULL);
45 addLanguageTagMultiTableRegex (language, "main",
46 "^\\#",
47 "", "", "{tenter=comment_oneline}", NULL);
48 addLanguageTagMultiTableRegex (language, "main",
49 "^/\\*",
50 "", "", "{tenter=comment_multiline}", NULL);
51 addLanguageTagMultiTableRegex (language, "main",
52 "^//",
53 "", "", "{tenter=comment_oneline}", NULL);
54 addLanguageTagMultiTableRegex (language, "main",
55 "^@define[[:space:]]+",
56 "", "", "{tenter=macro}", NULL);
57 addLanguageTagMultiTableRegex (language, "main",
58 "^function[[:space:]]+",
59 "", "", "{tenter=func}", NULL);
60 addLanguageTagMultiTableRegex (language, "main",
61 "^global[[:space:]]+",
62 "", "", "{tenter=vars}", NULL);
63 addLanguageTagMultiTableRegex (language, "main",
64 "^%[\\{(]",
65 "", "", "{tenter=cfuncStmt}", NULL);
66 addLanguageTagMultiTableRegex (language, "main",
67 "^.",
68 "", "", "", NULL);
69 addLanguageTagMultiTableRegex (language, "comment",
70 "^\\#",
71 "", "", "{tenter=comment_oneline}", NULL);
72 addLanguageTagMultiTableRegex (language, "comment",
73 "^/\\*",
74 "", "", "{tenter=comment_multiline}", NULL);
75 addLanguageTagMultiTableRegex (language, "comment",
76 "^//",
77 "", "", "{tenter=comment_oneline}", NULL);
78 addLanguageTagMultiTableRegex (language, "any",
79 "^.",
80 "", "", "", NULL);
81 addLanguageTagMultiTableRegex (language, "skipWhiteSpace",
82 "^[ \t\n]+",
83 "", "", "", NULL);
84 addLanguageTagMultiTableRegex (language, "skipLiteral",
85 "^\"",
86 "", "", "{tenter=dsliteral}", NULL);
87 addLanguageTagMultiTableRegex (language, "skipLiteral",
88 "^'",
89 "", "", "{tenter=ssliteral}", NULL);
90 addLanguageTagMultiTableRegex (language, "ssliteral",
91 "^[^']*'",
92 "", "", "{tleave}", NULL);
93 addLanguageTagMultiTableRegex (language, "ssliteral",
94 "^[^']+",
95 "", "", "", NULL);
96 addLanguageTagMultiTableRegex (language, "dsliteral",
97 "^[^\"\\\\]+",
98 "", "", "", NULL);
99 addLanguageTagMultiTableRegex (language, "dsliteral",
100 "^\"",
101 "", "", "{tleave}", NULL);
102 addLanguageTagMultiTableRegex (language, "dsliteral",
103 "^\\\\.",
104 "", "", "", NULL);
105 addLanguageTagMultiTableRegex (language, "arraysize",
106 "^[^]/#]+",
107 "", "", "", NULL);
108 addLanguageTagMultiTableRegex (language, "arraysize",
109 "^]",
110 "", "", "{tleave}", NULL);
111 addLanguageTagMultiTableRegex (language, "arraysize",
112 "^.",
113 "", "", "", NULL);
114 addLanguageTagMultiTableRegex (language, "stmtend",
115 "^",
116 "", "", "{tleave}{scope=pop}", NULL);
117 addLanguageTagMultiTableRegex (language, "probe",
118 "^([[:alpha:]_][[:alnum:]_.]*)[[:space:]]*\\+?=[[:space:]]*",
119 "\\1", "p", "{tenter=probeBody}{scope=push}", NULL);
120 addLanguageTagMultiTableRegex (language, "probe",
121 "^([[:alpha:]_][[:alnum:]_.]*)[[:space:]]*",
122 "", "", "{tenter=probeBody}{scope=push}", NULL);
123 addLanguageTagMultiTableRegex (language, "probeBody",
124 "^[^\\{/#'\"]+",
125 "", "", "", NULL);
126 addLanguageTagMultiTableRegex (language, "probeBody",
127 "^\\{",
128 "", "", "{tenter=probeStmt,stmtend}", NULL);
129 addLanguageTagMultiTableRegex (language, "probeBody",
130 "^\"",
131 "", "", "{tenter=dsliteral}", NULL);
132 addLanguageTagMultiTableRegex (language, "probeBody",
133 "^'",
134 "", "", "{tenter=ssliteral}", NULL);
135 addLanguageTagMultiTableRegex (language, "probeBody",
136 "^\\#",
137 "", "", "{tenter=comment_oneline}", NULL);
138 addLanguageTagMultiTableRegex (language, "probeBody",
139 "^/\\*",
140 "", "", "{tenter=comment_multiline}", NULL);
141 addLanguageTagMultiTableRegex (language, "probeBody",
142 "^//",
143 "", "", "{tenter=comment_oneline}", NULL);
144 addLanguageTagMultiTableRegex (language, "probeBody",
145 "^.",
146 "", "", "", NULL);
147 addLanguageTagMultiTableRegex (language, "probeStmt",
148 "^[^\\{\\}/#'\"]+",
149 "", "", "", NULL);
150 addLanguageTagMultiTableRegex (language, "probeStmt",
151 "^\\}",
152 "", "", "{tleave}", NULL);
153 addLanguageTagMultiTableRegex (language, "probeStmt",
154 "^\"",
155 "", "", "{tenter=dsliteral}", NULL);
156 addLanguageTagMultiTableRegex (language, "probeStmt",
157 "^'",
158 "", "", "{tenter=ssliteral}", NULL);
159 addLanguageTagMultiTableRegex (language, "probeStmt",
160 "^\\{",
161 "", "", "{tenter=probeStmt}", NULL);
162 addLanguageTagMultiTableRegex (language, "probeStmt",
163 "^\\#",
164 "", "", "{tenter=comment_oneline}", NULL);
165 addLanguageTagMultiTableRegex (language, "probeStmt",
166 "^/\\*",
167 "", "", "{tenter=comment_multiline}", NULL);
168 addLanguageTagMultiTableRegex (language, "probeStmt",
169 "^//",
170 "", "", "{tenter=comment_oneline}", NULL);
171 addLanguageTagMultiTableRegex (language, "probeStmt",
172 "^.",
173 "", "", "", NULL);
174 addLanguageTagMultiTableRegex (language, "func",
175 "^([[:alpha:]_][[:alnum:]_]*)(:[[:alpha:]_][[:alnum:]_]*)?[[:space:]]*\\(",
176 "\\1", "f", "{tenter=funcSig,funcBody}{scope=push}", NULL);
177 addLanguageTagMultiTableRegex (language, "funcSig",
178 "^[^)/]+",
179 "", "", "", NULL);
180 addLanguageTagMultiTableRegex (language, "funcSig",
181 "^\\)(:[0-9]+)?",
182 "", "", "{tleave}", NULL);
183 addLanguageTagMultiTableRegex (language, "funcSig",
184 "^\\#",
185 "", "", "{tenter=comment_oneline}", NULL);
186 addLanguageTagMultiTableRegex (language, "funcSig",
187 "^/\\*",
188 "", "", "{tenter=comment_multiline}", NULL);
189 addLanguageTagMultiTableRegex (language, "funcSig",
190 "^//",
191 "", "", "{tenter=comment_oneline}", NULL);
192 addLanguageTagMultiTableRegex (language, "funcSig",
193 "^.",
194 "", "", "", NULL);
195 addLanguageTagMultiTableRegex (language, "funcBody",
196 "^[^\\{%'\"#]+",
197 "", "", "", NULL);
198 addLanguageTagMultiTableRegex (language, "funcBody",
199 "^\\{",
200 "", "", "{tenter=funcStmt,stmtend}", NULL);
201 addLanguageTagMultiTableRegex (language, "funcBody",
202 "^%[\\{(]",
203 "", "", "{tenter=cfuncStmt,stmtend}", NULL);
204 addLanguageTagMultiTableRegex (language, "funcBody",
205 "^\\#",
206 "", "", "{tenter=comment_oneline}", NULL);
207 addLanguageTagMultiTableRegex (language, "funcBody",
208 "^/\\*",
209 "", "", "{tenter=comment_multiline}", NULL);
210 addLanguageTagMultiTableRegex (language, "funcBody",
211 "^//",
212 "", "", "{tenter=comment_oneline}", NULL);
213 addLanguageTagMultiTableRegex (language, "funcBody",
214 "^.",
215 "", "", "", NULL);
216 addLanguageTagMultiTableRegex (language, "funcStmt",
217 "^[^%/#'\"\\{\\}]+",
218 "", "", "", NULL);
219 addLanguageTagMultiTableRegex (language, "funcStmt",
220 "^\\}",
221 "", "", "{tleave}", NULL);
222 addLanguageTagMultiTableRegex (language, "funcStmt",
223 "^\"",
224 "", "", "{tenter=dsliteral}", NULL);
225 addLanguageTagMultiTableRegex (language, "funcStmt",
226 "^'",
227 "", "", "{tenter=ssliteral}", NULL);
228 addLanguageTagMultiTableRegex (language, "funcStmt",
229 "^\\#",
230 "", "", "{tenter=comment_oneline}", NULL);
231 addLanguageTagMultiTableRegex (language, "funcStmt",
232 "^/\\*",
233 "", "", "{tenter=comment_multiline}", NULL);
234 addLanguageTagMultiTableRegex (language, "funcStmt",
235 "^//",
236 "", "", "{tenter=comment_oneline}", NULL);
237 addLanguageTagMultiTableRegex (language, "funcStmt",
238 "^%[\\{(]",
239 "", "", "{tenter=cfuncStmt}", NULL);
240 addLanguageTagMultiTableRegex (language, "funcStmt",
241 "^\\{",
242 "", "", "{tenter=funcStmt}", NULL);
243 addLanguageTagMultiTableRegex (language, "funcStmt",
244 "^.",
245 "", "", "", NULL);
246 addLanguageTagMultiTableRegex (language, "cfuncStmt",
247 "^[^%/#'\"]+",
248 "", "", "", NULL);
249 addLanguageTagMultiTableRegex (language, "cfuncStmt",
250 "^\\#",
251 "", "", "{tenter=comment_oneline}", NULL);
252 addLanguageTagMultiTableRegex (language, "cfuncStmt",
253 "^/\\*",
254 "", "", "{tenter=comment_multiline}", NULL);
255 addLanguageTagMultiTableRegex (language, "cfuncStmt",
256 "^//",
257 "", "", "{tenter=comment_oneline}", NULL);
258 addLanguageTagMultiTableRegex (language, "cfuncStmt",
259 "^\"",
260 "", "", "{tenter=dsliteral}", NULL);
261 addLanguageTagMultiTableRegex (language, "cfuncStmt",
262 "^'",
263 "", "", "{tenter=ssliteral}", NULL);
264 addLanguageTagMultiTableRegex (language, "cfuncStmt",
265 "^%[\\})]",
266 "", "", "{tleave}", NULL);
267 addLanguageTagMultiTableRegex (language, "cfuncStmt",
268 "^%[\\{(]",
269 "", "", "{tenter=cfuncStmt}", NULL);
270 addLanguageTagMultiTableRegex (language, "cfuncStmt",
271 "^.",
272 "", "", "", NULL);
273 addLanguageTagMultiTableRegex (language, "vars",
274 "^([[:alpha:]_][[:alnum:]_]*)%?",
275 "\\1", "v", "", NULL);
276 addLanguageTagMultiTableRegex (language, "vars",
277 "^[\n]",
278 "", "", "{tleave}", NULL);
279 addLanguageTagMultiTableRegex (language, "vars",
280 "^,[[:space:]]*",
281 "", "", "{tjump=vars}", NULL);
282 addLanguageTagMultiTableRegex (language, "vars",
283 "^\\#",
284 "", "", "{tenter=comment_oneline}", NULL);
285 addLanguageTagMultiTableRegex (language, "vars",
286 "^/\\*",
287 "", "", "{tenter=comment_multiline}", NULL);
288 addLanguageTagMultiTableRegex (language, "vars",
289 "^//",
290 "", "", "{tenter=comment_oneline}", NULL);
291 addLanguageTagMultiTableRegex (language, "vars",
292 "^\"",
293 "", "", "{tenter=dsliteral}", NULL);
294 addLanguageTagMultiTableRegex (language, "vars",
295 "^'",
296 "", "", "{tenter=ssliteral}", NULL);
297 addLanguageTagMultiTableRegex (language, "vars",
298 "^\\[",
299 "", "", "{tenter=arraysize}", NULL);
300 addLanguageTagMultiTableRegex (language, "vars",
301 "^.",
302 "", "", "", NULL);
303 addLanguageTagMultiTableRegex (language, "macro",
304 "^([[:alpha:]_][[:alnum:]_]*)[[:space:]]*\\(",
305 "\\1", "m", "{tenter=macroSig,macroBody}{scope=push}", NULL);
306 addLanguageTagMultiTableRegex (language, "macro",
307 "^([[:alpha:]_][[:alnum:]_]*)[[:space:]]*",
308 "\\1", "m", "{tenter=macroBody,stmtend}{scope=push}", NULL);
309 addLanguageTagMultiTableRegex (language, "macroSig",
310 "^[^#/)]+",
311 "", "", "", NULL);
312 addLanguageTagMultiTableRegex (language, "macroSig",
313 "^\\)",
314 "", "", "{tleave}", NULL);
315 addLanguageTagMultiTableRegex (language, "macroSig",
316 "^\\#",
317 "", "", "{tenter=comment_oneline}", NULL);
318 addLanguageTagMultiTableRegex (language, "macroSig",
319 "^/\\*",
320 "", "", "{tenter=comment_multiline}", NULL);
321 addLanguageTagMultiTableRegex (language, "macroSig",
322 "^//",
323 "", "", "{tenter=comment_oneline}", NULL);
324 addLanguageTagMultiTableRegex (language, "macroSig",
325 "^.",
326 "", "", "", NULL);
327 addLanguageTagMultiTableRegex (language, "macroBody",
328 "^[^%#/)]+",
329 "", "", "", NULL);
330 addLanguageTagMultiTableRegex (language, "macroBody",
331 "^%\\(",
332 "", "", "{tenter=macroStmt,stmtend}", NULL);
333 addLanguageTagMultiTableRegex (language, "macroBody",
334 "^\\#",
335 "", "", "{tenter=comment_oneline}", NULL);
336 addLanguageTagMultiTableRegex (language, "macroBody",
337 "^/\\*",
338 "", "", "{tenter=comment_multiline}", NULL);
339 addLanguageTagMultiTableRegex (language, "macroBody",
340 "^//",
341 "", "", "{tenter=comment_oneline}", NULL);
342 addLanguageTagMultiTableRegex (language, "macroBody",
343 "^.",
344 "", "", "", NULL);
345 addLanguageTagMultiTableRegex (language, "macroStmt",
346 "^[^#/%'\"]+",
347 "", "", "", NULL);
348 addLanguageTagMultiTableRegex (language, "macroStmt",
349 "^%\\)",
350 "", "", "{tleave}", NULL);
351 addLanguageTagMultiTableRegex (language, "macroStmt",
352 "^\"",
353 "", "", "{tenter=dsliteral}", NULL);
354 addLanguageTagMultiTableRegex (language, "macroStmt",
355 "^'",
356 "", "", "{tenter=ssliteral}", NULL);
357 addLanguageTagMultiTableRegex (language, "macroStmt",
358 "^\\#",
359 "", "", "{tenter=comment_oneline}", NULL);
360 addLanguageTagMultiTableRegex (language, "macroStmt",
361 "^/\\*",
362 "", "", "{tenter=comment_multiline}", NULL);
363 addLanguageTagMultiTableRegex (language, "macroStmt",
364 "^//",
365 "", "", "{tenter=comment_oneline}", NULL);
366 addLanguageTagMultiTableRegex (language, "macroStmt",
367 "^%\\(",
368 "", "", "{tenter=macroStmt}", NULL);
369 addLanguageTagMultiTableRegex (language, "macroStmt",
370 "^.",
371 "", "", "", NULL);
372 addLanguageTagMultiTableRegex (language, "comment_multiline",
373 "^[^*]+",
374 "", "", "", NULL);
375 addLanguageTagMultiTableRegex (language, "comment_multiline",
376 "^\\*/",
377 "", "", "{tleave}", NULL);
378 addLanguageTagMultiTableRegex (language, "comment_multiline",
379 "^.",
380 "", "", "", NULL);
381 addLanguageTagMultiTableRegex (language, "comment_oneline",
382 "^[^\n]*\n",
383 "", "", "{tleave}", NULL);
384 addLanguageTagMultiTableRegex (language, "comment_oneline",
385 "^.",
386 "", "", "", NULL);
387 }
388
SystemTapParser(void)389 extern parserDefinition* SystemTapParser (void)
390 {
391 static const char *const extensions [] = {
392 "stp",
393 "stpm",
394 NULL
395 };
396
397 static const char *const aliases [] = {
398 "stap",
399 NULL
400 };
401
402 static const char *const patterns [] = {
403 NULL
404 };
405
406 static kindDefinition SystemTapKindTable [] = {
407 {
408 true, 'p', "probe", "probe aliases",
409 },
410 {
411 true, 'f', "function", "functions",
412 },
413 {
414 true, 'v', "variable", "variables",
415 },
416 {
417 true, 'm', "macro", "macros",
418 },
419 };
420
421 parserDefinition* const def = parserNew ("SystemTap");
422
423 def->enabled = true;
424 def->extensions = extensions;
425 def->patterns = patterns;
426 def->aliases = aliases;
427 def->method = METHOD_NOT_CRAFTED|METHOD_REGEX;
428 def->useCork = CORK_QUEUE;
429 def->kindTable = SystemTapKindTable;
430 def->kindCount = ARRAY_SIZE(SystemTapKindTable);
431 def->initialize = initializeSystemTapParser;
432
433 return def;
434 }
435