1 /*
2 * Generated by ./misc/optlib2c from optlib/cmake.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
initializeCMakeParser(const langType language)11 static void initializeCMakeParser (const langType language)
12 {
13
14 addLanguageRegexTable (language, "main");
15 addLanguageRegexTable (language, "variable");
16 addLanguageRegexTable (language, "variableScoped");
17 addLanguageRegexTable (language, "function");
18 addLanguageRegexTable (language, "macro");
19 addLanguageRegexTable (language, "target");
20 addLanguageRegexTable (language, "option");
21 addLanguageRegexTable (language, "project");
22 addLanguageRegexTable (language, "commentBegin");
23 addLanguageRegexTable (language, "commentMultiline");
24 addLanguageRegexTable (language, "skipComment");
25 addLanguageRegexTable (language, "skipWhiteSpace");
26 addLanguageRegexTable (language, "skipToName");
27 addLanguageRegexTable (language, "nextToken");
28 addLanguageRegexTable (language, "inFunction");
29 addLanguageRegexTable (language, "inVariable");
30
31 addLanguageTagMultiTableRegex (language, "main",
32 "^[^sSfFmMaAoOpP# \t\n][^ #\t\n]*[ \t\n]+",
33 "", "", "", NULL);
34 addLanguageTagMultiTableRegex (language, "main",
35 "^#",
36 "", "", "{tenter=commentBegin}", NULL);
37 addLanguageTagMultiTableRegex (language, "main",
38 "^set[ \t]*\\(",
39 "", "", "{icase}{tenter=variable}", NULL);
40 addLanguageTagMultiTableRegex (language, "main",
41 "^function[ \t]*\\(",
42 "", "", "{icase}{tenter=function}", NULL);
43 addLanguageTagMultiTableRegex (language, "main",
44 "^macro[ \t]*\\(",
45 "", "", "{icase}{tenter=macro}", NULL);
46 addLanguageTagMultiTableRegex (language, "main",
47 "^add_(custom_target|executable|library)[ \t]*\\(",
48 "", "", "{icase}{tenter=target}", NULL);
49 addLanguageTagMultiTableRegex (language, "main",
50 "^option[ \t]*\\(",
51 "", "", "{icase}{tenter=option}", NULL);
52 addLanguageTagMultiTableRegex (language, "main",
53 "^project[ \t]*\\(",
54 "", "", "{icase}{tenter=project}", NULL);
55 addLanguageTagMultiTableRegex (language, "main",
56 "^[^ \t\n]+[ \t\n]*",
57 "", "", "", NULL);
58 addLanguageTagMultiTableRegex (language, "main",
59 "^[ \t\n]+",
60 "", "", "", NULL);
61 addLanguageTagMultiTableRegex (language, "variable",
62 "^([A-Za-z0-9_.-]+)[ \t\n\\)]+",
63 "\\1", "v", "{tleave}", NULL);
64 addLanguageTagMultiTableRegex (language, "variable",
65 "^[ \t\n]+",
66 "", "", "", NULL);
67 addLanguageTagMultiTableRegex (language, "variable",
68 "^#",
69 "", "", "{tenter=commentBegin}", NULL);
70 addLanguageTagMultiTableRegex (language, "variable",
71 "^([A-Za-z0-9_.-]+)(#)",
72 "\\1", "v", "{tleave}{_advanceTo=2start}", NULL);
73 addLanguageTagMultiTableRegex (language, "variableScoped",
74 "^[A-Za-z0-9_.-]+[# \t\n\\)]",
75 "", "", "{tjump=inVariable}{_advanceTo=0start}", NULL);
76 addLanguageTagMultiTableRegex (language, "variableScoped",
77 "^[ \t\n]+",
78 "", "", "", NULL);
79 addLanguageTagMultiTableRegex (language, "variableScoped",
80 "^#",
81 "", "", "{tenter=commentBegin}", NULL);
82 addLanguageTagMultiTableRegex (language, "function",
83 "^([A-Za-z_][A-Za-z0-9_]*)([# \t\n\\)])",
84 "\\1", "f", "{_advanceTo=2start}{tjump=inFunction}{scope=push}", NULL);
85 addLanguageTagMultiTableRegex (language, "function",
86 "^[ \t\n]+",
87 "", "", "", NULL);
88 addLanguageTagMultiTableRegex (language, "function",
89 "^#",
90 "", "", "{tenter=commentBegin}", NULL);
91 addLanguageTagMultiTableRegex (language, "macro",
92 "^([A-Za-z_][A-Za-z0-9_]*)[ \t\n\\)]+",
93 "\\1", "m", "{tleave}", NULL);
94 addLanguageTagMultiTableRegex (language, "macro",
95 "^[ \t\n]+",
96 "", "", "", NULL);
97 addLanguageTagMultiTableRegex (language, "macro",
98 "^#",
99 "", "", "{tenter=commentBegin}", NULL);
100 addLanguageTagMultiTableRegex (language, "macro",
101 "^([A-Za-z_][A-Za-z0-9_]*)(#)",
102 "\\1", "m", "{tleave}{_advanceTo=2start}", NULL);
103 addLanguageTagMultiTableRegex (language, "target",
104 "^([A-Za-z0-9_.-]+)[ \t\n\\)]+",
105 "\\1", "t", "{tleave}", NULL);
106 addLanguageTagMultiTableRegex (language, "target",
107 "^[ \t\n]+",
108 "", "", "", NULL);
109 addLanguageTagMultiTableRegex (language, "target",
110 "^#",
111 "", "", "{tenter=commentBegin}", NULL);
112 addLanguageTagMultiTableRegex (language, "target",
113 "^([A-Za-z0-9_.-]+)(#)",
114 "\\1", "t", "{tleave}{_advanceTo=2start}", NULL);
115 addLanguageTagMultiTableRegex (language, "option",
116 "^([A-Za-z0-9_.-]+)[ \t\n\\)]+",
117 "\\1", "D", "{tleave}", NULL);
118 addLanguageTagMultiTableRegex (language, "option",
119 "^[ \t\n]+",
120 "", "", "", NULL);
121 addLanguageTagMultiTableRegex (language, "option",
122 "^#",
123 "", "", "{tenter=commentBegin}", NULL);
124 addLanguageTagMultiTableRegex (language, "option",
125 "^([A-Za-z0-9_.-]+)(#)",
126 "\\1", "D", "{tleave}{_advanceTo=2start}", NULL);
127 addLanguageTagMultiTableRegex (language, "project",
128 "^([A-Za-z0-9_.-]+)([# \t\n\\)])",
129 "\\1", "p", "{tleave}{_advanceTo=2start}", NULL);
130 addLanguageTagMultiTableRegex (language, "project",
131 "^[ \t\n]+",
132 "", "", "", NULL);
133 addLanguageTagMultiTableRegex (language, "project",
134 "^#",
135 "", "", "{tenter=commentBegin}", NULL);
136 addLanguageTagMultiTableRegex (language, "commentBegin",
137 "^\\[\\[",
138 "", "", "{tjump=commentMultiline}", NULL);
139 addLanguageTagMultiTableRegex (language, "commentBegin",
140 "^[^\n]*[ \t\n]*",
141 "", "", "{tleave}", NULL);
142 addLanguageTagMultiTableRegex (language, "commentMultiline",
143 "^\\]\\][ \t\n]*",
144 "", "", "{tleave}", NULL);
145 addLanguageTagMultiTableRegex (language, "commentMultiline",
146 "^.[^]]*",
147 "", "", "", NULL);
148 addLanguageTagMultiTableRegex (language, "skipComment",
149 "^#",
150 "", "", "{tenter=commentBegin}", NULL);
151 addLanguageTagMultiTableRegex (language, "skipWhiteSpace",
152 "^[ \t\n]+",
153 "", "", "", NULL);
154 addLanguageTagMultiTableRegex (language, "skipToName",
155 "^[ \t\n]+",
156 "", "", "", NULL);
157 addLanguageTagMultiTableRegex (language, "skipToName",
158 "^#",
159 "", "", "{tenter=commentBegin}", NULL);
160 addLanguageTagMultiTableRegex (language, "nextToken",
161 "^[^ \t\n]+[ \t\n]*",
162 "", "", "", NULL);
163 addLanguageTagMultiTableRegex (language, "inFunction",
164 "^([^eEsSfFmMaAoO# \t\n]|[eE][^nN]|[eE][nN][^dD]|[eE][nN][dD][^fF#])[^ #\t\n]*[ \t\n]+",
165 "", "", "", NULL);
166 addLanguageTagMultiTableRegex (language, "inFunction",
167 "^#",
168 "", "", "{tenter=commentBegin}", NULL);
169 addLanguageTagMultiTableRegex (language, "inFunction",
170 "^set[ \t]*\\(",
171 "", "", "{icase}{tenter=variableScoped}", NULL);
172 addLanguageTagMultiTableRegex (language, "inFunction",
173 "^function[ \t]*\\(",
174 "", "", "{icase}{tenter=function}", NULL);
175 addLanguageTagMultiTableRegex (language, "inFunction",
176 "^macro[ \t]*\\(",
177 "", "", "{icase}{tenter=macro}", NULL);
178 addLanguageTagMultiTableRegex (language, "inFunction",
179 "^endfunction[ \t]*\\([^)]*\\)",
180 "", "", "{icase}{tleave}{scope=pop}", NULL);
181 addLanguageTagMultiTableRegex (language, "inFunction",
182 "^add_(custom_target|executable|library)[ \t]*\\(",
183 "", "", "{icase}{tenter=target}", NULL);
184 addLanguageTagMultiTableRegex (language, "inFunction",
185 "^option[ \t]*\\(",
186 "", "", "{icase}{tenter=option}", NULL);
187 addLanguageTagMultiTableRegex (language, "inFunction",
188 "^[^ \t\n]+[ \t\n]*",
189 "", "", "", NULL);
190 addLanguageTagMultiTableRegex (language, "inFunction",
191 "^[ \t\n]+",
192 "", "", "", NULL);
193 addLanguageTagMultiTableRegex (language, "inVariable",
194 "^[^\")]+((\"(\\\\\"|[^\"])*\")([^\")]+(\"(\\\\\"|[^\"])*\"))*)[ \t\n]PARENT_SCOPE[# \t\n)]",
195 "", "", "{tjump=variable}{_advanceTo=0start}", NULL);
196 addLanguageTagMultiTableRegex (language, "inVariable",
197 "^([A-Za-z0-9_.-]+)[ \t\n\\)]+",
198 "\\1", "v", "{tleave}{scope=ref}", NULL);
199 addLanguageTagMultiTableRegex (language, "inVariable",
200 "^([A-Za-z0-9_.-]+)(#)",
201 "\\1", "v", "{tleave}{scope=ref}{_advanceTo=2start}", NULL);
202 }
203
CMakeParser(void)204 extern parserDefinition* CMakeParser (void)
205 {
206 static const char *const extensions [] = {
207 "cmake",
208 NULL
209 };
210
211 static const char *const aliases [] = {
212 NULL
213 };
214
215 static const char *const patterns [] = {
216 "CMakeLists.txt",
217 NULL
218 };
219
220 static kindDefinition CMakeKindTable [] = {
221 {
222 true, 'f', "function", "functions",
223 },
224 {
225 true, 'm', "macro", "macros",
226 },
227 {
228 true, 't', "target", "targets",
229 },
230 {
231 true, 'v', "variable", "variable definitions",
232 },
233 {
234 true, 'D', "option", "options specified with -D",
235 },
236 {
237 true, 'p', "project", "projects",
238 },
239 };
240
241 parserDefinition* const def = parserNew ("CMake");
242
243 def->enabled = true;
244 def->extensions = extensions;
245 def->patterns = patterns;
246 def->aliases = aliases;
247 def->method = METHOD_NOT_CRAFTED|METHOD_REGEX;
248 def->useCork = CORK_QUEUE;
249 def->kindTable = CMakeKindTable;
250 def->kindCount = ARRAY_SIZE(CMakeKindTable);
251 def->initialize = initializeCMakeParser;
252
253 return def;
254 }
255