xref: /Universal-ctags/optlib/inko.c (revision 2c4d04afa3d81ad84d561e4f3a8b915c5096674f)
1 /*
2  * Generated by ./misc/optlib2c from optlib/inko.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 
10 
initializeInkoParser(const langType language)11 static void initializeInkoParser (const langType language)
12 {
13 
14 	addLanguageRegexTable (language, "toplevel");
15 	addLanguageRegexTable (language, "class");
16 	addLanguageRegexTable (language, "trait");
17 	addLanguageRegexTable (language, "method");
18 	addLanguageRegexTable (language, "comment");
19 	addLanguageRegexTable (language, "impl");
20 	addLanguageRegexTable (language, "let");
21 	addLanguageRegexTable (language, "sstring");
22 	addLanguageRegexTable (language, "dstring");
23 	addLanguageRegexTable (language, "tstring");
24 
25 	addLanguageTagMultiTableRegex (language, "toplevel",
26 	                               "^'",
27 	                               "", "", "{tenter=sstring}", NULL);
28 	addLanguageTagMultiTableRegex (language, "toplevel",
29 	                               "^\"",
30 	                               "", "", "{tenter=dstring}", NULL);
31 	addLanguageTagMultiTableRegex (language, "toplevel",
32 	                               "^`",
33 	                               "", "", "{tenter=tstring}", NULL);
34 	addLanguageTagMultiTableRegex (language, "toplevel",
35 	                               "^#",
36 	                               "", "", "{tenter=comment}", NULL);
37 	addLanguageTagMultiTableRegex (language, "toplevel",
38 	                               "^[[:blank:]]*class[[:blank:]]+",
39 	                               "", "", "{tenter=class}", NULL);
40 	addLanguageTagMultiTableRegex (language, "toplevel",
41 	                               "^[[:blank:]]*trait[[:blank:]]+",
42 	                               "", "", "{tenter=trait}", NULL);
43 	addLanguageTagMultiTableRegex (language, "toplevel",
44 	                               "^[[:blank:]]*def[[:blank:]]+",
45 	                               "", "", "{tenter=method}", NULL);
46 	addLanguageTagMultiTableRegex (language, "toplevel",
47 	                               "^[[:blank:]]*impl[[:blank:]]+",
48 	                               "", "", "{tenter=impl}", NULL);
49 	addLanguageTagMultiTableRegex (language, "toplevel",
50 	                               "^[[:blank:]]*let[[:blank:]]+",
51 	                               "", "", "{tenter=let}", NULL);
52 	addLanguageTagMultiTableRegex (language, "toplevel",
53 	                               "^\\{",
54 	                               "", "", "{placeholder}{scope=push}", NULL);
55 	addLanguageTagMultiTableRegex (language, "toplevel",
56 	                               "^\\}",
57 	                               "", "", "{scope=pop}", NULL);
58 	addLanguageTagMultiTableRegex (language, "toplevel",
59 	                               "^(@[a-zA-Z0-9_]+):",
60 	                               "\\1", "a", "{scope=ref}", NULL);
61 	addLanguageTagMultiTableRegex (language, "toplevel",
62 	                               "^.",
63 	                               "", "", "", NULL);
64 	addLanguageTagMultiTableRegex (language, "class",
65 	                               "^([A-Z][a-zA-Z0-9_?]*)[^{]*",
66 	                               "\\1", "o", "{scope=push}", NULL);
67 	addLanguageTagMultiTableRegex (language, "class",
68 	                               "^\\{",
69 	                               "", "", "{tleave}", NULL);
70 	addLanguageTagMultiTableRegex (language, "class",
71 	                               "^.",
72 	                               "", "", "", NULL);
73 	addLanguageTagMultiTableRegex (language, "trait",
74 	                               "^([A-Z][a-zA-Z0-9_?]*)[^{]*",
75 	                               "\\1", "t", "{scope=push}", NULL);
76 	addLanguageTagMultiTableRegex (language, "trait",
77 	                               "^\\{",
78 	                               "", "", "{tleave}", NULL);
79 	addLanguageTagMultiTableRegex (language, "trait",
80 	                               "^.",
81 	                               "", "", "", NULL);
82 	addLanguageTagMultiTableRegex (language, "method",
83 	                               "^([a-zA-Z0-9_?]+|\\[\\]=?|\\^|&|\\||\\*|\\+|\\-|/|>>|<<|%)",
84 	                               "\\1", "m", "{scope=push}", NULL);
85 	addLanguageTagMultiTableRegex (language, "method",
86 	                               "^\\{|\n",
87 	                               "", "", "{scope=pop}{tleave}", NULL);
88 	addLanguageTagMultiTableRegex (language, "method",
89 	                               "^.",
90 	                               "", "", "", NULL);
91 	addLanguageTagMultiTableRegex (language, "comment",
92 	                               "^\n",
93 	                               "", "", "{tleave}", NULL);
94 	addLanguageTagMultiTableRegex (language, "comment",
95 	                               "^.",
96 	                               "", "", "", NULL);
97 	addLanguageTagMultiTableRegex (language, "impl",
98 	                               "^([A-Z][a-zA-Z0-9_?]*)[[:blank:]]+for[[:blank:]]+([A-Z][a-zA-Z0-9_?]*)[^{]*",
99 	                               "\\2", "r", "{scope=push}{_field=implements:\\1}", NULL);
100 	addLanguageTagMultiTableRegex (language, "impl",
101 	                               "^([A-Z][a-zA-Z0-9_?]*)[^{]*",
102 	                               "\\1", "r", "{scope=push}", NULL);
103 	addLanguageTagMultiTableRegex (language, "impl",
104 	                               "^\\{",
105 	                               "", "", "{tleave}", NULL);
106 	addLanguageTagMultiTableRegex (language, "impl",
107 	                               "^.",
108 	                               "", "", "", NULL);
109 	addLanguageTagMultiTableRegex (language, "let",
110 	                               "^([A-Z][a-zA-Z0-9_]+)",
111 	                               "\\1", "c", "{scope=ref}{tleave}", NULL);
112 	addLanguageTagMultiTableRegex (language, "sstring",
113 	                               "^'",
114 	                               "", "", "{tleave}", NULL);
115 	addLanguageTagMultiTableRegex (language, "sstring",
116 	                               "^\\\\'",
117 	                               "", "", "", NULL);
118 	addLanguageTagMultiTableRegex (language, "sstring",
119 	                               "^.",
120 	                               "", "", "", NULL);
121 	addLanguageTagMultiTableRegex (language, "dstring",
122 	                               "^\"",
123 	                               "", "", "{tleave}", NULL);
124 	addLanguageTagMultiTableRegex (language, "dstring",
125 	                               "^\\\\\"",
126 	                               "", "", "", NULL);
127 	addLanguageTagMultiTableRegex (language, "dstring",
128 	                               "^.",
129 	                               "", "", "", NULL);
130 	addLanguageTagMultiTableRegex (language, "tstring",
131 	                               "^`",
132 	                               "", "", "{tleave}", NULL);
133 	addLanguageTagMultiTableRegex (language, "tstring",
134 	                               "^\\\\`",
135 	                               "", "", "", NULL);
136 	addLanguageTagMultiTableRegex (language, "tstring",
137 	                               "^.",
138 	                               "", "", "", NULL);
139 }
140 
InkoParser(void)141 extern parserDefinition* InkoParser (void)
142 {
143 	static const char *const extensions [] = {
144 		"inko",
145 		NULL
146 	};
147 
148 	static const char *const aliases [] = {
149 		NULL
150 	};
151 
152 	static const char *const patterns [] = {
153 		NULL
154 	};
155 
156 	static kindDefinition InkoKindTable [] = {
157 		{
158 		  true, 'o', "class", "Class definition",
159 		},
160 		{
161 		  true, 'm', "method", "Method definition",
162 		},
163 		{
164 		  true, 't', "trait", "Trait definition",
165 		},
166 		{
167 		  true, 'a', "attribute", "Attribute definition",
168 		},
169 		{
170 		  true, 'c', "constant", "Constant definition",
171 		},
172 		{
173 		  true, 'r', "reopen", "Reopen class",
174 		},
175 	};
176 	static fieldDefinition InkoFieldTable [] = {
177 		{
178 		  .enabled     = true,
179 		  .name        = "implements",
180 		  .description = "Trait being implemented",
181 		},
182 	};
183 
184 	parserDefinition* const def = parserNew ("Inko");
185 
186 	def->enabled       = true;
187 	def->extensions    = extensions;
188 	def->patterns      = patterns;
189 	def->aliases       = aliases;
190 	def->method        = METHOD_NOT_CRAFTED|METHOD_REGEX;
191 	def->useCork       = CORK_QUEUE;
192 	def->kindTable     = InkoKindTable;
193 	def->kindCount     = ARRAY_SIZE(InkoKindTable);
194 	def->fieldTable    = InkoFieldTable;
195 	def->fieldCount    = ARRAY_SIZE(InkoFieldTable);
196 	def->initialize    = initializeInkoParser;
197 
198 	return def;
199 }
200