1 /*
2 * Generated by ./misc/optlib2c from optlib/meson.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
initializeMesonParser(const langType language)11 static void initializeMesonParser (const langType language)
12 {
13
14 addLanguageRegexTable (language, "main");
15 addLanguageRegexTable (language, "mline_string");
16 addLanguageRegexTable (language, "string");
17 addLanguageRegexTable (language, "comment");
18 addLanguageRegexTable (language, "skipPair");
19 addLanguageRegexTable (language, "common");
20 addLanguageRegexTable (language, "skipToArgEnd");
21
22 addLanguageTagMultiTableRegex (language, "main",
23 "^[ \t\n]+",
24 "", "", "", NULL);
25 addLanguageTagMultiTableRegex (language, "main",
26 "^#",
27 "", "", "{tenter=comment}", NULL);
28 addLanguageTagMultiTableRegex (language, "main",
29 "^'''",
30 "", "", "{tenter=mline_string}", NULL);
31 addLanguageTagMultiTableRegex (language, "main",
32 "^'",
33 "", "", "{tenter=string}", NULL);
34 addLanguageTagMultiTableRegex (language, "main",
35 "^[[({]",
36 "", "", "{tenter=skipPair}", NULL);
37 addLanguageTagMultiTableRegex (language, "main",
38 "^(jar|executable|shared_module|(both_|shared_|static_)?library)[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
39 "\\3", "B", "{tenter=skipToArgEnd}", NULL);
40 addLanguageTagMultiTableRegex (language, "main",
41 "^custom_target[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
42 "\\1", "c", "{tenter=skipToArgEnd}", NULL);
43 addLanguageTagMultiTableRegex (language, "main",
44 "^(alias|run)_target[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
45 "\\2", "r", "{tenter=skipToArgEnd}", NULL);
46 addLanguageTagMultiTableRegex (language, "main",
47 "^bench_mark[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
48 "\\1", "b", "{tenter=skipToArgEnd}", NULL);
49 addLanguageTagMultiTableRegex (language, "main",
50 "^project[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
51 "\\1", "P", "{tenter=skipToArgEnd}", NULL);
52 addLanguageTagMultiTableRegex (language, "main",
53 "^subdir[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
54 "\\1", "S", "{tenter=skipToArgEnd}", NULL);
55 addLanguageTagMultiTableRegex (language, "main",
56 "^test[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
57 "\\1", "t", "{tenter=skipToArgEnd}", NULL);
58 addLanguageTagMultiTableRegex (language, "main",
59 "^([a-zA-Z_][a-zA-Z_0-9]*)[ \t\n]*=[ \t\n]*",
60 "\\1", "V", "", NULL);
61 addLanguageTagMultiTableRegex (language, "main",
62 "^.",
63 "", "", "", NULL);
64 addLanguageTagMultiTableRegex (language, "mline_string",
65 "^'''",
66 "", "", "{tleave}", NULL);
67 addLanguageTagMultiTableRegex (language, "mline_string",
68 "^[^']+",
69 "", "", "", NULL);
70 addLanguageTagMultiTableRegex (language, "mline_string",
71 "^.",
72 "", "", "", NULL);
73 addLanguageTagMultiTableRegex (language, "string",
74 "^\\\\'",
75 "", "", "", NULL);
76 addLanguageTagMultiTableRegex (language, "string",
77 "^[^\\\\']+",
78 "", "", "", NULL);
79 addLanguageTagMultiTableRegex (language, "string",
80 "^'",
81 "", "", "{tleave}", NULL);
82 addLanguageTagMultiTableRegex (language, "comment",
83 "^[^\n]+",
84 "", "", "", NULL);
85 addLanguageTagMultiTableRegex (language, "comment",
86 "^\n",
87 "", "", "{tleave}", NULL);
88 addLanguageTagMultiTableRegex (language, "skipPair",
89 "^[ \t\n]+",
90 "", "", "", NULL);
91 addLanguageTagMultiTableRegex (language, "skipPair",
92 "^#",
93 "", "", "{tenter=comment}", NULL);
94 addLanguageTagMultiTableRegex (language, "skipPair",
95 "^'''",
96 "", "", "{tenter=mline_string}", NULL);
97 addLanguageTagMultiTableRegex (language, "skipPair",
98 "^'",
99 "", "", "{tenter=string}", NULL);
100 addLanguageTagMultiTableRegex (language, "skipPair",
101 "^[[({]",
102 "", "", "{tenter=skipPair}", NULL);
103 addLanguageTagMultiTableRegex (language, "skipPair",
104 "^(jar|executable|shared_module|(both_|shared_|static_)?library)[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
105 "\\3", "B", "{tenter=skipToArgEnd}", NULL);
106 addLanguageTagMultiTableRegex (language, "skipPair",
107 "^custom_target[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
108 "\\1", "c", "{tenter=skipToArgEnd}", NULL);
109 addLanguageTagMultiTableRegex (language, "skipPair",
110 "^(alias|run)_target[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
111 "\\2", "r", "{tenter=skipToArgEnd}", NULL);
112 addLanguageTagMultiTableRegex (language, "skipPair",
113 "^bench_mark[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
114 "\\1", "b", "{tenter=skipToArgEnd}", NULL);
115 addLanguageTagMultiTableRegex (language, "skipPair",
116 "^[])}]",
117 "", "", "{tleave}", NULL);
118 addLanguageTagMultiTableRegex (language, "skipPair",
119 "^.",
120 "", "", "", NULL);
121 addLanguageTagMultiTableRegex (language, "common",
122 "^[ \t\n]+",
123 "", "", "", NULL);
124 addLanguageTagMultiTableRegex (language, "common",
125 "^#",
126 "", "", "{tenter=comment}", NULL);
127 addLanguageTagMultiTableRegex (language, "common",
128 "^'''",
129 "", "", "{tenter=mline_string}", NULL);
130 addLanguageTagMultiTableRegex (language, "common",
131 "^'",
132 "", "", "{tenter=string}", NULL);
133 addLanguageTagMultiTableRegex (language, "common",
134 "^[[({]",
135 "", "", "{tenter=skipPair}", NULL);
136 addLanguageTagMultiTableRegex (language, "common",
137 "^(jar|executable|shared_module|(both_|shared_|static_)?library)[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
138 "\\3", "B", "{tenter=skipToArgEnd}", NULL);
139 addLanguageTagMultiTableRegex (language, "common",
140 "^custom_target[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
141 "\\1", "c", "{tenter=skipToArgEnd}", NULL);
142 addLanguageTagMultiTableRegex (language, "common",
143 "^(alias|run)_target[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
144 "\\2", "r", "{tenter=skipToArgEnd}", NULL);
145 addLanguageTagMultiTableRegex (language, "common",
146 "^bench_mark[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
147 "\\1", "b", "{tenter=skipToArgEnd}", NULL);
148 addLanguageTagMultiTableRegex (language, "skipToArgEnd",
149 "^[ \t\n]+",
150 "", "", "", NULL);
151 addLanguageTagMultiTableRegex (language, "skipToArgEnd",
152 "^#",
153 "", "", "{tenter=comment}", NULL);
154 addLanguageTagMultiTableRegex (language, "skipToArgEnd",
155 "^'''",
156 "", "", "{tenter=mline_string}", NULL);
157 addLanguageTagMultiTableRegex (language, "skipToArgEnd",
158 "^'",
159 "", "", "{tenter=string}", NULL);
160 addLanguageTagMultiTableRegex (language, "skipToArgEnd",
161 "^[[({]",
162 "", "", "{tenter=skipPair}", NULL);
163 addLanguageTagMultiTableRegex (language, "skipToArgEnd",
164 "^(jar|executable|shared_module|(both_|shared_|static_)?library)[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
165 "\\3", "B", "{tenter=skipToArgEnd}", NULL);
166 addLanguageTagMultiTableRegex (language, "skipToArgEnd",
167 "^custom_target[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
168 "\\1", "c", "{tenter=skipToArgEnd}", NULL);
169 addLanguageTagMultiTableRegex (language, "skipToArgEnd",
170 "^(alias|run)_target[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
171 "\\2", "r", "{tenter=skipToArgEnd}", NULL);
172 addLanguageTagMultiTableRegex (language, "skipToArgEnd",
173 "^bench_mark[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
174 "\\1", "b", "{tenter=skipToArgEnd}", NULL);
175 addLanguageTagMultiTableRegex (language, "skipToArgEnd",
176 "^[])}]",
177 "", "", "{tleave}", NULL);
178 addLanguageTagMultiTableRegex (language, "skipToArgEnd",
179 "^.",
180 "", "", "", NULL);
181 }
182
MesonParser(void)183 extern parserDefinition* MesonParser (void)
184 {
185 static const char *const extensions [] = {
186 NULL
187 };
188
189 static const char *const aliases [] = {
190 NULL
191 };
192
193 static const char *const patterns [] = {
194 "meson.build",
195 NULL
196 };
197
198 static kindDefinition MesonKindTable [] = {
199 {
200 true, 'P', "project", "projects",
201 },
202 {
203 true, 'V', "variable", "variables",
204 },
205 {
206 true, 'S', "subdir", "subdirs",
207 },
208 {
209 true, 'B', "build", "build targets",
210 },
211 {
212 true, 'c', "custom", "custom targets",
213 },
214 {
215 true, 't', "test", "tests",
216 },
217 {
218 true, 'b', "benchmark", "benchmark targets",
219 },
220 {
221 true, 'r', "run", "run targets",
222 },
223 };
224
225 parserDefinition* const def = parserNew ("Meson");
226
227 def->enabled = true;
228 def->extensions = extensions;
229 def->patterns = patterns;
230 def->aliases = aliases;
231 def->method = METHOD_NOT_CRAFTED|METHOD_REGEX;
232 def->kindTable = MesonKindTable;
233 def->kindCount = ARRAY_SIZE(MesonKindTable);
234 def->initialize = initializeMesonParser;
235
236 return def;
237 }
238