xref: /Universal-ctags/optlib/lex.c (revision f5bca49f0fb19a17234ca12bb951408ea64a0685)
1*f5bca49fSMasatake YAMATO /*
2*f5bca49fSMasatake YAMATO  * Generated by ./misc/optlib2c from optlib/lex.ctags, Don't edit this manually.
3*f5bca49fSMasatake YAMATO  */
4*f5bca49fSMasatake YAMATO #include "general.h"
5*f5bca49fSMasatake YAMATO #include "parse.h"
6*f5bca49fSMasatake YAMATO #include "routines.h"
7*f5bca49fSMasatake YAMATO #include "field.h"
8*f5bca49fSMasatake YAMATO #include "xtag.h"
9*f5bca49fSMasatake YAMATO #include "selectors.h"
10*f5bca49fSMasatake YAMATO 
11*f5bca49fSMasatake YAMATO 
initializeLEXParser(const langType language)12*f5bca49fSMasatake YAMATO static void initializeLEXParser (const langType language)
13*f5bca49fSMasatake YAMATO {
14*f5bca49fSMasatake YAMATO 
15*f5bca49fSMasatake YAMATO 	addLanguageRegexTable (language, "main");
16*f5bca49fSMasatake YAMATO 	addLanguageRegexTable (language, "comment");
17*f5bca49fSMasatake YAMATO 	addLanguageRegexTable (language, "codeblock");
18*f5bca49fSMasatake YAMATO 	addLanguageRegexTable (language, "rulesec");
19*f5bca49fSMasatake YAMATO 	addLanguageRegexTable (language, "usercode");
20*f5bca49fSMasatake YAMATO 	addLanguageRegexTable (language, "cond");
21*f5bca49fSMasatake YAMATO 
22*f5bca49fSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
23*f5bca49fSMasatake YAMATO 	                               "^/\\*",
24*f5bca49fSMasatake YAMATO 	                               "", "", "{tenter=comment}", NULL);
25*f5bca49fSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
26*f5bca49fSMasatake YAMATO 	                               "^%[sx][ \t]+",
27*f5bca49fSMasatake YAMATO 	                               "", "", "{tenter=cond}", NULL);
28*f5bca49fSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
29*f5bca49fSMasatake YAMATO 	                               "^%(top)?\\{",
30*f5bca49fSMasatake YAMATO 	                               "", "", "{tenter=codeblock}{_guest=C,0end,}", NULL);
31*f5bca49fSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
32*f5bca49fSMasatake YAMATO 	                               "^%%",
33*f5bca49fSMasatake YAMATO 	                               "", "", "{tjump=rulesec}", NULL);
34*f5bca49fSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
35*f5bca49fSMasatake YAMATO 	                               "^([a-zA-Z_][-a-zA-Z0-9_]*)[^\n]+\n",
36*f5bca49fSMasatake YAMATO 	                               "\\1", "r", "", NULL);
37*f5bca49fSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
38*f5bca49fSMasatake YAMATO 	                               "^[^\n]*\n",
39*f5bca49fSMasatake YAMATO 	                               "", "", "", NULL);
40*f5bca49fSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "comment",
41*f5bca49fSMasatake YAMATO 	                               "^[^*]+",
42*f5bca49fSMasatake YAMATO 	                               "", "", "", NULL);
43*f5bca49fSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "comment",
44*f5bca49fSMasatake YAMATO 	                               "^\\*/",
45*f5bca49fSMasatake YAMATO 	                               "", "", "{tleave}", NULL);
46*f5bca49fSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "comment",
47*f5bca49fSMasatake YAMATO 	                               "^.",
48*f5bca49fSMasatake YAMATO 	                               "", "", "", NULL);
49*f5bca49fSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "codeblock",
50*f5bca49fSMasatake YAMATO 	                               "^[^%]+",
51*f5bca49fSMasatake YAMATO 	                               "", "", "", NULL);
52*f5bca49fSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "codeblock",
53*f5bca49fSMasatake YAMATO 	                               "^%\\}",
54*f5bca49fSMasatake YAMATO 	                               "", "", "{tleave}{_guest=,,0start}", NULL);
55*f5bca49fSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "codeblock",
56*f5bca49fSMasatake YAMATO 	                               "^.",
57*f5bca49fSMasatake YAMATO 	                               "", "", "", NULL);
58*f5bca49fSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "rulesec",
59*f5bca49fSMasatake YAMATO 	                               "^[^%]+",
60*f5bca49fSMasatake YAMATO 	                               "", "", "", NULL);
61*f5bca49fSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "rulesec",
62*f5bca49fSMasatake YAMATO 	                               "^%%",
63*f5bca49fSMasatake YAMATO 	                               "", "", "{tjump=usercode}{_guest=C,0end,}", NULL);
64*f5bca49fSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "rulesec",
65*f5bca49fSMasatake YAMATO 	                               "^.",
66*f5bca49fSMasatake YAMATO 	                               "", "", "", NULL);
67*f5bca49fSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "usercode",
68*f5bca49fSMasatake YAMATO 	                               "^.+",
69*f5bca49fSMasatake YAMATO 	                               "", "", "{_guest=,,0end}", NULL);
70*f5bca49fSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "cond",
71*f5bca49fSMasatake YAMATO 	                               "^([_a-zA-Z][_a-zA-Z0-9]*)[ \t]*",
72*f5bca49fSMasatake YAMATO 	                               "\\1", "c", "", NULL);
73*f5bca49fSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "cond",
74*f5bca49fSMasatake YAMATO 	                               "^\n",
75*f5bca49fSMasatake YAMATO 	                               "", "", "{tleave}", NULL);
76*f5bca49fSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "cond",
77*f5bca49fSMasatake YAMATO 	                               "^.",
78*f5bca49fSMasatake YAMATO 	                               "", "", "", NULL);
79*f5bca49fSMasatake YAMATO }
80*f5bca49fSMasatake YAMATO 
LEXParser(void)81*f5bca49fSMasatake YAMATO extern parserDefinition* LEXParser (void)
82*f5bca49fSMasatake YAMATO {
83*f5bca49fSMasatake YAMATO 	static const char *const extensions [] = {
84*f5bca49fSMasatake YAMATO 		"lex",
85*f5bca49fSMasatake YAMATO 		"l",
86*f5bca49fSMasatake YAMATO 		NULL
87*f5bca49fSMasatake YAMATO 	};
88*f5bca49fSMasatake YAMATO 
89*f5bca49fSMasatake YAMATO 	static const char *const aliases [] = {
90*f5bca49fSMasatake YAMATO 		NULL
91*f5bca49fSMasatake YAMATO 	};
92*f5bca49fSMasatake YAMATO 
93*f5bca49fSMasatake YAMATO 	static const char *const patterns [] = {
94*f5bca49fSMasatake YAMATO 		NULL
95*f5bca49fSMasatake YAMATO 	};
96*f5bca49fSMasatake YAMATO 
97*f5bca49fSMasatake YAMATO 	static kindDefinition LEXKindTable [] = {
98*f5bca49fSMasatake YAMATO 		{
99*f5bca49fSMasatake YAMATO 		  true, 'r', "regex", "named regular expression",
100*f5bca49fSMasatake YAMATO 		},
101*f5bca49fSMasatake YAMATO 		{
102*f5bca49fSMasatake YAMATO 		  true, 'c', "cond", "start or exclusive condition",
103*f5bca49fSMasatake YAMATO 		},
104*f5bca49fSMasatake YAMATO 	};
105*f5bca49fSMasatake YAMATO 	static selectLanguage selectors[] = { selectLispOrLEXByLEXMarker, NULL };
106*f5bca49fSMasatake YAMATO 
107*f5bca49fSMasatake YAMATO 	parserDefinition* const def = parserNew ("LEX");
108*f5bca49fSMasatake YAMATO 
109*f5bca49fSMasatake YAMATO 	def->enabled       = true;
110*f5bca49fSMasatake YAMATO 	def->extensions    = extensions;
111*f5bca49fSMasatake YAMATO 	def->patterns      = patterns;
112*f5bca49fSMasatake YAMATO 	def->aliases       = aliases;
113*f5bca49fSMasatake YAMATO 	def->selectLanguage= selectors;
114*f5bca49fSMasatake YAMATO 	def->method        = METHOD_NOT_CRAFTED|METHOD_REGEX;
115*f5bca49fSMasatake YAMATO 	def->kindTable     = LEXKindTable;
116*f5bca49fSMasatake YAMATO 	def->kindCount     = ARRAY_SIZE(LEXKindTable);
117*f5bca49fSMasatake YAMATO 	def->initialize    = initializeLEXParser;
118*f5bca49fSMasatake YAMATO 
119*f5bca49fSMasatake YAMATO 	return def;
120*f5bca49fSMasatake YAMATO }
121