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