xref: /Universal-ctags/optlib/yacc.c (revision fece18c50a4aeef1bee0cb4f17bf9cdc38519b5d)
1 /*
2  * Generated by ./misc/optlib2c from optlib/yacc.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 
initializeYACCParser(const langType language)11 static void initializeYACCParser (const langType language)
12 {
13 	addLanguageOptscriptToHook (language, SCRIPT_HOOK_PRELUDE,
14 		"{{    /token-type false def\n"
15 		"    /type-dict 57 dict def\n"
16 		"}}");
17 
18 	addLanguageRegexTable (language, "toplevel");
19 	addLanguageRegexTable (language, "comment");
20 	addLanguageRegexTable (language, "cPrologue");
21 	addLanguageRegexTable (language, "grammar");
22 	addLanguageRegexTable (language, "cEpilogue");
23 	addLanguageRegexTable (language, "token");
24 	addLanguageRegexTable (language, "cUnion");
25 	addLanguageRegexTable (language, "cString");
26 	addLanguageRegexTable (language, "iString");
27 	addLanguageRegexTable (language, "rule");
28 	addLanguageRegexTable (language, "cActionCommon");
29 	addLanguageRegexTable (language, "cAction");
30 	addLanguageRegexTable (language, "type");
31 	addLanguageRegexTable (language, "cCharlit");
32 
33 	addLanguageTagMultiTableRegex (language, "toplevel",
34 	                               "^/\\*",
35 	                               "", "", "{tenter=comment}", NULL);
36 	addLanguageTagMultiTableRegex (language, "toplevel",
37 	                               "^%token[ \t\n]+",
38 	                               "", "", "{tenter=token}"
39 		"{{\n"
40 		"    /token-type false def\n"
41 		"}}", NULL);
42 	addLanguageTagMultiTableRegex (language, "toplevel",
43 	                               "^%(union)[^\\{]*\\{",
44 	                               "", "", "{tenter=cUnion}{_guest=C,1start,}", NULL);
45 	addLanguageTagMultiTableRegex (language, "toplevel",
46 	                               "^%(code[^\\{]*)?\\{",
47 	                               "", "", "{tenter=cPrologue}{_guest=C,0end,}", NULL);
48 	addLanguageTagMultiTableRegex (language, "toplevel",
49 	                               "^%(type|nterm)[ \n\t]*",
50 	                               "", "", "{tenter=type}"
51 		"{{\n"
52 		"    /token-type false def\n"
53 		"}}", NULL);
54 	addLanguageTagMultiTableRegex (language, "toplevel",
55 	                               "^%%",
56 	                               "", "", "{tjump=grammar}", NULL);
57 	addLanguageTagMultiTableRegex (language, "toplevel",
58 	                               "^[^\n]*\n",
59 	                               "", "", "", NULL);
60 	addLanguageTagMultiTableRegex (language, "comment",
61 	                               "^[^*]+",
62 	                               "", "", "", NULL);
63 	addLanguageTagMultiTableRegex (language, "comment",
64 	                               "^\\*/",
65 	                               "", "", "{tleave}", NULL);
66 	addLanguageTagMultiTableRegex (language, "comment",
67 	                               "^.",
68 	                               "", "", "", NULL);
69 	addLanguageTagMultiTableRegex (language, "cPrologue",
70 	                               "^[^%]+",
71 	                               "", "", "", NULL);
72 	addLanguageTagMultiTableRegex (language, "cPrologue",
73 	                               "^%\\}",
74 	                               "", "", "{tleave}{_guest=,,0start}", NULL);
75 	addLanguageTagMultiTableRegex (language, "cPrologue",
76 	                               "^.",
77 	                               "", "", "", NULL);
78 	addLanguageTagMultiTableRegex (language, "grammar",
79 	                               "^%%",
80 	                               "", "", "{tjump=cEpilogue}{_guest=C,0end,}", NULL);
81 	addLanguageTagMultiTableRegex (language, "grammar",
82 	                               "^([a-zA-Z_.][-a-zA-Z_.0-9]+)[ \t\n]*:[ \t\n]*",
83 	                               "\\1", "l", "{tenter=rule}"
84 		"{{\n"
85 		"    type-dict \\1 known {\n"
86 		"        type-dict \\1 get . exch typeref:\n"
87 		"    } if\n"
88 		"}}", NULL);
89 	addLanguageTagMultiTableRegex (language, "grammar",
90 	                               "^.",
91 	                               "", "", "", NULL);
92 	addLanguageTagMultiTableRegex (language, "cEpilogue",
93 	                               "^.+",
94 	                               "", "", "{_guest=,,0end}", NULL);
95 	addLanguageTagMultiTableRegex (language, "token",
96 	                               "^N?_[ \t]*\\(",
97 	                               "", "", "{tenter=iString}", NULL);
98 	addLanguageTagMultiTableRegex (language, "token",
99 	                               "^([_a-zA-Z][_a-zA-Z0-9]*)[ \t\n]*",
100 	                               "\\1", "t", ""
101 		"{{\n"
102 		"    token-type false ne {\n"
103 		"        . token-type typeref:\n"
104 		"    } if\n"
105 		"}}", NULL);
106 	addLanguageTagMultiTableRegex (language, "token",
107 	                               "^<[ \t]*([_a-zA-Z][_a-zA-Z0-9 *]*)[ \t]*>[ \t\n]*",
108 	                               "", "", ""
109 		"{{\n"
110 		"    /token-type \\1 def\n"
111 		"}}", NULL);
112 	addLanguageTagMultiTableRegex (language, "token",
113 	                               "^\"",
114 	                               "", "", "{tenter=cString}", NULL);
115 	addLanguageTagMultiTableRegex (language, "token",
116 	                               "^'",
117 	                               "", "", "{tenter=cCharlit}", NULL);
118 	addLanguageTagMultiTableRegex (language, "token",
119 	                               "^-?[ \t\n]*(0x)?[0-9]+[ \t\n]*",
120 	                               "", "", "", NULL);
121 	addLanguageTagMultiTableRegex (language, "token",
122 	                               "^%",
123 	                               "", "", "{tleave}{_advanceTo=0start}"
124 		"{{\n"
125 		"    /token-type false def\n"
126 		"}}", NULL);
127 	addLanguageTagMultiTableRegex (language, "token",
128 	                               "^.|\n",
129 	                               "", "", "", NULL);
130 	addLanguageTagMultiTableRegex (language, "cUnion",
131 	                               "^[^\"/\\{\\}]+",
132 	                               "", "", "", NULL);
133 	addLanguageTagMultiTableRegex (language, "cUnion",
134 	                               "^\"",
135 	                               "", "", "{tenter=cString}", NULL);
136 	addLanguageTagMultiTableRegex (language, "cUnion",
137 	                               "^'",
138 	                               "", "", "{tenter=cCharlit}", NULL);
139 	addLanguageTagMultiTableRegex (language, "cUnion",
140 	                               "^/\\*",
141 	                               "", "", "{tenter=comment}", NULL);
142 	addLanguageTagMultiTableRegex (language, "cUnion",
143 	                               "^\\{",
144 	                               "", "", "{tenter=cAction}", NULL);
145 	addLanguageTagMultiTableRegex (language, "cUnion",
146 	                               "^\\}",
147 	                               "", "", "{tleave}{_guest=,,0end}{tleave}", NULL);
148 	addLanguageTagMultiTableRegex (language, "cString",
149 	                               "^[\\\\\"]+",
150 	                               "", "", "", NULL);
151 	addLanguageTagMultiTableRegex (language, "cString",
152 	                               "^\\\\.",
153 	                               "", "", "", NULL);
154 	addLanguageTagMultiTableRegex (language, "cString",
155 	                               "^\"",
156 	                               "", "", "{tleave}", NULL);
157 	addLanguageTagMultiTableRegex (language, "iString",
158 	                               "^\"",
159 	                               "", "", "{tenter=cString}", NULL);
160 	addLanguageTagMultiTableRegex (language, "iString",
161 	                               "^\\)",
162 	                               "", "", "{tleave}", NULL);
163 	addLanguageTagMultiTableRegex (language, "iString",
164 	                               "^.",
165 	                               "", "", "", NULL);
166 	addLanguageTagMultiTableRegex (language, "rule",
167 	                               "^[^\\{;]+",
168 	                               "", "", "", NULL);
169 	addLanguageTagMultiTableRegex (language, "rule",
170 	                               "^\\{",
171 	                               "", "", "{tenter=cAction}", NULL);
172 	addLanguageTagMultiTableRegex (language, "rule",
173 	                               "^;",
174 	                               "", "", "{tleave}", NULL);
175 	addLanguageTagMultiTableRegex (language, "rule",
176 	                               "^.",
177 	                               "", "", "", NULL);
178 	addLanguageTagMultiTableRegex (language, "cActionCommon",
179 	                               "^[^\"/\\{\\}]+",
180 	                               "", "", "", NULL);
181 	addLanguageTagMultiTableRegex (language, "cActionCommon",
182 	                               "^\"",
183 	                               "", "", "{tenter=cString}", NULL);
184 	addLanguageTagMultiTableRegex (language, "cActionCommon",
185 	                               "^'",
186 	                               "", "", "{tenter=cCharlit}", NULL);
187 	addLanguageTagMultiTableRegex (language, "cActionCommon",
188 	                               "^/\\*",
189 	                               "", "", "{tenter=comment}", NULL);
190 	addLanguageTagMultiTableRegex (language, "cActionCommon",
191 	                               "^\\{",
192 	                               "", "", "{tenter=cAction}", NULL);
193 	addLanguageTagMultiTableRegex (language, "cAction",
194 	                               "^[^\"/\\{\\}]+",
195 	                               "", "", "", NULL);
196 	addLanguageTagMultiTableRegex (language, "cAction",
197 	                               "^\"",
198 	                               "", "", "{tenter=cString}", NULL);
199 	addLanguageTagMultiTableRegex (language, "cAction",
200 	                               "^'",
201 	                               "", "", "{tenter=cCharlit}", NULL);
202 	addLanguageTagMultiTableRegex (language, "cAction",
203 	                               "^/\\*",
204 	                               "", "", "{tenter=comment}", NULL);
205 	addLanguageTagMultiTableRegex (language, "cAction",
206 	                               "^\\{",
207 	                               "", "", "{tenter=cAction}", NULL);
208 	addLanguageTagMultiTableRegex (language, "cAction",
209 	                               "^\\}",
210 	                               "", "", "{tleave}", NULL);
211 	addLanguageTagMultiTableRegex (language, "type",
212 	                               "^N?_[ \t]*\\(",
213 	                               "", "", "{tenter=iString}", NULL);
214 	addLanguageTagMultiTableRegex (language, "type",
215 	                               "^([_a-zA-Z][_a-zA-Z0-9]*)[ \t\n]*",
216 	                               "", "", ""
217 		"{{\n"
218 		"    token-type false ne {\n"
219 		"        type-dict \\1 token-type put\n"
220 		"    } if\n"
221 		"}}", NULL);
222 	addLanguageTagMultiTableRegex (language, "type",
223 	                               "^<[ \t]*([_a-zA-Z][_a-zA-Z0-9 *]*)[ \t]*>[ \t\n]*",
224 	                               "", "", ""
225 		"{{\n"
226 		"    /token-type \\1 def\n"
227 		"}}", NULL);
228 	addLanguageTagMultiTableRegex (language, "type",
229 	                               "^\"",
230 	                               "", "", "{tenter=cString}", NULL);
231 	addLanguageTagMultiTableRegex (language, "type",
232 	                               "^'",
233 	                               "", "", "{tenter=cCharlit}", NULL);
234 	addLanguageTagMultiTableRegex (language, "type",
235 	                               "^%",
236 	                               "", "", "{tleave}{_advanceTo=0start}"
237 		"{{\n"
238 		"    /token-type false def\n"
239 		"}}", NULL);
240 	addLanguageTagMultiTableRegex (language, "type",
241 	                               "^.|\n",
242 	                               "", "", "", NULL);
243 	addLanguageTagMultiTableRegex (language, "cCharlit",
244 	                               "^[^\\\\]'",
245 	                               "", "", "{tleave}", NULL);
246 	addLanguageTagMultiTableRegex (language, "cCharlit",
247 	                               "^\\\\.'",
248 	                               "", "", "{tleave}", NULL);
249 	addLanguageTagMultiTableRegex (language, "cCharlit",
250 	                               "^'",
251 	                               "", "", "{tleave}", NULL);
252 	addLanguageTagMultiTableRegex (language, "cCharlit",
253 	                               "^.",
254 	                               "", "", "", NULL);
255 }
256 
YACCParser(void)257 extern parserDefinition* YACCParser (void)
258 {
259 	static const char *const extensions [] = {
260 		"y",
261 		NULL
262 	};
263 
264 	static const char *const aliases [] = {
265 		NULL
266 	};
267 
268 	static const char *const patterns [] = {
269 		NULL
270 	};
271 
272 	static kindDefinition YACCKindTable [] = {
273 		{
274 		  true, 't', "token", "tokens",
275 		},
276 		{
277 		  true, 'l', "label", "labels",
278 		},
279 	};
280 
281 	parserDefinition* const def = parserNew ("YACC");
282 
283 	def->enabled       = true;
284 	def->extensions    = extensions;
285 	def->patterns      = patterns;
286 	def->aliases       = aliases;
287 	def->method        = METHOD_NOT_CRAFTED|METHOD_REGEX;
288 	def->useCork       = CORK_QUEUE;
289 	def->kindTable     = YACCKindTable;
290 	def->kindCount     = ARRAY_SIZE(YACCKindTable);
291 	def->initialize    = initializeYACCParser;
292 
293 	return def;
294 }
295