1 /*
2 * Generated by ./misc/optlib2c from optlib/lex.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 #include "selectors.h"
10
11
initializeLEXParser(const langType language)12 static void initializeLEXParser (const langType language)
13 {
14
15 addLanguageRegexTable (language, "main");
16 addLanguageRegexTable (language, "comment");
17 addLanguageRegexTable (language, "codeblock");
18 addLanguageRegexTable (language, "rulesec");
19 addLanguageRegexTable (language, "usercode");
20 addLanguageRegexTable (language, "cond");
21
22 addLanguageTagMultiTableRegex (language, "main",
23 "^/\\*",
24 "", "", "{tenter=comment}", NULL);
25 addLanguageTagMultiTableRegex (language, "main",
26 "^%[sx][ \t]+",
27 "", "", "{tenter=cond}", NULL);
28 addLanguageTagMultiTableRegex (language, "main",
29 "^%(top)?\\{",
30 "", "", "{tenter=codeblock}{_guest=C,0end,}", NULL);
31 addLanguageTagMultiTableRegex (language, "main",
32 "^%%",
33 "", "", "{tjump=rulesec}", NULL);
34 addLanguageTagMultiTableRegex (language, "main",
35 "^([a-zA-Z_][-a-zA-Z0-9_]*)[^\n]+\n",
36 "\\1", "r", "", NULL);
37 addLanguageTagMultiTableRegex (language, "main",
38 "^[^\n]*\n",
39 "", "", "", NULL);
40 addLanguageTagMultiTableRegex (language, "comment",
41 "^[^*]+",
42 "", "", "", NULL);
43 addLanguageTagMultiTableRegex (language, "comment",
44 "^\\*/",
45 "", "", "{tleave}", NULL);
46 addLanguageTagMultiTableRegex (language, "comment",
47 "^.",
48 "", "", "", NULL);
49 addLanguageTagMultiTableRegex (language, "codeblock",
50 "^[^%]+",
51 "", "", "", NULL);
52 addLanguageTagMultiTableRegex (language, "codeblock",
53 "^%\\}",
54 "", "", "{tleave}{_guest=,,0start}", NULL);
55 addLanguageTagMultiTableRegex (language, "codeblock",
56 "^.",
57 "", "", "", NULL);
58 addLanguageTagMultiTableRegex (language, "rulesec",
59 "^[^%]+",
60 "", "", "", NULL);
61 addLanguageTagMultiTableRegex (language, "rulesec",
62 "^%%",
63 "", "", "{tjump=usercode}{_guest=C,0end,}", NULL);
64 addLanguageTagMultiTableRegex (language, "rulesec",
65 "^.",
66 "", "", "", NULL);
67 addLanguageTagMultiTableRegex (language, "usercode",
68 "^.+",
69 "", "", "{_guest=,,0end}", NULL);
70 addLanguageTagMultiTableRegex (language, "cond",
71 "^([_a-zA-Z][_a-zA-Z0-9]*)[ \t]*",
72 "\\1", "c", "", NULL);
73 addLanguageTagMultiTableRegex (language, "cond",
74 "^\n",
75 "", "", "{tleave}", NULL);
76 addLanguageTagMultiTableRegex (language, "cond",
77 "^.",
78 "", "", "", NULL);
79 }
80
LEXParser(void)81 extern parserDefinition* LEXParser (void)
82 {
83 static const char *const extensions [] = {
84 "lex",
85 "l",
86 NULL
87 };
88
89 static const char *const aliases [] = {
90 NULL
91 };
92
93 static const char *const patterns [] = {
94 NULL
95 };
96
97 static kindDefinition LEXKindTable [] = {
98 {
99 true, 'r', "regex", "named regular expression",
100 },
101 {
102 true, 'c', "cond", "start or exclusive condition",
103 },
104 };
105 static selectLanguage selectors[] = { selectLispOrLEXByLEXMarker, NULL };
106
107 parserDefinition* const def = parserNew ("LEX");
108
109 def->enabled = true;
110 def->extensions = extensions;
111 def->patterns = patterns;
112 def->aliases = aliases;
113 def->selectLanguage= selectors;
114 def->method = METHOD_NOT_CRAFTED|METHOD_REGEX;
115 def->kindTable = LEXKindTable;
116 def->kindCount = ARRAY_SIZE(LEXKindTable);
117 def->initialize = initializeLEXParser;
118
119 return def;
120 }
121