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