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