1806f296cSHadriel Kaplan /*
2806f296cSHadriel Kaplan * Generated by ./misc/optlib2c from optlib/cmake.ctags, Don't edit this manually.
3806f296cSHadriel Kaplan */
4806f296cSHadriel Kaplan #include "general.h"
5806f296cSHadriel Kaplan #include "parse.h"
6806f296cSHadriel Kaplan #include "routines.h"
70d502ef0SMasatake YAMATO #include "field.h"
80d502ef0SMasatake YAMATO #include "xtag.h"
9806f296cSHadriel Kaplan
10806f296cSHadriel Kaplan
initializeCMakeParser(const langType language)11fd51425fSMasatake YAMATO static void initializeCMakeParser (const langType language)
12806f296cSHadriel Kaplan {
13806f296cSHadriel Kaplan
14806f296cSHadriel Kaplan addLanguageRegexTable (language, "main");
15806f296cSHadriel Kaplan addLanguageRegexTable (language, "variable");
163e144175SHadriel Kaplan addLanguageRegexTable (language, "variableScoped");
17806f296cSHadriel Kaplan addLanguageRegexTable (language, "function");
18806f296cSHadriel Kaplan addLanguageRegexTable (language, "macro");
19806f296cSHadriel Kaplan addLanguageRegexTable (language, "target");
20806f296cSHadriel Kaplan addLanguageRegexTable (language, "option");
21806f296cSHadriel Kaplan addLanguageRegexTable (language, "project");
22806f296cSHadriel Kaplan addLanguageRegexTable (language, "commentBegin");
23806f296cSHadriel Kaplan addLanguageRegexTable (language, "commentMultiline");
24806f296cSHadriel Kaplan addLanguageRegexTable (language, "skipComment");
25806f296cSHadriel Kaplan addLanguageRegexTable (language, "skipWhiteSpace");
26806f296cSHadriel Kaplan addLanguageRegexTable (language, "skipToName");
27806f296cSHadriel Kaplan addLanguageRegexTable (language, "nextToken");
283e144175SHadriel Kaplan addLanguageRegexTable (language, "inFunction");
293e144175SHadriel Kaplan addLanguageRegexTable (language, "inVariable");
30806f296cSHadriel Kaplan
31806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "main",
32806f296cSHadriel Kaplan "^[^sSfFmMaAoOpP# \t\n][^ #\t\n]*[ \t\n]+",
33806f296cSHadriel Kaplan "", "", "", NULL);
34806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "main",
35806f296cSHadriel Kaplan "^#",
36806f296cSHadriel Kaplan "", "", "{tenter=commentBegin}", NULL);
37806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "main",
38806f296cSHadriel Kaplan "^set[ \t]*\\(",
39806f296cSHadriel Kaplan "", "", "{icase}{tenter=variable}", NULL);
40806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "main",
41806f296cSHadriel Kaplan "^function[ \t]*\\(",
42806f296cSHadriel Kaplan "", "", "{icase}{tenter=function}", NULL);
43806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "main",
44806f296cSHadriel Kaplan "^macro[ \t]*\\(",
45806f296cSHadriel Kaplan "", "", "{icase}{tenter=macro}", NULL);
46806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "main",
47806f296cSHadriel Kaplan "^add_(custom_target|executable|library)[ \t]*\\(",
48806f296cSHadriel Kaplan "", "", "{icase}{tenter=target}", NULL);
49806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "main",
50806f296cSHadriel Kaplan "^option[ \t]*\\(",
51806f296cSHadriel Kaplan "", "", "{icase}{tenter=option}", NULL);
52806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "main",
53806f296cSHadriel Kaplan "^project[ \t]*\\(",
54806f296cSHadriel Kaplan "", "", "{icase}{tenter=project}", NULL);
55806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "main",
56806f296cSHadriel Kaplan "^[^ \t\n]+[ \t\n]*",
57806f296cSHadriel Kaplan "", "", "", NULL);
58806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "main",
59806f296cSHadriel Kaplan "^[ \t\n]+",
60806f296cSHadriel Kaplan "", "", "", NULL);
61806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "variable",
62806f296cSHadriel Kaplan "^([A-Za-z0-9_.-]+)[ \t\n\\)]+",
63806f296cSHadriel Kaplan "\\1", "v", "{tleave}", NULL);
64806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "variable",
65806f296cSHadriel Kaplan "^[ \t\n]+",
66806f296cSHadriel Kaplan "", "", "", NULL);
67806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "variable",
68806f296cSHadriel Kaplan "^#",
69806f296cSHadriel Kaplan "", "", "{tenter=commentBegin}", NULL);
70806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "variable",
71806f296cSHadriel Kaplan "^([A-Za-z0-9_.-]+)(#)",
72806f296cSHadriel Kaplan "\\1", "v", "{tleave}{_advanceTo=2start}", NULL);
733e144175SHadriel Kaplan addLanguageTagMultiTableRegex (language, "variableScoped",
743e144175SHadriel Kaplan "^[A-Za-z0-9_.-]+[# \t\n\\)]",
753e144175SHadriel Kaplan "", "", "{tjump=inVariable}{_advanceTo=0start}", NULL);
763e144175SHadriel Kaplan addLanguageTagMultiTableRegex (language, "variableScoped",
773e144175SHadriel Kaplan "^[ \t\n]+",
783e144175SHadriel Kaplan "", "", "", NULL);
793e144175SHadriel Kaplan addLanguageTagMultiTableRegex (language, "variableScoped",
803e144175SHadriel Kaplan "^#",
813e144175SHadriel Kaplan "", "", "{tenter=commentBegin}", NULL);
82806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "function",
833e144175SHadriel Kaplan "^([A-Za-z_][A-Za-z0-9_]*)([# \t\n\\)])",
843e144175SHadriel Kaplan "\\1", "f", "{_advanceTo=2start}{tjump=inFunction}{scope=push}", NULL);
85806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "function",
86806f296cSHadriel Kaplan "^[ \t\n]+",
87806f296cSHadriel Kaplan "", "", "", NULL);
88806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "function",
89806f296cSHadriel Kaplan "^#",
90806f296cSHadriel Kaplan "", "", "{tenter=commentBegin}", NULL);
91806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "macro",
92806f296cSHadriel Kaplan "^([A-Za-z_][A-Za-z0-9_]*)[ \t\n\\)]+",
93806f296cSHadriel Kaplan "\\1", "m", "{tleave}", NULL);
94806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "macro",
95806f296cSHadriel Kaplan "^[ \t\n]+",
96806f296cSHadriel Kaplan "", "", "", NULL);
97806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "macro",
98806f296cSHadriel Kaplan "^#",
99806f296cSHadriel Kaplan "", "", "{tenter=commentBegin}", NULL);
100806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "macro",
101806f296cSHadriel Kaplan "^([A-Za-z_][A-Za-z0-9_]*)(#)",
102c240b001SHadriel Kaplan "\\1", "m", "{tleave}{_advanceTo=2start}", NULL);
103806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "target",
104806f296cSHadriel Kaplan "^([A-Za-z0-9_.-]+)[ \t\n\\)]+",
105806f296cSHadriel Kaplan "\\1", "t", "{tleave}", NULL);
106806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "target",
107806f296cSHadriel Kaplan "^[ \t\n]+",
108806f296cSHadriel Kaplan "", "", "", NULL);
109806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "target",
110806f296cSHadriel Kaplan "^#",
111806f296cSHadriel Kaplan "", "", "{tenter=commentBegin}", NULL);
112806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "target",
113806f296cSHadriel Kaplan "^([A-Za-z0-9_.-]+)(#)",
114806f296cSHadriel Kaplan "\\1", "t", "{tleave}{_advanceTo=2start}", NULL);
115806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "option",
116806f296cSHadriel Kaplan "^([A-Za-z0-9_.-]+)[ \t\n\\)]+",
117806f296cSHadriel Kaplan "\\1", "D", "{tleave}", NULL);
118806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "option",
119806f296cSHadriel Kaplan "^[ \t\n]+",
120806f296cSHadriel Kaplan "", "", "", NULL);
121806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "option",
122806f296cSHadriel Kaplan "^#",
123806f296cSHadriel Kaplan "", "", "{tenter=commentBegin}", NULL);
124806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "option",
125806f296cSHadriel Kaplan "^([A-Za-z0-9_.-]+)(#)",
126806f296cSHadriel Kaplan "\\1", "D", "{tleave}{_advanceTo=2start}", NULL);
127806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "project",
128806f296cSHadriel Kaplan "^([A-Za-z0-9_.-]+)([# \t\n\\)])",
129806f296cSHadriel Kaplan "\\1", "p", "{tleave}{_advanceTo=2start}", NULL);
130806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "project",
131806f296cSHadriel Kaplan "^[ \t\n]+",
132806f296cSHadriel Kaplan "", "", "", NULL);
133806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "project",
134806f296cSHadriel Kaplan "^#",
135806f296cSHadriel Kaplan "", "", "{tenter=commentBegin}", NULL);
136806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "commentBegin",
137806f296cSHadriel Kaplan "^\\[\\[",
138806f296cSHadriel Kaplan "", "", "{tjump=commentMultiline}", NULL);
139806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "commentBegin",
140806f296cSHadriel Kaplan "^[^\n]*[ \t\n]*",
141806f296cSHadriel Kaplan "", "", "{tleave}", NULL);
142806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "commentMultiline",
143806f296cSHadriel Kaplan "^\\]\\][ \t\n]*",
144806f296cSHadriel Kaplan "", "", "{tleave}", NULL);
145806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "commentMultiline",
146806f296cSHadriel Kaplan "^.[^]]*",
147806f296cSHadriel Kaplan "", "", "", NULL);
148806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "skipComment",
149806f296cSHadriel Kaplan "^#",
150806f296cSHadriel Kaplan "", "", "{tenter=commentBegin}", NULL);
151806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "skipWhiteSpace",
152806f296cSHadriel Kaplan "^[ \t\n]+",
153806f296cSHadriel Kaplan "", "", "", NULL);
154806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "skipToName",
155806f296cSHadriel Kaplan "^[ \t\n]+",
156806f296cSHadriel Kaplan "", "", "", NULL);
157806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "skipToName",
158806f296cSHadriel Kaplan "^#",
159806f296cSHadriel Kaplan "", "", "{tenter=commentBegin}", NULL);
160806f296cSHadriel Kaplan addLanguageTagMultiTableRegex (language, "nextToken",
161806f296cSHadriel Kaplan "^[^ \t\n]+[ \t\n]*",
162806f296cSHadriel Kaplan "", "", "", NULL);
1633e144175SHadriel Kaplan addLanguageTagMultiTableRegex (language, "inFunction",
1643e144175SHadriel Kaplan "^([^eEsSfFmMaAoO# \t\n]|[eE][^nN]|[eE][nN][^dD]|[eE][nN][dD][^fF#])[^ #\t\n]*[ \t\n]+",
1653e144175SHadriel Kaplan "", "", "", NULL);
1663e144175SHadriel Kaplan addLanguageTagMultiTableRegex (language, "inFunction",
1673e144175SHadriel Kaplan "^#",
1683e144175SHadriel Kaplan "", "", "{tenter=commentBegin}", NULL);
1693e144175SHadriel Kaplan addLanguageTagMultiTableRegex (language, "inFunction",
1703e144175SHadriel Kaplan "^set[ \t]*\\(",
1713e144175SHadriel Kaplan "", "", "{icase}{tenter=variableScoped}", NULL);
1723e144175SHadriel Kaplan addLanguageTagMultiTableRegex (language, "inFunction",
1733e144175SHadriel Kaplan "^function[ \t]*\\(",
1743e144175SHadriel Kaplan "", "", "{icase}{tenter=function}", NULL);
1753e144175SHadriel Kaplan addLanguageTagMultiTableRegex (language, "inFunction",
1763e144175SHadriel Kaplan "^macro[ \t]*\\(",
1773e144175SHadriel Kaplan "", "", "{icase}{tenter=macro}", NULL);
1783e144175SHadriel Kaplan addLanguageTagMultiTableRegex (language, "inFunction",
1793e144175SHadriel Kaplan "^endfunction[ \t]*\\([^)]*\\)",
1803e144175SHadriel Kaplan "", "", "{icase}{tleave}{scope=pop}", NULL);
1813e144175SHadriel Kaplan addLanguageTagMultiTableRegex (language, "inFunction",
1823e144175SHadriel Kaplan "^add_(custom_target|executable|library)[ \t]*\\(",
1833e144175SHadriel Kaplan "", "", "{icase}{tenter=target}", NULL);
1843e144175SHadriel Kaplan addLanguageTagMultiTableRegex (language, "inFunction",
1853e144175SHadriel Kaplan "^option[ \t]*\\(",
1863e144175SHadriel Kaplan "", "", "{icase}{tenter=option}", NULL);
1873e144175SHadriel Kaplan addLanguageTagMultiTableRegex (language, "inFunction",
1883e144175SHadriel Kaplan "^[^ \t\n]+[ \t\n]*",
1893e144175SHadriel Kaplan "", "", "", NULL);
1903e144175SHadriel Kaplan addLanguageTagMultiTableRegex (language, "inFunction",
1913e144175SHadriel Kaplan "^[ \t\n]+",
1923e144175SHadriel Kaplan "", "", "", NULL);
1933e144175SHadriel Kaplan addLanguageTagMultiTableRegex (language, "inVariable",
1943e144175SHadriel Kaplan "^[^\")]+((\"(\\\\\"|[^\"])*\")([^\")]+(\"(\\\\\"|[^\"])*\"))*)[ \t\n]PARENT_SCOPE[# \t\n)]",
1953e144175SHadriel Kaplan "", "", "{tjump=variable}{_advanceTo=0start}", NULL);
1963e144175SHadriel Kaplan addLanguageTagMultiTableRegex (language, "inVariable",
1973e144175SHadriel Kaplan "^([A-Za-z0-9_.-]+)[ \t\n\\)]+",
1983e144175SHadriel Kaplan "\\1", "v", "{tleave}{scope=ref}", NULL);
1993e144175SHadriel Kaplan addLanguageTagMultiTableRegex (language, "inVariable",
2003e144175SHadriel Kaplan "^([A-Za-z0-9_.-]+)(#)",
2013e144175SHadriel Kaplan "\\1", "v", "{tleave}{scope=ref}{_advanceTo=2start}", NULL);
202806f296cSHadriel Kaplan }
203806f296cSHadriel Kaplan
CMakeParser(void)204806f296cSHadriel Kaplan extern parserDefinition* CMakeParser (void)
205806f296cSHadriel Kaplan {
206806f296cSHadriel Kaplan static const char *const extensions [] = {
207806f296cSHadriel Kaplan "cmake",
208806f296cSHadriel Kaplan NULL
209806f296cSHadriel Kaplan };
210806f296cSHadriel Kaplan
211806f296cSHadriel Kaplan static const char *const aliases [] = {
212806f296cSHadriel Kaplan NULL
213806f296cSHadriel Kaplan };
214806f296cSHadriel Kaplan
215806f296cSHadriel Kaplan static const char *const patterns [] = {
216806f296cSHadriel Kaplan "CMakeLists.txt",
217806f296cSHadriel Kaplan NULL
218806f296cSHadriel Kaplan };
219806f296cSHadriel Kaplan
220806f296cSHadriel Kaplan static kindDefinition CMakeKindTable [] = {
221806f296cSHadriel Kaplan {
222806f296cSHadriel Kaplan true, 'f', "function", "functions",
223806f296cSHadriel Kaplan },
224806f296cSHadriel Kaplan {
225806f296cSHadriel Kaplan true, 'm', "macro", "macros",
226806f296cSHadriel Kaplan },
227806f296cSHadriel Kaplan {
228806f296cSHadriel Kaplan true, 't', "target", "targets",
229806f296cSHadriel Kaplan },
230806f296cSHadriel Kaplan {
231806f296cSHadriel Kaplan true, 'v', "variable", "variable definitions",
232806f296cSHadriel Kaplan },
233806f296cSHadriel Kaplan {
234806f296cSHadriel Kaplan true, 'D', "option", "options specified with -D",
235806f296cSHadriel Kaplan },
236806f296cSHadriel Kaplan {
237806f296cSHadriel Kaplan true, 'p', "project", "projects",
238806f296cSHadriel Kaplan },
239806f296cSHadriel Kaplan };
240806f296cSHadriel Kaplan
241806f296cSHadriel Kaplan parserDefinition* const def = parserNew ("CMake");
242806f296cSHadriel Kaplan
243806f296cSHadriel Kaplan def->enabled = true;
244806f296cSHadriel Kaplan def->extensions = extensions;
245806f296cSHadriel Kaplan def->patterns = patterns;
246806f296cSHadriel Kaplan def->aliases = aliases;
247806f296cSHadriel Kaplan def->method = METHOD_NOT_CRAFTED|METHOD_REGEX;
248*6b1a862eSMasatake YAMATO def->useCork = CORK_QUEUE;
249806f296cSHadriel Kaplan def->kindTable = CMakeKindTable;
250806f296cSHadriel Kaplan def->kindCount = ARRAY_SIZE(CMakeKindTable);
251806f296cSHadriel Kaplan def->initialize = initializeCMakeParser;
252806f296cSHadriel Kaplan
253806f296cSHadriel Kaplan return def;
254806f296cSHadriel Kaplan }
255