xref: /Universal-ctags/optlib/pod.c (revision 3ea328daf4b023f349ba91f3f6981f402219cbd7)
196197ba2SMasatake YAMATO /*
296197ba2SMasatake YAMATO  * Generated by ./misc/optlib2c from optlib/pod.ctags, Don't edit this manually.
396197ba2SMasatake YAMATO  */
496197ba2SMasatake YAMATO #include "general.h"
596197ba2SMasatake YAMATO #include "parse.h"
696197ba2SMasatake YAMATO #include "routines.h"
70d502ef0SMasatake YAMATO #include "field.h"
80d502ef0SMasatake YAMATO #include "xtag.h"
996197ba2SMasatake YAMATO 
1096197ba2SMasatake YAMATO 
11c3d1917aSMasatake YAMATO typedef enum {
12c3d1917aSMasatake YAMATO 	K_CHAPTER,
13c3d1917aSMasatake YAMATO 	K_SECTION,
14c3d1917aSMasatake YAMATO 	K_SUBSECTION,
15c3d1917aSMasatake YAMATO 	K_SUBSUBSECTION,
16c3d1917aSMasatake YAMATO } PodKind;
17c3d1917aSMasatake YAMATO 
18c3d1917aSMasatake YAMATO 
initializePodParser(const langType language CTAGS_ATTR_UNUSED)198ccb7ee9SJiří Techet static void initializePodParser (const langType language CTAGS_ATTR_UNUSED)
2096197ba2SMasatake YAMATO {
21b6124a60SMasatake YAMATO 	addLanguageOptscriptToHook (language, SCRIPT_HOOK_PRELUDE,
22c3d1917aSMasatake YAMATO 		"{{    /kindTable [\n"
23c3d1917aSMasatake YAMATO 		"        /chapter /section /subsection /subsubsection\n"
24c3d1917aSMasatake YAMATO 		"    ] def\n"
25c3d1917aSMasatake YAMATO 		"\n"
26c3d1917aSMasatake YAMATO 		"    % numstr:str TOLEVEL int\n"
27c3d1917aSMasatake YAMATO 		"    /tolevel {\n"
28c3d1917aSMasatake YAMATO 		"        0 get ?1 sub\n"
29c3d1917aSMasatake YAMATO 		"    } def\n"
30c3d1917aSMasatake YAMATO 		"\n"
31c3d1917aSMasatake YAMATO 		"    /depthForCork {\n"
32c3d1917aSMasatake YAMATO 		"        :kind kindTable exch _aindex pop\n"
33c3d1917aSMasatake YAMATO 		"    } def\n"
34c3d1917aSMasatake YAMATO 		"\n"
35*49e39b21SMasatake YAMATO 		"    % endline:int goal:int scopePopUpTo -\n"
36c3d1917aSMasatake YAMATO 		"    /scopePopUpTo\n"
37c3d1917aSMasatake YAMATO 		"    {\n"
38c3d1917aSMasatake YAMATO 		"        {\n"
39c3d1917aSMasatake YAMATO 		"            _scopetop {\n"
40*49e39b21SMasatake YAMATO 		"                dup\n"
41*49e39b21SMasatake YAMATO 		"                % endline goal scope scope\n"
42*49e39b21SMasatake YAMATO 		"                depthForCork 2 index ge {\n"
43*49e39b21SMasatake YAMATO 		"                    % endline goal scope\n"
44*49e39b21SMasatake YAMATO 		"                    2 index end:\n"
45c3d1917aSMasatake YAMATO 		"                    _scopepop\n"
46c3d1917aSMasatake YAMATO 		"                } {\n"
47*49e39b21SMasatake YAMATO 		"                    pop\n"
48c3d1917aSMasatake YAMATO 		"                    exit\n"
49c3d1917aSMasatake YAMATO 		"                } ifelse\n"
50c3d1917aSMasatake YAMATO 		"            } {\n"
51c3d1917aSMasatake YAMATO 		"                exit\n"
52c3d1917aSMasatake YAMATO 		"            } ifelse\n"
53c3d1917aSMasatake YAMATO 		"        } loop\n"
54c3d1917aSMasatake YAMATO 		"        pop\n"
55*49e39b21SMasatake YAMATO 		"        pop\n"
56c3d1917aSMasatake YAMATO 		"    } def\n"
57a071cb23SMasatake YAMATO 		"}}");
5896197ba2SMasatake YAMATO }
5996197ba2SMasatake YAMATO 
PodParser(void)6096197ba2SMasatake YAMATO extern parserDefinition* PodParser (void)
6196197ba2SMasatake YAMATO {
6296197ba2SMasatake YAMATO 	static const char *const extensions [] = {
6396197ba2SMasatake YAMATO 		"pod",
6496197ba2SMasatake YAMATO 		NULL
6596197ba2SMasatake YAMATO 	};
6696197ba2SMasatake YAMATO 
6796197ba2SMasatake YAMATO 	static const char *const aliases [] = {
6896197ba2SMasatake YAMATO 		NULL
6996197ba2SMasatake YAMATO 	};
7096197ba2SMasatake YAMATO 
7196197ba2SMasatake YAMATO 	static const char *const patterns [] = {
7296197ba2SMasatake YAMATO 		NULL
7396197ba2SMasatake YAMATO 	};
7496197ba2SMasatake YAMATO 
751cda8611SMasatake YAMATO 	static kindDefinition PodKindTable [] = {
762625d890SMasatake YAMATO 		{
772625d890SMasatake YAMATO 		  true, 'c', "chapter", "chapters",
782625d890SMasatake YAMATO 		},
792625d890SMasatake YAMATO 		{
802625d890SMasatake YAMATO 		  true, 's', "section", "sections",
812625d890SMasatake YAMATO 		},
822625d890SMasatake YAMATO 		{
832625d890SMasatake YAMATO 		  true, 'S', "subsection", "subsections",
842625d890SMasatake YAMATO 		},
852625d890SMasatake YAMATO 		{
862625d890SMasatake YAMATO 		  true, 't', "subsubsection", "subsubsections",
872625d890SMasatake YAMATO 		},
881cda8611SMasatake YAMATO 	};
8996197ba2SMasatake YAMATO 	static tagRegexTable PodTagRegexTable [] = {
90a071cb23SMasatake YAMATO 		{"^=head([1-4])[ \t]+(.+)", "",
91a071cb23SMasatake YAMATO 		"", ""
92a071cb23SMasatake YAMATO 		"{{\n"
93a071cb23SMasatake YAMATO 		"    \\2\n"
94c3d1917aSMasatake YAMATO 		"    kindTable \\1 tolevel get\n"
95a071cb23SMasatake YAMATO 		"    2 /start _matchloc\n"
96c3d1917aSMasatake YAMATO 		"    _tag _commit\n"
97*49e39b21SMasatake YAMATO 		"    dup :line 1 sub \\1 tolevel scopePopUpTo\n"
98c3d1917aSMasatake YAMATO 		"    _scopetop {\n"
99c3d1917aSMasatake YAMATO 		"        1 index exch scope: _scopepush\n"
100c3d1917aSMasatake YAMATO 		"    } {\n"
101c3d1917aSMasatake YAMATO 		"        _scopepush\n"
102c3d1917aSMasatake YAMATO 		"    } ifelse\n"
103a071cb23SMasatake YAMATO 		"}}", NULL, false},
10496197ba2SMasatake YAMATO 	};
10596197ba2SMasatake YAMATO 
10696197ba2SMasatake YAMATO 
1076b1ec470SMasatake YAMATO 	parserDefinition* const def = parserNew ("Pod");
10896197ba2SMasatake YAMATO 
109ce990805SThomas Braun 	def->enabled       = true;
11096197ba2SMasatake YAMATO 	def->extensions    = extensions;
11196197ba2SMasatake YAMATO 	def->patterns      = patterns;
11296197ba2SMasatake YAMATO 	def->aliases       = aliases;
11396197ba2SMasatake YAMATO 	def->method        = METHOD_NOT_CRAFTED|METHOD_REGEX;
114a071cb23SMasatake YAMATO 	def->useCork       = CORK_QUEUE;
1151cda8611SMasatake YAMATO 	def->kindTable     = PodKindTable;
1161cda8611SMasatake YAMATO 	def->kindCount     = ARRAY_SIZE(PodKindTable);
11796197ba2SMasatake YAMATO 	def->tagRegexTable = PodTagRegexTable;
11896197ba2SMasatake YAMATO 	def->tagRegexCount = ARRAY_SIZE(PodTagRegexTable);
119c3d1917aSMasatake YAMATO 	def->defaultScopeSeparator = "\"\"";
12096197ba2SMasatake YAMATO 	def->initialize    = initializePodParser;
12196197ba2SMasatake YAMATO 
12296197ba2SMasatake YAMATO 	return def;
12396197ba2SMasatake YAMATO }
124