xref: /Universal-ctags/optlib/cmake.c (revision 6b1a862e526d5017f9f212a321f59d67c859d521)
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