xref: /Universal-ctags/optlib/rdoc.c (revision d876d1767e93ecd47ebb5aed65bc0687c2586dbf)
1*d876d176SMasatake YAMATO /*
2*d876d176SMasatake YAMATO  * Generated by ./misc/optlib2c from optlib/rdoc.ctags, Don't edit this manually.
3*d876d176SMasatake YAMATO  */
4*d876d176SMasatake YAMATO #include "general.h"
5*d876d176SMasatake YAMATO #include "parse.h"
6*d876d176SMasatake YAMATO #include "routines.h"
7*d876d176SMasatake YAMATO #include "field.h"
8*d876d176SMasatake YAMATO #include "xtag.h"
9*d876d176SMasatake YAMATO 
10*d876d176SMasatake YAMATO 
11*d876d176SMasatake YAMATO typedef enum {
12*d876d176SMasatake YAMATO 	K_L1HEADER,
13*d876d176SMasatake YAMATO 	K_L2HEADER,
14*d876d176SMasatake YAMATO 	K_L3HEADER,
15*d876d176SMasatake YAMATO 	K_L4HEADER,
16*d876d176SMasatake YAMATO 	K_L5HEADER,
17*d876d176SMasatake YAMATO 	K_L6HEADER,
18*d876d176SMasatake YAMATO } RDocKind;
19*d876d176SMasatake YAMATO 
20*d876d176SMasatake YAMATO 
initializeRDocParser(const langType language CTAGS_ATTR_UNUSED)21*d876d176SMasatake YAMATO static void initializeRDocParser (const langType language CTAGS_ATTR_UNUSED)
22*d876d176SMasatake YAMATO {
23*d876d176SMasatake YAMATO 	addLanguageOptscriptToHook (language, SCRIPT_HOOK_PRELUDE,
24*d876d176SMasatake YAMATO 		"{{    /kindTable [\n"
25*d876d176SMasatake YAMATO 		"        /L1Header /L2Header /L3Header /L4Header /L5Header /L6Header\n"
26*d876d176SMasatake YAMATO 		"    ] def\n"
27*d876d176SMasatake YAMATO 		"\n"
28*d876d176SMasatake YAMATO 		"    /depthForCork {\n"
29*d876d176SMasatake YAMATO 		"        :kind kindTable exch _aindex pop\n"
30*d876d176SMasatake YAMATO 		"    } def\n"
31*d876d176SMasatake YAMATO 		"    /depthForStr {\n"
32*d876d176SMasatake YAMATO 		"        length 1 sub\n"
33*d876d176SMasatake YAMATO 		"    } def\n"
34*d876d176SMasatake YAMATO 		"\n"
35*d876d176SMasatake YAMATO 		"    % endline:int goal:int scopePopUpTo -\n"
36*d876d176SMasatake YAMATO 		"    /scopePopUpTo\n"
37*d876d176SMasatake YAMATO 		"    {\n"
38*d876d176SMasatake YAMATO 		"        {\n"
39*d876d176SMasatake YAMATO 		"            _scopetop {\n"
40*d876d176SMasatake YAMATO 		"                dup\n"
41*d876d176SMasatake YAMATO 		"                % endline goal scope scope\n"
42*d876d176SMasatake YAMATO 		"                depthForCork 2 index depthForStr ge {\n"
43*d876d176SMasatake YAMATO 		"                    % endline goal scope\n"
44*d876d176SMasatake YAMATO 		"                    2 index end:\n"
45*d876d176SMasatake YAMATO 		"                    _scopepop\n"
46*d876d176SMasatake YAMATO 		"                } {\n"
47*d876d176SMasatake YAMATO 		"                    pop\n"
48*d876d176SMasatake YAMATO 		"                    exit\n"
49*d876d176SMasatake YAMATO 		"                } ifelse\n"
50*d876d176SMasatake YAMATO 		"            } {\n"
51*d876d176SMasatake YAMATO 		"                exit\n"
52*d876d176SMasatake YAMATO 		"            } ifelse\n"
53*d876d176SMasatake YAMATO 		"        } loop\n"
54*d876d176SMasatake YAMATO 		"        pop\n"
55*d876d176SMasatake YAMATO 		"        pop\n"
56*d876d176SMasatake YAMATO 		"    } def\n"
57*d876d176SMasatake YAMATO 		"}}");
58*d876d176SMasatake YAMATO }
59*d876d176SMasatake YAMATO 
RDocParser(void)60*d876d176SMasatake YAMATO extern parserDefinition* RDocParser (void)
61*d876d176SMasatake YAMATO {
62*d876d176SMasatake YAMATO 	static const char *const extensions [] = {
63*d876d176SMasatake YAMATO 		"rdoc",
64*d876d176SMasatake YAMATO 		NULL
65*d876d176SMasatake YAMATO 	};
66*d876d176SMasatake YAMATO 
67*d876d176SMasatake YAMATO 	static const char *const aliases [] = {
68*d876d176SMasatake YAMATO 		NULL
69*d876d176SMasatake YAMATO 	};
70*d876d176SMasatake YAMATO 
71*d876d176SMasatake YAMATO 	static const char *const patterns [] = {
72*d876d176SMasatake YAMATO 		NULL
73*d876d176SMasatake YAMATO 	};
74*d876d176SMasatake YAMATO 
75*d876d176SMasatake YAMATO 	static kindDefinition RDocKindTable [] = {
76*d876d176SMasatake YAMATO 		{
77*d876d176SMasatake YAMATO 		  true, 'h', "L1Header", " Level 1 headers",
78*d876d176SMasatake YAMATO 		},
79*d876d176SMasatake YAMATO 		{
80*d876d176SMasatake YAMATO 		  true, 'i', "L2Header", " Level 2 headers",
81*d876d176SMasatake YAMATO 		},
82*d876d176SMasatake YAMATO 		{
83*d876d176SMasatake YAMATO 		  true, 'j', "L3Header", " Level 3 headers",
84*d876d176SMasatake YAMATO 		},
85*d876d176SMasatake YAMATO 		{
86*d876d176SMasatake YAMATO 		  true, 'k', "L4Header", " Level 4 headers",
87*d876d176SMasatake YAMATO 		},
88*d876d176SMasatake YAMATO 		{
89*d876d176SMasatake YAMATO 		  true, 'l', "L5Header", " Level 5 headers",
90*d876d176SMasatake YAMATO 		},
91*d876d176SMasatake YAMATO 		{
92*d876d176SMasatake YAMATO 		  true, 'm', "L6Header", " Level 6 headers",
93*d876d176SMasatake YAMATO 		},
94*d876d176SMasatake YAMATO 	};
95*d876d176SMasatake YAMATO 	static tagRegexTable RDocTagRegexTable [] = {
96*d876d176SMasatake YAMATO 		{"^(?:#[ \t])*(={1,6})[ \t]*([^=].*)[ \t]*$", "",
97*d876d176SMasatake YAMATO 		"", "{pcre2}"
98*d876d176SMasatake YAMATO 		"{{\n"
99*d876d176SMasatake YAMATO 		"    \\1 length kindTable length le {\n"
100*d876d176SMasatake YAMATO 		"        \\2\n"
101*d876d176SMasatake YAMATO 		"        kindTable \\1 length 1 sub get\n"
102*d876d176SMasatake YAMATO 		"        2 /start _matchloc\n"
103*d876d176SMasatake YAMATO 		"        _tag _commit\n"
104*d876d176SMasatake YAMATO 		"        dup :line 1 sub \\1 scopePopUpTo\n"
105*d876d176SMasatake YAMATO 		"        _scopetop {\n"
106*d876d176SMasatake YAMATO 		"            1 index exch scope: _scopepush\n"
107*d876d176SMasatake YAMATO 		"        } {\n"
108*d876d176SMasatake YAMATO 		"            _scopepush\n"
109*d876d176SMasatake YAMATO 		"        } ifelse\n"
110*d876d176SMasatake YAMATO 		"    } if\n"
111*d876d176SMasatake YAMATO 		"}}", NULL, false},
112*d876d176SMasatake YAMATO 	};
113*d876d176SMasatake YAMATO 
114*d876d176SMasatake YAMATO 
115*d876d176SMasatake YAMATO 	parserDefinition* const def = parserNew ("RDoc");
116*d876d176SMasatake YAMATO 
117*d876d176SMasatake YAMATO 	def->enabled       = true;
118*d876d176SMasatake YAMATO 	def->extensions    = extensions;
119*d876d176SMasatake YAMATO 	def->patterns      = patterns;
120*d876d176SMasatake YAMATO 	def->aliases       = aliases;
121*d876d176SMasatake YAMATO 	def->method        = METHOD_NOT_CRAFTED|METHOD_REGEX;
122*d876d176SMasatake YAMATO 	def->useCork       = CORK_QUEUE;
123*d876d176SMasatake YAMATO 	def->kindTable     = RDocKindTable;
124*d876d176SMasatake YAMATO 	def->kindCount     = ARRAY_SIZE(RDocKindTable);
125*d876d176SMasatake YAMATO 	def->tagRegexTable = RDocTagRegexTable;
126*d876d176SMasatake YAMATO 	def->tagRegexCount = ARRAY_SIZE(RDocTagRegexTable);
127*d876d176SMasatake YAMATO 	def->defaultScopeSeparator = "\"\"";
128*d876d176SMasatake YAMATO 	def->initialize    = initializeRDocParser;
129*d876d176SMasatake YAMATO 
130*d876d176SMasatake YAMATO 	return def;
131*d876d176SMasatake YAMATO }
132