xref: /Universal-ctags/optlib/inko.c (revision 2c4d04afa3d81ad84d561e4f3a8b915c5096674f)
1ccdaccdbSYorick Peterse /*
2ccdaccdbSYorick Peterse  * Generated by ./misc/optlib2c from optlib/inko.ctags, Don't edit this manually.
3ccdaccdbSYorick Peterse  */
4ccdaccdbSYorick Peterse #include "general.h"
5ccdaccdbSYorick Peterse #include "parse.h"
6ccdaccdbSYorick Peterse #include "routines.h"
7ccdaccdbSYorick Peterse #include "field.h"
8ccdaccdbSYorick Peterse #include "xtag.h"
9ccdaccdbSYorick Peterse 
10ccdaccdbSYorick Peterse 
initializeInkoParser(const langType language)11ccdaccdbSYorick Peterse static void initializeInkoParser (const langType language)
12ccdaccdbSYorick Peterse {
13ccdaccdbSYorick Peterse 
14ccdaccdbSYorick Peterse 	addLanguageRegexTable (language, "toplevel");
15*2c4d04afSYorick Peterse 	addLanguageRegexTable (language, "class");
16ccdaccdbSYorick Peterse 	addLanguageRegexTable (language, "trait");
17ccdaccdbSYorick Peterse 	addLanguageRegexTable (language, "method");
18ccdaccdbSYorick Peterse 	addLanguageRegexTable (language, "comment");
19ccdaccdbSYorick Peterse 	addLanguageRegexTable (language, "impl");
20ccdaccdbSYorick Peterse 	addLanguageRegexTable (language, "let");
2115f24de7SYorick Peterse 	addLanguageRegexTable (language, "sstring");
2215f24de7SYorick Peterse 	addLanguageRegexTable (language, "dstring");
2315f24de7SYorick Peterse 	addLanguageRegexTable (language, "tstring");
24ccdaccdbSYorick Peterse 
25ccdaccdbSYorick Peterse 	addLanguageTagMultiTableRegex (language, "toplevel",
2615f24de7SYorick Peterse 	                               "^'",
2715f24de7SYorick Peterse 	                               "", "", "{tenter=sstring}", NULL);
2815f24de7SYorick Peterse 	addLanguageTagMultiTableRegex (language, "toplevel",
2915f24de7SYorick Peterse 	                               "^\"",
3015f24de7SYorick Peterse 	                               "", "", "{tenter=dstring}", NULL);
3115f24de7SYorick Peterse 	addLanguageTagMultiTableRegex (language, "toplevel",
3215f24de7SYorick Peterse 	                               "^`",
3315f24de7SYorick Peterse 	                               "", "", "{tenter=tstring}", NULL);
3415f24de7SYorick Peterse 	addLanguageTagMultiTableRegex (language, "toplevel",
35ccdaccdbSYorick Peterse 	                               "^#",
36ccdaccdbSYorick Peterse 	                               "", "", "{tenter=comment}", NULL);
37ccdaccdbSYorick Peterse 	addLanguageTagMultiTableRegex (language, "toplevel",
38*2c4d04afSYorick Peterse 	                               "^[[:blank:]]*class[[:blank:]]+",
39*2c4d04afSYorick Peterse 	                               "", "", "{tenter=class}", NULL);
40ccdaccdbSYorick Peterse 	addLanguageTagMultiTableRegex (language, "toplevel",
41ccdaccdbSYorick Peterse 	                               "^[[:blank:]]*trait[[:blank:]]+",
42ccdaccdbSYorick Peterse 	                               "", "", "{tenter=trait}", NULL);
43ccdaccdbSYorick Peterse 	addLanguageTagMultiTableRegex (language, "toplevel",
44ccdaccdbSYorick Peterse 	                               "^[[:blank:]]*def[[:blank:]]+",
45ccdaccdbSYorick Peterse 	                               "", "", "{tenter=method}", NULL);
46ccdaccdbSYorick Peterse 	addLanguageTagMultiTableRegex (language, "toplevel",
47ccdaccdbSYorick Peterse 	                               "^[[:blank:]]*impl[[:blank:]]+",
48ccdaccdbSYorick Peterse 	                               "", "", "{tenter=impl}", NULL);
49ccdaccdbSYorick Peterse 	addLanguageTagMultiTableRegex (language, "toplevel",
50ccdaccdbSYorick Peterse 	                               "^[[:blank:]]*let[[:blank:]]+",
51ccdaccdbSYorick Peterse 	                               "", "", "{tenter=let}", NULL);
52ccdaccdbSYorick Peterse 	addLanguageTagMultiTableRegex (language, "toplevel",
53ccdaccdbSYorick Peterse 	                               "^\\{",
54ccdaccdbSYorick Peterse 	                               "", "", "{placeholder}{scope=push}", NULL);
55ccdaccdbSYorick Peterse 	addLanguageTagMultiTableRegex (language, "toplevel",
56ccdaccdbSYorick Peterse 	                               "^\\}",
57ccdaccdbSYorick Peterse 	                               "", "", "{scope=pop}", NULL);
58ccdaccdbSYorick Peterse 	addLanguageTagMultiTableRegex (language, "toplevel",
59797ac4d6SYorick Peterse 	                               "^(@[a-zA-Z0-9_]+):",
60797ac4d6SYorick Peterse 	                               "\\1", "a", "{scope=ref}", NULL);
61797ac4d6SYorick Peterse 	addLanguageTagMultiTableRegex (language, "toplevel",
62ccdaccdbSYorick Peterse 	                               "^.",
63ccdaccdbSYorick Peterse 	                               "", "", "", NULL);
64*2c4d04afSYorick Peterse 	addLanguageTagMultiTableRegex (language, "class",
65ccdaccdbSYorick Peterse 	                               "^([A-Z][a-zA-Z0-9_?]*)[^{]*",
66ccdaccdbSYorick Peterse 	                               "\\1", "o", "{scope=push}", NULL);
67*2c4d04afSYorick Peterse 	addLanguageTagMultiTableRegex (language, "class",
68ccdaccdbSYorick Peterse 	                               "^\\{",
69ccdaccdbSYorick Peterse 	                               "", "", "{tleave}", NULL);
70*2c4d04afSYorick Peterse 	addLanguageTagMultiTableRegex (language, "class",
71ccdaccdbSYorick Peterse 	                               "^.",
72ccdaccdbSYorick Peterse 	                               "", "", "", NULL);
73ccdaccdbSYorick Peterse 	addLanguageTagMultiTableRegex (language, "trait",
74ccdaccdbSYorick Peterse 	                               "^([A-Z][a-zA-Z0-9_?]*)[^{]*",
75ccdaccdbSYorick Peterse 	                               "\\1", "t", "{scope=push}", NULL);
76ccdaccdbSYorick Peterse 	addLanguageTagMultiTableRegex (language, "trait",
77ccdaccdbSYorick Peterse 	                               "^\\{",
78ccdaccdbSYorick Peterse 	                               "", "", "{tleave}", NULL);
79ccdaccdbSYorick Peterse 	addLanguageTagMultiTableRegex (language, "trait",
80ccdaccdbSYorick Peterse 	                               "^.",
81ccdaccdbSYorick Peterse 	                               "", "", "", NULL);
82ccdaccdbSYorick Peterse 	addLanguageTagMultiTableRegex (language, "method",
83797ac4d6SYorick Peterse 	                               "^([a-zA-Z0-9_?]+|\\[\\]=?|\\^|&|\\||\\*|\\+|\\-|/|>>|<<|%)",
84ccdaccdbSYorick Peterse 	                               "\\1", "m", "{scope=push}", NULL);
85ccdaccdbSYorick Peterse 	addLanguageTagMultiTableRegex (language, "method",
86797ac4d6SYorick Peterse 	                               "^\\{|\n",
87797ac4d6SYorick Peterse 	                               "", "", "{scope=pop}{tleave}", NULL);
88ccdaccdbSYorick Peterse 	addLanguageTagMultiTableRegex (language, "method",
89ccdaccdbSYorick Peterse 	                               "^.",
90ccdaccdbSYorick Peterse 	                               "", "", "", NULL);
91ccdaccdbSYorick Peterse 	addLanguageTagMultiTableRegex (language, "comment",
92ccdaccdbSYorick Peterse 	                               "^\n",
93ccdaccdbSYorick Peterse 	                               "", "", "{tleave}", NULL);
94ccdaccdbSYorick Peterse 	addLanguageTagMultiTableRegex (language, "comment",
95ccdaccdbSYorick Peterse 	                               "^.",
96ccdaccdbSYorick Peterse 	                               "", "", "", NULL);
97ccdaccdbSYorick Peterse 	addLanguageTagMultiTableRegex (language, "impl",
98ccdaccdbSYorick Peterse 	                               "^([A-Z][a-zA-Z0-9_?]*)[[:blank:]]+for[[:blank:]]+([A-Z][a-zA-Z0-9_?]*)[^{]*",
99ccdaccdbSYorick Peterse 	                               "\\2", "r", "{scope=push}{_field=implements:\\1}", NULL);
100ccdaccdbSYorick Peterse 	addLanguageTagMultiTableRegex (language, "impl",
101ccdaccdbSYorick Peterse 	                               "^([A-Z][a-zA-Z0-9_?]*)[^{]*",
102ccdaccdbSYorick Peterse 	                               "\\1", "r", "{scope=push}", NULL);
103ccdaccdbSYorick Peterse 	addLanguageTagMultiTableRegex (language, "impl",
104ccdaccdbSYorick Peterse 	                               "^\\{",
105ccdaccdbSYorick Peterse 	                               "", "", "{tleave}", NULL);
106ccdaccdbSYorick Peterse 	addLanguageTagMultiTableRegex (language, "impl",
107ccdaccdbSYorick Peterse 	                               "^.",
108ccdaccdbSYorick Peterse 	                               "", "", "", NULL);
109ccdaccdbSYorick Peterse 	addLanguageTagMultiTableRegex (language, "let",
110ccdaccdbSYorick Peterse 	                               "^([A-Z][a-zA-Z0-9_]+)",
11115132639SYorick Peterse 	                               "\\1", "c", "{scope=ref}{tleave}", NULL);
11215f24de7SYorick Peterse 	addLanguageTagMultiTableRegex (language, "sstring",
11315f24de7SYorick Peterse 	                               "^'",
11415f24de7SYorick Peterse 	                               "", "", "{tleave}", NULL);
11515f24de7SYorick Peterse 	addLanguageTagMultiTableRegex (language, "sstring",
11615f24de7SYorick Peterse 	                               "^\\\\'",
11715f24de7SYorick Peterse 	                               "", "", "", NULL);
11815f24de7SYorick Peterse 	addLanguageTagMultiTableRegex (language, "sstring",
11915f24de7SYorick Peterse 	                               "^.",
12015f24de7SYorick Peterse 	                               "", "", "", NULL);
12115f24de7SYorick Peterse 	addLanguageTagMultiTableRegex (language, "dstring",
12215f24de7SYorick Peterse 	                               "^\"",
12315f24de7SYorick Peterse 	                               "", "", "{tleave}", NULL);
12415f24de7SYorick Peterse 	addLanguageTagMultiTableRegex (language, "dstring",
12515f24de7SYorick Peterse 	                               "^\\\\\"",
12615f24de7SYorick Peterse 	                               "", "", "", NULL);
12715f24de7SYorick Peterse 	addLanguageTagMultiTableRegex (language, "dstring",
12815f24de7SYorick Peterse 	                               "^.",
12915f24de7SYorick Peterse 	                               "", "", "", NULL);
13015f24de7SYorick Peterse 	addLanguageTagMultiTableRegex (language, "tstring",
13115f24de7SYorick Peterse 	                               "^`",
13215f24de7SYorick Peterse 	                               "", "", "{tleave}", NULL);
13315f24de7SYorick Peterse 	addLanguageTagMultiTableRegex (language, "tstring",
13415f24de7SYorick Peterse 	                               "^\\\\`",
13515f24de7SYorick Peterse 	                               "", "", "", NULL);
13615f24de7SYorick Peterse 	addLanguageTagMultiTableRegex (language, "tstring",
13715f24de7SYorick Peterse 	                               "^.",
13815f24de7SYorick Peterse 	                               "", "", "", NULL);
139ccdaccdbSYorick Peterse }
140ccdaccdbSYorick Peterse 
InkoParser(void)141ccdaccdbSYorick Peterse extern parserDefinition* InkoParser (void)
142ccdaccdbSYorick Peterse {
143ccdaccdbSYorick Peterse 	static const char *const extensions [] = {
144ccdaccdbSYorick Peterse 		"inko",
145ccdaccdbSYorick Peterse 		NULL
146ccdaccdbSYorick Peterse 	};
147ccdaccdbSYorick Peterse 
148ccdaccdbSYorick Peterse 	static const char *const aliases [] = {
149ccdaccdbSYorick Peterse 		NULL
150ccdaccdbSYorick Peterse 	};
151ccdaccdbSYorick Peterse 
152ccdaccdbSYorick Peterse 	static const char *const patterns [] = {
153ccdaccdbSYorick Peterse 		NULL
154ccdaccdbSYorick Peterse 	};
155ccdaccdbSYorick Peterse 
156ccdaccdbSYorick Peterse 	static kindDefinition InkoKindTable [] = {
157ccdaccdbSYorick Peterse 		{
158*2c4d04afSYorick Peterse 		  true, 'o', "class", "Class definition",
159ccdaccdbSYorick Peterse 		},
160ccdaccdbSYorick Peterse 		{
161ccdaccdbSYorick Peterse 		  true, 'm', "method", "Method definition",
162ccdaccdbSYorick Peterse 		},
163ccdaccdbSYorick Peterse 		{
164ccdaccdbSYorick Peterse 		  true, 't', "trait", "Trait definition",
165ccdaccdbSYorick Peterse 		},
166ccdaccdbSYorick Peterse 		{
167ccdaccdbSYorick Peterse 		  true, 'a', "attribute", "Attribute definition",
168ccdaccdbSYorick Peterse 		},
169ccdaccdbSYorick Peterse 		{
170ccdaccdbSYorick Peterse 		  true, 'c', "constant", "Constant definition",
171ccdaccdbSYorick Peterse 		},
172ccdaccdbSYorick Peterse 		{
173*2c4d04afSYorick Peterse 		  true, 'r', "reopen", "Reopen class",
174ccdaccdbSYorick Peterse 		},
175ccdaccdbSYorick Peterse 	};
176ccdaccdbSYorick Peterse 	static fieldDefinition InkoFieldTable [] = {
177ccdaccdbSYorick Peterse 		{
178ccdaccdbSYorick Peterse 		  .enabled     = true,
179ccdaccdbSYorick Peterse 		  .name        = "implements",
180ccdaccdbSYorick Peterse 		  .description = "Trait being implemented",
181ccdaccdbSYorick Peterse 		},
182ccdaccdbSYorick Peterse 	};
183ccdaccdbSYorick Peterse 
184ccdaccdbSYorick Peterse 	parserDefinition* const def = parserNew ("Inko");
185ccdaccdbSYorick Peterse 
186ccdaccdbSYorick Peterse 	def->enabled       = true;
187ccdaccdbSYorick Peterse 	def->extensions    = extensions;
188ccdaccdbSYorick Peterse 	def->patterns      = patterns;
189ccdaccdbSYorick Peterse 	def->aliases       = aliases;
190ccdaccdbSYorick Peterse 	def->method        = METHOD_NOT_CRAFTED|METHOD_REGEX;
1916b1a862eSMasatake YAMATO 	def->useCork       = CORK_QUEUE;
192ccdaccdbSYorick Peterse 	def->kindTable     = InkoKindTable;
193ccdaccdbSYorick Peterse 	def->kindCount     = ARRAY_SIZE(InkoKindTable);
194ccdaccdbSYorick Peterse 	def->fieldTable    = InkoFieldTable;
195ccdaccdbSYorick Peterse 	def->fieldCount    = ARRAY_SIZE(InkoFieldTable);
196ccdaccdbSYorick Peterse 	def->initialize    = initializeInkoParser;
197ccdaccdbSYorick Peterse 
198ccdaccdbSYorick Peterse 	return def;
199ccdaccdbSYorick Peterse }
200